View file panel/user_group.php

File size: 13.07Kb
<?php

/* DCMS Special
 * Дата последнего редактирования 05.02.2016
 * Модифицировал densnet
 */

foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'adm_check', 'user') as $inc) {
    require_once "../sys/inc/$inc.php";
}

access('user_group', null, 'index.php?' . SID);

$set['title'] = lang('Должности');

include_once H . 'sys/inc/thead.php';

aut();

if (isset($_GET['gid'])) {
    $k_post = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `id` = '" . intval($_GET['gid']) . "'");
    if ($k_post['count'] != 0) {
        $group = $db->get_row($db->query("SELECT * FROM `user_group` WHERE `id` = '" . intval($_GET['gid']) . "'"));

        #Навигация
        echo "<div class='list-group-item-null list-group-item-grey'><small>";
        echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_PANEL . "'>" . lang('Панель управления') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_PANEL . "user_group.php'>" . lang('Должности') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo $group['name'];
        echo "</small></div><br />";

        echo "<div class='list-group-item-null list-group-item-info'>Группа: " . $group['name'] . "</div>\n";
        $os = $db->super_query("SELECT COUNT(*) as count FROM `user` WHERE `id` = '" . intval($_GET['gid']) . "' AND `group_access` = '" . intval($_GET['gid']) . "'");

        if (intval($_GET['gid']) != $user['id'] && intval($_GET['gid']) > 1 && isset($_GET['gid']) && $os['count'] != 0) {
            $db->query("UPDATE `user` SET `group_access` = '1' WHERE `id` = '" . intval($_GET['gid']) . "' AND `group_access` < '$user[group_access]'");
        }

        $k_post = $db->super_query("SELECT COUNT(*) as count FROM `user` WHERE `group_access` = '" . intval($_GET['gid']) . "'");
        $k_post = $k_post['count'];
        $k_page = k_page($k_post, $set['p_str']);
        $page = page($k_page);
        $start = $set['p_str'] * $page - $set['p_str'];

        if (!$k_post) {
            $doc->NoResult();
        }

        $l = $db->query("SELECT * FROM `user` WHERE `group_access` = '" . intval($_GET['gid']) . "' ORDER BY `id` DESC LIMIT $start, $set[p_str]");

        while ($ank = $db->get_array($l)) {
            $ank = get_user($ank['id']);
            echo "<table class='list-group-item-null-mini list-group-item-grey dop'><tr><td class='icon14'>";
            avatar($ank['id'], '48', 'border-radius: 2px;');
            echo "</td><td class='null'>";
            if ($ank['group_access'] > 1 && $ank['id'] != $user['id'] && $user['group_access'] > $ank['group_access']) {
                echo "<a href='?gid=" . intval($_GET['gid']) . "&amp;zid=$ank[id]' class='right'>снять</a>\n";
            }
            echo user($ank['id']) . "\n";
            echo "<br />";

            echo "Регистрация: " . date::times($ank['date_reg']) . "<br />\n";
            echo "Посл. посещение: " . date::times($ank['date_last']) . "<br />\n";

            if ($ank['id'] != $user['id'] && $user['group_access'] > $ank['group_access']) {
                echo "<a href='user.php?id=$ank[id]'>" . lang('Редактировать профиль') . "</a>\n";
            }
            echo "</td></tr></table>";
        }

        if ($k_page > 1) {
            str("?gid=" . intval($_GET['id']) . "&", $k_page, $page);
        }

        include_once H . 'sys/inc/tfoot.php';
        exit;
    }
} elseif (isset($_GET['add'])) {

    #Навигация
    echo "<div class='list-group-item-null list-group-item-grey'><small>";
    echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
    echo "<a href='" . DIR_PANEL . "'>" . lang('Панель управления') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
    echo "<a href='" . DIR_PANEL . "user_group.php'>" . lang('Должности') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
    echo lang('Новая должность');
    echo "</small></div><br />";

    if (isset($_GET['ok'])) {
        $name = $_POST['name'];

        if (utf8_strlen($name) < 1) {
            $err[] = lang('Введите название');
        }
        if (utf8_strlen($msg_edit) > 1024) {
            $err[] = lang('Название слишком длинное');
        }

        $name = $db->safesql($name);

        if (!is_numeric($_POST['id'])) {
            $err[] = lang('Ошибка id');
        }
        if (!is_numeric($_POST['level'])) {
            $err[] = lang('Ошибка уровня');
        }
        $k = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `id` = '$_POST[id]'");
        if ($k['count'] != 0) {
            $err[] = lang('Должность с таким id уже есть');
        }
        $k = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `name` = '$name'");

        if ($k['count'] != 0) {
            $err[] = lang('Должность с таким названием уже есть');
        }

        if (!isset($err)) {
            admin_log('Должности', 'Создание должности', "Создал(а) должность $name");
            $db->query("INSERT INTO `user_group` (`id`, `name`, `level`) values('$_POST[id]', '$name', '$_POST[level]')");
            $_SESSION['message'] = lang('Должность успешно создана');
            header("Location: ?");
        }
    }
    err();
    echo "<form method='post' action='?add&amp;ok' name='message' class='list-group-item-null'>\n";

    $doc->Input('name', 'Название');
    $doc->Input('id', 'ID');
    $doc->Input('level', 'Уровень');

    echo "<br />\n";
    $doc->Button('btn btn-primary btn-sm', null, 'plus', 'Добавить');
    echo "</form>\n";

    include_once H . 'sys/inc/tfoot.php';
    exit;
} elseif (isset($_GET['edit'])) {
    $k_p = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `id` = '" . intval($_GET['edit']) . "'");
    if ($k_p['count'] != 0) {
        $group = $db->get_array($db->query("SELECT * FROM `user_group` WHERE `id` = '" . intval($_GET['edit']) . "' LIMIT 1"));

        #Навигация
        echo "<div class='list-group-item-null list-group-item-grey'><small>";
        echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_PANEL . "'>" . lang('Панель управления') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_PANEL . "user_group.php'>" . lang('Должности') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo lang('Редактирование');
        echo "</small></div><br />";

        if (isset($_GET['ok'])) {
            $name = $_POST['name'];

            if (utf8_strlen($name) < 1) {
                $err[] = lang('Введите название');
            }
            if (utf8_strlen($msg_edit) > 1024) {
                $err[] = lang('Название слишком длинное');
            }
            $name = $db->safesql($name);
            if (!is_numeric($_POST['id'])) {
                $err[] = lang('Ошибка id');
            }
            if (!is_numeric($_POST['level'])) {
                $err[] = lang('Ошибка уровня');
            }
            $group_id = $db->get_array($db->query("SELECT * FROM `user_group` WHERE `id` = '$_POST[id]' LIMIT 1"));
            $kt = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `id` = '" . intval($_POST['id']) . "' AND `id` != '$group[id]'");
            if ($kt['count'] != 0) {
                $err[] = lang('Должность с таким id уже есть');
            }
            $group_name = $db->get_array($db->query("SELECT * FROM `user_group` WHERE `name` = '$name' AND `id` = '$group[id]' LIMIT 1"));
            $kt = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `name` = '$name'");

            if ($kt['count'] != 0 && $group_name['name'] != $group['name']) {
                $err[] = lang('Должность с таким названием уже есть');
            }
            if (!isset($err)) {
                admin_log('Должности', 'Редактирование должности', "Переименована должность $group[name] в $name");
                $db->query("UPDATE `user_group` SET `name` = '$name', `id` = '" . intval($_POST['id']) . "', `level` = '" . intval($_POST['level']) . "' WHERE `id` = '$group[id]' LIMIT 1");
                $_SESSION['message'] = lang('Изменения сохранены');
                header("Location: ?");
            }
        }
        err();

        echo "<form method='post' action='?edit=$group[id]&amp;ok' name='message' class='list-group-item-null'>\n";

        $doc->Input('name', 'Название', 50, "" . htmlspecialchars($group['name']) . "");
        $doc->Input('id', 'ID', 2, "" . intval($group['id']) . "");
        $doc->Input('level', 'Уровень', 1, "" . intval($group['level']) . "");

        echo "<br />\n";
        $doc->Button('btn btn-success btn-sm', null, 'save', 'Сохранить');
        echo "</form>\n";

        include_once H . 'sys/inc/tfoot.php';
        exit;
    }
} elseif (isset($_GET['del'])) {
    $k = $db->super_query("SELECT COUNT(*) as count FROM `user_group` WHERE `id` = '" . intval($_GET['del']) . "' LIMIT 1");

    if ($k['count'] != 0) {
        if (isset($_GET['ok'])) {
            $group = $db->get_array($db->query("SELECT * FROM `user_group` WHERE `id` = '" . intval($_GET['del']) . "' LIMIT 1"));
            admin_log('Должности', 'Удаление должности', "Удалил(а) должность $group[name]");
            $db->query("DELETE FROM `user_group` WHERE `id` = '" . intval($_GET['del']) . "' LIMIT 1");
            header("Location: ?");
        } else {
            #Навигация
            echo "<div class='list-group-item-null list-group-item-grey'><small>";
            echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
            echo "<a href='" . DIR_PANEL . "'>" . lang('Панель управления') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
            echo "<a href='" . DIR_PANEL . "user_group.php'>" . lang('Должности') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
            echo lang('Удаление');
            echo "</small></div><br />";

            echo "<div class='list-group-item-null'>\n";
            echo lang('Вы действительно хотите удалить эту должность') . "?<br/>";
            echo "<a href='?del=" . intval($_GET['del']) . "&amp;ok' class='btn btn-success btn-sm'>Да</a> <a href='?' class='btn btn-secondary btn-sm'>Нет</a>";
            echo "</div>";
        }
        include_once H . 'sys/inc/tfoot.php';
        exit;
    }
}

#Навигация
echo "<div class='list-group-item-null list-group-item-grey'><small>";
echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
echo "<a href='" . DIR_PANEL . "'>" . lang('Панель управления') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
echo lang('Должности');
echo "</small></div><br />";

echo "<a href='?add' class='list-group-item-null list-group-item-info'><i class='fa fa-plus fa-fw'></i> " . lang('Добавить новую должность') . "</a>";

$l = $db->query("SELECT * FROM `user_group`");

$k_post = $db->super_query("SELECT COUNT(*) as count FROM user_group");

if ($k_post['count'] == 0) {
    $doc->NoResult();
}

while ($list = $db->get_array($l)) {
    echo "<div class='list-group-item-null'>\n";
    echo "<a href='?gid=$list[id]'><i class='fa fa-crop fa-fw'></i> " . htmlspecialchars($list['name']) . "</a> <span class='label label-pill label-info'>" . intval($list['id']) . " / " . intval($list['level']) . "</span>\n";
    echo "<span style='float:right'>\n";
    echo "<a class='btn btn-secondary btn-sm hint--left' href='?edit=$list[id]' data-hint='" . lang('Редактировать') . "'><i class='fa fa-edit fa-fw'></i></a> ";
    echo "<a class='btn btn-secondary btn-sm hint--left' href='?del=$list[id]' data-hint='" . lang('Удалить') . "'><i class='fa fa-trash-o fa-fw'></i></a>\n";
    echo "</span>";
    echo "</div>\n";
    echo "<div class='hr'></div>";
}

include_once H . 'sys/inc/tfoot.php';