Moved to extensions
[lhc/web/wiklou.git] / includes / SearchMySQL3.php
index 02a9332..bd2a0ed 100644 (file)
  * @subpackage Search
  */
 
+/** */
 require_once( 'SearchEngine.php' );
 
+/**
+ * @package MediaWiki
+ * @subpackage Search
+ */
 class SearchMySQL3 extends SearchEngine {
        function SearchMySQL3( &$db ) {
                $this->db =& $db;
@@ -67,7 +72,9 @@ class SearchMySQL3 extends SearchEngine {
                        }
                }
                if ( 0 == count( $this->searchTerms ) ) {
-                       return null;
+                       # No searchable terms remaining.
+                       # We have to return a term for the query or we get an SQL error.
+                       return "0";
                }
 
                return '(' . $cond . ' )';
@@ -75,12 +82,35 @@ class SearchMySQL3 extends SearchEngine {
 
        function queryMain( $filteredTerm, $fulltext ) {
                $match = $this->parseQuery( $filteredTerm, $fulltext );
-               $cur = $this->db->tableName( 'cur' );
+               $page = $this->db->tableName( 'page' );
+               $text = $this->db->tableName( 'text' );
                $searchindex = $this->db->tableName( 'searchindex' );
-               return 'SELECT cur_id, cur_namespace, cur_title, cur_text ' .
-                       "FROM $cur,$searchindex " .
-                       'WHERE cur_id=si_page AND ' . $match;
+               return 'SELECT page_id, page_namespace, page_title, old_flags, old_text ' .
+                       "FROM $page,$text,$searchindex " .
+                       'WHERE page_id=si_page AND page_latest=old_id AND ' . $match;
+       }
+
+       function update( $id, $title, $text ) {
+               $dbw=& wfGetDB(DB_MASTER);
+                $dbw->replace( 'searchindex', array(array('si_page')),
+                        array(
+                                'si_page' => $id,
+                                'si_title' => $title,
+                                'si_text' => $text
+                        ), 'SearchMySQL3::update' );
+       }
+
+       function updateTitle($id,$title) {
+               $dbw=& wfGetDB(DB_MASTER);
+               $lowpri=$dbw->lowPriorityOption();
+               $searchindex = $dbw->tableName( 'searchindex' );
+
+               $sql = "UPDATE $lowpri $searchindex SET si_title='" .
+                          $dbw->strencode( $title ) .
+                          "' WHERE si_page={$id}";
+
+               $dbw->query( $sql, "SearchMySQL3::updateTitle" );
        }
 }
 
-?>
\ No newline at end of file
+?>