TYPO3 CMS  TYPO3_8-7
ElementInformationController.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
31 
36 {
42  public $table;
43 
49  public $uid;
50 
54  protected $permsClause;
55 
59  public $access = false;
60 
68  public $type = '';
69 
73  protected $moduleTemplate;
74 
81  public $pageInfo;
82 
88  protected $row;
89 
93  protected $fileObject;
94 
98  protected $folderObject;
99 
103  protected $iconFactory;
104 
108  public function __construct()
109  {
110  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
111  $GLOBALS['SOBE'] = $this;
112 
113  $this->init();
114  }
115 
120  public function init()
121  {
122  $this->table = GeneralUtility::_GET('table');
123  $this->uid = GeneralUtility::_GET('uid');
124 
125  $this->permsClause = $this->getBackendUser()->getPagePermsClause(1);
126  $this->moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
127  $this->moduleTemplate->getDocHeaderComponent()->disable();
128 
129  if (isset($GLOBALS['TCA'][$this->table])) {
130  $this->initDatabaseRecord();
131  } elseif ($this->table === '_FILE' || $this->table === '_FOLDER' || $this->table === 'sys_file') {
132  $this->initFileOrFolderRecord();
133  }
134  }
135 
139  protected function initDatabaseRecord()
140  {
141  $this->type = 'db';
142  $this->uid = (int)$this->uid;
143 
144  // Check permissions and uid value:
145  if ($this->uid && $this->getBackendUser()->check('tables_select', $this->table)) {
146  if ((string)$this->table === 'pages') {
147  $this->pageInfo = BackendUtility::readPageAccess($this->uid, $this->permsClause);
148  $this->access = is_array($this->pageInfo) ? 1 : 0;
149  $this->row = $this->pageInfo;
150  } else {
151  $this->row = BackendUtility::getRecordWSOL($this->table, $this->uid);
152  if ($this->row) {
153  $this->pageInfo = BackendUtility::readPageAccess($this->row['pid'], $this->permsClause);
154  $this->access = is_array($this->pageInfo) ? 1 : 0;
155  }
156  }
157  }
158  }
159 
163  protected function initFileOrFolderRecord()
164  {
165  $fileOrFolderObject = ResourceFactory::getInstance()->retrieveFileOrFolderObject($this->uid);
166 
167  if ($fileOrFolderObject instanceof Folder) {
168  $this->folderObject = $fileOrFolderObject;
169  $this->access = $this->folderObject->checkActionPermission('read');
170  $this->type = 'folder';
171  } else {
172  $this->fileObject = $fileOrFolderObject;
173  $this->access = $this->fileObject->checkActionPermission('read');
174  $this->type = 'file';
175  $this->table = 'sys_file';
176 
177  try {
178  $this->row = BackendUtility::getRecordWSOL($this->table, $fileOrFolderObject->getUid());
179  } catch (\Exception $e) {
180  $this->row = [];
181  }
182  }
183  }
184 
193  public function mainAction(ServerRequestInterface $request, ResponseInterface $response)
194  {
195  $this->main();
196 
197  $response->getBody()->write($this->moduleTemplate->renderContent());
198  return $response;
199  }
200 
205  public function main()
206  {
207  $content = '';
208 
209  // Rendering of the output via fluid
210  $view = GeneralUtility::makeInstance(StandaloneView::class);
211  $view->setTemplateRootPaths([GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Templates')]);
212  $view->setPartialRootPaths([GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Partials')]);
213  $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName(
214  'EXT:backend/Resources/Private/Templates/ContentElement/ElementInformation.html'
215  ));
216 
217  if ($this->access) {
218  // render type by user func
219  $typeRendered = false;
220  foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'] ?? [] as $className) {
221  $typeRenderObj = GeneralUtility::makeInstance($className);
222  if (is_object($typeRenderObj) && method_exists($typeRenderObj, 'isValid') && method_exists($typeRenderObj, 'render')) {
223  if ($typeRenderObj->isValid($this->type, $this)) {
224  $content .= $typeRenderObj->render($this->type, $this);
225  $typeRendered = true;
226  break;
227  }
228  }
229  }
230  if (!$typeRendered) {
231  $view->assign('accessAllowed', true);
232  $view->assignMultiple($this->getPageTitle());
233  $view->assignMultiple($this->getPreview());
234  $view->assignMultiple($this->getPropertiesForTable());
235  $view->assignMultiple($this->getReferences());
236  $view->assignMultiple($this->getBackButton());
237  $view->assign('maxTitleLength', $this->getBackendUser()->uc['titleLen'] ?? 20);
238  $content .= $view->render();
239  }
240  } else {
241  $content .= $view->render();
242  }
243 
244  $this->moduleTemplate->setContent($content);
245  }
246 
252  protected function getPageTitle(): array
253  {
254  $pageTitle = [
255  'title' => BackendUtility::getRecordTitle($this->table, $this->row, false)
256  ];
257  if ($this->type === 'folder') {
258  $pageTitle['table'] = $this->getLanguageService()->sL('LLL:EXT:lang/Resources/Private/Language/locallang_common.xlf:folder');
259  $pageTitle['icon'] = $this->iconFactory->getIconForResource($this->folderObject, Icon::SIZE_SMALL)->render();
260  } elseif ($this->type === 'file') {
261  $pageTitle['table'] = $this->getLanguageService()->sL($GLOBALS['TCA'][$this->table]['ctrl']['title']);
262  $pageTitle['icon'] = $this->iconFactory->getIconForResource($this->fileObject, Icon::SIZE_SMALL)->render();
263  } else {
264  $pageTitle['table'] = $this->getLanguageService()->sL($GLOBALS['TCA'][$this->table]['ctrl']['title']);
265  $pageTitle['icon'] = $this->iconFactory->getIconForRecord($this->table, $this->row, Icon::SIZE_SMALL);
266  }
267  $this->moduleTemplate->setTitle($pageTitle['table'] . ': ' . $pageTitle['title']);
268  return $pageTitle;
269  }
270 
276  protected function getPreview(): array
277  {
278  $preview = [];
279  // Perhaps @todo in future: Also display preview for records - without fileObject
280  if (!$this->fileObject) {
281  return $preview;
282  }
283 
284  // check if file is marked as missing
285  if ($this->fileObject->isMissing()) {
286  $preview['missingFile'] =$this->fileObject->getName();
287  } else {
289  $rendererRegistry = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::class);
290  $fileRenderer = $rendererRegistry->getRenderer($this->fileObject);
291  $fileExtension = $this->fileObject->getExtension();
292  $preview['url'] = $this->fileObject->getPublicUrl(true);
293 
294  $width = '590m';
295  $heigth = '400m';
296 
297  // Check if there is a FileRenderer
298  if ($fileRenderer !== null) {
299  $preview['fileRenderer'] = $fileRenderer->render(
300  $this->fileObject,
301  $width,
302  $heigth,
303  [],
304  true
305  );
306 
307  // else check if we can create an Image preview
308  } elseif (GeneralUtility::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $fileExtension)) {
309  $preview['fileObject'] = $this->fileObject;
310  $preview['width'] = $width;
311  $preview['heigth'] = $heigth;
312  }
313  }
314  return $preview;
315  }
316 
322  protected function getPropertiesForTable(): array
323  {
324  $propertiesForTable = [];
325  $lang = $this->getLanguageService();
326 
327  $extraFields = [
328  'uid' => htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:show_item.php.uid'))
329  ];
330 
331  if (in_array($this->type, ['folder', 'file'], true)) {
332  if ($this->type === 'file') {
333  $extraFields['creation_date'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.creationDate'));
334  $extraFields['modification_date'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.timestamp'));
335  if ($this->fileObject->getType() === AbstractFile::FILETYPE_IMAGE) {
336  $extraFields['width'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.width'));
337  $extraFields['height'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.height'));
338  }
339  }
340  $extraFields['storage'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file.storage'));
341  $extraFields['folder'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_common.xlf:folder'));
342  } else {
343  $extraFields['crdate'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.creationDate'));
344  $extraFields['cruser_id'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.creationUserId'));
345  $extraFields['tstamp'] = htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.timestamp'));
346 
347  // check if the special fields are defined in the TCA ctrl section of the table
348  foreach ($extraFields as $fieldName => $fieldLabel) {
349  if (isset($GLOBALS['TCA'][$this->table]['ctrl'][$fieldName])) {
350  $extraFields[$GLOBALS['TCA'][$this->table]['ctrl'][$fieldName]] = $fieldLabel;
351  } elseif ($fieldName !== 'uid') {
352  unset($extraFields[$fieldName]);
353  }
354  }
355  }
356 
357  foreach ($extraFields as $name => $fieldLabel) {
358  $rowValue = '';
359  $thisRow = [];
360  if (!isset($this->row[$name])) {
361  $resourceObject = $this->fileObject ?: $this->folderObject;
362  if ($name === 'storage') {
363  $rowValue = $resourceObject->getStorage()->getName();
364  } elseif ($name === 'folder') {
365  $rowValue = $resourceObject->getParentFolder()->getReadablePath();
366  } elseif ($name === 'width') {
367  $rowValue = $this->fileObject->getProperty('width') . 'px';
368  } elseif ($name === 'height') {
369  $rowValue = $this->fileObject->getProperty('height') . 'px';
370  }
371  } elseif ($name === 'creation_date' || $name === 'modification_date' || $name === 'tstamp' || $name === 'crdate') {
372  $rowValue = BackendUtility::datetime($this->row[$name]);
373  } else {
374  $rowValue = BackendUtility::getProcessedValueExtra($this->table, $name, $this->row[$name]);
375  }
376  $thisRow['value'] = $rowValue;
377  $thisRow['fieldLabel'] = rtrim($fieldLabel, ':');
378  // show the backend username who created the issue
379  if ($name === 'cruser_id' && $rowValue) {
380  $creatorRecord = BackendUtility::getRecord('be_users', $rowValue);
381  if ($creatorRecord) {
383  $avatar = GeneralUtility::makeInstance(Avatar::class);
384  $creatorRecord['icon'] = $avatar->render($creatorRecord);
385  $thisRow['creatorRecord'] = $creatorRecord;
386  $thisRow['value'] = '';
387  }
388  }
389  $propertiesForTable['extraFields'][] = $thisRow;
390  }
391 
392  // Traverse the list of fields to display for the record:
393  $fieldList = GeneralUtility::trimExplode(',', $GLOBALS['TCA'][$this->table]['interface']['showRecordFieldList'], true);
394  foreach ($fieldList as $name) {
395  $thisRow = [];
396  $name = trim($name);
397  $uid = $this->row['uid'];
398 
399  if (!isset($GLOBALS['TCA'][$this->table]['columns'][$name])) {
400  continue;
401  }
402 
403  // Storage is already handled above
404  if ($this->type === 'file' && $name === 'storage') {
405  continue;
406  }
407 
408  // format file size as bytes/kilobytes/megabytes
409  if ($this->type === 'file' && $name === 'size') {
410  $this->row[$name] = GeneralUtility::formatSize($this->row[$name], htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:lang/Resources/Private/Language/locallang_common.xlf:byteSizeUnits')));
411  }
412 
413  $isExcluded = !(!$GLOBALS['TCA'][$this->table]['columns'][$name]['exclude'] || $this->getBackendUser()->check('non_exclude_fields', $this->table . ':' . $name));
414  if ($isExcluded) {
415  continue;
416  }
417 
418  $thisRow['fieldValue'] = BackendUtility::getProcessedValue($this->table, $name, $this->row[$name], 0, 0, false, $uid);
419  $thisRow['fieldLabel'] = htmlspecialchars($lang->sL(BackendUtility::getItemLabel($this->table, $name)));
420  $propertiesForTable['fields'][] = $thisRow;
421  }
422  return $propertiesForTable;
423  }
424 
430  protected function getReferences(): array
431  {
432  $references = [];
433  switch ($this->type) {
434  case 'db': {
435  $references['refLines'] = $this->makeRef($this->table, $this->row['uid']);
436  $references['refFromLines'] = $this->makeRefFrom($this->table, $this->row['uid']);
437  break;
438  }
439 
440  case 'file': {
441  if ($this->fileObject && $this->fileObject->isIndexed()) {
442  $references['refLines'] = $this->makeRef('_FILE', $this->fileObject);
443  }
444  break;
445  }
446  }
447  return $references;
448  }
449 
455  protected function getBackButton(): array
456  {
457  return ['returnUrl' => GeneralUtility::sanitizeLocalUrl(GeneralUtility::_GET('returnUrl'))];
458  }
459 
467  public function getLabelForTableColumn($tableName, $fieldName)
468  {
469  if ($GLOBALS['TCA'][$tableName]['columns'][$fieldName]['label'] !== null) {
470  $field = $this->getLanguageService()->sL($GLOBALS['TCA'][$tableName]['columns'][$fieldName]['label']);
471  if (trim($field) === '') {
472  $field = $fieldName;
473  }
474  } else {
475  $field = $fieldName;
476  }
477  return $field;
478  }
479 
487  protected function getRecordActions($table, $uid)
488  {
489  if ($table === '' || $uid < 0) {
490  return [];
491  }
492 
493  $actions = [];
494  // Edit button
495  $urlParameters = [
496  'edit' => [
497  $table => [
498  $uid => 'edit'
499  ]
500  ],
501  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
502  ];
503  $actions['recordEditUrl'] = BackendUtility::getModuleUrl('record_edit', $urlParameters);
504 
505  // History button
506  $urlParameters = [
507  'element' => $table . ':' . $uid,
508  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
509  ];
510  $actions['recordHistoryUrl'] = BackendUtility::getModuleUrl('record_history', $urlParameters);
511 
512  if ($table === 'pages') {
513  // Recordlist button
514  $actions['webListUrl'] = BackendUtility::getModuleUrl('web_list', ['id' => $uid, 'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')]);
515 
516  // View page button
517  $actions['viewOnClick'] = BackendUtility::viewOnClick($uid, '', BackendUtility::BEgetRootLine($uid));
518  }
519 
520  return $actions;
521  }
522 
530  protected function makeRef($table, $ref)
531  {
532  $refLines = [];
533  $lang = $this->getLanguageService();
534  // Files reside in sys_file table
535  if ($table === '_FILE') {
536  $selectTable = 'sys_file';
537  $selectUid = $ref->getUid();
538  } else {
539  $selectTable = $table;
540  $selectUid = $ref;
541  }
543  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
544  ->getQueryBuilderForTable('sys_refindex');
545 
546  $predicates = [
547  $queryBuilder->expr()->eq(
548  'ref_table',
549  $queryBuilder->createNamedParameter($selectTable, \PDO::PARAM_STR)
550  ),
551  $queryBuilder->expr()->eq(
552  'ref_uid',
553  $queryBuilder->createNamedParameter($selectUid, \PDO::PARAM_INT)
554  ),
555  $queryBuilder->expr()->eq(
556  'deleted',
557  $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
558  )
559  ];
560 
561  $backendUser = $this->getBackendUser();
562  if (!$backendUser->isAdmin()) {
563  $allowedSelectTables = GeneralUtility::trimExplode(',', $backendUser->groupData['tables_select']);
564  $predicates[] = $queryBuilder->expr()->in(
565  'tablename',
566  $queryBuilder->createNamedParameter($allowedSelectTables, Connection::PARAM_STR_ARRAY)
567  );
568  }
569 
570  $rows = $queryBuilder
571  ->select('*')
572  ->from('sys_refindex')
573  ->where(...$predicates)
574  ->execute()
575  ->fetchAll();
576 
577  // Compile information for title tag:
578  foreach ($rows as $row) {
579  if ($row['tablename'] === 'sys_file_reference') {
580  $row = $this->transformFileReferenceToRecordReference($row);
581  if ($row['tablename'] === null || $row['recuid'] === null) {
582  return;
583  }
584  }
585 
586  $line = [];
587  $record = BackendUtility::getRecord($row['tablename'], $row['recuid']);
588  if ($record) {
589  BackendUtility::fixVersioningPid($row['tablename'], $record);
590  if (!$this->canAccessPage($row['tablename'], $record)) {
591  continue;
592  }
593  $parentRecord = BackendUtility::getRecord('pages', $record['pid']);
594  $parentRecordTitle = is_array($parentRecord)
595  ? BackendUtility::getRecordTitle('pages', $parentRecord)
596  : '';
597  $urlParameters = [
598  'edit' => [
599  $row['tablename'] => [
600  $row['recuid'] => 'edit'
601  ]
602  ],
603  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
604  ];
605  $url = BackendUtility::getModuleUrl('record_edit', $urlParameters);
606  $line['url'] = $url;
607  $line['icon'] = $this->iconFactory->getIconForRecord($row['tablename'], $record, Icon::SIZE_SMALL)->render();
608  $line['row'] = $row;
609  $line['record'] = $record;
610  $line['recordTitle'] = BackendUtility::getRecordTitle($row['tablename'], $record, false, true);
611  $line['parentRecordTitle'] = $parentRecordTitle;
612  $line['title'] = $lang->sL($GLOBALS['TCA'][$row['tablename']]['ctrl']['title']);
613  $line['labelForTableColumn'] = $this->getLabelForTableColumn($row['tablename'], $row['field']);
614  $line['actions'] = $this->getRecordActions($row['tablename'], $row['recuid']);
615  } else {
616  $line['row'] = $row;
617  $line['title'] = $lang->sL($GLOBALS['TCA'][$row['tablename']]['ctrl']['title']) ?: $row['tablename'];
618  $line['labelForTableColumn'] = $this->getLabelForTableColumn($row['tablename'], $row['field']);
619  }
620  $refLines[] = $line;
621  }
622  return $refLines;
623  }
624 
632  protected function makeRefFrom($table, $ref): array
633  {
634  $refFromLines = [];
635  $lang = $this->getLanguageService();
636 
638  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
639  ->getQueryBuilderForTable('sys_refindex');
640 
641  $predicates = [
642  $queryBuilder->expr()->eq(
643  'tablename',
644  $queryBuilder->createNamedParameter($table, \PDO::PARAM_STR)
645  ),
646  $queryBuilder->expr()->eq(
647  'recuid',
648  $queryBuilder->createNamedParameter($ref, \PDO::PARAM_INT)
649  )
650  ];
651 
652  $backendUser = $this->getBackendUser();
653  if (!$backendUser->isAdmin()) {
654  $allowedSelectTables = GeneralUtility::trimExplode(',', $backendUser->groupData['tables_select']);
655  $predicates[] = $queryBuilder->expr()->in(
656  'ref_table',
657  $queryBuilder->createNamedParameter($allowedSelectTables, Connection::PARAM_STR_ARRAY)
658  );
659  }
660 
661  $rows = $queryBuilder
662  ->select('*')
663  ->from('sys_refindex')
664  ->where(...$predicates)
665  ->execute()
666  ->fetchAll();
667 
668  // Compile information for title tag:
669  foreach ($rows as $row) {
670  $line = [];
671  $record = BackendUtility::getRecord($row['ref_table'], $row['ref_uid']);
672  if ($record) {
673  BackendUtility::fixVersioningPid($row['ref_table'], $record);
674  if (!$this->canAccessPage($row['ref_table'], $record)) {
675  continue;
676  }
677  $urlParameters = [
678  'edit' => [
679  $row['ref_table'] => [
680  $row['ref_uid'] => 'edit'
681  ]
682  ],
683  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
684  ];
685  $url = BackendUtility::getModuleUrl('record_edit', $urlParameters);
686  $line['url'] = $url;
687  $line['icon'] = $this->iconFactory->getIconForRecord($row['tablename'], $record, Icon::SIZE_SMALL)->render();
688  $line['row'] = $row;
689  $line['record'] = $record;
690  $line['recordTitle'] = BackendUtility::getRecordTitle($row['ref_table'], $record, false, true);
691  $line['title'] = $lang->sL($GLOBALS['TCA'][$row['ref_table']]['ctrl']['title']);
692  $line['labelForTableColumn'] = $this->getLabelForTableColumn($table, $row['field']);
693  $line['actions'] = $this->getRecordActions($row['ref_table'], $row['ref_uid']);
694  } else {
695  $line['row'] = $row;
696  $line['title'] = $lang->sL($GLOBALS['TCA'][$row['ref_table']]['ctrl']['title']);
697  $line['labelForTableColumn'] = $this->getLabelForTableColumn($table, $row['field']);
698  }
699  $refFromLines[] = $line;
700  }
701  return $refFromLines;
702  }
703 
710  protected function transformFileReferenceToRecordReference(array $referenceRecord)
711  {
713  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
714  ->getQueryBuilderForTable('sys_file_reference');
715  $queryBuilder->getRestrictions()->removeAll();
716  $fileReference = $queryBuilder
717  ->select('*')
718  ->from('sys_file_reference')
719  ->where(
720  $queryBuilder->expr()->eq(
721  'uid',
722  $queryBuilder->createNamedParameter($referenceRecord['recuid'], \PDO::PARAM_INT)
723  )
724  )
725  ->execute()
726  ->fetch();
727 
728  return [
729  'recuid' => $fileReference['uid_foreign'],
730  'tablename' => $fileReference['tablenames'],
731  'field' => $fileReference['fieldname'],
732  'flexpointer' => '',
733  'softref_key' => '',
734  'sorting' => $fileReference['sorting_foreign']
735  ];
736  }
737 
743  protected function canAccessPage(string $tableName, array $record): bool
744  {
745  $recordPid = (int)($tableName === 'pages' ? $record['uid'] : $record['pid']);
746  return $this->getBackendUser()->isInWebMount($recordPid)
747  || $recordPid === 0 && !empty($GLOBALS['TCA'][$tableName]['ctrl']['security']['ignoreRootLevelRestriction']);
748  }
749 
755  protected function getLanguageService()
756  {
757  return $GLOBALS['LANG'];
758  }
759 
765  protected function getBackendUser()
766  {
767  return $GLOBALS['BE_USER'];
768  }
769 }
static getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
static readPageAccess($id, $perms_clause)
mainAction(ServerRequestInterface $request, ResponseInterface $response)
static getProcessedValueExtra( $table, $fN, $fV, $fixed_lgd_chars=0, $uid=0, $forceResult=true, $pid=0)
static viewOnClick( $pageUid, $backPath='', $rootLine=null, $anchorSection='', $alternativeUrl='', $additionalGetVars='', $switchFocus=true)
$rendererRegistry
static BEgetRootLine($uid, $clause='', $workspaceOL=false)
static getFileAbsFileName($filename, $_=null, $_2=null)
static trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
static makeInstance($className,... $constructorArguments)
static fixVersioningPid($table, &$rr, $ignoreWorkspaceMatch=false)
static getRecordTitle($table, $row, $prep=false, $forceResult=true)
static formatSize($sizeInBytes, $labels='', $base=0)
static getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
if(TYPO3_MODE==='BE') $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['frontendEditingController']['default']