Плагин для профиля Joomla 2.5/3.0 с возможностью загрузки аватара на основе HKM_profile

Плагин для профиля Joomla 2.5/3.0 с возможностью загрузки аватара на основе HKM_profile

Задача: для сайта Народная Власть реализовать возможность загрузки аватара (фото) в профиле Joomla 2.5/3.0. А также, добавить вывод аватаров в комментариях jcomments.

Решение: поскольку, на данный момент, на сайте не использовались социальные компоненты (такие как K2, Community Builder, Kunena и т.д.), где уже предусмотрена загрузка аватара, то за основу был взят плагин HKM_profile, который и был модифицирован для решения поставленной задачи.

 

Устанавливаем плагин HKM_profile и вносим следующие изменения:

В скрипте /plugins/user/hkm_profile/fields/userinfo.php добавляем новое поле "file" для параметра "fieldType".

	
$params[] = array(
  'name' => 'fieldType',
  'label' => JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELDTYPE'),
  'type' => 'list',
  'options'=>array(
    'text'=>JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELD_OPTION_TEXT'),            
    'textarea'=>JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELD_OPTION_TEXTAREA'), 
    'select'=>JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELD_OPTION_SELECT'), 
    'multiselect'=>JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELD_OPTION_MULTISELECT'), 
    'radio'=>JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELD_OPTION_RADIO'), 
    'date'=> JText::_('PLG_USER_HKM_PROFILE_FIELDGROUP_FIELD_OPTION_DATE'),
    'file'=> 'Поле файл')
);

$params[] = array(
  'name' => 'fieldmyparams',
  'label' => 'Мои параметры (fieldtype=avatar&)',
  'type' => 'textarea'
);


После чего в админке для плагина "Расширенный профиль" можно будет создать тип "Файл" с параметрами в поле "Мои параметры": fieldtype=avatar&width=128&height=128, где fieldtype - тип поля; width\height - ширина и высота в px (по умолчанию 100x100); path – папка для аватаров (по умолчанию /images/avatar/).

Далее открываем скрипт /plugins/user/hkm_profile/hkm_profile.php, поскольку изменений много, то для наглядности разместим почти весь код плагина, и уже в коде прокомментируем вставки.

function onContentPrepareData($context, $data)
{
	// Check we are manipulating a valid form.
	if (!in_array($context, array('com_users.profile','com_users.registration','com_users.user','com_admin.profile'))){
		return true;
	}

	$userId = isset($data->id) ? $data->id : 0;

	// Load the profile data from the database.
	$db = &JFactory::getDbo();		
					
	$db->setQuery(
		'SELECT profile_key, profile_value FROM #__user_profiles' .
		' WHERE user_id = '.(int) $userId .
		' AND profile_key LIKE \'hkm_profile.%\'' .
		' ORDER BY ordering'
	);
	$results = $db->loadRowList();

	// Check for a database error.
	if ($db->getErrorNum()) {
		$this->_subject->setError($db->getErrorMsg());
		return false;
	}

//2v3.su, берем параметры поля Аватар
//=====
	$userinfo=$this->params->get('userinfo'); 
//======  

	// Merge the profile data.
	$data->hkm_profile = array();
	foreach ($results as $v) {
		$k = str_replace('hkm_profile.', '', $v[0]);
		$v1arr=(JRequest::getVar('layout')=='edit')? explode("\n", $v[1]) : str_replace("\n", ", " ,$v[1]);


		$data->hkm_profile[$k] =((!empty($v1arr)&& isset($v1arr[1]))? $v1arr : $v[1]);

//2v3.su, устанавливаем обработчик на отображение поля Аватар в профиле. В данном случае это функция my_avatar.
//======
		if(!isset($userinfo->fieldmyparams)) continue;
		$fieldNum=str_ireplace('uniqueID', '', $k);				  
		$fieldmyparams=(is_array($userinfo->fieldmyparams))? $userinfo->fieldmyparams[$fieldNum] : $userinfo->fieldmyparams->$fieldNum;
		if(trim($fieldmyparams)){
		  parse_str($fieldmyparams, $params);			  				
		  if(!is_array($params) || !count($params) || !isset($params['fieldtype']) || !method_exists($this, 'my_'.$params['fieldtype'])) continue;              
		  if(!JHtml::isRegistered('users.'.$k))
			JHtml::register('users.'.$k, array(__CLASS__, 'my_'.$params['fieldtype']));				
		}
//=====			
		
	} 			
		
	return true;
}

//2v3.su
//======
function my_avatar($a){
//Обрабатываем загружаемое фото 	
	if(is_array($a)){
	  if(isset($_FILES['jform']['tmp_name']['hkm_profile'])){				 		
//подгружаем внешний скрипт images.php, для изменения размеров фото	
		if(!function_exists('sys__image_resize')){
		  $include=dirname(__FILE__).'/func/images.php';				  
		  if(!@is_file($include)) return false;		  
		  include_once($include);
		}
		$field_id=(isset($a['field_id'])) ? $a['field_id'] : '';			
		$path=(isset($a['path']) && $a['path']) ? $a['path'] : '/images/avatar/';
		$w=(isset($a['width']) && $a['width']) ? intval($a['width']) : 100; 
		$h=(isset($a['height']) && $a['height']) ? intval($a['height']): 100; 			
//в качестве имени файла (аватара) испоьзуем ID пользователя
		$dest=$path.$a['user_id'].'.jpg'; 
		$out=array();
		if(is_numeric($field_id)) $field_id='uniqueID'.$field_id;
		if($field_id){ 
		  if(!isset($_FILES['jform']['tmp_name']['hkm_profile'][$field_id])) return false;
		  if(sys__image_resize($_FILES['jform']['tmp_name']['hkm_profile'][$field_id], $_SERVER['DOCUMENT_ROOT'].$dest, $w, $h, true)) $out[$field_id]=$dest;			  			  	
			  
		}else{			  
		  foreach($_FILES['jform']['tmp_name']['hkm_profile'] as $k => $src){
		    if(sys__image_resize($src, $_SERVER['DOCUMENT_ROOT'].$dest, $w, $h, true)) $out[$k]=$dest;
		  }
		}
		return $out;
	  }		  
	  
	  return false;

//Отображаем фото в профиле 		
	}else{			
	  return '

<img class="hkm_avatar" src="'.$a.'?rnd='.rand(99999, 999999).'" border="0" />
';
	}
}
//======	
 
/**
 * @param    JForm    The form to be altered.
 * @param    array    The associated data for the form.
 * @return    boolean
 * @since    1.6
 */
function onContentPrepareForm($form, $data)
{

	// Load user_profile plugin language
	$lang = JFactory::getLanguage();
	$lang->load('plg_user_hkm_profile', JPATH_ADMINISTRATOR);

	if (!($form instanceof JForm)) {
		$this->_subject->setError('JERROR_NOT_A_FORM');
		return false;
	}
	// Check we are manipulating a valid form.
	if (!in_array($form->getName(), array('com_users.profile', 'com_users.registration','com_users.user','com_admin.profile'))) {
		return true;
	}
	if ($form->getName()=='com_users.profile')
	{
		// Add the profile fields to the form.
		//JForm::addFormPath(dirname(__FILE__).'/profiles');
		//$form->loadFile('profile', false);

		$formXMLGen = $this->getUserdataParams();
		$form->load($formXMLGen);

//2v3.su
//======
		$db=&JFactory::getDbo();		
//======

		$userinfo = $this->params->get('userinfo');

		foreach($userinfo->fieldName as $fieldNum=>$fname){

			$fieldReq=is_array($userinfo->fieldRequiredProfile)? 
			$userinfo->fieldRequiredProfile[$fieldNum]: 
			$userinfo->fieldRequiredProfile->$fieldNum;

			if ($fieldReq > 0) {

/*
2v3.su, если поле Аватар является обязательным, а фото уже было загружено, то делаем его необязательным, чтобы не пришлось каждый раз загружать аватар, при редактировании профиля.
*/
//=====					
				if(isset($userinfo->fieldType[$fieldNum]) && $userinfo->fieldType[$fieldNum]=='file' && $fieldReq==2){					  
				  $db->setQuery('SELECT * FROM #__user_profiles WHERE user_id="'.intval($data->id).'" AND profile_key="hkm_profile.'.$fname.'" LIMIT 1'); 
				  $r=$db->loadObjectList('user_id');
				  if(count($r)) $fieldReq=1; 	
				}
//======
				 
				$form->setFieldAttribute($fname, 'required', $fieldReq == 2, 'hkm_profile');
			} else {
				$form->removeField($fname, 'hkm_profile');
			}

		}            
	}

	//In this example, we treat the frontend registration and the back end user create or edit as the same. 
	elseif ($form->getName()=='com_users.registration' || $form->getName()=='com_users.user' )
	{       

		// Add the registration fields to the form.
		//JForm::addFormPath(dirname(__FILE__).'/profiles');
		//$form->loadFile('profile', false);

		$formXMLGen = $this->getUserdataParams();
		$form->load($formXMLGen);


		$userinfo = $this->params->get('userinfo');

		foreach($userinfo->fieldName as $fieldNum=>$fname){

			$fieldReq=is_array($userinfo->fieldRequiredRegistration)? 
			$userinfo->fieldRequiredRegistration[$fieldNum]: 
			$userinfo->fieldRequiredRegistration->$fieldNum;

			if ($fieldReq > 0) {
				$form->setFieldAttribute($fname, 'required', $fieldReq == 2, 'hkm_profile');
			} else {
				$form->removeField($fname, 'hkm_profile');
			}

		}
	}            
}

function getUserdataParams(){
//тут идет код плагина
			switch ($type) {
				case 'multiselect':     
					$fieldParams.=' multiple="true" ';               
				case 'select':
					$type='list';
					break;
				case 'date':
					$type='calendar';
					 break;
//2v3.su, в панели администрирования, вместо поля "файл", отображаем текстовую область 
//=====
				case 'file':
					$type=(stripos(JPATH_BASE, 'administrator')!==false) ? 'input' : 'file';

					 break;
//=====						 
			  
				default:
					# code...
					break;
			}

//тут идет код плагина

	return $html;

}

function onUserAfterSave($data, $isNew, $result, $error)
{		
	$userId    = JArrayHelper::getValue($data, 'id', 0, 'int');

//2v3.su, тут вызываем функцию обработки аватара
//=====
	$ex=array();
	$userinfo=$this->params->get('userinfo');       
	if($userinfo && isset($userinfo->fieldmyparams)){
	  $fieldmyparams=$userinfo->fieldmyparams;		 
	  if(is_array($fieldmyparams) || is_object($fieldmyparams)){
		foreach($fieldmyparams as $k => $params){   			    			
		  if(!trim($params)) continue;
		  parse_str($params, $params);			  
		  if(!is_array($params) || !count($params) || !isset($params['fieldtype']) || !method_exists($this, 'my_'.$params['fieldtype'])) continue;              
		  $method='my_'.$params['fieldtype'];
		  $params['field_id']=$k;
		  $params['user_id']=$userId;
		  if($r=$this->$method($params)){	
			if(is_array($r)){			  			    
			  foreach($r as $k => $v) $data['hkm_profile'][$k]=$v;
			}else $data['hkm_profile'][$k]=$r;
			
		  }else{	 	
//исключаем удаление аватара, на случай редактирования других полей профиля 		  
			$ex[]='profile_key != "hkm_profile.uniqueID'.$k.'"';
		  }
		}
	  }
	}
//======        

	if ($userId && $result && isset($data['hkm_profile']) && (count($data['hkm_profile'])))
	{
		try
		{
			$db = &JFactory::getDbo();
//2v3.su
//======
			$sql='DELETE FROM #__user_profiles WHERE user_id = '.$userId.' AND profile_key LIKE \'hkm_profile.%\'';				
			if(count($ex)) $sql.=' AND ('.implode(' AND ', $ex).')';
			$db->setQuery($sql);
//======				
			if (!$db->query()) {
				throw new Exception($db->getErrorMsg());
			}

			$tuples = array();
			$order    = 1;

			foreach ($data['hkm_profile'] as $k => $v) {
				$v = (is_array($v))? implode("\n", $v) : $v;
				$tuples[] = '('.$userId.', '.$db->quote('hkm_profile.'.$k).', '.$db->quote($v).', '.$order++.')';
			}

//2v3.su, заменить INSERT на REPLACE
//======
			$db->setQuery('REPLACE INTO #__user_profiles VALUES '.implode(', ', $tuples));
//======
			if (!$db->query()) {
				throw new Exception($db->getErrorMsg());
			}
		}
		catch (JException $e) {
			$this->_subject->setError($e->getMessage());
			return false;
		}
	}

	return true;
}


Модифицируем плагин jcomments для отображения аватара. 

1) В файл /plugins/jcomments/avatar/avatar.xml после "<option value="slogin">Social Login</option>" добавляем "<option value="hkm_profile">HKM Profile</option>";

2) В скрипт /plugins/jcomments/avatar/avatar.php перед "case 'gravatar':" вставляем:

case 'hkm_profile':
	$db->setQuery('SELECT extension_id, params FROM #__extensions WHERE name="plg_user_hkm_profile" LIMIT 1');
	$a=$db->loadObjectList('extension_id');
	if(!is_array($a)) break;				
	$a=array_shift($a);	
	$a=json_decode($a->params);
	$userinfo=$a->userinfo;	
	if(!isset($userinfo->fieldmyparams) || !is_array($userinfo->fieldmyparams)) break;

	$ids=$avatars=array();
	foreach($userinfo->fieldmyparams as $k => $params){
	  parse_str($params, $params);	
	  if(isset($params['fieldtype']) && $params['fieldtype']=='avatar')
		$ids[]='profile_key="hkm_profile.uniqueID'.$k.'"';	
	}
	
	if(!count($ids)) break;
	
	if(count($users)) {
	  $db->setQuery('SELECT * FROM #__user_profiles WHERE user_id in (' . implode(',', $users) . ') AND ('.implode(' OR ', $ids).')');
	   $avatars=$db->loadObjectList('user_id');
	}

	foreach ($comments as &$comment) {
	  $uid = (int)$comment->userid;
	  if(!isset($avatars[$uid])) continue;
	  if(@is_file($_SERVER['DOCUMENT_ROOT'].'/'.ltrim($avatars[$uid]->profile_value, '/\\'))) $comment->avatar=$avatars[$uid]->profile_value;
	}
	
	break;



Скачать модифицированный плагин HKM_profile
Скачать модифицированный плагин jcomments avatar

Комментарии

#1 Андрей 2013-10-08 11:00:22
Огромная благодарность разработчикам.

Давно искал простенький плагин с возможностью загрузки аватарок в профиль пользователя.
#2 Сергей 2013-11-06 13:03:02
Здравствуйте
спасибо за этот мод, но у меня возникла проблема.
установил этот модифицированный плагин, но аватарка не сохраняется. В функцию onUserAfterSave вообще не приходит значение поля file. Подскажите пожалуйста где могла закрасться ошибка.
Использовал ваш http://2v3.su/src/plugins/user/hkm_profile_v2.5.0.zip
установлена Joomla Joomla! 3.1.5
#3 Отдел разработки сайтов 2013-11-06 13:51:42
Цитата Сергей
В функцию onUserAfterSave вообще не приходит значение поля file.

Давайте тогда посмотрим, что туда вообще приходит, в начале функции onUserAfterSave добавьте: file_put_contents('test.txt', var_export($_FILES, true));
потом попробуйте загрузить фото, и в корне сайта посмотрите содержимое этого файла. Скиньте текст сюда.
#4 Сергей 2013-11-06 13:53:20
Цитата Отдел разработки сайтов
Цитата Сергей
В функцию onUserAfterSave вообще не приходит значение поля file.

Давайте тогда посмотрим, что туда вообще приходит, в начале функции onUserAfterSave добавьте: file_put_contents('test.txt', var_export($_FILES, true));
потом попробуйте загрузить фото, и в корне сайта посмотрите содержимое этого файла. Скиньте текст сюда.


Благодарю разобрался, в приложенном модифицированном плагине отсутствовала библиотека image.php
#5 Леонид 2013-11-08 12:19:18
:)Огромное спасибо!! Отличный плагин.
Правда для Jcomments под Jooml 3.X пришлось немного дольше повозиться, чтобы встроить:)
#6 Богдан 2013-11-15 09:18:23
Добрый день!
Помогите, пожалуйста.
Я установил плагин из вашего архива. Папку func добавил вручную в /plugins/user/hkm_profile/

Файл не сохраняется :-?

Добавил в начало функции onUserAfterSave
file_put_contents('test.txt', var_export($_FILES, true));

Вот что в test.txt:

array (
'jform' =>
array (
'name' =>
array (
'hkm_profile' =>
array (
'uniqueID2' => 'IMG_01112013_172356.png',
),
),
'type' =>
array (
'hkm_profile' =>
array (
'uniqueID2' => 'image/png',
),
),
'tmp_name' =>
array (
'hkm_profile' =>
array (
'uniqueID2' => '/home/apteka00/.system/tmp/php5qb8hS',
),
),
'error' =>
array (
'hkm_profile' =>
array (
'uniqueID2' => 0,
),
),
'size' =>
array (
'hkm_profile' =>
array (
'uniqueID2' => 10446,
),
),
),
)
#7 Отдел разработки сайтов 2013-11-15 11:01:34
Цитата Богдан
Файл не сохраняется :-?

Значит параметры такие fieldtype=avatar&width=128&height=128&path=/images/avatar/ установлены?
Папка используется эта /images/avatar/?
И еще для теста, в функцию my_avatar перед "foreach($_FILES" вставьте
file_put_contents('test.txt', $_SERVER['DOCUMENT_ROOT'].$dest.' '.var_export($a, true));
#8 Богдан 2013-11-16 05:32:16
Цитата Отдел разработки сайтов

Значит параметры такие fieldtype=avatar&width=128&height=128&path=/images/avatar/ установлены?

- установил такие
Цитата Отдел разработки сайтов
Папка используется эта /images/avatar/?

- такую папку создал на сайте, используется ли она - не знаю
Цитата Отдел разработки сайтов

И еще для теста, в функцию my_avatar перед "foreach($_FILES" вставьте
file_put_contents('test.txt', $_SERVER['DOCUMENT_ROOT'].$dest.' '.var_export($a, true));

[/quote]
- вставил, но в файле test.txt ничего не появляется, кроме того, что пишет file_put_contents а начале onUserAfterSave, т.е. похоже, что туда просто не доходит
#9 Отдел разработки сайтов 2013-11-16 07:14:52
Цитата Богдан
вставил, но в файле test.txt ничего не появляется

Остается только методом перебора выявлять причину.
Сначала в функции onUserAfterSave
Перед и после выражения if(!is_array($params) вставить file_put_contents('test.txt', var_export($params, true)); Если до туда тоже не доходит, то подниматься выше, через строчку, до "if($userinfo && isset($userinfo->fieldmyparams)){"
Суть, думаю, ясна, нужно определить место, докуда доходит скрипт, на пути вызова функции my_avatar.
#10 Богдан 2013-11-16 09:16:02
Цитата Отдел разработки сайтов

Суть, думаю, ясна, нужно определить место, докуда доходит скрипт, на пути вызова функции my_avatar.


Спасибо за помощь! Заработало!

А было вот что. Как вы посоветовали выше, я посмотрел, где затыкается скрипт. Оказалось не выполняется проверка if(is_array($fieldmyparams)). Не было времени детально разбираться, но суть в том, что $fieldmyparams это не array а класс, и понятно, что is_array выдает false. Беглое прочтение инета, показало, что причина в версии php, у меня 5.3, а скрипт, вероятно, писался и тестировался под 5.1 или ниже.
Короче, после того, как я заменил:

if(is_array($fieldmyparams)){ ...
на
if(isset($fieldmyparams)){ ...

и соответственно чуть ниже:

if(!is_array($params) || !count($params) || ...
на
if(!isset($params) || !count($params) || ...

- всё заработало.

Ну и пожелание есть: при удаления юзера данные в БД подчищаются, а вот файл не удаляется, т.е. папка images/avatars замусоривается. Добавьте, пожалуйста, удаление файла тоже.
#11 Богдан 2013-11-16 09:48:39
И подскажите, пожалуйста, можно ли в админке вывести аватар, например, там где сейчас выводится поле во вкладке Расширенный профиль ?
#12 Отдел разработки сайтов 2013-11-16 10:39:00
"if(is_array($fieldmyparams)){" - исправил на "if(is_array($fieldmyparams) || is_object($fieldmyparams)){", что касается "if(!is_array($params) ", то функция parse_str не должна возвращать объектов, так что оставил как есть пока.

Цитата Богдан
папка images/avatars замусоривается.

Учитывая размер аватара, и, как правило, редкого удаления профилей, то массового замусоривания произойти не должно. Но если это проблема будет актуальна для n-го количества веб-мастеров, то допишу очистку папки.

Цитата Богдан
можно ли в админке вывести аватар

Я там сделал текстовое поле, для простоты (на мой взгляд) удаления и редактирования ссылки аватара. Если там оставить поле "файл", то пришлось бы делать кнопку удаления аватара. Если же удалять не надо, то можно заменить строку "$type=(stripos(JPATH_BASE, 'administrator')!==false) ? 'input' : 'file';" на $type='file'; и протестировать (хотя опять же будет только поле загрузки, не аватар, лучше оставить текстовое поле).
#13 Alex 2014-01-07 19:59:16
Подскажите пожалуйста, как мне вывести аватар пользователя в другом месте??
#14 Отдел разработки сайтов 2014-01-07 23:45:14
Цитата Alex
Подскажите пожалуйста, как мне вывести аватар пользователя в другом месте??


Если вопрос в контексте данного плагина и аватаки находятся тут /images/avatar/, то можно так:

$jusr=JFactory::getUser();
if($jusr->id && @is_file(JPATH_BASE.'/images/avatar/'.$jusr->id.'.jpg')){
echo '<img src="/images/avatar/'.$jusr->id.'.jpg" border=0 />';
}

Данный код берет ID пользователя, проверяет наличие файла аватарки, и только потом выводит в браузер. Код нужно вставить в php-файле, в месте вывода аватарки.
#15 Анатолий 2014-03-29 21:07:58
Поставил плагины на Joomla 3.2
Сделал все как тут написано, правда в плагинах уже все добавлено что нужно. Сначала обрадовался что появилась кнопка "добавить файл". В профиле аватарка есть но в jcomments не было. Потыкал по плагинам и нашел в JComments - Avatar есть настройка Avatar Source где выбираем HKM profil. И ура! все работает.
Большое спасибо тебе хороший человек!
#16 Андрей 2014-05-21 07:56:15
Установил плагин, аватар не сохраняется.
#17 Андрей 2014-05-21 07:57:08
Joomla 2.5.19
#18 Отдел разработки сайтов 2014-05-21 09:37:59
Цитата Андрей
Установил плагин, аватар не сохраняется.

Так сложно угадать, почему не загружается, на Joomla 2.5.19 загрузка работает. Если кнопка добавить фото в профиле появилась, тогда делайте отладку как описано выше (test.txt). Нужно больше информации, чтобы что-то посоветовать.
#19 Мура 2014-06-12 18:31:12
Цитата Леонид
:)Огромное спасибо!! Отличный плагин.
Правда для Jcomments под Jooml 3.X пришлось немного дольше повозиться, чтобы встроить:)

Добрый день!
Работаю с joomla 3.x , все сделал как описано, но в комментариях не появляется аватарка. Прошу помощи, спасибо!
#20 Марина 2014-06-14 06:58:21
Добрый день!
Не могу разобраться где затык в скрипте.
При регистрации не загружает картинку, если после регистрации в профиле через Изменение профиля загрузить картинку, то все работает. Испробовалось все описанное выше, единственная причина почему не работает пока такая - не загружает картинку во временную папку. То есть не выполняется вот это if(isset($_FILES['jform']['tmp_name']['hkm_profile'])){...
Версия php 5.4. сервер локальный. Мне очень важно, чтоб картинка грузилась сразу при регистрации...
#21 Марина 2014-06-14 06:59:16
Joomla 2.5.21
#22 Отдел разработки сайтов 2014-06-14 18:49:52
Цитата Марина
То есть не выполняется вот это if(isset($_FILES['jform']['tmp_name']['hkm_profile'])){...

Пробуйте тогда перед этим кодом вставить следующий код, в корень сайта запишутся отладочные данные, скопируйте их сюда.
file_put_contents('test.txt', var_export($_FILES, true));
#23 Марина 2014-06-16 07:20:26
отладочные данные

array (
)

Если посмотреть запись в поле в Менеджере пользователей, то там стоит локальный адрес картинки, т.е. не происходит обработки и присваивания файлу имени с id пользователя.
#24 Марина 2014-06-16 07:22:31
а вот отладочные данные, когда пользователь грузит картинку после выбора Изменить профиль

array (
'jform' =>
array (
'name' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 'a4.jpg',
),
),
'type' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 'image/jpeg',
),
),
'tmp_name' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 'C:\\OpenServer\\OpenServer\\userdata\\temp\\php97EC.tmp',
),
),
'error' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 0,
),
),
'size' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 96673,
),
),
),
)
#25 Отдел разработки сайтов 2014-06-16 17:45:18
Цитата Марина
Если посмотреть запись в поле в Менеджере пользователей, то там стоит локальный адрес картинки, т.е. не происходит обработки и присваивания файлу имени с id пользователя.

Попробуйте запустить сайт на хостинге, возможно, причина в OpenServer. Иначе нужно выяснять, почему не присваивается id, в разных строках (начиная с функции my_avatar) ставить file_put_contents('test.txt', var_export($переменная, true));
#26 Марина 2014-06-16 19:21:27
Запустила на сервере. Все равно не грузит.
вот такая отладка
function my_avatar($a){

if(is_array($a)){
file_put_contents('test.txt', var_export($a, true));
if(isset($_FILES['jform']['tmp_name']['hkm_profile'])){
file_put_contents('test_files.txt', var_export($_FILES, true));

формируется только файл test.txt с такой информацией
array (
'fieldtype' => 'avatar',
'width' => '360',
'height' => '480',
'path' => '/images/avatar/',
'field_id' => 1,
'user_id' => 943,
)
получается что переменная $FILES пуста
не могу найти в коде где конкретно дается команда на загрузку файла.
#27 Отдел разработки сайтов 2014-06-16 22:25:08
Цитата Марина
получается что переменная $FILES пуста не могу найти в коде где конкретно дается команда на загрузку файла.

Для теста поставили бы еще
file_put_contents('test_req.txt', var_export($_REQUEST, true));
file_put_contents('test_files1.txt', var_export($_FILES, true));
перед if(isset($_FILES['jform']['tmp_name']['hkm_profile']))
и после file_put_contents('test_files2.txt', var_export($_FILES, true));
В прошлом сообщении переменная $_FILES была заполнена. Файл загружается во временную папку автоматически, если он передан пользователем.
#28 Марина 2014-06-17 19:46:53
Вообщем, что-то не могу победить. Добавлено:
function my_avatar($a){

if(is_array($a)){
file_put_contents('test.txt', var_export($a, true));
file_put_contents('test_req.txt', var_export($_REQUEST, true));
file_put_contents('test_files1.txt', var_export($_FILES, true));
if(isset($_FILES['jform']['tmp_name']['hkm_profile'])){
file_put_contents('test_files2.txt', var_export($_FILES, true));



в итоге получились такие файлы:
test.txt
array (
'fieldtype' => 'avatar',
'width' => '360',
'height' => '480',
'path' => '/images/avatar/',
'field_id' => 1,
'user_id' => 948,
)


test_req.txt
array (
'task' => 'register',
'jform' =>
array (
'name' => 'mmmmm',
'username' => 'mmmmm',
'password1' => '123456',
'password2' => '123456',
'email1' => 'bbbb@gmail.com',
'email2' => 'bbbb@gmail.com',
'hkm_profile' =>
array (
'uniqueID1' => '4zscQV1f6N0.jpg',
),
),
'option' => 'com_users',
'01ae94a4a30e0149fb5d1bcbd751ad6b' => '1',
'Itemid' => NULL,
)


test_files1.txt
array (
)


файл test_files2.txt не создался.
#29 Отдел разработки сайтов 2014-06-17 20:24:38
Цитата Марина
Вообщем, что-то не могу победить.

В $_REQUEST правильные данные, но почему-то не загружается файл. Кликните в браузере правой кнопкой и посмотрите в исходном коде на странице регистрации наличие атрибута enctype="multipart/form-data" у тега FORM.
#30 Марина 2014-06-18 20:48:58
вот все что есть

#31 Марина 2014-06-18 20:50:01
form id="member-registration" action="/component/users/?task=registration.register" method="post" class="form-validate"

что-то не вставился код
#32 Отдел разработки сайтов 2014-06-18 20:57:21
Цитата Марина
form id="member-registration" action="/component/users/?task=registration.register" method="post" class="form-validate"

Открывайте /templates/шаблон/html/com_users/registration/default.php
и дописывайте атрибут
<form enctype="multipart/form-data" id="member-registration" action="/component/users/?task=registration.register" method="post" class="form-validate">
#33 Марина 2014-06-19 14:53:41
СПАСИБО! Все получилось! Всех благ вам!
#34 Марина 2014-06-19 15:03:01
И еще один вопросик: что достаточно поменять/добавить, чтобы использовать при загрузке два поля типа Файл?
Добавила (скопировала и изменила) еще функцию My_avatar (в плагине вместо avatar у второго поля docscan). Второе изображение создается и записывается у меня как id_d.jpg, но по-прежнему в папку avatar ('это не категорично), но при отображении в профиле в обоих полях отображается именно вторая картинка, которая с буквой "d".
#35 Отдел разработки сайтов 2014-06-19 16:50:24
Цитата Марина
И еще один вопросик: что достаточно поменять/добавить, чтобы использовать при загрузке два поля типа Файл?
Добавила (скопировала и изменила) еще функцию My_avatar (в плагине вместо avatar у второго поля docscan). Второе изображение создается и записывается у меня как id_d.jpg, но по-прежнему в папку avatar ('это не категорично), но при отображении в профиле в обоих полях отображается именно вторая картинка, которая с буквой "d".

Добавлять новую функцию нужно в случае изменения логики обработки файла.
Для добавления еще одного фото, достаточно в плагине (в админке джумлы) добавить еще одно поле, например, Файл2, заполнив "Мои параметры", следующими данными: fieldtype=avatar&width=128&height=128&path=/images/avatar2/
где fieldtype это имя функции, без префикса "my_". В вашем случае: fieldtype=docscan, а функция будет my_docscan. Повторюсь, новая функция нужна только в случае изменения логики обработки\вывода вашего изображения.
#36 Марина 2014-06-24 19:33:01
Добрый день!
Сделала вот это:
Поле Фото
fieldtype=avatar&width=360&height=480&path=/images/jsfoto/
Поле Документ
fieldtype=avatar&width=720&height=320&path=/images/jsdocs/
Файлы загружаются в нужные папки и нужного размера, но в настройках пользователя в обоих полях в Расширенном профиле стоит /images/jsdocs/958.jpg и соответственно при входе отображается одна и та же картинка в профиле, хотя на самом деле все создается и записывается правильно.
#37 Отдел разработки сайтов 2014-06-25 12:05:36
Цитата Марина
Файлы загружаются в нужные папки и нужного размера, но в настройках пользователя в обоих полях в Расширенном профиле стоит /images/jsdocs/958.jpg и соответственно при входе отображается одна и та же картинка в профиле, хотя на самом деле все создается и записывается правильно.

Даже не знаю, что подсказать, у меня все нормально загружается и отображается. Нужно снова делать отладку, почему в оба поля в базе сохраняется /images/jsdocs/958.jpg
Для эксперимента попробуйте новую функцию добавить, fieldtype=jsdocs&width=720&height=320&path=/images/jsdocs/, функция будет называться my_jsdocs, содержимое возьмите из my_avatar.
#38 Марина 2014-06-26 08:16:34
Что-то все ошибки на этом сайте выползают, которые только возможны. Отладочная информация
/www/..../images/jsdocs/962.jpg array (
'fieldtype' => 'jsdocs',
'width' => '720',
'height' => '320',
'path' => '/images/jsdocs/',
'field_id' => 2,
'user_id' => 962,
)

/www/..../images/jsfoto/962.jpg array (
'fieldtype' => 'avatar',
'width' => '360',
'height' => '480',
'path' => '/images/jsfoto/',
'field_id' => 1,
'user_id' => 962,
)

одинаковые пути пишутся в поле profile_value таблицы. Можно ли в скрипте конкретно прописать что для значения profile_key равного hkm_profile.uniqueID2 в поле profile_value конкретно пишем нужный путь? К сожалению, не знаю как конкретно это реализовать.
#39 Марина 2014-06-26 08:19:24
в предыдущем посте отладочная при введении новой функции.
#40 Отдел разработки сайтов 2014-06-27 14:34:47
Цитата Марина
одинаковые пути пишутся в поле profile_value таблицы.

Пришлите содержание sql-запроса (в конце файла найдете) при сохранение изображений в профиле
file_put_contents('sql.txt', 'REPLACE INTO #__user_profiles VALUES '.implode(', ', $tuples));
#41 Марина 2014-06-30 12:21:49
Добрый день! Вообщем, отладочная информация показывает что в БД посылается один и тот же путь. Дописала условие:
if ($k != 'uniqueID1') {$tuples[] = '('.$userId.', '.$db->quote('hkm_profile.'.$k).', '.$db->quote($v).', '.$order++.')';
}
else $tuples[] = '('.$userId.', '.$db->quote('hkm_profile.'.$k).','.$db->quote('/images/jsfoto/'.$userId.'.jpg').', '.$order++.')';
}

Грузит и отображается верно. Потестирую. Но кажется возникает проблема при изменении профиля, если хочу поменять картинку документа, просит указать и фото. Попробую разобраться. Спасибо за помощь!
#42 Отдел разработки сайтов 2014-06-30 22:01:05
Цитата Марина
Добрый день! Вообщем, отладочная информация показывает что в БД посылается один и тот же путь.

перед этим кодом
$db->setQuery('REPLACE INTO #__user_profiles VALUES '.implode(', ', $tuples));
добавьте file_put_contents('sql.txt', implode(', ', $tuples));
сохраните фото и пришлите результат. У меня все сохраняется верно, и нужно понять на каком этапе у вас появляется ошибка.
#43 Isvet 2014-07-02 12:41:38
Все хорошо и работает. Но в профиле все равно надо выбрать загрузку аватара, и не вылезает фотка.
cat test2.txt
array (
'fieldtype' => 'avatar',
'width' => '128',
'height' => '128',
'path' => '/images/avatar/',
'field_id' => 2,
'user_id' => 800,

cat test_files2.txt
array (
'jform' =>
array (
'name' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => '',
'uniqueID2' => '2x2big.png',
),
),
'type' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => '',
'uniqueID2' => 'image/png',
),
),
'tmp_name' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => '',
'uniqueID2' => '/tmp/php04SoNu',
),
),
'error' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 4,
'uniqueID2' => 0,
),
),
'size' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 0,
'uniqueID2' => 358621,
),
),
),

cat test_req.txt
array (
'task' => 'register',
'jform' =>
array (
'name' => 'isvet1',
'username' => 'isvet1',
'password1' => 'isvet1',
'password2' => 'isvet1',
'email1' => 'isvet1@ya.ru',
'email2' => 'isvet1@ya.ru',
),
'option' => 'com_users',
'92b6877688a60e6ad97156cf8a0b3522' => '1',
'Itemid' => NULL,


cat test_files1.txt
array (
'jform' =>
array (
'name' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => '',
'uniqueID2' => '2x2big.png',
),
),
'type' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => '',
'uniqueID2' => 'image/png',
),
),
'tmp_name' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => '',
'uniqueID2' => '/tmp/php04SoNu',
),
),
'error' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 4,
'uniqueID2' => 0,
),
),
'size' =>
array (
'hkm_profile' =>
array (
'uniqueID1' => 0,
'uniqueID2' => 358621,
),
),
),
#44 Isvet 2014-07-02 12:42:21
php 5,5
#45 Марина 2014-07-02 19:03:04
Добрый день! Не совсем поняла фото чего нужно прислать.
Кусок файла sql.txt с полями типа file

(998, 'hkm_profile.uniqueID22', '1', 17), (998, 'hkm_profile.uniqueID1', '/images/jsdocs/998.jpg', 18), (998, 'hkm_profile.uniqueID2', '/images/jsdocs/998.jpg', 19)
#46 Отдел разработки сайтов 2014-07-03 11:12:44
Цитата Марина
Не совсем поняла фото чего нужно прислать.

Фото я не просил.

Цитата Марина
Кусок файла sql.txt с полями типа file
(998, 'hkm_profile.uniqueID22', '1', 17), (998, 'hkm_profile.uniqueID1', '/images/jsdocs/998.jpg', 18), (998, 'hkm_profile.uniqueID2', '/images/jsdocs/998.jpg', 19)

[/quote]
попробуйте это (в функции my_avatar)

foreach($_FILES['jform']['tmp_name']['hkm_profile'] as $k => $src){
if(sys__image_resize($src, $_SERVER['DOCUMENT_ROOT'].$dest, $w, $h, true))$out[$k]=$dest;
if($field_id && $field_id==$k) break;
}

заменить на этот код

if($field_id){
if(!isset($_FILES['jform']['tmp_name']['hkm_profile'][$field_id])) return false;
if(sys__image_resize($_FILES['jform']['tmp_name']['hkm_profile'][$field_id], $_SERVER['DOCUMENT_ROOT'].$dest, $w, $h, true)) $out[$field_id]=$dest;
}else{
foreach($_FILES['jform']['tmp_name']['hkm_profile'] as $k => $src){
if(sys__image_resize($src, $_SERVER['DOCUMENT_ROOT'].$dest, $w, $h, true)) $out[$k]=$dest;
}
}
#47 Марина 2014-07-03 16:15:50
СПАСИБО!!! ВСЕ РАБОТАЕТ!!! Надеюсь с выставлением необязательности разберусь сама:)
#48 Отдел разработки сайтов 2014-07-03 17:06:22
Цитата Марина
СПАСИБО!!! ВСЕ РАБОТАЕТ!!! Надеюсь с выставлением необязательности разберусь сама:)

Хорошо, внес корректировки в исходники.
#49 Дмитрий 2014-07-18 15:46:32
Подскажите пожалуйста, как вывести расширеные поля (не аватар) автора в статье?
#50 Отдел разработки сайтов 2014-07-21 07:47:39
Цитата Дмитрий
Подскажите пожалуйста, как вывести расширеные поля (не аватар) автора в статье?

Если кратко, то смотреть в эту сторону:
В скрипте вывода статьи /templates/шаблон/html/com_content/article/default.php
получить дополнительные поля автора из базы и вывести результат в нужно место:
$db=JFactory::getDbo();
$db->setQuery(
'SELECT profile_key, profile_value FROM #__user_profiles'.
' WHERE user_id = '.(int)$this->item->created_by .
' AND profile_key LIKE "hkm_profile.%"'.
' ORDER BY ordering');
$result=$db->loadObjectList();
#51 Руслан 2014-07-28 12:17:18
а можно как то это дело подружить с Ulogin ?
#52 Отдел разработки сайтов 2014-07-28 23:09:33
Цитата Руслан
а можно как то это дело подружить с Ulogin ?

Теоретически подружить можно с чем угодно, другой вопрос, что с необходимостью практической реализацией интеграции с Ulogin не сталкивались.
#53 Руслан 2014-07-29 07:20:19
Ulogin может получать аватарку из соц сетей, было бы здорово если бы лого бралось например из контакта.
И ещё такой вопрос где можно изменить дизайн профиля ?
#54 Отдел разработки сайтов 2014-07-29 07:39:19
Цитата Руслан
И ещё такой вопрос где можно изменить дизайн профиля ?

Тут файлы профиля: /templates/шаблон/html/com_users/profile/
#55 Константин 2014-08-02 16:15:26
Здравствуйте, не могу понять как заставить работать поле "Значение по умолчанию", если писать просто "default.jpg", то в профиле просто надпись "default.jpg", если вставить то вы валивается XML ошибка
#56 Отдел разработки сайтов 2014-08-02 16:46:30
Цитата Константин
Здравствуйте, не могу понять как заставить работать поле "Значение по умолчанию", если писать просто "default.jpg", то в профиле просто надпись "default.jpg", если вставить то вы валивается XML ошибка

Если речь о fieldtype=avatar, то значение по умолчанию отображается правильно, если по указанному адресу картинка /images/default.jpg
#57 Константин 2014-08-02 17:01:43
Если речь о fieldtype=avatar, то значение по умолчанию отображается правильно, если по указанному адресу картинка /images/default.jpg


то выводится просто "/images/default.jpg".
Картинка есть в папке images, но почему то не выводится почеловечески
#58 Отдел разработки сайтов 2014-08-02 17:09:11
Цитата Константин
то выводится просто "/images/default.jpg". Картинка есть в папке images, но почему то не выводится почеловечески

У меня все правильно выводится, возможно, вы что-то не так делаете. В админке для плагина "Расширенный профиль" нужно создать тип "Файл" с параметрами в поле "Мои параметры": fieldtype=avatar
#59 Константин 2014-08-02 17:24:42

Вродебы по инструкции делаю...

но выводится только надпись вместо картинки
#60 Отдел разработки сайтов 2014-08-02 17:50:13
Цитата Константин
но выводится только надпись вместо картинки

Попробуйте загрузить из профиля фото, в этом случае картинка нормально выводится?
#61 Константин 2014-08-03 01:11:21
Фото появляется нормально при загрузки из профиля
#62 Отдел разработки сайтов 2014-08-03 02:13:15
Цитата Константин
Фото появляется нормально при загрузки из профиля

Для эксперимента, поставьте отдельно "чистую" джумлу и протестируйте там плагин. Поскольку, если фото из профиля выводится, значит, и значение по умолчанию тоже должно было отображаться (у меня так, тестирую на J2.5).
#63 Константин 2014-08-03 06:24:33
К сожалению на свежей джумле все тоже самое, вот посмотрите здесь http://test.web86.ru/
koshsh
198619861986


Дефолтная картинка не показывается в следущих случаях:
1) когда при регистрации поле необязательно и не заполнено пользоватем
2) у суперадмина при создании сайта
3) когда идет регистрация пользователя через другие компоненты,
4) когда я создаю пользователя через админку

во всех этих случаях пологи вещей должнен стоять аватар по умолчанию, но почему то не стоит.
#64 Отдел разработки сайтов 2014-08-03 07:22:06
Цитата Константин
К сожалению на свежей джумле все тоже самое

Попробуйте в скрипте /plugins/user/hkm_profile/hkm_profile.php в функции onContentPrepareData после строки $userinfo=$this->params->get('userinfo'); добавить следующий код:
if(is_array($userinfo->fieldName)){
$tmp=array();
foreach($results as $v) $tmp[$v[0]]=$v;
$results=$tmp;
foreach($userinfo->fieldName as $k => $v){
$key='hkm_profile.'.$v;
if(!isset($results[$key]) && !empty($userinfo->fieldDefaultValue[$k]))
$results[$key]=array(0=>$key, 1=>$userinfo->fieldDefaultValue[$k]);
}
}
#65 Константин 2014-08-03 08:16:20
Спасибо, уже лучше но не айс, дифолтная картинка появляется как битая картинка, вот что кажет файербаг


Изза этого куска ?rnd=442339 картинка битая, както его можно убрать?
#66 Отдел разработки сайтов 2014-08-03 08:21:26
Цитата Константин
Спасибо, уже лучше но не айс, дифолтная картинка появляется как битая картинка, вот что кажет файербаг

Изза этого куска ?rnd=442339 картинка битая, както его можно убрать?

Без проблем, в том же файле замените:
return '<img class="hkm_avatar" border=0 src="'.$a.'?rnd='.rand(99999, 999999).'" />';
на
return '<img class="hkm_avatar" border=0 src="'.$a.'" />';
#67 Константин 2014-08-03 08:22:35
редактор у вас режет HTML...вроде заработало, нужно указывать еще полный путь к дефолтной картинке, тогда будет не битая картинка.

Спасибо за помощь! Теперь все заработало!
#68 Константин 2014-08-03 08:31:00
Рано обрадовался, в профиле дефолтная стала показываться, но если я хочу вывести картинку скажем в модуле авторизации, то пустота,

вывожу таким путем:

$jusr=JFactory::getUser();
if($jusr->id && @is_file(JPATH_BASE.'/images/avatar/'.$jusr->id.'.jpg')){
echo '';
}

Помогите пожалуйста изменить этот код так чтобы выводилась из той же папки default.jpg если не выбрана другая
#69 Отдел разработки сайтов 2014-08-03 08:39:55
Цитата Константин
Рано обрадовался, в профиле дефолтная стала показываться, но если я хочу вывести картинку скажем в модуле авторизации, то пустота,

Это уже к работе плагина не относится, если кратко, то так;

$jusr=JFactory::getUser();
if($jusr->id){
$src='/images/avatar/'.$jusr->id.'.jpg';
if(!@is_file(JPATH_BASE.$src)) $src='/images/default.jpg';
echo '<img src="'.$src.'" />';
}
#70 Константин 2014-08-03 08:50:56
:lol: :lol: :lol:
Вау!!! Супер все работает как швейцарские часы!
Огромное спасибо...
#71 Михаил 2014-09-28 14:59:54
Здравствуйте!
Установил плагин расширенного профиля на Joomla 3.3.4. Поле для загрузки аватара не появилось((
Только стало возможным создавать в плагине дополнительные текстовые поля.

Помогите разобраться почему аватара нет в профиле.

Спасибо.
#72 Отдел разработки сайтов 2014-09-30 00:06:10
Цитата Михаил
Установил плагин расширенного профиля на Joomla 3.3.4. Поле для загрузки аватара не появилось((
Помогите разобраться почему аватара нет в профиле.

Проверьте, активирован ли сам плагин, потом пройдитесь по комментариям выше, попробуйте проделать описанные отладочные действия. Поскольку без этой информации, я не смогу определить место ошибки. И у нас все же коммерческий сайт, если неохота возиться, можем платно настроить.
#73 2007 2014-10-25 11:30:03
Доброго времени суток.
Плагин расширенного профиля на Joomla 3.3.4 не работает!
Нет возможности переключиться на поле "файл". Доступно только текстовое поле. Не работает Ваша форма.
#74 2007 2014-10-25 15:15:51
Цитата 2007
Доброго времени суток.
Плагин расширенного профиля на Joomla 3.3.4 не работает!
Нет возможности переключиться на поле "файл". Доступно только текстовое поле. Не работает Ваша форма.

************************************
Я ничего не понял, но он заработал. Спасибо.
#75 2007 2014-10-26 07:49:45
Доброго времени суток.
Пытаюсь сделать список юзеров на сайте, с выводом аватарок. К сожалению по рекомендованному Вами способу
Цитата Отдел разработки сайтов

$jusr=JFactory::getUser();
if($jusr->id && @is_file(JPATH_BASE.'/images/avatar/'.$jusr->id.'.jpg')){
echo '<img src="/images/avatar/'.$jusr->id.'.jpg" border=0 />';
}

отображается одна и таже картинка в количестве выданного списка. А именно аватар последнего юзера в списке.
Посоветуйте где копать?
И можно ли атрибуты аватара в базу данных помещать в таблицу user?
Спасибо.
#76 Максим 2014-12-02 12:00:56
Цитата 2007
Доброго времени суток.
Плагин расширенного профиля на Joomla 3.3.4 не работает!
Нет возможности переключиться на поле "файл". Доступно только текстовое поле. Не работает Ваша форма.

Аналогичная проблема joomla 3.3.6
#77 Максим 2014-12-02 12:21:50
проблема решилась после нажатии кнопки сохранить с текстовым полем.
#78 Александр 2014-12-23 21:45:15
Аватар в профиль подгрузился. А как его вывести в комментариях компонента ZOO? Перерыл все, помогите, пож!
#79 Антиквариат 2015-01-10 20:19:53
Привет! а как можно настроить сжатие (качество) получаемого аватара? получается такое сильное сжатие что мама не горюй....
#80 Отдел разработки сайтов 2015-01-11 00:40:28
Цитата Антиквариат
как можно настроить сжатие (качество) получаемого аватара?

Попробуйте заменить в скрипте /plugins/user/hkm_profile/func/images.php название функции imagecopyresized на imagecopyresampled
#81 Антиквариат 2015-01-12 10:06:22
Цитата Отдел разработки сайтов
Цитата Антиквариат
как можно настроить сжатие (качество) получаемого аватара?

Попробуйте заменить в скрипте /plugins/user/hkm_profile/func/images.php название функции imagecopyresized на imagecopyresampled

угумс! СПС помогло!
еще заметил такой глюк - скорее всего не для вашего мода, а вообще для данного плагина - если создал поля, потом юзеры надобавляли своей инфы и ВДРУГ решили поменять порядок полей (там есть такая возможность зачем-то))) ), то плагин обваливает страницу профиля... помогает возврат полей в исходную сортировку... вообще думаю нефига там поля туда-сюда переставлять, это джумла что тут сказать)))

Специалист по видео

8 (929) 264 1523 (Константин)

cashara@bk.ru

Специалист по фото

8 (929) 261 3062 (Дмитрий)

Мультимедиа-студия «Два в кубе» © 2011 - 2015



Рейтинг лучших мягких матрасов.