public function register(Application $app)
 {
     $app['ffmpeg.configuration'] = array();
     $app['ffmpeg.default.configuration'] = array('ffmpeg.threads' => 4, 'ffmpeg.timeout' => 300, 'ffmpeg.binaries' => array('avconv', 'ffmpeg'), 'ffprobe.timeout' => 30, 'ffprobe.binaries' => array('avprobe', 'ffprobe'));
     $app['ffmpeg.logger'] = null;
     $app['ffmpeg.configuration.build'] = $app->share(function (Application $app) {
         return array_replace($app['ffmpeg.default.configuration'], $app['ffmpeg.configuration']);
     });
     $app['ffmpeg'] = $app['ffmpeg.ffmpeg'] = $app->share(function (Application $app) {
         $configuration = $app['ffmpeg.configuration.build'];
         if (isset($configuration['ffmpeg.timeout'])) {
             $configuration['timeout'] = $configuration['ffmpeg.timeout'];
         }
         return FFMpeg::create($configuration, $app['ffmpeg.logger'], $app['ffmpeg.ffprobe']);
     });
     $app['ffprobe.cache'] = $app->share(function () {
         return new ArrayCache();
     });
     $app['ffmpeg.ffprobe'] = $app->share(function (Application $app) {
         $configuration = $app['ffmpeg.configuration.build'];
         if (isset($configuration['ffmpeg.timeout'])) {
             $configuration['timeout'] = $configuration['ffprobe.timeout'];
         }
         return FFProbe::create($configuration, $app['ffmpeg.logger'], $app['ffprobe.cache']);
     });
 }
 public function register(Application $app)
 {
     $app['csv.exporter.config'] = $app->share(function () {
         $config = new ExporterConfig();
         return $config->setDelimiter(";")->setEnclosure('"')->setEscape("\\")->setToCharset('UTF-8')->setFromCharset('UTF-8');
     });
     $app['csv.exporter'] = $app->share(function ($app) {
         return new Exporter($app['csv.exporter.config']);
     });
     $app['csv.lexer.config'] = $app->share(function ($app) {
         $lexer = new LexerConfig();
         $lexer->setDelimiter(';')->setEnclosure('"')->setEscape("\\")->setToCharset('UTF-8')->setFromCharset('UTF-8');
         return $lexer;
     });
     $app['csv.lexer'] = $app->share(function ($app) {
         return new Lexer($app['csv.lexer.config']);
     });
     $app['csv.interpreter'] = $app->share(function ($app) {
         return new Interpreter();
     });
     $app['csv.response'] = $app->protect(function ($callback) use($app) {
         // set headers to fix ie issues
         $response = new StreamedResponse($callback, 200, ['Expires' => 'Mon, 26 Jul 1997 05:00:00 GMT', 'Last-Modified' => gmdate('D, d M Y H:i:s') . ' GMT', 'Cache-Control' => 'no-store, no-cache, must-revalidate', 'Cache-Control' => 'post-check=0, pre-check=0', 'Pragma' => 'no-cache', 'Content-Type' => 'text/csv', 'Cache-Control' => 'max-age=3600, must-revalidate', 'Content-Disposition' => 'max-age=3600, must-revalidate']);
         $response->headers->set('Content-Disposition', $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'export.csv'));
     });
 }
 /**
  * Returns routes to connect to the given application.
  *
  * @param Application $app An Application instance
  *
  * @return ControllerCollection A ControllerCollection instance
  */
 public function connect(Application $app)
 {
     $app['role_controller'] = $app->share(function (Application $app) {
         return new ReadRoleRestController($app['role_service'], $app['role_reading_service'], $app['current_user'], $app['config']['user_permissions'], $app['role_search_repository'], $app[UserPermissionsServiceProvider::USER_PERMISSIONS_READ_REPOSITORY]);
     });
     $app['role_edit_controller'] = $app->share(function (Application $app) {
         return new EditRoleRestController($app['role_editing_service'], $app['event_command_bus'], new UpdateRoleRequestDeserializer(), $app[LabelServiceProvider::READ_SERVICE]);
     });
     /** @var ControllerCollection $controllers */
     $controllers = $app['controllers_factory'];
     $controllers->get('/roles/', 'role_controller:search');
     $controllers->post('/roles/', 'role_edit_controller:create');
     $controllers->get('/roles/{id}', 'role_controller:get')->bind('role');
     $controllers->patch('/roles/{id}', 'role_edit_controller:update');
     $controllers->delete('/roles/{id}', 'role_edit_controller:delete');
     $controllers->get('/permissions/', 'role_controller:getPermissions');
     $controllers->get('/user/permissions/', 'role_controller:getUserPermissions');
     $controllers->get('/roles/{roleId}/users/', 'role_controller:getRoleUsers');
     $controllers->put('/roles/{roleId}/permissions/{permissionKey}', 'role_edit_controller:addPermission');
     $controllers->delete('/roles/{roleId}/permissions/{permissionKey}', 'role_edit_controller:removePermission');
     $controllers->get('/roles/{roleId}/labels/', 'role_controller:getRoleLabels');
     $controllers->put('/roles/{roleId}/labels/{labelIdentifier}', 'role_edit_controller:addLabel');
     $controllers->delete('/roles/{roleId}/labels/{labelIdentifier}', 'role_edit_controller:removeLabel');
     $controllers->put('/roles/{roleId}/users/{userId}', 'role_edit_controller:addUser');
     $controllers->delete('/roles/{roleId}/users/{userId}', 'role_edit_controller:removeUser');
     $controllers->get('/users/{userId}/roles/', 'role_controller:getUserRoles');
     $controllers->get('/user/roles/', 'role_controller:getCurrentUserRoles');
     return $controllers;
 }
 public function register(Application $app)
 {
     $app['translator'] = $app->share(function ($app) {
         $translator = new Translator($app, $app['translator.message_selector'], $app['translator.cache_dir'], $app['debug']);
         // Handle deprecated 'locale_fallback'
         if (isset($app['locale_fallback'])) {
             $app['locale_fallbacks'] = (array) $app['locale_fallback'];
         }
         $translator->setFallbackLocales($app['locale_fallbacks']);
         $translator->addLoader('array', new ArrayLoader());
         $translator->addLoader('xliff', new XliffFileLoader());
         foreach ($app['translator.domains'] as $domain => $data) {
             foreach ($data as $locale => $messages) {
                 $translator->addResource('array', $messages, $locale, $domain);
             }
         }
         return $translator;
     });
     $app['translator.message_selector'] = $app->share(function () {
         return new MessageSelector();
     });
     $app['translator.domains'] = array();
     $app['locale_fallbacks'] = array('en');
     $app['translator.cache_dir'] = null;
 }
 public function register(Application $app)
 {
     $this->app = $app;
     $app['session.test'] = false;
     $app['session'] = $app->share(function ($app) {
         if (!isset($app['session.storage'])) {
             if ($app['session.test']) {
                 $app['session.storage'] = $app['session.storage.test'];
             } else {
                 $app['session.storage'] = $app['session.storage.native'];
             }
         }
         return new Session($app['session.storage']);
     });
     $app['session.storage.handler'] = $app->share(function ($app) {
         return new NativeFileSessionHandler($app['session.storage.save_path']);
     });
     $app['session.storage.native'] = $app->share(function ($app) {
         return new NativeSessionStorage($app['session.storage.options'], $app['session.storage.handler']);
     });
     $app['session.storage.test'] = $app->share(function () {
         return new MockFileSessionStorage();
     });
     $app['session.storage.options'] = array();
     $app['session.default_locale'] = 'en';
     $app['session.storage.save_path'] = null;
 }
 public function register(Application $app)
 {
     $app['logger'] = function () use($app) {
         return $app['monolog'];
     };
     if ($bridge = class_exists('Symfony\\Bridge\\Monolog\\Logger')) {
         $app['monolog.handler.debug'] = function () use($app) {
             $level = MonologServiceProvider::translateLevel($app['monolog.level']);
             return new DebugHandler($level);
         };
     }
     $app['monolog.logger.class'] = $bridge ? 'Symfony\\Bridge\\Monolog\\Logger' : 'Monolog\\Logger';
     $app['monolog'] = $app->share(function ($app) {
         $log = new $app['monolog.logger.class']($app['monolog.name']);
         $log->pushHandler($app['monolog.handler']);
         if ($app['debug'] && isset($app['monolog.handler.debug'])) {
             $log->pushHandler($app['monolog.handler.debug']);
         }
         return $log;
     });
     $app['monolog.handler'] = function () use($app) {
         $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         return new StreamHandler($app['monolog.logfile'], $level, $app['monolog.bubble'], $app['monolog.permission']);
     };
     $app['monolog.level'] = function () {
         return Logger::DEBUG;
     };
     $app['monolog.listener'] = $app->share(function () use($app) {
         return new LogListener($app['logger']);
     });
     $app['monolog.name'] = 'myapp';
     $app['monolog.bubble'] = true;
     $app['monolog.permission'] = null;
 }
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     $app['email.support'] = '*****@*****.**';
     $app['logger.message_generator'] = function () use($app) {
         $message = \Swift_Message::newInstance();
         $message->setSubject('Error report from ' . $_SERVER['HTTP_HOST'])->setFrom($app['email.support'])->setTo($app['email.support']);
         return $message;
     };
     $app['logger.swift_mailer_handler'] = $app->share(function ($app) {
         $handler = new SwiftMailerHandler($app['mailer'], $app['logger.message_generator'], Logger::DEBUG);
         $handler->setTransport($app['swiftmailer.transport']);
         return $handler;
     });
     if (!$app['debug']) {
         if ($this->send_emails) {
             $app['monolog'] = $app->share($app->extend('monolog', function ($monolog, $app) {
                 /** @var $monolog Logger */
                 $bufferHander = new BufferHandler($app['logger.swift_mailer_handler']);
                 $fingersCrossedHandler = new FingersCrossedHandler($bufferHander, Logger::ERROR, 200);
                 $monolog->pushHandler($fingersCrossedHandler);
                 return $monolog;
             }));
         }
     }
 }
 public function register(Application $app)
 {
     $app['task-manager.logger'] = $app->share(function (Application $app) {
         $logger = new $app['monolog.logger.class']('task-manager logger');
         $logger->pushHandler(new NullHandler());
         return $logger;
     });
     $app['task-manager'] = $app->share(function (Application $app) {
         $options = $app['task-manager.listener.options'];
         $manager = TaskManager::create($app['dispatcher'], $app['task-manager.logger'], $app['task-manager.task-list'], ['listener_protocol' => $options['protocol'], 'listener_host' => $options['host'], 'listener_port' => $options['port'], 'tick_period' => 1]);
         $manager->addSubscriber($app['ws.task-manager.broadcaster']);
         return $manager;
     });
     $app['task-manager.logger.configuration'] = $app->share(function (Application $app) {
         $conf = array_replace(['enabled' => true, 'level' => 'INFO', 'max-files' => 10], $app['conf']->get(['main', 'task-manager', 'logger'], []));
         $conf['level'] = defined('Monolog\\Logger::' . $conf['level']) ? constant('Monolog\\Logger::' . $conf['level']) : Logger::INFO;
         return $conf;
     });
     $app['task-manager.task-list'] = $app->share(function (Application $app) {
         $conf = $app['conf']->get(['registry', 'executables', 'php-conf-path']);
         $finder = new PhpExecutableFinder();
         $php = $finder->find();
         return new TaskList($app['EM']->getRepository('Phraseanet:Task'), $app['root.path'], $php, $conf);
     });
 }
 public function register(Application $app)
 {
     $app['nut'] = $app->share(function ($app) {
         $console = new NutApplication();
         $console->setName('Bolt console tool - Nut');
         if ($app instanceof \Bolt\Application) {
             $console->setVersion($app->getVersion());
         }
         $console->addCommands($app['nut.commands']);
         return $console;
     });
     $app['nut.commands'] = $app->share(function ($app) {
         return [new Nut\CronRunner($app), new Nut\CacheClear($app), new Nut\Info($app), new Nut\LogTrim($app), new Nut\LogClear($app), new Nut\DatabaseCheck($app), new Nut\DatabaseExport($app), new Nut\DatabaseImport($app), new Nut\DatabasePrefill($app), new Nut\DatabaseRepair($app), new Nut\TestRunner($app), new Nut\ConfigGet($app), new Nut\ConfigSet($app), new Nut\Extensions($app), new Nut\ExtensionsEnable($app), new Nut\ExtensionsDisable($app), new Nut\UserAdd($app), new Nut\UserResetPassword($app), new Nut\UserRoleAdd($app), new Nut\UserRoleRemove($app)];
     });
     $app['nut.commands.add'] = $app->protect(function (Command $command) use($app) {
         $app['nut.commands'] = $app->share($app->extend('nut.commands', function ($commands) use($command) {
             $commands[] = $command;
             return $commands;
         }));
     });
     // Maintain backwards compatibility
     $app['console'] = $app->share(function ($app) {
         return $app['nut'];
     });
 }
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     $app['application.speakers'] = $app->share(function ($app) {
         $userMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\User');
         $talkMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\Talk');
         $speakerRepository = new SpotSpeakerRepository($userMapper);
         return new Speakers(new CallForProposal(new \DateTime($app->config('application.enddate'))), new SentryIdentityProvider($app['sentry'], $speakerRepository), $speakerRepository, new SpotTalkRepository($talkMapper), new EventDispatcher());
     });
     $app['security.random'] = $app->share(function ($app) {
         return new PseudoRandomStringGenerator(new Factory());
     });
     $app['oauth.resource'] = $app->share(function ($app) {
         $sessionStorage = new SessionStorage();
         $accessTokenStorage = new AccessTokenStorage();
         $clientStorage = new ClientStorage();
         $scopeStorage = new ScopeStorage();
         $server = new ResourceServer($sessionStorage, $accessTokenStorage, $clientStorage, $scopeStorage);
         return $server;
     });
     $app['application.speakers.api'] = $app->share(function ($app) {
         $userMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\User');
         $talkMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\Talk');
         $speakerRepository = new SpotSpeakerRepository($userMapper);
         return new Speakers(new CallForProposal(new \DateTime($app->config('application.enddate'))), new OAuthIdentityProvider($app['oauth.resource'], $speakerRepository), $speakerRepository, new SpotTalkRepository($talkMapper), new EventDispatcher());
     });
 }
 /**
  * @inheritdoc
  */
 public function register(Application $app)
 {
     $app['saved_searches_service_factory'] = $app->share(function ($app) {
         $consumer = new Consumer($app['config']['uitid']['base_url'], $app['culturefeed_consumer_credentials']);
         return new SavedSearchesServiceFactory($consumer);
     });
     $app['saved_searches'] = $app->share(function (Application $app) {
         /* @var \CultuurNet\UDB3\SavedSearches\SavedSearchesServiceFactory $serviceFactory */
         $serviceFactory = $app['saved_searches_service_factory'];
         $tokenCredentials = $app['culturefeed_token_credentials'];
         return $serviceFactory->withTokenCredentials($tokenCredentials);
     });
     $app['saved_searches_logger'] = $app->share(function (Application $app) {
         $logger = new \Monolog\Logger('saved_searches');
         $logger->pushHandler(new \Monolog\Handler\StreamHandler(__DIR__ . '/../../log/saved_searches.log'));
         return $logger;
     });
     $app['saved_searches_repository'] = $app->share(function (Application $app) {
         $uitIDRepository = new UiTIDSavedSearchRepository($app['saved_searches']);
         $uitIDRepository->setLogger($app['saved_searches_logger']);
         $user = $app['current_user'];
         $fixedRepository = new FixedSavedSearchRepository($user);
         $repository = new CombinedSavedSearchRepository($fixedRepository, $uitIDRepository);
         return $repository;
     });
 }
 /**
  * @inheritdoc
  */
 public function connect(Application $app)
 {
     $app['event_controller'] = $app->share(function (Application $app) {
         return new ReadEventRestController($app['event_service'], $app['event_history_repository']);
     });
     $app['event_editing_controller'] = $app->share(function (Application $app) {
         return new EditEventRestController($app['event_service'], $app['event_editor'], $app['used_labels_memory'], $app['current_user'], $app['media_manager'], $app['event_iri_generator'], $app['offer.security']);
     });
     /* @var ControllerCollection $controllers */
     $controllers = $app['controllers_factory'];
     $controllers->get('event/{cdbid}', 'event_controller:get')->bind('event');
     $controllers->delete('event/{cdbid}', 'event_editing_controller:deleteEvent');
     $controllers->get('event/{cdbid}/history', 'event_controller:history')->bind('event-history');
     $controllers->post('event', "event_editing_controller:createEvent");
     $controllers->get('event/{cdbid}/permission', 'event_editing_controller:hasPermission');
     $controllers->post('event/{itemId}/images', 'event_editing_controller:addImage');
     $controllers->post('event/{itemId}/images/main', 'event_editing_controller:selectMainImage');
     $controllers->post('event/{itemId}/images/{mediaObjectId}', 'event_editing_controller:updateImage');
     $controllers->delete('event/{itemId}/images/{mediaObjectId}', 'event_editing_controller:removeImage');
     $controllers->post('event/{cdbid}/nl/description', 'event_editing_controller:updateDescription');
     $controllers->post('event/{cdbid}/typical-age-range', 'event_editing_controller:updateTypicalAgeRange');
     $controllers->delete('event/{cdbid}/typical-age-range', 'event_editing_controller:deleteTypicalAgeRange');
     $controllers->post('event/{cdbid}/major-info', 'event_editing_controller:updateMajorInfo');
     $controllers->post('event/{cdbid}/bookingInfo', 'event_editing_controller:updateBookingInfo');
     $controllers->post('event/{cdbid}/contactPoint', 'event_editing_controller:updateContactPoint');
     $controllers->post('event/{cdbid}/organizer', 'event_editing_controller:updateOrganizer');
     $controllers->delete('event/{cdbid}/organizer/{organizerId}', 'event_editing_controller:deleteOrganizer');
     return $controllers;
 }
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     if (!isset($app['thumbnails'])) {
         $app->register(new Thumbs\ServiceProvider());
     }
     $app['thumbnails.filesystems'] = ['files', 'themebase'];
     $app['thumbnails.filesystem_cache'] = $app->share(function ($app) {
         if (!$app['filesystem']->hasFilesystem('web')) {
             return null;
         }
         return $app['filesystem']->getFilesystem('web');
     });
     $app['thumbnails.cache'] = $app->share(function ($app) {
         return $app['cache'];
     });
     $app['thumbnails.default_image'] = $app->share(function ($app) {
         $finder = new Thumbs\Finder($app['filesystem'], ['app', 'themebase', 'files'], new Image());
         return $finder->find($app['config']->get('general/thumbnails/notfound_image'));
     });
     $app['thumbnails.error_image'] = $app->share(function ($app) {
         $finder = new Thumbs\Finder($app['filesystem'], ['app', 'themebase', 'files'], new Image());
         return $finder->find($app['config']->get('general/thumbnails/error_image'));
     });
     $app['thumbnails.cache_time'] = $app['config']->get('general/thumbnails/browser_cache_time');
     $app['thumbnails.limit_upscaling'] = !$app['config']->get('general/thumbnails/allow_upscale', false);
     $app['thumbnails.save_files'] = $app['config']->get('general/thumbnails/save_files');
     ImageResource::setNormalizeJpegOrientation($app['config']->get('general/thumbnails/exif_orientation', true));
     ImageResource::setQuality($app['config']->get('general/thumbnails/quality', 80));
 }
 /**
  * Registers this service on the given app
  *
  * @param Silex\Application $app Application instance
  *
  * @return void
  */
 public function register(Application $app)
 {
     $app['rb'] = $app->share(function () use($app) {
         $options = $app['rb.options'];
         if ($namespace = isset($options['namespace']) ? $options['namespace'] : '') {
             $this->setModelNamespace($namespace);
             unset($options['namespace']);
         }
         $options = array_merge(array('dsn' => null, 'username' => null, 'password' => null, 'freeze' => false), $options);
         $rb = new RedBean($options);
         $logger = new Logger($app['logger']);
         $db = $rb->getDatabaseAdapter()->getDatabase();
         $db->setLogger($logger);
         $db->setEnableLogging(true);
         if (isset($app['redbean.helpers']) && isset($app['redbean.model.helpers'])) {
             $modelHelper = new ModelHelper($app['redbean.helpers']);
             $modelHelper->attachEventListeners($rb->getRedBean());
             foreach ($app['redbean.model.helpers'] as $model => $options) {
                 $modelHelper->addModel($model, $options);
             }
             $app['redbean.model_helper'] = $app->share(function () use($modelHelper) {
                 return $modelHelper;
             });
         }
         return $rb;
     });
 }
 public function register(Application $app)
 {
     $app['cache.memcached'] = $app->share(function () use($app) {
         if (!class_exists('\\Doctrine\\Common\\Cache\\MemcachedCache')) {
             throw new \Exception('You need to include doctrine/common in order to use the cache service');
         }
         $cache = new MemcachedCache();
         $cache->setMemcached($app['memcached']);
         return $cache;
     });
     $app['cache.predis'] = $app->share(function () use($app) {
         if (!class_exists('\\Doctrine\\Common\\Cache\\PredisCache')) {
             throw new \Exception('You need to include doctrine/common in order to use the cache service');
         }
         return new PredisCache($app['predis.client']);
     });
     $app['cache.predis_serializer'] = $app->share(function () use($app) {
         if (!class_exists('\\Doctrine\\Common\\Cache\\PredisCache')) {
             throw new \Exception('You need to include doctrine/common in order to use the cache service');
         }
         return new SerializingPredisCache($app['predis.client']);
     });
     $app['cache'] = $app->share(function () use($app) {
         if ($app->offsetExists('cache.default')) {
             return $app[$app['cache.default']];
         }
         return $app['memcached'];
     });
 }
Example #16
0
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     $app['dump'] = $app->protect(function ($var) use($app) {
         if (!$app['debug']) {
             return;
         }
         $app['dumper']->dump($app['dumper.cloner']->cloneVar($var));
     });
     VarDumper::setHandler(function ($var) use($app) {
         /*
          * Referencing $app['dump'] in anonymous function
          * so the closure can be replaced in $app without
          * breaking the reference here.
          */
         return $app['dump']($var);
     });
     $app['dumper'] = $app->share(function ($app) {
         return PHP_SAPI === 'cli' ? $app['dumper.cli'] : $app['dumper.html'];
     });
     $app['dumper.cli'] = $app->share(function () {
         return new CliDumper();
     });
     $app['dumper.html'] = $app->share(function () {
         return new HtmlDumper();
     });
     $app['dumper.cloner'] = $app->share(function () {
         $cloner = new VarCloner();
         $cloner->addCasters(Caster\FilesystemCasters::getCasters());
         return $cloner;
     });
 }
 protected function registerListener(Application $app)
 {
     $app['security.authentication_listener.factory.opauth'] = $app->protect(function ($name, $options) use($app) {
         $options = array_replace_recursive(array('check_path' => '/login/opauth', 'opauth' => array('path' => '/login/')), $options);
         if (!isset($app['security.authentication.success_handler.' . $name])) {
             $app['security.authentication.success_handler.' . $name] = $app['security.authentication.success_handler._proto']($name, $options);
         }
         if (!isset($app['security.authentication.failure_handler.' . $name])) {
             $app['security.authentication.failure_handler.' . $name] = $app['security.authentication.failure_handler._proto']($name, $options);
         }
         // define the authentication provider object
         if (!isset($app['security.authentication_provider.' . $name . '.opauth'])) {
             $app['security.authentication_provider.' . $name . '.opauth'] = $app->share(function () use($app, $name) {
                 return new OpauthProvider($app['security.user_provider.' . $name]);
             });
         }
         // define the authentication listener object
         if (!isset($app['security.authentication_listener.' . $name . '.opauth'])) {
             $app['security.authentication_listener.' . $name . '.opauth'] = $app->share(function () use($app, $name, $options) {
                 return new OpauthListener($app['security'], $app['security.authentication_manager'], isset($app['security.session_strategy.' . $name]) ? $app['security.session_strategy.' . $name] : $app['security.session_strategy'], $app['security.http_utils'], $name, $app['security.authentication.success_handler.' . $name], $app['security.authentication.failure_handler.' . $name], $options, $app['logger'], $app['dispatcher']);
             });
         }
         // routes
         //            $this->onBoot[] = function() use ($app, $options, $name) {
         $bindName = "opauth_{$name}_";
         $app->match($options['check_path'], function () {
         })->bind($bindName . 'check');
         $app->match($options['opauth']['path'] . '{strategy}/{return}', function () {
         })->value('return', '')->bind($bindName . 'login');
         //            };
         return array('security.authentication_provider.' . $name . '.opauth', 'security.authentication_listener.' . $name . '.opauth', null, 'pre_auth');
     });
 }
 public function register(Application $app)
 {
     //Load Doctrine Configuration
     $app['db.configuration'] = $app->share(function () use($app) {
         AnnotationRegistry::registerAutoloadNamespace("Doctrine\\ORM\\Mapping", __DIR__ . '/../../../../../doctrine/orm/lib');
         $config = new ORMConfiguration();
         $cache = $app['debug'] == false ? new ApcCache() : new ArrayCache();
         $config->setMetadataCacheImpl($cache);
         $config->setQueryCacheImpl($cache);
         $chain = new DriverChain();
         foreach ((array) $app['db.orm.entities'] as $entity) {
             switch ($entity['type']) {
                 case 'annotation':
                     $reader = new AnnotationReader();
                     $driver = new AnnotationDriver($reader, (array) $entity['path']);
                     $chain->addDriver($driver, $entity['namespace']);
                     break;
                     /*case 'yml':
                           $driver = new YamlDriver((array)$entity['path']);
                           $driver->setFileExtension('.yml');
                           $chain->addDriver($driver, $entity['namespace']);
                           break;
                       case 'xml':
                           $driver = new XmlDriver((array)$entity['path'], $entity['namespace']);
                           $driver->setFileExtension('.xml');
                           $chain->addDriver($driver, $entity['namespace']);
                           break;*/
                 /*case 'yml':
                       $driver = new YamlDriver((array)$entity['path']);
                       $driver->setFileExtension('.yml');
                       $chain->addDriver($driver, $entity['namespace']);
                       break;
                   case 'xml':
                       $driver = new XmlDriver((array)$entity['path'], $entity['namespace']);
                       $driver->setFileExtension('.xml');
                       $chain->addDriver($driver, $entity['namespace']);
                       break;*/
                 default:
                     throw new \InvalidArgumentException(sprintf('"%s" is not a recognized driver', $type));
                     break;
             }
         }
         $config->setMetadataDriverImpl($chain);
         $config->setProxyDir($app['db.orm.proxies_dir']);
         $config->setProxyNamespace($app['db.orm.proxies_namespace']);
         $config->setAutoGenerateProxyClasses($app['db.orm.auto_generate_proxies']);
         return $config;
     });
     //Set Defaut Configuration
     $defaults = array('entities' => array(array('type' => 'annotation', 'path' => 'Entity', 'namespace' => 'Entity')), 'proxies_dir' => 'cache/doctrine/Proxy', 'proxies_namespace' => 'DoctrineProxy', 'auto_generate_proxies' => true);
     foreach ($defaults as $key => $value) {
         if (!isset($app['db.orm.' . $key])) {
             $app['db.orm.' . $key] = $value;
         }
     }
     $self = $this;
     $app['db.orm.em'] = $app->share(function () use($self, $app) {
         return EntityManager::create($app['db'], $app['db.configuration']);
     });
 }
 /**
  * Register
  *
  * @param Application $app [description]
  *
  * @return void
  */
 public function register(Application $app)
 {
     $app['nn.markdown'] = $app->share(function () {
         return new Markdown();
     });
     if (isset($app["twig"])) {
         $app['twig'] = $app->share($app->extend('twig', function (\Twig_Environment $twig, Application $app) {
             $filterParse = new \Twig_SimpleFilter('markdown_parse', function ($text) use($app) {
                 return $app['nn.markdown']->parse($text);
             }, array('is_safe' => array('html')));
             $twig->addFilter($filterParse);
             $filterParseFile = new \Twig_SimpleFilter('markdown_parse_file', function ($filename) use($app) {
                 return $app['nn.markdown']->parseFile($filename);
             }, array('is_safe' => array('html')));
             $fucntionParseLastFile = new \Twig_SimpleFunction('markdown_parse_last_file', function () use($app) {
                 $content = "";
                 $finderLast = $app['nn.markdown']->getNLastFiles(1);
                 foreach ($finderLast as $file) {
                     $content = $file->getContents();
                 }
                 return $app['nn.markdown']->parse($content);
             }, array('is_safe' => array('html')));
             $twig->addFilter($filterParse);
             $twig->addFilter($filterParseFile);
             $twig->addFunction($fucntionParseLastFile);
             return $twig;
         }));
     }
 }
 public function register(Application $app)
 {
     $app['storage.legacy'] = $app->share(function ($app) {
         return new Storage($app);
     });
     $app['storage'] = $app->share(function ($app) {
         $storage = new EntityManager($app['db'], $app['dispatcher'], $app['storage.metadata'], $app['logger.system']);
         $storage->setLegacyStorage($app['storage.legacy']);
         foreach ($app['storage.repositories'] as $entity => $repo) {
             $storage->setRepository($entity, $repo);
         }
         $storage->setDefaultRepositoryFactory(function ($classMetadata) use($app) {
             $repoClass = $app['storage.repository.default'];
             $repo = new $repoClass($app['storage'], $classMetadata);
             return $repo;
         });
         return $storage;
     });
     $app['storage.repository.default'] = 'Bolt\\Storage\\Repository\\ContentRepository';
     $app['storage.typemap'] = ['Doctrine\\DBAL\\Types\\StringType' => 'Bolt\\Storage\\Field\\Type\\TextType', 'Doctrine\\DBAL\\Types\\IntegerType' => 'Bolt\\Storage\\Field\\Type\\IntegerType', 'Doctrine\\DBAL\\Types\\FloatType' => 'Bolt\\Storage\\Field\\Type\\FloatType', 'Doctrine\\DBAL\\Types\\TextType' => 'Bolt\\Storage\\Field\\Type\\TextAreaType', 'Doctrine\\DBAL\\Types\\DateType' => 'Bolt\\Storage\\Field\\Type\\DateType', 'Doctrine\\DBAL\\Types\\DateTimeType' => 'Bolt\\Storage\\Field\\Type\\DateTimeType', 'checkbox' => 'Bolt\\Storage\\Field\\Type\\CheckboxType', 'date' => 'Bolt\\Storage\\Field\\Type\\DateType', 'datetime' => 'Bolt\\Storage\\Field\\Type\\DateTimeType', 'file' => 'Bolt\\Storage\\Field\\Type\\FileType', 'filelist' => 'Bolt\\Storage\\Field\\Type\\FileListType', 'float' => 'Bolt\\Storage\\Field\\Type\\FloatType', 'geolocation' => 'Bolt\\Storage\\Field\\Type\\GeolocationType', 'html' => 'Bolt\\Storage\\Field\\Type\\HtmlType', 'image' => 'Bolt\\Storage\\Field\\Type\\ImageType', 'imagelist' => 'Bolt\\Storage\\Field\\Type\\ImageListType', 'integer' => 'Bolt\\Storage\\Field\\Type\\IntegerType', 'markdown' => 'Bolt\\Storage\\Field\\Type\\MarkdownType', 'relation' => 'Bolt\\Storage\\Field\\Type\\RelationType', 'repeater' => 'Bolt\\Storage\\Field\\Type\\RepeaterType', 'select' => 'Bolt\\Storage\\Field\\Type\\SelectType', 'slug' => 'Bolt\\Storage\\Field\\Type\\SlugType', 'taxonomy' => 'Bolt\\Storage\\Field\\Type\\TaxonomyType', 'templateselect' => 'Bolt\\Storage\\Field\\Type\\TemplateSelectType', 'text' => 'Bolt\\Storage\\Field\\Type\\TextType', 'textarea' => 'Bolt\\Storage\\Field\\Type\\TextAreaType', 'video' => 'Bolt\\Storage\\Field\\Type\\VideoType'];
     $app['storage.repositories'] = ['Bolt\\Storage\\Entity\\Authtoken' => 'Bolt\\Storage\\Repository\\AuthtokenRepository', 'Bolt\\Storage\\Entity\\Cron' => 'Bolt\\Storage\\Repository\\CronRepository', 'Bolt\\Storage\\Entity\\LogChange' => 'Bolt\\Storage\\Repository\\LogChangeRepository', 'Bolt\\Storage\\Entity\\LogSystem' => 'Bolt\\Storage\\Repository\\LogSystemRepository', 'Bolt\\Storage\\Entity\\Users' => 'Bolt\\Storage\\Repository\\UsersRepository'];
     $app['storage.metadata'] = $app->share(function ($app) {
         $meta = new MetadataDriver($app['schema'], $app['config']->get('contenttypes'), $app['config']->get('taxonomy'), $app['storage.typemap']);
         return $meta;
     });
     $app['storage.record_modifier'] = $app->share(function ($app) {
         $cm = new RecordModifier($app);
         return $cm;
     });
     $app['storage.listener'] = $app->share(function () use($app) {
         return new StorageEventListener($app['storage'], $app['authentication.hash.strength']);
     });
 }
 /**
  * Registers services on the given app.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  *
  * @param Application $app An Application instance
  */
 public function register(Application $app)
 {
     if (!isset($app['locales_allowed'])) {
         throw new \RuntimeException('No locales are specified in your config');
     }
     if (!isset($app['em'])) {
         throw new \RuntimeException('No entity manager has been settled');
     }
     if (!isset($app['ip2locale.ip2country_manager'])) {
         $app['ip2locale.ip2country_manager'] = $app->share(function () use($app) {
             return new IP2CountryManager($app['em']);
         });
     }
     if (isset($app['ip2locale.ip2country_manager_enabled'])) {
         $app['ip2locale.ip2country_manager']->setEnabled($app['ip2locale.ip2country_manager_enabled']);
     }
     if (isset($app['ip2locale.ipv6_enabled'])) {
         $app['ip2locale.ip2country_manager']->setIpv6Enabled($app['ip2locale.ipv6_enabled']);
     }
     if (!isset($app['ip2locale.language_detector'])) {
         $app['ip2locale.language_detector'] = $app->share(function () use($app) {
             return new LanguageDetector();
         });
     }
     if (isset($app['ip2locale.language_detector_enabled'])) {
         $app['ip2locale.language_detector']->setEnabled($app['ip2locale.language_detector_enabled']);
     }
     if (!isset($app['ip2locale.locator'])) {
         $app['ip2locale.locator'] = $app->share(function () use($app) {
             return new IPLocator($app['ip2locale.ip2country_manager'], $app['ip2locale.language_detector'], $app['locales_allowed']);
         });
     }
 }
 /**
  * {@inheritdoc}
  */
 public function register(BaseApplication $app)
 {
     $app['translator']->addResource('yaml', __DIR__ . '/../Resource/locale/message.ja.yml', 'ja');
     $app['config'] = $app->share($app->extend('config', function ($config) {
         foreach ($config['nav'] as $key => $menu1) {
             if ($menu1['id'] == 'setting') {
                 $children = $menu1['child'];
                 foreach ($children as $key2 => $menu2) {
                     if ($menu2['id'] == 'system') {
                         $config['nav'][$key]['child'][$key2]['has_child'] = 'true';
                         $config['nav'][$key]['child'][$key2]['child'][] = array('id' => 'admin_maintenance_manager', 'name' => 'メンテナンス管理', 'url' => 'admin_maintenance_manager');
                         break;
                     }
                 }
             }
         }
         return $config;
     }));
     $app['form.types'] = $app->share($app->extend('form.types', function ($types) use($app) {
         $types[] = new \Plugin\MaintenanceManager\Form\Type\MaintenanceType($app);
         return $types;
     }));
     $app['plg.service.maintenance_manager'] = $app->share(function () use($app) {
         return new \Plugin\MaintenanceManager\Service\MaintenanceManagerService($app);
     });
     $url = '/' . $app["config"]["admin_route"] . '/MaintenanceManager';
     $app->match($url . '/config', '\\Plugin\\MaintenanceManager\\Controller\\ConfigController::index')->bind('admin_maintenance_manager');
     //         $app->match($url . '/enable', '\Plugin\MaintenanceManager\Controller\ConfigController::enable')->bind('admin_maintenance_manager_enable');
     //         $app->match($url . '/disable', '\Plugin\MaintenanceManager\Controller\ConfigController::diable')->bind('admin_maintenance_manager_disable');
 }
 public function addPimpleResources()
 {
     $this->silex['paths'] = $this->silex->share(function () {
         return new Paths();
     });
     $this->silex['application-env'] = getenv('APPLICATION_ENV');
     $this->silex['debug'] = 'development' === $this->silex['application-env'] ? true : false;
     $this->silex->register(new MonologServiceProvider(), ['monolog.logfile' => $this->silex['paths']->getAppRoot() . '/logs/' . $this->silex['application-env'] . '.log', 'monolog.level' => Logger::WARNING]);
     $this->silex['view'] = function () {
         $view = new View();
         $view->registerHelper('inputtext', '\\Dewdrop\\View\\Helper\\BootstrapInputText')->registerHelper('select', '\\Dewdrop\\View\\Helper\\BootstrapSelect')->registerHelper('textarea', '\\Dewdrop\\View\\Helper\\BootstrapTextarea');
         return $view;
     };
     $this->silex['admin'] = $this->silex->share(function () {
         $admin = new SilexAdmin($this->silex);
         return $admin;
     });
     $this->silex['config'] = $this->silex->share(function () {
         $config = new Config();
         if (!$config->has($this->silex['application-env'])) {
             return $config->get('development');
         }
         return $config->get($this->silex['application-env']);
     });
     $this->silex['db'] = $this->silex->share(function () {
         $config = $this->silex['config'];
         $pdo = new PDO('pgsql:dbname=' . $config['db']['name'] . ';host=' . $config['db']['host'], $config['db']['username'], $config['db']['password']);
         $adapter = new DbAdapter();
         new Pgsql($adapter, $pdo);
         return $adapter;
     });
 }
 public function register(Application $app)
 {
     $app['lexik_form_filter.query_builder_updater'] = $app->share(function ($app) {
         $frmDataExt = $app['lexik_form_filter.form_data_extractor'];
         $dispatcher = $app['dispatcher'];
         return new FilterBuilderUpdater($frmDataExt, $dispatcher);
     });
     $app['lexik_form_filter.form_data_extractor'] = $app->share(function ($app) {
         $formDataExtractor = new FormDataExtractor();
         $formDataExtractor->addMethod(new DefaultExtractionMethod());
         $formDataExtractor->addMethod(new TextExtractionMethod());
         $formDataExtractor->addMethod(new ValueKeysExtractionMethod());
         if ($app->offsetExists('form-filter.data_extraction_methods')) {
             foreach ($app['form-filter.data_extraction_methods'] as $extMethod) {
                 $formDataExtractor->addMethod($extMethod);
             }
         }
         return $formDataExtractor;
     });
     $app['form.extensions'] = $app->share($app->extend('form.extensions', function ($extensions) use($app) {
         $extensions[] = new FilterExtension();
         return $extensions;
     }));
     $app['dispatcher']->addListener(FilterEvents::PREPARE, array(new PrepareListener(), 'onFilterBuilderPrepare'));
     $app['dispatcher']->addSubscriber(new DoctrineSubscriber());
 }
 public function register(Application $app)
 {
     $app['facebook'] = $app->share(function () use($app) {
         return new Facebook(array('app_id' => $app['facebook.config']['app_id'], 'app_secret' => $app['facebook.config']['app_secret'], 'default_graph_version' => 'v2.5'));
     });
     $app['facebook.config'] = $app->share(function () use($app) {
         return array('app_id' => (string) $app['config']['social']['facebook']['app_id'], 'app_secret' => (string) $app['config']['social']['facebook']['app_secret']);
     });
     $app['facebook.login_url'] = $app->share(function () use($app) {
         return $app['facebook']->getRedirectLoginHelper()->getLoginUrl($app['url_generator']->generate('socialauth', array('name' => 'facebook'), UrlGeneratorInterface::ABSOLUTE_URL), array('email'));
     });
     $app['facebook.access_token'] = $app->share(function () use($app) {
         $accessToken = $app['facebook']->getRedirectLoginHelper()->getAccessToken();
         $oAuth2Client = $app['facebook']->getOAuth2Client();
         $tokenMetadata = $oAuth2Client->debugToken($accessToken);
         $tokenMetadata->validateAppId($app['facebook.config']['app_id']);
         $tokenMetadata->validateExpiration();
         if (!$accessToken->isLongLived()) {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         }
         return $accessToken;
     });
     $app['facebook.user'] = $app->share(function () use($app) {
         $app['facebook']->setDefaultAccessToken($app['facebook.access_token']);
         $response = $app['facebook']->get('/me?fields=name,email');
         return $response->getGraphUser();
     });
 }
 /**
  * Registers services on the given app.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  *
  * @param Application $app
  */
 public function register(Application $app)
 {
     $app['serializer.metadata_dirs'] = [];
     $app['serializer.stopwatch_subscriber'] = $app->share(function () use($app) {
         return new StopwatchEventSubscriber($app['stopwatch']);
     });
     $app['serializer.doctrine_object_deserialize_listener'] = $app->share(function () use($app) {
         return new DoctrineObjectDeserializeListener($app['doctrine']);
     });
     $app['serializer.builder'] = $app->share(function () use($app) {
         $builder = SerializerBuilder::create();
         $builder->setDebug($app['debug']);
         $builder->setObjectConstructor(new DoctrineObjectConstructor($app['doctrine'], new UnserializeObjectConstructor()));
         if (isset($app['serializer.cache_dir'])) {
             $builder->setCacheDir($app['serializer.cache_dir']);
         }
         if (isset($app['serializer.metadata_dirs'])) {
             $builder->setMetadataDirs($app['serializer.metadata_dirs']);
         }
         $builder->configureListeners(function (EventDispatcher $dispatcher) use($app) {
             $dispatcher->addSubscriber($app['serializer.doctrine_object_deserialize_listener']);
         });
         if (isset($app['stopwatch'])) {
             $builder->configureListeners(function (EventDispatcher $dispatcher) use($app) {
                 $dispatcher->addSubscriber($app['serializer.stopwatch_subscriber']);
             });
         }
         return $builder;
     });
     $app['serializer'] = $app->share(function () use($app) {
         return $app['serializer.builder']->build();
     });
 }
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     // Parameters
     $app['ewz_recaptcha.public_key'] = null;
     $app['ewz_recaptcha.private_key'] = null;
     $app['ewz_recaptcha.locale_key'] = $app['locale'];
     $app['ewz_recaptcha.enabled'] = true;
     $app['ewz_recaptcha.ajax'] = false;
     // add loader for EWZ Template
     if (isset($app['twig'])) {
         $path = dirname(__FILE__) . '/../Resources/views/Form';
         $app['twig.loader']->addLoader(new \Twig_Loader_Filesystem($path));
         $app['twig.form.templates'] = array_merge($app['twig.form.templates'], array('ewz_recaptcha_widget.html.twig'));
     }
     // Register recaptcha form type
     if (isset($app['form.extensions'])) {
         $app['form.extensions'] = $app->share($app->extend('form.extensions', function ($extensions) use($app) {
             $extensions[] = new Form\Extension\RecaptchaExtension($app);
             return $extensions;
         }));
     }
     // Register recaptcha validator constraint
     if (isset($app['validator.validator_factory'])) {
         $app['ewz_recaptcha.true'] = $app->share(function ($app) {
             $validator = new TrueValidator($app['ewz_recaptcha.enabled'], $app['ewz_recaptcha.private_key'], $app['request_stack']);
             return $validator;
         });
         $app['validator.validator_service_ids'] = isset($app['validator.validator_service_ids']) ? $app['validator.validator_service_ids'] : array();
         $app['validator.validator_service_ids'] = array_merge($app['validator.validator_service_ids'], array('ewz_recaptcha.true' => 'ewz_recaptcha.true'));
     }
     // Register translation files
     if (isset($app['translator'])) {
         $app['translator']->addResource('xliff', dirname(__FILE__) . '/../Resources/translations/validators.' . $app['locale'] . '.xlf', $app['locale'], 'validators');
     }
 }
 public function register(BaseApplication $app)
 {
     // リポジトリ
     $app['eccube.plugin.product_rank.repository.product_rank'] = $app->share(function () use($app) {
         return new ProductRankRepository($app['orm.em'], $app['orm.em']->getClassMetadata('\\Eccube\\Entity\\ProductCategory'), $app);
     });
     $basePath = '/' . $app["config"]["admin_route"];
     // 一覧
     $app->match($basePath . '/product/product_rank/', '\\Plugin\\ProductRank\\Controller\\ProductRankController::index')->bind('admin_product_product_rank');
     // 一覧:上
     $app->put($basePath . '/product/product_rank/{category_id}/{product_id}/up', '\\Plugin\\ProductRank\\Controller\\ProductRankController::up')->assert('category_id', '\\d+')->assert('product_id', '\\d+')->bind('admin_product_product_rank_up');
     // 一覧:下
     $app->put($basePath . '/product/product_rank/{category_id}/{product_id}/down', '\\Plugin\\ProductRank\\Controller\\ProductRankController::down')->assert('category_id', '\\d+')->assert('product_id', '\\d+')->bind('admin_product_product_rank_down');
     // 一覧:N番目へ移動
     $app->post($basePath . '/product/product_rank/moveRank', '\\Plugin\\ProductRank\\Controller\\ProductRankController::moveRank')->assert('category_id', '\\d+')->assert('product_id', '\\d+')->assert('position', '\\d+')->bind('admin_product_product_rank_move_rank');
     // カテゴリ選択
     $app->match($basePath . '/product/product_rank/{category_id}', '\\Plugin\\ProductRank\\Controller\\ProductRankController::index')->assert('category_id', '\\d+')->bind('admin_product_product_rank_show');
     // メッセージ登録
     $app['translator'] = $app->share($app->extend('translator', function ($translator, \Silex\Application $app) {
         $translator->addLoader('yaml', new \Symfony\Component\Translation\Loader\YamlFileLoader());
         $file = __DIR__ . '/../Resource/locale/message.' . $app['locale'] . '.yml';
         if (file_exists($file)) {
             $translator->addResource('yaml', $file, $app['locale']);
         }
         return $translator;
     }));
     // メニュー登録
     $app['config'] = $app->share($app->extend('config', function ($config) {
         $addNavi['id'] = "product_rank";
         $addNavi['name'] = "商品並び替え";
         $addNavi['url'] = "admin_product_product_rank";
         self::addNavi($config['nav'], $addNavi, array('product'));
         return $config;
     }));
 }
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     Analyzer::setDefault(new CaseInsensitive());
     QueryParser::setDefaultEncoding('UTF-8');
     $app['zendsearch.indices_path'] = array();
     $app['zendsearch.indices.initializer'] = $app->protect(function () use($app) {
         static $initialized = false;
         if ($initialized) {
             return;
         }
         $initialized = true;
         $indices = array();
         foreach ($app['zendsearch.indices_path'] as $name => $index) {
             $indices[$name] = file_exists($index) ? Lucene::open($index) : Lucene::create($index);
         }
         $app['zendsearch.indices_collection'] = $indices;
     });
     $app['zendsearch.indices'] = $app->share(function ($app) {
         $app['zendsearch.indices.initializer']();
         return $app['zendsearch.indices_collection'];
     });
     $app['zendsearch.multisearcher'] = $app->share(function ($app) {
         $app['zendsearch.indices.initializer']();
         $multi = new MultiSearcher();
         foreach ($app['zendsearch.indices'] as $index) {
             $multi->addIndex($index);
         }
         return $multi;
     });
     $app['zendsearch'] = $app->share(function ($app) {
         return $app['zendsearch.multisearcher'];
     });
 }
 public function register(Application $app)
 {
     $app['controllers_factory'] = function ($app) {
         return new ControllerCollection($app['route_factory']);
     };
     $app['url_matcher'] = $app->share(function ($app) {
         return new UrlMatcher($app['routes'], $app['request_context']);
     });
     $app['resolver'] = $app->share(function ($app) {
         return new ControllerResolver($app, $app['logger']);
     });
     $app['callback_resolver'] = $app->share(function ($app) {
         return new CallbackResolver($app, $app['controller.classmap']);
     });
     $app['route_factory'] = $app->extend('route_factory', function (Route $route, $app) {
         if ($app['config']->get('general/enforce_ssl')) {
             $route->requireHttps();
         }
         return $route;
     });
     $app['url_generator.lazy'] = $app->share(function ($app) {
         return new LazyUrlGenerator(function () use($app) {
             return $app['url_generator'];
         });
     });
 }