예제 #1
0
 private static function getFSInfo(core_kernel_versioning_Repository $fileSystem)
 {
     if (is_null(self::$cache)) {
         try {
             self::$cache = common_cache_FileCache::singleton()->get(self::SERIAL);
         } catch (common_cache_NotFoundException $e) {
             self::$cache = array();
         }
     }
     if (!isset(self::$cache[$fileSystem->getUri()])) {
         $props = $fileSystem->getPropertiesValues(array(PROPERTY_GENERIS_VERSIONEDREPOSITORY_PATH, PROPERTY_GENERIS_VERSIONEDREPOSITORY_TYPE));
         if (count($props[PROPERTY_GENERIS_VERSIONEDREPOSITORY_PATH]) == 1 && count($props[PROPERTY_GENERIS_VERSIONEDREPOSITORY_TYPE]) == 1) {
             self::$cache[$fileSystem->getUri()] = array(PROPERTY_GENERIS_VERSIONEDREPOSITORY_PATH => current($props[PROPERTY_GENERIS_VERSIONEDREPOSITORY_PATH]), PROPERTY_GENERIS_VERSIONEDREPOSITORY_TYPE => current($props[PROPERTY_GENERIS_VERSIONEDREPOSITORY_TYPE]));
             common_cache_FileCache::singleton()->put(self::$cache, self::SERIAL);
         } else {
             throw new common_exception_InconsistentData('Filesystem ' . $fileSystem->getUri() . ' has ' . count($props[PROPERTY_GENERIS_VERSIONEDREPOSITORY_PATH]) . ' path entries and ' . count($props[PROPERTY_GENERIS_VERSIONEDREPOSITORY_PATH]) . ' type entries');
         }
     }
     return self::$cache[$fileSystem->getUri()];
 }