1.8 * @date 2008/03/31 * @version prepared for 2.0 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License * * Prints some basic statistics about the current index. * Does some diagnostics if you are logged in as an administrator. * */ /** * includes and requires */ require_once('../config.php'); require_once($CFG->dirroot.'/search/lib.php'); /// checks global search is enabled if ($CFG->forcelogin) { require_login(); } if (empty($CFG->enableglobalsearch)) { print_error('globalsearchdisabled', 'search'); } /// check for php5, but don't die yet require_once($CFG->dirroot.'/search/indexlib.php'); $indexinfo = new IndexInfo(); $site = get_site(); $strsearch = get_string('search', 'search'); $strquery = get_string('statistics', 'search'); $site = get_site(); $PAGE->set_url('/search/stats.php'); $PAGE->navbar->add($strsearch, new moodle_url('/search/index.php')); $PAGE->navbar->add($strquery, new moodle_url('/search/stats.php')); $PAGE->set_title($strsearch); $PAGE->set_heading($site->fullname); echo $OUTPUT->header(); /// keep things pretty, even if php5 isn't available echo $OUTPUT->box_start(); echo $OUTPUT->heading($strquery); echo $OUTPUT->box_start(); $databasestr = get_string('database', 'search'); $documentsinindexstr = get_string('documentsinindex', 'search'); $deletionsinindexstr = get_string('deletionsinindex', 'search'); $documentsindatabasestr = get_string('documentsindatabase', 'search'); $databasestatestr = get_string('databasestate', 'search'); /// this table is only for admins, shows index directory size and location if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { $datadirectorystr = get_string('datadirectory', 'search'); $inindexdirectorystr = get_string('filesinindexdirectory', 'search'); $totalsizestr = get_string('totalsize', 'search'); $errorsstr = get_string('errors', 'search'); $solutionsstr = get_string('solutions', 'search'); $checkdirstr = get_string('checkdir', 'search'); $checkdbstr = get_string('checkdb', 'search'); $checkdiradvicestr = get_string('checkdiradvice', 'search'); $checkdbadvicestr = get_string('checkdbadvice', 'search'); $runindexerteststr = get_string('runindexertest', 'search'); $runindexerstr = get_string('runindexer', 'search'); $admin_table = new html_table(); $admin_table->tablealign = 'center'; $admin_table->align = array ('right', 'left'); $admin_table->wrap = array ('nowrap', 'nowrap'); $admin_table->cellpadding = 5; $admin_table->cellspacing = 0; $admin_table->width = '500'; $admin_table->data[] = array("{$datadirectorystr}", ''.$indexinfo->path.''); $admin_table->data[] = array($inindexdirectorystr, $indexinfo->filecount); $admin_table->data[] = array($totalsizestr, $indexinfo->size); if ($indexinfo->time > 0) { $admin_table->data[] = array(get_string('createdon', 'search'), date('r', $indexinfo->time)); } else { $admin_table->data[] = array(get_string('createdon', 'search'), '-'); } if (!$indexinfo->valid($errors)) { $admin_table->data[] = array("{$errorsstr}", ' '); foreach ($errors as $key => $value) { $admin_table->data[] = array($key.' ... ', $value); } } echo html_writer::table($admin_table); echo $OUTPUT->spacer(array('height'=>20, 'br'=>true)); // should be done with CSS instead echo $OUTPUT->heading($solutionsstr); unset($admin_table->data); if (isset($errors['dir'])) { $admin_table->data[] = array($checkdirstr, $checkdiradvicestr); } if (isset($errors['db'])) { $admin_table->data[] = array($checkdbstr, $checkdbadvicestr); } $admin_table->data[] = array($runindexerteststr, 'tests/index.php'); $admin_table->data[] = array($runindexerstr, 'indexersplash.php'); echo html_writer::table($admin_table); echo $OUTPUT->spacer($spacer) . '
'; } /// this is the standard summary table for normal users, shows document counts $table = new html_table(); $table->tablealign = 'center'; $table->align = array ('right', 'left'); $table->wrap = array ('nowrap', 'nowrap'); $table->cellpadding = 5; $table->cellspacing = 0; $table->width = '500'; $table->data[] = array("{$databasestr}", "{$CFG->prefix}".SEARCH_DATABASE_TABLE.''); /// add extra fields if we're admin if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { //don't want to confuse users if the two totals don't match (hint: they should) $table->data[] = array($documentsinindexstr, $indexinfo->indexcount); //*cough* they should match if deletions were actually removed from the index, //as it turns out, they're only marked as deleted and not returned in search results $table->data[] = array($deletionsinindexstr, (int)$indexinfo->indexcount - (int)$indexinfo->dbcount); } $table->data[] = array($documentsindatabasestr, $indexinfo->dbcount); foreach($indexinfo->types as $type) { if ($type->type == 'mod'){ $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string('modulenameplural', $type->name)."'", $type->records); } else if ($type->type == 'block') { $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string('pluginname', $type->name)."'", $type->records); } else { $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string($type->name)."'", $type->records); } } echo $OUTPUT->heading($databasestatestr); echo html_writer::table($table); echo $OUTPUT->box_end(); echo $OUTPUT->box_end(); echo $OUTPUT->footer(); ?>