DLE движок для сайтов
Славного вам расположения духа! Захотелось мне сделать для определенной группы пользователей ссылку (кнопку) на фронтэнде, позволяющую публиковать и снимать с публикации новости. В программировании я совсем не разбираюсь и долго искал подобное решение в сети, но так и не нашел. Попытался сделать сам прочитав официальный мануал, но там было крайне мало подробностей, в результате я все же получил нужную мне функцию, но хотелось бы спросить у уважаемых знатоков, насколько вообще такой подход верен, имеет ли моя реализация право на жизнь и если нет - то в какую сторону мне примерно смотреть и чего бы почитать по теме. Собственно как я это реализовал:
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;
Сама ссылка на модуль выводится в шаблоне короткой новости примерно так: