stekycz\Cronner\DI\CronnerExtension::loadConfiguration PHP Метод

loadConfiguration() публичный Метод

public loadConfiguration ( )
    public function loadConfiguration()
    {
        $container = $this->getContainerBuilder();
        $config = $this->getConfig($this->defaults);
        Validators::assert($config['timestampStorage'], 'string|object|null', 'Timestamp storage definition');
        Validators::assert($config['maxExecutionTime'], 'integer|null', 'Script max execution time');
        Validators::assert($config['criticalSectionTempDir'], 'string', 'Critical section files directory path');
        if ($config['timestampStorage'] === NULL) {
            $storageServiceName = $container->getByType('stekycz\\Cronner\\ITimestampStorage');
            $storage = $this->createTimestampStorage($container);
            if ($storageServiceName) {
                $storage->setFactory('@' . $storageServiceName);
            } else {
                $storage->setClass(self::DEFAULT_STORAGE_CLASS, array($container->expand(self::DEFAULT_STORAGE_DIRECTORY)));
            }
        } else {
            $storage = $this->createTimestampStorage($container);
            if (is_string($config['timestampStorage']) && $container->getServiceName($config['timestampStorage'])) {
                $storage->setFactory($config['timestampStorage']);
            } else {
                $storage->setClass($config['timestampStorage']->entity, $config['timestampStorage']->arguments);
            }
        }
        $criticalSection = $container->addDefinition($this->prefix("criticalSection"))->setClass('stekycz\\Cronner\\CriticalSection', array($config['criticalSectionTempDir']))->setAutowired(FALSE)->setInject(FALSE);
        $runner = $container->addDefinition($this->prefix('runner'))->setClass('stekycz\\Cronner\\Cronner', array($storage, $criticalSection, $config['maxExecutionTime'], array_key_exists('debugMode', $config) ? !$config['debugMode'] : TRUE));
        Validators::assert($config['tasks'], 'array');
        foreach ($config['tasks'] as $task) {
            $def = $container->addDefinition($this->prefix('task.' . md5(Json::encode($task))));
            list($def->factory) = Compiler::filterArguments(array(is_string($task) ? new Statement($task) : $task));
            if (class_exists($def->factory->entity)) {
                $def->class = $def->factory->entity;
            }
            $def->setAutowired(FALSE);
            $def->setInject(FALSE);
            $def->addTag(self::TASKS_TAG);
        }
        if ($config['bar'] && class_exists('Tracy\\Bar')) {
            $container->addDefinition($this->prefix('bar'))->setClass('stekycz\\Cronner\\Bar\\Tasks', array($this->prefix('@runner'), $this->prefix('@timestampStorage')));
        }
    }