From a23ac4d7df6b3952d2d1b76686d3b439fc0a6759 Mon Sep 17 00:00:00 2001
From: Michael Hamann <michael@content-space.de>
Date: Thu, 15 Mar 2012 14:21:42 +0100
Subject: [PATCH] Indexer: Check for deleted pages first FS#2469

This move the check if the page doesn't exist anymore but is still in
the index before the check if the index needs to be updated as otherwise
deleted pages won't be deleted from the index.
---
 inc/indexer.php | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/inc/indexer.php b/inc/indexer.php
index 9d8d6f99b..3f56e5fe5 100644
--- a/inc/indexer.php
+++ b/inc/indexer.php
@@ -1174,18 +1174,8 @@ function & idx_get_stopwords() {
  * @author Tom N Harris <tnharris@whoopdedo.org>
  */
 function idx_addPage($page, $verbose=false, $force=false) {
-    // check if indexing needed
     $idxtag = metaFN($page,'.indexed');
-    if(!$force && @file_exists($idxtag)){
-        if(trim(io_readFile($idxtag)) == idx_get_version()){
-            $last = @filemtime($idxtag);
-            if($last > @filemtime(wikiFN($page))){
-                if ($verbose) print("Indexer: index for $page up to date".DOKU_LF);
-                return false;
-            }
-        }
-    }
-
+    // check if page was deleted but is still in the index
     if (!page_exists($page)) {
         if (!@file_exists($idxtag)) {
             if ($verbose) print("Indexer: $page does not exist, ignoring".DOKU_LF);
@@ -1200,6 +1190,18 @@ function idx_addPage($page, $verbose=false, $force=false) {
         @unlink($idxtag);
         return $result;
     }
+
+    // check if indexing needed
+    if(!$force && @file_exists($idxtag)){
+        if(trim(io_readFile($idxtag)) == idx_get_version()){
+            $last = @filemtime($idxtag);
+            if($last > @filemtime(wikiFN($page))){
+                if ($verbose) print("Indexer: index for $page up to date".DOKU_LF);
+                return false;
+            }
+        }
+    }
+
     $indexenabled = p_get_metadata($page, 'internal index', METADATA_RENDER_UNLIMITED);
     if ($indexenabled === false) {
         $result = false;
-- 
GitLab