Класс 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 - названия модуля, по которому нужно проверить доступ
Функция возвращает позицию вхождения модуля, в случае успеха