This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace AOE\Languagevisibility; |
||
4 | |||
5 | /*************************************************************** |
||
6 | * Copyright notice |
||
7 | * |
||
8 | * (c) 2016 AOE GmbH <[email protected]> |
||
9 | * All rights reserved |
||
10 | * |
||
11 | * This script is part of the TYPO3 project. The TYPO3 project is |
||
12 | * free software; you can redistribute it and/or modify |
||
13 | * it under the terms of the GNU General Public License as published by |
||
14 | * the Free Software Foundation; either version 2 of the License, or |
||
15 | * (at your option) any later version. |
||
16 | * |
||
17 | * The GNU General Public License can be found at |
||
18 | * http://www.gnu.org/copyleft/gpl.html. |
||
19 | * |
||
20 | * This script is distributed in the hope that it will be useful, |
||
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
23 | * GNU General Public License for more details. |
||
24 | * |
||
25 | * This copyright notice MUST APPEAR in all copies of the script! |
||
26 | ***************************************************************/ |
||
27 | |||
28 | use TYPO3\CMS\Core\Utility\GeneralUtility; |
||
29 | |||
30 | /** |
||
31 | * |
||
32 | * @author Daniel Poetzinger <[email protected]> |
||
33 | * @coauthor Tolleiv Nietsch <[email protected]> |
||
34 | * @coauthor Timo Schmidt <[email protected]> |
||
35 | */ |
||
36 | class FceElement extends RecordElement { |
||
37 | |||
38 | private $langIsoCodeForFlexFormCallback = ''; |
||
39 | private $langChildren; |
||
40 | private $langDisabled; |
||
41 | private $langDatabaseOverlay; |
||
42 | private $disabledIsVisible; |
||
43 | |||
44 | // flags which are set during processings |
||
45 | private $_callBackFoundOverlay = FALSE; |
||
46 | |||
47 | public function __construct($row, $DS) { |
||
48 | parent::__construct($row); |
||
49 | |||
50 | $this->langChildren = $DS['meta']['langChildren'] ? 1 : 0; |
||
51 | $this->langDisabled = $DS['meta']['langDisable'] ? 1 : 0; |
||
52 | $this->langDatabaseOverlay = $DS['meta']['langDatabaseOverlay'] ? 1 : 0; |
||
53 | $this->disabledIsVisible = $DS['meta']['disabledIsVisible'] ? 1 : 0; |
||
54 | } |
||
55 | |||
56 | public function getElementDescription() { |
||
57 | return 'FCE'; |
||
58 | } |
||
59 | |||
60 | public function getInformativeDescription() { |
||
61 | if ($this->isLanguageSetToAll()) { |
||
62 | return 'Language is set to all. Visible in every language'; |
||
63 | } |
||
64 | if ($this->langDisabled == 1) { |
||
65 | if ($this->disabledIsVisible == 1) { |
||
66 | return 'FCE is in mode langDisabled, therefore cannot be translated. But it is configured to be handled as translated per Default.'; |
||
67 | } else { |
||
68 | return 'FCE is in mode langDisabled, therefore cannot be translated.'; |
||
69 | } |
||
70 | } |
||
71 | if ($this->langChildren == 1) { |
||
72 | return 'FCE is in mode inheritance'; |
||
73 | } else { |
||
74 | return 'FCE is in mode seperate'; |
||
75 | } |
||
76 | } |
||
77 | |||
78 | public function _hasOverlayRecordForLanguage($id) { |
||
79 | $languageRep = Languagerepository::makeInstance(); |
||
80 | $language = $languageRep->getLanguageById($id); |
||
81 | $this->langIsoCodeForFlexFormCallback = strtoupper($language->getIsoCode()); |
||
82 | $this->_callBackFoundOverlay = FALSE; |
||
83 | |||
84 | // Get data structure: |
||
85 | if ($this->langDisabled == 1 && !$this->langDatabaseOverlay) { |
||
86 | // the FCE has langDisabled: this means there is no overlay |
||
87 | if ($this->disabledIsVisible == 1) { |
||
88 | return TRUE; |
||
89 | } else { |
||
90 | return FALSE; |
||
91 | } |
||
92 | } |
||
93 | |||
94 | if ($GLOBALS['TSFE']) { |
||
95 | @$GLOBALS['TSFE']->includeTCA(); |
||
0 ignored issues
–
show
|
|||
96 | } |
||
97 | |||
98 | if ($this->langChildren == 1) { |
||
99 | // the FCE has real overlay record |
||
100 | $flexObj = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\FlexForm\\FlexFormTools'); |
||
101 | if ($this->row['tx_templavoila_flex']) { |
||
102 | $return = $flexObj->traverseFlexFormXMLData('tt_content', 'tx_templavoila_flex', $this->row, $this, '_hasOverlayRecordForLanguage_Inheritance_flexFormCallBack'); |
||
103 | if ($return !== TRUE && strlen($return) > 0) { |
||
104 | debug('FCE: _hasOverlayRecordForLanguage has error:' . $return); |
||
105 | } |
||
106 | return $this->_callBackFoundOverlay; |
||
107 | } else { |
||
108 | // in case no xml yet (new created?) |
||
109 | return FALSE; |
||
110 | } |
||
111 | } else { |
||
112 | // the FCE has no real overlay record |
||
113 | $flexObj = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\FlexForm\\FlexFormTools'); |
||
114 | $flexObj->traverseFlexFormXMLData('tt_content', 'tx_templavoila_flex', $this->row, $this, '_hasOverlayRecordForLanguage_Seperate_flexFormCallBack'); |
||
115 | return $this->_callBackFoundOverlay; |
||
116 | } |
||
117 | } |
||
118 | |||
119 | public function getOverLayRecordForCertainLanguageImplementation($languageId, $onlyUid = FALSE) { |
||
120 | $useDefaultLang = $this->langDisabled == 1 && !$this->langDatabaseOverlay; |
||
121 | return parent::getOverLayRecordForCertainLanguageImplementation($useDefaultLang ? 0 : $languageId, $onlyUid); |
||
0 ignored issues
–
show
The call to
RecordElement::getOverLa...anguageImplementation() has too many arguments starting with $onlyUid .
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue. If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. In this case you can add the ![]() |
|||
122 | } |
||
123 | |||
124 | /** |
||
125 | * FlexForm call back function, see _hasOverlayRecordForLanguage |
||
126 | * |
||
127 | * @param array Data Structure of current field |
||
128 | * @param string Data value of current field |
||
129 | * @param array Various stuff in an array |
||
130 | * @param string path to location in flexform for current field |
||
131 | * @param object Reference to parent object |
||
132 | * @return void |
||
133 | */ |
||
134 | public function _hasOverlayRecordForLanguage_Inheritance_flexFormCallBack($dsArr, $dataValue, $PA, $structurePath, &$pObj) { |
||
0 ignored issues
–
show
|
|||
135 | if ($this->langIsoCodeForFlexFormCallback == '') { |
||
136 | return FALSE; |
||
137 | } |
||
138 | |||
139 | // Only take lead from default values (since this is "Inheritance" localization we parse for) |
||
140 | if (substr($structurePath, -5) == '/vDEF') { |
||
141 | $baseStructPath = substr($structurePath, 0, -3); |
||
142 | $structurePath = $baseStructPath . $this->langIsoCodeForFlexFormCallback; |
||
143 | $translValue = $pObj->getArrayValueByPath($structurePath, $pObj->traverseFlexFormXMLData_Data); |
||
144 | if ($this->_isFlexFieldFilled($dsArr['TCEforms']['config'], $translValue)) { |
||
145 | $this->_callBackFoundOverlay = TRUE; |
||
146 | } |
||
147 | } |
||
148 | } |
||
149 | |||
150 | protected function _isFlexFieldFilled($cfg, $translValue) { |
||
151 | if (($cfg['type'] == 'check' && $translValue != 0) || ($cfg['type'] != 'check' && $translValue != '')) { |
||
152 | return TRUE; |
||
153 | } else { |
||
154 | return FALSE; |
||
155 | } |
||
156 | |||
157 | } |
||
158 | |||
159 | /** |
||
160 | * FlexForm call back function, see _hasOverlayRecordForLanguage |
||
161 | * |
||
162 | * @param array Data Structure of current field |
||
163 | * @param string Data value of current field |
||
164 | * @param array Various stuff in an array |
||
165 | * @param string path to location in flexform for current field |
||
166 | * @param object Reference to parent object |
||
167 | * @return void |
||
168 | */ |
||
169 | public function _hasOverlayRecordForLanguage_Seperate_flexFormCallBack($dsArr, $dataValue, $PA, $structurePath, &$pObj) { |
||
0 ignored issues
–
show
|
|||
170 | if ($this->langIsoCodeForFlexFormCallback == '') { |
||
171 | return FALSE; |
||
172 | } |
||
173 | //path like: data/sDEF/lDEF/field_links/el/1/field_link/el/field_link_text/vDEF |
||
174 | if (strpos($structurePath, '/lDEF/')) { |
||
175 | $structurePath = str_replace('/lDEF/', '/l' . $this->langIsoCodeForFlexFormCallback . '/', $structurePath); |
||
176 | $translValue = $pObj->getArrayValueByPath($structurePath, $pObj->traverseFlexFormXMLData_Data); |
||
177 | if ($this->_isFlexFieldFilled($dsArr['TCEforms']['config'], $translValue)) { |
||
178 | $this->_callBackFoundOverlay = TRUE; |
||
179 | } |
||
180 | |||
181 | } |
||
182 | } |
||
183 | |||
184 | public function hasOverLayRecordForAnyLanguageInAnyWorkspace() { |
||
185 | } |
||
186 | } |
||
187 |
If you suppress an error, we recommend checking for the error condition explicitly: