|
2 | 2 |
|
3 | 3 | namespace Contributte\ImageStorage\DI; |
4 | 4 |
|
| 5 | +use Contributte\ImageStorage\ImageStorage; |
| 6 | +use Nette; |
5 | 7 | use Nette\DI\CompilerExtension; |
6 | | -use Nette\DI\Helpers; |
| 8 | +use Nette\Schema\Expect; |
| 9 | +use Nette\Schema\Schema; |
7 | 10 |
|
8 | 11 | class ImageStorageExtension extends CompilerExtension |
9 | 12 | { |
10 | 13 |
|
11 | | - /** @var mixed[] */ |
12 | | - private $defaults = [ |
13 | | - 'data_path' => '%wwwDir%/../public/data', |
14 | | - 'data_dir' => 'data', |
15 | | - 'algorithm_file' => 'sha1_file', |
16 | | - 'algorithm_content' => 'sha1', |
17 | | - 'quality' => 85, |
18 | | - 'default_transform' => 'fit', |
19 | | - 'noimage_identifier' => 'noimage/03/no-image.png', |
20 | | - 'friendly_url' => false, |
21 | | - ]; |
| 14 | + public function getConfigSchema(): Schema |
| 15 | + { |
| 16 | + return Expect::structure([ |
| 17 | + 'data_path' => Expect::string()->required(), |
| 18 | + 'data_dir' => Expect::string()->required(), |
| 19 | + 'algorithm_file' => Expect::string('sha1_file'), |
| 20 | + 'algorithm_content' => Expect::string('sha1'), |
| 21 | + 'quality' => Expect::int(85), |
| 22 | + 'default_transform' => Expect::string('fit'), |
| 23 | + 'noimage_identifier' => Expect::string('noimage/03/no-image.png'), |
| 24 | + 'friendly_url' => Expect::bool(false), |
| 25 | + ]); |
| 26 | + } |
22 | 27 |
|
23 | 28 | public function loadConfiguration(): void |
24 | 29 | { |
25 | | - $config = $this->_getConfig(); |
26 | | - |
27 | 30 | $builder = $this->getContainerBuilder(); |
28 | | - |
| 31 | + $config = (array) $this->config; |
29 | 32 | $builder->addDefinition($this->prefix('storage')) |
30 | | - ->setClass('Ublaboo\ImageStorage\ImageStorage') |
31 | | - ->setArguments([ |
32 | | - $config['data_path'], |
33 | | - $config['data_dir'], |
34 | | - $config['algorithm_file'], |
35 | | - $config['algorithm_content'], |
36 | | - $config['quality'], |
37 | | - $config['default_transform'], |
38 | | - $config['noimage_identifier'], |
39 | | - $config['friendly_url'], |
40 | | - ]); |
| 33 | + ->setType(ImageStorage::class) |
| 34 | + ->setFactory(ImageStorage::class) |
| 35 | + ->setArguments($config); |
41 | 36 | } |
42 | 37 |
|
43 | 38 |
|
44 | 39 | public function beforeCompile(): void |
45 | 40 | { |
46 | | - $config = $this->_getConfig(); |
47 | | - |
48 | 41 | $builder = $this->getContainerBuilder(); |
49 | 42 |
|
50 | | - $builder->getDefinition('nette.latteFactory') |
| 43 | + /** @var Nette\DI\Definitions\FactoryDefinition $latteFactory */ |
| 44 | + $latteFactory = $builder->getDefinition('latte.latteFactory'); |
| 45 | + assert($latteFactory instanceof Nette\DI\Definitions\FactoryDefinition); |
| 46 | + $latteFactory->getResultDefinition() |
51 | 47 | ->addSetup('Contributte\ImageStorage\Macros\Macros::install(?->getCompiler())', ['@self']); |
52 | 48 | } |
53 | 49 |
|
54 | | - |
55 | | - /** |
56 | | - * @return mixed |
57 | | - */ |
58 | | - private function _getConfig() |
59 | | - { |
60 | | - $config = $this->validateConfig($this->defaults, $this->config); |
61 | | - |
62 | | - $config['data_path'] = Helpers::expand($config['data_path'], $this->getContainerBuilder()->parameters); |
63 | | - |
64 | | - return $config; |
65 | | - } |
66 | | - |
67 | 50 | } |
0 commit comments