Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

МОД Custom Profile Fields

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Lstasss
phpBB 1.4.4
Сообщения: 166
Стаж: 13 лет 9 месяцев
Откуда: Варшава (Польша) / Кишинёв (Молдова)

МОД Custom Profile Fields

Сообщение Lstasss »

Поставил, но мне мало его возможностей.
Например, я хочу добавить поле для указания Skype Id (не говорите мне, что для этого есть другой мод, я это знаю, это пример), и чтобы показывалась иконка как для ICQ. Добавил пока одну константу, типа для отображения в конктактных данных, там в моде можно выбирать, где показывать - в поле "автор", ниже или выше подписи. А мне вот хочется ещё иконку добавить, для этого добавил ячейку в БД в таблицу для этого мода. Как мне теперь всем этим управлять?

Сайт автора с версией 1.2.1
http://www.outshine.com/software/custom ... /index.php

З.Ы. сам мод (без моих изменений во вложении)
Вложения
3447.zip
(48.62 КБ) 854 скачивания
обожаю строку "EoM" :D
http://nepopsisty.net/forum.php - форум НЕпопсистов :twisted:

Alexalexis
phpBB 1.4.4
Сообщения: 183
Стаж: 13 лет 6 месяцев

Сообщение Alexalexis »

В нём ошибка.

Код: Выделить всё

#
#-----[ OPEN ]--------------------
#
templates/subSilver/viewtopic_body.tpl

#
#-----[ FIND ]-------------------
#
		<td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>{postrow.POSTER_NAME}</b></span><br /><span class="postdetails">{postrow.POSTER_RANK}<br />{postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}<br /><br />{postrow.POSTER_JOINED}<br />{postrow.POSTER_POSTS}<br />{postrow.POSTER_FROM}

#
#-----[ REPLACE WITH ]-------------------
#
<!-- Custom Profile Fields MOD start -->
      <td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>{postrow.POSTER_NAME}</b></span><br /><span class="postdetails">{postrow.POSTER_RANK}<br />{postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}<br /><br />{postrow.POSTER_JOINED}<br />{postrow.POSTER_POSTS}<br />{postrow.POSTER_FROM}
      <!-- BEGIN author_profile -->
      <br />{postrow.author_profile.AUTHOR_VAL}
      <!-- END author_profile -->
      </span><br /></td>
<!-- Custom Profile Fields MOD finish -->
Должно быть или

Код: Выделить всё

#
#-----[ FIND ]-------------------
#
		<td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>{postrow.POSTER_NAME}</b></span><br /><span class="postdetails">{postrow.POSTER_RANK}<br />{postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}<br /><br />{postrow.POSTER_JOINED}<br />{postrow.POSTER_POSTS}<br />{postrow.POSTER_FROM}</span><br /></td>
или

Код: Выделить всё

#
#-----[ REPLACE WITH ]-------------------
#
<!-- Custom Profile Fields MOD start -->
      <td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>{postrow.POSTER_NAME}</b></span><br /><span class="postdetails">{postrow.POSTER_RANK}<br />{postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}<br /><br />{postrow.POSTER_JOINED}<br />{postrow.POSTER_POSTS}<br />{postrow.POSTER_FROM}
      <!-- BEGIN author_profile -->
      <br />{postrow.author_profile.AUTHOR_VAL}
      <!-- END author_profile -->
<!-- Custom Profile Fields MOD finish -->
Или я не понимаю чего-то? Иначе, между кнопками "Новая тема", "Ответить" и постами увеличивается расстояние в зависимости от количества постов.

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 14 лет 1 месяц
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Сообщение Палыч »

Alexalexis писал(а):Или я не понимаю чего-то?
Вы просто невнимательны.
Краткое руководство по установке модов писал(а):3) Действие "FIND"

#
#-----[ FIND ]------------------------------------------
#
$lang['General'] = 'General Admin';

Указывает на строку, которую необходимо найти для проведения дальнейших действий.
Указываться для поиска может как строка целиком, так и любая часть этой строки (начало строки, конец строки или середина):

#
#-----[ FIND ]------------------------------------------
#
$lang['General'] =

#
#-----[ FIND ]------------------------------------------
#
Admin';

#
#-----[ FIND ]------------------------------------------
#
'General Admin'

А для послеющих действий вы должны работать целиком со строкой.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Steuer
phpBB 1.2.0
Сообщения: 10
Стаж: 13 лет 6 месяцев
Откуда: Россия, МО, г. Пушкино

Сообщение Steuer »

На локальной машине поставил для теста мод Custom profile fields.
В админке создал группу чекбоксов. Зашел в свой профиль, отметил некоторые из этих новых, сохранил. В форуме все отображается прекрасно. Вновь зашел в свой профиль, оставил отмеченным только один чекбокс, успешно сохранил изменения. Ещё раз вошел в профиль, убрал оставшуюся отметку (т.о. все чекбоксы этой группы не отмечены), при попытке сохранения выводится сообщение:
Could not update custom profile fields

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_id = 6' at line 3

UPDATE forum_users SE WHERE user_id = 6

Line : 614
File : usercp_register.php
Подозрение вызывает
SE WHERE
Залез в usercp_register.php, там такой код:

Код: Выделить всё

			//
			// Custom Profile Fields MOD
			//
      $profile_data = get_fields('WHERE users_can_view = '.ALLOW_VIEW);
      $profile_names = array();
      $semaphore = 0;
      $sql2 = "UPDATE " . USERS_TABLE . "
          SET ";
      foreach($profile_data as $fields)
      {
        $name = text_to_column($fields['field_name']);
        $type = $fields['field_type'];
        $required = $fields['is_required'] == REQUIRED ? true : false;
        
        if(isset($HTTP_POST_VARS[$name]))
        {
          $temp = (isset($HTTP_POST_VARS[$name])) ? $HTTP_POST_VARS[$name] : array();
          if($type == CHECKBOX)
          {
            $temp2 = '';
            foreach($temp as $temp3)
              $temp2 .= htmlspecialchars($temp3) . ',';
            $temp2 = substr($temp2,0,strlen($temp2)-1);
            
            $temp = $temp2;
          }
          else
            $temp = htmlspecialchars($temp);
          $profile_names[$name] = $temp;
          
          $sql2 .= $name . " = '".str_replace("\'","''",$profile_names[$name])."', ";
        }
        $semaphore++;
      }
      $sql2 = substr($sql2,0,strlen($sql2)-2)."
        WHERE user_id = ".$userdata['user_id'];
      if(!$db->sql_query($sql2) && ($semaphore))
        message_die(GENERAL_ERROR,'Could not update custom profile fields','',__LINE__,__FILE__,$sql2);
			//
			// END Custom Profile Fields MOD
			//
Помогите, плиз, разобраться в чём проблема.

Добавлено спустя 10 минут 21 секунду:

В самой админке, при редакции профиля, такой ошибки не происходит.

Lstasss
phpBB 1.4.4
Сообщения: 166
Стаж: 13 лет 9 месяцев
Откуда: Варшава (Польша) / Кишинёв (Молдова)

Сообщение Lstasss »

Код: Выделить всё

$sql2 = substr($sql2,0,strlen($sql2)-2).
отрезает 2 знака - пробел и букву от строки "UPDATE " . USERS_TABLE . "
SET ".
вариант исправления:
после

Код: Выделить всё

$semaphore++; 
}
добавить

Код: Выделить всё

if($semaphore > 0) {
и после

Код: Выделить всё

,__FILE__,$sql2);
добавить Думаю, что должно работать.

Добавлено спустя 3 минуты 23 секунды:

а да, если кому интересно - под свои надобности мод подогнал, могу поделиться (завершенным кодом)
обожаю строку "EoM" :D
http://nepopsisty.net/forum.php - форум НЕпопсистов :twisted:

Steuer
phpBB 1.2.0
Сообщения: 10
Стаж: 13 лет 6 месяцев
Откуда: Россия, МО, г. Пушкино

Сообщение Steuer »

Вот два куска:

Код: Выделить всё

// usercp_register.php
			//
			// Custom Profile Fields MOD
			//
      $profile_data = get_fields('WHERE users_can_view = '.ALLOW_VIEW);
      $profile_names = array();
      $semaphore = 0;
      $sql2 = "UPDATE " . USERS_TABLE . "
          SET ";
      foreach($profile_data as $fields)
      {
        $name = text_to_column($fields['field_name']);
        $type = $fields['field_type'];
        $required = $fields['is_required'] == REQUIRED ? true : false;
        
        if(isset($HTTP_POST_VARS[$name]))
        {
          $temp = (isset($HTTP_POST_VARS[$name])) ? $HTTP_POST_VARS[$name] : array();
          if($type == CHECKBOX)
          {
            $temp2 = '';
            foreach($temp as $temp3)
              $temp2 .= htmlspecialchars($temp3) . ',';
            $temp2 = substr($temp2,0,strlen($temp2)-1);
            
            $temp = $temp2;
          }
          else
            $temp = htmlspecialchars($temp);
          $profile_names[$name] = $temp;
          
          $sql2 .= $name . " = '".str_replace("\'","''",$profile_names[$name])."', ";
        }
        $semaphore++;
      }
      $sql2 = substr($sql2,0,strlen($sql2)-2)."
        WHERE user_id = ".$userdata['user_id'];
      if(!$db->sql_query($sql2) && ($semaphore))
        message_die(GENERAL_ERROR,'Could not update custom profile fields','',__LINE__,__FILE__,$sql2);
			//
			// END Custom Profile Fields MOD
			//
и

Код: Выделить всё

// admin_users.php
				//
  			// Custom Profile Fields MOD
  			//
        $profile_data = get_fields();
        $profile_names = array();
        $semaphore = 0;
        $sql2 = "UPDATE " . USERS_TABLE . "
            SET ";
        foreach($profile_data as $fields)
        {
          $name = text_to_column($fields['field_name']);
          $type = $fields['field_type'];
          $required = $fields['is_required'] == REQUIRED ? true : false;
          
          $temp = (isset($HTTP_POST_VARS[$name])) ? $HTTP_POST_VARS[$name] : array();
          if($type == CHECKBOX)
          {
            $temp2 = '';
            foreach($temp as $temp3)
              $temp2 .= htmlspecialchars($temp3) . ',';
            $temp2 = substr($temp2,0,strlen($temp2)-1);
            
            $temp = $temp2;
          }
          else
            $temp = htmlspecialchars($temp);
          $profile_names[$name] = $temp;
          
          $sql2 .= $name . " = '".str_replace("\'","''",$profile_names[$name])."', ";
          $semaphore++;
        }
        $sql2 = substr($sql2,0,strlen($sql2)-2)."
          WHERE user_id = ".$this_userdata['user_id'];
        if(!$db->sql_query($sql2) && ($semaphore))
          message_die(GENERAL_ERROR,'Could not update custom profile fields','',__LINE__,__FILE__,$sql2);
  			//
  			// END Custom Profile Fields MOD
  			//
Видны большие различия. Скорее всего в этом и кроется ошибка...

Добавлено спустя 4 минуты 26 секунд:
Lstasss писал(а):а да, если кому интересно - под свои надобности мод подогнал
А озвучить список изменений?

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 14 лет 1 месяц
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Сообщение Палыч »

А вот авторский

Код: Выделить всё

##############################################################
## MOD Title: Custom Profile Fields
## MOD Author: aboyd < n/a > (Tony Boyd) http://www.outshine.com/
## MOD Author: Blankety Blank Man < n/a > (Brian Shields) n/a
## MOD Description: Enables admins to add custom fields to the profile.
## MOD Version: 1.2.0

удалено

Последний раз редактировалось Палыч 04.02.2007 23:56, всего редактировалось 1 раз.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Steuer
phpBB 1.2.0
Сообщения: 10
Стаж: 13 лет 6 месяцев
Откуда: Россия, МО, г. Пушкино

Сообщение Steuer »

... а дальше:

Код: Выделить всё

 удалено 

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 14 лет 1 месяц
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Сообщение Палыч »

Steuer
Да ты прав... И даже дважды...
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Lstasss
phpBB 1.4.4
Сообщения: 166
Стаж: 13 лет 9 месяцев
Откуда: Варшава (Польша) / Кишинёв (Молдова)

Сообщение Lstasss »

Steuer, список изменений прост, и повторить это просто :).
Добавить в таблицу _profile_fields 2 ячейки, одна из них - адрес рисунка, вторая - статус-скрипт (как для ICQ или Skype), на данный момент не используется.
Добавить в шаблон viewtopic_body.tpl метку перед рисунком для ICQ
"Обработать" немного viewtopic.php, думаю, поймёте, как и зачем :D
обожаю строку "EoM" :D
http://nepopsisty.net/forum.php - форум НЕпопсистов :twisted:

zelk
phpBB 1.4.0
Сообщения: 30
Стаж: 13 лет 9 месяцев

Сообщение zelk »

1. Проблема в админке, когда редактируешь данные пользователей.

Выдает такую ошибку:
"Warning: htmlspecialchars() expects parameter 1 to be string, array given in /home/weisman/pretkor.com/html/forum/admin/admin_users.php on line 455

Warning: htmlspecialchars() expects parameter 1 to be string, array given in /home/weisman/pretkor.com/html/forum/admin/admin_users.php on line 455

Warning: htmlspecialchars() expects parameter 1 to be string, array given in /home/weisman/pretkor.com/html/forum/admin/admin_users.php on line 455"

Данная строка в файле относиться к моду "кустом профил файлд версии 1.2.0" Когда её комментируешь ошибка больше не выскакивает и мод сам работет нормально.

Но одновременно с этой проблемой сдесь возникает и вторая - при обновлении данных выходит сообщение "Вы должны заполнить обязательные поля" -их заполняешь все в том числе и пароль повторяешь снова, обновление данных не сохраняет а это обращение выскакивает вновь.

Вопрос в чем может быть трабл, точнее где, чтоб поправить.[/i]

Lstasss
phpBB 1.4.4
Сообщения: 166
Стаж: 13 лет 9 месяцев
Откуда: Варшава (Польша) / Кишинёв (Молдова)

Сообщение Lstasss »

zelk, мне кажется, что этот мод требует ОЧЕНЬ существенной доработки, может, Xpert смог бы этим заняться? :)
обожаю строку "EoM" :D
http://nepopsisty.net/forum.php - форум НЕпопсистов :twisted:

zelk
phpBB 1.4.0
Сообщения: 30
Стаж: 13 лет 9 месяцев

Сообщение zelk »

Lstasss

это я уже заметил, даже не смотря на мой косяк в admin_users.php, где я по невнимательности забыл вставить целый кусок кода этого мода. Ошибка со строкой в 2-х местах кода осталась (у меня это 455 и 886).
Ошибка пока убирается комментированием строки, но пока не понял как это влияет в целом на работу форума.
С другом разбирались, но пока проблему не решили.

Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 15 лет 1 месяц
Откуда: Moscow

Сообщение Iftin »

Lstasss писал(а):а да, если кому интересно - под свои надобности мод подогнал, могу поделиться (завершенным кодом)
где код? :roll:

Аватара пользователя
severnet
phpBB 2.0.5
Сообщения: 490
Стаж: 15 лет 7 месяцев
Откуда: Санкт-Петербург

Сообщение severnet »

Гуру, если задействовать текстовую область, ввести туда код с тегами, то они не работают. Кто-нибудь подскажите, как это изменить.. :wink:

Сейчас вот так:

Изображение

планируется:

Изображение

Вернуться в «Поддержка модов для phpBB 2.0.x»