public function addAction() { $form = new Zetta_Form(Zend_Registry::get('config')->Access->form->resource); $routes = Modules_Router_Model_Router::getInstance()->getRoutesTreeHash(); $menuIdElement = $form->getElement('route_id'); $menuIdElement->addMultiOptions($routes); if ($resource_id = $this->getParam('resource')) { $resource = $this->_modelResources->getResource($resource_id)->toArray(); $resource['type'] = 'free'; if (preg_match('/route_(\\d*)/', $resource['resource_name'], $matches)) { $resource['route_id'] = $matches[1]; $resource['type'] = 'router'; } $this->view->resource = $resource; $form->setDefaults($resource); $form->getElement('type')->setAttrib('disabled', 'disabled'); $form->getElement('resource_name')->setAttrib('disabled', 'disabled'); } if (!sizeof($_POST) || !$form->isValid($_POST)) { $this->view->form = $form; } else { if ($form->getValue('type') == 'router') { $arrayData = array('resource_name' => $resource_name = 'route_' . $form->getValue('route_id'), 'description' => 'Ограничение доступа к разделу "' . trim($routes[$form->getValue('route_id')], '- ') . '"'); } else { $arrayData = array('resource_name' => $resource_name = $form->getValue('resource_name'), 'description' => $form->getValue('description')); } if (!$arrayData['resource_name'] || !$arrayData['description']) { // проверка, чтобы не добавлялись пустые привелегии return $this->renderScript('admin/addComplete.ajax.phtml'); } if ($resource_id) { $this->_modelResources->update($arrayData, $this->_modelResources->getAdapter()->quoteInto('resource_name = ?', $resource_id)); } else { $this->_modelResources->insert($arrayData); // дадим доступ администраторам по умолчанию $this->_modelRules->addRule($resource_name, 'admin', 'allow'); } $this->renderScript('admin/addComplete.ajax.phtml'); } }
public function isValid($value) { $isValid = true; $request = Zend_Controller_Front::getInstance()->getRequest(); if ($request->getParam('resource') || is_numeric($value) && Zend_Controller_Front::getInstance()->getRequest()->getParam('type') == 'free' || false == is_numeric($value) && $request->getParam('type') == 'router') { return true; } $resource_name = is_numeric($value) ? 'route_' . $value : $value; $model = new Modules_Access_Model_Resources(); if (sizeof($model->getResource($resource_name))) { $this->_error(self::ERROR, $resource_name); $isValid = false; } return $isValid; }