TYPO3CMS  8
 All Classes Namespaces Files Functions Variables Pages
DatabaseParentPageRow.php
Go to the documentation of this file.
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 
18 
23 {
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 }