/**
  * Trawl thorugh the deletion log entries to remove any deleted pages
  * that might have been missed when the index updater daemon was broken.
  */
 function rebuildDeleted($since = null)
 {
     global $wgDBname;
     if (is_null($since)) {
         $since = '20010115000000';
     }
     // Turn buffering back on; these are relatively small.
     $this->dbstream->bufferResults(true);
     $cutoff = $this->dbstream->addQuotes($this->dbstream->timestamp($since));
     $logging = $this->dbstream->tableName('logging');
     $page = $this->dbstream->tableName('page');
     $result = $this->dbstream->query("SELECT log_namespace,log_title\n\t\t\t FROM {$logging}\n\t\t\t LEFT OUTER JOIN {$page}\n\t\t\t ON log_namespace=page_namespace AND log_title=page_title\n\t\t\t WHERE log_type='delete'\n\t\t\t AND log_timestamp > {$cutoff}\n\t\t\t AND page_namespace IS NULL", __METHOD__);
     $max = $this->dbstream->numRows($result);
     if ($max == 0) {
         echo "Nothing to do.\n";
         return;
     }
     $this->init($max);
     $lastError = true;
     foreach ($result as $row) {
         $this->progress();
         $title = Title::makeTitle($row->log_namespace, $row->log_title);
         try {
             MWSearchUpdater::deletePage($wgDBname, $title);
         } catch (MWException $e) {
             echo "ERROR: " . $e->getMessage() . "\n";
             $lastError = $e;
         }
     }
     $this->finalStatus();
     $this->dbstream->freeResult($result);
     return $lastError;
 }
/**
 * @param $article Article
 * @param $user
 * @param $reason
 * @return bool
 */
function mwSearchUpdateDelete($article, $user, $reason)
{
    global $wgDBname;
    MWSearchUpdater::deletePage($wgDBname, $article->getTitle());
    return true;
}
示例#3
0
 /**
  * Trawl thorugh the deletion log entries to remove any deleted pages
  * that might have been missed when the index updater daemon was broken.
  */
 function rebuildDeleted($since = null)
 {
     global $wgDBname, $options;
     $fname = 'LuceneBuilder::rebuildDeleted';
     if (is_null($since)) {
         $since = '20010115000000';
     }
     // Turn buffering back on; these are relatively small.
     $this->dbstream->bufferResults(true);
     $cutoff = $this->dbstream->addQuotes($this->dbstream->timestamp($since));
     $logging = $this->dbstream->tableName('logging');
     $page = $this->dbstream->tableName('page');
     $result = $this->dbstream->query("SELECT log_namespace,log_title\n\t\t\t FROM {$logging}\n\t\t\t LEFT OUTER JOIN {$page}\n\t\t\t ON log_namespace=page_namespace AND log_title=page_title\n\t\t\t WHERE log_type='delete'\n\t\t\t AND log_timestamp > {$cutoff}\n\t\t\t AND page_namespace IS NULL", $fname);
     $max = $this->dbstream->numRows($result);
     if ($max == 0) {
         echo "Nothing to do.\n";
         return;
     }
     $this->init($max);
     $lastError = true;
     while ($row = $this->dbstream->fetchObject($result)) {
         $this->progress();
         $title = Title::makeTitle($row->log_namespace, $row->log_title);
         $hit = MWSearchUpdater::deletePage($wgDBname, $title);
         if (WikiError::isError($hit)) {
             echo "ERROR: " . $hit->getMessage() . "\n";
             $lastError = $hit;
         }
     }
     $this->finalStatus();
     $this->dbstream->freeResult($result);
     return $lastError;
 }