authdata) || !isset($session->authdata['authed']) || $session->authdata['authed'] === false) return; $cur_ctrl = $request->getControllerName(); $cur_action = $request->getActionName(); $view = Zend_Registry::get('view'); if (is_dir(FWACTIONS_PATH)) { $dir = opendir(FWACTIONS_PATH); while (($file = readdir($dir)) !== false) { if ($file == '.' || $file == '..') continue; if (preg_match('/^Action([a-zA-Z0-9_]*)\.php/', $file, $match)) { $path = FWACTIONS_PATH . '/' . $file; require_once($path); $r = new ReflectionClass($match[1]); if ($r->isSubclassOf('FWAction')) { /** * match Actions permission with the permissions of the currently logged in user, * add to menu if user has access to that action */ $required = $r->getMethod('getRequiredPermissions')->invoke(null); $menuprio = $r->getMethod('getTopNavPrio')->invoke(null); $ctrl = $r->getMethod('getController')->invoke(null); $action = $r->getMethod('getAction')->invoke(null); $text = $r->getMethod('getMenutext')->invoke(null); $role = $session->authdata['authed_role']; if ($cur_ctrl == $ctrl) # && $cur_action == $action) $aclass = ' class="active"'; else $aclass = ''; $acl = $session->authdata['authed_permissions']; if (is_array($required) && count($required) == 0) { $view->topNav('' . I18n::_($text) . '', Zend_View_Helper_Placeholder_Container_Abstract::SET, $menuprio); } else { foreach ($required as $rperm) { if ($acl->has($rperm) && $acl->isAllowed($role, $rperm, 'view')) { $view->topNav('' . I18n::_($text) . '', Zend_View_Helper_Placeholder_Container_Abstract::SET, $menuprio); break; // exit on first match } } } } } } closedir($dir); } } }