Файл: adm_panel/menu.php
Строк: 216
<?php
if (!defined('H')) {
    define('H', $_SERVER['DOCUMENT_ROOT'].'/');
}
include_once H . 'sys/inc/start.php';
include_once H . 'sys/inc/sess.php';
include_once H . 'sys/inc/settings.php';
include_once H . 'sys/inc/db_connect.php';
include_once H . 'sys/inc/ipua.php';
include_once H . 'sys/inc/fnc.php';
include_once H . 'sys/inc/adm_check.php';
include_once H . 'sys/inc/user.php';
include_once H . 'sys/inc/icons.php';
user_access('adm_menu', null, '/');
adm_check();
$set['title'] = 'Главное меню';
include_once H.'sys/inc/thead.php';
title();
$opendiricon=opendir(H.'style/icons');
while ($icons=readdir($opendiricon)) {
    // запись всех тем в массив
    if (preg_match('#^.|default.png#', $icons)) {
        continue;
    }
    $icon[] = $icons;
}
closedir($opendiricon);
if (isset($_POST['add']) && isset($_POST['name']) && $_POST['name']!=null) {
    $name = trim($_POST['name']);
    $url = trim($_POST['url']);
    $counter = trim($_POST['counter']);
    $type = trim($_POST['type']);
    $pos = $db->query("SELECT MAX(`pos`) FROM `menu`")->el()+1;
    $icon = preg_replace('#[^a-z0-9 _-.]#i', null, $_POST['icon']);
    $db->query('INSERT INTO `menu` (`name`, `url`, `counter`, `pos`, `icon`, `type`) VALUES ( ?, ?, ?, ?i, ?, ?string)',
               [$name, $url, $counter, $pos, $icon, $type]);
    $_SESSION['message'] = lang('Ссылка успешно добавлена');
    exit(header('Location: ?'));
}
if (isset($_POST['change']) && isset($_GET['id']) && isset($_POST['name']) && $_POST['name']!=null && isset($_POST['url'])) {
    $id = abs((int)$_GET['id']);
    $name = trim($_POST['name']);
    $url = trim($_POST['url']);
    $counter = isset($_POST['counter']) ? trim($_POST['counter']) : null;
    $icon = preg_replace('#[^a-z0-9 _-.]#i', null, $_POST['icon']);
    $db->query('UPDATE `menu` SET `name`=?, `url`=?, `counter`=?, `icon`=? WHERE `id`=?i LIMIT ?i',
           [$name, $url, $counter, $icon, $id, 1]);
    $_SESSION['message'] = lang('Пункт меню успешно изменен');
    exit(header('Location: ?'));
}
if (isset($_GET['id']) && isset($_GET['act']) && $menu = $db->query('SELECT pos FROM `menu` WHERE `id`=?i LIMIT ?i', [$_GET['id'], 1])->row()) {
    if ($_GET['act']=='up') {
        $db->query("UPDATE `menu` SET `pos` = '".($menu['pos'])."' WHERE `pos` = '".($menu['pos']-1)."' LIMIT 1");
        $db->query("UPDATE `menu` SET `pos` = '".($menu['pos']-1)."' WHERE `id` = '".intval($_GET['id'])."' LIMIT 1");
        $_SESSION['message'] = lang('Пункт меню сдвинут на позицию вверх');
        exit(header('Location: ?'));
    }
    if ($_GET['act']=='down') {
        $db->query('UPDATE `menu` SET `pos`="' . ($menu['pos']) . '" WHERE `pos`="' . ($menu['pos']+1) . '" LIMIT 1');
        $db->query("UPDATE `menu` SET `pos` = '".($menu['pos']+1)."' WHERE `id` = '".intval($_GET['id'])."' LIMIT 1");
        $_SESSION['message'] = lang('Пункт меню сдвинут на позицию вниз');
        exit(header('Location: ?'));
    }
    if ($_GET['act']=='del') {
        $db->query('DELETE FROM `menu` WHERE `id`=?i LIMIT 1', [$_GET['id']]);
        $db->query("UPDATE `menu` SET `pos` = ( SELECT @var := @var +1 FROM (SELECT @var :=0) AS tbl ) ;");
        $_SESSION['message'] = lang('Пункт меню удален');
        exit(header('Location: ?'));
    }
}
err();
aut();
echo "<table class='post'>";
$res = $db->query('SELECT * FROM `menu` ORDER BY `pos` ASC');
while ($post = $res->row()) {
    echo "<tr>";
    if (!isset($post['icon'])) {
        $db->query('ALTER TABLE `menu` ADD `icon` VARCHAR( 32 ) NULL DEFAULT NULL');
    }
    if (!isset($post['type'])) {
        $db->query("ALTER TABLE  `menu` ADD  `type` ENUM('link', 'razd', 'inc') NOT NULL DEFAULT 'link' AFTER `id`");
    }
    echo "<td class='p_t'>";
    if ($post['type']=='link') {
        echo icons($post['icon'], 'code');
    }
    echo $post['pos'] .' '. $post['name'] .' '.($post['type'] == 'link' ? '('. $post['url'] . ')' : null);
    echo "</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td class='p_m'>";
    if (isset($_GET['id']) && $_GET['id']==$post['id'] && isset($_GET['act']) && $_GET['act']=='edit') {
        echo "<form action='?id=$post[id]' method='post'>";
        if ($post['type'] != 'inc') {
            echo "Тип: ".($post['type'] == 'link' ? 'Ссылка':'Разделитель')."<br />";
        }
        echo "Название <br /><input type='text' name='name' value='$post[name]' /><br />";
        if ($post['type']=='link' or $post['type']=='inc') {
            echo "Ссылка:<br />";
            echo "<input type='text' name='url' value='$post[url]' /><br />";
        } else {
            echo "<input type='hidden' name='url' value='' />";
        }
        if ($post['type']!='inc') {
            echo "Счетчик:<br />";
            echo "<input type='text' name='counter' value='$post[counter]' /><br />";
        }
        if ($post['type']=='link') {
            echo "Иконка:<br />";
            echo "<select name='icon'>";
            echo "<option value='default.png'>По умолчанию</option>";
            for ($i=0;$i<sizeof($icon);$i++) {
                echo "<option value='$icon[$i]'".($post['icon'] == $icon[$i]?" selected='selected'":null).">$icon[$i]</option>";
            }
            echo "</select><br />";
        } else {
            echo "<input type='hidden' name='icon' value='$post[icon]' />";
        }
        echo "<input class='submit' name='change' type='submit' value='Изменить' /><br />";
        echo "</form>";
        echo "<a href='?'>Отмена</a><br />";
    } else {
        if ($post['type']!='inc') {
            echo "Счетчик: ".($post['counter'] == null ? 'отсутствует': output_text($post['counter']))."<br />";
        } else {
            echo "Виджет: ".output_text($post['url'])."<br />";
        }
        echo "<a href='?id=$post[id]&act=up'>Выше</a> | ";
        echo "<a href='?id=$post[id]&act=down'>Ниже</a> | ";
        echo "<a href='?id=$post[id]&act=del'>Удалить </a><br />";
        echo "<a href='?id=$post[id]&act=edit'>Редактировать </a><br />";
    }
    echo "</td>";
    echo "</tr>";
}
echo "</table>";
if (isset($_GET['add'])) {
    echo "<div class='p_m'><form action='?add' method='post'>";
    echo "Тип:<br />";
    echo "<select name='type'>";
    echo "<option value='link'>Ссылка (1)</option>";
    echo "<option value='razd'>Раздел (2)</option>";
    echo "<option value='inc'>Виджет (3)</option>";
    echo "</select><br />";
    echo "Название (1,2):<br />";
    echo "<input type='text' name='name' value=""/><br />";
    echo "Ссылка(1):<br />";
    echo "<input type='text' name='url' value=''/><br />";
    echo "Счетчик (1,2):<br />n";
    echo "<input type='text' name='counter' value=''/><br />";
    echo "Иконка (1):<br />";
    echo "<select name='icon'>";
    echo "<option value='default.png'>По умолчанию</option>";
    for ($i=0;$i<sizeof($icon);$i++) {
        echo "<option value='$icon[$i]'>$icon[$i]</option>";
    }
    echo "</select><br />";
    echo "<input class='submit' name='add' type='submit' value='Добавить' /><br />";
    echo "<a href='?'>Отмена</a><br />";
    echo "</form></div>";
} else {
    echo "<div class='foot'><a href='?add'>Добавить пункт</a></div>";
}
echo "<div class='foot'>";
echo "«<a href='".APANEL."'>В админку</a><br />";
echo "</div>";
include_once H . 'sys/inc/tfoot.php';