Класс Managers.php

 

Класс Managers

Класс предназначен для работы с менеджерами сайта

Массив $permissions_list

Код функции (спойлер)
 
   /*Список параметров доступа для менеджера сайта*/
    public $permissions_list = array('products', 'categories', 'brands', 'features', 'orders', 'order_settings',
        'users', 'groups', 'coupons', 'pages', 'blog', 'comments', 'feedbacks', 'import', 'export',
        'stats', 'design', 'settings', 'currency', 'delivery', 'payment', 'managers', 'license', 'languages',
        'banners', 'callbacks','yametrika','robots', 'seo_patterns', 'support'

    );

В данном массиве хранятся название модулей (разделов) к которым можно давать права доступа для менеджера


Функция init_managers()

Код функции (спойлер)
    /*Инициализация менеджеров*/
    private function init_managers() {
        $this->all_managers = array();
        $this->db->query("SELECT * FROM __managers ORDER BY id");
        foreach ($this->db->results() as $m) {
            $this->all_managers[$m->id] = $m;
            if (!is_null($m->permissions)) {
                $m->permissions = explode(',', $m->permissions);
                foreach ($m->permissions as &$permission) {
                    $permission = trim($permission);
                }
            } else {
                $m->permissions = $this->permissions_list;
            }
        }
    }

Функция выборки всех менеджеров сайта


Функция get_managers()

Код функции (спойлер)
    /*Выборка списка всех менеджеров*/
    public function get_managers() {
        if (empty($this->all_managers)) {
            $this->init_managers();
        }
        return $this->all_managers;
    }

Функция выборки всех менеджеров сайта (менеджеры возвращаются из приватной переменной)

Функция возвращает массив менеджеров


Функция count_managers()

Код функции (спойлер)
    /*Подсчет количества менеджеров*/
    public function count_managers($filter = array()) {
        return count($this->all_managers);
    }

Функция подсчета количества менеджеров сайта

Функция возвращает количество(число) менеджеров сайта


Функция get_manager()

Код функции (спойлер)
    /*Выборка конкретного менеджера*/
    public function get_manager($id = null) {
        if (empty($this->all_managers)) {
            $this->init_managers();
        }
        // Если не запрашивается по логину, отдаём текущего менеджера или false
        if(empty($id)) {
            if (!empty($_SESSION['admin'])) {
                $id = $_SESSION['admin'];
            }
        }
        if(is_int($id) && isset($this->all_managers[$id])) {
            return $this->all_managers[$id];
        } elseif(is_string($id)) {
            foreach ($this->all_managers as $m) {
                if ($m->login == $id) {
                    return $m;
                }
            }
        }
        return false;
    }

Фукнция выборки менеджера сайта

Функция принимает один аргумент $id

Параметры которые содержит функция:

  • $id - id менеджера, которого необходимо выбрать

Функция возвращает данные о менеджере


Функция add_manager()

Код функции (спойлер)
    /*Добавление менеджера*/
    public function add_manager($manager) {
        $manager = (object)$manager;
        if(!empty($manager->password)) {
            // захешировать пароль
            $manager->password = $this->crypt_apr1_md5($manager->password);
        }
        if(is_array($manager->permissions)) {
            if(count(array_diff($this->permissions_list, $manager->permissions))>0) {
                $manager->permissions = implode(",", $manager->permissions);
            } else {
                // все права
                $manager->permissions = null;
            }
        }
        $this->db->query("INSERT INTO __managers SET ?%", $manager);
        $id = $this->db->insert_id();
        $this->init_managers();
        return $id;
    }

Фукнция добавления нового менеджера

Функция принимает один аргумент ($manager)

Параметры которые содержит функция:

  • $manager - данные о менеджере (логин, пароль, настройки языка и т.д)

Функция возвращает id добавленного менеджера


Функция update_manager()

Код функции (спойлер)
   /*Обновление менеджеров*/
    public function update_manager($id, $manager) {
        $manager = (object)$manager;
        if(!empty($manager->password)) {
            // захешировать пароль
            $manager->password = $this->crypt_apr1_md5($manager->password);
        }

        if(isset($manager->permissions) && is_array($manager->permissions)) {
            if(count(array_diff($this->permissions_list, $manager->permissions))>0) {
                $manager->permissions = implode(",", array_intersect($this->permissions_list, $manager->permissions));
            } else {
                // все права
                $manager->permissions = null;
            }
        }

        $this->db->query("UPDATE __managers SET ?% WHERE id=?", $manager, intval($id));
        $this->init_managers();
        return $id;
    }

Фукнция обновления менеджера

Функция принимает два аругмента($id, $manager)

Параметры которые содержит функция:

  • $id - id менеджера, которого нужно обновить
  • $manager - данные о менеджере (имя, пароль и т.д)

Функция возвращает id обновленного менеджера


Функция delete_manager()

Код функции (спойлер)
    /*Удаление менеджера*/
    public function delete_manager($id) {
        if (!empty($id)) {
            $this->db->query("DELETE FROM __managers WHERE id=?", intval($id));
            $this->init_managers();
            return true;
        }
        return false;
    }

Функция удаления менеджера

Функция принимает один аргумент($id)

Параметры которые содержит функция:

  • $id - менеджера, которого нужно удалить

Функция возвращает true в случае успешного удаления


Функция access()

Код функции (спойлер)
    /*Проверка доступа к определнному модулю сайта*/
    public function access($module) {
        $manager = $this->get_manager();
        if(is_array($manager->permissions)) {
            return in_array($module, $manager->permissions);
        } else {
            return false;
        }
    }

Функция проверки доступа к модулю сайта

Функция принимает один аргумент($module)

Параметры которые содержит функция:

  • $module - названия модуля, по которому нужно проверить доступ

Функция возвращает позицию вхождения модуля, в случае успеха