public function saveAction() { if ($param = Zend_Json::decode($this->getRequest()->getRawBody())) { try { $role = new Acl_Model_Role(); if (empty($param["role"]) or !is_array($param["role"])) { throw new Exception($this->_("An error occurred while saving. Please, try again later.")); } $role_data = $param["role"]; $resources_data = !empty($param["resources"]) ? $param["resources"] : array(); if (isset($role_data["id"])) { $role->find($role_data["id"]); } $resource = new Acl_Model_Resource(); $resources_data = $resource->flattenedResources($resources_data); $role->setResources($resources_data)->setLabel($role_data["label"])->setCode($role_data["code"])->save(); $config = new System_Model_Config(); $config->find(Acl_Model_Role::DEFAULT_ADMIN_ROLE_CODE, "code"); $default_role_id = $config->getValue(); $new_default_role_id = null; if ($default_role_id == $role->getId() and !$role_data["default"]) { $new_default_role_id = Acl_Model_Role::DEFAULT_ROLE_ID; } else { if ($role_data["default"]) { $new_default_role_id = $role->getId(); } } if (!empty($new_default_role_id)) { $config->setValue($new_default_role_id)->save(); } $data = array("success" => true, "message" => $this->_("Your role has been successfully saved")); } catch (Exception $e) { $data = array("error" => true, "message" => $e->getMessage()); } $this->_sendHtml($data); } }