‪TYPO3CMS  10.4
AbstractTreeView.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 
29 
33 abstract class ‪AbstractTreeView
34 {
35  // EXTERNAL, static:
36  // If set, the first element in the tree is always expanded.
40  public ‪$expandFirst = false;
41 
42  // If set, then ALL items will be expanded, regardless of stored settings.
46  public ‪$expandAll = false;
47 
48  // Holds the current script to reload to.
52  public ‪$thisScript = '';
53 
54  // Which HTML attribute to use: alt/title. See init().
58  public ‪$titleAttrib = 'title';
59 
60  // If TRUE, no context menu is rendered on icons. If set to "titlelink" the
61  // icon is linked as the title is.
65  public ‪$ext_IconMode = false;
66 
70  public ‪$ext_showPathAboveMounts = false;
71 
72  // If set, the id of the mounts will be added to the internal ids array
76  public ‪$addSelfId = 0;
77 
78  // Used if the tree is made of records (not folders for ex.)
82  public ‪$title = 'no title';
83 
84  // If TRUE, a default title attribute showing the UID of the record is shown.
85  // This cannot be enabled by default because it will destroy many applications
86  // where another title attribute is in fact applied later.
90  public ‪$showDefaultTitleAttribute = false;
91 
98  public ‪$BE_USER = '';
99 
109  public ‪$MOUNTS;
110 
117  public ‪$table = '';
118 
124  public ‪$parentField = 'pid';
125 
133  public ‪$clause = '';
134 
142  public ‪$orderByFields = '';
143 
151  public ‪$fieldArray = ['uid', 'pid', 'title', 'is_siteroot'];
152 
159  public ‪$defaultList = 'uid,pid,tstamp,sorting,deleted,perms_userid,perms_groupid,perms_user,perms_group,perms_everybody,crdate,cruser_id';
160 
170  public ‪$treeName = '';
171 
180  public ‪$domIdPrefix = 'row';
181 
187  public ‪$makeHTML = 1;
188 
194  public ‪$setRecs = 0;
195 
196  // *********
197  // Internal
198  // *********
199  // For record trees:
200  // one-dim array of the uid's selected.
204  public ‪$ids = [];
205 
206  // The hierarchy of element uids
210  public ‪$ids_hierarchy = [];
211 
212  // The hierarchy of versioned element uids
216  public ‪$orig_ids_hierarchy = [];
217 
218  // Temporary, internal array
222  public ‪$buffer_idH = [];
223 
224  // For FOLDER trees:
225  // Special UIDs for folders (integer-hashes of paths)
229  public ‪$specUIDmap = [];
230 
231  // For both types
232  // Tree is accumulated in this variable
236  public ‪$tree = [];
237 
238  // Holds (session stored) information about which items in the tree are unfolded and which are not.
242  public ‪$stored = [];
243 
244  // Points to the current mountpoint key
248  public ‪$bank = 0;
249 
250  // Accumulates the displayed records.
254  public ‪$recs = [];
255 
259  public function ‪__construct()
260  {
262  }
263 
267  protected function ‪determineScriptUrl()
268  {
269  if ($routePath = GeneralUtility::_GP('route')) {
270  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
271  $this->thisScript = (string)$uriBuilder->buildUriFromRoutePath($routePath);
272  } else {
273  $this->thisScript = GeneralUtility::getIndpEnv('SCRIPT_NAME');
274  }
275  }
276 
280  protected function ‪getThisScript()
281  {
282  return strpos($this->thisScript, '?') === false ? $this->thisScript . '?' : $this->thisScript . '&';
283  }
284 
291  public function ‪init(‪$clause = '', ‪$orderByFields = '')
292  {
293  // Setting BE_USER by default
294  $this->BE_USER = ‪$GLOBALS['BE_USER'];
295  // Setting clause
296  if (‪$clause) {
297  $this->clause = ‪$clause;
298  }
299  if (‪$orderByFields) {
300  $this->orderByFields = ‪$orderByFields;
301  }
302  if (!is_array($this->MOUNTS)) {
303  // Dummy
304  $this->MOUNTS = [0 => 0];
305  }
306  // Sets the tree name which is used to identify the tree, used for JavaScript and other things
307  $this->treeName = str_replace('_', '', $this->treeName ?: $this->table);
308  }
309 
316  public function ‪addField($field, $noCheck = false)
317  {
318  if ($noCheck || is_array(‪$GLOBALS['TCA'][$this->table]['columns'][$field]) || GeneralUtility::inList($this->defaultList, $field)) {
319  $this->fieldArray[] = $field;
320  }
321  }
322 
326  public function ‪reset()
327  {
328  $this->tree = [];
329  $this->recs = [];
330  $this->ids = [];
331  $this->ids_hierarchy = [];
332  $this->orig_ids_hierarchy = [];
333  }
334 
335  /*******************************************
336  *
337  * output
338  *
339  *******************************************/
346  public function ‪getBrowsableTree()
347  {
348  // Get stored tree structure AND updating it if needed according to incoming PM GET var.
350  // Init done:
351  $lastMountPointPid = 0;
352  $treeArr = [];
353  // Traverse mounts:
354  foreach ($this->MOUNTS as $idx => $uid) {
355  // Set first:
356  $this->bank = $idx;
357  $isOpen = $this->stored[$idx][$uid] || ‪$this->expandFirst;
358  // Save ids while resetting everything else.
359  $curIds = ‪$this->ids;
360  $this->‪reset();
361  $this->ids = $curIds;
362  // Set PM icon for root of mount:
363  $cmd = $this->bank . '_' . ($isOpen ? '0_' : '1_') . $uid . '_' . $this->treeName;
364 
365  $firstHtml = $this->‪PM_ATagWrap('', $cmd, '', $isOpen);
366  // Preparing rootRec for the mount
367  if ($uid) {
368  $rootRec = $this->‪getRecord($uid);
369  if (is_array($rootRec)) {
370  $firstHtml .= $this->‪getIcon($rootRec);
371  }
372 
373  if ($this->ext_showPathAboveMounts) {
374  $mountPointPid = $rootRec['pid'];
375  if ($lastMountPointPid !== $mountPointPid) {
376  ‪$title = $this->‪getMountPointPath((int)$mountPointPid);
377  $this->tree[] = ['isMountPointPath' => true, 'title' => ‪$title];
378  }
379  $lastMountPointPid = $mountPointPid;
380  }
381  } else {
382  // Artificial record for the tree root, id=0
383  $rootRec = $this->‪getRootRecord();
384  $firstHtml .= $this->‪getRootIcon($rootRec);
385  }
386  if (is_array($rootRec)) {
387  // In case it was swapped inside getRecord due to workspaces.
388  $uid = $rootRec['uid'];
389  // Add the root of the mount to ->tree
390  $this->tree[] = ['HTML' => $firstHtml, 'row' => $rootRec, 'hasSub' => $isOpen, 'bank' => ‪$this->bank];
391  // If the mount is expanded, go down:
392  if ($isOpen) {
393  $depthData = '<span class="treeline-icon treeline-icon-clear"></span>';
394  if ($this->addSelfId) {
395  $this->ids[] = $uid;
396  }
397  $this->‪getTree($uid, 999, $depthData);
398  }
399  // Add tree:
400  $treeArr = array_merge($treeArr, $this->tree);
401  }
402  }
403  return $this->‪printTree($treeArr);
404  }
405 
412  public function ‪printTree($treeArr = '')
413  {
414  $titleLen = (int)$this->BE_USER->uc['titleLen'];
415  ‪if (!is_array($treeArr)) {
416  $treeArr = ‪$this->tree;
417  }
418  $out = '';
419  $closeDepth = [];
420  foreach ($treeArr as $treeItem) {
421  $classAttr = '';
422  if ($treeItem['isFirst']) {
423  $out .= '<ul class="list-tree">';
424  }
425 
426  // Add CSS classes to the list item
427  if ($treeItem['hasSub']) {
428  $classAttr .= ' list-tree-control-open';
429  }
430 
431  $idAttr = htmlspecialchars($this->domIdPrefix . $this->‪getId($treeItem['row']) . '_' . $treeItem['bank']);
432  $out .= '
433  <li id="' . $idAttr . '"' . ($classAttr ? ' class="' . trim($classAttr) . '"' : '') . '>
434  <span class="list-tree-group">
435  <span class="list-tree-icon">' . $treeItem['HTML'] . '</span>
436  <span class="list-tree-title">' . $this->‪wrapTitle($this->‪getTitleStr($treeItem['row'], $titleLen), $treeItem['row'], $treeItem['bank']) . '</span>
437  </span>';
438 
439  if (!$treeItem['hasSub']) {
440  $out .= '</li>';
441  }
442 
443  // We have to remember if this is the last one
444  // on level X so the last child on level X+1 closes the <ul>-tag
445  if ($treeItem['isLast']) {
446  $closeDepth[$treeItem['invertedDepth']] = 1;
447  }
448  // If this is the last one and does not have subitems, we need to close
449  // the tree as long as the upper levels have last items too
450  if ($treeItem['isLast'] && !$treeItem['hasSub']) {
451  for ($i = $treeItem['invertedDepth']; $closeDepth[$i] == 1; $i++) {
452  $closeDepth[$i] = 0;
453  $out .= '</ul></li>';
454  }
455  }
456  }
457  $out = '<ul class="list-tree list-tree-root list-tree-root-clean">' . $out . '</ul>';
458  return $out;
459  }
460 
461  /*******************************************
462  *
463  * rendering parts
464  *
465  *******************************************/
478  public function ‪PMicon($row, $a, $c, $nextCount, $isOpen)
479  {
480  if ($nextCount) {
481  $cmd = $this->bank . '_' . ($isOpen ? '0_' : '1_') . $row['uid'] . '_' . $this->treeName;
482  $bMark = $this->bank . '_' . $row['uid'];
483  return $this->‪PM_ATagWrap('', $cmd, $bMark, $isOpen);
484  }
485  return '';
486  }
487 
498  public function ‪PM_ATagWrap($icon, $cmd, $bMark = '', $isOpen = false)
499  {
500  if ($this->thisScript) {
501  $anchor = $bMark ? '#' . $bMark : '';
502  $name = $bMark ? ' name="' . $bMark . '"' : '';
503  $aUrl = $this->‪getThisScript() . 'PM=' . $cmd . $anchor;
504  return '<a class="list-tree-control ' . ($isOpen ? 'list-tree-control-open' : 'list-tree-control-closed') . '" href="' . htmlspecialchars($aUrl) . '"' . $name . '><i class="fa"></i></a>';
505  }
506  return $icon;
507  }
508 
518  public function ‪wrapTitle(‪$title, $row, ‪$bank = 0)
519  {
520  $aOnClick = 'return jumpTo(' . GeneralUtility::quoteJSvalue($this->‪getJumpToParam($row)) . ',this,' . GeneralUtility::quoteJSvalue($this->domIdPrefix . $this->‪getId($row)) . ',' . ‪$bank . ');';
521  return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . ‪$title . '</a>';
522  }
523 
532  public function ‪wrapIcon($icon, $row)
533  {
534  return $icon;
535  }
536 
544  public function ‪addTagAttributes($icon, $attr)
545  {
546  return preg_replace('/ ?\\/?>$/', '', $icon) . ' ' . $attr . ' />';
547  }
548 
557  public function ‪wrapStop($str, $row)
558  {
559  if ($row['php_tree_stop']) {
560  $str .= '<a href="' . htmlspecialchars(GeneralUtility::linkThisScript(['setTempDBmount' => $row['uid']])) . '" class="text-danger">+</a> ';
561  }
562  return $str;
563  }
564 
565  /*******************************************
566  *
567  * tree handling
568  *
569  *******************************************/
580  public function ‪expandNext($id)
581  {
582  return !empty($this->stored[$this->bank][$id]) || ‪$this->expandAll;
583  }
584 
590  public function ‪initializePositionSaving()
591  {
592  // Get stored tree structure:
593  $this->stored = json_decode($this->BE_USER->uc['browseTrees'][$this->treeName], true);
594  // PM action
595  // (If a plus/minus icon has been clicked, the PM GET var is sent and we
596  // must update the stored positions in the tree):
597  // 0: mount key, 1: set/clear boolean, 2: item ID (cannot contain "_"), 3: treeName
598  $PM = explode('_', GeneralUtility::_GP('PM'));
599  if (count($PM) === 4 && $PM[3] == $this->treeName) {
600  if (isset($this->MOUNTS[$PM[0]])) {
601  // set
602  if ($PM[1]) {
603  $this->stored[$PM[0]][$PM[2]] = 1;
604  $this->‪savePosition();
605  } else {
606  unset($this->stored[$PM[0]][$PM[2]]);
607  $this->‪savePosition();
608  }
609  }
610  }
611  }
612 
619  public function ‪savePosition()
620  {
621  $this->BE_USER->uc['browseTrees'][‪$this->treeName] = json_encode($this->stored);
622  $this->BE_USER->writeUC();
623  }
624 
625  /******************************
626  *
627  * Functions that might be overwritten by extended classes
628  *
629  ********************************/
636  public function ‪getRootIcon($rec)
637  {
638  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
639  return $this->‪wrapIcon($iconFactory->getIcon('apps-pagetree-root', ‪Icon::SIZE_SMALL)->render(), $rec);
640  }
641 
648  public function ‪getIcon($row)
649  {
650  if (is_int($row)) {
651  $row = ‪BackendUtility::getRecord($this->table, $row);
652  if ($row === null) {
653  return '';
654  }
655  }
656  ‪$title = $this->showDefaultTitleAttribute ? htmlspecialchars('UID: ' . $row['uid']) : $this->‪getTitleAttrib($row);
657  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
658  $icon = $row['is_siteroot'] ? $iconFactory->getIcon('apps-pagetree-folder-root', ‪Icon::SIZE_SMALL) : $iconFactory->getIconForRecord($this->table, $row, ‪Icon::SIZE_SMALL);
659  $icon = '<span title="' . ‪$title . '">' . $icon->render() . '</span>';
660  return $this->‪wrapIcon($icon, $row);
661  }
662 
671  public function ‪getTitleStr($row, $titleLen = 30)
672  {
673  ‪$title = htmlspecialchars(GeneralUtility::fixed_lgd_cs($row['title'], $titleLen));
674  ‪$title = trim($row['title']) === '' ? '<em>[' . htmlspecialchars($this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.no_title')) . ']</em>' : ‪$title;
675  return ‪$title;
676  }
677 
685  public function ‪getTitleAttrib($row)
686  {
687  return htmlspecialchars($row['title']);
688  }
689 
696  public function ‪getId($row)
697  {
698  return $row['uid'];
699  }
700 
707  public function ‪getJumpToParam($row)
708  {
709  return $this->‪getId($row);
710  }
711 
712  /********************************
713  *
714  * tree data building
715  *
716  ********************************/
725  public function ‪getTree($uid, $depth = 999, $depthData = '')
726  {
727  // Buffer for id hierarchy is reset:
728  $this->buffer_idH = [];
729  // Init vars
730  $depth = (int)$depth;
731  $HTML = '';
732  $a = 0;
733  $res = $this->‪getDataInit($uid);
734  $c = $this->‪getDataCount($res);
735  $crazyRecursionLimiter = 9999;
736  $idH = [];
737  // Traverse the records:
738  while ($crazyRecursionLimiter > 0 && ($row = $this->‪getDataNext($res))) {
740  if (!$this->‪getBackendUser()->isInWebMount($this->table === 'pages' ? $row : $row['pid'])) {
741  // Current record is not within web mount => skip it
742  continue;
743  }
744 
745  $a++;
746  $crazyRecursionLimiter--;
747  $newID = $row['uid'];
748  if ($newID == 0) {
749  throw new \RuntimeException('Endless recursion detected: TYPO3 has detected an error in the database. Please fix it manually (e.g. using phpMyAdmin) and change the UID of ' . $this->table . ':0 to a new value. See https://forge.typo3.org/issues/16150 to get more information about a possible cause.', 1294586383);
750  }
751  // Reserve space.
752  $this->tree[] = [];
753  end($this->tree);
754  // Get the key for this space
755  $treeKey = key($this->tree);
756  // If records should be accumulated, do so
757  if ($this->setRecs) {
758  $this->recs[$row['uid']] = $row;
759  }
760  // Accumulate the id of the element in the internal arrays
761  $this->ids[] = ($idH[$row['uid']]['uid'] = $row['uid']);
762  $this->ids_hierarchy[$depth][] = $row['uid'];
763  $this->orig_ids_hierarchy[$depth][] = $row['_ORIG_uid'] ?: $row['uid'];
764 
765  // Make a recursive call to the next level
766  $nextLevelDepthData = $depthData . '<span class="treeline-icon treeline-icon-' . ($a === $c ? 'clear' : 'line') . '"></span>';
767  $hasSub = $this->‪expandNext($newID) && !$row['php_tree_stop'];
768  if ($depth > 1 && $hasSub) {
769  $nextCount = $this->‪getTree($newID, $depth - 1, $nextLevelDepthData);
770  if (!empty($this->buffer_idH)) {
771  $idH[$row['uid']]['subrow'] = ‪$this->buffer_idH;
772  }
773  // Set "did expand" flag
774  $isOpen = true;
775  } else {
776  $nextCount = $this->‪getCount($newID);
777  // Clear "did expand" flag
778  $isOpen = false;
779  }
780  // Set HTML-icons, if any:
781  if ($this->makeHTML) {
782  $HTML = $this->‪PMicon($row, $a, $c, $nextCount, $isOpen) . $this->‪wrapStop($this->‪getIcon($row), $row);
783  }
784  // Finally, add the row/HTML content to the ->tree array in the reserved key.
785  $this->tree[$treeKey] = [
786  'row' => $row,
787  'HTML' => $HTML,
788  'invertedDepth' => $depth,
789  'depthData' => $depthData,
790  'bank' => ‪$this->bank,
791  'hasSub' => $nextCount && $hasSub,
792  'isFirst' => $a === 1,
793  'isLast' => $a === $c,
794  ];
795  }
796 
797  $this->‪getDataFree($res);
798  $this->buffer_idH = $idH;
799  return $c;
800  }
801 
802  /********************************
803  *
804  * Data handling
805  * Works with records and arrays
806  *
807  ********************************/
815  public function ‪getCount($uid)
816  {
817  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
818  $queryBuilder->getRestrictions()
819  ->removeAll()
820  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
821  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, (int)$this->BE_USER->workspace));
822  $count = $queryBuilder
823  ->count('uid')
824  ->from($this->table)
825  ->where(
826  $queryBuilder->expr()->eq(
827  $this->parentField,
828  $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)
829  ),
831  )
832  ->execute()
833  ->fetchColumn();
834 
835  return (int)$count;
836  }
837 
843  public function ‪getRootRecord()
844  {
845  return ['title' => ‪$this->title, 'uid' => 0];
846  }
847 
856  public function ‪getRecord($uid)
857  {
858  return ‪BackendUtility::getRecordWSOL($this->table, $uid);
859  }
860 
871  public function ‪getDataInit($parentId)
872  {
873  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
874  $queryBuilder->getRestrictions()
875  ->removeAll()
876  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
877  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, (int)$this->BE_USER->workspace));
878  $queryBuilder
879  ->select(...$this->fieldArray)
880  ->from($this->table)
881  ->where(
882  $queryBuilder->expr()->eq(
883  $this->parentField,
884  $queryBuilder->createNamedParameter($parentId, \PDO::PARAM_INT)
885  ),
887  );
888 
889  foreach (‪QueryHelper::parseOrderBy($this->orderByFields) as $orderPair) {
890  [$fieldName, $order] = $orderPair;
891  $queryBuilder->addOrderBy($fieldName, $order);
892  }
893 
894  return $queryBuilder->execute();
895  }
896 
905  public function ‪getDataCount(&$res)
906  {
907  return $res->rowCount();
908  }
909 
919  public function ‪getDataNext(&$res)
920  {
921  while ($row = $res->fetch()) {
922  ‪BackendUtility::workspaceOL($this->table, $row, $this->BE_USER->workspace, true);
923  if (is_array($row)) {
924  break;
925  }
926  }
927  return $row;
928  }
929 
936  public function ‪getDataFree(&$res)
937  {
938  $res->closeCursor();
939  }
940 
947  protected function ‪getMountPointPath(int $uid): string
948  {
949  if ($uid <= 0) {
950  return '';
951  }
952  $rootline = array_reverse(‪BackendUtility::BEgetRootLine($uid));
953  array_shift($rootline);
954  $path = [];
955  foreach ($rootline as $rootlineElement) {
956  $record = ‪BackendUtility::getRecordWSOL('pages', $rootlineElement['uid'], 'title, nav_title', '', true, true);
957  $text = $record['title'];
958  if ((bool)($this->‪getBackendUser()->getTSConfig()['options.']['pageTree.']['showNavTitle'] ?? false)
959  && trim($record['nav_title'] ?? '') !== ''
960  ) {
961  $text = $record['nav_title'];
962  }
963  $path[] = htmlspecialchars($text);
964  }
965  return '/' . implode('/', $path);
966  }
967 
971  protected function ‪getLanguageService()
972  {
973  return ‪$GLOBALS['LANG'];
974  }
975 
979  protected function ‪getBackendUser()
980  {
981  return ‪$GLOBALS['BE_USER'];
982  }
983 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Core\Database\Query\QueryHelper\parseOrderBy
‪static array array[] parseOrderBy(string $input)
Definition: QueryHelper.php:44
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$parentField
‪string $parentField
Definition: AbstractTreeView.php:111
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$fieldArray
‪array $fieldArray
Definition: AbstractTreeView.php:135
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$clause
‪string $clause
Definition: AbstractTreeView.php:119
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getDataInit
‪mixed getDataInit($parentId)
Definition: AbstractTreeView.php:841
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$stored
‪array $stored
Definition: AbstractTreeView.php:214
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$ext_IconMode
‪bool $ext_IconMode
Definition: AbstractTreeView.php:60
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$title
‪string $title
Definition: AbstractTreeView.php:74
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$treeName
‪string $treeName
Definition: AbstractTreeView.php:152
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\init
‪init($clause='', $orderByFields='')
Definition: AbstractTreeView.php:261
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$expandAll
‪bool $expandAll
Definition: AbstractTreeView.php:44
‪if
‪if(PHP_SAPI !=='cli')
Definition: splitAcceptanceTests.php:33
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\initializePositionSaving
‪initializePositionSaving()
Definition: AbstractTreeView.php:560
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$makeHTML
‪int $makeHTML
Definition: AbstractTreeView.php:167
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$ids
‪array $ids
Definition: AbstractTreeView.php:182
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$defaultList
‪string $defaultList
Definition: AbstractTreeView.php:142
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$BE_USER
‪TYPO3 CMS Core Authentication BackendUserAuthentication string $BE_USER
Definition: AbstractTreeView.php:88
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$buffer_idH
‪array $buffer_idH
Definition: AbstractTreeView.php:197
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\PM_ATagWrap
‪string PM_ATagWrap($icon, $cmd, $bMark='', $isOpen=false)
Definition: AbstractTreeView.php:468
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$orig_ids_hierarchy
‪array $orig_ids_hierarchy
Definition: AbstractTreeView.php:192
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$expandFirst
‪bool $expandFirst
Definition: AbstractTreeView.php:39
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:33
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getMountPointPath
‪string getMountPointPath(int $uid)
Definition: AbstractTreeView.php:917
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$table
‪string $table
Definition: AbstractTreeView.php:105
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getDataFree
‪getDataFree(&$res)
Definition: AbstractTreeView.php:906
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$showDefaultTitleAttribute
‪bool $showDefaultTitleAttribute
Definition: AbstractTreeView.php:81
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\savePosition
‪savePosition()
Definition: AbstractTreeView.php:589
‪TYPO3\CMS\Backend\Utility\BackendUtility\BEgetRootLine
‪static array BEgetRootLine($uid, $clause='', $workspaceOL=false, array $additionalFields=[])
Definition: BackendUtility.php:343
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\expandNext
‪bool expandNext($id)
Definition: AbstractTreeView.php:550
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getBrowsableTree
‪string getBrowsableTree()
Definition: AbstractTreeView.php:316
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getId
‪int getId($row)
Definition: AbstractTreeView.php:666
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$ext_showPathAboveMounts
‪bool $ext_showPathAboveMounts
Definition: AbstractTreeView.php:64
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getRootRecord
‪array getRootRecord()
Definition: AbstractTreeView.php:813
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getDataCount
‪int getDataCount(&$res)
Definition: AbstractTreeView.php:875
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\reset
‪reset()
Definition: AbstractTreeView.php:296
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$tree
‪array $tree
Definition: AbstractTreeView.php:209
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$specUIDmap
‪array $specUIDmap
Definition: AbstractTreeView.php:203
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\__construct
‪__construct()
Definition: AbstractTreeView.php:229
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getTitleAttrib
‪string getTitleAttrib($row)
Definition: AbstractTreeView.php:655
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getRootIcon
‪string getRootIcon($rec)
Definition: AbstractTreeView.php:606
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$orderByFields
‪string $orderByFields
Definition: AbstractTreeView.php:127
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\wrapStop
‪string wrapStop($str, $row)
Definition: AbstractTreeView.php:527
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\addTagAttributes
‪string addTagAttributes($icon, $attr)
Definition: AbstractTreeView.php:514
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: AbstractTreeView.php:949
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$bank
‪int $bank
Definition: AbstractTreeView.php:219
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\wrapIcon
‪string wrapIcon($icon, $row)
Definition: AbstractTreeView.php:502
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\addField
‪addField($field, $noCheck=false)
Definition: AbstractTreeView.php:286
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getJumpToParam
‪string getJumpToParam($row)
Definition: AbstractTreeView.php:677
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$recs
‪array $recs
Definition: AbstractTreeView.php:224
‪TYPO3\CMS\Backend\Tree\View
Definition: AbstractTreeView.php:16
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordWSOL
‪static array getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
Definition: BackendUtility.php:139
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecord
‪static array null getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
Definition: BackendUtility.php:95
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getLanguageService
‪LanguageService getLanguageService()
Definition: AbstractTreeView.php:941
‪TYPO3\CMS\Core\Database\Query\QueryHelper\stripLogicalOperatorPrefix
‪static string stripLogicalOperatorPrefix(string $constraint)
Definition: QueryHelper.php:165
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getIcon
‪string getIcon($row)
Definition: AbstractTreeView.php:618
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\determineScriptUrl
‪determineScriptUrl()
Definition: AbstractTreeView.php:237
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\Utility\BackendUtility\workspaceOL
‪static workspaceOL($table, &$row, $wsid=-99, $unsetMovePointers=false)
Definition: BackendUtility.php:3586
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getTree
‪int getTree($uid, $depth=999, $depthData='')
Definition: AbstractTreeView.php:695
‪TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:28
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getRecord
‪array getRecord($uid)
Definition: AbstractTreeView.php:826
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$addSelfId
‪int $addSelfId
Definition: AbstractTreeView.php:69
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$MOUNTS
‪array null $MOUNTS
Definition: AbstractTreeView.php:98
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$domIdPrefix
‪string $domIdPrefix
Definition: AbstractTreeView.php:161
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getThisScript
‪string getThisScript()
Definition: AbstractTreeView.php:250
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$setRecs
‪int $setRecs
Definition: AbstractTreeView.php:173
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\PMicon
‪string PMicon($row, $a, $c, $nextCount, $isOpen)
Definition: AbstractTreeView.php:448
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getTitleStr
‪string getTitleStr($row, $titleLen=30)
Definition: AbstractTreeView.php:641
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$ids_hierarchy
‪array $ids_hierarchy
Definition: AbstractTreeView.php:187
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$titleAttrib
‪string $titleAttrib
Definition: AbstractTreeView.php:54
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView
Definition: AbstractTreeView.php:34
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\wrapTitle
‪string wrapTitle($title, $row, $bank=0)
Definition: AbstractTreeView.php:488
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\printTree
‪string printTree($treeArr='')
Definition: AbstractTreeView.php:382
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getCount
‪int getCount($uid)
Definition: AbstractTreeView.php:785
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\getDataNext
‪array bool getDataNext(&$res)
Definition: AbstractTreeView.php:889
‪TYPO3\CMS\Backend\Tree\View\AbstractTreeView\$thisScript
‪string $thisScript
Definition: AbstractTreeView.php:49
‪TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction
Definition: WorkspaceRestriction.php:39