[TASK] Move LanguageService to EXT:core
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Classes / Form / FormDataProvider / DatabaseParentPageRow.php
1 <?php
2 namespace TYPO3\CMS\Backend\Form\FormDataProvider;
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
17 use TYPO3\CMS\Backend\Form\FormDataProviderInterface;
18
19 /**
20 * Fetch parent page row from database if possible
21 */
22 class DatabaseParentPageRow extends AbstractDatabaseRecordProvider implements FormDataProviderInterface
23 {
24 /**
25 * Add parent page row of existing row to result
26 * parentPageRow will stay NULL in result if a record is added or edited below root node
27 *
28 * @param array $result
29 * @return array
30 */
31 public function addData(array $result)
32 {
33 // $parentPageRow end up NULL if a record added or edited on root node
34 $parentPageRow = null;
35 if ($result['command'] === 'new') {
36 if ($result['vanillaUid'] < 0) {
37 // vanillaUid points to a neighbor record in same table - get its record and its pid from there to find parent record
38 $neighborRow = $this->getRecordFromDatabase($result['tableName'], abs($result['vanillaUid']));
39 $result['neighborRow'] = $neighborRow;
40 // uid of page the record is located in
41 $neighborRowPid = (int)$neighborRow['pid'];
42 if ($neighborRowPid !== 0) {
43 // Fetch the parent page record only if it is not the '0' root
44 $parentPageRow = $this->getRecordFromDatabase('pages', $neighborRowPid);
45 }
46 } elseif ($result['vanillaUid'] > 0) {
47 // vanillaUid points to a page uid directly
48 $parentPageRow = $this->getRecordFromDatabase('pages', $result['vanillaUid']);
49 }
50 } else {
51 // On "edit", the row itself has been fetched already
52 if ($result['databaseRow']['pid'] > 0) {
53 $parentPageRow = $this->getRecordFromDatabase('pages', $result['databaseRow']['pid']);
54 }
55 }
56 $result['parentPageRow'] = $parentPageRow;
57
58 return $result;
59 }
60 }