TYPO3 CMS  TYPO3_7-6
DefaultFactory.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
18 
23 {
31  public function getStructure()
32  {
33  $rootNode = new RootNode($this->getDefaultStructureDefinition(), null);
34  if (!($rootNode instanceof RootNodeInterface)) {
35  throw new Exception(
36  'Root node must implement RootNodeInterface',
37  1366139176
38  );
39  }
40  $structureFacade = new StructureFacade($rootNode);
41  if (!($structureFacade instanceof StructureFacadeInterface)) {
42  throw new Exception(
43  'Structure facade must implement StructureFacadeInterface',
44  1366535827
45  );
46  }
47  return $structureFacade;
48  }
49 
56  protected function getDefaultStructureDefinition()
57  {
58  $filePermission = $GLOBALS['TYPO3_CONF_VARS']['SYS']['fileCreateMask'];
59  $directoryPermission = $GLOBALS['TYPO3_CONF_VARS']['SYS']['folderCreateMask'];
60 
62  // In composer mode the links are configurable and might even be actual files
63  // Ignore this structure in this case
64  $structureAdditional = [];
65  } else {
66  $structureAdditional = [
67  [
68  'name' => 'index.php',
69  'type' => LinkNode::class,
70  'target' => 'typo3_src/index.php',
71  ],
72  [
73  'name' => 'typo3',
74  'type' => LinkNode::class,
75  'target' => 'typo3_src/typo3',
76  ],
77  [
78  'name' => 'typo3_src',
79  'type' => LinkNode::class,
80  ],
81  ];
82  }
83  $structureBase = [
84  [
85  'name' => 'typo3temp',
86  'type' => DirectoryNode::class,
87  'targetPermission' => $directoryPermission,
88  'children' => [
89  [
90  'name' => 'index.html',
91  'type' => FileNode::class,
92  'targetPermission' => $filePermission,
93  'targetContent' => '',
94  ],
95  [
96  'name' => 'compressor',
97  'type' => DirectoryNode::class,
98  'targetPermission' => $directoryPermission,
99  ],
100  [
101  'name' => 'cs',
102  'type' => DirectoryNode::class,
103  'targetPermission' => $directoryPermission,
104  ],
105  [
106  'name' => 'Cache',
107  'type' => DirectoryNode::class,
108  'targetPermission' => $directoryPermission,
109  ],
110  [
111  'name' => 'GB',
112  'type' => DirectoryNode::class,
113  'targetPermission' => $directoryPermission,
114  ],
115  [
116  'name' => 'llxml',
117  'type' => DirectoryNode::class,
118  'targetPermission' => $directoryPermission,
119  ],
120  [
121  'name' => 'locks',
122  'type' => DirectoryNode::class,
123  'targetPermission' => $directoryPermission,
124  ],
125  [
126  'name' => 'pics',
127  'type' => DirectoryNode::class,
128  'targetPermission' => $directoryPermission,
129  ],
130  [
131  'name' => 'sprites',
132  'type' => DirectoryNode::class,
133  'targetPermission' => $directoryPermission,
134  ],
135  [
136  'name' => 'temp',
137  'type' => DirectoryNode::class,
138  'targetPermission' => $directoryPermission,
139  ],
140  [
141  'name' => '_processed_',
142  'type' => DirectoryNode::class,
143  'targetPermission' => $directoryPermission,
144  ],
145  ],
146  ],
147  [
148  'name' => 'typo3conf',
149  'type' => DirectoryNode::class,
150  'targetPermission' => $directoryPermission,
151  'children' => [
152  [
153  'name' => 'ext',
154  'type' => DirectoryNode::class,
155  'targetPermission' => $directoryPermission,
156  ],
157  [
158  'name' => 'l10n',
159  'type' => DirectoryNode::class,
160  'targetPermission' => $directoryPermission,
161  ],
162  ],
163  ],
164  [
165  'name' => 'uploads',
166  'type' => DirectoryNode::class,
167  'targetPermission' => $directoryPermission,
168  'children' => [
169  [
170  'name' => 'index.html',
171  'type' => FileNode::class,
172  'targetPermission' => $filePermission,
173  'targetContentFile' => PATH_site . 'typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/uploads-index.html',
174  ],
175  [
176  'name' => 'media',
177  'type' => DirectoryNode::class,
178  'targetPermission' => $directoryPermission,
179  'children' => [
180  [
181  'name' => 'index.html',
182  'type' => FileNode::class,
183  'targetPermission' => $filePermission,
184  'targetContent' => '',
185  ],
186  ],
187  ],
188  [
189  'name' => 'pics',
190  'type' => DirectoryNode::class,
191  'targetPermission' => $directoryPermission,
192  'children' => [
193  [
194  'name' => 'index.html',
195  'type' => FileNode::class,
196  'targetPermission' => $filePermission,
197  'targetContent' => '',
198  ],
199  ],
200  ],
201  [
202  'name' => 'tx_felogin',
203  'type' => DirectoryNode::class,
204  'targetPermission' => $directoryPermission,
205  ],
206  ],
207  ],
208  [
209  'name' => !empty($GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir']) ? rtrim($GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'], '/') : 'fileadmin',
210  'type' => DirectoryNode::class,
211  'targetPermission' => $directoryPermission,
212  'children' => [
213  [
214  'name' => '_temp_',
215  'type' => DirectoryNode::class,
216  'targetPermission' => $directoryPermission,
217  'children' => [
218  [
219  'name' => '.htaccess',
220  'type' => FileNode::class,
221  'targetPermission' => $filePermission,
222  'targetContentFile' => PATH_site . 'typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/fileadmin-temp-htaccess',
223  ],
224  [
225  'name' => 'index.html',
226  'type' => FileNode::class,
227  'targetPermission' => $filePermission,
228  'targetContentFile' => PATH_site . 'typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/fileadmin-temp-index.html',
229  ],
230  ],
231  ],
232  [
233  'name' => 'user_upload',
234  'type' => DirectoryNode::class,
235  'targetPermission' => $directoryPermission,
236  'children' => [
237  [
238  'name' => '_temp_',
239  'type' => DirectoryNode::class,
240  'targetPermission' => $directoryPermission,
241  'children' => [
242  [
243  'name' => 'index.html',
244  'type' => FileNode::class,
245  'targetPermission' => $filePermission,
246  'targetContent' => '',
247  ],
248  [
249  'name' => 'importexport',
250  'type' => DirectoryNode::class,
251  'targetPermission' => $directoryPermission,
252  'children' => [
253  [
254  'name' => '.htaccess',
255  'type' => FileNode::class,
256  'targetPermission' => $filePermission,
257  'targetContentFile' => PATH_site . 'typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/fileadmin-user_upload-temp-importexport-htaccess',
258  ],
259  [
260  'name' => 'index.html',
261  'type' => FileNode::class,
262  'targetPermission' => $filePermission,
263  'targetContentFile' => PATH_site . 'typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/fileadmin-temp-index.html',
264  ],
265  ],
266  ],
267  ],
268  ],
269  [
270  'name' => 'index.html',
271  'type' => FileNode::class,
272  'targetPermission' => $filePermission,
273  'targetContent' => '',
274  ],
275  ],
276  ],
277  ],
278  ],
279  ];
280 
281  return [
282  // Cut off trailing forward / from PATH_site, so root node has no trailing slash like all others
283  'name' => substr(PATH_site, 0, -1),
284  'targetPermission' => $directoryPermission,
285  'children' => array_merge($structureAdditional, $structureBase)
286  ];
287  }
288 }
if(TYPO3_MODE==='BE') $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['frontendEditingController']['default']