コード例 #1
0
 /**
  * Set up application data, etc.
  *
  * @return	@e void
  * @author	MattMecham
  */
 protected static function _finalizeAppData()
 {
     //-----------------------------------------
     // Run the app class post output func
     //-----------------------------------------
     $app_class = self::getAppClass(IPS_APP_COMPONENT);
     if ($app_class and method_exists($app_class, 'afterOutputInit')) {
         $app_class->afterOutputInit(self::instance());
     }
     //-----------------------------------------
     // Version numbers
     //-----------------------------------------
     if (strpos(self::$acpversion, '.') !== false) {
         list($n, $b, $r) = explode(".", self::$acpversion);
     } else {
         $n = $b = $r = '';
     }
     self::$vn_full = self::$acpversion;
     self::$acpversion = $n;
     self::$vn_build_date = $b;
     self::$vn_build_reason = $r;
     # Figure out default modules, etc
     $_module = IPSText::alphanumericalClean(ipsRegistry::$request['module']);
     $_first = '';
     //-----------------------------------------
     // Set up some defaults
     //-----------------------------------------
     ipsRegistry::$current_application = IPS_APP_COMPONENT;
     if (IPS_AREA == 'admin') {
         //-----------------------------------------
         // Application: Do we have permission?
         //-----------------------------------------
         if (ipsRegistry::$request['module'] != 'login') {
             ipsRegistry::getClass('class_permissions')->return = 0;
             ipsRegistry::getClass('class_permissions')->checkForAppAccess(IPS_APP_COMPONENT);
             ipsRegistry::getClass('class_permissions')->return = 1;
         }
         //-----------------------------------------
         // Got a module
         //-----------------------------------------
         if (ipsRegistry::$request['module'] == 'ajax') {
             $_module = 'ajax';
         } else {
             $fakeApps = ipsRegistry::getClass('output')->fetchFakeApps();
             foreach (ipsRegistry::$modules as $app => $items) {
                 if (is_array($items)) {
                     foreach ($items as $data) {
                         if ($data['sys_module_admin'] and $data['sys_module_application'] == ipsRegistry::$current_application) {
                             if (!$_first) {
                                 # Got permission for this one?
                                 ipsRegistry::getClass('class_permissions')->return = 1;
                                 if (ipsRegistry::getClass('class_permissions')->checkForModuleAccess($data['sys_module_application'], $data['sys_module_key']) === TRUE) {
                                     if (is_dir(IPSLib::getAppDir($data['sys_module_application']) . "/modules_admin/{$data['sys_module_key']}") === TRUE) {
                                         $isFakeApp = false;
                                         foreach ($fakeApps as $tab => $apps) {
                                             foreach ($apps as $thisApp) {
                                                 if ($thisApp['app'] == $app and $thisApp['module'] == $data['sys_module_key']) {
                                                     $isFakeApp = true;
                                                 }
                                             }
                                         }
                                         if (!$isFakeApp) {
                                             $_first = $data['sys_module_key'];
                                         }
                                     }
                                 }
                                 ipsRegistry::getClass('class_permissions')->return = 0;
                             }
                             if (ipsRegistry::$request['module'] == $data['sys_module_key']) {
                                 $_module = $data['sys_module_key'];
                                 break;
                             }
                         }
                     }
                 }
             }
         }
     } else {
         //-----------------------------------------
         // Got a module?
         //-----------------------------------------
         if ($_module == 'ajax') {
             $_module = 'ajax';
         } else {
             foreach (ipsRegistry::$modules as $app => $items) {
                 if (is_array($items)) {
                     foreach ($items as $data) {
                         if (!$data['sys_module_admin'] and $data['sys_module_application'] == ipsRegistry::$current_application) {
                             if (!$_first) {
                                 $_first = $data['sys_module_key'];
                             }
                             if ($_module == $data['sys_module_key']) {
                                 $_module = $data['sys_module_key'];
                                 break;
                             }
                         }
                     }
                 }
             }
         }
     }
     //-----------------------------------------
     // Finish off...
     //-----------------------------------------
     ipsRegistry::$current_module = $_module ? $_module : $_first;
     ipsRegistry::$current_section = ipsRegistry::$request['section'] ? ipsRegistry::$request['section'] : '';
     /* Clean */
     ipsRegistry::$current_module = IPSText::alphanumericalClean(ipsRegistry::$current_module);
     ipsRegistry::$current_section = IPSText::alphanumericalClean(ipsRegistry::$current_section);
     IPSDebug::addMessage("Setting current module to: " . ipsRegistry::$current_module . " and current section to: " . ipsRegistry::$current_section);
     if (IPS_AREA == 'admin') {
         //-----------------------------------------
         // Module: Do we have permission?
         //-----------------------------------------
         ipsRegistry::getClass('class_permissions')->return = 0;
         ipsRegistry::getClass('class_permissions')->checkForModuleAccess(ipsRegistry::$current_application, ipsRegistry::$current_module);
         ipsRegistry::getClass('class_permissions')->return = 1;
     }
 }