plugins = $plugins; $this->theme = $theme; } /** * @return string[] */ public function getPlugins() { return $this->plugins; } /** * $return UIAssetCatalog */ public function getCatalog() { if($this->catalog == null) $this->createCatalog(); return $this->catalog; } abstract protected function retrieveFileLocations(); /** * @return string[] */ abstract protected function getPriorityOrder(); private function createCatalog() { $this->retrieveFileLocations(); $this->initCatalog(); $this->populateCatalog(); $this->sortCatalog(); } private function initCatalog() { $catalogSorter = new UIAssetCatalogSorter($this->getPriorityOrder()); $this->catalog = new UIAssetCatalog($catalogSorter); } private function populateCatalog() { foreach ($this->fileLocations as $fileLocation) { $newUIAsset = new OnDiskUIAsset($this->getBaseDirectory(), $fileLocation); $this->catalog->addUIAsset($newUIAsset); } } private function sortCatalog() { $this->catalog = $this->catalog->getSortedCatalog(); } /** * @return string */ private function getBaseDirectory() { // served by web server directly, so must be a public path return PIWIK_USER_PATH; } /** * @return Theme */ public function getTheme() { return $this->theme; } }