/** * @param \Nette\DI\CompilerExtension $extension * @param string|\stdClass $cache * @param string $suffix * @param bool $debug * @return string */ public static function processCache(Nette\DI\CompilerExtension $extension, $cache, $suffix, $debug = NULL) { $builder = $extension->getContainerBuilder(); $impl = $cache instanceof \stdClass ? $cache->value : ($cache instanceof Statement ? $cache->entity : (string) $cache); list($cache) = self::filterArgs($cache); /** @var Statement $cache */ if (isset(self::$cacheDriverClasses[$impl])) { $cache->entity = self::$cacheDriverClasses[$impl]; } if ($impl === 'default') { $cache->arguments[1] = 'Doctrine.' . ucfirst($suffix); $cache->arguments[2] = $debug !== NULL ? $debug : $builder->parameters['debugMode']; } if ($impl === 'filesystem') { $cache->arguments[] = $builder->parameters['tempDir'] . '/cache/Doctrine.' . ucfirst($suffix); } $def = $builder->addDefinition($serviceName = $extension->prefix('cache.' . $suffix))->setClass('Doctrine\\Common\\Cache\\Cache')->setFactory($cache->entity, $cache->arguments)->setAutowired(FALSE); if (method_exists($def, 'setInject')) { @$def->setInject(FALSE); // wow, such deprecated, many BC! } if (class_exists($cache->entity) && is_subclass_of($cache->entity, 'Doctrine\\Common\\Cache\\CacheProvider')) { $ns = 'Kdyby_' . $serviceName; if (preg_match('~^(?P<projectRoot>.+)(?:\\\\|\\/)vendor(?:\\\\|\\/)kdyby(?:\\\\|\\/)doctrine-cache(?:\\\\|\\/).+\\z~i', __DIR__, $m)) { $ns .= '_' . substr(md5($m['projectRoot']), 0, 8); } $def->addSetup('setNamespace', array($ns)); } return '@' . $serviceName; }
/** * Add custom configurator extension. * @return self */ public function addExtension(string $name, CompilerExtension $extension) : self { if (isset($this->extensions[$name]) || isset(self::$reserved[$name])) { throw new Nette\InvalidArgumentException("Name '{$name}' is already used or reserved."); } $this->extensions[$name] = $extension->setCompiler($this, $name); return $this; }
/** * Add custom configurator extension. * @return self */ public function addExtension($name, CompilerExtension $extension) { if (isset(self::$reserved[$name])) { throw new Nette\InvalidArgumentException("Name '$name' is reserved."); } $this->extensions[$name] = $extension->setCompiler($this, $name); return $this; }
public function load(Nette\DI\Compiler $compiler, Nette\DI\ContainerBuilder $containerBuilder) { $aspects = []; foreach ($this->aspectsList as $def) { if (!is_array($def)) { if (!is_string($def) && (!$def instanceof \stdClass || empty($def->value)) && !$def instanceof Nette\DI\Statement) { $serialised = Nette\Utils\Json::encode($def); throw new Kdyby\Aop\UnexpectedValueException("The service definition {$serialised} is expected to be an array or Neon entity."); } $def = ['factory' => $def]; } $def['tags'][] = AspectsExtension::ASPECT_TAG; $aspects[] = $def; } $compiler->parseServices($containerBuilder, ['services' => $aspects], $this->prefix ? substr($this->extension->prefix('self'), 0, -5) : NULL); }
public function afterCompile(Code\ClassType $class) { parent::afterCompile($class); $init = $class->methods['initialize']; $config = $this->getConfig($this->defaults); $init->addBody('\\App\\Form\\Control\\Selectize::register(?, ?);', ['addSelectize', $config]); }
/** * Adjusts DI container compiled to PHP class. Intended to be overridden by descendant. * * @param \Nette\PhpGenerator\ClassType $class class, interface, trait description * @return void */ public function afterCompile(ClassType $class) { parent::afterCompile($class); $config = $this->getConfig($this->defaults); $initialize = $class->methods['initialize']; $initialize->addBody('RadekDostal\\NetteComponents\\DateTimePicker\\TbDateTimePicker::register(?);', array($config[self::CONFIG_FORMAT])); }
public function afterCompile(ClassType $class) { parent::afterCompile($class); $config = $this->getConfig(); $init = $class->methods['initialize']; $init->addBody('$this->getByType(\'Zax\\Forms\\FormExtension\')->register(?);', array_key_exists('messages', $config) ? [$config['messages']] : [[]]); }
public function setCompiler(Nette\DI\Compiler $compiler, $name) : self { $application = current($compiler->getExtensions(Nette\Bridges\ApplicationDI\ApplicationExtension::class)); if ($application instanceof Nette\Bridges\ApplicationDI\ApplicationExtension) { $application->defaults['errorPresenter'] = FALSE; $application->defaults['scanDirs'] = FALSE; $application->defaults['mapping'] = ['*' => 'Ytnuk\\*\\*']; } $session = current($compiler->getExtensions(Nette\Bridges\HttpDI\SessionExtension::class)); if ($session instanceof Nette\Bridges\HttpDI\SessionExtension) { $session->defaults['debugger'] = $this->debugMode; } $http = current($compiler->getExtensions(Nette\Bridges\HttpDI\HttpExtension::class)); if ($http instanceof Nette\Bridges\HttpDI\HttpExtension) { $http->defaults['headers']['X-Powered-By'] = __NAMESPACE__; $contentSecurityPolicy = ['default-src' => '\'self\'', 'form-action' => '\'self\'', 'img-src' => '\'self\' data:']; if ($this->debugMode) { $contentSecurityPolicy += ['script-src' => '\'self\' \'unsafe-inline\' \'unsafe-eval\'', 'style-src' => '\'self\' \'unsafe-inline\'']; } $http->defaults['headers']['Content-Security-Policy'] = implode(';', array_map(function (string $key, string $value) { return implode(' ', [$key, $value]); }, array_keys($contentSecurityPolicy), array_values($contentSecurityPolicy))); } $di = current($compiler->getExtensions(Nette\DI\Extensions\DIExtension::class)); if ($di instanceof Nette\DI\Extensions\DIExtension) { $di->defaults['debugger'] = $this->debugMode; } return parent::setCompiler($compiler, $name); }
/** * @param Code\ClassType $class */ public function afterCompile(Code\ClassType $class) { parent::afterCompile($class); $builder = $this->getContainerBuilder(); $initialize = $class->methods['initialize']; $initialize->addBody('IPub\\FormPhone\\Controls\\Phone::register($this->getService(?));', [$builder->getByType(Phone\Phone::CLASS_NAME)]); }
public function beforeCompile() { parent::beforeCompile(); $builder = $this->getContainerBuilder(); $config = $this->createConfig(); /** @var Nette\DI\ServiceDefinition[] $classes */ $classes = []; foreach ($this->classesDefinition as $k => $v) { list($firstKey) = explode('.', $k); if (!isset($config[$firstKey]) || !isset($config[$firstKey]['enable']) || $config[$firstKey]['enable']) { $classes[$k] = $builder->getDefinition($this->prefix($k)); } } /** @var Nette\DI\ServiceDefinition[] $factories */ $factories = []; foreach ($this->factoriesDefinition as $k => $v) { $factories[$k] = $builder->getDefinition($this->prefix($k)); } $classes['layout.baseLayout']->addSetup('setConfigurations', ['configurations' => $config]); if ($config['labels']['enable']) { $classes['labels']->addSetup('setConfigurations', ['configurations' => $config['labels']]); $classes['layout.baseLayout']->setArguments([$this->prefix('@labels')]); } $factories['components.filterFactory']->setArguments([$config['components']['filter']['template']]); $factories['components.pagingFactory']->setArguments([$config['components']['paging']['template']]); }
/** * @param ClassType $class */ public function afterCompile(ClassType $class) { parent::afterCompile($class); $config = $this->getConfig($this->defaults); $initialize = $class->methods['initialize']; $initialize->addBody(Modal::class . '::$VERSION = ?;', [$config['version']]); }
public function loadConfiguration() { parent::loadConfiguration(); $this->validateConfig($this->defaults); $builder = $this->getContainerBuilder(); $builder->addDefinition($this->prefix('control'))->setImplement(Control\Factory::class)->setArguments([$this->config['templates']]); }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $builder->addDefinition($this->prefix('control'))->setImplement(Control\Factory::class); $builder->addDefinition($this->prefix('form.control'))->setImplement(Form\Control\Factory::class); }
public function loadConfiguration() { parent::loadConfiguration(); $this->config = $this->getConfig($this->defaults); $builder = $this->getContainerBuilder(); $builder->addDefinition($this->prefix('filter'))->setClass(Filter::class)->setArguments([$this->config['directory'], $this->config['parameter']]); }
public function loadConfiguration() { parent::loadConfiguration(); $config = $this->getConfig($this->defaults); $builder = $this->getContainerBuilder(); $definition = $builder->addDefinition($this->prefix('sessionHandler'))->setClass('Pematon\\Session\\MysqlSessionHandler')->addSetup('setTableName', [$config['tableName']]); $builder->getDefinition('session')->addSetup('setHandler', array($definition)); }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $config = $this->getConfig(self::$DEFAULTS); $accounts = $this->loadAccounts($config['account']); $builder->addDefinition($this->prefix('chain'))->setClass(\Brosland\Chain\Chain::class)->addSetup('injectServiceLocator')->addSetup('injectServiceMap', [$accounts]); }
/** * @param Nette\PhpGenerator\ClassType $class * @return void */ public function afterCompile(Nette\PhpGenerator\ClassType $class) { parent::afterCompile($class); $init = $class->methods['initialize']; $init->addBody('Ublaboo\\Controls\\Controls\\NotTranslatableSelectBox::register();'); $init->addBody('Ublaboo\\Controls\\Controls\\NotTranslatableRadioList::register();'); $init->addBody('Ublaboo\\Controls\\Controls\\TextInputCustomLabel::register();'); }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $config = $this->getConfig(self::$DEFAULTS); $baseUrl = $config['host'] . ':' . $config['port']; $wallets = $this->loadWallets($config['wallet'], $baseUrl); $builder->addDefinition($this->prefix('blockchain'))->setClass(\Brosland\Blockchain\Blockchain::class)->setArguments([$baseUrl])->addSetup('injectServiceLocator')->addSetup('injectServiceMap', [$wallets]); }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $config = $this->getConfig($this->defaults); $accounts = $this->loadAccounts($config['account'], $config['curl']); $wallets = $this->loadWallets($config['wallet']); $builder->addDefinition($this->prefix('blocktrail'))->setClass(Blocktrail::class)->addSetup('setServiceLocator')->addSetup('setAccountsServiceMap', [$accounts])->addSetup('setWalletsServiceMap', [$wallets])->addSetup('setWebhooksMap', [$config['webhook']]); }
/** * @return array */ public function getConfig() { $config = parent::getConfig($this->defaults); $appDir = $this->getContainerBuilder()->parameters['appDir']; if (!array_key_exists('componentsDir', $config)) { $config['componentsDir'] = $appDir . '/Components'; } return $config; }
public function loadConfiguration() { parent::loadConfiguration(); $config = $this->getContainerBuilder()->expand($this->validateConfig($this->defaults, $this->getConfig())); $builder = $this->getContainerBuilder(); if (!$config['accessToken']) { throw new \Exception('Access token for Rollback must be set.'); } $builder->addDefinition($this->prefix('rollbar'))->setClass('WebChemistry\\RollBar\\RollBar', [$config['accessToken'], $config['logging'], $config['enable'], $config['config']]); }
public function afterCompile(PhpGenerator\ClassType $class) { parent::afterCompile($class); $config = $this->getConfig($this->defaults); $init = $class->methods['initialize']; $init->addBody('DotBlue\\Nette\\Forms\\CalendarPicker::register(\'' . $config['method'] . '\');'); if ($config['jsConverter']) { $init->addBody('DotBlue\\Nette\\Forms\\CalendarPicker::$jsConverter = array_merge(DotBlue\\Nette\\Forms\\CalendarPicker::$jsConverter, ?);', array($config['jsConverter'])); } }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $config = $this->createConfig(); $tracyLogger = $builder->getDefinition('tracy.logger'); $tracyLogger->setFactory('Trejjam\\Utils\\Debugger\\Debugger::getLogger')->addSetup('setEmailClass', ['@Nette\\Mail\\IMailer'])->addSetup('setEmailSnooze', [$config['snoze']])->addSetup('setHost', [$config['host']])->addSetup('setPath', [$config['path']]); $tracyLogger = $builder->getDefinition('tracy.blueScreen'); $tracyLogger->setFactory('Trejjam\\Utils\\Debugger\\Debugger::getBlueScreen')->addSetup('setSslAuthorizedDn', [$config['sslAuthorizedDn'], $config['logIgnoreEmail']])->addSetup('setSiteMode', [$config['siteMode']]); }
public function loadConfiguration() { parent::loadConfiguration(); $containerBuilder = $this->getContainerBuilder(); $containerBuilder->addDefinition($this->prefix('serverInfoFactory'))->setClass('JR\\SystemInfo\\ServerInfoFactory'); $containerBuilder->addDefinition($this->prefix('phpInfoFactory'))->setClass('JR\\SystemInfo\\PhpInfoFactory'); $containerBuilder->addDefinition($this->prefix('serverInfo'))->setFactory('@' . $this->prefix('serverInfoFactory') . '::createServerInfo'); $containerBuilder->addDefinition($this->prefix('hostInfo'))->setClass('JR\\SystemInfo\\HostInfo'); $containerBuilder->addDefinition($this->prefix('phpInfo'))->setFactory('@' . $this->prefix('phpInfoFactory') . '::createPhpInfo'); $containerBuilder->addDefinition($this->prefix('systemInfo'))->setClass('JR\\SystemInfo\\SystemInfo'); }
/** * @return array */ public function getConfig(array $defaults = NULL, $expand = TRUE) { $config = parent::getConfig($defaults, $expand); // ignoredAnnotations $globalConfig = $this->compiler->getConfig(); if (!empty($globalConfig['doctrine']['ignoredAnnotations'])) { trigger_error("Section 'doctrine: ignoredAnnotations:' is deprecated, please use '{$this->name}: ignore:' ", E_USER_DEPRECATED); $config = Nette\DI\Config\Helpers::merge($config, array('ignore' => $globalConfig['doctrine']['ignoredAnnotations'])); } return $this->compiler->getContainerBuilder()->expand($config); }
public function beforeCompile() { parent::beforeCompile(); $builder = $this->getContainerBuilder(); $router = $builder->getDefinition('router'); $moduleRouters = array_keys($builder->findByTag(self::TAG_MODULE_ROUTER)); foreach ($moduleRouters as $serviceName) { $router->addSetup('offsetSet', array(NULL, '@' . $serviceName)); } $router->addSetup('offsetSet', array(NULL, $this->prefix('@router'))); }
public function beforeCompile() { parent::beforeCompile(); $containerBuilder = $this->getContainerBuilder(); foreach ($containerBuilder->findByTag(static::TAG_CONTAINER_CONTROL_CONTROL) as $serviceName => $containerControlControlTags) { Validators::assertField($containerControlControlTags, 'name', 'string'); Validators::assertField($containerControlControlTags, 'containerControl', 'string'); $containerControlService = $containerBuilder->getDefinition($this->prefix($containerControlControlTags['containerControl'] . 'ContainerControlFactory')); $containerControlService->addSetup('?->registerControlFactory(?, ?)', ['@self', $containerControlControlTags['name'], '@' . $serviceName]); } }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $config = $this->getConfig($this->defaults); if (class_exists('\\Symfony\\Component\\Console\\Command\\Command')) { $command = ['cliExport' => 'Cli\\Export']; foreach ($command as $k => $v) { $builder->addDefinition($this->prefix($k))->setClass('Trejjam\\Export\\' . $v, [$config])->addTag('kdyby.console.command'); } } }
public function loadConfiguration() { parent::loadConfiguration(); $builder = $this->getContainerBuilder(); $config = $this->getConfig(self::$defaults); $builder->addDefinition($this->prefix('requestFactory'))->setClass(RequestFactory::class)->addSetup('setMethodOverride', [$config['methodOverride']]); $builder->getDefinition('httpRequest')->setFactory($this->prefix('@requestFactory') . '::createHttpRequest'); $inputFactory = $builder->addDefinition($this->prefix('inputFactory'))->setClass(InputFactory::class)->addSetup('addParser', ['application/json', new JsonParser()]); foreach ($config['inputParsers'] as $contentType => $service) { $inputFactory->addSetup('addParser', [$contentType, $service]); } }
public function afterCompile(Code\ClassType $class) { parent::afterCompile($class); $config = $this->getConfig($this->defaults); if ($config['adapter'] === 'imagick') { $adapter = 'JiriNapravnik\\Image\\Adapter\\ImagickAdapter'; } else { $adapter = 'JiriNapravnik\\Image\\Adapter\\GdAdapter'; } $init = $class->methods['initialize']; $init->addBody('JiriNapravnik\\Image::setAdapter(\'' . $adapter . '\');'); }