‪TYPO3CMS  ‪main
AdministrationRepository.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 
19 use TYPO3\CMS\Backend\Utility\BackendUtility;
27 use TYPO3\CMS\Core\Imaging\IconSize;
31 
37 {
41  public array ‪$external_parsers = [];
42 
43  protected array ‪$allPhashListed = [];
44  protected array ‪$iconFileNameCache = [];
45 
49  public function ‪getGrlistRecord(string $phash): array
50  {
51  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_grlist');
52  $result = $queryBuilder
53  ->select('*')
54  ->from('index_grlist')
55  ->where(
56  $queryBuilder->expr()->eq(
57  'phash',
58  $queryBuilder->createNamedParameter($phash)
59  )
60  )
61  ->executeQuery();
62  $numberOfRows = $queryBuilder
63  ->count('uniqid')
64  ->executeQuery()
65  ->fetchOne();
66  $allRows = [];
67  while ($row = $result->fetchAssociative()) {
68  $row['pcount'] = $numberOfRows;
69  $allRows[] = $row;
70  }
71  return $allRows;
72  }
73 
74  public function ‪getNumberOfFulltextRecords(string $phash): int|false
75  {
76  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_fulltext');
77  return $queryBuilder
78  ->count('phash')
79  ->from('index_fulltext')
80  ->where(
81  $queryBuilder->expr()->eq(
82  'phash',
83  $queryBuilder->createNamedParameter($phash)
84  )
85  )
86  ->executeQuery()
87  ->fetchOne();
88  }
89 
90  public function ‪getNumberOfWords(string $phash): int|false
91  {
92  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_rel');
93  return $queryBuilder
94  ->count('*')
95  ->from('index_rel')
96  ->where(
97  $queryBuilder->expr()->eq(
98  'phash',
99  $queryBuilder->createNamedParameter($phash)
100  )
101  )
102  ->executeQuery()
103  ->fetchOne();
104  }
105 
109  public function ‪getExternalDocumentsStatistic(): array
110  {
111  $result = [];
112 
113  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
114  $res = $queryBuilder
115  ->select('index_phash.*')
116  ->addSelectLiteral($queryBuilder->expr()->count('*', 'pcount'))
117  ->from('index_phash')
118  ->where($queryBuilder->expr()->neq('item_type', $queryBuilder->createNamedParameter(0, ‪Connection::PARAM_INT)))
119  ->groupBy(
120  'phash_grouping',
121  'phash',
122  'static_page_arguments',
123  'data_filename',
124  'data_page_id',
125  'data_page_type',
126  'data_page_mp',
127  'gr_list',
128  'item_type',
129  'item_title',
130  'item_description',
131  'item_mtime',
132  'tstamp',
133  'item_size',
134  'contentHash',
135  'crdate',
136  'parsetime',
137  'sys_language_uid',
138  'item_crdate',
139  'externalUrl',
140  'recordUid',
141  'freeIndexUid',
142  'freeIndexSetId'
143  )
144  ->orderBy('item_type')
145  ->executeQuery();
146 
147  while ($row = $res->fetchAssociative()) {
148  $this->‪addAdditionalInformation($row);
149 
150  $result[] = $row;
151 
152  if ($row['pcount'] > 1) {
153  $res2 = $queryBuilder
154  ->select('*')
155  ->from('index_phash')
156  ->where(
157  $queryBuilder->expr()->eq(
158  'phash_grouping',
159  $queryBuilder->createNamedParameter($row['phash_grouping'])
160  ),
161  $queryBuilder->expr()->neq(
162  'phash',
163  $queryBuilder->createNamedParameter($row['phash'])
164  )
165  )
166  ->executeQuery();
167  while ($row2 = $res2->fetchAssociative()) {
168  $this->‪addAdditionalInformation($row2);
169  $result[] = $row2;
170  }
171  }
172  }
173  return $result;
174  }
175 
179  public function ‪getRecordsNumbers(): array
180  {
181  $tables = [
182  'index_phash',
183  'index_words',
184  'index_rel',
185  'index_grlist',
186  'index_section',
187  'index_fulltext',
188  ];
189  $recordList = [];
190  foreach ($tables as $tableName) {
191  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($tableName);
192  $recordList[$tableName] = $queryBuilder
193  ->count('*')
194  ->from($tableName)
195  ->executeQuery()
196  ->fetchOne();
197  }
198  return $recordList;
199  }
200 
204  public function ‪getPageHashTypes(): array
205  {
206  $counts = [];
207  $types = [
208  'html' => 1,
209  'htm' => 1,
210  'pdf' => 2,
211  'doc' => 3,
212  'txt' => 4,
213  ];
214  $revTypes = array_flip($types);
215  $revTypes[0] = 'TYPO3 page';
216 
217  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
218  $res = $queryBuilder
219  ->select('item_type')
220  ->addSelectLiteral($queryBuilder->expr()->count('*', 'count'))
221  ->from('index_phash')
222  ->groupBy('item_type')
223  ->orderBy('item_type')
224  ->executeQuery();
225 
226  while ($row = $res->fetchAssociative()) {
227  $itemType = $row['item_type'];
228  $counts[] = [
229  'count' => $row['count'],
230  'name' => $revTypes[$itemType] ?? '',
231  'type' => $itemType,
232  'uniqueCount' => $this->‪countUniqueTypes($itemType),
233  ];
234  }
235  return $counts;
236  }
237 
241  protected function ‪countUniqueTypes(string $itemType): int
242  {
243  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
244  $items = $queryBuilder
245  ->count('*')
246  ->from('index_phash')
247  ->where(
248  $queryBuilder->expr()->eq(
249  'item_type',
250  $queryBuilder->createNamedParameter($itemType)
251  )
252  )
253  ->groupBy('phash_grouping')
254  ->executeQuery()
255  ->fetchAllAssociative();
256 
257  return count($items);
258  }
259 
263  public function ‪getNumberOfSections(string $pageHash): int
264  {
265  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_section');
266  return (int)$queryBuilder
267  ->count('phash')
268  ->from('index_section')
269  ->where(
270  $queryBuilder->expr()->eq(
271  'phash',
272  $queryBuilder->createNamedParameter($pageHash)
273  )
274  )
275  ->executeQuery()
276  ->fetchOne();
277  }
278 
282  public function ‪getPageStatistic(): array
283  {
284  $result = [];
285  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
286  $res = $queryBuilder
287  ->select('index_phash.*')
288  ->addSelectLiteral($queryBuilder->expr()->count('*', 'pcount'))
289  ->from('index_phash')
290  ->where($queryBuilder->expr()->neq('data_page_id', $queryBuilder->createNamedParameter(0, ‪Connection::PARAM_INT)))
291  ->groupBy(
292  'phash_grouping',
293  'phash',
294  'static_page_arguments',
295  'data_filename',
296  'data_page_id',
297  'data_page_type',
298  'data_page_mp',
299  'gr_list',
300  'item_type',
301  'item_title',
302  'item_description',
303  'item_mtime',
304  'tstamp',
305  'item_size',
306  'contentHash',
307  'crdate',
308  'parsetime',
309  'sys_language_uid',
310  'item_crdate',
311  'externalUrl',
312  'recordUid',
313  'freeIndexUid',
314  'freeIndexSetId'
315  )
316  ->orderBy('data_page_id')
317  ->executeQuery();
318 
319  while ($row = $res->fetchAssociative()) {
320  $this->‪addAdditionalInformation($row);
321  $result[] = $row;
322 
323  if ($row['pcount'] > 1) {
324  $res2 = $queryBuilder
325  ->select('*')
326  ->from('index_phash')
327  ->where(
328  $queryBuilder->expr()->eq(
329  'phash_grouping',
330  $queryBuilder->createNamedParameter($row['phash_grouping'])
331  ),
332  $queryBuilder->expr()->neq(
333  'phash',
334  $queryBuilder->createNamedParameter($row['phash'])
335  )
336  )
337  ->executeQuery();
338  while ($row2 = $res2->fetchAssociative()) {
339  $this->‪addAdditionalInformation($row2);
340  $result[] = $row2;
341  }
342  }
343  }
344  return $result;
345  }
346 
350  public function ‪getGeneralSearchStatistic(string $additionalWhere, int $pageUid, int $max = 50): ?array
351  {
352  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
353  ->getQueryBuilderForTable('index_stat_word');
354  $queryBuilder
355  ->from('index_stat_word')
356  ->where(
357  $queryBuilder->expr()->eq(
358  'pageid',
359  $queryBuilder->createNamedParameter($pageUid, ‪Connection::PARAM_INT)
360  )
361  );
362 
363  if (!empty($additionalWhere)) {
364  $queryBuilder->andWhere(‪QueryHelper::stripLogicalOperatorPrefix($additionalWhere));
365  }
366 
367  $countQueryBuilder = clone $queryBuilder;
368 
369  $queryBuilder
370  ->select('word')
371  ->addSelectLiteral($queryBuilder->expr()->count('*', 'c'))
372  ->groupBy('word')
373  ->orderBy('c', 'desc')
374  ->setMaxResults($max);
375 
376  $count = (int)$countQueryBuilder
377  ->count('uid')
378  ->executeQuery()
379  ->fetchOne();
380 
381  // exist several statistics for this page?
382  if ($count === 0) {
383  // Limit access to pages of the current site
384  $queryBuilder->where(
385  $queryBuilder->expr()->in(
386  'pageid',
387  $queryBuilder->quoteArrayBasedValueListToIntegerList($this->extGetTreeList($pageUid))
388  ),
390  );
391  }
392 
393  return $queryBuilder->executeQuery()->fetchAllAssociative();
394  }
395 
399  protected function ‪addAdditionalInformation(array &$row): void
400  {
401  $grListRec = $this->‪getGrlistRecord($row['phash']);
402  $row['static_page_arguments'] = $row['static_page_arguments'] ? json_decode($row['static_page_arguments'], true) : null;
403 
404  $row['numberOfWords'] = $this->‪getNumberOfWords($row['phash']);
405  $row['numberOfSections'] = $this->‪getNumberOfSections($row['phash']);
406  $row['numberOfFulltext'] = $this->‪getNumberOfFulltextRecords($row['phash']);
407  $row['grList'] = $grListRec;
408  }
409 
413  public function ‪getTree(int $pageId, int $depth, string $mode): array
414  {
415  $allLines = [];
416  $pageRecord = BackendUtility::getRecord('pages', $pageId);
417  if (!$pageRecord) {
418  return $allLines;
419  }
420  $tree = GeneralUtility::makeInstance(PageTreeView::class);
421  $perms_clause = $this->‪getBackendUserAuthentication()->getPagePermsClause(‪Permission::PAGE_SHOW);
422  $tree->init('AND ' . $perms_clause);
423  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
424  $HTML = '<span title="' . htmlspecialchars($pageRecord['title']) . '">' . $iconFactory->getIconForRecord('pages', $pageRecord, IconSize::SMALL)->render() . '</span>';
425  $tree->tree[] = [
426  'row' => $pageRecord,
427  'HTML' => $HTML,
428  ];
429 
430  if ($depth > 0) {
431  $tree->getTree($pageId, $depth);
432  }
433 
434  foreach ($tree->tree as $singleLine) {
435  $rows = $this->‪getPhashRowsForPageId($singleLine['row']['uid']);
436  $lines = [];
437  // Collecting phash values (to remove local indexing for)
438  // Traverse the result set of phash rows selected:
439  foreach ($rows as $row) {
440  $row['icon'] = $this->‪makeItemTypeIcon($row['item_type']);
441  $this->allPhashListed[] = $row['phash'];
442 
443  // Adds a display row:
444  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
445  ->getQueryBuilderForTable('index_rel');
446 
447  $wordCountResult = $queryBuilder->count('index_words.baseword')
448  ->from('index_rel')
449  ->from('index_words')
450  ->where(
451  $queryBuilder->expr()->eq(
452  'index_rel.phash',
453  $queryBuilder->createNamedParameter($row['phash'])
454  ),
455  $queryBuilder->expr()->eq('index_words.wid', $queryBuilder->quoteIdentifier('index_rel.wid'))
456  )
457  ->groupBy('index_words.baseword')
458  // @todo Executing and not use the assigned result looks weired, at least with the
459  // circumstance that the same QueryBuilder is reused as count query and executed
460  // directly afterwards - must be rechecked and either solved or proper commented
461  // why this mystery is needed here as this is not obvious and against general
462  // recommendation to not reuse the QueryBuilder.
463  ->executeQuery();
464 
465  $row['wordCount'] = $queryBuilder
466  ->count('index_rel.wid')
467  ->executeQuery()
468  ->fetchOne();
469  $wordCountResult->free();
470 
471  if ($mode === 'content') {
472  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
473  ->getQueryBuilderForTable('index_fulltext');
474  $row['fulltextData'] = $queryBuilder->select('*')
475  ->from('index_fulltext')
476  ->where(
477  $queryBuilder->expr()->eq(
478  'phash',
479  $queryBuilder->createNamedParameter($row['phash'])
480  )
481  )
482  ->setMaxResults(1)
483  ->executeQuery()
484  ->fetchAssociative();
485 
486  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
487  ->getQueryBuilderForTable('index_rel');
488  $wordRecords = $queryBuilder->select('index_words.baseword')
489  ->from('index_rel')
490  ->from('index_words')
491  ->where(
492  $queryBuilder->expr()->eq(
493  'index_rel.phash',
494  $queryBuilder->createNamedParameter($row['phash'])
495  ),
496  $queryBuilder->expr()->eq(
497  'index_words.wid',
498  $queryBuilder->quoteIdentifier('index_rel.wid')
499  )
500  )
501  ->groupBy('index_words.baseword')
502  ->orderBy('index_words.baseword')
503  ->executeQuery()
504  ->fetchAllAssociative();
505 
506  if (is_array($wordRecords)) {
507  $row['allWords'] = array_column($wordRecords, 'baseword');
508  }
509  }
510 
511  $lines[] = $row;
512  }
513 
514  $singleLine['lines'] = $lines;
515  $allLines[] = $singleLine;
516  }
517 
518  return $allLines;
519  }
520 
521  protected function ‪getPhashRowsForPageId(int $pageId): array
522  {
523  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
524  $result = $queryBuilder->select(
525  'ISEC.phash_t3',
526  'ISEC.rl0',
527  'ISEC.rl1',
528  'ISEC.rl2',
529  'ISEC.page_id',
530  'ISEC.uniqid',
531  'IP.phash',
532  'IP.phash_grouping',
533  'IP.static_page_arguments',
534  'IP.data_filename',
535  'IP.data_page_id',
536  'IP.data_page_type',
537  'IP.data_page_mp',
538  'IP.gr_list',
539  'IP.item_type',
540  'IP.item_title',
541  'IP.item_description',
542  'IP.item_mtime',
543  'IP.tstamp',
544  'IP.item_size',
545  'IP.contentHash',
546  'IP.crdate',
547  'IP.parsetime',
548  'IP.sys_language_uid',
549  'IP.item_crdate',
550  'IP.externalUrl',
551  'IP.recordUid',
552  'IP.freeIndexUid',
553  'IP.freeIndexSetId'
554  )
555  ->addSelectLiteral($queryBuilder->expr()->count('*', 'count_val'))
556  ->from('index_phash', 'IP')
557  ->from('index_section', 'ISEC')
558  ->where(
559  $queryBuilder->expr()->eq('IP.phash', $queryBuilder->quoteIdentifier('ISEC.phash')),
560  $queryBuilder->expr()->eq(
561  'ISEC.page_id',
562  $queryBuilder->createNamedParameter($pageId, ‪Connection::PARAM_INT)
563  )
564  )
565  ->groupBy(
566  'IP.phash',
567  'IP.phash_grouping',
568  'IP.static_page_arguments',
569  'IP.data_filename',
570  'IP.data_page_id',
571  'IP.data_page_type',
572  'IP.data_page_mp',
573  'IP.gr_list',
574  'IP.item_type',
575  'IP.item_title',
576  'IP.item_description',
577  'IP.item_mtime',
578  'IP.tstamp',
579  'IP.item_size',
580  'IP.contentHash',
581  'IP.crdate',
582  'IP.parsetime',
583  'IP.sys_language_uid',
584  'IP.item_crdate',
585  'ISEC.phash',
586  'ISEC.phash_t3',
587  'ISEC.rl0',
588  'ISEC.rl1',
589  'ISEC.rl2',
590  'ISEC.page_id',
591  'ISEC.uniqid',
592  'IP.externalUrl',
593  'IP.recordUid',
594  'IP.freeIndexUid',
595  'IP.freeIndexSetId'
596  )
597  ->orderBy('IP.item_type')
598  ->addOrderBy('IP.tstamp')
599  ->setMaxResults(11)
600  ->executeQuery();
601 
602  $usedResults = [];
603  // Collecting phash values (to remove local indexing for)
604  // Traverse the result set of phash rows selected
605  while ($row = $result->fetchAssociative()) {
606  $usedResults[] = $row;
607  }
608  return $usedResults;
609  }
610 
617  protected function ‪extGetTreeList(int $id): array
618  {
619  $pageIds = $this->‪getPageTreeIds($id, 100, 0);
620  $pageIds[] = $id;
621  return $pageIds;
622  }
623 
633  protected function ‪getPageTreeIds(int $id, int $depth, int $begin): array
634  {
635  if (!$id || $depth <= 0) {
636  return [];
637  }
638  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
639  ->getQueryBuilderForTable('pages');
640 
641  $queryBuilder->getRestrictions()
642  ->removeAll()
643  ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
644  $result = $queryBuilder
645  ->select('uid', 'title')
646  ->from('pages')
647  ->where(
648  $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($id, ‪Connection::PARAM_INT))
649  )
650  ->executeQuery();
651 
652  $pageIds = [];
653  while ($row = $result->fetchAssociative()) {
654  if ($begin <= 0) {
655  $pageIds[] = (int)$row['uid'];
656  }
657  if ($depth > 1) {
658  $pageIds = array_merge($pageIds, $this->‪getPageTreeIds((int)$row['uid'], $depth - 1, $begin - 1));
659  }
660  }
661  return $pageIds;
662  }
663 
667  public function ‪removeIndexedPhashRow(string $phashList, int $pageId, int $depth = 4): void
668  {
669  if ($phashList === 'ALL') {
670  if ($depth === 0) {
671  $phashRows = $this->‪getPhashRowsForPageId((int)$pageId);
672  $phashRows = array_column($phashRows, 'phash');
673  } else {
674  $this->‪getTree($pageId, $depth, '');
675  $phashRows = ‪$this->allPhashListed;
676  $this->allPhashListed = [];
677  }
678  } else {
679  $phashRows = ‪GeneralUtility::trimExplode(',', $phashList, true);
680  }
681 
682  foreach ($phashRows as $phash) {
683  if ($phash !== '') {
684  $idList = [];
685  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
686  ->getQueryBuilderForTable('index_section');
687  $res = $queryBuilder
688  ->select('page_id')
689  ->from('index_section')
690  ->where(
691  $queryBuilder->expr()->eq(
692  'phash',
693  $queryBuilder->createNamedParameter($phash)
694  )
695  )
696  ->executeQuery();
697  while ($row = $res->fetchAssociative()) {
698  $idList[] = (int)$row['page_id'];
699  }
700 
701  if (!empty($idList)) {
702  $pageCache = GeneralUtility::makeInstance(CacheManager::class)->getCache('pages');
703  foreach ($idList as $pageId) {
704  $pageCache->flushByTag('pageId_' . $pageId);
705  }
706  }
707 
708  // Removing old registrations for all tables.
709  $tableArr = [
710  'index_phash',
711  'index_rel',
712  'index_section',
713  'index_grlist',
714  'index_fulltext',
715  'index_debug',
716  ];
717  foreach ($tableArr as $table) {
718  GeneralUtility::makeInstance(ConnectionPool::class)
719  ->getConnectionForTable($table)
720  ->delete($table, ['phash' => $phash]);
721  }
722  }
723  }
724  }
725 
729  public function ‪saveStopWords(array $words): void
730  {
731  foreach ($words as $wid => $state) {
732  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_words');
733  $queryBuilder
734  ->update('index_words')
735  ->set('is_stopword', (int)$state)
736  ->where(
737  $queryBuilder->expr()->eq(
738  'wid',
739  $queryBuilder->createNamedParameter($wid)
740  )
741  )
742  ->executeStatement();
743  }
744  }
745 
749  protected function ‪makeItemTypeIcon(string $itemType): string
750  {
751  if (!isset($this->iconFileNameCache[$itemType])) {
752  $icon = '';
753  if ($itemType === '0') {
754  $icon = 'EXT:indexed_search/Resources/Public/Icons/FileTypes/pages.gif';
755  } elseif ($this->external_parsers[$itemType] ?? false) {
756  $icon = $this->external_parsers[$itemType]->getIcon($itemType);
757  }
758  $this->iconFileNameCache[$itemType] = $icon;
759  }
760  return $this->iconFileNameCache[$itemType];
761  }
762 
764  {
765  return ‪$GLOBALS['BE_USER'];
766  }
767 }
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPageHashTypes
‪getPageHashTypes()
Definition: AdministrationRepository.php:204
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getNumberOfFulltextRecords
‪getNumberOfFulltextRecords(string $phash)
Definition: AdministrationRepository.php:74
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getGrlistRecord
‪getGrlistRecord(string $phash)
Definition: AdministrationRepository.php:49
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\removeIndexedPhashRow
‪removeIndexedPhashRow(string $phashList, int $pageId, int $depth=4)
Definition: AdministrationRepository.php:667
‪TYPO3\CMS\Core\Database\Connection\PARAM_INT
‪const PARAM_INT
Definition: Connection.php:52
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getNumberOfWords
‪getNumberOfWords(string $phash)
Definition: AdministrationRepository.php:90
‪TYPO3\CMS\IndexedSearch\Domain\Repository
Definition: AdministrationRepository.php:16
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\$allPhashListed
‪array $allPhashListed
Definition: AdministrationRepository.php:43
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\saveStopWords
‪saveStopWords(array $words)
Definition: AdministrationRepository.php:729
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getGeneralSearchStatistic
‪getGeneralSearchStatistic(string $additionalWhere, int $pageUid, int $max=50)
Definition: AdministrationRepository.php:350
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\makeItemTypeIcon
‪makeItemTypeIcon(string $itemType)
Definition: AdministrationRepository.php:749
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getTree
‪getTree(int $pageId, int $depth, string $mode)
Definition: AdministrationRepository.php:413
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\$external_parsers
‪array $external_parsers
Definition: AdministrationRepository.php:41
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getRecordsNumbers
‪getRecordsNumbers()
Definition: AdministrationRepository.php:179
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getNumberOfSections
‪getNumberOfSections(string $pageHash)
Definition: AdministrationRepository.php:263
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPageStatistic
‪getPageStatistic()
Definition: AdministrationRepository.php:282
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getExternalDocumentsStatistic
‪getExternalDocumentsStatistic()
Definition: AdministrationRepository.php:109
‪TYPO3\CMS\Backend\Tree\View\PageTreeView
Definition: PageTreeView.php:28
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\addAdditionalInformation
‪addAdditionalInformation(array &$row)
Definition: AdministrationRepository.php:399
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPageTreeIds
‪array getPageTreeIds(int $id, int $depth, int $begin)
Definition: AdministrationRepository.php:633
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:26
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository
Definition: AdministrationRepository.php:37
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPhashRowsForPageId
‪getPhashRowsForPageId(int $pageId)
Definition: AdministrationRepository.php:521
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\extGetTreeList
‪array extGetTreeList(int $id)
Definition: AdministrationRepository.php:617
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getBackendUserAuthentication
‪getBackendUserAuthentication()
Definition: AdministrationRepository.php:763
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\$iconFileNameCache
‪array $iconFileNameCache
Definition: AdministrationRepository.php:44
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\IndexedSearch\FileContentParser
Definition: FileContentParser.php:36
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:35
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:41
‪TYPO3\CMS\Core\Database\Query\QueryHelper\stripLogicalOperatorPrefix
‪static string stripLogicalOperatorPrefix(string $constraint)
Definition: QueryHelper.php:171
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:28
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode(string $delim, string $string, bool $removeEmptyValues=false, int $limit=0)
Definition: GeneralUtility.php:822
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\countUniqueTypes
‪countUniqueTypes(string $itemType)
Definition: AdministrationRepository.php:241