/** * 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(); } }