public function __construct() { parent::__construct(); $this->user_model = \models\User::getInstance(); $groups = \models\UserGroup::getInstance()->getAllGroups(); foreach ($groups as $g) { $this->groups[$g->id] = $g; } }
public function beforeroute() { $this->model = \models\UserGroup::getInstance(); parent::beforeroute(); $this->table = 'groups'; $this->fw->mset(['ctrl_base' => $this->fw->get('backend_base.group'), 'core_ctrl_base' => $this->fw->get('backend_base.group_core')]); $default_group = $this->model->getDefaultGroup(); $this->fw->set('default_group', $default_group); $this->fw->set('no_bulk', 'true'); }
/** * Проверяет данные перед добавлением на корректность * Полe 'actions' могут быть заданы как массивами, так и строками, в которых действия/связи разделены запятыми */ private function isValid($post) { if (is_array($post) && count($post) > 0) { $isValid = true; /* Действия */ if (isset($post['actions'])) { $actions = $post['actions']; if (!is_array($actions)) { $actions = explode(',', $actions); } foreach ($actions as $a) { if (!in_array(trim($a), self::$actions)) { \helpers\Msg::error('acl.action_incorrect'); $isValid = false; } } if ($isValid) { $post['actions'] = implode($actions, ','); } } /* Группы */ if (isset($post['group_id'])) { $group = \models\UserGroup::getInstance()->get($post['group_id']); if (!$group) { \helpers\Msg::error('acl.group_incorrect'); $isValid = false; } } /* Связи */ if (isset($post['relation'])) { $relation = $post['relation']; if (!in_array(trim($relation), self::$relations)) { \helpers\Msg::error('acl.relation_incorrect'); $isValid = false; } else { /* $relation = self::$relations[trim($relation)]; } if ($isValid) {*/ $post['relation'] = $relation; } } /* Объекты */ if (isset($post['object'])) { $objects = $this->getObjectNamesList(); if (!in_array(trim($post['object']), $objects)) { \helpers\Msg::error('acl.object_incorrect'); $isValid = false; } if ($isValid) { $post['object'] = trim($post['object']); } } } return $isValid ? $post : false; }
private function clearGroupId($post, $f3) { $group_id = false; if (!isset($post['group_id'])) { if ($f3->exists('account.default_group_id')) { $group_id = $f3->get('account.default_group_id'); } else { $group_id = 0; } } else { $group_id = $post['group_id']; } $group = \models\UserGroup::getInstance()->get($group_id); if (!$group) { \helpers\Msg::error('acl.group_incorrect'); $isValid = false; } return $group_id; }
/** * Устанавливает массив с данными для генерации AJAX-полей * @param type $this->fw */ private function setAJAXFields() { $object_options = $this->model->getObjectSelectOptions(); $this->fw->set('ajax_fields', [['name' => 'group_id', 'options' => \models\UserGroup::getInstance()->getSelectOptions(), 'type' => 'select_list', 'multiselect' => false, 'selected_id' => $this->fw->get('account.default_group_id') * 1, 'placeHolder' => $this->fw->get('i18n.acl.group.placeholder'), 'label' => $this->fw->get('i18n.acl.group.label')], ['name' => 'object', 'options' => $object_options, 'type' => 'select_list', 'multiselect' => false, 'selected_id' => $object_options[0], 'placeHolder' => $this->fw->get('i18n.acl.object.placeholder'), 'label' => $this->fw->get('i18n.acl.object.label')], ['name' => 'relation', 'options' => $this->model->getRelationSelectOptions(), 'type' => 'select_list', 'multiselect' => false, 'selected_id' => $this->model->RELATION_NO, 'placeHolder' => $this->fw->get('i18n.acl.relation.placeholder'), 'label' => $this->fw->get('i18n.acl.relation.label')], ['name' => 'actions', 'options' => $this->model->getActionsSelectOptions(), 'type' => 'select_list', 'multiselect' => true, 'selected_id' => ['create', 'read', 'update', 'delete'], 'placeHolder' => $this->fw->get('i18n.acl.action.placeholder'), 'label' => $this->fw->get('i18n.acl.action.label')]]); $this->setAjaxFieldsPost(); }