MDL-11719 increased size of idnumber in user table - needed for some enrolment plugin...
[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 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
11 *
12 * Prints some basic statistics about the current index.
13 * Does some diagnostics if you are logged in as an administrator.
14
15 */
17 /**
18 * includes and requires
19 */
20 require_once('../config.php');
21 require_once("{$CFG->dirroot}/search/lib.php");
23 /// checks global search is enabled
25     if ($CFG->forcelogin) {
26         require_login();
27     }
28     
29     if (empty($CFG->enableglobalsearch)) {
30         error(get_string('globalsearchdisabled', 'search'));
31     }
32     
33     require_once("{$CFG->dirroot}/search/indexlib.php");
34     
35     $indexinfo = new IndexInfo();
36     
37     if (!$site = get_site()) {
38         redirect("index.php");
39     } 
40     
41     $strsearch = get_string('search', 'search');
42     $strquery  = get_string('statistics', 'search'); 
43     
44     if (!function_exists('build_navigation')){
45         print_header("$site->shortname: $strsearch: $strquery", "$site->fullname",
46                    "<a href=\"index.php\">$strsearch</a> -> $strquery");
47     } else {
48         $navlinks[] = array('name' => $strsearch, 'link' => "index.php", 'type' => 'misc');
49         $navlinks[] = array('name' => $strquery, 'link' => null, 'type' => 'misc');
50         $navigation = build_navigation($navlinks);
51         $site = get_site();
52         print_header("$strsearch", "$site->fullname" , $navigation, "", "", true, "&nbsp;", navmenu($site));
53     }
54     
55 /// keep things pretty, even if php5 isn't available
57     print_box_start();
58     print_heading($strquery);
59     
60     print_box_start();
61     
62     $databasestr = get_string('database', 'search');
63     $documentsinindexstr = get_string('documentsinindex', 'search');
64     $deletionsinindexstr = get_string('deletionsinindex', 'search');
65     $documentsindatabasestr = get_string('documentsindatabase', 'search');
66     $databasestatestr = get_string('databasestate', 'search');
67     
68 /// this table is only for admins, shows index directory size and location
70     if (isadmin()) {
71         $datadirectorystr = get_string('datadirectory', 'search');
72         $inindexdirectorystr = get_string('filesinindexdirectory', 'search');
73         $totalsizestr = get_string('totalsize', 'search');
74         $errorsstr = get_string('errors', 'search');
75         $solutionsstr = get_string('solutions', 'search');
76         $checkdirstr = get_string('checkdir', 'search');
77         $checkdbstr = get_string('checkdb', 'search');
78         $checkdiradvicestr = get_string('checkdiradvice', 'search');
79         $checkdbadvicestr = get_string('checkdbadvice', 'search');
80         $runindexerteststr = get_string('runindexertest', 'search');
81         $runindexerstr = get_string('runindexer', 'search');
82         
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';
89     
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);
93     
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         } 
100     
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         }
107     
108         print_table($admin_table);
109         print_spacer(20);
110         print_heading($solutionsstr);
111         
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         } 
119         
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>');
122         
123         print_table($admin_table);
124         print_spacer(20);
125     } 
126     
127 /// this is the standard summary table for normal users, shows document counts
129     $table->tablealign = "center";
130     $table->align = array ("right", "left");
131     $table->wrap = array ("nowrap", "nowrap");
132     $table->cellpadding = 5;
133     $table->cellspacing = 0;
134     $table->width = '500';
135     
136     $table->data[] = array("<strong>{$databasestr}</strong>", "<em><strong>{$CFG->prefix}".SEARCH_DATABASE_TABLE.'</strong></em>');
137     
138 /// add extra fields if we're admin
140     if (isadmin()) {
141         //don't want to confuse users if the two totals don't match (hint: they should)
142         $table->data[] = array($documentsinindexstr, $indexinfo->indexcount);
143         
144         //*cough* they should match if deletions were actually removed from the index,
145         //as it turns out, they're only marked as deleted and not returned in search results
146         $table->data[] = array($deletionsinindexstr, (int)$indexinfo->indexcount - (int)$indexinfo->dbcount);
147     } 
148     
149     $table->data[] = array($documentsindatabasestr, $indexinfo->dbcount);
150     
151     foreach($indexinfo->types as $key => $value) {
152         $table->data[] = array(get_string('documentsfor', 'search') . " '".get_string('modulenameplural', $key)."'", $value);
153     } 
154     
155     print_heading($databasestatestr);
156     print_table($table);
157     
158     print_box_end();
159     print_box_end();
160     print_footer();
161 ?>