Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • Форумы по phpBB 3.0
  • Другие моды для phpBB 3.0
  • Минимоды и хаки для phpBB3

Запрет отправки личных сообщений пользователям из списка "недругов".

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

1 сообщение
 • Страница 1 из 1
Просмотры: 2597 • 
  • Аватара пользователя
    PPK Сообщение 15.08.2013
    В phpBB3 есть система друзей/недругов, с помощью которой (во втором случае) все сообщения на форуме написанные пользователями которые у вас находятся в недругах будут скрываться, личные сообщения от таких пользователей будут приходить, но будут отмечаться другим цветом, небольшой мод, который добавляет в личный раздел опцию для отключения возможности отправки личных сообщений вам тем пользователям, которые у вас находятся в списке недругов.

    1. В phpmyadmin выполнить (если префикс таблиц не phpbb_ - заменить на свой):

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

    ALTER TABLE  `phpbb_users` ADD  `user_allow_foe_pm` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT  '0';
    2. Переделать файлы:

    includes/ucp/ucp_pm_compose.php перед

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

    	if (!is_array($address_list))
    	{
    		$address_list = array();
    	}
    добавить

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

    	$foe_blacklist=false;
    
    если НЕ установлен этот viewtopic.php?f=56&t=3464 мод, после

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

    	if (!is_array($address_list))
    	{
    		$address_list = array();
    	}
    добавить

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

    	else
    	{
    		if(isset($address_list['u']) && sizeof($address_list['u']) && isset($_POST['post']))
    		{
    			$sql="SELECT z.user_id FROM ".ZEBRA_TABLE." z, ".USERS_TABLE." u WHERE z.user_id IN('".implode("', '", array_map('intval', array_keys($address_list['u'])))."') AND z.foe='1' AND z.zebra_id='{$user->data['user_id']}' AND z.user_id=u.user_id AND u.user_allow_foe_pm='0'";
    			$result=$db->sql_query($sql);
    			while($row=$db->sql_fetchrow($result))
    			{
    				unset($address_list['u'][$row['user_id']]);
    				$foe_blacklist=true;
    			}
    			$db->sql_freeresult($result);
    			$foe_blacklist ? $user->lang['NO_RECIPIENT'].=$user->lang['FOE_BLACKLIST'] : '';
    		}
    	}
    если установлен, перед

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

    			foreach($address_list['u'] as $user_id=>$type)
    			{
    				if($user_id==$user->data['user_id'])
    				{
    					trigger_error('NO_SELF_SEND_MESSAGE');
    				}
    			}
    добавить

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

    			$sql="SELECT z.user_id FROM ".ZEBRA_TABLE." z, ".USERS_TABLE." u WHERE z.user_id IN('".implode("', '", array_map('intval', array_keys($address_list['u'])))."') AND z.foe='1' AND z.zebra_id='{$user->data['user_id']}' AND z.user_id=u.user_id AND u.user_allow_foe_pm='0'";
    			$result=$db->sql_query($sql);
    			while($row=$db->sql_fetchrow($result))
    			{
    				unset($address_list['u'][$row['user_id']]);
    				$foe_blacklist=true;
    			}
    			$db->sql_freeresult($result);
    			$foe_blacklist ? $user->lang['NO_RECIPIENT'].=$user->lang['FOE_BLACKLIST'] : '';
    includes/ucp/ucp_prefs.php после

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

    					'popuppm'		=> request_var('popuppm', (bool) $user->optionget('popuppm')),
    					'allowpm'		=> request_var('allowpm', (bool) $user->data['user_allow_pm']),
    добавить

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

    					'allowfoepm'		=> request_var('allowfoepm', (bool) $user->data['user_allow_foe_pm']),
    после

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

    						$sql_ary = array(
    							'user_allow_pm'			=> $data['allowpm'],
    добавить

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

    							'user_allow_foe_pm'			=> $data['allowfoepm'],
    после

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

    					'S_MASS_EMAIL'		=> $data['massemail'],
    					'S_ALLOW_PM'		=> $data['allowpm'],
    добавить

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

    					'S_ALLOW_FOE_PM'		=> $data['allowfoepm'],
    language/ru/ucp.php в самом конце, перед

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

    ));
    
    ?>
    добавить

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

    	'FOE_BLACKLIST' => '<br /><br />Пользователям у которых вы находитесь в списке недругов нельзя отправлять личные сообщения.',
    	'ALLOW_FOE_PM'						=> 'Разрешить пользователям из списка недругов посылать вам личные сообщения',
    	'ALLOW_FOE_PM_EXPLAIN'				=> '',
    styles/prosilver/template/ucp_prefs_personal.html перед

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

    	<!-- IF S_CAN_HIDE_ONLINE -->
    		<dl>
    добавить

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

    	<dl>
    		<dt><label for="allowfoepm1">{L_ALLOW_FOE_PM}:</label><br /><span>{L_ALLOW_FOE_PM_EXPLAIN}</span></dt>
    		<dd>
    			<label for="allowfoepm1"><input type="radio" name="allowfoepm" id="allowfoepm1" value="1"<!-- IF S_ALLOW_FOE_PM --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
    			<label for="allowfoepm0"><input type="radio" name="allowfoepm" id="allowfoepm0" value="0"<!-- IF not S_ALLOW_FOE_PM --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
    		</dd>
    	</dl>
    styles/subsilver2/template/ucp_prefs_personal.html перед

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

    <!-- IF S_CAN_HIDE_ONLINE -->
    	<tr>
    добавить

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

    <tr>
    	<td class="row1" width="50%"><b class="genmed">{L_ALLOW_FOE_PM}:</b><br /><span class="gensmall">{L_ALLOW_FOE_PM_EXPLAIN}</span></td>
    	<td class="row2"><input type="radio" class="radio" name="allowfoepm" value="1"<!-- IF S_ALLOW_FOE_PM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_YES}</span>&nbsp;&nbsp;<input type="radio" class="radio" name="allowfoepm" value="0"<!-- IF not S_ALLOW_FOE_PM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO}</span></td>
    </tr>
    3. Обновить переделанные стили, очистить кеш.

    Скриншоты:
    Опция в личном разделе:


    Результат:
PPK
1 сообщение
 • Страница 1 из 1

Вернуться в «Минимоды и хаки для phpBB3»

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума