Славного вам расположения духа!
Захотелось мне сделать для определенной группы пользователей ссылку (кнопку) на фронтэнде, позволяющую публиковать и снимать с публикации новости. В программировании я совсем не разбираюсь и долго искал подобное решение в сети, но так и не нашел. Попытался сделать сам прочитав официальный мануал, но там было крайне мало подробностей, в результате я все же получил нужную мне функцию, но хотелось бы спросить у уважаемых знатоков, насколько вообще такой подход верен, имеет ли моя реализация право на жизнь и если нет - то в какую сторону мне примерно смотреть и чего бы почитать по теме.
Собственно как я это реализовал:
Был создан файл engine/modules/approve.php:
<?php
if(!defined('DATALIFEENGINE')) {
die("Hacking attempt!");
}
if ($is_logged AND (($member_id['user_group']==1) OR ($member_id['user_group']==2))) { //определяет принадлежность пользователя к нужной группе
if (empty($_GET['param'])) { //выводит ошибку если запрос пустой
die('пустое значение');
}
$param = preg_replace('/[^A-Za-z0-9]/', '', $_GET['param']); //фильтр запроса
if ($param != $_GET['param']) {
die('запрос содержит недопустимые символы');
}
$user = $db->super_query("SELECT autor FROM " . PREFIX . "_post WHERE id = '$param'"); //запрет на изменение параметра если автор статьи - админ
if ($user[autor] == "admin" ) {
die("Hacking attempt!");
}
$id = $db->super_query("SELECT id FROM " . PREFIX . "_post WHERE id = '$param'"); //проверка на существование записи
if (!$id[id]) {
die('такой записи не существует');
}
$row = $db->super_query("SELECT approve FROM " . PREFIX . "_post WHERE id = '$param'"); //изменение значения публикации на противоположное
if ($row[approve] == 1 ) {
$db->query("UPDATE " . PREFIX . "_post SET `approve` = '0' WHERE id='$param'");
}
elseif ($row[approve] == 0 ) {
$db->query("UPDATE " . PREFIX . "_post SET `approve` = '1' WHERE id='$param'");
}
}
else {
die("У вас нет прав для этого действия");
}
В файле engine/engine.php был добавлен код:
case "approve" :
include_once ENGINE_DIR . '/modules/approve.php';
break;
Сама ссылка на модуль выводится в шаблоне короткой новости примерно так:
<a href="сайт/index.php?do=approved¶m={news-id}">***</a>
Источник:
dle-faq.pro, DLE