Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Удаление пользователем собственных новостей

Удаление пользователем собственных новостей


     04.11.2011    удаление новостей    Все вопросы » Общие вопросы    6009

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

Ответил: Бахмут


В админке - Настройка групп пользователей - выбираем нужную группу пользователей - редактирование - админпанель - Разрешить редактирование новостей в админпанели
Данная опция позволит пользователям, имеющим доступ в админпанель, редактировать и удалять новости в админпанели. Мы настоятельно рекомендуем давать доступ только пользователям вызывающим у вас доверие, т.к. добавление новостей в админпанели позволяет более тонко настраивать новости.
Отредактировал 6-11-2011, 00:05 - ПафНутиЙ
Причина: ответ не верный.

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

SlimYalta
Юзер

SlimYalta - 5 ноября 2011 00:07 -

Удалите ответ...больше не буду на ночь читать вопросы...сонный был)Чем я думал...гг))

andron2900
Юзер

andron2900 - 20 марта 2012 03:21 -

Вопрос снова поднимаю, так как полночи копания в интернете решения я так и не нашел.
На одном из сайтов, пользователи временно размещают информацию, но спустя какое то время они хотят ее удалить, но не могут и постоянно пишут мне о просьбе удалить.
Может есть какое то решение, что бы пользователи могли удалять свои новости?

klaf
Юзер

klaf - 26 марта 2012 00:59 -

Присоединяюсь к вопросу!
Гуглом удалось нарыть только это:
Оказывается не так уж и сложно. Просто в ПХП добавил нужные права нужной группе

andron2900
Юзер

andron2900 - 29 марта 2012 22:57 -

сообщение для пользователя klaf
У тебя переполнена личка, так что пишу сюда.
Я согласен с твоим предложением.

VooDoo
Юзер

VooDoo - 30 мая 2014 15:27 -

Мною найдено следующее решение:

Открыть /engine/modules/show.full.php
Найти:

$tpl->set_block( "'\\[edit\\](.*?)\\[/edit\\]'si", "" );



Ниже вставить:

if( $is_logged and ($member_id['name'] == $row['autor']) ) {
$tpl->set( '{dell_user}', "<a onclick=\"dle_news_delete (" . $row['id'] . ") \" >Удалить новость</a>" );
} else
$tpl->set( '{dell_user}', "" );



Открыть engine/modules/show.short.php найти:

$tpl->set_block( "'\\[edit\\](.*?)\\[/edit\\]'si", "" );



Ниже вставить:

if( $is_logged and ($member_id['name'] == $row['autor']) ) {
$tpl->set( '{dell_user}', "<a onclick=\"dle_news_delete (" . $row['id'] . ") \" >Удалить новость</a>" );
} else
$tpl->set( '{dell_user}', "" );



Открыть engine/modules/deletnews.php и найти:

if ($is_logged AND $user_group[$member_id['user_group']]['allow_all_edit']) {



Заменить на

$id = intval($_GET['id']);
if ($id > 0)
    $row = $db->super_query("SELECT id, autor, title, category FROM " . PREFIX . "_post WHERE id = '$id'");
else
    die("Hacking attempt! User not found");

if ($is_logged AND ($user_group[$member_id['user_group']]['allow_all_edit'] || $row['author'] == $member_id['name'] )) {



Найти:

$id = intval($_GET['id']);

    if ($id > 0) {

        $row = $db->super_query("SELECT id, autor, title, category FROM " . PREFIX . "_post WHERE id = '$id'");



Заменить на:

if ($id > 0) {



В полном и кратком шаблоне вставить тег

{dell_user}



__________________________________________

НО! Есть две проблемы:

- Важная при удалении новости обычным пользователем (у меня) вылетает Hacking attempt! User not found.
Есл удалаять по этой кнопке под админом то все ок (что не удивительно)

- Не важная, но досадная. Кнопка встраивается отдельно от меню редактирования новости. Надо как-то дальше копаться и вставлять в js файлах.

Огромная просьба к админам посмотреть это решение и указать на возможную ошибку с удалением обычными пользователями.

Хак, считаю, очень полезный. Совершенно не понятно, почему он не реализован в ДЛЕ до сих пор. Наверное Селсофт построит на нем какое-то очередное обновление, добавив до кучи прочего мелкого мусора, как обычно.

P.S. Решение найдено здесь: http://coderlaba.com/hacks/dle-hacks/767-udalenie-polzovatelem-svoey-novosti-dle-10x.html

VooDoo
Юзер

VooDoo - 30 мая 2014 15:50 -

ошибчный комментарий

rashpil
Эксперт

rashpil - 30 мая 2014 16:07 -

Я писал помню такой хак. Он давал возможность настроить у групп опцию удаления своих публикаций. Рублей за 100 могу поделиться, пишите в личку

betstart
Юзер

betstart - 9 февраля 2020 16:49 -

Помогите как решить "- Важная при удалении новости обычным пользователем (у меня) вылетает Hacking attempt! User not found."

betstart
Юзер

betstart - 20 февраля 2020 10:50 -

rashpil,
rashpil,
Поделитесь в личну

dj-avtosh
PHP-developer

dj-avtosh - 20 февраля 2020 11:57 -

человека уже год на сайте не было

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 20 февраля 2020 14:36 -

dj-avtosh,
это мой крик о помощи уже) дал человеку задание тут на сайте, он сделал, я оплатил (он показал демо), у него работает, у меня нет, возможно конечно левое демо сделал, но блин он просто пропал, а мне сдавать клиенту нужно и не могу найти кто сделает заново всё, в паблике всё перерыл одно и тоже

dj-avtosh
PHP-developer

dj-avtosh - 20 февраля 2020 14:47 -

то есть вы продаете то, что не сами разрабатываете?

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

леший
Гости

леший - 20 февраля 2020 16:30 -

А Вас это удивляет? Тут процентов 70 таких "людей"

dj-avtosh
PHP-developer

dj-avtosh - 20 февраля 2020 16:45 -

тайное, рано или поздно, становится явным...

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

dj-avtosh
PHP-developer

dj-avtosh - 20 февраля 2020 15:54 -

открыть engine/modules/deletenews.php

найти:

if ($is_logged AND $user_group[$member_id['user_group']]['allow_all_edit']) {


Выше добавить:



$userSelfDeleteNewsSqlAppend = false;

if ( $is_logged && ! $user_group[$member_id['user_group']]['allow_all_edit'] )
{

	$user_group[$member_id['user_group']]['allow_all_edit'] = true;

	$userSelfDeleteNewsSqlAppend = " AND `autor` = '" . $db->safesql($member_id['name']) . "'";

}


Найти:

$row = $db->super_query("SELECT id, title, category, alt_name FROM " . PREFIX . "_post WHERE id = '{$id}'");


заменить на:

$row = $db->super_query("SELECT id, title, category, alt_name FROM " . PREFIX . "_post WHERE id = '{$id}'" . $userSelfDeleteNewsSqlAppend );



Найти:

clear_cache();


ниже вставить:

! empty ( $userSelfDeleteNewsSqlAppend ) && $user_group[$member_id['user_group']]['allow_all_edit'] = false;



------------------------------
------------------------------

Если нужно разрешить удалять все свои новости, минуя запрет категорий, тогда нужно еще найти:

$allow_list[0] != "all" AND !in_array( $selected, $allow_list ) AND $member_id['user_group'] != 1


заменить на

empty($userSelfDeleteNewsSqlAppend) && $allow_list[0] != "all" AND !in_array( $selected, $allow_list ) AND $member_id['user_group'] != 1



------------------------------------
------------------------------------
------------------------------------

Построение ссылок на удаление было указано в посте: https://dle-faq.ru/faq/common/725-udalenie-polzovatelem-sobstvennyh-novostey.html#comment-id-29359


/engine/modules/show.full.php

Найти:

$tpl->set_block( "'\[edit\](.*?)\[/edit\]'si", "" );



Ниже вставить:


$tpl->set( '{dell_user}', 
	( $is_logged && ($member_id['name'] == $row['autor']) )
	? $tpl->set( '{dell_user}', "<a onclick="dle_news_delete (" . $row['id'] . ") " >Удалить новость</a>" ) : false
);


-----

engine/modules/show.short.php найти:

$tpl->set_block( "'\[edit\](.*?)\[/edit\]'si", "" );



Ниже вставить:


$tpl->set( '{dell_user}', 
	( $is_logged && ($member_id['name'] == $row['autor']) )
	? $tpl->set( '{dell_user}', "<a onclick="dle_news_delete (" . $row['id'] . ") " >Удалить новость</a>" ) : false
);


-----

В полном и кратком шаблоне вставить тег

{dell_user}

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 20 февраля 2020 19:55 -

это точно работает? установил, все равно Hacking attempt! User not found. и в концовке если брать вашу, нет $tpl->set_block( "'\[edit\](.*?)\[/edit\]'si", "" ); но есть $tpl->set_block( "'\\[edit\\](.*?)\\[/edit\\]'si", "" );
вставлял ниже ошибку выдаёт в строке, вставлял и то что у человек в первых ответах ошибок php нет, но снова Hacking attempt! User not found.

dj-avtosh
PHP-developer

dj-avtosh - 21 февраля 2020 00:07 -

я не проверял, мне влом у себя тестить. судя по коду должно. Хакин аттемп выдавать может только потому что неверный хэш для логина передается (смотри вкладку network) в консоли.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 28 февраля 2020 11:34 -

dj-avtosh,а если неверный хэш передаётся, как это решить?

dj-avtosh
PHP-developer

dj-avtosh - 28 февраля 2020 11:35 -

передачей верного хеша

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 28 февраля 2020 11:47 -

dj-avtosh, если будет время у вас, посмотрите пожалуйста, я вам оплачу немного, неделю вожусь уже с этим) может даже 2

LazyDev
PHP-developer

LazyDev - 20 февраля 2020 16:52 -

betstart, какому человеку дали тут на сайте?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

betstart
Юзер

betstart - 20 февраля 2020 19:59 -

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

LazyDev
PHP-developer

LazyDev - 28 февраля 2020 13:04 -

betstart, так какому человеку дали тут на сайте?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

betstart
Юзер

betstart - 29 февраля 2020 00:23 -

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

betstart
Юзер

betstart - 1 марта 2020 15:00 -

LazyDev, он обьявился, прочитал и снова пропал) вот он https://dle-faq.ru/user/DrKru

betstart
Юзер

betstart - 20 февраля 2020 19:56 -

Помогите решить не бесплатно, ещё нужно ап новости пользователями сделать (чтобы могли только авторы поднимать, в паблике есть но его доработать нужно) и кучу ещё модулей и хаков нужно, просто ищу разработчика постоянные заказы делать

betstart
Юзер

betstart - 29 февраля 2020 00:24 -

Вроде бы обычная функция для новостного сайта с группами пользователей, но нет такой функции, движку много лет, почему сделать не могут не понимаю...

dj-avtosh
PHP-developer

dj-avtosh - 29 февраля 2020 14:55 -

Вы делаете кому-то за деньги, но при этом знаниями не обладаете.

Сверху я вам дал ответ - все что осталось, это добавить хеш или сгенерировать ссылку на удаление. Это очень просто, но я принципиально жду.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 29 февраля 2020 14:57 -

dj-avtosh, да меня заказчик попросил сделать, в изначальном тз этого не было, я бы не брался не зная как, думал просто всё) но пообещал уже, нужно сделать

dj-avtosh
PHP-developer

dj-avtosh - 1 марта 2020 12:08 -

Ну пусть заказчик пишет нашим специалистам напрямую, зачем в этой схеме Вы?

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 1 марта 2020 15:36 -


При удалении вот такая штука

betstart
Юзер

betstart - 2 марта 2020 09:23 -


betstart, теперь вот такая, но эта ближе к сути, на этой строке (92) лежит данный код "msgbox ($lang['all_info'], $lang['news_del_ok']);"

dj-avtosh
PHP-developer

dj-avtosh - 2 марта 2020 11:50 -

значит либо не все вставили из моего поста - либо после всего кэш не очистили

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

betstart
Юзер

betstart - 1 марта 2020 14:26 -

dj-avtosh, если я найти не могу, то он подавно не найдёт
если поможешь, то могу тоже помочь может по дизайну что-то нужно либо ещё по чему-то, в веб дизайне больше 6 лет уже

SX2
Эксперт

SX2 - 2 марта 2020 13:46 -


Самая сложная часть работы – решиться приступить к ней.

betstart
Юзер

betstart - 2 марта 2020 15:01 -

Спасибо огромное!)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх