Passed
Push — master ( 2b22d6...008816 )
by Andreas von
43:16
created

WysiwygConfigProviderPlugin   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
eloc 29
c 1
b 0
f 0
dl 0
loc 64
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
B afterGetConfig() 0 39 8
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * integer_net Magento Module
7
 *
8
 * @category   IntegerNet\ConfigurableWysiwyg\Plugin
9
 * @package    WysiwygConfigProviderPlugin
10
 * @copyright  Copyright (c) 2020 integer_net GmbH (http://www.integer-net.de/)
11
 * @author     Andreas von Studnitz <[email protected]>
12
 */
13
14
namespace IntegerNet\ConfigurableWysiwyg\Plugin;
15
16
use Magento\Cms\Model\Wysiwyg\CompositeConfigProvider;
0 ignored issues
show
Bug introduced by
The type Magento\Cms\Model\Wysiwyg\CompositeConfigProvider was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
17
use Magento\Framework\App\Config\ScopeConfigInterface;
18
use Magento\Framework\Data\Wysiwyg\ConfigProviderInterface;
19
20
class WysiwygConfigProviderPlugin
21
{
22
    /**
23
     * @var array
24
     */
25
    private $additionalSettings;
26
    /**
27
     * @var ScopeConfigInterface
28
     */
29
    private $scopeConfig;
30
    /**
31
     * @var CompositeConfigProvider
32
     */
33
    private $compositeConfigProvider;
34
35
    public function __construct(
36
        array $additionalSettings,
37
        ScopeConfigInterface $scopeConfig,
38
        CompositeConfigProvider $compositeConfigProvider
39
    ) {
40
        $this->additionalSettings = $additionalSettings;
41
        $this->scopeConfig = $scopeConfig;
42
        $this->compositeConfigProvider = $compositeConfigProvider;
43
    }
44
45
    public function afterGetConfig(
46
        ConfigProviderInterface $subject,
0 ignored issues
show
Unused Code introduced by
The parameter $subject is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

46
        /** @scrutinizer ignore-unused */ ConfigProviderInterface $subject,

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
47
        \Magento\Framework\DataObject $result
48
    ) {
49
        $toolbar = implode(' ', explode(',', $this->scopeConfig->getValue('admin/wysiwyg/toolbar')));
50
51
        $result->setData(
52
            'tinymce4',
53
            [
54
                'toolbar' => $toolbar,
55
                'plugins' => $result->getData('tinymce4')['plugins'],
56
                'content_css' => $result->getData('tinymce4')['content_css'],
57
            ]
58
        );
59
60
        //$result->setData('settings', $this->additionalSettings);
61
        $result->setData('add_variables', $this->scopeConfig->isSetFlag('cms/wysiwyg/add_variable'));
62
        $result->setData('add_widgets', $this->scopeConfig->isSetFlag('cms/wysiwyg/add_widget'));
63
        $result->setData('add_images', $this->scopeConfig->isSetFlag('cms/wysiwyg/add_image'));
64
65
        $plugins = $result->getData('plugins');
66
        foreach ($plugins as $key => $plugin) {
67
            if ($plugin['name'] == 'magentovariable' && !$this->scopeConfig->isSetFlag('cms/wysiwyg/add_variable')) {
68
                unset($plugins[$key]);
69
            }
70
            if ($plugin['name'] == 'magentowidget' && !$this->scopeConfig->isSetFlag('cms/wysiwyg/add_widget')) {
71
                unset($plugins[$key]);
72
            }
73
            if ($plugin['name'] == 'image' && !$this->scopeConfig->isSetFlag('cms/wysiwyg/add_image')) {
74
                unset($plugins[$key]);
75
                $result->unsetData('files_browser_window_width');
76
                $result->unsetData('files_browser_window_height');
77
                $result->unsetData('files_browser_window_url');
78
            }
79
        }
80
81
        $result->setData('plugins', array_values($plugins));
82
83
        return $result;
84
    }
85
}
86