a64c776b2fb39c27733af230b17fc03a33b4a702
[moodle.git] / search / lib.php
1 <?php
3   /* Move this stuff to lib/searchlib.php?
4    * Author: Michael Champanis
5    *
6    * This file must not contain any PHP 5, because it is used to test for PHP 5
7    * itself, and needs to be able to be executed on PHP 4 installations.
8    * */
9   
10   define('SEARCH_INDEX_PATH', "$CFG->dataroot/search");
11   define('SEARCH_DATABASE_TABLE', 'search_documents');
12   
13   //document types that can be searched  
14   define('SEARCH_TYPE_NONE', 'none');
15   define('SEARCH_TYPE_WIKI', 'wiki');
16   define('SEARCH_TYPE_FORUM', 'forum');
17   define('SEARCH_TYPE_GLOSSARY', 'glossary');  
18   
19   //returns all the document type constants
20   function search_get_document_types($prefix='SEARCH_TYPE') {
21     $ret = array();
22     
23     foreach (get_defined_constants() as $key=>$value) {
24       if (substr($key, 0, strlen($prefix)) == $prefix) {
25         $ret[$key] = $value;
26       } //if
27     } //foreach
28     
29     return $ret;
30   } //search_get_document_types
31     
32   //shortens a url so it can fit on the results page
33   function search_shorten_url($url, $length=30) {    
34     return substr($url, 0, $length)."...";
35   } //search_shorten_url
36   
37   function search_escape_string($str) {
38     global $CFG;
39      
40     switch ($CFG->dbtype) {
41       case 'mysql':
42         $s = mysql_real_escape_string($str);
43         break;
44       case 'postgres7':
45         $s = pg_escape_string($str);
46         break;
47       default:
48         $s = addslashes($str);
49     } //switch
50     
51     return $s;
52   } //search_escape_string
54   //get a real php 5 version number, using 5.0.0 arbitrarily  
55   function search_check_php5($feedback=false) {
56     if (!check_php_version("5.0.0")) {
57       if ($feedback) {
58         $phpversion = phpversion();
59         print_heading("Sorry, global search requires PHP 5.0.0 or later (currently using version $phpversion)");
60       } //if
61       
62       return false;
63     } else {
64       return true;
65     } //else
66   } //search_check_php5
67   
68   //simple timer function, outputs result on 2nd call
69   function search_stopwatch($cli = false) {
70     if (!empty($GLOBALS['search_script_start_time'])) {
71       if (!$cli) print '<em>';
72       print round(microtime(true) - $GLOBALS['search_script_start_time'], 6).' seconds';
73       if (!$cli) print '</em>';
74       
75       unset($GLOBALS['search_script_start_time']);
76     } else {
77       $GLOBALS['search_script_start_time'] = microtime(true);
78     } //else
79   } //search_stopwatch
80   
81   //print and exit (for debugging)
82   function search_pexit($str = "") {
83     if (is_array($str) or is_object($str)) {
84       print_r($str);
85     } else if ($str) {
86       print $str."<br>";
87     } //if
88     
89     exit(0);
90   } //search_pexit
92 ?>