public function init() { $repositoryFactory = new RepositoryFactory(); if ($this->getConfigService()->hasConfigurationSection('repositories')) { $config = $this->getConfigService()->getConfigurationSection('repositories'); foreach ($config as $k => $params) { if (!is_array($params)) { $params = ['type' => 'rlike-v1', 'url' => $params]; } $options = []; $cacheKeyContentTypes = 'sessioncache.repository.' . $k . '.contenttypes'; $cacheKeyConfigTypes = 'sessioncache.repository.' . $k . '.configtypes'; if ($this->getSession()->has($cacheKeyContentTypes)) { $options['contenttypes'] = $this->getSession()->get($cacheKeyContentTypes); } if ($this->getSession()->has($cacheKeyConfigTypes)) { $options['configtypes'] = $this->getSession()->get($cacheKeyConfigTypes); } switch ($params['type']) { case 'rlike-v1': $repository = $repositoryFactory->createRestLikeRepository($k, $params['url'], $options); $repository->setPublicUrl($params['url']); if (isset($params['files'])) { $fileManager = $repository->getFileManager(); if ($fileManager) { $fileManager->setPublicUrl($params['files']); } } break; } if (!$this->getSession()->has($cacheKeyContentTypes)) { $this->getSession()->set($cacheKeyContentTypes, $repository->getContentTypeNames()); } if (!$this->getSession()->has($cacheKeyConfigTypes)) { $this->getSession()->set($cacheKeyConfigTypes, $repository->getConfigTypeNames()); } $repository = $this->app->getClient()->addRepository($repository); $this->addRepository($repository->getName(), $repository, $repository->getTitle()); } } }