TYPO3 CMS  TYPO3_6-2
ElementInformationController.php
Go to the documentation of this file.
1 <?php
3 
23 
30 
36  public $table;
37 
43  public $uid;
44 
48  protected $permsClause;
49 
53  public $access = FALSE;
54 
62  public $type = '';
63 
67  public $doc;
68 
72  protected $content = '';
73 
81  public $pageinfo;
82 
88  protected $row;
89 
93  protected $fileObject;
94 
98  protected $folderObject;
99 
103  public function __construct() {
104  $GLOBALS['BACK_PATH'] = '';
105  $GLOBALS['SOBE'] = $this;
106 
107  $this->init();
108  }
109 
116  public function init() {
117  $this->table = GeneralUtility::_GET('table');
118  $this->uid = GeneralUtility::_GET('uid');
119 
120  $this->perms_clause = $GLOBALS['BE_USER']->getPagePermsClause(1);
121  $this->doc = GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Template\\DocumentTemplate');
122 
123  if (isset($GLOBALS['TCA'][$this->table])) {
124  $this->initDatabaseRecord();
125  } elseif ($this->table == '_FILE' || $this->table == '_FOLDER' || $this->table == 'sys_file') {
126  $this->initFileOrFolderRecord();
127  }
128  }
129 
133  protected function initDatabaseRecord() {
134  $this->type = 'db';
135  $this->uid = (int)$this->uid;
136 
137  // Check permissions and uid value:
138  if ($this->uid && $GLOBALS['BE_USER']->check('tables_select', $this->table)) {
139  if ((string) $this->table == 'pages') {
140  $this->pageinfo = BackendUtility::readPageAccess($this->uid, $this->perms_clause);
141  $this->access = is_array($this->pageinfo) ? 1 : 0;
142  $this->row = $this->pageinfo;
143  } else {
144  $this->row = BackendUtility::getRecordWSOL($this->table, $this->uid);
145  if ($this->row) {
146  $this->pageinfo = BackendUtility::readPageAccess($this->row['pid'], $this->perms_clause);
147  $this->access = is_array($this->pageinfo) ? 1 : 0;
148  }
149  }
151  $treatData = GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Form\\DataPreprocessor');
152  $treatData->renderRecord($this->table, $this->uid, 0, $this->row);
153  }
154  }
155 
159  protected function initFileOrFolderRecord() {
160  $fileOrFolderObject = ResourceFactory::getInstance()->retrieveFileOrFolderObject($this->uid);
161 
162  if ($fileOrFolderObject instanceof Folder) {
163  $this->folderObject = $fileOrFolderObject;
164  $this->access = $this->folderObject->checkActionPermission('read');
165  $this->type = 'folder';
166  } else {
167  $this->fileObject = $fileOrFolderObject;
168  $this->access = $this->fileObject->checkActionPermission('read');
169  $this->type = 'file';
170  $this->table = 'sys_file';
171 
172  try {
173  $this->row = BackendUtility::getRecordWSOL($this->table, $fileOrFolderObject->getUid());
174  } catch (\Exception $e) {
175  $this->row = array();
176  }
177  }
178  }
179 
183  public function main() {
184  if (!$this->access) {
185  return;
186  }
187 
188  // render type by user func
189  $typeRendered = FALSE;
190  if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'])) {
191  foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'] as $classRef) {
192  $typeRenderObj = GeneralUtility::getUserObj($classRef);
193  // @TODO should have an interface
194  if (is_object($typeRenderObj) && method_exists($typeRenderObj, 'isValid') && method_exists($typeRenderObj, 'render')) {
195  if ($typeRenderObj->isValid($this->type, $this)) {
196  $this->content .= $typeRenderObj->render($this->type, $this);
197  $typeRendered = TRUE;
198  break;
199  }
200  }
201  }
202  }
203 
204  if (!$typeRendered) {
205  $this->content .= $this->renderPageTitle();
206  $this->content .= $this->renderPreview();
207  $this->content .= $this->renderPropertiesAsTable();
208  $this->content .= $this->renderReferences();
209  }
210  }
211 
217  protected function renderPageTitle() {
218  if ($this->type === 'folder') {
219  $table = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:folder');
220  $title = $this->doc->getResourceHeader($this->folderObject, array(' ', ''), FALSE);
221  } elseif ($this->type === 'file') {
222  $table = $GLOBALS['LANG']->sL($GLOBALS['TCA'][$this->table]['ctrl']['title']);
223  $title = $this->doc->getResourceHeader($this->fileObject, array(' ', ''), FALSE);
224  } else {
225  $table = $GLOBALS['LANG']->sL($GLOBALS['TCA'][$this->table]['ctrl']['title']);
226  $title = $this->doc->getHeader($this->table, $this->row, $this->pageinfo['_thePath'], 1, array(' ', ''), FALSE);
227  }
228 
229  return '<h1>' .
230  ($table ? '<small>' . $table . '</small><br />' : '') .
231  $title .
232  '</h1>';
233  }
234 
240  protected function renderPreview() {
241  // Perhaps @TODO in future: Also display preview for records - without fileObject
242  if (!$this->fileObject) {
243  return;
244  }
245  $imageTag = '';
246  $downloadLink = '';
247 
248  // check if file is marked as missing
249  if ($this->fileObject->isMissing()) {
250  $flashMessage = \TYPO3\CMS\Core\Resource\Utility\BackendUtility::getFlashMessageForMissingFile($this->fileObject);
251  $imageTag .= $flashMessage->render();
252 
253  } else {
254 
255  $fileExtension = $this->fileObject->getExtension();
256  $thumbUrl = '';
257  if (GeneralUtility::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $fileExtension)) {
258  $thumbUrl = $this->fileObject->process(
260  array(
261  'width' => '400m',
262  'height' => '400m'
263  )
264  )->getPublicUrl(TRUE);
265  }
266 
267  // Create thumbnail image?
268  if ($thumbUrl) {
269  $imageTag .= '<img src="' . $thumbUrl . '" ' .
270  'alt="' . htmlspecialchars(trim($this->fileObject->getName())) . '" ' .
271  'title="' . htmlspecialchars(trim($this->fileObject->getName())) . '" />';
272  }
273 
274  // Display download link?
275  $url = $this->fileObject->getPublicUrl(TRUE);
276 
277  if ($url) {
278  $downloadLink .= '<a href="' . htmlspecialchars($url) . '" target="_blank" class="t3-button">' .
279  IconUtility::getSpriteIcon('actions-edit-download') . ' ' .
280  $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:download', TRUE) .
281  '</a>';
282  }
283  }
284 
285  return ($imageTag ? '<p>' . $imageTag . '</p>' : '') .
286  ($downloadLink ? '<p>' . $downloadLink . '</p>' : '');
287  }
288 
294  protected function renderPropertiesAsTable() {
295  $tableRows = array();
296  $extraFields = array();
297 
298  if (in_array($this->type, array('folder', 'file'), TRUE)) {
299  if ($this->type === 'file') {
300  $extraFields['creation_date'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.creationDate', TRUE);
301  $extraFields['modification_date'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.timestamp', TRUE);
302  }
303  $extraFields['storage'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_tca.xlf:sys_file.storage', TRUE);
304  $extraFields['folder'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:folder', TRUE);
305  } else {
306  $extraFields['crdate'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.creationDate', TRUE);
307  $extraFields['cruser_id'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.creationUserId', TRUE);
308  $extraFields['tstamp'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.timestamp', TRUE);
309 
310  // check if the special fields are defined in the TCA ctrl section of the table
311  foreach ($extraFields as $fieldName => $fieldLabel) {
312  if (isset($GLOBALS['TCA'][$this->table]['ctrl'][$fieldName])) {
313  $extraFields[$GLOBALS['TCA'][$this->table]['ctrl'][$fieldName]] = $fieldLabel;
314  } else {
315  unset($extraFields[$fieldName]);
316  }
317  }
318  }
319 
320  foreach ($extraFields as $name => $fieldLabel) {
321  $rowValue = '';
322  if (!isset($this->row[$name])) {
323  $resourceObject = $this->fileObject ?: $this->folderObject;
324  if ($name === 'storage') {
325  $rowValue = $resourceObject->getStorage()->getName();
326  } elseif ($name === 'folder') {
327  $rowValue = $resourceObject->getParentFolder()->getReadablePath();
328  }
329  } elseif (in_array($name, array('creation_date', 'modification_date'), TRUE)) {
330  $rowValue = BackendUtility::datetime($this->row[$name]);
331  } else {
332  $rowValue = BackendUtility::getProcessedValueExtra($this->table, $name, $this->row[$name]);
333  }
334  // show the backend username who created the issue
335  if ($name === 'cruser_id' && $rowValue) {
336  $userTemp = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('username, realName', 'be_users', 'uid = ' . (int)$rowValue);
337  if ($userTemp['username'] !== '') {
338  $rowValue = $userTemp['username'];
339  if ($userTemp['realName'] !== '') {
340  $rowValue .= ' - ' . $userTemp['realName'];
341  }
342  }
343  }
344  $tableRows[] = '
345  <tr>
346  <th>' . rtrim($fieldLabel, ':') . '</th>
347  <td>' . htmlspecialchars($rowValue) . '</td>
348  </tr>';
349  }
350 
351  // Traverse the list of fields to display for the record:
352  $fieldList = GeneralUtility::trimExplode(',', $GLOBALS['TCA'][$this->table]['interface']['showRecordFieldList'], TRUE);
353  foreach ($fieldList as $name) {
354  $name = trim($name);
355  $uid = $this->row['uid'];
356 
357  if (!isset($GLOBALS['TCA'][$this->table]['columns'][$name])) {
358  continue;
359  }
360 
361  // Storage is already handled above
362  if ($this->type === 'file' && $name === 'storage') {
363  continue;
364  }
365 
366  $isExcluded = !(!$GLOBALS['TCA'][$this->table]['columns'][$name]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields', $this->table . ':' . $name));
367  if ($isExcluded) {
368  continue;
369  }
370 
371  $itemValue = BackendUtility::getProcessedValue($this->table, $name, $this->row[$name], 0, 0, FALSE, $uid);
372  $itemLabel = $GLOBALS['LANG']->sL(BackendUtility::getItemLabel($this->table, $name), TRUE);
373  $tableRows[] = '
374  <tr>
375  <td><strong>' . $itemLabel . '</strong></td>
376  <td>' . htmlspecialchars($itemValue) . '</td>
377  </tr>';
378  }
379 
380  return '<table class="t3-table">' . implode('', $tableRows) . '</table>';
381  }
382 
383  /*
384  * Render references section (references from and references to current record)
385  *
386  * @return string
387  */
388  protected function renderReferences() {
389  $content = '';
390 
391  switch ($this->type) {
392  case 'db': {
393  $references = $this->makeRef($this->table, $this->row['uid']);
394  if (!empty($references)) {
395  $content .= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.referencesToThisItem'), $references);
396  }
397 
398  $referencesFrom = $this->makeRefFrom($this->table, $this->row['uid']);
399  if (!empty($referencesFrom)) {
400  $content .= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.referencesFromThisItem'), $referencesFrom);
401  }
402  break;
403  }
404 
405  case 'file': {
406  if ($this->fileObject && $this->fileObject->isIndexed()) {
407  $references = $this->makeRef('_FILE', $this->fileObject);
408 
409  if (!empty($references)) {
410  $header = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.referencesToThisItem');
411  $content .= $this->doc->section($header, $references);
412  }
413  }
414  break;
415  }
416  }
417 
418  return $content;
419  }
420 
427  protected function renderFileInformationAsTable($fieldList) {
428  $tableRows = array();
429  foreach ($fieldList as $name) {
430  if (!isset($GLOBALS['TCA'][$this->table]['columns'][$name])) {
431  continue;
432  }
433  $isExcluded = !(!$GLOBALS['TCA'][$this->table]['columns'][$name]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields', $this->table . ':' . $name));
434  if ($isExcluded) {
435  continue;
436  }
437  $uid = $this->row['uid'];
438  $itemValue = BackendUtility::getProcessedValue($this->table, $name, $this->row[$name], 0, 0, FALSE, $uid);
439  $itemLabel = $GLOBALS['LANG']->sL(BackendUtility::getItemLabel($this->table, $name), TRUE);
440  $tableRows[] = '
441  <tr>
442  <td><strong>' . $itemLabel . '</strong></td>
443  <td>' . htmlspecialchars($itemValue) . '</td>
444  </tr>';
445  }
446 
447  if (!$tableRows) {
448  return '';
449  }
450 
451  return '<table id="typo3-showitem" class="t3-table-info">' .
452  implode('', $tableRows) .
453  '</table>';
454  }
455 
461  public function printContent() {
462  echo $this->doc->startPage('') .
463  $this->doc->insertStylesAndJS($this->content) .
464  $this->doc->endPage();
465  }
466 
474  public function getLabelForTableColumn($tableName, $fieldName) {
475  if ($GLOBALS['TCA'][$tableName]['columns'][$fieldName]['label'] !== NULL) {
476  $field = $GLOBALS['LANG']->sL($GLOBALS['TCA'][$tableName]['columns'][$fieldName]['label']);
477  if (trim($field) === '') {
478  $field = $fieldName;
479  }
480  } else {
481  $field = $fieldName;
482  }
483  return $field;
484  }
485 
493  protected function getRecordActions($table, $uid) {
494  if ($table === '' || $uid < 0) {
495  return '';
496  }
497 
498  $editOnClick = BackendUtility::editOnClick('&edit[' . $table . '][' . $uid . ']=edit', $GLOBALS['BACK_PATH']);
499  $icon = IconUtility::getSpriteIcon('actions-document-open');
500  $pageActionIcons = '<a href="#" onclick="' . htmlspecialchars($editOnClick) . '">' . $icon . '</a>';
501  $historyOnClick = 'window.location.href=' .
504  'record_history',
505  array(
506  'element' => $table . ':' . $uid,
507  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
508  )
509  )
510  ) . '; return false;';
511 
512  $icon = IconUtility::getSpriteIcon('actions-document-history-open');
513  $pageActionIcons .= '<a href="#" onclick="' . htmlspecialchars($historyOnClick) . '">' . $icon . '</a>';
514  if ($table === 'pages') {
515  $pageActionIcons .= $this->doc->viewPageIcon($uid, '');
516  }
517  return $pageActionIcons;
518  }
519 
527  protected function makeRef($table, $ref) {
528  // Files reside in sys_file table
529  if ($table === '_FILE') {
530  $selectTable = 'sys_file';
531  $selectUid = $ref->getUid();
532  } else {
533  $selectTable = $table;
534  $selectUid = $ref;
535  }
536  $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
537  '*',
538  'sys_refindex',
539  'ref_table=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($selectTable, 'sys_refindex') . ' AND ref_uid=' . (int)$selectUid . ' AND deleted=0'
540  );
541 
542  // Compile information for title tag:
543  $infoData = array();
544  $infoDataHeader = '';
545  if (count($rows)) {
546  $infoDataHeader = '<tr>' . '<td>&nbsp;</td>' . '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.table') . '</td>' . '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.title') . '</td>' . '<td>[uid]</td>' . '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.field') . '</td>' . '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.flexpointer') . '</td>' . '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.softrefKey') . '</td>' . '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.sorting') . '</td>' . '</tr>';
547  }
548  foreach ($rows as $row) {
549  if ($row['tablename'] === 'sys_file_reference') {
550  $row = $this->transformFileReferenceToRecordReference($row);
551  if ($row['tablename'] === NULL || $row['recuid'] === NULL) {
552  return '';
553  }
554  }
555  $record = BackendUtility::getRecord($row['tablename'], $row['recuid']);
556  if ($record) {
557  $parentRecord = BackendUtility::getRecord('pages', $record['pid']);
558  $parentRecordTitle = is_array($parentRecord)
559  ? BackendUtility::getRecordTitle('pages', $parentRecord)
560  : '';
561  $actions = $this->getRecordActions($row['tablename'], $row['recuid']);
562  $infoData[] = '<tr class="db_list_normal">' .
563  '<td style="white-space:nowrap;">' . $actions . '</td>' .
564  '<td>' . $GLOBALS['LANG']->sL($GLOBALS['TCA'][$row['tablename']]['ctrl']['title'], TRUE) . '</td>' .
565  '<td>' . BackendUtility::getRecordTitle($row['tablename'], $record, TRUE) . '</td>' .
566  '<td><span title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:page') . ': ' .
567  htmlspecialchars($parentRecordTitle) . ' (uid=' . $record['pid'] . ')">' .
568  $record['uid'] . '</span></td>' .
569  '<td>' . htmlspecialchars($this->getLabelForTableColumn($row['tablename'], $row['field'])) . '</td>' .
570  '<td>' . htmlspecialchars($row['flexpointer']) . '</td>' .
571  '<td>' . htmlspecialchars($row['softref_key']) . '</td>' .
572  '<td>' . htmlspecialchars($row['sorting']) . '</td>' .
573  '</tr>';
574  } else {
575  $infoData[] = '<tr class="db_list_normal">' .
576  '<td style="white-space:nowrap;"></td>' .
577  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.missing_record') . ' (uid=' . $row['recuid'] . ')</td>' .
578  '<td>' . htmlspecialchars($GLOBALS['LANG']->sL($GLOBALS['TCA'][$row['tablename']]['ctrl']['title']) ?: $row['tablename']) . '</td>' .
579  '<td></td>' .
580  '<td>' . htmlspecialchars($this->getLabelForTableColumn($row['tablename'], $row['field'])) . '</td>' .
581  '<td>' . htmlspecialchars($row['flexpointer']) . '</td>' .
582  '<td>' . htmlspecialchars($row['softref_key']) . '</td>' .
583  '<td>' . htmlspecialchars($row['sorting']) . '</td>' .
584  '</tr>';
585  }
586  }
587  $referenceLine = '';
588  if (count($infoData)) {
589  $referenceLine = '<table class="t3-table">' .
590  '<thead>' . $infoDataHeader . '</thead>' .
591  '<tbody>' .
592  implode('', $infoData) .
593  '</tbody></table>';
594  }
595  return $referenceLine;
596  }
597 
605  protected function makeRefFrom($table, $ref) {
606  $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
607  '*',
608  'sys_refindex',
609  'tablename=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($table, 'sys_refindex') . ' AND recuid=' . (int)$ref
610  );
611 
612  // Compile information for title tag:
613  $infoData = array();
614  if (count($rows)) {
615  $infoDataHeader = '<tr class="t3-row-header">' .
616  '<td>&nbsp;</td>' .
617  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.field') . '</td>' .
618  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.flexpointer') . '</td>' .
619  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.softrefKey') . '</td>' .
620  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.sorting') . '</td>' .
621  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.refTable') . '</td>' .
622  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.refUid') . '</td>' .
623  '<td>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:show_item.php.refString') . '</td>' .
624  '</tr>';
625  }
626  foreach ($rows as $row) {
627  $actions = $this->getRecordActions($row['ref_table'], $row['ref_uid']);
628  $infoData[] = '<tr class="db_list_normal">' .
629  '<td style="white-space:nowrap;">' . $actions . '</td>' .
630  '<td>' . htmlspecialchars($this->getLabelForTableColumn($table, $row['field'])) . '</td>' .
631  '<td>' . htmlspecialchars($row['flexpointer']) . '</td>' .
632  '<td>' . htmlspecialchars($row['softref_key']) . '</td>' .
633  '<td>' . htmlspecialchars($row['sorting']) . '</td>' .
634  '<td>' . $GLOBALS['LANG']->sL($GLOBALS['TCA'][$row['ref_table']]['ctrl']['title'], TRUE) . '</td>' .
635  '<td>' . htmlspecialchars($row['ref_uid']) . '</td>' .
636  '<td>' . htmlspecialchars($row['ref_string']) . '</td>' .
637  '</tr>';
638  }
639 
640  if (empty($infoData)) {
641  return;
642  }
643 
644  return '<table class="t3-table">' .
645  '<thead>' . $infoDataHeader . '</thead>' .
646  '<tbody>' .
647  implode('', $infoData) .
648  '</tbody></table>';
649  }
650 
657  protected function transformFileReferenceToRecordReference(array $referenceRecord) {
658  $fileReference = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
659  '*',
660  'sys_file_reference',
661  'uid=' . (int)$referenceRecord['recuid']
662  );
663  return array(
664  'recuid' => $fileReference['uid_foreign'],
665  'tablename' => $fileReference['tablenames'],
666  'field' => $fileReference['fieldname'],
667  'flexpointer' => '',
668  'softref_key' => '',
669  'sorting' => $fileReference['sorting_foreign']
670  );
671  }
672 
673 }
static getRecordWSOL($table, $uid, $fields=' *', $where='', $useDeleteClause=TRUE, $unsetMovePointers=FALSE)
static readPageAccess($id, $perms_clause)
static editOnClick($params, $backPath='', $requestUri='')
static getItemLabel($table, $col, $printAllWrap='')
static getUserObj($classRef, $checkPrefix='', $silent=FALSE)
static trimExplode($delim, $string, $removeEmptyValues=FALSE, $limit=0)
static getProcessedValueExtra($table, $fN, $fV, $fixed_lgd_chars=0, $uid=0, $forceResult=TRUE)
static getRecordTitle($table, $row, $prep=FALSE, $forceResult=TRUE)
static getModuleUrl($moduleName, $urlParameters=array(), $backPathOverride=FALSE, $returnAbsoluteUrl=FALSE)
static getSpriteIcon($iconName, array $options=array(), array $overlays=array())
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]