Initial commit - Typo3 11.5.41
This commit is contained in:
71
typo3conf/ext/tt_address/Classes/Database/QueryGenerator.php
Normal file
71
typo3conf/ext/tt_address/Classes/Database/QueryGenerator.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FriendsOfTYPO3\TtAddress\Database;
|
||||
|
||||
use TYPO3\CMS\Core\Database\Connection;
|
||||
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
/**
|
||||
* This file is part of the "tt_address" Extension for TYPO3 CMS.
|
||||
*
|
||||
* For the full copyright and license information, please read the
|
||||
* LICENSE.txt file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Duplication of \TYPO3\CMS\Core\Database\QueryGenerator which has been deprecated
|
||||
*/
|
||||
class QueryGenerator
|
||||
{
|
||||
/**
|
||||
* Recursively fetch all descendants of a given page
|
||||
*
|
||||
* @param int $id uid of the page
|
||||
* @param int $depth
|
||||
* @param int $begin
|
||||
* @return string comma separated list of descendant pages
|
||||
*/
|
||||
public function getTreeList($id, $depth, $begin = 0): string
|
||||
{
|
||||
$depth = (int)$depth;
|
||||
$begin = (int)$begin;
|
||||
$id = (int)$id;
|
||||
if ($id < 0) {
|
||||
$id = abs($id);
|
||||
}
|
||||
if ($begin === 0) {
|
||||
$theList = $id;
|
||||
} else {
|
||||
$theList = '';
|
||||
}
|
||||
if ($id && $depth > 0) {
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
|
||||
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
|
||||
$queryBuilder->select('uid')
|
||||
->from('pages')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($id, Connection::PARAM_INT)),
|
||||
$queryBuilder->expr()->eq('sys_language_uid', 0)
|
||||
)
|
||||
->orderBy('uid');
|
||||
|
||||
$statement = $queryBuilder->executeQuery();
|
||||
while ($row = $statement->fetchAssociative()) {
|
||||
if ($begin <= 0) {
|
||||
$theList .= ',' . $row['uid'];
|
||||
}
|
||||
if ($depth > 1) {
|
||||
$theSubList = $this->getTreeList($row['uid'], $depth - 1, $begin - 1);
|
||||
if (!empty($theList) && !empty($theSubList) && ($theSubList[0] !== ',')) {
|
||||
$theList .= ',';
|
||||
}
|
||||
$theList .= $theSubList;
|
||||
}
|
||||
}
|
||||
}
|
||||
return (string)$theList;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user