TYPO3 CMS  TYPO3_6-2
DatabaseIntegrityView.php
Go to the documentation of this file.
1 <?php
3 
19 
26 
30  public $MCONF = array();
31 
35  public $MOD_MENU = array();
36 
40  public $MOD_SETTINGS = array();
41 
48  public $doc;
49 
53  public $content;
54 
58  public $menu;
59 
60  protected $formName = 'queryform';
61 
65  public function __construct() {
66  $GLOBALS['LANG']->includeLLFile('EXT:lowlevel/dbint/locallang.xlf');
67  $GLOBALS['BE_USER']->modAccess($GLOBALS['MCONF'], 1);
68  }
69 
76  public function init() {
77  global $LANG, $BACK_PATH;
78  $this->MCONF = $GLOBALS['MCONF'];
79  $this->menuConfig();
80  $this->doc = GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Template\\DocumentTemplate');
81  $this->doc->backPath = $BACK_PATH;
82  $this->doc->setModuleTemplate('EXT:lowlevel/Resources/Private/Templates/dbint.html');
83  $this->doc->form = '<form action="" method="post" name="' . $this->formName . '">';
84  $this->doc->table_TABLE = '<table class="t3-table">
85  <colgroup><col width="24"><col><col width="150"></colgroup>';
86  $this->doc->tableLayout = array(
87  '0' => array(
88  'tr' => array('<thead><tr>', '</tr></thead>'),
89  'defCol' => array('<th>', '</th>')
90  ),
91  'defRow' => array(
92  'defCol' => array('<td>', '</td>')
93  )
94  );
95  }
96 
103  public function menuConfig() {
104  global $LANG;
105  // MENU-ITEMS:
106  // If array, then it's a selector box menu
107  // If empty string it's just a variable, that'll be saved.
108  // Values NOT in this array will not be saved in the settings-array for the module.
109  $this->MOD_MENU = array(
110  'function' => array(
111  0 => $GLOBALS['LANG']->getLL('menu', TRUE),
112  'records' => $GLOBALS['LANG']->getLL('recordStatistics', TRUE),
113  'relations' => $GLOBALS['LANG']->getLL('databaseRelations', TRUE),
114  'search' => $GLOBALS['LANG']->getLL('fullSearch', TRUE),
115  'refindex' => $GLOBALS['LANG']->getLL('manageRefIndex', TRUE)
116  ),
117  'search' => array(
118  'raw' => $GLOBALS['LANG']->getLL('rawSearch', TRUE),
119  'query' => $GLOBALS['LANG']->getLL('advancedQuery', TRUE)
120  ),
121  'search_query_smallparts' => '',
122  'search_result_labels' => '',
123  'labels_noprefix' => '',
124  'options_sortlabel' => '',
125  'show_deleted' => '',
126  'queryConfig' => '',
127  // Current query
128  'queryTable' => '',
129  // Current table
130  'queryFields' => '',
131  // Current tableFields
132  'queryLimit' => '',
133  // Current limit
134  'queryOrder' => '',
135  // Current Order field
136  'queryOrderDesc' => '',
137  // Current Order field descending flag
138  'queryOrder2' => '',
139  // Current Order2 field
140  'queryOrder2Desc' => '',
141  // Current Order2 field descending flag
142  'queryGroup' => '',
143  // Current Group field
144  'storeArray' => '',
145  // Used to store the available Query config memory banks
146  'storeQueryConfigs' => '',
147  // Used to store the available Query configs in memory
148  'search_query_makeQuery' => array(
149  'all' => $GLOBALS['LANG']->getLL('selectRecords', TRUE),
150  'count' => $GLOBALS['LANG']->getLL('countResults', TRUE),
151  'explain' => $GLOBALS['LANG']->getLL('explainQuery', TRUE),
152  'csv' => $GLOBALS['LANG']->getLL('csvExport', TRUE)
153  ),
154  'sword' => ''
155  );
156  // CLEAN SETTINGS
157  $OLD_MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, '', $this->MCONF['name'], 'ses');
158  $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, GeneralUtility::_GP('SET'), $this->MCONF['name'], 'ses');
159  if (GeneralUtility::_GP('queryConfig')) {
160  $qA = GeneralUtility::_GP('queryConfig');
161  $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, array('queryConfig' => serialize($qA)), $this->MCONF['name'], 'ses');
162  }
163  $addConditionCheck = GeneralUtility::_GP('qG_ins');
164  foreach ($OLD_MOD_SETTINGS as $key => $val) {
165  if (substr($key, 0, 5) == 'query' && $this->MOD_SETTINGS[$key] != $val && $key != 'queryLimit' && $key != 'use_listview') {
166  $setLimitToStart = 1;
167  if ($key == 'queryTable' && !$addConditionCheck) {
168  $this->MOD_SETTINGS['queryConfig'] = '';
169  }
170  }
171  if ($key == 'queryTable' && $this->MOD_SETTINGS[$key] != $val) {
172  $this->MOD_SETTINGS['queryFields'] = '';
173  }
174  }
175  if ($setLimitToStart) {
176  $currentLimit = explode(',', $this->MOD_SETTINGS['queryLimit']);
177  if ($currentLimit[1]) {
178  $this->MOD_SETTINGS['queryLimit'] = '0,' . $currentLimit[1];
179  } else {
180  $this->MOD_SETTINGS['queryLimit'] = '0';
181  }
182  $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, $this->MOD_SETTINGS, $this->MCONF['name'], 'ses');
183  }
184  }
185 
192  public function main() {
193  // Content creation
194  if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
195  $this->menu = BackendUtility::getFuncMenu(0, 'SET[function]', $this->MOD_SETTINGS['function'], $this->MOD_MENU['function']);
196  }
197  switch ($this->MOD_SETTINGS['function']) {
198  case 'search':
199  $this->func_search();
200  break;
201  case 'records':
202  $this->func_records();
203  break;
204  case 'relations':
205  $this->func_relations();
206  break;
207  case 'refindex':
208  $this->func_refindex();
209  break;
210  default:
211  $this->func_default();
212  }
213  // Setting up the buttons and markers for docheader
214  $docHeaderButtons = $this->getButtons();
215  $markers = array(
216  'CSH' => $docHeaderButtons['csh'],
217  'FUNC_MENU' => $this->getFuncMenu(),
218  'CONTENT' => $this->content
219  );
220  // Build the <body> for the module
221  $this->content = $this->doc->moduleBody($this->pageinfo, $docHeaderButtons, $markers);
222  // Renders the module page
223  $this->content = $this->doc->render($GLOBALS['LANG']->getLL('title'), $this->content);
224  }
225 
232  public function printContent() {
233  echo $this->content;
234  }
235 
241  protected function getButtons() {
242  $buttons = array(
243  'csh' => '',
244  'shortcut' => ''
245  );
246  // Shortcut
247  if ($GLOBALS['BE_USER']->mayMakeShortcut()) {
248  $buttons['shortcut'] = $this->doc->makeShortcutIcon('', 'function,search,search_query_makeQuery', $this->MCONF['name']);
249  }
250  return $buttons;
251  }
252 
258  protected function getFuncMenu() {
259  if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
260  $funcMenu = BackendUtility::getFuncMenu(0, 'SET[function]', $this->MOD_SETTINGS['function'], $this->MOD_MENU['function']);
261  }
262  return $funcMenu;
263  }
264 
270  protected function func_default() {
271  $availableModFuncs = array('records', 'relations', 'search', 'refindex');
272  $content = '<dl class="t3-overview-list">';
273  foreach ($availableModFuncs as $modFunc) {
274  $functionUrl = BackendUtility::getModuleUrl('system_dbint') . '&SET[function]=' . $modFunc;
275  $title = $GLOBALS['LANG']->getLL($modFunc);
276  $description = $GLOBALS['LANG']->getLL($modFunc . '_description');
277  $icon = '<img src="' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($GLOBALS['BACK_PATH'], 'MOD:system_dbint/db.gif', '', 1) . '" width="16" height="16" title="' . $title . '" alt="' . $title . '" />';
278  $content .= '
279  <dt><a href="' . htmlspecialchars($functionUrl) . '">' . $icon . $title . '</a></dt>
280  <dd>' . $description . '</dd>
281  ';
282  }
283  $content .= '</dl>';
284  $this->content .= $this->doc->header($GLOBALS['LANG']->getLL('title'));
285  $this->content .= $this->doc->section('', $content, FALSE, TRUE);
286  }
287 
288  /****************************
289  *
290  * Functionality implementation
291  *
292  ****************************/
299  public function func_refindex() {
300  $this->content .= $this->doc->header($GLOBALS['LANG']->getLL('manageRefIndex', TRUE));
301  if (GeneralUtility::_GP('_update') || GeneralUtility::_GP('_check')) {
302  $testOnly = GeneralUtility::_GP('_check') ? TRUE : FALSE;
303  // Call the functionality
304  $refIndexObj = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Database\\ReferenceIndex');
305  list($headerContent, $bodyContent) = $refIndexObj->updateIndex($testOnly);
306  // Output content:
307  $this->content .= $this->doc->section('', str_replace(LF, '<br/>', $bodyContent), FALSE, TRUE);
308  }
309 
310  // Output content:
311  $content = '<p class="lead">' . $GLOBALS['LANG']->getLL('referenceIndex_description') . '</p>';
312  $content .= '<input type="submit" name="_check" value="' . $GLOBALS['LANG']->getLL('referenceIndex_buttonCheck') . '" /> <input type="submit" name="_update" value="' . $GLOBALS['LANG']->getLL('referenceIndex_buttonUpdate') . '" /><br /><br />';
313  $this->content .= $this->doc->section('', $content, FALSE, TRUE);
314 
315  // Command Line Interface
316  $content = '';
317  $content .= '<p>' . $GLOBALS['LANG']->getLL('checkScript') . '</p>';
318 
319  $content .= '<h3>' . $GLOBALS['LANG']->getLL('checkScript_check_description') . '</h3>';
320  $content .= '<p><code>php ' . PATH_typo3 . 'cli_dispatch.phpsh lowlevel_refindex -c</code></p>';
321 
322  $content .= '<h3>' . $GLOBALS['LANG']->getLL('checkScript_update_description') . '</h3>';
323  $content .= '<p><code>php ' . PATH_typo3 . 'cli_dispatch.phpsh lowlevel_refindex -e</code></p>';
324  $content .= '<div class="typo3-message message-information"><div class="message-body">' . $GLOBALS['LANG']->getLL('checkScript_information') . '</div></div>';
325 
326  $content .= '<p>' . $GLOBALS['LANG']->getLL('checkScript_moreDetails') . '<br />';
327  $content .= '<a href="' . $GLOBALS['BACK_PATH'] . 'sysext/lowlevel/HOWTO_clean_up_TYPO3_installations.txt" target="_new">' . PATH_typo3 . 'sysext/lowlevel/HOWTO_clean_up_TYPO3_installations.txt</a></p>';
328  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('checkScript_headline'), $content, FALSE, TRUE);
329  }
330 
337  public function func_search() {
338  global $LANG;
339  $fullsearch = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Database\\QueryView');
340  $fullsearch->setFormName($this->formName);
341  $this->content .= $this->doc->header($GLOBALS['LANG']->getLL('search'));
342  $this->content .= $this->doc->spacer(5);
343  $menu2 = '';
344  if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
345  $menu2 = BackendUtility::getFuncMenu(0, 'SET[search]', $this->MOD_SETTINGS['search'], $this->MOD_MENU['search']);
346  }
347  if ($this->MOD_SETTINGS['search'] == 'query' && !$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
348  $menu2 .= BackendUtility::getFuncMenu(0, 'SET[search_query_makeQuery]', $this->MOD_SETTINGS['search_query_makeQuery'], $this->MOD_MENU['search_query_makeQuery']) . '<br />';
349  }
350  if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopCheckboxes'] && $this->MOD_SETTINGS['search'] == 'query') {
351  $menu2 .= BackendUtility::getFuncCheck($GLOBALS['SOBE']->id, 'SET[search_query_smallparts]', $this->MOD_SETTINGS['search_query_smallparts'], '', '', 'id="checkSearch_query_smallparts"') . '&nbsp;<label for="checkSearch_query_smallparts">' . $GLOBALS['LANG']->getLL('showSQL') . '</label><br />';
352  $menu2 .= BackendUtility::getFuncCheck($GLOBALS['SOBE']->id, 'SET[search_result_labels]', $this->MOD_SETTINGS['search_result_labels'], '', '', 'id="checkSearch_result_labels"') . '&nbsp;<label for="checkSearch_result_labels">' . $GLOBALS['LANG']->getLL('useFormattedStrings') . '</label><br />';
353  $menu2 .= BackendUtility::getFuncCheck($GLOBALS['SOBE']->id, 'SET[labels_noprefix]', $this->MOD_SETTINGS['labels_noprefix'], '', '', 'id="checkLabels_noprefix"') . '&nbsp;<label for="checkLabels_noprefix">' . $GLOBALS['LANG']->getLL('dontUseOrigValues') . '</label><br />';
354  $menu2 .= BackendUtility::getFuncCheck($GLOBALS['SOBE']->id, 'SET[options_sortlabel]', $this->MOD_SETTINGS['options_sortlabel'], '', '', 'id="checkOptions_sortlabel"') . '&nbsp;<label for="checkOptions_sortlabel">' . $GLOBALS['LANG']->getLL('sortOptions') . '</label><br />';
355  $menu2 .= BackendUtility::getFuncCheck($GLOBALS['SOBE']->id, 'SET[show_deleted]', $this->MOD_SETTINGS['show_deleted'], '', '', 'id="checkShow_deleted"') . '&nbsp;<label for="checkShow_deleted">' . $GLOBALS['LANG']->getLL('showDeleted') . '</label>';
356  }
357  $this->content .= $this->doc->section('', $menu2) . $this->doc->spacer(10);
358  switch ($this->MOD_SETTINGS['search']) {
359  case 'query':
360  $this->content .= $fullsearch->queryMaker();
361  break;
362  case 'raw':
363 
364  default:
365  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('searchOptions'), $fullsearch->form(), FALSE, TRUE);
366  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('result'), $fullsearch->search(), FALSE, TRUE);
367  }
368  }
369 
376  public function func_records() {
378  $admin = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Integrity\\DatabaseIntegrityCheck');
379  $admin->genTree_makeHTML = 0;
380  $admin->backPath = $GLOBALS['BACK_PATH'];
381  $admin->genTree(0, '');
382  $this->content .= $this->doc->header($GLOBALS['LANG']->getLL('records'));
383 
384  // Pages stat
385  $codeArr = array();
386  $codeArr['tableheader'] = array('', '', $GLOBALS['LANG']->getLL('count'));
387  $i++;
388  $codeArr[$i][] = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', array());
389  $codeArr[$i][] = $GLOBALS['LANG']->getLL('total_pages');
390  $codeArr[$i][] = count($admin->page_idArray);
391  $i++;
392  $codeArr[$i][] = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', array('hidden' => 1));
393  $codeArr[$i][] = $GLOBALS['LANG']->getLL('hidden_pages');
394  $codeArr[$i][] = $admin->recStats['hidden'];
395  $i++;
396  $codeArr[$i][] = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', array('deleted' => 1));
397  $codeArr[$i][] = $GLOBALS['LANG']->getLL('deleted_pages');
398  $codeArr[$i][] = count($admin->recStats['deleted']['pages']);
399  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('pages'), $this->doc->table($codeArr), TRUE, TRUE);
400 
401  // Doktype
402  $codeArr = array();
403  $codeArr['tableheader'] = array('', $GLOBALS['LANG']->getLL('doktype_value'), $GLOBALS['LANG']->getLL('count'));
404  $doktype = $GLOBALS['TCA']['pages']['columns']['doktype']['config']['items'];
405  if (is_array($doktype)) {
406  foreach ($doktype as $n => $setup) {
407  if ($setup[1] != '--div--') {
408  $codeArr[$n][] = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', array('doktype' => $setup[1]));
409  $codeArr[$n][] = $GLOBALS['LANG']->sL($setup[0]) . ' (' . $setup[1] . ')';
410  $codeArr[$n][] = (int)$admin->recStats['doktype'][$setup[1]];
411  }
412  }
413  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('doktype'), $this->doc->table($codeArr), TRUE, TRUE);
414  }
415 
416  // Tables and lost records
417  $id_list = '-1,0,' . implode(',', array_keys($admin->page_idArray));
418  $id_list = rtrim($id_list, ',');
419  $admin->lostRecords($id_list);
420  if ($admin->fixLostRecord(GeneralUtility::_GET('fixLostRecords_table'), GeneralUtility::_GET('fixLostRecords_uid'))) {
421  $admin = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Integrity\\DatabaseIntegrityCheck');
422  $admin->backPath = $BACK_PATH;
423  $admin->genTree(0, '');
424  $id_list = '-1,0,' . implode(',', array_keys($admin->page_idArray));
425  $id_list = rtrim($id_list, ',');
426  $admin->lostRecords($id_list);
427  }
428  $codeArr = array();
429  $codeArr['tableheader'] = array(
430  '',
431  $GLOBALS['LANG']->getLL('label'),
432  $GLOBALS['LANG']->getLL('tablename'),
433  $GLOBALS['LANG']->getLL('total_lost'),
434  ''
435  );
436  $countArr = $admin->countRecords($id_list);
437  if (is_array($GLOBALS['TCA'])) {
438  foreach ($GLOBALS['TCA'] as $t => $value) {
439  if ($GLOBALS['TCA'][$t]['ctrl']['hideTable']) {
440  continue;
441  }
443  $codeArr[$t][] = $GLOBALS['LANG']->sL($GLOBALS['TCA'][$t]['ctrl']['title']);
444  $codeArr[$t][] = $t;
445  if ($t === 'pages' && $admin->lostPagesList !== '') {
446  $lostRecordCount = count(explode(',', $admin->lostPagesList));
447  } else {
448  $lostRecordCount = count($admin->lRecords[$t]);
449  }
450  if ($countArr['all'][$t]) {
451  $theNumberOfRe = (int)$countArr['non_deleted'][$t] . '/' . $lostRecordCount;
452  } else {
453  $theNumberOfRe = '';
454  }
455  $codeArr[$t][] = $theNumberOfRe;
456  $lr = '';
457  if (is_array($admin->lRecords[$t])) {
458  foreach ($admin->lRecords[$t] as $data) {
459  if (!GeneralUtility::inList($admin->lostPagesList, $data[pid])) {
460  $lr .= '<nobr><strong><a href="' . htmlspecialchars((BackendUtility::getModuleUrl('system_dbint') . '&SET[function]=records&fixLostRecords_table=' . $t . '&fixLostRecords_uid=' . $data['uid'])) . '"><img src="' . $BACK_PATH . 'gfx/required_h.gif" width="10" hspace="3" height="10" border="0" align="top" title="' . $GLOBALS['LANG']->getLL('fixLostRecord') . '"></a>uid:' . $data['uid'] . ', pid:' . $data['pid'] . ', ' . htmlspecialchars(GeneralUtility::fixed_lgd_cs(strip_tags($data['title']), 20)) . '</strong></nobr><br>';
461  } else {
462  $lr .= '<nobr><img src="' . $BACK_PATH . 'clear.gif" width="16" height="1" border="0"><font color="Gray">uid:' . $data['uid'] . ', pid:' . $data['pid'] . ', ' . htmlspecialchars(GeneralUtility::fixed_lgd_cs(strip_tags($data['title']), 20)) . '</font></nobr><br>';
463  }
464  }
465  }
466  $codeArr[$t][] = $lr;
467  }
468  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('tables'), $this->doc->table($codeArr), FALSE, TRUE);
469  }
470  }
471 
478  public function func_relations() {
479  global $LANG, $BACK_PATH;
480  $this->content .= $this->doc->header($GLOBALS['LANG']->getLL('relations'));
481  $admin = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Integrity\\DatabaseIntegrityCheck');
482  $admin->genTree_makeHTML = 0;
483  $admin->backPath = $BACK_PATH;
484  $fkey_arrays = $admin->getGroupFields('');
485  $admin->selectNonEmptyRecordsWithFkeys($fkey_arrays);
486  $fileTest = $admin->testFileRefs();
487 
488  $code = '';
489  if (is_array($fileTest['noReferences'])) {
490  foreach ($fileTest['noReferences'] as $val) {
491  $code .= '<nobr>' . $val[0] . '/<strong>' . $val[1] . '</strong></nobr><br>';
492  }
493  } else {
494  $code = '<p>' . $GLOBALS['LANG']->getLL('no_files_found') . '</p>';
495  }
496  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('files_no_ref'), $code, TRUE, TRUE);
497 
498  $code = '';
499  if (is_array($fileTest['moreReferences'])) {
500  foreach ($fileTest['moreReferences'] as $val) {
501  $code .= '<nobr>' . $val[0] . '/<strong>' . $val[1] . '</strong>: ' . $val[2] . ' ' . $GLOBALS['LANG']->getLL('references') . '</nobr><br>' . $val[3] . '<br><br>';
502  }
503  } else {
504  $code = '<p>' . $GLOBALS['LANG']->getLL('no_files_found') . '</p>';
505  }
506  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('files_many_ref'), $code, TRUE, TRUE);
507 
508  $code = '';
509  if (is_array($fileTest['noFile'])) {
510  ksort($fileTest['noFile']);
511  foreach ($fileTest['noFile'] as $val) {
512  $code .= '<nobr>' . $val[0] . '/<strong>' . $val[1] . '</strong> ' . $GLOBALS['LANG']->getLL('isMissing') . ' </nobr><br>' . $GLOBALS['LANG']->getLL('referencedFrom') . $val[2] . '<br><br>';
513  }
514  } else {
515  $code = '<p>' . $GLOBALS['LANG']->getLL('no_files_found') . '</p>';
516  }
517 
518  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('files_no_file'), $code, TRUE, TRUE);
519  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('select_db'), $admin->testDBRefs($admin->checkSelectDBRefs), TRUE, TRUE);
520  $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('group_db'), $admin->testDBRefs($admin->checkGroupDBRefs), TRUE, TRUE);
521  }
522 
529  public function func_filesearch() {
531  }
532 
543  public function findFile($basedir, $pattern, &$matching_files, $depth) {
545  }
546 
547 }
static skinImg($backPath, $src, $wHattribs='', $outputMode=0)
static getFuncCheck($mainParams, $elementName, $currentValue, $script='', $addParams='', $tagParams='')
static getSpriteIconForRecord($table, array $row, array $options=array())
static getModuleUrl($moduleName, $urlParameters=array(), $backPathOverride=FALSE, $returnAbsoluteUrl=FALSE)
findFile($basedir, $pattern, &$matching_files, $depth)
$BACK_PATH
Definition: conf.php:3
static getModuleData($MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')
static getFuncMenu($mainParams, $elementName, $currentValue, $menuItems, $script='', $addparams='')
static fixed_lgd_cs($string, $chars, $appendString='...')
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]