Шаблоны для DLE » Модули » Быстрая подписка на комментарии

Купить VIP новость Поднять новость Выделить новость
Быстрая подписка на комментарии

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

Представляем вам модуль для dle быстрая подписка на комментарии, стандартный алгоритм подписки в dle устроен так что подписаться на комментарии можно только при добавлении комментария вот этот простенький модуль исправит эту проблему. Также с помощью этого дополнения пользователи смогут подписываться на комментарии буквально одним кликом.

Установка:


1. В папке 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\":\"Вы успешно подписались. Отписаться?\"}";
}
?>



2. 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");
});



3. В файле шаблона addcomments.tpl или fullstory.tpl в желаемом месте вставить код:

[not-group=5]<span class="unsubcomm">Подписаться на комментарии</span>[/not-group]



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


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

.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(dаta: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(dаta:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAIAAABi9+OQAAAAG0lEQVQImWN49+4dEwMDAxMjIyNZNBMTEzn6AGFhAzKAZ4ckAAAAAElFTkSuQmCC) repeat-x 0 0;
}
.unsubcomm:active{
	border-color: #fc0;
}



Все!


Также небольшое дополнение чтобы сразу отображать статус - подписан пользователь или нет.


Установка:

1. Создать engine/mods/subscribed.php с содержимым:

<?PHP
if(!defined('DATALIFEENGINE')) die("Hacking attempt!");
$row = $db->super_query( "SELECT user_id, name, email, hash FROM " . PREFIX . "_subscribe WHERE news_id = " . intval( $_GET['newsid'] ) . " AND user_id = {$member_id['user_id']}" );
if($row['user_id'])
	echo "Отписаться от комментариев";
else
	echo "Подписаться на комментарии";
?>



2. В шаблоне addcomments.tpl вместо текста "Подписаться на комментарии" использовать код:

{include file="engine/mods/subscribed.php"}



Получиться должно примерно так:

[not-group=5]<span class="unsubcomm">{include file="engine/mods/subscribed.php"}</span>[/not-group]



Все!

Версия DLE: 10.x - 14.x
Категория: Модули
Автор: Sander
Источник:

0
Полезность
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Установка
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Настройка
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

00
Автор: DEN
24-07-2022, 13:13 21 0
Реклама

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



Добавление комментария

Помощь в публикации комментариев:
1.) Если вы хотите задать вопрос, тогда просто оставьте комментарий, не нужно вопрос добавлять в ответ.
2.) Если вы хотите ответить на комментарий, для этого есть кнопка "ответить" под нужным вам вопросом.
    • Смайлы и люди
      Животные и природа
      Еда и напитки
      Активность
      Путешествия и места
      Предметы
      Символы
      Флаги
Мы ценим вашу конфиденциальность
Мы используем файлы "cookie" на нашем веб-сайте, чтобы предоставить вам наиболее релевентный результат, помня ваши предпочтения и повторные посещения.
Нажимая "Принять" вы соглашаетесь на использование всех файлов "cookie".
Принять
Не принимаю
Показать цели