Интересный хак для DLE - быстрая подписка на комментарии. С помощью этого хака пользователи смогут подписываться на комментарии практически одним кликом. Стандартный алгоритм подписки устроен так, что подписаться на комментарии можно только при добавлении комментария.
Установка
В папке engine/ajax создать файл subscribe.php с содержимым:
<?php
/*
Подписка на комментарии
Автор: Sander
Сайт: http://sandev.pro/
*/
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
define( 'DATALIFEENGINE', true );
define( 'ROOT_DIR', substr( dirname( __FILE__ ), 0, -12 ) );
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
include ENGINE_DIR . '/data/config.php';
date_default_timezone_set ( $config['date_adjust'] );
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';
dle_session();
$user_group = get_vars( "usergroup" );
if( ! $user_group ) {
$user_group = array ();
$db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
while ( $row = $db->get_row() ) {
$user_group[$row['id']] = array ();
foreach ( $row as $key => $value ) $user_group[$row['id']][$key] = stripslashes($value);
}
set_vars( "usergroup", $user_group );
$db->free();
}
require_once ENGINE_DIR . '/modules/sitelogin.php';
if(!$is_logged) $member_id['user_group'] = 5;
$post_id = intval($_POST['post_id']);
if($post_id<1) die("{\"error\":\"Не определена новость для подписки\"}");
if(!$user_group[$member_id['user_group']]['allow_subscribe']) die("{\"error\":\"Вы не можете пользоваться подпиской\"}");
$row = $db->super_query( "SELECT id, allow_comm FROM " . PREFIX . "_post WHERE id = $post_id" );
if(!$row['id']) die("{\"error\":\"Публикация не найдена или была удалена\"}");
if(!$row['allow_comm']) die("{\"error\":\"Комментарии к данной публикации запрещены\"}");
$row = $db->super_query( "SELECT user_id, name, email, hash FROM " . PREFIX . "_subscribe WHERE news_id = $post_id AND user_id = {$member_id['user_id']}" );
if($row['user_id']){
//отписываем
$db->query( "DELETE FROM " . PREFIX . "_subscribe WHERE news_id = $post_id AND user_id = {$member_id['user_id']}" );
echo "{\"html\":\"Вы успешно отписались. Подписаться заново?\"}";
}else{
//подписываем
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 ('{$member_id['user_id']}', '{$member_id['name']}', '{$member_id['email']}', '{$post_id}', '{$s_hash}')" );
echo "{\"html\":\"Вы успешно подписались. Отписаться?\"}";
}
JS код вставить в любой подключенный к шаблону js файл:
В файле шаблона addcomments.tpl или fullstory.tpl в желаемом месте вставить код:
<span class="unsubcomm">Подписаться на комментарии</span>
Наличие имени класса unsubcomm - обязательно.