public static function load($className, $canRecurse = true) { if (!$canRecurse) { LogMe::write("Missing {$className} from cache"); showLoadedClasses($className, "Eval Missing {$className} from cache"); } /** only try to load MemberMouse classes **/ if (strpos($className, "MM_") !== 0 && !preg_match("/LogMe/", $className)) { return false; } $exclusions = array("MemberMouse"); if (in_array($className, $exclusions)) { return false; } /** end exclusions **/ $classFileName = str_replace("MM_", "", $className); if (self::includeLimitedLocalFiles($className, $classFileName)) { return true; } $forceUseDBCache = MM_OptionUtils::getOption(MM_OptionUtils::$OPTION_KEY_FORCE_USE_DB_CACHE) == "1" ? true : false; if (isLocalInstall("localhost") && !$forceUseDBCache) { // look locally if (self::includeLocalFiles($className, $classFileName)) { return true; } if (class_exists($className, false) || interface_exists($className, false)) { return true; } else { if (self::includeCacheFiles($className, $classFileName)) { return true; } /// get db class if (self::includeDBClass($className, $classFileName)) { if ($classFileName != "MemberMouseService") { MM_Session::value(MM_Session::$KEY_USING_DB_CACHE, true); } return true; } } } else { if (class_exists($className, false) || interface_exists($className, false)) { return true; } else { if (self::includeCacheFiles($className, $classFileName)) { return true; } // get class from DB if (self::includeDBClass($className, $classFileName)) { if ($classFileName != "MemberMouseService") { MM_Session::value(MM_Session::$KEY_USING_DB_CACHE, true); } return true; } } // look locally if (self::includeLocalFiles($className, $classFileName)) { return true; } } //if execution gets here, then a needed class is unloadable, meaning its not in the cache or in the dbcache //reauth if we haven't already done so in the last 10 mins, and attempt to populate both $lastAuth = MM_OptionUtils::getOption(MM_OptionUtils::$OPTION_KEY_LAST_CODE_REFRESH); $minInterval = time() - 600; //(600 secs = 10 min) if ($canRecurse && class_exists("MM_MemberMouseService") && (empty($lastAuth) || $lastAuth <= $minInterval)) { $authSuccess = MM_MemberMouseService::authorize(); MM_OptionUtils::setOption(MM_OptionUtils::$OPTION_KEY_LAST_CODE_REFRESH, time()); if ($authSuccess) { return MM_ClassLoader::load($className, false); //this will break if the session doesnt work.. but then you have bigger problems... } } return false; }