Initial commit
[moodle.git] / search / query.php
1 <?php
3   require_once('../config.php');  
4   require_once("$CFG->dirroot/search/lib.php");    
5     
6   //check for php5, but don't die yet (see line 27)
7   if ($check = search_check_php5()) {  
8     require_once("$CFG->dirroot/search/Zend/Search/Lucene.php");
9     require_once("$CFG->dirroot/search/documents/wiki_document.php");
10     
11     $query_string = optional_param('query_string', '', PARAM_CLEAN);  
12     $index_path = "$CFG->dataroot/search";
13     $no_index = false; //optimism!
14     
15     try {
16       $index = new Zend_Search_Lucene($index_path, false);
17     } catch(Exception $e) {
18       //print $e;
19       $no_index = true;
20     } //catch
21   } //if  
22   
23   if (!$site = get_site()) {
24     redirect("index.php");
25   } //if
26   
27   $strsearch = "Search"; //get_string();
28   $strquery  = "Enter your search query"; //get_string();
30   print_header("$site->shortname: $strsearch: $strquery", "$site->fullname", 
31                "<a href=\"index.php\">$strsearch</a> -> $strquery");
32   
33   //keep things pretty, even if php5 isn't available
34   if (!$check) {
35     print_heading(search_check_php5(true));
36     print_footer();
37     exit(0);
38   } //if
39   
40   print_simple_box_start('center', '100%', '', 20);
41   print_heading($strquery);
42   
43   print_simple_box_start('center', '', '', 20);
44 ?>
46 <form name="query" method="get" action="query.php">
47   <input type="text" name="query_string" length="50" value="<?php print $query_string ?>"/>
48   &nbsp;<input type="submit" value="Search"/>&nbsp;&nbsp;<a href="query.php?advanced=yes">Advanced search</a>
49   <a href="stats.php">Statistics</a>
50 </form>
52 <br>
54 <div align="center">
55 <?php
56 echo 'Searching: ';
58 if ($no_index) {
59   print "0";
60 } else {
61   print $index->count();
62 } //else
64 print ' documents.';
66 if ($no_index and isadmin()) {
67   print "<br><br>Admin: There appears to be no index, click <a href='indexersplash.php'>here</a> to create one.";
68 } //if
69 ?>
70 </div>
72 <?php  
73   print_simple_box_end();
74   
75   if (!empty($query_string) and !$no_index) {
76     print_simple_box_start('center', '50%', 'white', 10);
77     
78     search_stopwatch();
79     $hits = $index->find(strtolower($query_string));      
80     
81     if (count($hits) > 0) {
82       $link_function = $hits[0]->type.'_make_link';
83     } //if    
84     
85     print "<br>";
87     print count($hits)." results returned for '".$query_string."'.";
88     print "<br><br>";
89     
90     print "<ol>";    
91         
92     foreach ($hits as $listing) {
93       print "<li><a href='".$link_function($listing)."'>$listing->title</a><br>\n"
94            ."<em>".search_shorten_url($link_function($listing), 70)."</em><br>\n"        
95            ."Type: ".$listing->type.", score: ".round($listing->score, 3)."<br>\n"            
96            ."<br></li>\n";
97     } //foreach
98     
99     print "</ol>";
100     
101     print_simple_box_end();
102   } //if
103   
104   if (!empty($query_string) and !$no_index) {
105 ?>
107 <div align="center">
108   It took <?php search_stopwatch(); ?> to fetch these results.
109 </div>
111 <?php
112   } //if
113   
114   print_simple_box_end();
115   print_footer();
116 ?>