1 | <?php |
||
26 | class XabbuhPandaExtension extends Extension |
||
27 | { |
||
28 | /** |
||
29 | * {@inheritDoc} |
||
30 | */ |
||
31 | 3 | public function load(array $configs, ContainerBuilder $container) |
|
32 | { |
||
33 | 3 | $configuration = new Configuration(); |
|
34 | 3 | $config = $this->processConfiguration($configuration, $configs); |
|
35 | |||
36 | 3 | $container->setParameter( |
|
37 | 3 | 'xabbuh_panda.video_uploader.multiple_files', |
|
38 | 3 | $config['video_uploader']['multiple_files'] |
|
39 | ); |
||
40 | 3 | $container->setParameter( |
|
41 | 3 | 'xabbuh_panda.video_uploader.cancel_button', |
|
42 | 3 | $config['video_uploader']['cancel_button'] |
|
43 | ); |
||
44 | 3 | $container->setParameter( |
|
45 | 3 | 'xabbuh_panda.video_uploader.progress_bar', |
|
46 | 3 | $config['video_uploader']['progress_bar'] |
|
47 | ); |
||
48 | |||
49 | 3 | $container->setParameter('xabbuh_panda.account.default', $config['default_account']); |
|
50 | 3 | $container->setParameter('xabbuh_panda.cloud.default', $config['default_cloud']); |
|
51 | |||
52 | // and load the service definitions |
||
53 | 3 | $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); |
|
54 | 3 | $loader->load('account_manager.xml'); |
|
55 | 3 | $loader->load('cloud_manager.xml'); |
|
56 | 3 | $loader->load('cloud_factory.xml'); |
|
57 | 3 | $loader->load('controller.xml'); |
|
58 | 3 | $loader->load('transformers.xml'); |
|
59 | 3 | $loader->load('video_uploader_extension.xml'); |
|
60 | |||
61 | // Add the tag for the form type extension without using deprecated APIs |
||
62 | 3 | if (method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix')) { |
|
63 | 3 | $container->getDefinition('xabbuh_panda.video_uploader_extension') |
|
64 | 3 | ->addTag('form.type_extension', array('extended_type' => 'Symfony\Component\Form\Extension\Core\Type\FileType')); |
|
65 | } else { |
||
66 | $container->getDefinition('xabbuh_panda.video_uploader_extension') |
||
67 | ->addTag('form.type_extension', array('alias' => 'file')); |
||
68 | } |
||
69 | |||
70 | 3 | $this->loadAccounts($config['accounts'], $container); |
|
71 | 3 | $this->loadClouds($config['clouds'], $container); |
|
72 | 3 | $this->registerSerializerFactory($container); |
|
73 | 3 | } |
|
74 | |||
75 | 3 | private function loadAccounts(array $accounts, ContainerBuilder $container) |
|
76 | { |
||
77 | 3 | $accountManagerDefinition = $container->getDefinition('xabbuh_panda.account_manager'); |
|
78 | |||
79 | 3 | foreach ($accounts as $name => $accountConfig) { |
|
80 | // register each account as a service |
||
81 | $accountDefinition = new Definition( |
||
82 | 'Xabbuh\PandaClient\Api\Account', |
||
83 | array( |
||
84 | $accountConfig['access_key'], |
||
85 | $accountConfig['secret_key'], |
||
86 | $accountConfig['api_host'] |
||
87 | ) |
||
88 | ); |
||
89 | $id = 'xabbuh_panda.'.strtr($name, ' -', '_').'_account'; |
||
90 | $container->setDefinition($id, $accountDefinition); |
||
91 | |||
92 | // and pass it to the manager's registerAccount() method |
||
93 | $accountManagerDefinition->addMethodCall( |
||
94 | 'registerAccount', |
||
95 | array($name, new Reference($id)) |
||
96 | ); |
||
97 | } |
||
98 | 3 | } |
|
99 | |||
100 | 3 | private function loadClouds(array $clouds, ContainerBuilder $container) |
|
101 | { |
||
102 | 3 | $cloudManagerDefinition = $container->getDefinition('xabbuh_panda.cloud_manager'); |
|
103 | |||
104 | 3 | foreach ($clouds as $name => $cloudConfig) { |
|
105 | // register each cloud as a service |
||
106 | 1 | $cloudDefinition = new Definition( |
|
107 | 1 | 'Xabbuh\PandaClient\Api\Cloud', |
|
108 | array( |
||
109 | 1 | $cloudConfig['id'], |
|
110 | 1 | isset($cloudConfig['account']) ? $cloudConfig['account'] : null, |
|
111 | ) |
||
112 | ); |
||
113 | |||
114 | 1 | if (method_exists($cloudDefinition, 'setFactory')) { |
|
115 | 1 | $cloudDefinition->setFactory(array(new Reference('xabbuh_panda.cloud_factory'), 'get')); |
|
116 | } else { |
||
117 | $cloudDefinition->setFactoryService('xabbuh_panda.cloud_factory'); |
||
|
|||
118 | $cloudDefinition->setFactoryMethod('get'); |
||
119 | } |
||
120 | |||
121 | 1 | $id = 'xabbuh_panda.'.strtr($name, ' -', '_').'_cloud'; |
|
122 | 1 | $container->setDefinition($id, $cloudDefinition); |
|
123 | |||
124 | // and pass it to the manager's registerAccount() method |
||
125 | 1 | $cloudManagerDefinition->addMethodCall( |
|
126 | 1 | 'registerCloud', |
|
127 | 1 | array($name, new Reference($id)) |
|
128 | ); |
||
129 | } |
||
130 | 3 | } |
|
131 | |||
132 | 3 | private function registerSerializerFactory(ContainerBuilder $container) |
|
133 | { |
||
134 | $serializers = array( |
||
135 | 3 | 'xabbuh_panda.serializer.cloud' => 'getCloudSerializer', |
|
136 | 'xabbuh_panda.serializer.encoding' => 'getEncodingSerializer', |
||
137 | 'xabbuh_panda.serializer.profile' => 'getProfileSerializer', |
||
138 | 'xabbuh_panda.serializer.video' => 'getVideoSerializer', |
||
139 | ); |
||
140 | |||
141 | 3 | foreach ($serializers as $serviceId => $factoryMethod) { |
|
142 | 3 | $definition = $container->getDefinition($serviceId); |
|
143 | |||
144 | 3 | if (method_exists($definition, 'setFactory')) { |
|
145 | 3 | $definition->setFactory(array('%xabbuh_panda.serializer.factory.class%', $factoryMethod)); |
|
146 | } else { |
||
147 | $definition->setFactoryClass('%xabbuh_panda.serializer.factory.class%'); |
||
148 | 3 | $definition->setFactoryMethod($factoryMethod); |
|
149 | } |
||
150 | } |
||
151 | 3 | } |
|
152 | |||
153 | /** |
||
154 | * {@inheritDoc} |
||
155 | */ |
||
156 | 12 | public function getNamespace() |
|
160 | |||
161 | /** |
||
162 | * {@inheritDoc} |
||
163 | */ |
||
164 | public function getXsdValidationBasePath() |
||
168 | } |
||
169 |
This check marks calls to methods that do not seem to exist on an object.
This is most likely the result of a method being renamed without all references to it being renamed likewise.