yf_admin_groups admin module

Admin groups handling class.

Fileplugins/admin/admin_modules/yf_admin_groups.class.php
Useadmin URL ?object=admin_groups

Public properties

PropertyDefaultDescription
None declared in this class.

Constants

table'admin_groups'

Public methods 6

active

public function active()
    public function active()
    {
        $_GET['id'] = (int) (($_GET['id'] ?? null));
        if ( ! empty($_GET['id'])) {
            $group_info = db()->query_fetch('SELECT * FROM ' . db(self::table) . ' WHERE id=' . (int) (($_GET['id'] ?? null)));
        }
        if (($_GET['id'] ?? null) == 1) {
            $group_info = [];
        }
        if ( ! empty($group_info)) {
            db()->update_safe(self::table, ['active' => (int) ( ! $group_info['active'])], 'id=' . (int) (($_GET['id'] ?? null)));
            common()->admin_wall_add(['admin group ' . $group_info['name'] . ' ' . ($group_info['active'] ? 'inactivated' : 'activated'), ($_GET['id'] ?? null)]);
        }
        cache_del([self::table, 'admin_groups_details']);
        if (is_ajax()) {
            no_graphics(true);
            echo $group_info['active'] ? 0 : 1;
        } else {
            return js_redirect(url('/@object'));
        }
    }

add

public function add()
    public function add()
    {
        $a = $_POST;
        $a['redirect_link'] = url('/@object');
        return form($a, ['autocomplete' => 'off'])
            ->validate([
                'name' => 'trim|required|alpha_dash|is_unique[admin_groups.name]',
            ])
            ->db_insert_if_ok(self::table, ['name', 'go_after_login', 'active'], [])
            ->on_after_update(function () {
                cache_del([self::table, 'admin_groups_details']);
                common()->admin_wall_add(['admin group added: ' . ($_POST['name'] ?? null) . '', db()->insert_id()]);
            })
            ->text('name', 'Group name')
            ->text('go_after_login', 'Url after login')
            ->active_box()
            ->save_and_back();
    }

delete

public function delete()
    public function delete()
    {
        $_GET['id'] = (int) (($_GET['id'] ?? null));
        if (($_GET['id'] ?? null) == 1) {
            $_GET['id'] = 0;
        }
        if ( ! empty($_GET['id'])) {
            db()->query('DELETE FROM ' . db(self::table) . ' WHERE id=' . (int) (($_GET['id'] ?? null)) . ' LIMIT 1');
            common()->admin_wall_add(['admin group deleted', ($_GET['id'] ?? null)]);
        }
        cache_del([self::table, 'admin_groups_details']);
        if (is_ajax()) {
            no_graphics(true);
            echo $_GET['id'] ?? null;
        } else {
            return js_redirect(url('/@object'));
        }
    }

edit

public function edit()
    public function edit()
    {
        $id = (int) (($_GET['id'] ?? null));
        if ( ! $id) {
            return _e('No id');
        }
        $a = db()->from(self::table)->whereid($id)->get();
        $a = (array) $_POST + (array) $a;
        $a['redirect_link'] = url('/@object');
        return form($a, ['autocomplete' => 'off'])
            ->validate([
                'name' => 'trim|required|alpha_dash|is_unique_without[admin_groups.name.' . $id . ']',
            ])
            ->db_update_if_ok(self::table, ['name', 'go_after_login'], 'id=' . $id)
            ->on_after_update(function () use ($id) {
                cache_del([self::table, 'admin_groups_details']);
                common()->admin_wall_add(['admin group edited: ' . ($_POST['name'] ?? null) . '', $id]);
            })
            ->text('name', 'Group name')
            ->text('go_after_login', 'Url after login')
            ->save_and_back();
    }

show

public function show()
    public function show()
    {
        $blocks = main()->get_data('blocks_all');
        $admin_center_id = null;
        foreach ((array) $blocks as $_id => $_info) {
            if ($_info['type'] == 'admin' && $_info['name'] == 'center_area') {
                $admin_center_id = $_id;
                break;
            }
        }
        $gid = main()->ADMIN_GROUP;
        $func = function ($row) use ($gid) {
            return ! ($row['id'] == $gid);
        };
        $menu_id = db()->get_one('SELECT id FROM ' . db('menus') . ' WHERE type="admin" AND active=1 LIMIT 1');
        return table('SELECT * FROM ' . db(self::table) . ' ORDER BY id ASC', [
                'custom_fields' => [
                    'members_count' => 'SELECT `group`, COUNT(*) AS num FROM ' . db('admin') . ' GROUP BY `group`',
                ],
                'hide_empty' => 1,
            ])
            ->text('name')
            ->text('go_after_login')
            ->text('members_count', ['link' => url('/admin/filter_save/clear/?filter=group:%d'), 'link_field_name' => 'id', 'icon' => 'fa fa-user'])
            ->btn_edit(['btn_no_text' => 1, 'no_ajax' => 1])
            ->btn_delete(['btn_no_text' => 1, 'display_func' => $func])
            ->btn_active(['display_func' => $func, 'short' => 1])
            ->footer_add(['class_add' => 'btn-primary', 'no_ajax' => 1])
            ->footer_link('Blocks', url('/blocks/show_rules/' . $admin_center_id))
            ->footer_link('Menu', url('/menus_editor/show_items/' . $menu_id))
            ->footer_link('Auth fails', url('/log_admin_auth_fails'));
    }

Methods starting with _ hooks and helpers; not routable as page actions