public function register(Application $app) { $app['border-manager'] = $app->share(function (Application $app) { $borderManager = new Manager($app); $options = $app['conf']->get('border-manager'); $registeredCheckers = []; $borderManager->setEnabled(isset($options['enabled']) && $options['enabled']); foreach ($options['checkers'] as $checker) { if (!isset($checker['type'])) { continue; } if (isset($checker['enabled']) && $checker['enabled'] !== true) { continue; } $className = sprintf('\\Alchemy\\Phrasea\\Border\\%s', $checker['type']); if (!class_exists($className)) { $app['monolog']->error(sprintf('Border manager checker, invalid checker %s', $checker['type'])); continue; } $options = []; if (isset($checker['options']) && is_array($checker['options'])) { $options = $checker['options']; } try { $checkerObj = new $className($app, $options); if (isset($checker['databoxes'])) { $databoxes = []; foreach ($checker['databoxes'] as $sbas_id) { try { $databoxes[] = $app->findDataboxById($sbas_id); } catch (\Exception $e) { throw new \InvalidArgumentException('Invalid databox option'); } } $checkerObj->restrictToDataboxes($databoxes); } if (isset($checker['collections'])) { $collections = []; foreach ($checker['collections'] as $base_id) { try { $collections[] = \collection::get_from_base_id($app, $base_id); } catch (\Exception $e) { throw new \InvalidArgumentException('Invalid collection option'); } } $checkerObj->restrictToCollections($collections); } $registeredCheckers[] = $checkerObj; } catch (\InvalidArgumentException $e) { $app['monolog']->error(sprintf('Border manager checker InvalidArgumentException : %s', $e->getMessage())); } catch (\LogicException $e) { $app['monolog']->error(sprintf('Border manager checker LogicException : %s', $e->getMessage())); } } $borderManager->registerCheckers($registeredCheckers); return $borderManager; }); $app['border-manager.mime-guesser-configuration'] = $app->share(function (Application $app) { return new MimeGuesserConfiguration($app['conf']); }); }