/** * Sync action for resource controller */ public function syncAction() { $translate = Zend_Registry::get('Zend_Translate'); try { $mdlResource = new Acl_Model_Resource(); $registeredList = $mdlResource->getRegisteredList(); #print_r($registeredList); #die(); $resourcesAvailable = array(); $sxe = new SimpleXMLElement(APPLICATION_PATH . '/../.zfproject.xml', null, true); foreach ($sxe->projectDirectory->applicationDirectory->modulesDirectory->moduleDirectory as $module) { #echo "<h1>Modulo:".$module['moduleName']."</h1>"; foreach ($module->controllersDirectory->controllerFile as $controller) { #echo "<h2>controlador: ".$controller['controllerName']."<h2>"; foreach ($controller->actionMethod as $action) { #echo "<h3>action: ".$action['actionName']."<h3>"; $resourcesAvailable[] = $module['moduleName'] . '-' . $controller['controllerName'] . '-' . $action['actionName']; } } } foreach ($resourcesAvailable as $rsa) { $isRegistered = false; foreach ($registeredList as $rsRegistered) { $rsTemp = $rsRegistered->module . '-' . $rsRegistered->controller . '-' . $rsRegistered->actioncontroller; if (strcasecmp($rsa, $rsTemp) == 0) { $isRegistered = true; } } if (!$isRegistered) { $arrResource = explode('-', $rsa); $resource = $mdlResource->createRow(); $resource->module = $arrResource[0]; $resource->controller = $arrResource[1]; $resource->actioncontroller = $arrResource[2]; $resource->save(); } } /* @var $cache Zend_Cache_Backend_File */ $cache = Zend_Registry::get('cacheACL'); $mdlRole = new Acl_Model_Role(); $roles = $mdlRole->getRoles(); foreach ($roles as $role) { if ($cache->test('cacheACL_' . $role->id)) { $cache->remove('cacheACL_' . $role->id); } } $this->_helper->flashMessenger->addMessage(array('type' => 'info', 'header' => '', 'message' => $translate->translate("ACL_RESOURCES_SYNCD"))); return $this->_helper->redirector("list", "resource", "acl"); } catch (Exception $e) { $this->_helper->flashMessenger->addMessage(array('type' => 'error', 'header' => '', 'message' => $e->getMessage())); return $this->_helper->redirector("list", "resource", "acl"); } return; }