Добавление переключателей в UCP

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.

Добавление переключателей в UCP

Сообщение Alek$ 29.03.2008 21:51

Возникла такая задача: надо в UCP добавить несколько переключателей, которые будут регулировать работу мода, т. е. по усмотрению пользователя включать/выключать его части.

Однако мне не совсем ясно, как это реализуется. Можно, конечно, по-старинке добавить в таблицу пользователей новые колонки по числу переключателей, создать новый модуль для UCP и работать с ними, однако, насколько я понял, в phpBB3 это не приветствуется.
Хочу спросить у тех, кто сталкивался с такой задачей, есть ли какой-нибудь более изящный подход к делу или нету?

Выяснил, что в таблице пользователей имеется поле user_options и создатели модов им как-то манипулируют. Но в чем именно заключается высший смысл этого поля я все равно не понял :(
Useful links: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.


Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB 3.0.2 с предустановленной русификацией
Аватара пользователя
Alek$
Модератор
Модератор
 
Сообщения: 1532
Зарегистрирован: 03.08.2005 13:46
Откуда: Новосибирск

Сообщение rxu 29.03.2008 21:57

Alek$
user_options представляет собой интегральное значение, получаемое путем присвоения значений отдельным битам. Т.е. используются битовые операции (реализовано в функциях optionget/optionset, например, в session.php, а также в установочном скрипте мода БО). Нужны будут подробности - обращайся ;)
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4319
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение Alek$ 30.03.2008 10:13

rxu
Подробности будут нелишними :)
В частности, регламентируется ли где-нибудь, какие биты уже заняты другими модами или как добавлять туда свои опции, не нарушая совместимости?
Useful links: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.


Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB 3.0.2 с предустановленной русификацией
Аватара пользователя
Alek$
Модератор
Модератор
 
Сообщения: 1532
Зарегистрирован: 03.08.2005 13:46
Откуда: Новосибирск

Сообщение rxu 30.03.2008 10:50

В принципе, можно создать собственное поле в таблице пользователей, например, user_options_alex, и тогда своя рука владыка. Все биты свободны.
Если добавлять в user_options, то идём в session.php и смотрим, что у нас занято
Код: Выделить всё
   // Able to add new option (id 7)
   var $keyoptions = array('viewimg' => 0, 'viewflash' => 1, 'viewsmilies' => 2, 'viewsigs' => 3, 'viewavatars' => 4, 'viewcensors' => 5, 'attachsig' => 6, 'bbcode' => 8, 'smilies' => 9, 'popuppm' => 10);

Свободные места - 7 и после 10-ти. Поле user_options - 11-значное целое без знака, целые числа в PHP 32-х битные, если я правильно помню. Отсюда и пляшем в плане имеющихся ограничений.
Как перевести двоичное число в десятичное для проверки пояснять тебе, я думаю, не надо ;)
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4319
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение Alek$ 30.03.2008 11:11

rxu писал(а):Свободные места - 7 и после 10-ти.

Это я понял. В том-то и вопрос, что я, допустим, занял место 11 и еще какой-то абстрактный модописатель, никогда не слышавший ни обо мне, ни о моем моде, тоже выберет для своего мода место 11. В результате, человек установивший оба мода получит конфликт 8) А я хочу это избежать.
rxu писал(а):можно создать собственное поле в таблице пользователей, например, user_options_alex

Тоже вариант, возьму на заметку :)

Кстати, за примером далеко ходить не надо - в твоем быстром ответе ты используешь 11-й и 12-й биты, а я, если бы не обратил на это внимания, занял бы с 11 по 15-й и мы бы получили конфликт.

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

Попробую задать тот же вопрос на оффсайте, посмотрим, что мне ответят "из первых рук"
Useful links: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.


Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB 3.0.2 с предустановленной русификацией
Аватара пользователя
Alek$
Модератор
Модератор
 
Сообщения: 1532
Зарегистрирован: 03.08.2005 13:46
Откуда: Новосибирск

Сообщение rxu 30.03.2008 11:13

Боюсь, что избежать таких конфликтов, используя одно и то же поле, невозможно в принципе :)
Человеческий фактор полностью исключить невозможно.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4319
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение Alek$ 30.03.2008 11:20

rxu
вот и я так думаю. Тем более, что если каждый мод будет использовать по два-три бита для своих настроек, то возникнет ограничение на количество устанавливаемых модов.

Кстати, возможно, тебе стоит пересмотреть эту часть своего мода и вынести настройки в отдельное поле...
Useful links: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.


Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB 3.0.2 с предустановленной русификацией
Аватара пользователя
Alek$
Модератор
Модератор
 
Сообщения: 1532
Зарегистрирован: 03.08.2005 13:46
Откуда: Новосибирск

Сообщение rxu 30.03.2008 11:52

Уже думаю над этим :)
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4319
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение Alek$ 31.03.2008 12:37

В общем, на офсайте A_Jelly_Doughnut ответил мне, что лучше создавать дополнительную колонку :)
Так и поступим 8)
Useful links: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.


Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB 3.0.2 с предустановленной русификацией
Аватара пользователя
Alek$
Модератор
Модератор
 
Сообщения: 1532
Зарегистрирован: 03.08.2005 13:46
Откуда: Новосибирск


Вернуться в Для авторов (phpBB 3.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0