Все для DataLife Engine / DLE модули / Бесплатные / DLE Быстрая подписка на комментарии

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


Представляем модуль DLE Быстрая подписка на комментарии, после установки подписаться на комментарии можно будет только при добавлении комментария. Простенький Модуль для DLE «Быстрая подписка на комментарии» заменяет стандартный алгоритм движка Datalife Engine, таким образом, чтобы подписаться на комментарии можно только при добавлении комментария. Данный модуль дле дополняет функциональность и исправляет это упущение.

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

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

Установка модуля Быстрая подписка на комментарии
В папке 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 в архиве

Bystraya-podpiska-na-kommentarii.rar [2,88 Kb] (cкачиваний: 86)
  • 80
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent