Пример #1
0
 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;
 }
Пример #2
0
 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());
 }