-<?
+<?php
# See deferred.doc
class SearchUpdate {
- /* private */ var $mId, $mNamespace, $mTitle, $mText;
+ /* private */ var $mId = 0, $mNamespace, $mTitle, $mText;
/* private */ var $mTitleWords;
function SearchUpdate( $id, $title, $text = false )
{
- $this->mId = $id;
- $this->mText = $text;
-
$nt = Title::newFromText( $title );
- $this->mNamespace = $nt->getNamespace();
- $this->mTitle = $nt->getText(); # Discard namespace
+ if( $nt ) {
+ $this->mId = $id;
+ $this->mText = $text;
+
+ $this->mNamespace = $nt->getNamespace();
+ $this->mTitle = $nt->getText(); # Discard namespace
- $this->mTitleWords = $this->mTextWords = array();
+ $this->mTitleWords = $this->mTextWords = array();
+ } else {
+ wfDebug( "SearchUpdate object created with invalid title '$title'\n" );
+ }
}
function doUpdate()
{
- global $wgDBminWordLen, $wgLang;
+ global $wgDBminWordLen, $wgLang, $wgDisableSearchUpdate;
+
+ if( $wgDisableSearchUpdate || !$this->mId ) {
+ return false;
+ }
$lc = SearchEngine::legalSearchChars() . "&#;";
-
if( $this->mText == false ) {
# Just update the title
$sql = "UPDATE LOW_PRIORITY searchindex SET si_title='" .
wfStrencode( Title::indexTitle( $this->mNamespace, $this->mTitle ) ) .
"' WHERE si_page={$this->mId}";
- wfQuery( $sql, "SearchUpdate::doUpdate" );
+ wfQuery( $sql, DB_WRITE, "SearchUpdate::doUpdate" );
return;
}
-
+
# Language-specific strip/conversion
$text = $wgLang->stripForSearch( $this->mText );
# Strip wiki '' and '''
$text = preg_replace( "/''[']*/", " ", $text );
-
+
$sql = "REPLACE DELAYED INTO searchindex (si_page,si_title,si_text) VALUES ({$this->mId},'" .
wfStrencode( Title::indexTitle( $this->mNamespace, $this->mTitle ) ) . "','" .
wfStrencode( $text ) . "')";
- wfQuery( $sql, "SearchUpdate::doUpdate" );
+ wfQuery( $sql, DB_WRITE, "SearchUpdate::doUpdate" );
}
}