Домой Каталог: Дополнения WP-Recall PrimeForum Как назначить несколько ролей?
9ответ(ов) в теме
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
1
20:16
Версия WP-Recall: 16.17.2
Версия дополнения: 1.5.0

Мне нужно, чтобы на одном форуме пользователь мог писать сообщения, а на другом нет (только читать). Сейчас это невозможно.
 
Для того чтобы это оказалось возможным, нужно задать пользователю сразу несколько ролей, например, "читатель" и "писатель", чтобы потом их можно было выбрать галочкой на конкретном форуме.
 
Такая возможность существует в ворпрессе. Можно ли активировать множественный выбор в праймфоруме?
 

0
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
2
20:23

Или например такая идея. Можно сохранить за всеми пользователями роль гость. Тогда у каждого пользователя всегда будет две роли, например: гость и участник, гость и подписчик...
 
В этом случае проблема отпадет сама собой.

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
3
20:28

Здравствуйте.

Pafnuty сказал(а)
Такая возможность существует в ворпрессе

Ваш скриншот к вордпрессу отношения не имеет

Вы не можете просматривать опубликованные ссылки

Это добавляет какой-то сторонний плагин. А значит что это было кем то дополнительно написано т.к. движок позволяет назначить только одну роль. А по умолчанию ВП не умеет чтоб и царь и жнец и швец и на дуде..

Все что есть для форума можно найти в этом разделе

Вы не можете просматривать опубликованные ссылки

Но мне кажется готового решения нет.

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
4
20:29

такой возможности нет

0
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
5
20:57

Otshelnik-Fm сказал(а)
Здравствуйте.

Pafnuty сказал(а)
Такая возможность существует в ворпрессе

Ваш скриншот к вордпрессу отношения не имеет

Вы не можете просматривать опубликованные ссылки

Это добавляет какой-то сторонний плагин. А значит что это было кем то дополнительно написано т.к. движок позволяет назначить только одну роль. А по умолчанию ВП не умеет чтоб и царь и жнец и швец и на дуде..

0
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
6
21:04

Андрей CS сказал(а)
такой возможности нет

 
Можно ли тогда выбранный форум разрешить читать всем вне зависимости от допуска?
 
По-моему это хорошая идея. Вы можете в следующих версиях добавить такую галочку к каждому форуму, никто против не будет. Тем более что сейчас гостя все равно можно допустить в любой форум, и получается странная вещь, что если я кого-то не допущу на форум он все равно сможет туда попасть просто разлогинившись.

0
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
7
21:21

Даже не надо отдельную галку добавлять. Просто при допуске гостя автоматом разрешать читать форум всем

0
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
8
22:13

Привожу код, запрещающий избранным ролям публиковаться в отдельных форумах. Вход на форума остается для всех свободным, но зато писать сообщения и открывать темы они не могут.

/**
 * Разрешает доступ на закрытый форум всем ролям 
 * если включена галка Гость
 * Заимствовано из файла index.php в папке prime-role-access
 */
add_filter('pfm_check_forum_errors','idblr_check_access_global_view',5, 2);
function idblr_check_access_global_view($errors, $data){
	
	$GLOBALS['guestrole'] = false;
	
    if(!$data->is_forum && !$data->is_topic) return $errors;
    
    $forum_id = $data->object->forum_id;
    
    $roleAccess = pfm_get_meta($forum_id,'forum','role_access');
    
    if(!$roleAccess) return $errors;
    
    $PrimeUser_ = new PrimeUser();
	
    global $PrimeUser;
	
    //if(!in_array($PrimeUser->user_role, $roleAccess))
    //    $errors['error'][] = __('Приватный форум. Вам запрещено просматривать содержимое этого форума.');
    
	$guestfound = in_array('guest', $roleAccess);
	$selffound = in_array($PrimeUser_->user_role, $roleAccess);
			
	if($guestfound && !$selffound) {
		$PrimeUser->user_role = 'guest';
		$PrimeUser_->user_role = 'guest';
	$GLOBALS['guestrole'] = true;
		}
		
	
    return $errors;
}



/**
 * Отключает текстовый редактор и выдает предупреждение
 * об ограничении возможности оставлять сообщения
 */
add_filter('pfm_is_can','idblr_is_can',10,2);
function idblr_is_can($att, $action){
	
	global $PrimeQuery; 
	
	if( !('post_create'===$action || 'topic_create'===$action) || !($PrimeQuery->is_forum || $PrimeQuery->is_topic) ) return $att;
	
	//vardump($GLOBALS['guestrole']);
		
	if( $GLOBALS['guestrole'] ) return 0;
	
	return $att;
}

Код работает совместно c дополнениями

Вы не можете просматривать опубликованные ссылки

и

Вы не можете просматривать опубликованные ссылки
0
Pafnuty
не в сети 5 лет
На сайте с 05.01.2019
Участник
Тем 6
Сообщения 47
9
22:18

Доступ для всех ролей активируется по нажатию галки Гость

0
Тема закрыта. Публикация новых сообщений запрещена.