Подписка гостей на новые комментарии

Подписка гостей на новые комментарии

В DLE комментировать ваши записи могут не только пользователи сайта, но и гости. Для этого необходимо лишь настроить соответствующие правила для групп пользователей в панели управления сайта. Но вот гостям запрещено подписываться на обновления комментариев к материалу. Исправим это применив данный хак.


Установка:
1. Открыть templates/ваша_тема/addcomments.tpl и найти:
<input type="text" name="mail" id="mail" class="f_input"/>

Добавить параметр required:
<input type="text" name="mail" id="mail" class="f_input" required/>

тем самым сделать его обязательным для заполнения.

2. Открыть engine/modules/show.full.php и найти:
if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe']) $allow_subscribe = true; else $allow_subscribe = false;

Заменить на:
if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe'] OR !$is_logged) $allow_subscribe = true; else $allow_subscribe = false;

3. Открыть engine/modules/addcomments.php и найти:
if ( $config['mail_comments'] OR $config['allow_subscribe'] ) { 

Добавить выше:
$guest_email = $mail; 

Найти ниже:
if ($_POST['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe'] AND !$found_subscribe) { 
// Часть кода опущена 
} 

Добавить ниже:
if($_POST['allow_subscribe'] AND !$is_logged AND !$found_subscribe) { 
	if(function_exists('openssl_random_pseudo_bytes')) { 
		$stronghash = md5(openssl_random_pseudo_bytes(15)); 
		} else {
		$stronghash = md5(uniqid(mt_rand(), TRUE));
		} 
	$salt = str_shuffle($stronghash); 
	$s_hash = ""; 
	for($i = 0; $i < 10; $i ++) { 
		$s_hash .= $salt{mt_rand(0, 31)}; 
	} 
	$s_hash = md5($s_hash); 
	$db->query("INSERT INTO " . PREFIX . "_subscribe (user_id, name, email, news_id, hash) values ('0', '$name', '$guest_email', '$post_id', '$s_hash')"); 
}  

4. Если на сайте вы используете древовидный тип комментариев, в котором ответ на комментарии происходит в модальном окне, то можете добавить функцию подписки в это окно. Для этого следует открыть engine/ajax/replycomments.php и найти:
if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe']) {

Заменить на:
if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe'] OR !$is_logged) {

Готово!
 
Версия DLE: 11.х
Автор: Артем Мáлков
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.