‪TYPO3CMS  11.5
DatabaseTreeDataProvider.php
Go to the documentation of this file.
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 
17 
18 use Psr\EventDispatcher\EventDispatcherInterface;
22 use TYPO3\CMS\Backend\Utility\BackendUtility;
32 
37 {
38  public const ‪MODE_CHILDREN = 1;
39  public const ‪MODE_PARENT = 2;
40 
44  protected ‪$tableName = '';
45 
49  protected ‪$treeId = '';
50 
54  protected ‪$labelField = '';
55 
59  protected ‪$tableWhere = '';
60 
65 
69  protected ‪$lookupField = '';
70 
74  protected ‪$rootUid = 0;
75 
79  protected array ‪$startingPoints = [0];
80 
84  protected ‪$idCache = [];
85 
91  protected ‪$columnConfiguration;
92 
98  protected ‪$nodeSortValues = [];
99 
103  protected ‪$eventDispatcher;
104 
105  public function ‪__construct(EventDispatcherInterface ‪$eventDispatcher)
106  {
107  $this->eventDispatcher = ‪$eventDispatcher;
108  }
109 
115  public function ‪setLabelField(‪$labelField)
116  {
117  $this->labelField = ‪$labelField;
118  }
119 
125  public function ‪getLabelField()
126  {
127  return ‪$this->labelField;
128  }
129 
135  public function ‪setTableName(‪$tableName)
136  {
137  $this->tableName = ‪$tableName;
138  }
139 
145  public function ‪getTableName()
146  {
147  return ‪$this->tableName;
148  }
149 
155  public function ‪setLookupField(‪$lookupField)
156  {
157  $this->lookupField = ‪$lookupField;
158  }
159 
165  public function ‪getLookupField()
166  {
167  return ‪$this->lookupField;
168  }
169 
175  public function ‪setLookupMode(‪$lookupMode)
176  {
177  $this->lookupMode = ‪$lookupMode;
178  }
179 
185  public function ‪getLookupMode()
186  {
187  return ‪$this->lookupMode;
188  }
189 
195  public function ‪getNodes(TreeNode $node) {}
196 
202  public function ‪getRoot()
203  {
204  return $this->‪buildRepresentationForNode($this->treeData);
205  }
206 
213  public function ‪setRootUid(‪$rootUid)
214  {
215  $this->rootUid = ‪$rootUid;
216  }
217 
224  public function ‪getRootUid()
225  {
226  return ‪$this->rootUid;
227  }
228 
234  public function ‪setStartingPoints(array ‪$startingPoints): void
235  {
236  $this->startingPoints = ‪$startingPoints;
237  }
238 
244  public function ‪getStartingPoints(): array
245  {
247  }
248 
254  public function ‪setTableWhere(‪$tableWhere)
255  {
256  $this->tableWhere = ‪$tableWhere;
257  }
258 
264  public function ‪getTableWhere()
265  {
267  }
268 
277  protected function ‪buildRepresentationForNode(‪TreeNode $basicNode, ‪DatabaseTreeNode $parent = null, $level = 0)
278  {
279  $node = GeneralUtility::makeInstance(DatabaseTreeNode::class);
280  $row = [];
281  if ($basicNode->‪getId() == 0) {
282  $node->setSelected(false);
283  $node->setExpanded(true);
284  $node->setLabel($this->‪getLanguageService()->sL(‪$GLOBALS['TCA'][$this->tableName]['ctrl']['title']));
285  } else {
286  if ($basicNode->‪getAdditionalData() === []) {
287  $row = BackendUtility::getRecordWSOL($this->tableName, (int)$basicNode->‪getId(), '*', '', false) ?? [];
288  } else {
289  // @todo: This is part of the category tree performance hack
290  $row = $basicNode->‪getAdditionalData();
291  }
292  $node->setLabel(BackendUtility::getRecordTitle($this->tableName, $row) ?: $basicNode->‪getId());
293  $node->setSelected(GeneralUtility::inList($this->‪getSelectedList(), $basicNode->‪getId()));
294  $node->setExpanded($this->‪isExpanded($basicNode));
295  }
296  $node->setId($basicNode->‪getId());
297  $node->setSelectable(!GeneralUtility::inList($this->‪getNonSelectableLevelList(), (string)$level) && !in_array($basicNode->‪getId(), $this->getItemUnselectableList()));
298  $node->setSortValue($this->nodeSortValues[$basicNode->‪getId()] ?? '');
299  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
300  $node->setIcon($iconFactory->getIconForRecord($this->tableName, $row, ‪Icon::SIZE_SMALL));
301  $node->setParentNode($parent);
302  if ($basicNode->‪hasChildNodes()) {
303  $node->setHasChildren(true);
304  $childNodes = GeneralUtility::makeInstance(SortedTreeNodeCollection::class);
305  $tempNodes = [];
306  foreach ($basicNode->‪getChildNodes() as $child) {
307  $tempNodes[] = $this->‪buildRepresentationForNode($child, $node, $level + 1);
308  }
309  $childNodes->exchangeArray($tempNodes);
310  $childNodes->asort();
311  $node->setChildNodes($childNodes);
312  }
313  return $node;
314  }
315 
319  public function ‪initializeTreeData()
320  {
321  parent::initializeTreeData();
322  $this->nodeSortValues = array_flip($this->itemWhiteList);
323  $this->columnConfiguration = ‪$GLOBALS['TCA'][$this->‪getTableName()]['columns'][‪$this->lookupField]['config'] ?? [];
324  if (isset($this->columnConfiguration['foreign_table']) && $this->columnConfiguration['foreign_table'] !== $this->‪getTableName()) {
325  throw new \InvalidArgumentException('TCA Tree configuration is invalid: tree for different node-Tables is not implemented yet', 1290944650);
326  }
327  $this->treeData = GeneralUtility::makeInstance(TreeNode::class);
328  $this->‪loadTreeData();
330  $event = $this->eventDispatcher->dispatch(new ‪ModifyTreeDataEvent($this->treeData, $this));
331  $this->treeData = $event->getTreeData();
332  }
333 
337  protected function ‪loadTreeData()
338  {
339  if ($this->‪getRootUid()) {
340  // @deprecated will be removed in v12
341  $startingPoints = [$this->‪getRootUid()];
342  } elseif ($this->‪getStartingPoints()) {
343  $startingPoints = $this->‪getStartingPoints();
344  } else {
345  $startingPoints = [0];
346  }
347 
348  if (count(‪$startingPoints) === 1) {
349  // Only one starting point is available, grab it and set it as root node
350  $startingPoint = current(‪$startingPoints);
351  $this->treeData->setId($startingPoint);
352  $this->treeData->setParentNode(null);
353 
354  if ($this->levelMaximum >= 1) {
355  $childNodes = $this->‪getChildrenOf($this->treeData, 1);
356  if ($childNodes !== null) {
357  $this->treeData->setChildNodes($childNodes);
358  }
359  }
360  } else {
361  // The current tree implementation disallows multiple elements on root level, thus we have to work around
362  // this with a separate TreeNodeCollection that gets attached to the root node with uid 0. This has the
363  // nasty side effect we cannot avoid the root node being rendered.
364 
365  $treeNodeCollection = GeneralUtility::makeInstance(TreeNodeCollection::class);
366  foreach (‪$startingPoints as $startingPoint) {
367  ‪$treeData = GeneralUtility::makeInstance(TreeNode::class);
368  ‪$treeData->‪setId($startingPoint);
369 
370  if ($this->levelMaximum >= 1) {
371  $childNodes = $this->‪getChildrenOf(‪$treeData, 1);
372  if ($childNodes !== null) {
373  ‪$treeData->‪setChildNodes($childNodes);
374  }
375  }
376  $treeNodeCollection->append(‪$treeData);
377  }
378  $this->treeData->setId(0);
379  $this->treeData->setChildNodes($treeNodeCollection);
380  }
381  }
382 
390  protected function ‪getChildrenOf(TreeNode $node, $level): ?TreeNodeCollection
391  {
392  $nodeData = null;
393  if ($node->getId() !== 0 && $node->getId() !== '0') {
394  if (is_array($this->availableItems[(int)$node->getId()] ?? false)) {
395  // @todo: This is part of the category tree performance hack
396  $nodeData = $this->availableItems[(int)$node->getId()];
397  } else {
398  $nodeData = BackendUtility::getRecord($this->tableName, $node->getId(), '*', '', false);
399  }
400  }
401  if (empty($nodeData)) {
402  $nodeData = [
403  'uid' => 0,
404  $this->lookupField => '',
405  ];
406  }
407  $storage = null;
408  $children = $this->‪getRelatedRecords($nodeData);
409  if (!empty($children)) {
410  $storage = GeneralUtility::makeInstance(TreeNodeCollection::class);
411  foreach ($children as $child) {
412  $node = GeneralUtility::makeInstance(TreeNode::class, $this->availableItems[(int)$child] ?? []);
413  $node->setId($child);
414  if ($level < $this->levelMaximum) {
415  $children = $this->‪getChildrenOf($node, $level + 1);
416  if ($children !== null) {
417  $node->setChildNodes($children);
418  }
419  }
420  $storage->append($node);
421  }
422  }
423  return $storage;
424  }
425 
432  protected function ‪getRelatedRecords(array $row)
433  {
434  if ($this->‪getLookupMode() == self::MODE_PARENT) {
435  $children = $this->‪getChildrenUidsFromParentRelation($row);
436  } else {
437  $children = $this->‪getChildrenUidsFromChildrenRelation($row);
438  }
439  $allowedArray = [];
440  foreach ($children as $child) {
441  if (!in_array($child, $this->idCache) && in_array($child, $this->itemWhiteList)) {
442  $allowedArray[] = $child;
443  }
444  }
445  $this->idCache = array_merge($this->idCache, $allowedArray);
446  return $allowedArray;
447  }
448 
455  protected function ‪getChildrenUidsFromParentRelation(array $row)
456  {
457  $uid = (int)$row['uid'];
458  if (in_array($this->columnConfiguration['type'] ?? '', ['select', 'category', 'inline'], true)) {
459  if ($this->columnConfiguration['MM'] ?? null) {
460  $dbGroup = GeneralUtility::makeInstance(RelationHandler::class);
461  // Dummy field for setting "look from other site"
462  $this->columnConfiguration['MM_oppositeField'] = 'children';
463  $dbGroup->start($row[$this->lookupField], $this->‪getTableName(), $this->columnConfiguration['MM'], $uid, $this->‪getTableName(), $this->columnConfiguration);
464  $relatedUids = $dbGroup->tableArray[$this->‪getTableName()];
465  } elseif ($this->columnConfiguration['foreign_field'] ?? null) {
466  $relatedUids = $this->‪listFieldQuery($this->columnConfiguration['foreign_field'], $uid);
467  } else {
468  // Check available items
469  if ($this->availableItems !== [] && $this->columnConfiguration['type'] === 'category') {
470  // @todo: This is part of the category tree performance hack
471  $relatedUids = [];
472  foreach ($this->availableItems as $item) {
473  if ((int)$item[$this->lookupField] === $uid) {
474  $relatedUids[$item['uid']] = $item['sorting'];
475  }
476  }
477  if ($relatedUids !== []) {
478  // Ensure sorting is kept
479  asort($relatedUids);
480  $relatedUids = array_keys($relatedUids);
481  }
482  } else {
483  $relatedUids = $this->‪listFieldQuery($this->lookupField, $uid);
484  }
485  }
486  } else {
487  $relatedUids = $this->‪listFieldQuery($this->lookupField, $uid);
488  }
489 
490  return $relatedUids;
491  }
492 
499  protected function ‪getChildrenUidsFromChildrenRelation(array $row)
500  {
501  $relatedUids = [];
502  $uid = (int)$row['uid'];
503  $value = $row[‪$this->lookupField];
504  switch ((string)$this->columnConfiguration['type']) {
505  case 'inline':
506  // Intentional fall-through
507  case 'select':
508  case 'category':
509  if ($this->columnConfiguration['MM'] ?? false) {
510  $dbGroup = GeneralUtility::makeInstance(RelationHandler::class);
511  $dbGroup->start(
512  $value,
513  $this->‪getTableName(),
514  $this->columnConfiguration['MM'],
515  $uid,
516  $this->‪getTableName(),
517  $this->columnConfiguration
518  );
519  $relatedUids = $dbGroup->tableArray[$this->‪getTableName()];
520  } elseif ($this->columnConfiguration['foreign_field'] ?? false) {
521  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
522  ->getQueryBuilderForTable($this->‪getTableName());
523  $queryBuilder->getRestrictions()->removeAll();
524  $records = $queryBuilder->select('uid')
525  ->from($this->‪getTableName())
526  ->where(
527  $queryBuilder->expr()->eq(
528  $this->columnConfiguration['foreign_field'],
529  $queryBuilder->createNamedParameter($uid, ‪Connection::PARAM_INT)
530  )
531  )
532  ->executeQuery()
533  ->fetchAllAssociative();
534 
535  if (!empty($records)) {
536  $relatedUids = array_column($records, 'uid');
537  }
538  } else {
539  $relatedUids = ‪GeneralUtility::intExplode(',', $value, true);
540  }
541  break;
542  default:
543  $relatedUids = ‪GeneralUtility::intExplode(',', $value, true);
544  }
545  return $relatedUids;
546  }
547 
555  protected function ‪listFieldQuery($fieldName, $queryId)
556  {
557  $queryId = (int)$queryId;
558  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
559  ->getQueryBuilderForTable($this->‪getTableName());
560  $queryBuilder->getRestrictions()->removeAll();
561 
562  $queryBuilder->select('uid')
563  ->from($this->‪getTableName())
564  ->where($queryBuilder->expr()->inSet($fieldName, $queryBuilder->quote($queryId)));
565 
566  if ($queryId === 0) {
567  $queryBuilder->orWhere(
568  $queryBuilder->expr()->comparison(
569  'CAST(' . $queryBuilder->quoteIdentifier($fieldName) . ' AS CHAR)',
571  $queryBuilder->quote('')
572  )
573  );
574  }
575 
576  $records = $queryBuilder->executeQuery()->fetchAllAssociative();
577  $uidArray = is_array($records) ? array_column($records, 'uid') : [];
578 
579  return $uidArray;
580  }
581 
585  protected function ‪getLanguageService(): ?LanguageService
586  {
587  return ‪$GLOBALS['LANG'] ?? null;
588  }
589 }
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getChildrenOf
‪TreeNodeCollection null getChildrenOf(TreeNode $node, $level)
Definition: DatabaseTreeDataProvider.php:379
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\__construct
‪__construct(EventDispatcherInterface $eventDispatcher)
Definition: DatabaseTreeDataProvider.php:94
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$idCache
‪array $idCache
Definition: DatabaseTreeDataProvider.php:76
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$startingPoints
‪array $startingPoints
Definition: DatabaseTreeDataProvider.php:72
‪TYPO3\CMS\Core\Database\Connection\PARAM_INT
‪const PARAM_INT
Definition: Connection.php:49
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setLabelField
‪setLabelField($labelField)
Definition: DatabaseTreeDataProvider.php:104
‪TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder
Definition: ExpressionBuilder.php:36
‪TYPO3\CMS\Core\Tree\TableConfiguration\AbstractTableConfigurationTreeDataProvider\$treeData
‪TreeNode $treeData
Definition: AbstractTableConfigurationTreeDataProvider.php:37
‪TYPO3\CMS\Backend\Tree\TreeNode\setChildNodes
‪setChildNodes(TreeNodeCollection $childNodes)
Definition: TreeNode.php:69
‪TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder\EQ
‪const EQ
Definition: ExpressionBuilder.php:37
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Core\Database\RelationHandler
Definition: RelationHandler.php:37
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getRoot
‪DatabaseTreeNode getRoot()
Definition: DatabaseTreeDataProvider.php:191
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider
Definition: DatabaseTreeDataProvider.php:37
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\MODE_PARENT
‪const MODE_PARENT
Definition: DatabaseTreeDataProvider.php:39
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\listFieldQuery
‪int[] listFieldQuery($fieldName, $queryId)
Definition: DatabaseTreeDataProvider.php:544
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getTableWhere
‪string getTableWhere()
Definition: DatabaseTreeDataProvider.php:253
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeNode
Definition: DatabaseTreeNode.php:24
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$columnConfiguration
‪array $columnConfiguration
Definition: DatabaseTreeDataProvider.php:82
‪TYPO3\CMS\Core\Tree\TableConfiguration\AbstractTableConfigurationTreeDataProvider
Definition: AbstractTableConfigurationTreeDataProvider.php:26
‪TYPO3\CMS\Core\Tree\TableConfiguration\AbstractTableConfigurationTreeDataProvider\getSelectedList
‪string getSelectedList()
Definition: AbstractTableConfigurationTreeDataProvider.php:188
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: DatabaseTreeDataProvider.php:92
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$nodeSortValues
‪array $nodeSortValues
Definition: DatabaseTreeDataProvider.php:88
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Backend\Tree\TreeNode\hasChildNodes
‪bool hasChildNodes()
Definition: TreeNode.php:100
‪TYPO3\CMS\Core\Tree\Event\ModifyTreeDataEvent
Definition: ModifyTreeDataEvent.php:27
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setLookupMode
‪setLookupMode($lookupMode)
Definition: DatabaseTreeDataProvider.php:164
‪TYPO3\CMS\Backend\Tree\TreeNode\getAdditionalData
‪getAdditionalData()
Definition: TreeNode.php:181
‪TYPO3\CMS\Backend\Tree\TreeNodeCollection
Definition: TreeNodeCollection.php:25
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setTableWhere
‪setTableWhere($tableWhere)
Definition: DatabaseTreeDataProvider.php:243
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getRootUid
‪int getRootUid()
Definition: DatabaseTreeDataProvider.php:213
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getStartingPoints
‪int[] getStartingPoints()
Definition: DatabaseTreeDataProvider.php:233
‪TYPO3\CMS\Core\Tree\TableConfiguration\AbstractTableConfigurationTreeDataProvider\isExpanded
‪bool isExpanded(TreeNode $node)
Definition: AbstractTableConfigurationTreeDataProvider.php:140
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getLabelField
‪string getLabelField()
Definition: DatabaseTreeDataProvider.php:114
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getRelatedRecords
‪array getRelatedRecords(array $row)
Definition: DatabaseTreeDataProvider.php:421
‪TYPO3\CMS\Backend\Tree\TreeNode
Definition: TreeNode.php:25
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setStartingPoints
‪setStartingPoints(array $startingPoints)
Definition: DatabaseTreeDataProvider.php:223
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\loadTreeData
‪loadTreeData()
Definition: DatabaseTreeDataProvider.php:326
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\MODE_CHILDREN
‪const MODE_CHILDREN
Definition: DatabaseTreeDataProvider.php:38
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$tableName
‪string $tableName
Definition: DatabaseTreeDataProvider.php:43
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getLanguageService
‪LanguageService null getLanguageService()
Definition: DatabaseTreeDataProvider.php:574
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$tableWhere
‪string $tableWhere
Definition: DatabaseTreeDataProvider.php:55
‪TYPO3\CMS\Core\Tree\TableConfiguration
Definition: AbstractTableConfigurationTreeDataProvider.php:16
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getLookupField
‪string getLookupField()
Definition: DatabaseTreeDataProvider.php:154
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$treeId
‪string $treeId
Definition: DatabaseTreeDataProvider.php:47
‪TYPO3\CMS\Core\Tree\TableConfiguration\AbstractTableConfigurationTreeDataProvider\getNonSelectableLevelList
‪string getNonSelectableLevelList()
Definition: AbstractTableConfigurationTreeDataProvider.php:208
‪TYPO3\CMS\Backend\Tree\TreeNode\getId
‪string int getId()
Definition: TreeNode.php:123
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setRootUid
‪setRootUid($rootUid)
Definition: DatabaseTreeDataProvider.php:202
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$lookupMode
‪int $lookupMode
Definition: DatabaseTreeDataProvider.php:59
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\initializeTreeData
‪initializeTreeData()
Definition: DatabaseTreeDataProvider.php:308
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:38
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setLookupField
‪setLookupField($lookupField)
Definition: DatabaseTreeDataProvider.php:144
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$lookupField
‪string $lookupField
Definition: DatabaseTreeDataProvider.php:63
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\setTableName
‪setTableName($tableName)
Definition: DatabaseTreeDataProvider.php:124
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\buildRepresentationForNode
‪DatabaseTreeNode buildRepresentationForNode(TreeNode $basicNode, DatabaseTreeNode $parent=null, $level=0)
Definition: DatabaseTreeDataProvider.php:266
‪TYPO3\CMS\Core\Utility\GeneralUtility\intExplode
‪static int[] intExplode($delimiter, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:927
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getTableName
‪string getTableName()
Definition: DatabaseTreeDataProvider.php:134
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$labelField
‪string $labelField
Definition: DatabaseTreeDataProvider.php:51
‪TYPO3\CMS\Backend\Tree\SortedTreeNodeCollection
Definition: SortedTreeNodeCollection.php:25
‪TYPO3\CMS\Backend\Tree\TreeNode\getChildNodes
‪TreeNodeCollection getChildNodes()
Definition: TreeNode.php:90
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Backend\Tree\TreeNode\setId
‪setId($id)
Definition: TreeNode.php:113
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getLookupMode
‪int getLookupMode()
Definition: DatabaseTreeDataProvider.php:174
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getChildrenUidsFromChildrenRelation
‪array getChildrenUidsFromChildrenRelation(array $row)
Definition: DatabaseTreeDataProvider.php:488
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\$rootUid
‪int $rootUid
Definition: DatabaseTreeDataProvider.php:67
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getChildrenUidsFromParentRelation
‪array getChildrenUidsFromParentRelation(array $row)
Definition: DatabaseTreeDataProvider.php:444
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider\getNodes
‪getNodes(TreeNode $node)
Definition: DatabaseTreeDataProvider.php:184