public function processAddAction() { $permissionTemplateId = (int) $this->_getParam('aclTemplateId'); $type = $this->_getParam('type'); $value = preg_replace('/[^a-zA-Z]+/', '', ucwords(strtolower($this->_getParam('value', '')))); $prettyName = ucwords(preg_replace('/([A-Z]{1})/', ' \\1', $value)); $data = false; $isDefault = false; $permissionTemplate = new PermissionTemplate(); $permissionTemplate->permissionTemplateId = $permissionTemplateId; if ($permissionTemplate->populate()) { $xml = new SimpleXMLElement($permissionTemplate->template); } else { $xml = $this->_generateDefaultTemplateXML(); $isDefault = true; } $defaultModule = 'default'; $error = ''; switch ($type) { case 'resource': if (isset($xml->{$defaultModule}->{$value})) { $error = __('Resource already exists') . ': ' . $value; trigger_error($error, E_USER_NOTICE); break; } $xml->{$defaultModule}->addChild($value); $data['id'] = $value; $data['name'] = $prettyName; break; case 'permission': $resourceId = $this->_getParam('resourceId'); $mode = strtolower($this->_getParam('mode')); if (!isset($xml->{$defaultModule}->{$resourceId})) { $error = __('Resource not exists') . ': ' . $resourceId; trigger_error($error, E_USER_NOTICE); break; } $action = $xml->{$defaultModule}->{$resourceId}->addChild($mode, lcfirst($value)); $action->addAttribute('access', '0'); $newMode = ucfirst($mode); $chkMode = '_chkLabel' . $newMode; $data = $this->_generateCheckboxInputs($this->{$chkMode}, array(array('name' => $value, 'prettyName' => $prettyName, 'value' => 0)), $resourceId); break; default: $error = __('Invalid type') . ': ' . $type; trigger_error($error, E_USER_NOTICE); } if (strlen($error) > 0) { $data['error'] = $error; } else { if ($isDefault) { $aclMemKey = PermissionTemplate::ACL_MEMKEY . '_default'; $this->_memcache->set($aclMemKey, $xml->asXML()); } else { $permissionTemplate->template = $xml->asXML(); $permissionTemplate->persist(); } } $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($data); }