Exemplo n.º 1
0
 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
     }
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 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
     }
 }