DLE Быстрая подписка на комментарии

Категория: Модули DLE » Модуль для DLE 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
DLE Быстрая подписка на комментарии
Представляем модуль DLE Быстрая подписка на комментарии, после установки подписаться на комментарии можно будет только при добавлении комментария. Простенький Модуль для DLE «Быстрая подписка на комментарии» заменяет стандартный алгоритм движка Datalife Engine, таким образом, чтобы подписаться на комментарии можно только при добавлении комментария. Данный модуль дле дополняет функциональность и исправляет это упущение.

Для тех кто часто проводит свое время в интернете и не хочет ждать очередного комментария на свой вопрос, а главное пользуется технологией Skype телефонией, рекомендуем бесплатное общение на сервисе www.skype-besplatno.ru.

На основе хака/модуля «Быстрая подписка на комментарии» пользователи смогут подписываться на сообщения буквально в один клик.
Собственно пример исполнения этой кнопки вы можете посмотреть на сайте автора.

Установка модуля Быстрая подписка на комментарии
<a href="http://www.dle9.com/">дле</a>

В папке 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 файл:
$(document).on('click','.unsubcomm',function(){
    ShowLoading();
    var $this = $(this);
    $.post(dle_root+"engine/ajax/subscribe.php",{post_id:$('#post_id').val()},function(d){
        HideLoading();
        if(d.error) DLEalert(d.error,"Ошибка");
        else $this.html(d.html);
    },"json");
});


В файле шаблона addcomments.tpl или fullstory.tpl в желаемом месте вставить код:
<span class="unsubcomm">Подписаться на комментарии</span>

Наличие имени класса unsubcomm - обязательно.

При желании использовать стиль кнопки:
CSS

.unsubcomm{
    display: inline-block;
    border: 1px solid #ccc;
    padding: 0 20px;
    height: 26px;
    font: normal 12px/26px Verdana;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    cursor: pointer;
    color: #555;
    background: #e5e5e5 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAIAAABi9+OQAAAAI0lEQVQImWP49esXEwMDA9O/f/+YGBgYmP7//4+Vj0ucTHUA3nos7QvvyugAAAAASUVORK5CYII=) repeat-x 0 0;
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
}
.unsubcomm:hover{
    color: #222;
    background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAIAAABi9+OQAAAAG0lEQVQImWN49+4dEwMDAxMjIyNZNBMTEzn6AGFhAzKAZ4ckAAAAAElFTkSuQmCC) repeat-x 0 0;
}
.unsubcomm:active{
    border-color: #fc0;
}


Вот и все :)

Источник: sandev pro
С уважением,
Олег Александрович a.k.a. Sander
Для поддержки стандартной отписки через e-mail. Можно поставить любой алгоритм хеша, но зачем, Ctrl->C, Ctrl->V ведь проще :)

Скачать модули dle у нас на портале, как модуль Быстрая подписка на комментарии для DLE в архиве
  • 80
Рубрика: DLE модули » Бесплатные
Ранее » Модуль для DLE Top Attachment« Далее Модуль DLE Рейтинг с Кинопоиска и IMDB
Добавление комментарияОставить комментарий