37b0a3592f7289a8239d9c62fefc96b7cb4ede7c
[moodle.git] / search / stats.php
1 <?php
2 /**
3 * Global Search Engine for Moodle
4 *
5 * @package search
6 * @category core
7 * @subpackage search_engine
8 * @author Michael Champanis (mchampan) [cynnical@gmail.com], Valery Fremaux [valery.fremaux@club-internet.fr] > 1.8
9 * @date 2008/03/31
10 * @version prepared for 2.0
11 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
12 *
13 * Prints some basic statistics about the current index.
14 * Does some diagnostics if you are logged in as an administrator.
15 *
16 */
18 /**
19 * includes and requires
20 */
21 require_once('../config.php');
22 require_once($CFG->dirroot.'/search/lib.php');
24 /// checks global search is enabled
26     if ($CFG->forcelogin) {
27         require_login();
28     }
30     if (empty($CFG->enableglobalsearch)) {
31         print_error('globalsearchdisabled', 'search');
32     }
34 /// check for php5, but don't die yet
36     require_once($CFG->dirroot.'/search/indexlib.php');
38     $indexinfo = new IndexInfo();
40     $site = get_site();
42     $strsearch = get_string('search', 'search');
43     $strquery  = get_string('statistics', 'search');
45     $site = get_site();
47     $PAGE->set_url('/search/stats.php');
48     $PAGE->navbar->add($strsearch, new moodle_url('/search/index.php'));
49     $PAGE->navbar->add($strquery, new moodle_url('/search/stats.php'));
50     $PAGE->set_title($strsearch);
51     $PAGE->set_heading($site->fullname);
52     echo $OUTPUT->header();
54 /// keep things pretty, even if php5 isn't available
56     echo $OUTPUT->box_start();
57     echo $OUTPUT->heading($strquery);
59     echo $OUTPUT->box_start();
61     $databasestr = get_string('database', 'search');
62     $documentsinindexstr = get_string('documentsinindex', 'search');
63     $deletionsinindexstr = get_string('deletionsinindex', 'search');
64     $documentsindatabasestr = get_string('documentsindatabase', 'search');
65     $databasestatestr = get_string('databasestate', 'search');
67 /// this table is only for admins, shows index directory size and location
69     if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) {
70         $datadirectorystr = get_string('datadirectory', 'search');
71         $inindexdirectorystr = get_string('filesinindexdirectory', 'search');
72         $totalsizestr = get_string('totalsize', 'search');
73         $errorsstr = get_string('errors', 'search');
74         $solutionsstr = get_string('solutions', 'search');
75         $checkdirstr = get_string('checkdir', 'search');
76         $checkdbstr = get_string('checkdb', 'search');
77         $checkdiradvicestr = get_string('checkdiradvice', 'search');
78         $checkdbadvicestr = get_string('checkdbadvice', 'search');
79         $runindexerteststr = get_string('runindexertest', 'search');
80         $runindexerstr = get_string('runindexer', 'search');
82         $admin_table = new html_table();
83         $admin_table->tablealign = 'center';
84         $admin_table->align = array ('right', 'left');
85         $admin_table->wrap = array ('nowrap', 'nowrap');
86         $admin_table->cellpadding = 5;
87         $admin_table->cellspacing = 0;
88         $admin_table->width = '500';
90         $admin_table->data[] = array("<strong>{$datadirectorystr}</strong>", '<em><strong>'.$indexinfo->path.'</strong></em>');
91         $admin_table->data[] = array($inindexdirectorystr, $indexinfo->filecount);
92         $admin_table->data[] = array($totalsizestr, $indexinfo->size);
94         if ($indexinfo->time > 0) {
95             $admin_table->data[] = array(get_string('createdon', 'search'), date('r', $indexinfo->time));
96         }
97         else {
98             $admin_table->data[] = array(get_string('createdon', 'search'), '-');
99         }
101         if (!$indexinfo->valid($errors)) {
102             $admin_table->data[] = array("<strong>{$errorsstr}</strong>", '&nbsp;');
103             foreach ($errors as $key => $value) {
104                 $admin_table->data[] = array($key.' ... ', $value);
105             }
106         }
108         echo html_writer::table($admin_table);
109         echo $OUTPUT->spacer(array('height'=>20, 'br'=>true)); // should be done with CSS instead
110         echo $OUTPUT->heading($solutionsstr);
112         unset($admin_table->data);
113         if (isset($errors['dir'])) {
114             $admin_table->data[] = array($checkdirstr, $checkdiradvicestr);
115         }
116         if (isset($errors['db'])) {
117             $admin_table->data[] = array($checkdbstr, $checkdbadvicestr);
118         }
120         $admin_table->data[] = array($runindexerteststr, '<a href="tests/index.php" target="_blank">tests/index.php</a>');
121         $admin_table->data[] = array($runindexerstr, '<a href="indexersplash.php" target="_blank">indexersplash.php</a>');
123         echo html_writer::table($admin_table);
124         echo $OUTPUT->spacer($spacer) . '<br />';
125     }
127 /// this is the standard summary table for normal users, shows document counts
129     $table = new html_table();
130     $table->tablealign = 'center';
131     $table->align = array ('right', 'left');
132     $table->wrap = array ('nowrap', 'nowrap');
133     $table->cellpadding = 5;
134     $table->cellspacing = 0;
135     $table->width = '500';
137     $table->data[] = array("<strong>{$databasestr}</strong>", "<em><strong>{$CFG->prefix}".SEARCH_DATABASE_TABLE.'</strong></em>');
139 /// add extra fields if we're admin
141     if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) {
142         //don't want to confuse users if the two totals don't match (hint: they should)
143         $table->data[] = array($documentsinindexstr, $indexinfo->indexcount);
145         //*cough* they should match if deletions were actually removed from the index,
146         //as it turns out, they're only marked as deleted and not returned in search results
147         $table->data[] = array($deletionsinindexstr, (int)$indexinfo->indexcount - (int)$indexinfo->dbcount);
148     }
150     $table->data[] = array($documentsindatabasestr, $indexinfo->dbcount);
152     foreach($indexinfo->types as $type) {
153         if ($type->type == 'mod'){
154             $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string('modulenameplural', $type->name)."'", $type->records);
155         } else if ($type->type == 'block') {
156             $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string('pluginname', $type->name)."'", $type->records);
157         } else {
158             $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string($type->name)."'", $type->records);
159         }
161     }
163     echo $OUTPUT->heading($databasestatestr);
164     echo html_writer::table($table);
166     echo $OUTPUT->box_end();
167     echo $OUTPUT->box_end();
168     echo $OUTPUT->footer();
169 ?>