МОД Custom Profile Fields

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

МОД Custom Profile Fields

Сообщение Lstasss » 23.12.2006 12:16

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

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

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

Alexalexis
phpBB 1.4.4
Сообщения: 183
Зарегистрирован: 03.01.2007 3:01

Сообщение Alexalexis » 28.01.2007 19:28

В нём ошибка.

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

#
#-----[ 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
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза
Контактная информация:

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

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
Зарегистрирован: 27.12.2006 0:18
Откуда: Россия, МО, г. Пушкино

Сообщение Steuer » 04.02.2007 23:09

На локальной машине поставил для теста мод 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
Зарегистрирован: 27.09.2006 22:08
Откуда: Варшава (Польша) / Кишинёв (Молдова)
Контактная информация:

Сообщение Lstasss » 04.02.2007 23:27

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

$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
Зарегистрирован: 27.12.2006 0:18
Откуда: Россия, МО, г. Пушкино

Сообщение Steuer » 04.02.2007 23:36

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

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

// 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
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза
Контактная информация:

Сообщение Палыч » 04.02.2007 23:46

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

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

##############################################################
## 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
Зарегистрирован: 27.12.2006 0:18
Откуда: Россия, МО, г. Пушкино

Сообщение Steuer » 04.02.2007 23:49

... а дальше:

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

 удалено 

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза
Контактная информация:

Сообщение Палыч » 04.02.2007 23:55

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

Lstasss
phpBB 1.4.4
Сообщения: 166
Зарегистрирован: 27.09.2006 22:08
Откуда: Варшава (Польша) / Кишинёв (Молдова)
Контактная информация:

Сообщение Lstasss » 05.02.2007 0:14

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
Зарегистрирован: 29.09.2006 1:20

Сообщение zelk » 07.02.2007 13:39

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
Зарегистрирован: 27.09.2006 22:08
Откуда: Варшава (Польша) / Кишинёв (Молдова)
Контактная информация:

Сообщение Lstasss » 07.02.2007 17:36

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

zelk
phpBB 1.4.0
Сообщения: 30
Зарегистрирован: 29.09.2006 1:20

Сообщение zelk » 08.02.2007 8:11

Lstasss

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

Iftin
phpBB 2.0.7
Сообщения: 573
Зарегистрирован: 11.05.2005 19:40
Откуда: Moscow
Контактная информация:

Сообщение Iftin » 22.02.2007 3:44

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

Аватара пользователя
severnet
phpBB 2.0.5
Сообщения: 490
Зарегистрирован: 23.11.2004 17:00
Откуда: Санкт-Петербург
Контактная информация:

Сообщение severnet » 26.02.2007 1:48

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

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

Изображение

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

Изображение

Закрыто

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