예제 #1
0
파일: Mvc.php 프로젝트: ei-grad/phorm
 /**
  * Пакетное управление доступом к MVC-ресурсам
  *
  * @return void
  */
 public function aclAction()
 {
     $User = new Phorm_User();
     if ($this->_request->isPost()) {
         $FormData = $this->_request->getPost();
         if (isset($FormData['acl']) && is_array($FormData['acl'])) {
             if ($this->Mvc->updateRolesAcl($FormData['acl'])) {
                 $this->_usersession->UserData = $User->getUserInfo(array('userid' => $this->_usersession->UserData['userid']));
                 $this->view->assign("Success", array($this->_translate->_('Изменения внесены')));
             } else {
                 $this->composeTransactionErrorMessage($this->Mvc->_errors);
             }
         }
     }
     $this->view->assign('Resources', $this->Mvc->getModulesControllersActions());
     $this->view->assign('AclList', $this->Mvc->getAclList());
     $this->view->assign('Roles', $User->getRolesList());
 }
예제 #2
0
파일: Index.php 프로젝트: ei-grad/phorm
 /**
  * Главная страница
  * 
  * @return void
  * @todo Подумать над более красивым решением проблемы с escape
  * @todo Что за die?!!!!
  */
 public function indexAction()
 {
     if ($this->_request->isXmlHttpRequest()) {
         if (isset($this->_params['categoryid'])) {
             $Categories = new Phorm_Categories();
             $this->view->setEscape('trim');
             $Menu = $this->view->navigation()->menu($Categories->getNavigationMenu($this->_params['categoryid']))->render();
             die($Menu);
         }
     } else {
         $Mvc = new Phorm_Mvc();
         $this->view->assign('MvcTree', $this->view->navigation()->menu($Mvc->getNavigationMenu())->render());
         $Resource = new Phorm_Resource();
         $this->view->assign('ModulesList', $Resource->getModulesList());
         $Categories = new Phorm_Categories();
         $this->view->setEscape('trim');
         $Menu = $this->view->navigation()->menu($Categories->getNavigationMenu())->render();
         $this->view->setEscape('htmlspecialchars');
         $this->view->assign('CategoriesTree', $Menu);
     }
 }
예제 #3
0
 /**
  * Инициализация контроллера
  * 
  * @return void
  */
 public function init()
 {
     /**
      * Вытаскиваем ресурсы из реестра загрузки
      */
     $this->_boot = $this->getInvokeArg('bootstrap');
     $this->_cnf = $this->_boot->getOptions();
     $this->_params = $this->_request->getParams();
     $this->_usersession = $this->_boot->getResource('UserSession');
     $this->_translate = $this->_boot->getResource('Translate');
     /**
      * Переопределяем информацию об MVC-ресурсе в случае перенаправлений (форвардов)
      */
     if (!isset($this->_params['mvcinfo']) || ($this->_params['mvcinfo']['module'] != $this->_params['module'] || $this->_params['mvcinfo']['controller'] != $this->_params['controller'] || $this->_params['mvcinfo']['action'] != $this->_params['action'])) {
         $Mvc = new Phorm_Mvc();
         $this->_params['mvcinfo'] = $Mvc->getCurrentMvcInfo();
         $this->_setParam('WidgetSetId', $this->_params['mvcinfo']['widgetssetid']);
         $this->_setParam('mvcinfo', $this->_params['mvcinfo']);
         $this->_params['isfwd'] = true;
     }
     //print_r($this->_request->getParams());
 }
예제 #4
0
파일: Route.php 프로젝트: ei-grad/phorm
 /**
  * Matches a user submitted path with parts defined by a map. Assigns and
  * returns an array of variables on a successful match.
  *
  * @param string $path Path used to match against this routing map
  * @return array|false An array of assigned values or a false on a mismatch
  */
 public function match($path, $partial = false)
 {
     $params = array();
     $Mvc = new Phorm_Mvc();
     // Проверяем существование идентификатора материала в пути
     // @todo Сделать возможность конфигурирования паттернов урлов материалов
     if (preg_match("#^(/.*?)(/([а-яa-z0-9_-]+)\\.html)?\$#iu", $path, $pathinfo)) {
         // Если мы получили идентификатор материала, то устанавливаем CategoriesController
         if (isset($pathinfo[3])) {
             $params["module"] = "default";
             $params["controller"] = "categories";
             $params["action"] = "index";
             $params["resourceid"] = $pathinfo[3];
             $params["categorypath"] = $pathinfo[1] == "/" ? "/" : $pathinfo[1] . "/";
             $params["categorypath"] = $pathinfo[1] == "/" ? "/" : $pathinfo[1] . "/";
             // Иначе получаем модуль, контроллер и действие из родительского math
         } else {
             $params = parent::match($path, $partial);
             // Проверяем существование MVC-ресурса в базе
             if ($params['mvcinfo'] = $Mvc->getMvcInfo($params)) {
                 $params['WidgetSetId'] = $params['mvcinfo']['widgetssetid'];
                 //print_r($params);
                 return $params;
                 // Если MVC-ресурс не найден, то устанавливаем CategoriesController
             } else {
                 $params["module"] = "default";
                 $params["controller"] = "categories";
                 $params["action"] = "index";
                 $params["categorypath"] = preg_match("#/\$#", $pathinfo[1]) ? $pathinfo[1] : $pathinfo[1] . "/";
             }
         }
     }
     // После всех экзекуций у нас должны остаться только ресурсы для CategoriesControllerа
     $Categories = new Phorm_Categories();
     $Categories->setModule($params["module"]);
     // Проверяем существование раздела
     if ($CategoryInfo = $Categories->getCategoryInfoByPath($params["categorypath"])) {
         $params["categoryinfo"] = $CategoryInfo;
         $params["WidgetSetId"] = $CategoryInfo["widgetssetid"];
         // Если мы на главной странице раздела и есть материал для замещения, то переопределяем идентификатор материала
         if (!isset($params["resourceid"]) && $CategoryInfo["mainresourceid"] > 0) {
             $params["resourceid"] = $CategoryInfo["mainresourceid"];
         }
         // Проверяем существование материала в текущем разделе и модуле по его идентификатору
         if (isset($params["resourceid"])) {
             $Resource = new Phorm_Resource();
             $Resource->setModule($params["module"]);
             $options = array("categoryid" => $CategoryInfo["categoryid"], "moduleid" => $CategoryInfo["moduleid"]);
             if ($ResourceInfo = $Resource->getResourceInfo($params["resourceid"], $options)) {
                 $params["module"] = "default";
                 $params["controller"] = $CategoryInfo["modulecontroller"];
                 $params["action"] = "view";
                 $params["resourceinfo"] = $ResourceInfo;
                 $params["mvcinfo"] = $Mvc->getMvcInfo($params);
                 $params["WidgetSetId"] = $ResourceInfo["widgetssetid"];
                 //print_r($params);
                 return $params;
             }
         } else {
             $params["mvcinfo"] = $Mvc->getMvcInfo($params);
             //print_r($params);
             return $params;
         }
     }
     // Все, что не смогло вернуться выше, попадает в ErrorController notfoundAction
     $params["module"] = "default";
     $params["controller"] = "error";
     $params["action"] = "notfound";
     $params["mvcinfo"] = $Mvc->getMvcInfo($params);
     $params["WidgetSetId"] = $params["mvcinfo"]["widgetssetid"];
     return $params;
 }