static function getCachedActionsMapping() { $sCacheFile = self::filenameCachedActionsMapping(); if (!file_exists($sCacheFile)) { throw new AnwCacheNotFoundException(); } //mapping must be newer than enabled-plugins-settings try { if (filemtime($sCacheFile) < filemtime(AnwUtils::getFileOverride("global.cfg.php", AnwComponent::getGlobalComponentFullDir()))) { self::debug("cachedActionsMapping obsoleted by settings"); throw new AnwCacheNotFoundException(); } } catch (AnwFileNotFoundException $e) { } //no override config //mapping must be newer than each available action $asEnabledActions = AnwComponent::getAvailableComponents(AnwComponent::TYPE_ACTION); foreach ($asEnabledActions as $sEnabledAction) { $asActionsFilesLocations = array(); $sActionFile = 'action_' . $sEnabledAction . '.php'; $sActionDir = AnwAction::getComponentDir($sEnabledAction); list($sFileActionDefault, $null) = AnwUtils::getFileDefault($sActionFile, $sActionDir); $asActionsFilesLocations[] = $sFileActionDefault; try { $sFileActionOverride = AnwUtils::getFileOverride($sActionDir, $sActionDir); $asActionsFilesLocations[] = $sFileActionOverride; } catch (AnwFileNotFoundException $e) { } //no override config foreach ($asActionsFilesLocations as $sActionFileLocation) { if (file_exists($sActionFileLocation) && filemtime($sCacheFile) < filemtime($sActionFileLocation)) { self::debug("cachedActionsMapping obsoleted by action : " . $sEnabledAction); throw new AnwCacheNotFoundException(); } } } //load it from cache $oObject = (array) self::getCachedObject($sCacheFile); if (!is_array($oObject)) { self::debug("cachedActionsMapping invalid : " . $sCacheFile); throw new AnwCacheNotFoundException(); } else { self::debug("cachedActionsMapping found : " . $sCacheFile); } return $oObject; }
static function loadComponentInterface($sName) { $sFile = 'contentclass_' . $sName . '-interface.php'; $sDir = self::getComponentDir($sName); try { list($sFileDefault, $bIsAddon) = AnwUtils::getFileDefault($sFile, $sDir); loadApp($sFileDefault); } catch (AnwFileNotFoundException $e) { //no interface found for this class } }
protected static function requireCustomOrDefault($sFile, $sDir, $sClassNamePrefix, $bIsAddon = -1) { $sClassNameDefault = str_replace('%%', 'Default', $sClassNamePrefix); //from ANWPATH_DEFAULT and ANWPATH_ADDONS $sClassNameOverride = str_replace('%%', 'Override', $sClassNamePrefix); //skip if already loaded //TODO: (in some case, we may have already loaded a contentclass //when several contentclasses are defined in the same file) if (class_exists($sClassNameOverride, false)) { //throw new AnwUnexpectedException("requireCustomOrDefault : ".$sClassNameOverride." is ALREADY LOADED!"); AnwDebug::log("requireCustomOrDefault : " . $sClassNameOverride . " is ALREADY LOADED!"); list($null, $bIsAddon) = AnwUtils::getFileDefault($sFile, $sDir); return array($sClassNameOverride, $bIsAddon); } else { if (class_exists($sClassNameDefault, false)) { //throw new AnwUnexpectedException("requireCustomOrDefault : ".$sClassNameDefault." is ALREADY LOADED!"); AnwDebug::log("requireCustomOrDefault : " . $sClassNameDefault . " is ALREADY LOADED!"); list($null, $bIsAddon) = AnwUtils::getFileDefault($sFile, $sDir); return array($sClassNameDefault, $bIsAddon); } } //firstly, load default if ($bIsAddon != -1) { //we already know where is the default file $sFileName = ($bIsAddon ? ANWPATH_ADDONS : ANWPATH_DEFAULT) . $sDir . $sFile; } else { //we don't know where is the default file... let's search in ADDONS and DEFAULT directories list($sFileName, $bIsAddon) = AnwUtils::getFileDefault($sFile, $sDir); } AnwDebug::log("Loading default : " . $sFileName); loadApp($sFileName); $classname = $sClassNameDefault; //load override if any try { $sFileName = AnwUtils::getFileOverride($sFile, $sDir); AnwDebug::log("Loading override : " . $sFileName); loadApp($sFileName); $classname = $sClassNameOverride; } catch (AnwException $e) { } return array($classname, $bIsAddon); }
static function loadContentClassInterfaceFaster($sName) { $sFile = 'contentclass_' . $sName . '-interface.php'; $sDir = ANWDIR_CONTENTCLASSES . 'contentclass_' . $sName . '/'; try { list($sFileDefault, $bIsAddon) = AnwUtils::getFileDefault($sFile, $sDir); loadApp($sFileDefault); } catch (AnwFileNotFoundException $e) { //no interface found for this class } }