public static function Factory($default_page = null, $requireLogin = true) { $prefs = UserPreferences::Instance(EGS_USERNAME); $default_page = $prefs->getPreferenceValue('default_page', 'shared'); if ($default_page == null) { $ao = AccessObject::Instance(); $default_page = 'module,' . $ao->getDefaultModule(); } if (get_config('SETUP')) { if (defined('MODULE')) { $default_page = MODULE; } } $router = RouteParser::Instance(); $modules = array(); if (!$requireLogin || isLoggedIn()) { foreach ($router->getDispatch() as $key => $dispatch) { if (($key == 'group' || $key == 'module' || strstr($key, 'submodule')) && !empty($dispatch)) { $modules[$key] = $dispatch; } } if (empty($modules)) { // Default page contains permission type and permission name // i.e. type is group or module $array = explode(',', $default_page); $modules[$array[0]] = $array[1]; } } else { $modules['module'] = 'login'; } $al =& AutoLoader::Instance(); return $modules; }
public function index() { // dynamically generate the quick links from the permissions for the selected module $eglet = new SimpleMenuEGlet(new SimpleRenderer()); $eglet->setMenuData($this->dashboard_module, $system->pid); $eglet->setSmarty($this->view); if (count($eglet->getContents()) > 0) { $this->view->set('eglets', array('Quick Links' => $eglet)); } #$cache = Cache::Instance(); #$eglet_store = $cache->get(array('eglet_store', $this->module)); // ATTN: we're avoiding the cache because eglets are appearing (and not appearing) // where they should be. it seems the module grouping isn't actually working $eglet_store = FALSE; $ao =& AccessObject::Instance(EGS_USERNAME); if (FALSE === $eglet_store) { // get user's uzlet preferences $prefs = UserPreferences::Instance(EGS_USERNAME); $user_uzlets = $prefs->getPreferenceValue('dashboard_contents', $this->dashboard_module); $user_uzlets = is_array($user_uzlets) ? array_flip($user_uzlets) : array(); // discover what uzlet_id's belong to the module we're working with $uzlets = new UzletCollection(); $sh = new SearchHandler($uzlets, FALSE); if (count($user_uzlets) > 0) { // get the uzlet details for the user's uzlet preferences $db = DB::Instance(); $uzlet_names = array(); foreach ($user_uzlets as $name => $value) { $uzlet_names[] = $db->qstr($name); } $sh->addConstraint(new Constraint('name', 'in', '(' . implode(',', $uzlet_names) . ')')); } else { // user preferences are not set, get the default(preset) uzlets for the module $sh->addConstraint(new Constraint('preset', 'is', TRUE)); if ($this->dashboard_module == 'dashboard') { $sh->addConstraint(new Constraint('dashboard', 'is', TRUE)); // only include uzlets for modules the user has access to foreach ($ao->permissions as $permission) { if ($permission['type'] == 'm' && !empty($permission['module_id'])) { $modules[$permission['module_id']] = $permission['module_id']; } } if (count($modules) > 0) { $sh->addConstraint(new Constraint('module_id', 'in', '(' . implode(',', $modules) . ')')); } else { $sh->addConstraint(new Constraint('module_id', '=', -1)); } } else { $sh->addConstraint(new Constraint('module', '=', $this->dashboard_module)); } } $sh->addConstraint(new Constraint('enabled', 'is', TRUE)); $rows = $uzlets->load($sh, null, RETURN_ROWS); $uzlets = array(); if (!empty($rows)) { if (empty($user_uzlets)) { // no user uzlet preferences so set uzlets to the default(preset) for the module foreach ($rows as $uzlet) { $uzlets[$uzlet['name']] = $uzlet; } } else { // Preserve order of user's uzlet preferences foreach ($rows as $uzlet) { if (isset($user_uzlets[$uzlet['name']])) { $user_uzlets[$uzlet['name']] = $uzlet; } } // Remove any user's uzlet preferences that are no longer valid foreach ($user_uzlets as $name => $uzlet) { if (!is_array($uzlet)) { unset($user_uzlets[$name]); } } $uzlets = $user_uzlets; } } $this->view->set('uzlets', $uzlets); } showtime('pre-pop'); $this->view->set('can_edit', $ao->can_manage_uzlets()); }