Как запретить пользователю добавлять сообщения?

Идеи для расширения функциональности phpBB 2.0.x
Федот

Как запретить пользователю добавлять сообщения?

Сообщение Федот »

Здраствуйте.
Возможно ли как-нибуть запретить пользователю добавлять сообщения, вто время как просматривать он их смог бы? Так называемый Read Only. А то обычный бан это всё-таки грубо уж слишком =(

Зарание спасибо!
Аватара пользователя
Romiyo
Неадекватен
Сообщения: 603
Зарегистрирован: 20 лет 4 месяца
Откуда: tln.ee

Сообщение Romiyo »

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

############################################################## 
## MOD Titlr: Special ban system
## MOD Author: emrag < emrah987@hotmail.com > (Emrah Tьrkmen)  www.canver.net
## MOD Description: This hack add a new field in user management to Special admin-only fields
##		    "user can post".(see the screenshots)If in a user profile you select "NO"
##		    user can login forum but can not post any topic, reply or he/she can not
##		    edit his/her old messages.Only can see the posts and can check, get or send
##		    private messages the others this hack will be very useful to warn users ;)
##############################################################
phpbbhacks.com -> Disable Posting By User
Неадекватен
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Romiyo
Я не нашел :)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Romiyo
Неадекватен
Сообщения: 603
Зарегистрирован: 20 лет 4 месяца
Откуда: tln.ee

Сообщение Romiyo »

Xpert писал(а):Я не нашел
:shock: Я ж дал ссылку
Неадекватен
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Я по названию из шапки искал. :)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5426
Зарегистрирован: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

Сообщение Siava »

Как вариант, можно использовать Jail Mod, если надо сделать ограничение на время =)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Romiyo
Неадекватен
Сообщения: 603
Зарегистрирован: 20 лет 4 месяца
Откуда: tln.ee

Сообщение Romiyo »

В догонку локализация к Disable Posting By User (не пинайте, переводил давно и хз кому)

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

#
# --- [ ОТКРЫТЬ ] ---
#
language/lang_english/lang_russian.php

#
# --- [ НАЙТИ ] ---
#
?>

#
# --- [ ДОБАВИТЬ, ПЕРЕД ] ---
#
$lang['User_can_post'] = 'Может писать сообщения';
$lang['Ban'] = 'Извините, вы не можете создавать темы; отправлять и редактировать свои сообщения. Причина: <b>нарушение правил</b>.<br /><br />Вы можете проверять, получать и отправлять Личные Сообщения.'; 
Неадекватен
Аватара пользователя
avm
Former team member
Сообщения: 582
Зарегистрирован: 20 лет 3 месяца
Откуда: Москва

Сообщение avm »

А не лучше присвоить права на постинг и т.д. определенной закрытой группе. Всех юзеров туда включать автоматически (можно сразу при регистрации, а можно при проявлении интеллекта в ЛС ;) И если нужно сделать кого-то "read only" просто выкидываем юзера из группы.
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Федот

Сообщение Федот »

Огромное спасибо!!!
Всем =))
OMus-VeNuS

Сообщение OMus-VeNuS »

Как подружить с быстрым ответом? Чтоб он не показывался только если юзеру мона было писать сообщения ;)
Аватара пользователя
Romiyo
Неадекватен
Сообщения: 603
Зарегистрирован: 20 лет 4 месяца
Откуда: tln.ee

Сообщение Romiyo »

avm писал(а):А не лучше присвоить права на постинг и т.д.
если сабж относится ко всем пользователям, то, может и лучше, но никак не для одного пользователя. Из-за одного дауна перелопачивать админку?..
OMus-VeNuS писал(а):Как подружить с быстрым ответом?
Автору мода в ЛС кинуть ссылку на эту тему.
Неадекватен
OMus-VeNuS

Сообщение OMus-VeNuS »

где ж его найти-то... автора...
Тут запросы если не ошибаюсь? ;)
Запрос на создание ADD-ON'а =))) сделайте плиииз
NCom
phpBB 2.0.11
Сообщения: 810
Зарегистрирован: 19 лет 3 месяца
Откуда: Ставрополь
Забанен: Бессрочно

Сообщение NCom »

А возможно ли добавить такую функцию модераторам? То есть, что бы модераторы могли запрещать пользователям писать сообщения или личные сообщения.
Brun
phpBB 1.0.0
Сообщения: 1
Зарегистрирован: 19 лет 3 месяца

Сообщение Brun »

А как быть в такой ситуации:
постить в теме могут только члены группы и автор темы?

Заранее спасибо.
Аватара пользователя
Carbofos
phpBB 1.4.4
Сообщения: 158
Зарегистрирован: 20 лет 1 месяц

Сообщение Carbofos »

посмотрел мод phpbbhacks.com -> Disable Posting By User... предлагаю схему одновременно попроще и получше:

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

#
#-----[ SQL ]------------------------------------------ 
# 
ALTER TABLE phpbb_users ADD user_allow_post TINYINT(1) default '1';
#
#----[ OPEN ]------------------------------------------ 
#
admin/admin_users.php
#
#----[ FIND ]------------------------------------------ 
#
		$user_status = ( !empty($HTTP_POST_VARS['user_status']) ) ? intval( $HTTP_POST_VARS['user_status'] ) : 0;
		$user_allowpm = ( !empty($HTTP_POST_VARS['user_allowpm']) ) ? intval( $HTTP_POST_VARS['user_allowpm'] ) : 0;
#
#-----[ BEFORE, ADD ]------------------------------------------ 
# 
		$user_allow_post = ( !empty($HTTP_POST_VARS['user_allow_post']) ) ? intval( $HTTP_POST_VARS['user_allow_post'] ) : 0;
#
#----[ FIND ]------------------------------------------ 
#
		//
		// Update entry in DB
		//
		if( !$error )
		{
			$sql = "UPDATE " . USERS_TABLE . "
#
#-----[ IN LINE FIND ]------------------------------------------ 
# 
, user_active = $user_status
#
#----[ AFTER, ADD ]------------------------------------------ 
#
, user_allow_post = $user_allow_post
#
#----[ FIND ]------------------------------------------ 
#
		$user_status = $this_userdata['user_active'];
		$user_allowavatar = $this_userdata['user_allowavatar'];
#
#-----[ BEFORE, ADD ]------------------------------------------ 
# 
		$user_allow_post = $this_userdata['user_allow_post'];
#
#----[ FIND ]------------------------------------------ 
#
			$s_hidden_fields .= '<input type="hidden" name="user_status" value="' . $user_status . '" />';
			$s_hidden_fields .= '<input type="hidden" name="user_allowpm" value="' . $user_allowpm . '" />';
#
#----[ BEFORE, ADD ]------------------------------------------ 
#
			$s_hidden_fields .= '<input type="hidden" name="user_allow_post" value="' . $user_allow_post . '" />';
#
#----[ FIND ]------------------------------------------ 
#
			'ALLOW_PM_YES' => ($user_allowpm) ? 'checked="checked"' : '',
			'ALLOW_PM_NO' => (!$user_allowpm) ? 'checked="checked"' : '',
#
#----[ BEFORE, ADD ]------------------------------------------ 
#
			'USER_CAN_POST_YES' => ($user_can_post) ? 'checked="checked"' : '',
			'USER_CAN_POST_NO' => (!$user_can_post) ? 'checked="checked"' : '',
#
#----[ FIND ]------------------------------------------ 
#
			'L_SPECIAL' => $lang['User_special'],
			'L_SPECIAL_EXPLAIN' => $lang['User_special_explain'],
#
#----[ BEFORE, ADD ]------------------------------------------ 
#
			'L_USER_CAN_POST' => $lang['User_can_post'],
# 
#-----[ OPEN ]------------------------------------------ 
#
includes/auth.php
#
#----[ FIND ]------------------------------------------ 
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------ 
# 

// Should be called after the auth() in posting.php, viewforum.php, viewtopic.php
function auth_check_allow_post($userdata, $is_auth)
{
	if ( !$userdata['user_allow_post'] && !$is_auth['is_mod'] )
	{
		$is_auth['auth_post'] = 0;
		$is_auth['auth_reply'] = 0;
		$is_auth['auth_edit'] = 0;
		$is_auth['auth_delete'] = 0;
		$is_auth['auth_sticky'] = 0;
		$is_auth['auth_announce'] = 0;
		$is_auth['auth_pollcreate'] = 0;
	}
	return $is_auth;
}
# 
#-----[ OPEN ]------------------------------------------ 
# 
posting.php
#
#----[ FIND ]------------------------------------------ 
#
	$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $post_info);
#
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	$is_auth = auth_check_allow_post($userdata, $is_auth);
#
#----[ FIND ]------------------------------------------ 
#
	if ( $userdata['session_logged_in'] )
	{
		message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_' . $is_auth_type], $is_auth[$is_auth_type . "_type"]));
	}
#
#----[ REPLACE WITH ]------------------------------------------
#
	if ( $userdata['session_logged_in'] )
	{
		if ( $userdata['user_allow_post'] )
		{
			$message_die = sprintf($lang['Sorry_' . $is_auth_type], $is_auth[$is_auth_type . "_type"]);
		}
		else
		{
			$message_die = $lang['Sorry_post_ban'];
		}
		message_die(GENERAL_MESSAGE, $message_die);
	}
#
#----[ OPEN ]------------------------------------------ 
#
viewtopic.php
#
#----[ FIND ]------------------------------------------ 
#
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_topic_data);
#
#-----[ AFTER, ADD ]------------------------------------------ 
# 
$is_auth = auth_check_allow_post($userdata, $is_auth);
#
#----[ OPEN ]------------------------------------------ 
#
viewforum.php
#
#----[ FIND ]------------------------------------------ 
#
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
#
#-----[ AFTER, ADD ]------------------------------------------ 
# 
$is_auth = auth_check_allow_post($userdata, $is_auth);
# 
#-----[ OPEN ]------------------------------------------ 
# 
language/lang_russian/lang_main.php
#
#----[ FIND ]------------------------------------------ 
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------ 
# 
$lang['User_can_post'] = 'Может писать сообщения';
$lang['Sorry_post_ban'] = 'Извините, вы не можете создавать темы, отправлять и редактировать свои сообщения. Причина: <b>нарушение правил</b>.<br /><br />Вы можете проверять, получать и отправлять Личные Сообщения.';

#
#----[ OPEN ]------------------------------------------ 
#
templates/subsilver/admin/user_edit_body.tpl
#
#----[ FIND ]------------------------------------------ 
#
	<tr> 
	  <td class="row1"><span class="gen">{L_ALLOW_AVATAR}</span></td>
	  <td class="row2"> 
		<input type="radio" name="user_allowavatar" value="1" {ALLOW_AVATAR_YES} />
		<span class="gen">{L_YES}</span>&nbsp;&nbsp; 
		<input type="radio" name="user_allowavatar" value="0" {ALLOW_AVATAR_NO} />
		<span class="gen">{L_NO}</span></td>
	</tr>
#
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	<tr> 
	  <td class="row1"><span class="gen">{L_USER_CAN_POST}</span></td>
	  <td class="row2"> 
		<input type="radio" name="user_allow_post" value="1" {USER_CAN_POST_YES} />
		<span class="gen">{L_YES}</span>&nbsp;&nbsp; 
		<input type="radio" name="user_allow_post" value="0" {USER_CAN_POST_NO} />
		<span class="gen">{L_NO}</span></td>
	</tr>
#
#-----[ SAVE ALL FILES/CLOSE ]------------------------------------------ 
#
# EoM
Так молчунам внизу страницы сразу указывается, чего они не могут, еще выкинул кнопку "бан" за ненадобностью...

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

Есть, правда, одна неувязочка, вот здесь:

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

$lang['Sorry_post_ban'] = 'Извините, вы не можете создавать темы, отправлять и редактировать свои сообщения. Причина: <b>нарушение правил</b>.<br /><br />Вы можете проверять, получать и отправлять Личные Сообщения.'; 
Если юзеру одновременно запретить посылать ЛС, то эта строка немного не к месту...

Вернуться в «Запросы модов для phpBB 2.0.x»