Passed
Push — master ( f8c1f6...801992 )
by
unknown
14:40
created

RichTextNodeResolver::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * This file is part of the TYPO3 CMS project.
5
 *
6
 * It is free software; you can redistribute it and/or modify it under
7
 * the terms of the GNU General Public License, either version 2
8
 * of the License, or any later version.
9
 *
10
 * For the full copyright and license information, please read the
11
 * LICENSE.txt file that was distributed with this source code.
12
 *
13
 * The TYPO3 project - inspiring people to share!
14
 */
15
16
namespace TYPO3\CMS\RteCKEditor\Form\Resolver;
17
18
use TYPO3\CMS\Backend\Form\NodeFactory;
19
use TYPO3\CMS\Backend\Form\NodeResolverInterface;
20
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
21
use TYPO3\CMS\RteCKEditor\Form\Element\RichTextElement;
22
23
/**
24
 * This resolver will return the RichTextElement render class if RTE is enabled for this field.
25
 * @internal This is a specific Backend FormEngine implementation and is not considered part of the Public TYPO3 API.
26
 */
27
class RichTextNodeResolver implements NodeResolverInterface
28
{
29
    /**
30
     * Global options from NodeFactory
31
     *
32
     * @var array
33
     */
34
    protected $data;
35
36
    /**
37
     * Default constructor receives full data array
38
     *
39
     * @param NodeFactory $nodeFactory
40
     * @param array $data
41
     */
42
    public function __construct(NodeFactory $nodeFactory, array $data)
43
    {
44
        $this->data = $data;
45
    }
46
47
    /**
48
     * Returns RichTextElement as class name if RTE widget should be rendered.
49
     *
50
     * @return string|void New class name or void if this resolver does not change current class name.
51
     */
52
    public function resolve()
53
    {
54
        $parameterArray = $this->data['parameterArray'];
55
        $backendUser = $this->getBackendUserAuthentication();
56
        if (// This field is not read only
57
            !($parameterArray['fieldConf']['config']['readOnly'] ?? false)
58
            // If RTE is generally enabled by user settings and RTE object registry can return something valid
59
            && $backendUser->isRTE()
60
            // If RTE is enabled for field
61
            && (bool)($parameterArray['fieldConf']['config']['enableRichtext'] ?? false) === true
62
            // If RTE config is found (prepared by TcaText data provider)
63
            && is_array($parameterArray['fieldConf']['config']['richtextConfiguration'] ?? null)
64
            // If RTE is not disabled on configuration level
65
            && !($parameterArray['fieldConf']['config']['richtextConfiguration']['disabled'] ?? false)
66
        ) {
67
            return RichTextElement::class;
68
        }
69
        return null;
70
    }
71
72
    /**
73
     * @return BackendUserAuthentication
74
     */
75
    protected function getBackendUserAuthentication()
76
    {
77
        return $GLOBALS['BE_USER'];
78
    }
79
}
80