コード例 #1
0
ファイル: group.php プロジェクト: k-kalashnikov/forKoda
 /**
  * Устанавливает переменные для генерации формы для добавления объекта
  * @param type $this->fw
  */
 private function setForm()
 {
     if (\models\ACL::getInstance()->check($this->user_group_id, $this->model->getTable(), \models\ACL::RELATION_REF, \models\ACL::ACTION_CREATE)) {
         $this->fw->set('html.show_add_form', true);
         $this->fw->set('create_action_url', $this->fw->alias('backend_group_create', 'table=' . $this->table));
         $this->fw->set('form.title', $this->fw->get('i18n.form.title.add') . ' ' . $this->fw->get('i18n.groups.title.add'));
     }
 }
コード例 #2
0
ファイル: user.php プロジェクト: k-kalashnikov/forKoda
 /**
  * Возвращает значение поля для пользователя с заданным ID
  */
 public function value()
 {
     $one = $this->user_model->get($this->fw->get('GET.id'));
     $rel = \models\ACL::getInstance()->getRelation($this->user_id, $one['id']);
     if (\models\ACL::getInstance()->check($this->user_group_id, '_user', $rel, \models\ACL::ACTION_READ)) {
         $this->setAJAXLayout();
         $field = $this->fw->get('PARAMS.field');
         $this->fw->set('content', isset($one->{$field}) ? $one->{$field} : '');
         $this->fw->set('inc', 'components/value.html');
     } else {
         \helpers\Msg::error('read_no_rights');
         $this->fw->error(401);
     }
 }
コード例 #3
0
 /**
  * Проверяет права на выполнение действия
  * @param int $owner_id - ID пользователя, с объектом которого выполняется действие, если null, то используется определённый в beforeroute()
  * @param string $action - Действие, одна из констант \models\ACL::ACTION_*
  * @return bool Можно или нет выполнить действие
  * @todo Перенести в модель?
  * */
 protected function checkAccess($action, $owner_id = null)
 {
     return \models\ACL::getInstance()->check($this->user_group_id, \models\ACL::OBJECT_STATICBLOCK, '', $action);
 }
コード例 #4
0
 /**
  * Устанвливает пользовательское меню
  */
 protected function setAccountMenu()
 {
     $menu = [];
     $rules = ACLdata::getInstance()->getRules($this->user_group_id);
     // Модерирование комментариев
     if (in_array('comment', $rules[ACLdata::RELATION_NO][ACLdata::ACTION_MODERATION])) {
         $has_comments = \models\meta\Meta::getInstance()->getListBySetting('is_commentable', true);
         if (!empty($has_comments)) {
             array_push($menu, ['type' => 'header', 'title' => $this->fw->get('i18n.user.menu.moderation')]);
             $count_comments = \models\Comments::getCountWaiting();
             array_push($menu, ['object' => 'comments', 'action' => 'moderation', 'icon' => 'fui-checkbox-checked', 'title' => $this->fw->get('i18n.user.menu.comments.title'), 'count' => array_sum($count_comments)]);
             array_push($menu, ['type' => 'divider']);
         }
     }
     $read_rules = array_merge($rules[ACLdata::RELATION_NO][ACLdata::ACTION_READ], $rules[ACLdata::RELATION_OWN][ACLdata::ACTION_READ], $rules[ACLdata::RELATION_REF][ACLdata::ACTION_READ], $rules[ACLdata::RELATION_PARENT][ACLdata::ACTION_READ]);
     $read_admin = $rules[ACLdata::RELATION_NO][ACLdata::ACTION_READ];
     if (in_array('_user', $read_rules)) {
         array_push($menu, array('object' => 'user', 'href' => '/account/user', 'icon' => 'fui-user', 'title' => $this->fw->get('i18n.user.menu.users.title')));
     }
     // TODO: проверить
     //			if ($this->fw->exists('importer')) {
     //				$this->fw->config($this->fw->get('ROOT') . '/../' . APP_FOLDER . '/cfg/importer.ini');
     //				$menu = array_merge($menu, Importer::getMenu());
     //			}
     $content = array();
     $tmp = \models\meta\Meta::getInstance()->getList();
     foreach ($tmp as $v) {
         $table = $v->get('table');
         if ($table != '_user_profile' && in_array($table, $read_rules)) {
             $model = \models\ContentList::getInstance($table);
             $content[$v->get('title')] = array('object' => 'content', 'params' => 'table=' . $table, 'icon' => 'fui-list', 'title' => !is_null($v->get('title_pl')) ? $v->get('title_pl') : $v->get('title'), 'count_own' => $model->getCount(['user_id=?', $this->user_id]), 'count' => $read_admin ? $model->getCount() : '');
         }
     }
     if (!empty($content)) {
         ksort($content);
         array_unshift($content, ['type' => 'header', 'title' => $this->fw->get('i18n.user.menu.content.list')]);
         $menu = array_merge($menu, $content);
     }
     if (in_array('_group', $read_rules) || in_array('_acl', $read_rules)) {
         $menu = array_merge($menu, array(['type' => 'divider'], ['type' => 'header', 'title' => $this->fw->get('i18n.user.menu.rights.title')]));
         if (in_array('_group', $read_rules)) {
             $menu = array_merge($menu, array(array('object' => 'group', 'icon' => 'fui-list-thumbnailed', 'title' => $this->fw->get('i18n.user.menu.groups.title'))));
         }
         if (in_array('_acl', $read_rules)) {
             $menu = array_merge($menu, array(array('object' => 'acl', 'icon' => 'fui-list-thumbnailed', 'title' => $this->fw->get('i18n.user.menu.acl.title'))));
         }
     }
     if (in_array('_service', $read_rules)) {
         $menu = array_merge($menu, array(['type' => 'divider'], ['type' => 'header', 'title' => $this->fw->get('i18n.user.menu.service.title')], array('object' => 'static_blocks', 'icon' => 'fui-list-thumbnailed', 'title' => $this->fw->get('i18n.user.menu.static.title')), array('object' => 'static_places', 'icon' => 'fui-list-small-thumbnails', 'title' => $this->fw->get('i18n.user.menu.static.places.title')), array('object' => 'service', 'action' => 'resetcache', 'icon' => 'glyphicon glyphicon-refresh', 'title' => $this->fw->get('i18n.cache.reset.title')), array('object' => 'service', 'action' => 'phpinfo', 'icon' => 'fui-info', 'title' => 'PHPINFO'), array('object' => 'meta', 'icon' => 'fui-gear', 'title' => $this->fw->get('i18n.user.menu.contentmeta.title')), array('object' => 'comments', 'icon' => 'fui-gear', 'title' => $this->fw->get('i18n.user.menu.comments.title'))));
     }
     //\helpers\Debug::prePrintR($this->fw->get('PARAMS'));
     for ($i = 0; $i < count($menu); $i++) {
         if (isset($menu[$i]['href']) && $menu[$i]['href'] == $this->fw->get('PARAMS.0')) {
             $menu[$i]['class'] = 'active';
         }
     }
     $this->fw->set('MENUS.account', $menu);
     $this->fw->set('html.account_js', true);
 }
コード例 #5
0
ファイル: content.php プロジェクト: k-kalashnikov/forKoda
 /**
  * Устанавливает массив с данными для генерации AJAX-полей
  */
 protected function setAJAXFields()
 {
     $rules = \models\ACL::getInstance()->getRulesByAction($this->user_group_id, \models\ACL::ACTION_READ);
     \models\Content::setAjaxFields($this->table, $rules);
     if ($this->tableMeta->isTree()) {
         // Добавляем в контроллере, так как $this->pid устанавливается в контроллере.
         $this->fw->push('ajax_fields', ['name' => 'pid', 'value' => $this->pid, 'type' => 'hidden']);
     }
     self::setAjaxFieldsPost();
 }
コード例 #6
0
ファイル: backend.php プロジェクト: k-kalashnikov/forKoda
 /**
  * Проверяет права на выполнение действия
  * @param int $owner_id - ID пользователя, с объектом которого выполняется действие, если null, то используется определённый в beforeroute()
  * @param string $action - Действие, одна из констант \models\ACL::ACTION_*
  * @return bool Можно или нет выполнить действие
  * @todo Перенести в модель?
  * */
 protected function checkAccess($action, $owner_id = null)
 {
     $relation = \models\ACL::getInstance()->getRelation($this->user_id, is_null($owner_id) ? $this->owner_id : $owner_id);
     return \models\ACL::getInstance()->check($this->user_group_id, $this->model->getTable(), $relation, $action);
 }