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()); }
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); }
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; }
/** * 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."); } } }