示例#1
0
 public function __construct(JobInterface $job, SettingsInterface $settings)
 {
     $this->job = $job;
     $this->interval = $settings->get('interval', self::DEFAULT_INTERVAL);
     $this->multiplier = (int) $settings->get('multiplier', self::DEFAULT_MULTIPLIER);
     $this->max_interval = $settings->get('max_interval', self::DEFAULT_MAX_INTERVAL);
 }
 public function delete($identifier, SettingsInterface $settings = null)
 {
     $arguments = $settings->get('arguments');
     Assertion::isInstanceOf($arguments, SettingsInterface::CLASS);
     $exchange = $this->getConfig()->get('exchange');
     $channel = $this->connector->getConnection()->channel();
     $channel->exchange_unbind($exchange, $exchange, $identifier, false, $arguments->toArray());
 }
示例#3
0
 public function __construct(JobInterface $job, SettingsInterface $settings)
 {
     if (!$settings->has('limit')) {
         throw new RuntimeError('LimitRetries strategy requires "limit" setting.');
     }
     $this->job = $job;
     $this->limit = $settings->get('limit');
 }
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $service = $service_definition->getClass();
     $agavi_context = AgaviContext::getInstance();
     $logger_name = $provisioner_settings->get('logger_name', 'translation');
     $state = [':config' => $service_definition->getConfig(), ':tm' => $agavi_context->getTranslationManager(), ':logger' => $agavi_context->getLoggerManager()->getLogger($logger_name)->getPsr3Logger()];
     $this->di_container->define($service, $state)->share($service);
     $this->di_container->alias(TranslatorInterface::CLASS, $service);
 }
示例#5
0
 public function __construct(JobInterface $job, SettingsInterface $settings)
 {
     if (!$settings->has('interval')) {
         throw new RuntimeError('ExpiresAfter strategy requires "interval" setting.');
     }
     $this->job = $job;
     $this->interval = $settings->get('interval');
     if (!(new DateTimeImmutable('@0'))->add(DateInterval::createFromDateString($this->interval))->getTimestamp()) {
         throw new RuntimeError('ExpiresAfter strategy "interval" setting should be a valid time string.');
     }
 }
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $jobs_config = (include AgaviConfigCache::checkConfig(AgaviConfig::get('core.config_dir') . DIRECTORY_SEPARATOR . self::JOBS_CONFIG_FILE, AgaviContext::getInstance()->getName()));
     $service = $service_definition->getClass();
     $factory_delegate = function (ConnectorServiceInterface $connector_service, ServiceLocatorInterface $service_locator, EventBusInterface $event_bus, LoggerInterface $logger) use($service_definition, $provisioner_settings, $jobs_config) {
         $connector = $connector_service->getConnector($provisioner_settings->get('connection'));
         $config = $service_definition->getConfig();
         $service_class = $service_definition->getClass();
         return new $service_class($connector, $service_locator, $event_bus, new JobMap($jobs_config), $config, $logger);
     };
     $this->di_container->delegate($service, $factory_delegate)->share($service)->alias(JobServiceInterface::CLASS, $service);
 }
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $service = $service_definition->getClass();
     $factory_delegate = function (DiContainer $di_container) use($service_definition, $provisioner_settings) {
         $service = $service_definition->getClass();
         $command_enricher = new $service();
         foreach ($provisioner_settings->get('enrichers') as $enricher_class) {
             $command_enricher->addItem($di_container->make($enricher_class));
         }
         return $command_enricher;
     };
     $this->di_container->delegate($service, $factory_delegate)->share($service)->alias(CommandEnricherInterface::CLASS, $service);
 }
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $service = $service_definition->getClass();
     $state = [':config' => $service_definition->getConfig()];
     if ($provisioner_settings->has('logger')) {
         $logger_name = $provisioner_settings->get('logger', 'default');
         $logger = AgaviContext::getInstance()->getLoggerManager()->getLogger($logger_name)->getPsr3Logger();
         $state[':logger'] = $logger;
     }
     if ($provisioner_settings->has('connector')) {
         $connector_name = $provisioner_settings->get('connector', 'default');
         $connector_service = $this->di_container->make(ConnectorServiceInterface::CLASS);
         $state[':connector'] = $connector_service->getConnector($connector_name);
     }
     $this->di_container->define($service, $state);
     // there will only be one instance of the service when the "share" setting is true
     if ($provisioner_settings->get('share', true) === true) {
         $this->di_container->share($service);
     }
     if ($provisioner_settings->has('alias')) {
         $alias = $provisioner_settings->get('alias');
         if (!is_string($alias) && !class_exists($alias)) {
             throw new ConfigError('Alias given must be an existing class or interface name (fully qualified).');
         }
         $this->di_container->alias($alias, $service);
     }
 }
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $factory_delegate = function (DiContainer $di_container) use($service_definition, $provisioner_settings) {
         $config = $service_definition->getConfig();
         $logger_name = $provisioner_settings->get('logger', 'default');
         $logger = AgaviContext::getInstance()->getLoggerManager()->getLogger($logger_name)->getPsr3Logger();
         $builder_impl = $provisioner_settings->get('state_machine_builder', StateMachineBuilder::CLASS);
         $state_machine_builder = $di_container->make($builder_impl);
         $service_class = $service_definition->getClass();
         return new $service_class($config, $state_machine_builder, $logger);
     };
     $service = $service_definition->getClass();
     $this->di_container->delegate($service, $factory_delegate)->share($service)->alias(WorkflowServiceInterface::CLASS, $service);
 }
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $service = $service_definition->getClass();
     $config = $this->loadConfig();
     if (!isset($config[MailServiceInterface::DEFAULT_MAILER_NAME])) {
         throw new ConfigError(sprintf('The "%s" config file needs to specify a default mailer config under the key "%s".', self::CONFIG_FILE_NAME, MailServiceInterface::DEFAULT_MAILER_NAME));
     }
     $connector_name = $provisioner_settings->get('connection', 'Default.Mailer');
     $swift_mailer = $this->connector_service->getConnection($connector_name);
     if (!$swift_mailer instanceof Swift_Mailer) {
         throw new ConfigError(sprintf('MailService connector "%s" must be an instance of: %s', $connector_name, Swift_Mailer::CLASS));
     }
     $state = [':mailer_configs' => new ArrayConfig($config), ':mailer' => $swift_mailer];
     $this->di_container->define($service, $state)->share($service)->alias(MailServiceInterface::CLASS, $service);
 }
 protected function buildQueryTranslation(SettingsInterface $provisioner_settings)
 {
     $query_translation_impl = $provisioner_settings->get('query_translation')->get('class');
     if (!$query_translation_impl) {
         throw new RuntimeError('Missing setting "query_translation" within ' . static::CLASS);
     }
     if (!class_exists($query_translation_impl)) {
         throw new RuntimeError(sprintf('Configured query-translation: "%s" does not exist!', $query_translation_impl));
     }
     $query_translation = new $query_translation_impl(new ArrayConfig((array) $provisioner_settings->get('query_translation')->get('config', [])));
     if (!$query_translation instanceof QueryTranslationInterface) {
         throw new RuntimeError(sprintf('Configured query-translation %s does not implement %s', get_class($query_translation), QueryTranslationInterface::CLASS));
     }
     return $query_translation;
 }
 protected function createTwigLoader(SettingsInterface $settings)
 {
     if (!$settings->has('template_paths')) {
         throw new RuntimeError('Missing "template_paths" settings with template lookup locations.');
     }
     $template_paths = (array) $settings->get('template_paths', []);
     $loader = new FilesystemLoader($template_paths);
     if ($settings->has('allowed_template_extensions')) {
         $loader->setAllowedExtensions((array) $settings->get('allowed_template_extensions'));
     }
     if (!$settings->has('cache_scope')) {
         $loader->setScope(spl_object_hash($loader));
         // unique scope for each new loader instance
     } else {
         $loader->setScope($settings->get('cache_scope', FilesystemLoader::SCOPE_DEFAULT));
     }
     // adds an @namespaces to templates to allow twig templates to use embed/include statements that reuse
     // existing templates to override blocks instead of copying whole templates (from different locations)
     // usage example: {% include "@Honeybee/foo.twig" ignore if missing %}
     $loader->addPath(AgaviConfig::get('core.template_dir'), 'App');
     $loader->addPath(AgaviConfig::get('core.honeybee_template_dir'), 'Honeybee');
     foreach ($this->getModuleTemplatesPaths() as $module_name => $templates_path) {
         $loader->addPath($templates_path, $module_name);
     }
     return $loader;
 }
示例#13
0
 /**
  * Validate the given settings against any required rules.
  * This basic implementation just makes sure,
  * that all required settings are in place.
  *
  * @param SettingsInterface $settings
  *
  * @throws ConfigError
  */
 protected function validateConfig(SettingsInterface $settings)
 {
     foreach ($this->getRequiredSettings() as $required_setting) {
         if (is_null($settings->getValues($required_setting))) {
             throw new ConfigError("Missing mandatory setting '" . $required_setting . "' for config.");
         }
     }
 }