= 0) { $pids = $queryGenerator->getTreeList($startPid, $recursive); if (strlen($pids) > 0) { $recursiveStoragePids .= ',' . $pids; } } } return GeneralUtility::uniqueList($recursiveStoragePids); } /** * Set properties of an object/array in cobj->LOAD_REGISTER which can then * be used to be loaded via TS with register:name * * @param string $properties comma separated list of properties * @param mixed $object object or array to get the properties * @param string $prefix optional prefix * * @return void */ public static function setRegisterProperties($properties, $object, $prefix = 'news'): void { if (!empty($properties) && $object !== null) { $cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class); $items = GeneralUtility::trimExplode(',', $properties, true); $register = []; foreach ($items as $item) { $key = $prefix . ucfirst($item); if (is_object($object)) { $getter = 'get' . ucfirst($item); try { $value = $object->$getter(); if ($value instanceof \DateTime) { $value = $value->getTimestamp(); } $register[$key] = $value; } catch (\Exception $e) { $logger = GeneralUtility::makeInstance(LogManager::class)->getLogger(__CLASS__); $logger->warning($e->getMessage()); } } if (is_array($object)) { $value = $object[$item]; $register[$key] = $value; } } $cObj->cObjGetSingle('LOAD_REGISTER', $register); } } /** * Return a page tree * * @param int $pageUid page to start with * @param int $treeLevel count of levels * @return PageTreeView * @throws \Exception */ public static function pageTree($pageUid, $treeLevel): PageTreeView { if (TYPO3_MODE !== 'BE') { throw new \Exception('Page::pageTree does only work in the backend!'); } $pageUid = (int)$pageUid; if ($pageUid === 0 && !self::getBackendUser()->isAdmin()) { $mounts = self::getBackendUser()->returnWebmounts(); $pageUid = array_shift($mounts); } /* @var $tree PageTreeView */ $tree = GeneralUtility::makeInstance(PageTreeView::class); $tree->init('AND ' . self::getBackendUser()->getPagePermsClause(1)); $treeStartingRecord = BackendUtility::getRecord('pages', $pageUid); BackendUtility::workspaceOL('pages', $treeStartingRecord); $iconFactory = GeneralUtility::makeInstance(IconFactory::class); // Creating top icon; the current page $tree->tree[] = [ 'row' => $treeStartingRecord, 'HTML' => is_array($treeStartingRecord) ? $iconFactory->getIconForRecord('pages', $treeStartingRecord, Icon::SIZE_SMALL)->render() : '' ]; $tree->getTree($pageUid, $treeLevel, ''); return $tree; } /** * Get backend user * * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication */ protected static function getBackendUser(): \TYPO3\CMS\Core\Authentication\BackendUserAuthentication { return $GLOBALS['BE_USER']; } }