‪TYPO3CMS  10.4
PageInformationController.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 
18 use Psr\Http\Message\ServerRequestInterface;
31 
37 {
41  protected ‪$fieldConfiguration = [];
42 
46  protected ‪$id;
47 
51  protected ‪$pObj;
52 
56  protected ‪$iconFactory;
57 
61  protected ‪$fieldArray;
62 
68  protected ‪$addElement_tdCssClass = [];
69 
75  public function ‪init(‪$pObj)
76  {
77  $this->pObj = ‪$pObj;
78  $this->id = (int)GeneralUtility::_GP('id');
79  // Setting MOD_MENU items as we need them for logging:
80  $this->pObj->MOD_MENU = array_merge($this->pObj->MOD_MENU, $this->modMenu());
81  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
82  }
83 
89  public function ‪main()
90  {
91  $languageService = $this->‪getLanguageService();
92  $theOutput = '<h1>' . htmlspecialchars($languageService->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:page_title')) . '</h1>';
93 
94  if (isset($this->fieldConfiguration[$this->pObj->MOD_SETTINGS['pages']])) {
95  $this->fieldArray = $this->fieldConfiguration[$this->pObj->MOD_SETTINGS['pages']]['fields'];
96  }
97 
98  $h_func = ‪BackendUtility::getDropdownMenu($this->id, 'SET[depth]', $this->pObj->MOD_SETTINGS['depth'], $this->pObj->MOD_MENU['depth']);
99  $h_func .= ‪BackendUtility::getDropdownMenu($this->id, 'SET[pages]', $this->pObj->MOD_SETTINGS['pages'], $this->pObj->MOD_MENU['pages']);
100 
101  $theOutput .= '<div class="form-inline form-inline-spaced">'
102  . $h_func
103  . '<div class="form-group">'
104  . ‪BackendUtility::cshItem('_MOD_web_info', 'func_' . $this->pObj->MOD_SETTINGS['pages'], '', '<span class="btn btn-default btn-sm">|</span>')
105  . '</div>'
106  . '</div>'
107  . $this->‪getTable_pages($this->id, (int)$this->pObj->MOD_SETTINGS['depth']);
108 
109  // Additional footer content
110  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/web_info/class.tx_cms_webinfo.php']['drawFooterHook'] ?? [] as $hook) {
111  // @todo: request object should be submitted here as soon as it is available in TYPO3 v10.0.
112  $params = [];
113  $theOutput .= GeneralUtility::callUserFunction($hook, $params, $this);
114  }
115  return $theOutput;
116  }
117 
123  protected function ‪modMenu()
124  {
125  $menu = [
126  'pages' => [],
127  'depth' => [
128  0 => $this->‪getLanguageService()->‪sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'),
129  1 => $this->‪getLanguageService()->‪sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_1'),
130  2 => $this->‪getLanguageService()->‪sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_2'),
131  3 => $this->‪getLanguageService()->‪sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_3'),
132  4 => $this->‪getLanguageService()->‪sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_4'),
133  999 => $this->‪getLanguageService()->‪sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_infi')
134  ]
135  ];
136 
137  // Using $GLOBALS['TYPO3_REQUEST'] since $request is not available at this point
138  // @todo: Refactor mess and have $request available
139  $this->‪fillFieldConfiguration($this->id, ‪$GLOBALS['TYPO3_REQUEST']);
140  foreach ($this->fieldConfiguration as $key => $item) {
141  $menu['pages'][$key] = $item['label'];
142  }
143  return $menu;
144  }
145 
153  protected function ‪cleanTableNames(): string
154  {
155  // Get all table names:
156  $tableNames = array_flip(array_keys(‪$GLOBALS['TCA']));
157  // Unset common names:
158  unset($tableNames['pages']);
159  unset($tableNames['sys_filemounts']);
160  unset($tableNames['sys_action']);
161  unset($tableNames['sys_workflows']);
162  unset($tableNames['be_users']);
163  unset($tableNames['be_groups']);
164  $allowedTableNames = [];
165  // Traverse table names and set them in allowedTableNames array IF they can be read-accessed by the user.
166  if (is_array($tableNames)) {
167  foreach ($tableNames as $k => $v) {
168  if (!‪$GLOBALS['TCA'][$k]['ctrl']['hideTable'] && $this->‪getBackendUser()->check('tables_select', $k)) {
169  $allowedTableNames['table_' . $k] = $k;
170  }
171  }
172  }
173  return implode(',', array_keys($allowedTableNames));
174  }
175 
182  protected function ‪fillFieldConfiguration(int $pageId, ServerRequestInterface $request)
183  {
184  $modTSconfig = ‪BackendUtility::getPagesTSconfig($pageId)['mod.']['web_info.']['fieldDefinitions.'] ?? [];
185  foreach ($modTSconfig as $key => $item) {
186  $fieldList = str_replace('###ALL_TABLES###', $this->‪cleanTableNames(), $item['fields']);
187  ‪$fields = ‪GeneralUtility::trimExplode(',', $fieldList, true);
188  $key = trim($key, '.');
189  $this->fieldConfiguration[$key] = [
190  'label' => $item['label'] ? $this->‪getLanguageService()->‪sL($item['label']) : $key,
191  'fields' => ‪$fields
192  ];
193  }
194  }
195 
203  protected function ‪getTable_pages(‪$id, int $depth = 0)
204  {
205  $out = '';
206  $lang = $this->‪getLanguageService();
207  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
208  ->getQueryBuilderForTable('pages');
209  $queryBuilder->getRestrictions()
210  ->removeAll()
211  ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
212  $row = $queryBuilder
213  ->select('*')
214  ->from('pages')
215  ->where(
216  $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter(‪$id, \PDO::PARAM_INT)),
217  $this->getBackendUser()->getPagePermsClause(‪Permission::PAGE_SHOW)
218  )
219  ->execute()
220  ->fetch();
221  ‪BackendUtility::workspaceOL('pages', $row);
222  // If there was found a page:
223  if (is_array($row)) {
224  // Creating elements
225  $editUids = [];
226  // Getting children
227  $theRows = $this->‪getPageRecordsRecursive($row['uid'], $depth);
228  if ($this->‪getBackendUser()->doesUserHaveAccess($row, ‪Permission::PAGE_EDIT) && $row['uid'] > 0) {
229  $editUids[] = $row['uid'];
230  }
231  $out .= $this->‪pages_drawItem($row, $this->fieldArray);
232  // Traverse all pages selected:
233  foreach ($theRows as $sRow) {
234  if ($this->‪getBackendUser()->doesUserHaveAccess($sRow, ‪Permission::PAGE_EDIT)) {
235  $editUids[] = $sRow['uid'];
236  }
237  $out .= $this->‪pages_drawItem($sRow, $this->fieldArray);
238  }
239  // Header line is drawn
240  $theData = [];
241  $editIdList = implode(',', $editUids);
242  // Traverse fields (as set above) in order to create header values:
243  foreach ($this->fieldArray as $field) {
244  if ($editIdList
245  && isset(‪$GLOBALS['TCA']['pages']['columns'][$field])
246  && $field !== 'uid'
247  ) {
248  $iTitle = sprintf(
249  $lang->sL('LLL:EXT:backend/Resources/Private/Language/locallang_layout.xlf:editThisColumn'),
250  rtrim(trim($lang->sL(‪BackendUtility::getItemLabel('pages', $field))), ':')
251  );
252  $urlParameters = [
253  'edit' => [
254  'pages' => [
255  $editIdList => 'edit'
256  ]
257  ],
258  'columnsOnly' => $field,
259  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
260  ];
261  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
262  $url = (string)$uriBuilder->buildUriFromRoute('record_edit', $urlParameters);
263  $eI = '<a class="btn btn-default" href="' . htmlspecialchars($url)
264  . '" title="' . htmlspecialchars($iTitle) . '">'
265  . $this->iconFactory->getIcon('actions-document-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
266  } else {
267  $eI = '';
268  }
269  switch ($field) {
270  case 'title':
271  $theData[$field] = $eI . '&nbsp;<strong>'
272  . $lang->sL(‪$GLOBALS['TCA']['pages']['columns'][$field]['label'])
273  . '</strong>';
274  break;
275  case 'uid':
276  $theData[$field] = '';
277  break;
278  default:
279  if (strpos($field, 'table_') === 0) {
280  $f2 = substr($field, 6);
281  if (‪$GLOBALS['TCA'][$f2]) {
282  $theData[$field] = '&nbsp;' .
283  '<span title="' .
284  htmlspecialchars($lang->sL(‪$GLOBALS['TCA'][$f2]['ctrl']['title'])) .
285  '">' .
286  $this->iconFactory->getIconForRecord($f2, [], ‪Icon::SIZE_SMALL)->render() .
287  '</span>';
288  }
289  } else {
290  $theData[$field] = $eI . '&nbsp;<strong>'
291  . htmlspecialchars($lang->sL(‪$GLOBALS['TCA']['pages']['columns'][$field]['label']))
292  . '</strong>';
293  }
294  }
295  }
296  $out = '<div class="table-fit">'
297  . '<table class="table table-striped table-hover typo3-page-pages">'
298  . '<thead>'
299  . $this->‪addElement($theData)
300  . '</thead>'
301  . '<tbody>'
302  . $out
303  . '</tbody>'
304  . '</table>'
305  . '</div>';
306  }
307  return $out;
308  }
309 
319  protected function ‪getPageRecordsRecursive(int $pid, int $depth, string $iconPrefix = '', array $rows = []): array
320  {
321  $depth--;
322  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
323  $queryBuilder->getRestrictions()
324  ->removeAll()
325  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
326  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, $this->‪getBackendUser()->workspace));
327 
328  $queryBuilder
329  ->select('*')
330  ->from('pages')
331  ->where(
332  $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)),
333  $queryBuilder->expr()->eq('sys_language_uid', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
334  $this->getBackendUser()->getPagePermsClause(‪Permission::PAGE_SHOW)
335  );
336 
337  if (!empty(‪$GLOBALS['TCA']['pages']['ctrl']['sortby'])) {
338  $queryBuilder->orderBy(‪$GLOBALS['TCA']['pages']['ctrl']['sortby']);
339  }
340 
341  if ($depth >= 0) {
342  $result = $queryBuilder->execute();
343  $rowCount = $queryBuilder->count('uid')->execute()->fetchColumn(0);
344  $count = 0;
345  while ($row = $result->fetch()) {
346  ‪BackendUtility::workspaceOL('pages', $row);
347  if (is_array($row)) {
348  $count++;
349  $row['treeIcons'] = $iconPrefix
350  . '<span class="treeline-icon treeline-icon-join'
351  . ($rowCount === $count ? 'bottom' : '')
352  . '"></span>';
353  $rows[] = $row;
354  // Get the branch
355  $spaceOutIcons = '<span class="treeline-icon treeline-icon-'
356  . ($rowCount === $count ? 'clear' : 'line')
357  . '"></span>';
358  $rows = $this->‪getPageRecordsRecursive(
359  $row['uid'],
360  $row['php_tree_stop'] ? 0 : $depth,
361  $iconPrefix . $spaceOutIcons,
362  $rows
363  );
364  }
365  }
366  }
367 
368  return $rows;
369  }
370 
378  protected function ‪pages_drawItem($row, $fieldArr)
379  {
380  $userTsConfig = $this->‪getBackendUser()->‪getTSConfig();
381  $theIcon = $this->‪getIcon($row);
382  // Preparing and getting the data-array
383  $theData = [];
384  foreach ($fieldArr as $field) {
385  switch ($field) {
386  case 'title':
387  $showPageId = !empty($userTsConfig['options.']['pageTree.']['showPageIdWithTitle']);
388  $pTitle = htmlspecialchars((string)‪BackendUtility::getProcessedValue('pages', $field, $row[$field], 20));
389  $theData[$field] = $row['treeIcons'] . $theIcon . ($showPageId ? '[' . $row['uid'] . '] ' : '') . $pTitle;
390  break;
391  case 'php_tree_stop':
392  // Intended fall through
393  case 'TSconfig':
394  $theData[$field] = $row[$field] ? '<strong>x</strong>' : '&nbsp;';
395  break;
396  case 'uid':
397  if ($this->‪getBackendUser()->‪doesUserHaveAccess($row, 2) && $row['uid'] > 0) {
398  $urlParameters = [
399  'edit' => [
400  'pages' => [
401  $row['uid'] => 'edit'
402  ]
403  ],
404  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
405  ];
406  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
407  $url = (string)$uriBuilder->buildUriFromRoute('record_edit', $urlParameters);
408  $onClick = ‪BackendUtility::viewOnClick($row['uid'], '', ‪BackendUtility::BEgetRootLine($row['uid']));
409 
410  $eI =
411  '<a href="#" onclick="' . htmlspecialchars($onClick) . '" class="btn btn-default" title="' .
412  htmlspecialchars($this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.showPage')) . '">' .
413  $this->iconFactory->getIcon('actions-view-page', ‪Icon::SIZE_SMALL)->render() .
414  '</a>';
415  $eI .=
416  '<a class="btn btn-default" href="' . htmlspecialchars($url) . '" title="' .
417  htmlspecialchars($this->‪getLanguageService()->sL('LLL:EXT:backend/Resources/Private/Language/locallang_layout.xlf:editDefaultLanguagePage')) . '">' .
418  $this->iconFactory->getIcon('actions-page-open', ‪Icon::SIZE_SMALL)->render() .
419  '</a>';
420  } else {
421  $eI = '';
422  }
423  $theData[$field] = '<div class="btn-group" role="group">' . $eI . '</div>';
424  break;
425  case 'shortcut':
426  case 'shortcut_mode':
427  if ((int)$row['doktype'] === ‪PageRepository::DOKTYPE_SHORTCUT) {
428  $theData[$field] = $this->‪getPagesTableFieldValue($field, $row);
429  }
430  break;
431  default:
432  if (strpos($field, 'table_') === 0) {
433  $f2 = substr($field, 6);
434  if (‪$GLOBALS['TCA'][$f2]) {
435  $c = $this->‪numberOfRecords($f2, $row['uid']);
436  $theData[$field] = ($c ?: '');
437  }
438  } else {
439  $theData[$field] = $this->‪getPagesTableFieldValue($field, $row);
440  }
441  }
442  }
443  $this->addElement_tdCssClass['title'] = $row['_CSSCLASS'] ?? '';
444  return $this->‪addElement($theData);
445  }
446 
453  protected function ‪getIcon($row)
454  {
455  // Initialization
456  $toolTip = ‪BackendUtility::getRecordToolTip($row, 'pages');
457  $icon = '<span ' . $toolTip . '>' . $this->iconFactory->getIconForRecord('pages', $row, ‪Icon::SIZE_SMALL)->render() . '</span>';
458  // The icon with link
459  if ($this->‪getBackendUser()->recordEditAccessInternals('pages', $row)) {
460  $icon = ‪BackendUtility::wrapClickMenuOnIcon($icon, 'pages', $row['uid']);
461  }
462  return $icon;
463  }
472  protected function ‪getPagesTableFieldValue($field, array $row)
473  {
474  return htmlspecialchars((string)‪BackendUtility::getProcessedValue('pages', $field, $row[$field]));
475  }
476 
484  protected function ‪numberOfRecords($table, $pid)
485  {
486  $count = 0;
487  if (‪$GLOBALS['TCA'][$table]) {
488  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
489  ->getQueryBuilderForTable($table);
490  $queryBuilder->getRestrictions()
491  ->removeAll()
492  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
493  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, $this->‪getBackendUser()->workspace));
494  $count = (int)$queryBuilder->count('uid')
495  ->from($table)
496  ->where(
497  $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT))
498  )
499  ->execute()
500  ->fetchColumn();
501  }
502 
503  return $count;
504  }
505 
513  protected function ‪addElement($data)
514  {
515  // Start up:
516  $l10nParent = isset($data['_l10nparent_']) ? (int)$data['_l10nparent_'] : 0;
517  $out = '
518  <tr data-uid="' . (int)$data['uid'] . '" data-l10nparent="' . $l10nParent . '">';
519  // Init rendering.
520  $colsp = '';
521  $lastKey = '';
522  $c = 0;
523  $ccount = 0;
524  // __label is used as the label key to circumvent problems with uid used as label (see #67756)
525  // as it was introduced later on, check if it really exists before using it
527  if (array_key_exists('__label', $data)) {
528  ‪$fields[0] = '__label';
529  }
530  // Traverse field array which contains the data to present:
531  foreach (‪$fields as $vKey) {
532  if (isset($data[$vKey])) {
533  if ($lastKey) {
534  $cssClass = $this->addElement_tdCssClass[$lastKey];
535  $out .= '
536  <td class="' . $cssClass . ' nowrap"' . $colsp . '>' . $data[$lastKey] . '</td>';
537  }
538  $lastKey = $vKey;
539  $c = 1;
540  $ccount++;
541  } else {
542  if (!$lastKey) {
543  $lastKey = $vKey;
544  }
545  $c++;
546  }
547  if ($c > 1) {
548  $colsp = ' colspan="' . $c . '"';
549  } else {
550  $colsp = '';
551  }
552  }
553  if ($lastKey) {
554  $cssClass = $this->addElement_tdCssClass[$lastKey];
555  $out .= '
556  <td class="' . $cssClass . ' nowrap"' . $colsp . '>' . $data[$lastKey] . '</td>';
557  }
558  $out .= '</tr>';
559  return $out;
560  }
561 
565  protected function ‪getBackendUser(): ‪BackendUserAuthentication
566  {
567  return ‪$GLOBALS['BE_USER'];
568  }
569 
573  protected function ‪getLanguageService(): ?‪LanguageService
574  {
575  return ‪$GLOBALS['LANG'] ?? null;
576  }
577 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Info\Controller\InfoModuleController
Definition: InfoModuleController.php:41
‪TYPO3\CMS\Info\Controller\PageInformationController\getTable_pages
‪string getTable_pages($id, int $depth=0)
Definition: PageInformationController.php:198
‪TYPO3\CMS\Info\Controller\PageInformationController\$iconFactory
‪IconFactory $iconFactory
Definition: PageInformationController.php:53
‪TYPO3\CMS\Info\Controller\PageInformationController\$fieldConfiguration
‪array $fieldConfiguration
Definition: PageInformationController.php:40
‪TYPO3\CMS\Info\Controller\PageInformationController\pages_drawItem
‪string pages_drawItem($row, $fieldArr)
Definition: PageInformationController.php:373
‪TYPO3\CMS\Info\Controller\PageInformationController\$addElement_tdCssClass
‪array $addElement_tdCssClass
Definition: PageInformationController.php:63
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig()
Definition: BackendUserAuthentication.php:1217
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SHORTCUT
‪const DOKTYPE_SHORTCUT
Definition: PageRepository.php:105
‪TYPO3\CMS\Backend\Utility\BackendUtility\getItemLabel
‪static string getItemLabel($table, $col)
Definition: BackendUtility.php:1521
‪TYPO3\CMS\Backend\Utility\BackendUtility\cshItem
‪static string cshItem($table, $field, $_='', $wrap='')
Definition: BackendUtility.php:2306
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:33
‪TYPO3\CMS\Core\Localization\LanguageService\sL
‪string sL($input)
Definition: LanguageService.php:194
‪TYPO3\CMS\Backend\Utility\BackendUtility\BEgetRootLine
‪static array BEgetRootLine($uid, $clause='', $workspaceOL=false, array $additionalFields=[])
Definition: BackendUtility.php:343
‪$fields
‪$fields
Definition: pages.php:5
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:24
‪TYPO3\CMS\Backend\Utility\BackendUtility\wrapClickMenuOnIcon
‪static string wrapClickMenuOnIcon( $content, $table, $uid=0, $context='', $_addParams='', $_enDisItems='', $returnTagParameters=false)
Definition: BackendUtility.php:2510
‪TYPO3\CMS\Info\Controller\PageInformationController\$id
‪$id
Definition: PageInformationController.php:45
‪TYPO3\CMS\Info\Controller\PageInformationController\getPageRecordsRecursive
‪array getPageRecordsRecursive(int $pid, int $depth, string $iconPrefix='', array $rows=[])
Definition: PageInformationController.php:314
‪TYPO3\CMS\Info\Controller\PageInformationController\getIcon
‪string getIcon($row)
Definition: PageInformationController.php:448
‪TYPO3\CMS\Info\Controller\PageInformationController
Definition: PageInformationController.php:37
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Backend\Utility\BackendUtility\getDropdownMenu
‪static string getDropdownMenu( $mainParams, $elementName, $currentValue, $menuItems, $script='', $addParams='')
Definition: BackendUtility.php:2653
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\doesUserHaveAccess
‪bool doesUserHaveAccess($row, $perms)
Definition: BackendUserAuthentication.php:330
‪TYPO3\CMS\Backend\Utility\BackendUtility\getPagesTSconfig
‪static array getPagesTSconfig($id)
Definition: BackendUtility.php:698
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordToolTip
‪static string getRecordToolTip(array $row, $table='pages')
Definition: BackendUtility.php:1339
‪TYPO3\CMS\Info\Controller\PageInformationController\$fieldArray
‪array $fieldArray
Definition: PageInformationController.php:57
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Info\Controller\PageInformationController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: PageInformationController.php:560
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:33
‪TYPO3\CMS\Info\Controller\PageInformationController\fillFieldConfiguration
‪fillFieldConfiguration(int $pageId, ServerRequestInterface $request)
Definition: PageInformationController.php:177
‪TYPO3\CMS\Info\Controller\PageInformationController\numberOfRecords
‪int numberOfRecords($table, $pid)
Definition: PageInformationController.php:479
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Info\Controller\PageInformationController\getPagesTableFieldValue
‪string getPagesTableFieldValue($field, array $row)
Definition: PageInformationController.php:467
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static string[] trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:1059
‪TYPO3\CMS\Backend\Utility\BackendUtility\viewOnClick
‪static string viewOnClick( $pageUid, $backPath='', $rootLine=null, $anchorSection='', $alternativeUrl='', $additionalGetVars='', $switchFocus=true)
Definition: BackendUtility.php:2359
‪TYPO3\CMS\Backend\Utility\BackendUtility\getProcessedValue
‪static string null getProcessedValue( $table, $col, $value, $fixed_lgd_chars=0, $defaultPassthrough=false, $noRecordLookup=false, $uid=0, $forceResult=true, $pid=0)
Definition: BackendUtility.php:1664
‪$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\Info\Controller\PageInformationController\init
‪init($pObj)
Definition: PageInformationController.php:70
‪TYPO3\CMS\Info\Controller\PageInformationController\getLanguageService
‪LanguageService null getLanguageService()
Definition: PageInformationController.php:568
‪TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:28
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:38
‪TYPO3\CMS\Info\Controller\PageInformationController\modMenu
‪array modMenu()
Definition: PageInformationController.php:118
‪TYPO3\CMS\Info\Controller\PageInformationController\$pObj
‪InfoModuleController $pObj
Definition: PageInformationController.php:49
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:52
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Info\Controller\PageInformationController\addElement
‪string addElement($data)
Definition: PageInformationController.php:508
‪TYPO3\CMS\Info\Controller
Definition: InfoModuleController.php:16
‪TYPO3\CMS\Info\Controller\PageInformationController\cleanTableNames
‪string cleanTableNames()
Definition: PageInformationController.php:148
‪TYPO3\CMS\Info\Controller\PageInformationController\main
‪string main()
Definition: PageInformationController.php:84
‪TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction
Definition: WorkspaceRestriction.php:39