00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00063 unset($MCONF);
00064 require ('conf.php');
00065 require ($BACK_PATH.'init.php');
00066 require ($BACK_PATH.'template.php');
00067 require_once (PATH_t3lib.'class.t3lib_admin.php');
00068 require_once (PATH_t3lib.'class.t3lib_loaddbgroup.php');
00069 require_once (PATH_t3lib.'class.t3lib_querygenerator.php');
00070 require_once (PATH_t3lib.'class.t3lib_xml.php');
00071 require_once (PATH_t3lib.'class.t3lib_fullsearch.php');
00072 require_once (PATH_t3lib.'class.t3lib_refindex.php');
00073
00074 $LANG->includeLLFile('EXT:lowlevel/dbint/locallang.xml');
00075 $BE_USER->modAccess($MCONF,1);
00076
00077
00078
00079
00080
00081
00089 class SC_mod_tools_dbint_index {
00090
00091 var $MCONF = array();
00092 var $MOD_MENU = array();
00093 var $MOD_SETTINGS = array();
00094 var $doc;
00095
00096 var $content;
00097 var $menu;
00098
00099
00105 function init() {
00106 global $LANG,$BACK_PATH;
00107 $this->MCONF = $GLOBALS['MCONF'];
00108
00109 $this->menuConfig();
00110
00111 $this->doc = t3lib_div::makeInstance('mediumDoc');
00112 $this->doc->form='<form action="" method="post">';
00113 $this->doc->backPath = $BACK_PATH;
00114
00115
00116 $this->doc->JScode = '
00117 <script language="javascript" type="text/javascript">
00118 script_ended = 0;
00119 function jumpToUrl(URL) {
00120 window.location.href = URL;
00121 }
00122 </script>
00123 ';
00124
00125 $this->doc->tableLayout = Array (
00126 'defRow' => Array (
00127 '0' => Array('<td valign="top">','</td>'),
00128 '1' => Array('<td valign="top">','</td>'),
00129 'defCol' => Array('<td><img src="'.$this->doc->backPath.'clear.gif" width="15" height="1" alt="" /></td><td valign="top">','</td>')
00130 )
00131 );
00132 }
00133
00139 function menuConfig() {
00140 global $LANG;
00141
00142
00143
00144
00145
00146 $this->MOD_MENU = array(
00147 'function' => array(
00148 0 => '[ MENU ]',
00149 'records' => 'Record Statistics',
00150 'tree' => 'Total Page Tree',
00151 'relations' => 'Database Relations',
00152 'search' => 'Full search',
00153 'filesearch' => 'Find filename',
00154 'refindex' => 'Manage Reference Index',
00155 ),
00156 'search' => array(
00157 'raw' => 'Raw search in all fields',
00158 'query' => 'Advanced query'
00159 ),
00160
00161 'search_query_smallparts' => '',
00162 'search_result_labels' => '',
00163 'labels_noprefix' => '',
00164 'options_sortlabel' => '',
00165 'show_deleted' => '',
00166
00167 'queryConfig' => '',
00168 'queryTable' => '',
00169 'queryFields' => '',
00170 'queryLimit' => '',
00171 'queryOrder' => '',
00172 'queryOrderDesc' => '',
00173 'queryOrder2' => '',
00174 'queryOrder2Desc' => '',
00175 'queryGroup' => '',
00176
00177 'storeArray' => '',
00178 'storeQueryConfigs' => '',
00179
00180 'search_query_makeQuery' => array(
00181 'all' => 'Select records',
00182 'count' => 'Count results',
00183 'explain' => 'Explain query',
00184 'csv' => 'CSV Export',
00185 'xml' => 'XML Export'
00186 ),
00187
00188 'sword' => ''
00189 );
00190
00191 $OLD_MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU,'', $this->MCONF['name'], 'ses');
00192 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name'], 'ses');
00193
00194 if (t3lib_div::_GP('queryConfig')) {
00195 $qA = t3lib_div::_GP('queryConfig');
00196 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, array('queryConfig'=>serialize($qA)), $this->MCONF['name'], 'ses');
00197 }
00198 $addConditionCheck = t3lib_div::_GP('qG_ins');
00199 foreach ($OLD_MOD_SETTINGS as $key=>$val) {
00200 if (substr($key, 0, 5)=='query' && $this->MOD_SETTINGS[$key]!=$val && $key!='queryLimit' && $key!='use_listview') {
00201 $setLimitToStart = 1;
00202 if ($key == 'queryTable' && !$addConditionCheck) {
00203 $this->MOD_SETTINGS['queryConfig'] = '';
00204 }
00205 }
00206 if ($key=='queryTable' && $this->MOD_SETTINGS[$key]!=$val) {
00207 $this->MOD_SETTINGS['queryFields'] = '';
00208 }
00209 }
00210 if ($setLimitToStart) {
00211 $currentLimit = explode(',',$this->MOD_SETTINGS['queryLimit']);
00212 if ($currentLimit[1]) {
00213 $this->MOD_SETTINGS['queryLimit']='0,'.$currentLimit[1];
00214 } else {
00215 $this->MOD_SETTINGS['queryLimit']='0';
00216 }
00217 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, $this->MOD_SETTINGS, $this->MCONF['name'], 'ses');
00218 }
00219 }
00220
00226 function main() {
00227 global $BE_USER,$LANG;
00228
00229
00230 $this->content.= $this->doc->startPage($LANG->getLL('title'));
00231 if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
00232 $this->menu = t3lib_BEfunc::getFuncMenu(0,'SET[function]',$this->MOD_SETTINGS['function'],$this->MOD_MENU['function']);
00233 }
00234
00235 switch($this->MOD_SETTINGS['function']) {
00236 case 'search':
00237 $this->func_search();
00238 break;
00239 case 'tree':
00240 $this->func_tree();
00241 break;
00242 case 'records':
00243 $this->func_records();
00244 break;
00245 case 'relations':
00246 $this->func_relations();
00247 break;
00248 case 'filesearch':
00249 $this->func_filesearch();
00250 break;
00251 case 'refindex':
00252 $this->func_refindex();
00253 break;
00254 default:
00255 $this->func_default();
00256 break;
00257 }
00258
00259 if ($BE_USER->mayMakeShortcut()) {
00260 $this->content.=$this->doc->spacer(20).
00261 $this->doc->section('',$this->doc->makeShortcutIcon('','function,search,search_query_makeQuery',$this->MCONF['name']));
00262 }
00263 }
00264
00270 function printContent() {
00271
00272 $this->content.= $this->doc->endPage();
00273 echo $this->content;
00274 }
00275
00281 function func_default() {
00282 global $LANG;
00283
00284 $this->content.=$this->doc->header($LANG->getLL('title'));
00285 $this->content.=$this->doc->spacer(5);
00286 $this->content.=$this->doc->section('',$this->menu);
00287 $this->content.=$this->doc->section('<a href="index.php?SET[function]=records">'.$LANG->getLL('records').'</a>',$LANG->getLL('records_description'),1,1,0,1);
00288 $this->content.=$this->doc->section('<a href="index.php?SET[function]=tree">'.$LANG->getLL('tree').'</a>',$LANG->getLL('tree_description'),1,1,0,1);
00289 $this->content.=$this->doc->section('<a href="index.php?SET[function]=relations">'.$LANG->getLL('relations').'</a>',$LANG->getLL('relations_description'),1,1,0,1);
00290 $this->content.=$this->doc->section('<a href="index.php?SET[function]=search">'.$LANG->getLL('search').'</a>',$LANG->getLL('search_description'),1,1,0,1);
00291 $this->content.=$this->doc->section('<a href="index.php?SET[function]=filesearch">'.$LANG->getLL('filesearch').'</a>',$LANG->getLL('filesearch_description'),1,1,0,1);
00292 $this->content.=$this->doc->section('<a href="index.php?SET[function]=refindex">'.$LANG->getLL('refindex').'</a>',$LANG->getLL('refindex_description'),1,1,0,1);
00293 $this->content.=$this->doc->spacer(50);
00294 }
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00314 function func_refindex() {
00315 global $TYPO3_DB,$TCA;
00316
00317 $this->content.=$this->doc->section('',$this->menu);
00318 $this->content.=$this->doc->section('',$menu2).$this->doc->spacer(10);
00319
00320 if (t3lib_div::_GP('_update') || t3lib_div::_GP('_check')) {
00321 $testOnly = t3lib_div::_GP('_check')?TRUE:FALSE;
00322
00323
00324 $refIndexObj = t3lib_div::makeInstance('t3lib_refindex');
00325 list($headerContent,$bodyContent) = $refIndexObj->updateIndex($testOnly);
00326
00327
00328 $this->content.=$this->doc->section($headerContent,str_replace(chr(10),'<br/>',$bodyContent),0,1);
00329 }
00330
00331
00332 $content = 'Click here to update reference index: <input type="submit" name="_update" value="Update now!" /><br/>';
00333 $content.= 'Click here to test reference index: <input type="submit" name="_check" value="Check now!" /><br/>';
00334 $content.= 'You can also run the check as a shell script if the processing takes longer than the PHP max_execution_time allows:<br/>'.
00335 t3lib_extMgm::extPath('lowlevel').'dbint/cli/refindex_cli.phpsh';
00336 $this->content.=$this->doc->section('Update reference index',$content,0,1);
00337 }
00338
00344 function func_search() {
00345 global $LANG;
00346
00347 $fullsearch = t3lib_div::makeInstance('t3lib_fullsearch');
00348 $this->content.= $this->doc->header($LANG->getLL('search'));
00349 $this->content.= $this->doc->spacer(5);
00350
00351 $menu2='';
00352 if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
00353 $menu2 = t3lib_BEfunc::getFuncMenu(0, 'SET[search]', $this->MOD_SETTINGS['search'], $this->MOD_MENU['search']);
00354 }
00355 if ($this->MOD_SETTINGS['search']=='query' && !$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopMenu']) {
00356 $menu2 .= t3lib_BEfunc::getFuncMenu(0, 'SET[search_query_makeQuery]', $this->MOD_SETTINGS['search_query_makeQuery'], $this->MOD_MENU['search_query_makeQuery']). '<br />';
00357 }
00358 if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableTopCheckboxes'] && $this->MOD_SETTINGS['search']=='query') {
00359 $menu2 .= t3lib_BEfunc::getFuncCheck($GLOBALS['SOBE']->id, 'SET[search_query_smallparts]', $this->MOD_SETTINGS['search_query_smallparts']).' Show SQL parts<br />';
00360 $menu2 .= t3lib_BEfunc::getFuncCheck($GLOBALS['SOBE']->id, 'SET[search_result_labels]', $this->MOD_SETTINGS['search_result_labels']).' Use formatted strings, labels and dates instead of original values for results<br />';
00361 $menu2 .= t3lib_BEfunc::getFuncCheck($GLOBALS['SOBE']->id, 'SET[labels_noprefix]', $this->MOD_SETTINGS['labels_noprefix']).' Don\'t use original values in brackets as prefix for labelled results<br />';
00362 $menu2 .= t3lib_BEfunc::getFuncCheck($GLOBALS['SOBE']->id, 'SET[options_sortlabel]', $this->MOD_SETTINGS['options_sortlabel']).' Sort selectbox options for relations by label and not by value<br />';
00363 $menu2 .= t3lib_BEfunc::getFuncCheck($GLOBALS['SOBE']->id, 'SET[show_deleted]', $this->MOD_SETTINGS['show_deleted']).' Show even deleted entries (with undelete buttons)';
00364 }
00365
00366 $this->content.= $this->doc->section('',$this->menu);
00367 $this->content.= $this->doc->section('',$menu2).$this->doc->spacer(10);
00368
00369 switch($this->MOD_SETTINGS['search']) {
00370 case 'query':
00371 $this->content.=$fullsearch->queryMaker();
00372 break;
00373 case 'raw':
00374 default:
00375 $this->content.=$this->doc->section('Search options:',$fullsearch->form(),0,1);
00376 $this->content.=$this->doc->section('Result:',$fullsearch->search(),0,1);
00377 break;
00378 }
00379 }
00380
00386 function func_tree() {
00387 global $LANG,$BACK_PATH;
00388
00389 $startID = 0;
00390 $admin = t3lib_div::makeInstance('t3lib_admin');
00391 $admin->genTree_makeHTML=1;
00392 $admin->backPath = $BACK_PATH;
00393 $admin->genTree(intval($startID),'<img src="'.$BACK_PATH.'clear.gif" width="1" height="1" align="top" alt="" />');
00394
00395 $this->content.= $this->doc->header($LANG->getLL('tree'));
00396 $this->content.= $this->doc->spacer(5);
00397 $this->content.= $this->doc->section('',$this->menu).$this->doc->divider(5);
00398 $this->content.= $this->doc->sectionEnd();
00399
00400 $this->content.= $admin->genTree_HTML;
00401 $this->content.= $admin->lostRecords($admin->genTree_idlist.'0');
00402 }
00403
00409 function func_records() {
00410 global $LANG,$TCA,$BACK_PATH,$PAGES_TYPES;
00411
00412 $admin = t3lib_div::makeInstance('t3lib_admin');
00413 $admin->genTree_makeHTML = 0;
00414 $admin->backPath = $BACK_PATH;
00415 $admin->genTree(0,'');
00416
00417 $this->content.= $this->doc->header($LANG->getLL('records'));
00418 $this->content.= $this->doc->spacer(5);
00419 $this->content.= $this->doc->section('',$this->menu);
00420
00421
00422 $codeArr=Array();
00423 $i++;
00424 $codeArr[$i][]='<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/i/pages.gif','width="18" height="16"').' hspace="4" align="top" alt="" />';
00425 $codeArr[$i][]=$LANG->getLL('total_pages');
00426 $codeArr[$i][]=count($admin->page_idArray);
00427 $i++;
00428 if (t3lib_extMgm::isLoaded('cms')) {
00429 $codeArr[$i][]='<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/hidden_page.gif','width="18" height="16"').' hspace="4" align="top">';
00430 $codeArr[$i][]=$LANG->getLL('hidden_pages');
00431 $codeArr[$i][]=$admin->recStat['hidden'];
00432 $i++;
00433 }
00434 $codeArr[$i][]='<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/deleted_page.gif','width="18" height="16"').' hspace="4" align="top">';
00435 $codeArr[$i][]=$LANG->getLL('deleted_pages');
00436 $codeArr[$i][]=$admin->recStat['deleted'];
00437
00438 $this->content.=$this->doc->section($LANG->getLL('pages'),$this->doc->table($codeArr),0,1);
00439
00440
00441 $codeArr=Array();
00442 $doktype= $TCA['pages']['columns']['doktype']['config']['items'];
00443 if (is_array($doktype)) {
00444 reset($doktype);
00445 while(list($n,$setup) = each($doktype)) {
00446 if ($setup[1]!='--div--') {
00447 $codeArr[$n][] = '<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/i/'.($PAGES_TYPES[$setup[1]]['icon'] ? $PAGES_TYPES[$setup[1]]['icon'] : $PAGES_TYPES['default']['icon']),'width="18" height="16"').' hspace="4" align="top">';
00448 $codeArr[$n][] = $LANG->sL($setup[0]).' ('.$setup[1].')';
00449 $codeArr[$n][] = intval($admin->recStat[doktype][$setup[1]]);
00450 }
00451 }
00452 $this->content.=$this->doc->section($LANG->getLL('doktype'),$this->doc->table($codeArr),0,1);
00453 }
00454
00455
00456 $id_list = '-1,0,'.implode(array_keys($admin->page_idArray),',');
00457 $id_list = t3lib_div::rm_endcomma($id_list);
00458 $admin->lostRecords($id_list);
00459
00460 if ($admin->fixLostRecord(t3lib_div::_GET('fixLostRecords_table'),t3lib_div::_GET('fixLostRecords_uid'))) {
00461 $admin = t3lib_div::makeInstance('t3lib_admin');
00462 $admin->backPath = $BACK_PATH;
00463 $admin->genTree(0,'');
00464 $id_list = '-1,0,'.implode(array_keys($admin->page_idArray),',');
00465 $id_list = t3lib_div::rm_endcomma($id_list);
00466 $admin->lostRecords($id_list);
00467 }
00468
00469 $codeArr = Array();
00470 $countArr = $admin->countRecords($id_list);
00471 if (is_array($TCA)) {
00472 reset($TCA);
00473 while(list($t)=each($TCA)) {
00474 $codeArr[$t][]=t3lib_iconWorks::getIconImage($t,array(),$BACK_PATH,'hspace="4" align="top"');
00475 $codeArr[$t][]=$LANG->sL($TCA[$t]['ctrl']['title']);
00476 $codeArr[$t][]=$t;
00477
00478 if ($countArr['all'][$t]) {
00479 $theNumberOfRe = intval($countArr['non_deleted'][$t]).'/'.(intval($countArr['all'][$t])-intval($countArr['non_deleted'][$t]));
00480 } else {
00481 $theNumberOfRe ='';
00482 }
00483 $codeArr[$t][]=$theNumberOfRe;
00484
00485 $lr='';
00486 if (is_array($admin->lRecords[$t])) {
00487 reset($admin->lRecords[$t]);
00488 while(list(,$data)=each($admin->lRecords[$t])) {
00489 if (!t3lib_div::inList($admin->lostPagesList,$data[pid])) {
00490 $lr.='<nobr><b><a href="index.php?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="'.$LANG->getLL('fixLostRecord').'"></a>uid:'.$data[uid].', pid:'.$data[pid].', '.t3lib_div::fixed_lgd(strip_tags($data[title]),20).'</b></nobr><br>';
00491 } else {
00492 $lr.='<nobr><img src="'.$BACK_PATH.'clear.gif" width="16" height="1" border="0"><font color="Gray">uid:'.$data[uid].', pid:'.$data[pid].', '.t3lib_div::fixed_lgd(strip_tags($data[title]),20).'</font></nobr><br>';
00493 }
00494 }
00495 }
00496 $codeArr[$t][]=$lr;
00497 }
00498 $this->content.=$this->doc->section($LANG->getLL('tables'),$this->doc->table($codeArr),0,1);
00499 }
00500 }
00501
00507 function func_relations() {
00508 global $LANG,$BACK_PATH;
00509
00510 $this->content.= $this->doc->header($LANG->getLL('relations'));
00511 $this->content.= $this->doc->spacer(5);
00512 $this->content.= $this->doc->section('',$this->menu);
00513
00514 $admin = t3lib_div::makeInstance('t3lib_admin');
00515 $admin->genTree_makeHTML=0;
00516 $admin->backPath = $BACK_PATH;
00517
00518 $fkey_arrays = $admin->getGroupFields('');
00519 $admin->selectNonEmptyRecordsWithFkeys($fkey_arrays);
00520
00521
00522 $fileTest = $admin->testFileRefs();
00523
00524 $code='';
00525 if (is_array($fileTest['noReferences'])) {
00526 while(list(,$val)=each($fileTest['noReferences'])) {
00527 $code.='<nobr>'.$val[0].'/<b>'.$val[1].'</b></nobr><br>';
00528 }
00529 }
00530 $this->content.=$this->doc->section($LANG->getLL('files_no_ref'),$code,1,1);
00531
00532 $code='';
00533 if (is_array($fileTest['moreReferences'])) {
00534 while(list(,$val)=each($fileTest['moreReferences'])) {
00535 $code.='<nobr>'.$val[0].'/<b>'.$val[1].'</b>: '.$val[2].' references:</nobr><br>'.$val[3].'<br><br>';
00536 }
00537 }
00538 $this->content.=$this->doc->section($LANG->getLL('files_many_ref'),$code,1,1);
00539
00540 $code='';
00541 if (is_array($fileTest['noFile'])) {
00542 ksort($fileTest['noFile']);
00543 reset($fileTest['noFile']);
00544 while(list(,$val)=each($fileTest['noFile'])) {
00545 $code.='<nobr>'.$val[0].'/<b>'.$val[1].'</b> is missing! </nobr><br>Referenced from: '.$val[2].'<br><br>';
00546 }
00547 }
00548 $this->content.=$this->doc->section($LANG->getLL('files_no_file'),$code,1,1);
00549 $this->content.=$this->doc->section($LANG->getLL('select_db'),$admin->testDBRefs($admin->checkSelectDBRefs),1,1);
00550 $this->content.=$this->doc->section($LANG->getLL('group_db'),$admin->testDBRefs($admin->checkGroupDBRefs),1,1);
00551 }
00552
00558 function func_filesearch() {
00559 global $LANG;
00560
00561 $this->content.= $this->doc->header($LANG->getLL('relations'));
00562 $this->content.= $this->doc->spacer(5);
00563 $this->content.= $this->doc->section('',$this->menu);
00564
00565
00566 $pattern = t3lib_div::_GP('pattern');
00567 $pcontent = 'Enter regex pattern: <input type="text" name="pattern" value="'.htmlspecialchars($pattern?$pattern:$GLOBALS['TYPO3_CONF_VARS']['BE']['fileDenyPattern']).'"> <input type="submit" name="Search">';
00568 $this->content.= $this->doc->section('Pattern',$pcontent,0,1);
00569
00570 if (strcmp($pattern,'')) {
00571 $dirs = t3lib_div::get_dirs(PATH_site);
00572 # debug($dirs);
00573 $lines=array();
00574 $depth=10;
00575
00576 foreach ($dirs as $key => $value) {
00577 $matching_files=array();
00578 $info='';
00579 if (!t3lib_div::inList('typo3,typo3conf,tslib,media,t3lib',$value)) {
00580 $info = $this->findFile(PATH_site.$value.'/',$pattern,$matching_files,$depth);
00581 }
00582 if (is_array($info)) {
00583 $lines[]='<hr><b>'.$value.'/</b> being checked...';
00584 $lines[]='Dirs: '.$info[0];
00585 if ($info[2]) $lines[]='<span class="typo3-red">ERROR: Directories deeper than '.$depth.' levels</span>';
00586 $lines[]='Files: '.$info[1];
00587 $lines[]='Matching files:<br><nobr><span class="typo3-red">'.implode('<br>',$matching_files).'</span></nobr>';
00588 } else {
00589 $lines[]=$GLOBALS['TBE_TEMPLATE']->dfw('<hr><b>'.$value.'/</b> not checked.');
00590 }
00591 }
00592
00593 $this->content.=$this->doc->section('Searching for filenames:',implode('<br>',$lines),0,1);
00594 }
00595 }
00596
00607 function findFile($basedir,$pattern,&$matching_files,$depth) {
00608 $files_searched=0;
00609 $dirs_searched=0;
00610 $dirs_error=0;
00611
00612
00613 $files = t3lib_div::getFilesInDir($basedir,'',1);
00614 if (is_array($files)) {
00615 $files_searched+=count($files);
00616 foreach ($files as $value) {
00617 if (eregi($pattern,basename($value))) $matching_files[]=substr($value,strlen(PATH_site));
00618 }
00619 }
00620
00621
00622
00623 if ($depth>0) {
00624 $dirs = t3lib_div::get_dirs($basedir);
00625 if (is_array($dirs)) {
00626 $dirs_searched+=count($dirs);
00627
00628 foreach ($dirs as $value) {
00629 $inf= $this->findFile($basedir.$value.'/',$pattern,$matching_files,$depth-1);
00630 $dirs_searched+=$inf[0];
00631 $files_searched+=$inf[1];
00632 $dirs_error=$inf[2];
00633 }
00634 }
00635 } else {
00636 $dirs = t3lib_div::get_dirs($basedir);
00637 if (is_array($dirs) && count($dirs)) {
00638 $dirs_error=1;
00639 }
00640 }
00641
00642 return array($dirs_searched,$files_searched,$dirs_error);
00643 }
00644 }
00645
00646
00647 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/lowlevel/dbint/index.php']) {
00648 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/lowlevel/dbint/index.php']);
00649 }
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660 $SOBE = t3lib_div::makeInstance('SC_mod_tools_dbint_index');
00661 $SOBE->init();
00662 $SOBE->main();
00663 $SOBE->printContent();
00664 ?>