/** * 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; } }