Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы » Как разрешить гостям пользоваться функцией Жалобы (complaint)

Как разрешить гостям пользоваться функцией Жалобы (complaint)


     жалоба, dle 9.4    Все вопросы » Общие вопросы    20034

вопрос
Версия DLE 9.4

Вопрос:
Как разрешить гостям пользоваться функцией Жалобы (в основном интересует жалоба на краткую/полную новость (complaint)).
И возможно ли такое вообще?

Ответил: GSMexpress


Открыть engine/modules/show.***.php
Найти
$tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );

Заменить на
$tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'news')\">");
$tpl->set( '[/complaint]', "</a>" );

Открыть engine/ajax/complaint.php
Найти и удалить строку:
if( !$is_logged ) die( "error" );

Не много криво, но работает ))

UPD 20.05.2012

Маленькая инструкция (работает, протестировано на DLE 9.5):

Данный хак позволяет гостям(не зарегистрированным пользователям)
пользоваться функцией отправки жалоб администратору.


1. Открыть файл engine/classes/comments.class.php
найти там следующее (строчка 380 в коде):
$tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );


Заменить на:
$tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'comments')\">" );
$tpl->set( '[/complaint]', "</a>" );


2. Открыть файл engine/ajax/complaint.php
Найти следующее (122 строчка):

} elseif ($_POST['action'] == "comments") {
    
if( !$is_logged ) die( "error" );



Заменить строку
if( !$is_logged ) die( "error" );

на
if( !$is_logged );


3. Удалить в вашем шаблоне comments.tpl теги [not-group=5] и [/not-group](если хотите чтоб гости смогли отправлять жалобы на комментарии)

Кстати, чтоб для новости тоже работало и не выбивало ошибок, нужно:


1. Открыть файл engine/modules/show.full.php (для краткой новости это также будет и engine/modules/show.short.php)
найти там:
$tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );


Заменьть на:
$tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'news')\">");
$tpl->set( '[/complaint]', "</a>" );


2. Открыть файл engine/ajax/complaint.php
Найти следующее (144 строчка):

 } elseif ($_POST['action'] == "news") {
    
        if( !$is_logged ) die( "error" );

( Обратите внимание на разницу по сравнению с тем же хаком для комментариев
} elseif ($_POST['action'] == "news") { )

Далее заменить строку идущую на строчке 146
if( !$is_logged ) die( "error" );

на
if( !$is_logged );


Проверенно. Все работает как часы! Единственный минус, что вам могут слать таким образом тучи фальшивых жалоб. Но, как правило, спам создается для массовой аудитории. Много ли найдется таких идиотов которые будут слать спам лично админу? Не думаю, что много, и уж тем более не думаю, что часто. Удачи вам smile .
Отредактировал 20-05-2012, 10:29 - ПафНутиЙ
Причина: Дополнил ответ из комментария

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

1KoTuK
Юзер

1KoTuK - -

У меня действительно кнопка у гостей появилась и когда нажимаешь появляется окно, в нём ввожу жалобу нажимаю отправить и пишет error
Жалоба так и не доходит...

GSMexpress
Юзер

GSMexpress - -

значит где то здесь доупустили ошибку или не выполнили этот пункт, у меня все работает
Открыть engine/ajax/complaint.php
Найти
if( !$is_logged ) die( "error" );

Заменить на
if( !$is_logged )

Webstrannik
Юзер

Webstrannik - -

GSMexpress - я поражаюсь с таких ответов !

.... Открыть engine/modules/show.short.php
это краткая новость а где инструкция для полной ?

Открыть engine/ajax/complaint.php
Найти ....
там мля эта строчка повторяется 4 раза !

не ужели трудно 10 букав дописать что бы понятнее было как юзать хак
am

nowheremany
Эксперт

nowheremany - -

наверно не

Заменить на

if( !$is_logged )


А просто убрать эту строку.

И вы о спаме не подумали да?

Благодарность принимаю тут Связь

1KoTuK
Юзер

1KoTuK - -

Спам меня не волнует - пускай хоть 1000сообщений в час пишут, жалобы вижу только я а значит всё ок.

Webstrannik
Юзер

Webstrannik - -

у меня не заработало !
так что считаю что вопрос остается в силе ...

GSMexpress
Юзер

GSMexpress - -

Открыть engine/modules/show.short.php (это для короткой новости)
Найти
$tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );


Заменить на
$tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'news')\">");
$tpl->set( '[/complaint]', "</a>" );


Открыть engine/modules/show.full.php (это для полной новости)
Найти
$tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );


Заменить на
$tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'news')\">");
$tpl->set( '[/complaint]', "</a>" );


Открыть engine/ajax/complaint.php
Найти
 if( !$is_logged ) die( "error" );
(там мля эта строчка одна, где то 88-89 строка, где начинается определение групп пользователей)
Заменить на
if( !$is_logged )

или просто удалить
 die( "error" );
кому как больше нравится...

nowheremany
Эксперт

nowheremany - -

 if( !$is_logged ) die( "error" );

Убрать вообще

Благодарность принимаю тут Связь

Yamakasi
Юзер

Yamakasi - -

дополню по пункту по удалению:
if( !$is_logged ) die( "error" );


надо удалить под:
elseif ($_POST['action'] == "news") {

то есть жалоба на новость, а остальные две на другое значение относится!

Sobak
Юзер

Sobak - -

у меня сперва тоже не заработало, но в фуллстори в шаблоне у меня стоял тег [not-group=5] на месте блока с кнопкой жалобы, 5 группа по умолчанию - гости, т.е. если вы не в группе 5, то можете жаловаться, поэтому советую сделать все как здесь подсказали и немного отредактировать свой шаблон

sergey
Юзер

sergey - -

подскажите для комментариев? нужно, чтобы гости жаловались на комменты

sergey
Юзер

sergey - -

ха) все, разобрался. там все просто. идем в файл comments.class.php, заменяем (399-400 строчка)
$tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );

на
$tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'comments')\">" );
                $tpl->set( '[/complaint]', "</a>" );


дальше в файле complaint.php (папка /public_html/engine/ajax) ищем (122 строчка)
} elseif ($_POST['action'] == "comments") {

    if( !$is_logged ) die( "error" );

удаляем:
if( !$is_logged ) die( "error" );


теперь гости видят отметку жалобы и соответственно могут настучать)

san85ua
Юзер

san85ua - -

GSMexpress,
Все сделал как Вы показывали... У меня по прежнему Error и жалоба не доходит. в complaint.пхп на 88-89 строке я так понимаю нужно удалить die( "error" );

из этой ли части кода, я вас правильно понял??? :
if ($_POST['action'] == "pm") {

    if( !$is_logged ) die( "error" );

    if( !$id OR !$text) die( "error" );

    $row = $db->super_query( "SELECT id, text, user, user_from FROM " . USERPREFIX . "_pm WHERE id='{$id}'" );

    if( $row['user'] != $member_id['user_id'] OR !$row['id']) die("Operation not Allowed");

    if ($row['user_from'] == $member_id['name']) { echo $lang['error_complaint_2']; die(); }


ах да - точку с запятой оставлять или как Вы показали с ";" удалять?

или просто удалить

die( "error" );

Grimyar
Юзер

Grimyar - -

***Комментарий удален***

Grimyar
Юзер

Grimyar - -

***Комментарий удален***

ПафНутиЙ
Админ

ПафНутиЙ - -

Ну например у меня в блоге есть форма обратной связи без каптчи - спам-боты в среднем 2-3 письма в день шлют (иногда нет вообще, иногда по 5 штук), при этом сайт то не большой и не часто-посещаемый.

Каков вопрос - таков и ответ. Просто помните об этом.

Warlog
Юзер

Warlog - -

в 9,7 не работает. (не появляется у гостей вобще)

zloy
Юзер

zloy - -

Подскажите как подобное можно реализовать на 9.7? Так как данный метод не работает...

zloy
Юзер

zloy - -

PS... Разобрался, для жалоб на новости необходимо редактировать show.full

kubanochka
Юзер

kubanochka - -

Это все я сделала. но у меня какой то баг чтоли. В админке жалобы приходят все время на одну и туже новость, как исправить? Подскажите, как правильно прописать этот тег в шаблоне в фулстори?

Korobasow
Юзер

Korobasow - -

Не могу вывести отдельную кнопку ЖАЛОБА

В fullstory.tpl прописал так:

<a href="javascript:sendNotice(' $row['id'] ', 'news');" class="btn btn-danger btn-mini"><i class="icon-white icon-fire"></i> СООБЩИТЬ ОБ ОШИБКЕ</a>


Но окно добавления жалобы открывается только администратору!
Даже пользователю не открывается. А я хочу что бы даже гости могли писать жалобу!

Подскажите как мне вывести функцию жалобы в шаблоне для всех групп?

dj-avtosh
PHP-developer

dj-avtosh - -

$row['id'] - в tpl???

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

wadim112
Юзер

wadim112 - -

Такая же беда как и у Webstrannik, все сделал пошагово, как прописано. Результат - ноль, даже окно жалобы не выходит, ни гостю, ни администратору. DLE 9.7, может кто -то сталкивался с такой проблемой и смог решить?

feniks01
Гости

feniks01 - -

Ребят, а данное на DLE 10.1 пашет? Я новичок :)

Панкратов
Юзер

Панкратов - -

да работает проверил на 10.1 спасибо решил свою проблему

csgamee
Юзер

csgamee - -

Спасибо, ДЛЕ 10.2 полет нормальный))

kent
Юзер

kent - -

когда отправляет пользователь жалобу, то пишется его ник, а можно сделать так, чтоб когда гость отправляет жалобу отображался его ip, чтоб можно было узнать кто спамит?

Denis Gusak
Юзер

Denis Gusak - -

Спасибо, dle 10.4 работает нормально

neGURU
Юзер

neGURU - -

Если использовать способ от Korobasow то нужно исправить:
 $row['id'] 
на
{news-id}
и
javascript:sendNotice
на
javascript:AddComplaint


Цитата: Korobasow
Не могу вывести отдельную кнопку ЖАЛОБА

В fullstory.tpl прописал так:

<a href="javascript:sendNotice(' $row['id'] ', 'news');" class="btn btn-danger btn-mini"><i class="icon-white icon-fire"></i> СООБЩИТЬ ОБ ОШИБКЕ</a>


Но окно добавления жалобы открывается только администратору!
Даже пользователю не открывается. А я хочу что бы даже гости могли писать жалобу!

Подскажите как мне вывести функцию жалобы в шаблоне для всех групп?

Gordon
Юзер

Gordon - -

Все сделал по инструкции. При отправке выдает ошибку

Fatal error: require_once(): Failed opening required '/engine/classes/mysql.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/tube/data/www/************.stream/engine/ajax/complaint.php on line 31

Dle 11.1

Похожие вопросы

наверх