can_mod

Автор Kira, 10 апреля 2018, 10:04:39

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Kira

Есть своя ?action, хочу, чтоб модераторы форума стали модераторами и там.

Правильно ли я делаю?

Прописываю в первых строчках /sources/my_action.php
if(in_array(2, $user_info['groups'])){
$context['user']['can_mod']=true;
}

Какая в этом случае будет зона действия у $context['user']['can_mod']?

GeorG

#1
ЦитироватьКакая в этом случае будет зона действия у $context['user']['can_mod']?
Это будет означать, что если пользователь является глобальным модератором, то там где этот код отработает, он сможет видеть кнопку модераторского центра (которую он и так видит, и это определяется в файле Load.php), если нет, то ничего не произойдет (он её по прежнему будет видеть). Т.е., данная конструкция решёна всякого практического смысла.

Чтобы придать этому коду хоть какой-то смысл (пусть даже и ненужный) его нужно изменить так:
if(in_array(0, $user_info['groups'])){
 $context['user']['can_mod']=true;
}
В этом случае простой пользователь тоже сможет видеть кнопку Модерация в главном меню (но только кнопку, при клике на неё будет выдавать предупреждение, об отсутствии прав доступа в центр модерации).

Или так:
if(in_array(2, $user_info['groups'])){
$context['user']['can_mod']=false;
}
Тут уже смысла больше, это скроет кнопку от глобального модератора там, где сработает код (отключит только кнопку, но не доступ в центр модерации).
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Kira

Спасибо. Получается, can_mod отвечает за показ кнопки в меню? А у админа она false потому, что в случае с админом её бессмысленно ставить true?

Задача немного другая. Я в начале её определяю true для модераторов, а затем далее использую её, чтобы проверить, является ли  пользователь модератором, не подгружая $user_info. То есть правильно не трогать can_mod, а завести новую переменную, например так?
global $user_info, $context;
if(in_array(2, $user_info['groups'])){
 $context['user_is_moder']=true;
}

другой файл
global $context;
if($context['user_is_moder']){
 ..действие, разрешённое только модератору..
}
...

или просто уже в коде
global $user_info;
if(in_array(2, $user_info['groups'])){
 ..действие, разрешённое только модератору..
}
?

GeorG

Цитата: Kira от 14 апреля 2018, 00:28:45Получается, can_mod отвечает за показ кнопки в меню?
В основном да.

Цитата: Kira от 14 апреля 2018, 00:28:45А у админа она false потому, что в случае с админом её бессмысленно ставить true?
Админу по умолчанию всё разрешено на форуме.


Цитироватьа завести новую переменную
Да, а вот как именно и где, зависит от ситуации, а так, оба варианта будут работать.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru