Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как запретить отправление лс группе 4?

Как запретить отправление лс группе 4?


     22.10.2017    личные сообщения    Все вопросы » Общие вопросы по PHP    101

вопрос
Обнаружился еще один баг (я считаю это багом)
В настройках скрипта запретил использование ЛС группе 4 (посетители)
но при этом, этой группе могут отправлять сообщения пользователи из всех остальных групп,
Группа 4 видит уведомление на сайте что им пришло сообщение, но открыть и прочитать и ответить не может, т.к в настройках им запрещено использование лс.Тупость какая то.
И еще в уведомлении на имейл группа 4 может прочитать то что им написали.

Просьба помочь закрыть возможность отправлять сообщения группе 4.

Ответил: Sander


engine/modules/pm.php
Найти строку (364):
		$row = $db->get_row();

После нее вставить:
		if( !$user_group[$row['user_group']]['allow_pm'] ) $stop .= "<li>К сожалению, <b>{$row['name']}</b> не можете использовать персональные сообщения на сайте</li>";

7 комментариев

vitnet
Эксперт

vitnet - 22 октября 2017 21:39 -

1.0 Открыть файл engine/modules/pm.php

найти
	if( !$stop AND ($user_group[$row['user_group']]['max_pm'] AND $row['pm_all'] >= $user_group[$row['user_group']]['max_pm']) and $member_id['user_group'] != 1 ) {
		$stop .= $lang['pm_err_8'];
	}

ниже добавить
Внимание! У вас нет прав для просмотра скрытого текста.

далее найти
		if( $user_group[$row['user_group']]['max_pm'] AND $row['pm_all'] >= $user_group[$row['user_group']]['max_pm'] AND $member_id['user_group'] != 1 ) {
			$stop_pm = true;
		}

ниже добавить
Внимание! У вас нет прав для просмотра скрытого текста.

Dusty
Юзер

Dusty - 22 октября 2017 22:48 -

vitnet Спасибо, это почти то что нужно и работает, но об этом юзер который пишет сообщение узнают только после отправки сообщения.



Если есть вариант как уведомить еще до отправки, напиши пожалуйста, отблагодарю манеткой.

vitnet
Эксперт

vitnet - 22 октября 2017 23:24 -

1.0 Использовать ссылку /index.php?do=pm&doaction=newpm&username=ник пользователя
2.0 Написать небольшой хак который при вводе текста в поле "Имя адресата" выводил результат.

Dusty
Юзер

Dusty - 22 октября 2017 23:31 -

SANDER, Спасибо, твой вариант работает так же точно как и Витнета, тоесть уведомление появляется после отправки сообщения, только с другим текстом уведомления.
Надо чтобы уведомление было еще до отправки.

Dusty
Юзер

Dusty - 22 октября 2017 23:35 -

vitnet
Не понял твой ответ про ссылку и хак.

vitnet
Эксперт

vitnet - 22 октября 2017 23:55 -

1.0 Открыть файл шаблона /pm.tpl

найти (пример из шаблона Default DLE 12)
<input placeholder="Имя адресата" type="text" name="name" value="{author}" class="wide" required>

заменить на
<input placeholder="Имя адресата" type="text" id="pm_name" onblur="CheckLoginPm();" name="name" value="{author}" class="wide" required>

2.0 В любой подключенный к шаблону JS файл дописать
function CheckLoginPm(){var a=document.getElementById("pm_name").value;ShowLoading("");$.post(dle_root+"engine/ajax/check_pm.php",{name:a},function(a){HideLoading("");a&&DLEalert(a,dle_info)});return!1}

3.0 Создать
Внимание! У вас нет прав для просмотра скрытого текста.
"check_pm.php" и поместить его в /engine/ajax/

Готово!

Dusty
Юзер

Dusty - 23 октября 2017 00:26 -

vitnet,
Сделал всё точно по инструкции, не сработало, делал на 11.0 но там практически все идентично с 12.0
кеш браузера и скрипта чистил

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх