‪TYPO3CMS  11.5
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;
32 
38 {
44  public ‪$external_parsers = [];
45 
49  protected ‪$allPhashListed = [];
50 
54  protected ‪$iconFileNameCache = [];
55 
62  public function ‪getGrlistRecord($phash)
63  {
64  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_grlist');
65  $result = $queryBuilder
66  ->select('*')
67  ->from('index_grlist')
68  ->where(
69  $queryBuilder->expr()->eq(
70  'phash',
71  $queryBuilder->createNamedParameter($phash, ‪Connection::PARAM_INT)
72  )
73  )
74  ->executeQuery();
75  $numberOfRows = $queryBuilder
76  ->count('uniqid')
77  ->executeQuery()
78  ->fetchOne();
79  $allRows = [];
80  while ($row = $result->fetchAssociative()) {
81  $row['pcount'] = $numberOfRows;
82  $allRows[] = $row;
83  }
84  return $allRows;
85  }
86 
93  public function ‪getNumberOfFulltextRecords($phash)
94  {
95  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_fulltext');
96  return $queryBuilder
97  ->count('phash')
98  ->from('index_fulltext')
99  ->where(
100  $queryBuilder->expr()->eq(
101  'phash',
102  $queryBuilder->createNamedParameter($phash, ‪Connection::PARAM_INT)
103  )
104  )
105  ->executeQuery()
106  ->fetchOne();
107  }
108 
115  public function ‪getNumberOfWords($phash)
116  {
117  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_rel');
118  return $queryBuilder
119  ->count('*')
120  ->from('index_rel')
121  ->where(
122  $queryBuilder->expr()->eq(
123  'phash',
124  $queryBuilder->createNamedParameter($phash, ‪Connection::PARAM_INT)
125  )
126  )
127  ->executeQuery()
128  ->fetchOne();
129  }
130 
136  public function ‪getExternalDocumentsStatistic()
137  {
138  $result = [];
139 
140  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
141  $res = $queryBuilder
142  ->select('index_phash.*')
143  ->addSelectLiteral($queryBuilder->expr()->count('*', 'pcount'))
144  ->from('index_phash')
145  ->where($queryBuilder->expr()->neq('item_type', $queryBuilder->createNamedParameter(0, ‪Connection::PARAM_INT)))
146  ->groupBy(
147  'phash_grouping',
148  'phash',
149  'static_page_arguments',
150  'data_filename',
151  'data_page_id',
152  'data_page_type',
153  'data_page_mp',
154  'gr_list',
155  'item_type',
156  'item_title',
157  'item_description',
158  'item_mtime',
159  'tstamp',
160  'item_size',
161  'contentHash',
162  'crdate',
163  'parsetime',
164  'sys_language_uid',
165  'item_crdate',
166  'externalUrl',
167  'recordUid',
168  'freeIndexUid',
169  'freeIndexSetId'
170  )
171  ->orderBy('item_type')
172  ->executeQuery();
173 
174  while ($row = $res->fetchAssociative()) {
175  $this->‪addAdditionalInformation($row);
176 
177  $result[] = $row;
178 
179  if ($row['pcount'] > 1) {
180  $res2 = $queryBuilder
181  ->select('*')
182  ->from('index_phash')
183  ->where(
184  $queryBuilder->expr()->eq(
185  'phash_grouping',
186  $queryBuilder->createNamedParameter($row['phash_grouping'], ‪Connection::PARAM_INT)
187  ),
188  $queryBuilder->expr()->neq(
189  'phash',
190  $queryBuilder->createNamedParameter($row['phash'], ‪Connection::PARAM_INT)
191  )
192  )
193  ->executeQuery();
194  while ($row2 = $res2->fetchAssociative()) {
195  $this->‪addAdditionalInformation($row2);
196  $result[] = $row2;
197  }
198  }
199  }
200  return $result;
201  }
202 
208  public function ‪getRecordsNumbers()
209  {
210  $tables = [
211  'index_phash',
212  'index_words',
213  'index_rel',
214  'index_grlist',
215  'index_section',
216  'index_fulltext',
217  ];
218  $recordList = [];
219  foreach ($tables as $tableName) {
220  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($tableName);
221  $recordList[$tableName] = $queryBuilder
222  ->count('*')
223  ->from($tableName)
224  ->executeQuery()
225  ->fetchOne();
226  }
227  return $recordList;
228  }
229 
235  public function ‪getPageHashTypes()
236  {
237  $counts = [];
238  $types = [
239  'html' => 1,
240  'htm' => 1,
241  'pdf' => 2,
242  'doc' => 3,
243  'txt' => 4,
244  ];
245  $revTypes = array_flip($types);
246  $revTypes[0] = 'TYPO3 page';
247 
248  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
249  $res = $queryBuilder
250  ->select('item_type')
251  ->addSelectLiteral($queryBuilder->expr()->count('*', 'count'))
252  ->from('index_phash')
253  ->groupBy('item_type')
254  ->orderBy('item_type')
255  ->executeQuery();
256 
257  while ($row = $res->fetchAssociative()) {
258  $itemType = $row['item_type'];
259  $counts[] = [
260  'count' => $row['count'],
261  'name' => $revTypes[$itemType] ?? '',
262  'type' => $itemType,
263  'uniqueCount' => $this->‪countUniqueTypes($itemType),
264  ];
265  }
266  return $counts;
267  }
268 
275  protected function ‪countUniqueTypes($itemType)
276  {
277  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
278  $items = $queryBuilder
279  ->count('*')
280  ->from('index_phash')
281  ->where(
282  $queryBuilder->expr()->eq(
283  'item_type',
284  $queryBuilder->createNamedParameter($itemType, ‪Connection::PARAM_STR)
285  )
286  )
287  ->groupBy('phash_grouping')
288  ->executeQuery()
289  ->fetchAllAssociative();
290 
291  return count($items);
292  }
293 
300  public function ‪getNumberOfSections($pageHash)
301  {
302  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_section');
303  return (int)$queryBuilder
304  ->count('phash')
305  ->from('index_section')
306  ->where(
307  $queryBuilder->expr()->eq(
308  'phash',
309  $queryBuilder->createNamedParameter($pageHash, ‪Connection::PARAM_INT)
310  )
311  )
312  ->executeQuery()
313  ->fetchOne();
314  }
315 
321  public function ‪getPageStatistic()
322  {
323  $result = [];
324  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
325  $res = $queryBuilder
326  ->select('index_phash.*')
327  ->addSelectLiteral($queryBuilder->expr()->count('*', 'pcount'))
328  ->from('index_phash')
329  ->where($queryBuilder->expr()->neq('data_page_id', $queryBuilder->createNamedParameter(0, ‪Connection::PARAM_INT)))
330  ->groupBy(
331  'phash_grouping',
332  'phash',
333  'static_page_arguments',
334  'data_filename',
335  'data_page_id',
336  'data_page_type',
337  'data_page_mp',
338  'gr_list',
339  'item_type',
340  'item_title',
341  'item_description',
342  'item_mtime',
343  'tstamp',
344  'item_size',
345  'contentHash',
346  'crdate',
347  'parsetime',
348  'sys_language_uid',
349  'item_crdate',
350  'externalUrl',
351  'recordUid',
352  'freeIndexUid',
353  'freeIndexSetId'
354  )
355  ->orderBy('data_page_id')
356  ->executeQuery();
357 
358  while ($row = $res->fetchAssociative()) {
359  $this->‪addAdditionalInformation($row);
360  $result[] = $row;
361 
362  if ($row['pcount'] > 1) {
363  $res2 = $queryBuilder
364  ->select('*')
365  ->from('index_phash')
366  ->where(
367  $queryBuilder->expr()->eq(
368  'phash_grouping',
369  $queryBuilder->createNamedParameter($row['phash_grouping'], ‪Connection::PARAM_INT)
370  ),
371  $queryBuilder->expr()->neq(
372  'phash',
373  $queryBuilder->createNamedParameter($row['phash'], ‪Connection::PARAM_INT)
374  )
375  )
376  ->executeQuery();
377  while ($row2 = $res2->fetchAssociative()) {
378  $this->‪addAdditionalInformation($row2);
379  $result[] = $row2;
380  }
381  }
382  }
383  return $result;
384  }
385 
394  public function ‪getGeneralSearchStatistic($additionalWhere, $pageUid, $max = 50)
395  {
396  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
397  ->getQueryBuilderForTable('index_stat_word');
398  $queryBuilder
399  ->select('word')
400  ->from('index_stat_word')
401  ->addSelectLiteral($queryBuilder->expr()->count('*', 'c'))
402  ->where(
403  $queryBuilder->expr()->eq(
404  'pageid',
405  $queryBuilder->createNamedParameter($pageUid, ‪Connection::PARAM_INT)
406  )
407  )
408  ->groupBy('word')
409  ->orderBy('c', 'desc')
410  ->setMaxResults((int)$max);
411 
412  if (!empty($additionalWhere)) {
413  $queryBuilder->andWhere(‪QueryHelper::stripLogicalOperatorPrefix($additionalWhere));
414  }
415 
416  $result = $queryBuilder->executeQuery();
417  $countQueryBuilder = clone $queryBuilder;
418  $countQueryBuilder->resetQueryPart('orderBy');
419  $count = (int)$countQueryBuilder
420  ->count('uid')
421  ->executeQuery()
422  ->fetchOne();
423  $result->free();
424 
425  // exist several statistics for this page?
426  if ($count === 0) {
427  // Limit access to pages of the current site
428  $queryBuilder->where(
429  $queryBuilder->expr()->in(
430  'pageid',
431  $queryBuilder->createNamedParameter(
432  $this->extGetTreeList((int)$pageUid),
433  Connection::PARAM_INT_ARRAY
434  )
435  ),
437  );
438  }
439 
440  return $queryBuilder->executeQuery()->fetchAllAssociative();
441  }
442 
448  protected function ‪addAdditionalInformation(array &$row)
449  {
450  $grListRec = $this->‪getGrlistRecord($row['phash']);
451  $row['static_page_arguments'] = $row['static_page_arguments'] ? json_decode($row['static_page_arguments'], true) : null;
452 
453  $row['numberOfWords'] = $this->‪getNumberOfWords($row['phash']);
454  $row['numberOfSections'] = $this->‪getNumberOfSections($row['phash']);
455  $row['numberOfFulltext'] = $this->‪getNumberOfFulltextRecords($row['phash']);
456  $row['grList'] = $grListRec;
457  }
458 
467  public function ‪getTree($pageId, $depth, $mode)
468  {
469  $allLines = [];
470  $pageRecord = BackendUtility::getRecord('pages', (int)$pageId);
471  if (!$pageRecord) {
472  return $allLines;
473  }
474  $tree = GeneralUtility::makeInstance(PageTreeView::class);
476  $tree->init('AND ' . $perms_clause);
477  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
478  $HTML = '<span title="' . htmlspecialchars($pageRecord['title']) . '">' . $iconFactory->getIconForRecord('pages', $pageRecord, ‪Icon::SIZE_SMALL)->render() . '</span>';
479  $tree->tree[] = [
480  'row' => $pageRecord,
481  'HTML' => $HTML,
482  ];
483 
484  if ($depth > 0) {
485  $tree->getTree((int)$pageId, $depth);
486  }
487 
488  foreach ($tree->tree as $singleLine) {
489  $rows = $this->‪getPhashRowsForPageId($singleLine['row']['uid']);
490  $lines = [];
491  // Collecting phash values (to remove local indexing for)
492  // Traverse the result set of phash rows selected:
493  foreach ($rows as $row) {
494  $row['icon'] = $this->‪makeItemTypeIcon($row['item_type']);
495  $this->allPhashListed[] = $row['phash'];
496 
497  // Adds a display row:
498  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
499  ->getQueryBuilderForTable('index_rel');
500 
501  $wordCountResult = $queryBuilder->count('index_words.baseword')
502  ->from('index_rel')
503  ->from('index_words')
504  ->where(
505  $queryBuilder->expr()->eq(
506  'index_rel.phash',
507  $queryBuilder->createNamedParameter($row['phash'], ‪Connection::PARAM_INT)
508  ),
509  $queryBuilder->expr()->eq('index_words.wid', $queryBuilder->quoteIdentifier('index_rel.wid'))
510  )
511  ->groupBy('index_words.baseword')
512  // @todo Executing and not use the assigned result looks weired, at least with the
513  // circumstance that the same QueryBuilder is reused as count query and executed
514  // directly afterwards - must be rechecked and either solved or proper commented
515  // why this mystery is needed here as this is not obvious and against general
516  // recommendation to not reuse the QueryBuilder.
517  ->executeQuery();
518 
519  $row['wordCount'] = $queryBuilder
520  ->count('index_rel.wid')
521  ->executeQuery()
522  ->fetchOne();
523  $wordCountResult->free();
524 
525  if ($mode === 'content') {
526  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
527  ->getQueryBuilderForTable('index_fulltext');
528  $row['fulltextData'] = $queryBuilder->select('*')
529  ->from('index_fulltext')
530  ->where(
531  $queryBuilder->expr()->eq(
532  'phash',
533  $queryBuilder->createNamedParameter($row['phash'], ‪Connection::PARAM_INT)
534  )
535  )
536  ->setMaxResults(1)
537  ->executeQuery()
538  ->fetchAssociative();
539 
540  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
541  ->getQueryBuilderForTable('index_rel');
542  $wordRecords = $queryBuilder->select('index_words.baseword')
543  ->from('index_rel')
544  ->from('index_words')
545  ->where(
546  $queryBuilder->expr()->eq(
547  'index_rel.phash',
548  $queryBuilder->createNamedParameter($row['phash'], ‪Connection::PARAM_INT)
549  ),
550  $queryBuilder->expr()->eq(
551  'index_words.wid',
552  $queryBuilder->quoteIdentifier('index_rel.wid')
553  )
554  )
555  ->groupBy('index_words.baseword')
556  ->orderBy('index_words.baseword')
557  ->executeQuery()
558  ->fetchAllAssociative();
559 
560  if (is_array($wordRecords)) {
561  $row['allWords'] = array_column($wordRecords, 'baseword');
562  }
563  }
564 
565  $lines[] = $row;
566  }
567 
568  $singleLine['lines'] = $lines;
569  $allLines[] = $singleLine;
570  }
571 
572  return $allLines;
573  }
574 
575  protected function ‪getPhashRowsForPageId(int $pageId): array
576  {
577  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_phash');
578  $result = $queryBuilder->select(
579  'ISEC.phash_t3',
580  'ISEC.rl0',
581  'ISEC.rl1',
582  'ISEC.rl2',
583  'ISEC.page_id',
584  'ISEC.uniqid',
585  'IP.phash',
586  'IP.phash_grouping',
587  'IP.static_page_arguments',
588  'IP.data_filename',
589  'IP.data_page_id',
590  'IP.data_page_type',
591  'IP.data_page_mp',
592  'IP.gr_list',
593  'IP.item_type',
594  'IP.item_title',
595  'IP.item_description',
596  'IP.item_mtime',
597  'IP.tstamp',
598  'IP.item_size',
599  'IP.contentHash',
600  'IP.crdate',
601  'IP.parsetime',
602  'IP.sys_language_uid',
603  'IP.item_crdate',
604  'IP.externalUrl',
605  'IP.recordUid',
606  'IP.freeIndexUid',
607  'IP.freeIndexSetId'
608  )
609  ->addSelectLiteral($queryBuilder->expr()->count('*', 'count_val'))
610  ->from('index_phash', 'IP')
611  ->from('index_section', 'ISEC')
612  ->where(
613  $queryBuilder->expr()->eq('IP.phash', $queryBuilder->quoteIdentifier('ISEC.phash')),
614  $queryBuilder->expr()->eq(
615  'ISEC.page_id',
616  $queryBuilder->createNamedParameter($pageId, ‪Connection::PARAM_INT)
617  )
618  )
619  ->groupBy(
620  'IP.phash',
621  'IP.phash_grouping',
622  'IP.static_page_arguments',
623  'IP.data_filename',
624  'IP.data_page_id',
625  'IP.data_page_type',
626  'IP.data_page_mp',
627  'IP.gr_list',
628  'IP.item_type',
629  'IP.item_title',
630  'IP.item_description',
631  'IP.item_mtime',
632  'IP.tstamp',
633  'IP.item_size',
634  'IP.contentHash',
635  'IP.crdate',
636  'IP.parsetime',
637  'IP.sys_language_uid',
638  'IP.item_crdate',
639  'ISEC.phash',
640  'ISEC.phash_t3',
641  'ISEC.rl0',
642  'ISEC.rl1',
643  'ISEC.rl2',
644  'ISEC.page_id',
645  'ISEC.uniqid',
646  'IP.externalUrl',
647  'IP.recordUid',
648  'IP.freeIndexUid',
649  'IP.freeIndexSetId'
650  )
651  ->orderBy('IP.item_type')
652  ->addOrderBy('IP.tstamp')
653  ->setMaxResults(11)
654  ->executeQuery();
655 
656  $usedResults = [];
657  // Collecting phash values (to remove local indexing for)
658  // Traverse the result set of phash rows selected
659  while ($row = $result->fetchAssociative()) {
660  $usedResults[] = $row;
661  }
662  return $usedResults;
663  }
664 
672  protected function ‪extGetTreeList(int $id): array
673  {
674  $pageIds = $this->‪getPageTreeIds($id, 100, 0);
675  $pageIds[] = $id;
676  return $pageIds;
677  }
678 
688  protected function ‪getPageTreeIds(int $id, int $depth, int $begin): array
689  {
690  if (!$id || $depth <= 0) {
691  return [];
692  }
693  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
694  ->getQueryBuilderForTable('pages');
695 
696  $queryBuilder->getRestrictions()
697  ->removeAll()
698  ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
699  $result = $queryBuilder
700  ->select('uid', 'title')
701  ->from('pages')
702  ->where(
703  $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($id, ‪Connection::PARAM_INT))
704  )
705  ->executeQuery();
706 
707  $pageIds = [];
708  while ($row = $result->fetchAssociative()) {
709  if ($begin <= 0) {
710  $pageIds[] = (int)$row['uid'];
711  }
712  if ($depth > 1) {
713  $pageIds = array_merge($pageIds, $this->‪getPageTreeIds((int)$row['uid'], $depth - 1, $begin - 1));
714  }
715  }
716  return $pageIds;
717  }
718 
726  public function ‪removeIndexedPhashRow($phashList, $pageId, $depth = 4)
727  {
728  if ($phashList === 'ALL') {
729  if ($depth === 0) {
730  $phashRows = $this->‪getPhashRowsForPageId((int)$pageId);
731  $phashRows = array_column($phashRows, 'phash');
732  } else {
733  $this->‪getTree($pageId, $depth, '');
734  $phashRows = ‪$this->allPhashListed;
735  $this->allPhashListed = [];
736  }
737  } else {
738  $phashRows = ‪GeneralUtility::trimExplode(',', $phashList, true);
739  }
740 
741  foreach ($phashRows as $phash) {
742  $phash = (int)$phash;
743  if ($phash > 0) {
744  $idList = [];
745  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
746  ->getQueryBuilderForTable('index_section');
747  $res = $queryBuilder
748  ->select('page_id')
749  ->from('index_section')
750  ->where(
751  $queryBuilder->expr()->eq(
752  'phash',
753  $queryBuilder->createNamedParameter($phash, ‪Connection::PARAM_INT)
754  )
755  )
756  ->executeQuery();
757  while ($row = $res->fetchAssociative()) {
758  $idList[] = (int)$row['page_id'];
759  }
760 
761  if (!empty($idList)) {
762  $pageCache = GeneralUtility::makeInstance(CacheManager::class)->getCache('pages');
763  foreach ($idList as $pageId) {
764  $pageCache->flushByTag('pageId_' . $pageId);
765  }
766  }
767 
768  // Removing old registrations for all tables.
769  $tableArr = [
770  'index_phash',
771  'index_rel',
772  'index_section',
773  'index_grlist',
774  'index_fulltext',
775  'index_debug',
776  ];
777  foreach ($tableArr as $table) {
778  GeneralUtility::makeInstance(ConnectionPool::class)
779  ->getConnectionForTable($table)
780  ->delete($table, ['phash' => (int)$phash]);
781  }
782  }
783  }
784  }
785 
791  public function ‪saveStopWords(array $words)
792  {
793  foreach ($words as $wid => $state) {
794  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_words');
795  $queryBuilder
796  ->update('index_words')
797  ->set('is_stopword', (int)$state)
798  ->where(
799  $queryBuilder->expr()->eq(
800  'wid',
801  $queryBuilder->createNamedParameter($wid, ‪Connection::PARAM_INT)
802  )
803  )
804  ->executeStatement();
805  }
806  }
807 
814  public function ‪saveKeywords(array $words, $pageId)
815  {
816  // Get pages current keywords
817  $pageRec = BackendUtility::getRecord('pages', $pageId);
818  if (!is_array($pageRec)) {
819  return;
820  }
821  $keywords = array_flip(‪GeneralUtility::trimExplode(',', $pageRec['keywords'], true));
822  // Merge keywords:
823  foreach ($words as $key => $v) {
824  if ($v) {
825  $keywords[$key] = 1;
826  } else {
827  unset($keywords[$key]);
828  }
829  }
830  // Compile new list:
831  $data = [];
832  $data['pages'][$pageId]['keywords'] = implode(', ', array_keys($keywords));
833  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
834  $dataHandler->start($data, []);
835  $dataHandler->process_datamap();
836  }
837 
844  protected function ‪makeItemTypeIcon($itemType)
845  {
846  if (!isset($this->iconFileNameCache[$itemType])) {
847  $icon = '';
848  if ($itemType === '0') {
849  $icon = 'EXT:indexed_search/Resources/Public/Icons/FileTypes/pages.gif';
850  } elseif ($this->external_parsers[$itemType]) {
851  $icon = $this->external_parsers[$itemType]->getIcon($itemType);
852  }
853  $this->iconFileNameCache[$itemType] = $icon;
854  }
855  return $this->iconFileNameCache[$itemType];
856  }
857 
861  protected function ‪getBackendUserAuthentication()
862  {
863  return ‪$GLOBALS['BE_USER'];
864  }
865 }
‪TYPO3\CMS\Core\DataHandling\DataHandler
Definition: DataHandler.php:86
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:999
‪TYPO3\CMS\Core\Database\Connection\PARAM_INT
‪const PARAM_INT
Definition: Connection.php:49
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\makeItemTypeIcon
‪string makeItemTypeIcon($itemType)
Definition: AdministrationRepository.php:841
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getBackendUserAuthentication
‪BackendUserAuthentication getBackendUserAuthentication()
Definition: AdministrationRepository.php:858
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getPagePermsClause
‪string getPagePermsClause($perms)
Definition: BackendUserAuthentication.php:460
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\IndexedSearch\Domain\Repository
Definition: AdministrationRepository.php:16
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\$allPhashListed
‪array $allPhashListed
Definition: AdministrationRepository.php:47
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\saveStopWords
‪saveStopWords(array $words)
Definition: AdministrationRepository.php:788
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getGeneralSearchStatistic
‪array null getGeneralSearchStatistic($additionalWhere, $pageUid, $max=50)
Definition: AdministrationRepository.php:391
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getNumberOfSections
‪int getNumberOfSections($pageHash)
Definition: AdministrationRepository.php:297
‪TYPO3\CMS\Backend\Tree\View\PageTreeView
Definition: PageTreeView.php:24
‪TYPO3\CMS\Core\Database\Connection\PARAM_STR
‪const PARAM_STR
Definition: Connection.php:54
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\$external_parsers
‪FileContentParser[] $external_parsers
Definition: AdministrationRepository.php:43
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\addAdditionalInformation
‪addAdditionalInformation(array &$row)
Definition: AdministrationRepository.php:445
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPageTreeIds
‪array getPageTreeIds(int $id, int $depth, int $begin)
Definition: AdministrationRepository.php:685
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:26
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository
Definition: AdministrationRepository.php:38
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPhashRowsForPageId
‪getPhashRowsForPageId(int $pageId)
Definition: AdministrationRepository.php:572
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getRecordsNumbers
‪array getRecordsNumbers()
Definition: AdministrationRepository.php:205
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\extGetTreeList
‪array extGetTreeList(int $id)
Definition: AdministrationRepository.php:669
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPageStatistic
‪array getPageStatistic()
Definition: AdministrationRepository.php:318
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getNumberOfWords
‪int bool getNumberOfWords($phash)
Definition: AdministrationRepository.php:112
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\$iconFileNameCache
‪array $iconFileNameCache
Definition: AdministrationRepository.php:51
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getExternalDocumentsStatistic
‪array getExternalDocumentsStatistic()
Definition: AdministrationRepository.php:133
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\IndexedSearch\FileContentParser
Definition: FileContentParser.php:33
‪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\IndexedSearch\Domain\Repository\AdministrationRepository\getGrlistRecord
‪array getGrlistRecord($phash)
Definition: AdministrationRepository.php:59
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:38
‪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\IndexedSearch\Domain\Repository\AdministrationRepository\removeIndexedPhashRow
‪removeIndexedPhashRow($phashList, $pageId, $depth=4)
Definition: AdministrationRepository.php:723
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getPageHashTypes
‪array getPageHashTypes()
Definition: AdministrationRepository.php:232
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\saveKeywords
‪saveKeywords(array $words, $pageId)
Definition: AdministrationRepository.php:811
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\countUniqueTypes
‪int countUniqueTypes($itemType)
Definition: AdministrationRepository.php:272
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getNumberOfFulltextRecords
‪int bool getNumberOfFulltextRecords($phash)
Definition: AdministrationRepository.php:90
‪TYPO3\CMS\IndexedSearch\Domain\Repository\AdministrationRepository\getTree
‪array getTree($pageId, $depth, $mode)
Definition: AdministrationRepository.php:464