/**
  * Returns a list of WCFSetup resources.
  * 
  * @return	array<array>
  */
 protected function getResources()
 {
     $cache = $this->getCache('wcfSetupResource', 'WcfSetupResource');
     $resources = array(array('label' => '', 'path' => ''));
     $sourceList = new SourceList();
     $sourceList->sqlConditions = "source.sourceID IN (" . implode(',', WCF::getUser()->getAccessibleSourceIDs()) . ")";
     $sourceList->sqlLimit = 0;
     $sourceList->readObjects();
     foreach ($sourceList->getObjects() as $source) {
         if (!isset($cache[$source->sourceID])) {
             continue;
         }
         foreach ($cache[$source->sourceID] as $resource) {
             $resources[] = array('label' => $source->name . ' :: ' . FileUtil::getRelativePath($source->sourceDirectory, $resource), 'path' => $resource);
         }
     }
     return $resources;
 }
 /**
  * @see	Page::readData()
  */
 public function readData()
 {
     parent::readData();
     // get accessible sources
     $sourceList = new SourceList();
     $sourceList->sqlLimit = 0;
     $sourceList->hasAccessCheck = true;
     $sourceList->readObjects();
     foreach ($sourceList->getObjects() as $source) {
         $this->accessibleSources[] = $source->sourceID;
         $cache = $this->getCache('packages-' . $source->sourceID, 'Packages');
         foreach ($cache['packages'] as $package) {
             if (!in_array($package['packageName'], $this->packages[$package['packageType']])) {
                 $this->packages[$package['packageType']][] = $package['packageName'];
             }
         }
     }
     sort($this->packages['plugin'], SORT_STRING);
     sort($this->packages['standalone'], SORT_STRING);
 }
 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']);
     }
 }
 /**
  * Reads-in a source
  *
  * @return	boolean	source is valid
  */
 public function readSource()
 {
     $this->source = new Source($this->sourceID);
     if (!$this->source->sourceID || !$this->source->hasAccess()) {
         throw new IllegalLinkException();
     }
     // other sources
     if ($this->otherSources) {
         $sourceList = new SourceList();
         $sourceList->checkHasAccess = true;
         $sourceList->sqlConditions = 'source.sourceID <> ' . $this->source->sourceID;
         $sourceList->readObjects();
         $this->sources = $sourceList->getObjects();
     }
 }