d33512e8e670f0414f1de1efa0d066a123c061e1
[moodle.git] / search / query.php
1 <?php
3   /* The query page - accepts a user-entered query string and returns results.
4    *
5    * Queries are boolean-aware, e.g.:
6    * 
7    * '+'      term required
8    * '-'      term must not be present
9    * ''       (no modifier) term's presence increases rank, but isn't required
10    * 'field:' search this field
11    *
12    * Examples:
13    *
14    * 'earthquake +author:michael'
15    *   Searches for documents written by 'michael' that contain 'earthquake'
16    *
17    * 'earthquake +doctype:wiki'
18    *   Search all wiki pages for 'earthquake'
19    *
20    * '+author:helen +author:foster'
21    *   All articles written by Helen Foster
22    *   
23    * */
24     
25   require_once('../config.php');
26   require_once("$CFG->dirroot/search/lib.php"); 
27     
28   //check for php5, but don't die yet (see line 52)
29   if ($check = search_check_php5()) {      
30     require_once("$CFG->dirroot/search/querylib.php");    
31     
32     $query_string = optional_param('query_string', '', PARAM_CLEAN);
33     $page_number  = optional_param('page', 1, PARAM_INT);
34     
35     if ($page_number < 1) {
36       $page_number = 1;
37     } //if
38     
39     $sq = new SearchQuery($query_string, $page_number, 10, true);  
40   } //if
41   
42   if (!$site = get_site()) {
43     redirect("index.php");
44   } //if
45     
46   $strsearch = "Search"; //get_string();
47   $strquery  = "Enter your search query"; //get_string();
49   print_header("$site->shortname: $strsearch: $strquery", "$site->fullname", 
50                "<a href=\"index.php\">$strsearch</a> -> $strquery");
51   
52   //keep things pretty, even if php5 isn't available
53   if (!$check) {
54     print_heading(search_check_php5(true));
55     print_footer();
56     exit(0);
57   } //if
58   
59   print_simple_box_start('center', '100%', '', 20);
60   print_heading($strquery);
61   
62   print_simple_box_start('center', '', '', 20);
63   
64 ?>
66 <form name="query" method="get" action="query.php">
67   <input type="text" name="query_string" length="50" value="<?php print stripslashes(htmlentities($query_string)) ?>"/>
68   &nbsp;<input type="submit" value="Search"/>&nbsp;&nbsp;<a href="query.php?advanced=yes">Advanced search</a>
69   <a href="stats.php">Statistics</a>
70 </form>
72 <br>
74 <div align="center">
75 <?php
76   print 'Searching: ';
77   
78   if ($sq->is_valid_index()) {
79     print $sq->index_count();    
80   } else {
81     print "0";
82   } //else
83   
84   print ' documents.';
85   
86   if (!$sq->is_valid_index() and isadmin()) {
87     print "<br><br>Admin: There appears to be no index, click <a href='indexersplash.php'>here</a> to create one.";
88   } //if
89 ?>
90 </div>
92 <?php  
93   print_simple_box_end();
94   
95   if ($sq->is_valid()) {
96     print_simple_box_start('center', '50%', 'white', 10);
97     
98     search_stopwatch();              
99     $hit_count = $sq->count();    
100     
101     print "<br>";
103     print $hit_count." results returned for '".stripslashes($query_string)."'.";
104     print "<br>";
105       
106     if ($hit_count > 0) {
107       $page_links = $sq->page_numbers();
108       $hits       = $sq->results();
109         
110       print "<ol>";
111         
112       foreach ($hits as $listing) {
113         print "<li value='".($listing->number+1)."'><a href='".$listing->url."'>$listing->title</a><br>\n"
114              ."<em>".search_shorten_url($listing->url, 70)."</em><br>\n"        
115              ."Type: ".$listing->doctype.", score: ".round($listing->score, 3).", author: ".$listing->author."<br>\n"            
116              ."<br></li>\n";
117       } //for
118       
119       print "</ol>";
120       print $page_links;
121     } //if        
122     
123     print_simple_box_end();
124 ?>
126 <div align="center">
127   It took <?php search_stopwatch(); ?> to fetch these results.
128 </div>
130 <?php
131   } //if (sq is valid)
132   
133   print_simple_box_end();
134   print_footer();
135 ?>