vendor/friendsofsymfony/ckeditor-bundle/src/DependencyInjection/FOSCKEditorExtension.php line 55

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the FOSCKEditor Bundle.
  4.  *
  5.  * (c) 2018 - present  Friends of Symfony
  6.  * (c) 2009 - 2017     Eric GELOEN <geloen.eric@gmail.com>
  7.  *
  8.  * For the full copyright and license information, please read the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace FOS\CKEditorBundle\DependencyInjection;
  12. use FOS\CKEditorBundle\Exception\DependencyInjectionException;
  13. use Symfony\Component\Config\FileLocator;
  14. use Symfony\Component\DependencyInjection\ContainerBuilder;
  15. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  16. use Symfony\Component\Form\AbstractType;
  17. use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
  18. /**
  19.  * @author GeLo <geloen.eric@gmail.com>
  20.  */
  21. class FOSCKEditorExtension extends ConfigurableExtension
  22. {
  23.     /**
  24.      * {@inheritdoc}
  25.      */
  26.     protected function loadInternal(array $configContainerBuilder $container)
  27.     {
  28.         $this->loadResources($container);
  29.         $this->registerConfig($config$container);
  30.         if (!isset($config['enable']) || $config['enable']) {
  31.             $this->registerConfigs($config$container);
  32.             $this->registerPlugins($config$container);
  33.             $this->registerStylesSet($config$container);
  34.             $this->registerTemplates($config$container);
  35.             $this->registerToolbars($config$container);
  36.             $this->registerFilebrowsers($config$container);
  37.         }
  38.         if (!method_exists(AbstractType::class, 'getBlockPrefix')) {
  39.             $container->getDefinition('fos_ck_editor.form.type')
  40.                 ->clearTag('form.type')
  41.                 ->addTag('form.type', ['alias' => 'ckeditor']);
  42.         }
  43.         $bundles $container->getParameter('kernel.bundles');
  44.         if (isset($bundles['IvoryCKEditorBundle'])) {
  45.             @trigger_error(
  46.                 "IvoryCKEditorBundle isn't maintained anymore and should be replaced with FOSCKEditorBundle.",
  47.                 E_USER_DEPRECATED
  48.             );
  49.         }
  50.     }
  51.     /**
  52.      * @param ContainerBuilder $container
  53.      */
  54.     private function loadResources(ContainerBuilder $container)
  55.     {
  56.         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
  57.         $resources = [
  58.             'builder',
  59.             'command',
  60.             'form',
  61.             'installer',
  62.             'renderer',
  63.             'templating',
  64.             'twig',
  65.         ];
  66.         foreach ($resources as $resource) {
  67.             $loader->load($resource.'.xml');
  68.         }
  69.     }
  70.     /**
  71.      * @param array            $config
  72.      * @param ContainerBuilder $container
  73.      */
  74.     private function registerConfig(array $configContainerBuilder $container)
  75.     {
  76.         $formType $container->getDefinition('fos_ck_editor.form.type');
  77.         if (isset($config['enable'])) {
  78.             $formType->addMethodCall('isEnable', [$config['enable']]);
  79.         }
  80.         if (isset($config['async'])) {
  81.             $formType->addMethodCall('isAsync', [$config['async']]);
  82.         }
  83.         if (isset($config['auto_inline'])) {
  84.             $formType->addMethodCall('isAutoInline', [$config['auto_inline']]);
  85.         }
  86.         if (isset($config['inline'])) {
  87.             $formType->addMethodCall('isInline', [$config['inline']]);
  88.         }
  89.         if (isset($config['autoload'])) {
  90.             $formType->addMethodCall('isAutoload', [$config['autoload']]);
  91.         }
  92.         if (isset($config['jquery'])) {
  93.             $formType->addMethodCall('useJquery', [$config['jquery']]);
  94.         }
  95.         if (isset($config['require_js'])) {
  96.             $formType->addMethodCall('useRequireJs', [$config['require_js']]);
  97.         }
  98.         if (isset($config['input_sync'])) {
  99.             $formType->addMethodCall('isInputSync', [$config['input_sync']]);
  100.         }
  101.         if (isset($config['base_path'])) {
  102.             $formType->addMethodCall('setBasePath', [$config['base_path']]);
  103.         }
  104.         if (isset($config['js_path'])) {
  105.             $formType->addMethodCall('setJsPath', [$config['js_path']]);
  106.         }
  107.         if (isset($config['jquery_path'])) {
  108.             $formType->addMethodCall('setJqueryPath', [$config['jquery_path']]);
  109.         }
  110.     }
  111.     /**
  112.      * @param array            $config
  113.      * @param ContainerBuilder $container
  114.      *
  115.      * @throws DependencyInjectionException
  116.      */
  117.     private function registerConfigs(array $configContainerBuilder $container)
  118.     {
  119.         if (empty($config['configs'])) {
  120.             return;
  121.         }
  122.         $definition $container->getDefinition('fos_ck_editor.config_manager');
  123.         $definition->addMethodCall('setConfigs', [$config['configs']]);
  124.         if (!isset($config['default_config']) && !empty($config['configs'])) {
  125.             reset($config['configs']);
  126.             $config['default_config'] = key($config['configs']);
  127.         }
  128.         if (isset($config['default_config'])) {
  129.             if (!isset($config['configs'][$config['default_config']])) {
  130.                 throw DependencyInjectionException::invalidDefaultConfig($config['default_config']);
  131.             }
  132.             $definition->addMethodCall('setDefaultConfig', [$config['default_config']]);
  133.         }
  134.     }
  135.     /**
  136.      * @param array            $config
  137.      * @param ContainerBuilder $container
  138.      */
  139.     private function registerPlugins(array $configContainerBuilder $container)
  140.     {
  141.         if (!empty($config['plugins'])) {
  142.             $container
  143.                 ->getDefinition('fos_ck_editor.plugin_manager')
  144.                 ->addMethodCall('setPlugins', [$config['plugins']]);
  145.         }
  146.     }
  147.     /**
  148.      * @param array            $config
  149.      * @param ContainerBuilder $container
  150.      */
  151.     private function registerStylesSet(array $configContainerBuilder $container)
  152.     {
  153.         if (empty($config['styles'])) {
  154.             return;
  155.         }
  156.         $stylesSets $config['styles'];
  157.         foreach ($stylesSets as &$stylesSet) {
  158.             foreach ($stylesSet as &$value) {
  159.                 $value array_filter($value);
  160.             }
  161.         }
  162.         $container
  163.             ->getDefinition('fos_ck_editor.styles_set_manager')
  164.             ->addMethodCall('setStylesSets', [$stylesSets]);
  165.     }
  166.     /**
  167.      * @param array            $config
  168.      * @param ContainerBuilder $container
  169.      */
  170.     private function registerTemplates(array $configContainerBuilder $container)
  171.     {
  172.         if (!empty($config['templates'])) {
  173.             $container
  174.                 ->getDefinition('fos_ck_editor.template_manager')
  175.                 ->addMethodCall('setTemplates', [$config['templates']]);
  176.         }
  177.     }
  178.     /**
  179.      * @param array            $config
  180.      * @param ContainerBuilder $container
  181.      */
  182.     private function registerToolbars(array $configContainerBuilder $container)
  183.     {
  184.         $definition $container->getDefinition('fos_ck_editor.toolbar_manager');
  185.         if (!empty($config['toolbars']['items'])) {
  186.             $definition->addMethodCall('setItems', [$config['toolbars']['items']]);
  187.         }
  188.         if (!empty($config['toolbars']['configs'])) {
  189.             $definition->addMethodCall('setToolbars', [$config['toolbars']['configs']]);
  190.         }
  191.     }
  192.     /**
  193.      * @param array            $config
  194.      * @param ContainerBuilder $container
  195.      */
  196.     private function registerFilebrowsers(array $configContainerBuilder $container)
  197.     {
  198.         if (!empty($config['filebrowsers'])) {
  199.             $container
  200.                 ->getDefinition('fos_ck_editor.form.type')
  201.                 ->addMethodCall('setFilebrowsers', [$config['filebrowsers']]);
  202.         }
  203.     }
  204.     public function getAlias()
  205.     {
  206.         return 'fos_ck_editor';
  207.     }
  208. }