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
00034 unset($MCONF);
00035 require ("conf.php");
00036 require ($BACK_PATH."init.php");
00037 require ($BACK_PATH."template.php");
00038 $BE_USER->modAccess($MCONF,1);
00039
00040 t3lib_extMgm::isLoaded("indexed_search",1);
00041
00042
00043
00044
00045
00046
00047 class SC_mod_tools_isearch_index {
00048 var $MCONF=array();
00049 var $MOD_MENU=array();
00050 var $MOD_SETTINGS=array();
00051 var $doc;
00052
00053 var $include_once=array();
00054 var $content;
00055
00056 function init() {
00057 global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
00058 $this->MCONF = $GLOBALS["MCONF"];
00059
00060 $this->menuConfig();
00061
00062 $this->doc = t3lib_div::makeInstance("noDoc");
00063 $this->doc->form='<form action="" method="POST">';
00064 $this->doc->backPath = $BACK_PATH;
00065
00066 $this->doc->JScode = '
00067 <script language="javascript" type="text/javascript">
00068 script_ended = 0;
00069 function jumpToUrl(URL) {
00070 document.location = URL;
00071 }
00072 </script>
00073 ';
00074 $this->doc->tableLayout = Array (
00075 "defRow" => Array (
00076 "0" => Array('<td valign="top" nowrap>','</td>'),
00077 "defCol" => Array('<TD><img src="'.$this->doc->backPath.'clear.gif" width=10 height=1></td><td valign="top" nowrap>','</td>')
00078 )
00079 );
00080 }
00081 function menuConfig() {
00082 global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
00083
00084
00085
00086
00087
00088 $this->MOD_MENU = array(
00089 "function" => array(
00090 "stat" => "General statistics",
00091 "typo3pages" => "List: TYPO3 Pages",
00092 "externalDocs" => "List: External documents",
00093 )
00094 );
00095
00096 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP("SET"), $this->MCONF["name"], "ses");
00097 }
00098 function main() {
00099 global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
00100
00101 $this->content="";
00102 $this->content.=$this->doc->startPage("Indexing Engine Statistics");
00103
00104 $menu=t3lib_BEfunc::getFuncMenu(0,"SET[function]",$this->MOD_SETTINGS["function"],$this->MOD_MENU["function"]);
00105
00106 $this->content.=$this->doc->header("Indexing Engine Statistics");
00107 $this->content.=$this->doc->spacer(5);
00108 $this->content.=$this->doc->section('',$menu);
00109
00110 switch($this->MOD_SETTINGS["function"]) {
00111 case "stat":
00112 $this->content.=$this->doc->section('Records',$this->doc->table($this->getRecordsNumbers()),0,1);
00113 $this->content.=$this->doc->spacer(15);
00114
00115
00116 $this->content.=$this->doc->section('index_phash TYPES',$this->doc->table($this->getPhashTypes()),1);
00117 $this->content.=$this->doc->spacer(15);
00118 break;
00119 case "externalDocs":
00120 $this->content.=$this->doc->section('External documents',$this->doc->table($this->getPhashExternalDocs()),0,1);
00121 $this->content.=$this->doc->spacer(15);
00122 break;
00123 case "typo3pages":
00124 $this->content.=$this->doc->section('TYPO3 Pages',$this->doc->table($this->getPhashT3pages()),0,1);
00125 $this->content.=$this->doc->spacer(15);
00126 break;
00127 }
00128 }
00129 function printContent() {
00130
00131 $this->content.=$this->doc->endPage();
00132 echo $this->content;
00133 }
00134
00135
00136
00137
00138
00139 function getRecordsNumbers() {
00140 $tables=explode(",","index_phash,index_words,index_rel,index_grlist,index_section,index_fulltext");
00141 $recList=array();
00142 reset($tables);
00143 while(list(,$t)=each($tables)) {
00144 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', $t, '');
00145 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00146
00147 $recList[] = array($this->tableHead($t), $row[0]);
00148 }
00149 return $recList;
00150 }
00151 function tableHead($str) {
00152 return "<strong>".$str.": </strong>";
00153 }
00154 function getPhashStat() {
00155 $recList = array();
00156
00157
00158 $items = array();
00159 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*),phash', 'index_phash', 'data_page_id!=0', 'phash_grouping');
00160 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
00161 $items[] = $row;
00162 }
00163 $recList[] = array($this->tableHead("TYPO3 pages"), count($items));
00164
00165
00166 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'index_phash', 'data_page_id!=0');
00167 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00168 $recList[] = array($this->tableHead("TYPO3 pages, raw"), $row[0]);
00169
00170
00171 $items = array();
00172 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*),phash', 'index_phash', 'data_filename!=""', 'phash_grouping');
00173 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
00174 $items[] = $row;
00175 }
00176 $recList[] = array($this->tableHead("External files"), count($items));
00177
00178
00179 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'index_phash', 'data_filename!=""');
00180 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00181 $recList[] = array($this->tableHead("External files, raw"), $row[0]);
00182
00183 return $recList;
00184 }
00185 function getPhashT3pages() {
00186 $recList[]=array(
00187 $this->tableHead("id/type"),
00188 $this->tableHead("Title"),
00189 $this->tableHead("Size"),
00190 $this->tableHead("Words"),
00191 $this->tableHead("mtime"),
00192 $this->tableHead("Indexed"),
00193 $this->tableHead("Updated"),
00194 $this->tableHead("Parsetime"),
00195 $this->tableHead("#sec/gr/full"),
00196 $this->tableHead("#sub"),
00197 $this->tableHead("Lang"),
00198 $this->tableHead("cHash"),
00199 $this->tableHead("phash")
00200 );
00201
00202
00203 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*),index_phash.*', 'index_phash', 'data_page_id!=0', 'phash_grouping', 'data_page_id');
00204 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00205
00206 $cHash = count(unserialize($row["cHashParams"])) ? $this->formatCHash(unserialize($row["cHashParams"])) : "";
00207 $grListRec = $this->getGrlistRecord($row["phash"]);
00208 $recList[] = array(
00209 $row["data_page_id"].($row["data_page_type"]?"/".$row["data_page_type"]:""),
00210 t3lib_div::fixed_lgd($row["item_title"],30),
00211 t3lib_div::formatSize($row["item_size"]),
00212 $this->getNumberOfWords($row["phash"]),
00213 t3lib_BEfunc::datetime($row["item_mtime"]),
00214 t3lib_BEfunc::datetime($row["crdate"]),
00215 ($row["tstamp"]!=$row["crdate"] ? t3lib_BEfunc::datetime($row["tstamp"]) : ""),
00216 $row["parsetime"],
00217 $this->getNumberOfSections($row["phash"])."/".$grListRec[0]["count(*)"]."/".$this->getNumberOfFulltext($row["phash"]),
00218 $row["count(*)"]."/".$this->formatFeGroup($grListRec),
00219 $row["sys_language_uid"],
00220 $cHash,
00221 $row["phash"]
00222 );
00223
00224 if ($row["count(*)"]>1) {
00225 $res2 = $GLOBALS['TYPO3_DB']->exec_SELECTquery('index_phash.*', 'index_phash', 'phash_grouping='.intval($row['phash_grouping']).' AND phash!='.intval($row['phash']));
00226 while($row2 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2)) {
00227 $grListRec = $this->getGrlistRecord($row2["phash"]);
00228 $recList[] = array(
00229 "",
00230 "",
00231 t3lib_div::formatSize($row2["item_size"]),
00232 $this->getNumberOfWords($row2["phash"]),
00233 t3lib_BEfunc::datetime($row2["item_mtime"]),
00234 t3lib_BEfunc::datetime($row2["crdate"]),
00235 ($row2["tstamp"]!=$row2["crdate"] ? t3lib_BEfunc::datetime($row2["tstamp"]) : ""),
00236 $row2["parsetime"],
00237 $this->getNumberOfSections($row2["phash"])."/".$grListRec[0]["count(*)"]."/".$this->getNumberOfFulltext($row2["phash"]),
00238 "-/".$this->formatFeGroup($grListRec),
00239 "",
00240 "",
00241 $row2["phash"]
00242 );
00243 }
00244 }
00245 }
00246 return $recList;
00247 }
00248 function getPhashExternalDocs() {
00249 $recList[]=array(
00250 $this->tableHead("Filename"),
00251 $this->tableHead("Size"),
00252 $this->tableHead("Words"),
00253 $this->tableHead("mtime"),
00254 $this->tableHead("Indexed"),
00255 $this->tableHead("Updated"),
00256 $this->tableHead("Parsetime"),
00257 $this->tableHead("#sec/gr/full"),
00258 $this->tableHead("#sub"),
00259 $this->tableHead("cHash"),
00260 $this->tableHead("phash"),
00261 $this->tableHead("Path")
00262 );
00263
00264
00265 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*),index_phash.*', 'index_phash', 'item_type>0', 'phash_grouping', 'item_type');
00266 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00267
00268 $cHash = count(unserialize($row["cHashParams"])) ? $this->formatCHash(unserialize($row["cHashParams"])) : "";
00269 $grListRec = $this->getGrlistRecord($row["phash"]);
00270 $recList[]=array(
00271 t3lib_div::fixed_lgd($row["item_title"],30),
00272 t3lib_div::formatSize($row["item_size"]),
00273 $this->getNumberOfWords($row["phash"]),
00274 t3lib_BEfunc::datetime($row["item_mtime"]),
00275 t3lib_BEfunc::datetime($row["crdate"]),
00276 ($row["tstamp"]!=$row["crdate"] ? t3lib_BEfunc::datetime($row["tstamp"]) : ""),
00277 $row["parsetime"],
00278 $this->getNumberOfSections($row["phash"])."/".$grListRec[0]["count(*)"]."/".$this->getNumberOfFulltext($row["phash"]),
00279 $row["count(*)"],
00280 $cHash,
00281 $row["phash"],
00282 t3lib_div::fixed_lgd($row["data_filename"],100)
00283 );
00284
00285 if ($row["count(*)"]>1) {
00286 $res2 = $GLOBALS['TYPO3_DB']->exec_SELECTquery('index_phash.*', 'index_phash', 'phash_grouping='.intval($row['phash_grouping']).' AND phash!='.intval($row['phash']));
00287 while($row2 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2)) {
00288 $cHash = count(unserialize($row2["cHashParams"])) ? $this->formatCHash(unserialize($row2["cHashParams"])) : "";
00289 $grListRec = $this->getGrlistRecord($row2["phash"]);
00290 $recList[]=array(
00291 "",
00292 "",
00293 $this->getNumberOfWords($row2["phash"]),
00294 "",
00295 t3lib_BEfunc::datetime($row2["crdate"]),
00296 ($row2["tstamp"]!=$row2["crdate"] ? t3lib_BEfunc::datetime($row2["tstamp"]) : ""),
00297 $row2["parsetime"],
00298 $this->getNumberOfSections($row2["phash"])."/".$grListRec[0]["count(*)"]."/".$this->getNumberOfFulltext($row2["phash"]),
00299 "",
00300 $cHash,
00301 $row2["phash"],
00302 ""
00303 );
00304 }
00305 }
00306
00307 }
00308 return $recList;
00309 }
00310 function formatFeGroup($fegroup_recs) {
00311 reset($fegroup_recs);
00312 $str = array();
00313 while(list(,$row)=each($fegroup_recs)) {
00314 $str[] = $row["gr_list"]=="0,-1" ? "NL" : $row["gr_list"];
00315 }
00316 arsort($str);
00317 return implode("|",$str);
00318 }
00319 function formatCHash($arr) {
00320 reset($arr);
00321 $list=array();
00322 while(list($k,$v)=each($arr)) {
00323 $list[]=$k."=".$v;
00324 }
00325 return implode("<BR>",$list);
00326 }
00327 function getNumberOfSections($phash) {
00328 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'index_section', 'phash='.intval($phash));
00329 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00330 return $row[0];
00331 }
00332 function getNumberOfWords($phash) {
00333 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'index_rel', 'phash='.intval($phash));
00334 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00335 return $row[0];
00336 }
00337 function getGrlistRecord($phash) {
00338 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('index_grlist.*', 'index_grlist', 'phash='.intval($phash));
00339 $allRows = array();
00340 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00341 $row["count(*)"] = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
00342 $allRows[] = $row;
00343 }
00344 return $allRows;
00345 }
00346 function getNumberOfFulltext($phash) {
00347 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'index_fulltext', 'phash='.intval($phash));
00348 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00349 return $row[0];
00350 }
00351 function getPhashTypes() {
00352 $recList=array();
00353
00354
00355 $Itypes = array(
00356 "html" => 1,
00357 "htm" => 1,
00358 "pdf" => 2,
00359 "doc" => 3,
00360 "txt" => 4
00361 );
00362
00363 $revTypes=array_flip($Itypes);
00364 $revTypes[0]="TYPO3 page";
00365
00366 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*),item_type', 'index_phash', '', 'item_type', 'item_type');
00367 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
00368 $iT = $row[1];
00369 $recList[] = array($this->tableHead($revTypes[$iT]." ($iT)"), $this->countUniqueTypes($iT)."/".$row[0]);
00370 }
00371
00372 return $recList;
00373 }
00374 function countUniqueTypes($item_type) {
00375
00376 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'index_phash', 'item_type='.intval($item_type), 'phash_grouping');
00377 $items = array();
00378 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
00379 $items[] = $row;
00380 }
00381 return count($items);
00382 }
00383 }
00384
00385
00386 if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/indexed_search/mod/index.php"]) {
00387 include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/indexed_search/mod/index.php"]);
00388 }
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402 $SOBE = t3lib_div::makeInstance("SC_mod_tools_isearch_index");
00403 $SOBE->init();
00404 $SOBE->main();
00405 $SOBE->printContent();
00406 ?>