Extension::loadConfiguration()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
nc 1
nop 0
dl 0
loc 17
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Rostenkowski\Resize;
4
5
6
use Nette\DI\CompilerExtension;
7
use Nette\DI\Helpers;
8
use Rostenkowski\Resize\Entity\ImageEntity;
9
use Rostenkowski\Resize\Macro\ImageMacro;
10
11
class Extension extends CompilerExtension
12
{
13
14
	protected $defaults = [
15
		'imageEntity'  => ImageEntity::class,
16
		'storageClass' => ImageStorage::class,
17
		'storageDir'   => '%appDir%/../storage/images',
18
		'cacheDir'     => '%wwwDir%/cache/images',
19
		'basePath'     => '/cache/images/',
20
		'macros'       => [
21
			ImageMacro::class . '::install'
22
		]
23
	];
24
25
26
	public function loadConfiguration()
27
	{
28
		$builder = $this->getContainerBuilder();
29
		$config = Helpers::expand($this->validateConfig($this->defaults), $this->getContainerBuilder()->parameters);
30
31
		$builder
32
			->addDefinition($this->prefix('storage'))
33
			->setFactory($config['storageClass'], [
34
				$config['storageDir'],
35
				$config['cacheDir'],
36
				$config['basePath'],
37
			]);
38
39
		$builder = $this->getContainerBuilder();
40
		$definition = $builder->getDefinition('latte.latteFactory');
41
		$setup = '?->onCompile[] = function ($engine) { ' . ImageMacro::class . '::install($engine->getCompiler()); }';
42
		$definition->addSetup($setup, ['@self']);
43
	}
44
45
}
46