Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Права доступа к просмотру профилей, к поиску и пр. для групп

Форум для авторов модов для phpBB 2.0.x.
dnk
phpBB 2.0.4
Сообщения: 431
Стаж: 17 лет 8 месяцев
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Права доступа к просмотру профилей, к поиску и пр. для групп

Сообщение dnk »

Пока еще выходит и дорабатывается phpbb 3, где это уже есть, мне захотелось сделать такую функцию на ныне используемом phpbb 2
Суть: Произвести модификацию кода движка так, чтобы через админку можно было задавать конкретным группам право на просмотр:

а) Профилей участников
б) Право пользования поиском
в) Списка участников
г) Списка групп
д) Списка администрации (Staff site mod)

Ниже привожу мод, основанный на моде Manage guest permissions
См. вложение:

В чем проблема: даже несмотря на то, что в базе по указанным полям устанавливаются нули (отключаю просмотр для конкретной группы), все равно просмотр остается разрешенным.
Как мне кажется нужно в коде

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

$group_profile_yes = ( $group_info['group_profile'] ) ? "checked=\"checked\"" : "";
вместо переменной $group_info указывать переменную $group_list и ее же указать в скриптах memberlist.php, serach.php и остальных

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

if ( $group_list['group_memberlist'] = 0 )
{

	message_die(GENERAL_MESSAGE, $lang['only_members_memberlist']);
    exit;
}

Помогите разобраться
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось dnk 30.07.2007 18:40, всего редактировалось 2 раза.
dnk
phpBB 2.0.4
Сообщения: 431
Стаж: 17 лет 8 месяцев
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Сообщение dnk »

Может кто-нибудь помочь?
Аватара пользователя
chipp
phpBB 1.4.3
Сообщения: 89
Стаж: 17 лет 1 месяц
Откуда: Беларусь, Минск

Сообщение chipp »

dnk п.3.5 правил
Хочешь задать вопрос? Подумай! Может его уже задавали? Поиск жжет! И еще: если ошибка на буржуйском, на то есть словарь:!:
dnk
phpBB 2.0.4
Сообщения: 431
Стаж: 17 лет 8 месяцев
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Сообщение dnk »

chipp
...в течении 5 суток с момента последнего ответа в тему
- последнее сообщение было 30 июля.Лучше бы помогли решением проблемы.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

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

chipp
Вот, совершенно не к месту.
А для вас, в данном случае, скорее 2.9 :evil:

dnk
Ну так сами попробуйте ваш же рецепт и убедитесь.
Судя по приведённому коду, по-моему, вы правы.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
dnk
phpBB 2.0.4
Сообщения: 431
Стаж: 17 лет 8 месяцев
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Сообщение dnk »

Палыч
Нет, не работает у меня он.
В admin_groups.php можно ставить только код

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

 $group_info
, так как

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

 $group_list
работать не будет - это раз.
Во-вторых, даже если в скриптах типа memberlist.php или staff.php указываю
такое:

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

if ( !$group_info['group_staff'] || !$board_config['guest_staff'])
{
 if( !$userdata['session_logged_in'])
  {
	 message_die(GENERAL_MESSAGE, $lang['only_members_staff']);
    exit;
}	
}
или такое:

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

if ( $group_info['group_staff'] == 0 || !$board_config['guest_staff'])
{
 if( !$userdata['session_logged_in'])
  {
	 message_die(GENERAL_MESSAGE, $lang['only_members_staff']);
    exit;
}	
}
или такое:

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

if ( $group_info['group_staff'] = 0 || !$board_config['guest_staff'])
{
 if( !$userdata['session_logged_in'])
  {
	 message_die(GENERAL_MESSAGE, $lang['only_members_staff']);
    exit;
}	
}
Аналогично, если взять и заменить

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

$group_info
на

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

$group_list
в скриптах staff.php и др. - тоже не проходит...

Добавлено спустя 1 час 23 минуты 58 секунд:

В скрипте staff.php перед

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

if ( !$group_list['group_staff'] || !$board_config['guest_staff'])
{
 if( !$userdata['session_logged_in'])
  {
	 message_die(GENERAL_MESSAGE, $lang['only_members_staff']);
    exit;
}	
}
я вставил

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

$sql = "SELECT g.group_staff FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ug.user_id = $userdata['user_id'] AND g.group_id = ug.group_id"; 
   if ( !($result = $db->sql_query($sql)) ) 
   { 
      message_die(GENERAL_ERROR, 'Error getting user information', '', __LINE__, __FILE__, $sql); 
   }
и мне выдало:

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

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in ....\www\forums\staff.php on line 19
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

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

В синтаксе ошибка

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

	$user_id = $userdata['user_id'];
	$sql = "SELECT g.group_staff FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ug.user_id = $user_id AND g.group_id = ug.group_id"; 
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user information', '', __LINE__, __FILE__, $sql);
	}
Но это просто пример, идея должна быть аналогичной, но более приемлимой
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
dnk
phpBB 2.0.4
Сообщения: 431
Стаж: 17 лет 8 месяцев
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Сообщение dnk »

Палыч

Подставил исправленное - все равно не работает.
Что-то еще где-то значит.

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