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

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Alek$
Former team member
Сообщения: 2616
Стаж: 21 год 1 месяц
Откуда: Новосибирск
Поблагодарили: 37 раз

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

Сообщение Alek$ »

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

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

Выяснил, что в таблице пользователей имеется поле user_options и создатели модов им как-то манипулируют. Но в чем именно заключается высший смысл этого поля я все равно не понял :(
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Сообщение rxu »

Alek$
user_options представляет собой интегральное значение, получаемое путем присвоения значений отдельным битам. Т.е. используются битовые операции (реализовано в функциях optionget/optionset, например, в session.php, а также в установочном скрипте мода БО). Нужны будут подробности - обращайся ;)
Изображение
Аватара пользователя
Alek$
Former team member
Сообщения: 2616
Стаж: 21 год 1 месяц
Откуда: Новосибирск
Поблагодарили: 37 раз

Сообщение Alek$ »

rxu
Подробности будут нелишними :)
В частности, регламентируется ли где-нибудь, какие биты уже заняты другими модами или как добавлять туда свои опции, не нарушая совместимости?
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Сообщение rxu »

В принципе, можно создать собственное поле в таблице пользователей, например, 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-х битные, если я правильно помню. Отсюда и пляшем в плане имеющихся ограничений.
Как перевести двоичное число в десятичное для проверки пояснять тебе, я думаю, не надо ;)
Изображение
Аватара пользователя
Alek$
Former team member
Сообщения: 2616
Стаж: 21 год 1 месяц
Откуда: Новосибирск
Поблагодарили: 37 раз

Сообщение Alek$ »

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

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

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

Попробую задать тот же вопрос на оффсайте, посмотрим, что мне ответят "из первых рук"
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Сообщение rxu »

Боюсь, что избежать таких конфликтов, используя одно и то же поле, невозможно в принципе :)
Человеческий фактор полностью исключить невозможно.
Изображение
Аватара пользователя
Alek$
Former team member
Сообщения: 2616
Стаж: 21 год 1 месяц
Откуда: Новосибирск
Поблагодарили: 37 раз

Сообщение Alek$ »

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

Кстати, возможно, тебе стоит пересмотреть эту часть своего мода и вынести настройки в отдельное поле...
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Сообщение rxu »

Уже думаю над этим :)
Изображение
Аватара пользователя
Alek$
Former team member
Сообщения: 2616
Стаж: 21 год 1 месяц
Откуда: Новосибирск
Поблагодарили: 37 раз

Сообщение Alek$ »

В общем, на офсайте A_Jelly_Doughnut ответил мне, что лучше создавать дополнительную колонку :)
Так и поступим 8)
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

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

Сообщение FladeX »

Что делать, если один мод изменил значение user_options, и следующий мод также предполагает его изменение?
В phpBB 3.0.2 по умолчанию используется:

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

		'user_options'		=> 895,
Установка мода Quick Reply предполагает замену исходной строки на такую

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

		'user_options'		=> 2943,
Установка мода Welcome PM on First Login предполагает другую замену исходной строки на следующую строчку:

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

		'user_options'		=> 1919,
Теперь объясните мне, как на основе этого посчитать результирующее значение?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

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

Сообщение rxu »

А что мод Welcome PM on First Login добавляет в массив $keyoptions?
Изображение
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

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

Сообщение FladeX »

session.php там вообще не редактируется :?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

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

Сообщение rxu »

Тогда тем более непонятно. Вообще, самыё лучший расчетчик - это сам phpBB3. Устанавливаете в собственном профиле настройки отображения так, как это нужно чтобы было при регистрации пользователей по умолчанию, затем смотрите в таблице пользователей в БД значение поля user_options для своей учетной записи. Это оно и будет.
Была идея сделать отдельный скрипт для расчета, но пока руки не дошли. Вкратце, основа - функции optionget и optionset.
Изображение
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

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

Сообщение FladeX »

Спасибо. Знать бы только, что именно этот мод изменяет в настройках профиля. Приватные сообщения и так по умолчанию включены... :roll:
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

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

Сообщение rxu »

Что-то я в инструкции по установке этого мода не вижу подобной инструкции (версия 1.0.0).
Изображение

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