protected static function readPackageCache()
 {
     self::$packageCache = array('hashes' => array(), 'packages' => array());
     // read accessible sources
     require_once PB_DIR . 'lib/data/source/SourceList.class.php';
     $sourceList = new SourceList();
     $sourceList->sqlLimit = 0;
     $sourceList->hasAccessCheck = true;
     $sourceList->readObjects();
     $sources = $sourceList->getObjects();
     foreach ($sources as $source) {
         self::$sources[$source->sourceID] = $source;
     }
     foreach (WCF::getUser()->getAccessibleSourceIDs() as $sourceID) {
         $cacheName = 'packages-' . $sourceID;
         WCF::getCache()->addResource($cacheName, PB_DIR . 'cache/cache.' . $cacheName . '.php', PB_DIR . 'lib/system/cache/CacheBuilderPackages.class.php');
         $cache = WCF::getCache()->get($cacheName);
         self::$packageCache['hashes'] = array_merge(self::$packageCache['hashes'], $cache['hashes']);
         self::$packageCache['packages'] = array_merge(self::$packageCache['packages'], $cache['packages']);
     }
 }