В этой статье мы расскажем как установить эти параметры по умолчанию при регистрации новых пользователей
[url=http://www.phpbbguru.net/kb/administration/changing-user-defaults/]Изменение пользовательских настроек, задаваемых по умолчанию[/url]

содержание

 

Введение

Что нужно знать, чтобы начать

Изменение параметров, которые определены в отдельных полях

Изменение параметров, которые хранятся в поле user_options

Изменение параметров для отдельных групп или пользователей

Два в степени

 

Введение

 

В phpBB3 пользователи имеют возможность настраивать различные параметры личных настроек в Личном разделе (UCP - Панели управления пользователя). Для каждого из этих параметров установлено значение по умолчанию, которое будет действовать при регистрации новых пользователей, и каждый параметр имеет установленное значение для ранее зарегистрированных пользователей. Эти параметры могут или не могут совпадать со значениями по умолчанию.
В этой статье мы расскажем как установить эти параметры по умолчанию при регистрации новых пользователей и, как изменить установленные ранее значения для уже зарегистрированных пользователей. Обратите внимание, что пользователи по-прежнему смогут изменять эти значения по своему усмотрению, изменяя их на отличные от установленных для них по умолчанию. В этой статье не описано, как сделать эти значения постоянными и неизменными.

Некоторые пользовательские настройки определены в специальных полях таблицы users в базе данных, а другие являются результатом вычисления отдельных битов из значения, которое хранится в поле user_options таблицы users. Поэтому способы изменение разных пользовательских настроек различны, и мы опишем каждый из них ниже.

 

Что нужно знать, чтобы начать

 

  1. Всякий раз, когда вы запускаете запрос к базе данных, сначала сделайте резервную копию таблиц. Все запросы из этой статьи выполняются применительно к таблице users, поэтому сделайте резервную копию этой таблицы.
  2. Для редактирования файлов phpBB, всегда пользуйтесь "правильным" текстовым редактором, который может сохранять файлы в кодировке utf8 без BOM. Список "правильных" редакторов здесь
  3. Все запросы предполагают, что ваши таблицы БД имеют префикс phpbb_ . Если это не так, вы должны изменить phpbb_ в примерах запросов на префикс ваших таблиц. Префикс таблицы можно увидеть в PhpMyAdmin, или подсмотрев значение переменной $table_prefix в файле config.php
  4. Если вы не знаете как выполнить запросы к базе данных, см. Выполнение SQL-запросов в PHPMyAdmin
  5. Условие WHERE user_type <> 2 в образце запросов исключает ботов и гостей из работы запроса.

 

Изменение параметров, которые определены в отдельных полях

 

Некоторые параметры пользовательских настроек, которые пользователи могут установить (те, которые определены в файле includes/functions_user.php) записываются в отдельные поля в таблицы users. К ним относятся:

 

		'user_notify'			=> 0,
		'user_notify_pm'		=> 1,
		'user_notify_type'		=> NOTIFY_EMAIL,
		'user_allow_pm'			=> 1,
		'user_allow_viewonline'	=> 1,
		'user_allow_viewemail'	=> 1,
		'user_allow_massemail'	=> 1,

 "0" означает, что опция выключена, "1" означает, что опция включена. Эти установки действуют по умолчанию и записываются в базу данных при регистрации новых пользователей. Чтобы их изменить, вам необходимо отредактировать файл includes/functions_user.php, и изменить 0 на 1 или наоборот. Чтобы изменить эти параметры для уже зарегистрированных пользователей, необходимо выполнить запрос:

 

 

UPDATE phpbb_users SET user_notify = 1 WHERE user_type <> 2;

Обратите внимание, опция user_notify_type отличается от других вариантов тем, что она может принимать три различных значения, каждому из которых соответствует одно из трех возможных числовых значений, которые определены в файле includes/constants.php. Если вы хотите изменить вариант user_notify_type при регистрации новых пользователей, вы должны отредактировать эти значения в файле includes/functions_user.php, указав NOTIFY_EMAIL (значение 0) либо NOTIFY_IM (значение 1) или NOTIFY_BOTH (значение 2) по вашему выбору. Чтобы изменить вариант user_notify_type для существующих пользователей, например поменять NOTIFY_EMAIL на NOTIFY_IM, необходимо выполнить запрос:

 

UPDATE phpbb_users SET user_notify_type = 1 WHERE user_type <> 2;

 

Этот запрос изменит настройки по умолчанию с NOTIFY_EMAIL, значение которого равно 0, на NOTIFY_IM, значение которого равно 1. Обратите внимание, что этот запрос изменяет значение этой опции на NOTIFY_IM для всех пользователей, даже для тех, кто выбрал для себя NOTIFY_BOTH (значение 2). Если вы хотите исключить пользователей, которые выбрали NOTIFY_BOTH и изменить только у тех пользователей, для которых установлено значение по умолчанию NOTIFY_EMAIL, то запрос должен выглядеть так:

 

UPDATE phpbb_users SET user_notify_type = 1 WHERE user_type <> 2 AND user_notify_type != 2;

Изменение параметров, которые хранятся в поле user_options

 

 

Некоторые пользовательские настройки, которые пользователи могут изменять, являются результатом сложений вариаций возведения числа 2 в некоторую степень (двоичный код), и хранятся в поле user_options таблицы users как единое целое число. К ним относятся:

 

 

'viewimg'		=> array('bit' => 0, 'default' => 1),
'viewflash' 	=> array('bit' => 1, 'default' => 1),
'viewsmilies' 	=> array('bit' => 2, 'default' => 1),
'viewsigs' 		=> array('bit' => 3, 'default' => 1),
'viewavatars' 	=> array('bit' => 4, 'default' => 1),
'viewcensors' 	=> array('bit' => 5, 'default' => 1),
'attachsig' 	=> array('bit' => 6, 'default' => 1),
'bbcode' 		=> array('bit' => 8, 'default' => 1),
'smilies' 		=> array('bit' => 9, 'default' => 1),
'popuppm' 		=> array('bit' => 10, 'default' => 0),
'sig_bbcode' 	=> array('bit' => 15, 'default' => 1),
'sig_smilies' 	=> array('bit' => 16, 'default' => 1),
'sig_links' 	=> array('bit' => 17, 'default' => 1),

Как отсюда можно заметить, это число в двоичном формате выглядит так: 111000001101111111
Эти значения, установленные по умолчанию таким образом, генерируют общую сумму различных степеней числа 2, которая записана в файле в includes/functions_user.php и равняется 230271:

 

		'user_options'		=> 230271,

Чтобы изменить настройки по умолчанию при регистрации новых пользователей, вы должны изменить значение 230271 в файле в includes/functions_user.php. Например, если вы хотите, чтобы viewsigs был выключен (0) по умолчанию, а viewimg включен (1), вы должны вычесть 8 (2 ^ 3 = 2 в степени 3), потому что значение viewsigs записано в бите номер 3, то есть это третий бит двоичного представления числа user_options, и прибавить 1 (2 ^ 0 = 2 в степени 0), так как значение viewimg записывается в нулевом бите. Таким образом, вам необходимо изменить значение user_options в файле includes/functions_user.php на 230 264 (230 271 -8 +1).
Таблица возведения числа 2 в степень приводится в конце этой статьи.

Чтобы изменить значения опции с 0 на 1 для уже существующих пользователей, нужно использовать запрос с побитовым оператором OR (|), изменяющий бит или биты в поле user_options таблицы users. То есть, необходимо рассчитать значение числа 2, возведенного в степень, соответствующую номеру бита (или же иными словами номеру опции, например у опции attachsig номер бита 6: 'attachsig' => array('bit' => 6) . Значение для viewimg будет равно единице, потому что номер его бита равен 0 и 2 в степени 0 = 1.

Например, такой запрос изменил бы значение viewimg с выключено на включено путем добавления соответствующего значения, если оно еще не включено в общую сумму user_options для каждого пользователя:

 

UPDATE phpbb_users set user_options = user_options | 1 WHERE user_type <> 2;

Для изменения значений опций с 1 на 0 для существующих пользователей, нужно использовать запрос с использованием оператора побитового XOR (^) и побитового оператора AND (&), изменяющих бит или биты в поле user_options. Это вычтет соответствующие значения из суммы user_options, если они уже включены в эту сумму для каждого пользователя. Например, этот запрос изменит значение viewsigs с включено на выключено. Здесь используется значение 8, поскольку номер бита для viewsigs равен 3, и 2 в степени 3 = 8.

 

UPDATE phpbb_users SET user_options = (user_options & 8) ^ user_options WHERE user_type <> 2;

 

Изменение параметров для отдельных групп или пользователей

 

 

Обратите внимание, что вы также можете изменить параметры для конкретного пользователя или пользователей, в частности группы. Однако вы можете делать это только для уже существующих пользователей, а не для будущих (без каких-либо модификаций). Например, этот запрос будет менять значение user_allow_pm с включено на выключено для пользователей, входящих в группу «Вновь зарегистрированные». Предполагается, что group_id для этой группы равно 7 (по умолчанию).

 

UPDATE phpbb_users SET user_allow_pm = 0 WHERE user_id IN(SELECT user_id FROM phpbb_user_group WHERE group_id = 7);

Этот запрос изменит значение опции viewflash с включено на выключено для пользователей, которые не имеют подписи:

 

UPDATE phpbb_users SET user_options = (user_options & 2) ^ user_options WHERE user_sig = '';

 

 

Два в степени

 

2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32
2 ^ 6 = 64
2 ^ 7 = 128 (В phpBB3 не используется, зарезервировано)
2 ^ 8 = 256
2 ^ 9 = 512
2 ^ 10 = 1024
2 ^ 11 = 2048 (В phpBB3 не используется, зарезервировано)
2 ^ 12 = 4096 (В phpBB3 не используется, зарезервировано)
2 ^ 13 = 8192 (В phpBB3 не используется, зарезервировано)
2 ^ 14 = 16384 (В phpBB3 не используется, зарезервировано)
2 ^ 15 = 32768
2 ^ 16 = 65536
2 ^ 17 = 131072

Значение user_options – это восемнадцатибитное двоичное число, записанное в десятичном формате.
230271 в двоичной форме выглядит так:
111000001101111111
Преобразовать это число в десятичный формат достаточно просто:
Биты считаются справа налево, то есть начинаем с конца. Там где бит установлен (1), возводим 2 в степень, равную номеру бита, там где снят (0) - ноль, итак:
2^0+2^1+2^2+2^3+2^4+2^5+2^6+0+2^8+2^9+0+0+0+0+0+2^15+2^16+2^17=

1+2+4+8+16+32+64+0+256+512+0+0+0+0+0+32768+65536+131072

 

 

Удобный калькулятор

Оригинал статьи

Joomla SEF URLs by Artio