From a0070b52bbd24f6972b819fa8ff4bdbfe81b5bbc Mon Sep 17 00:00:00 2001
From: Adrian Lang <lang@cosmocode.de>
Date: Wed, 16 Jun 2010 16:15:28 +0200
Subject: [PATCH] Add title index to the indexer files, improve indexer calls

---
 bin/indexer.php     |  1 +
 inc/fulltext.php    |  5 ++---
 inc/init.php        |  3 ++-
 lib/exe/indexer.php |  2 +-
 lib/exe/xmlrpc.php  | 26 ++++++++++++--------------
 5 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/bin/indexer.php b/bin/indexer.php
index 55f3608d5..c95314d7c 100755
--- a/bin/indexer.php
+++ b/bin/indexer.php
@@ -152,6 +152,7 @@ function _clearindex(){
     _lock();
     _quietecho("Clearing index... ");
     io_saveFile($conf['indexdir'].'/page.idx','');
+    io_saveFile($conf['indexdir'].'/title.idx','');
     $dir = @opendir($conf['indexdir']);
     if($dir!==false){
         while(($f = readdir($dir)) !== false){
diff --git a/inc/fulltext.php b/inc/fulltext.php
index a68770277..b6aac5c91 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -233,9 +233,8 @@ function _ft_pageLookup(&$data){
     $in_ns = !$data['not_in_ns'];
     $in_title = !$data['not_in_title'];
 
-    global $conf;
-    $pages  = array_map('rtrim', file($conf['indexdir'].'/page.idx'));
-    $titles = array_map('rtrim', file($conf['indexdir'].'/title.idx'));
+    $pages  = array_map('rtrim', idx_getIndex('page', ''));
+    $titles = array_map('rtrim', idx_getIndex('title', ''));
     $pages = array_combine($pages, $titles);
 
     if($id !== '' && cleanID($id) !== '') {
diff --git a/inc/init.php b/inc/init.php
index 3a9988fcf..20263f95a 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -304,7 +304,8 @@ function init_paths(){
 function init_files(){
     global $conf;
 
-    $files = array( $conf['indexdir'].'/page.idx');
+    $files = array( $conf['indexdir'].'/page.idx',
+                    $conf['indexdir'].'/title.idx');
 
     foreach($files as $file){
         if(!@file_exists($file)){
diff --git a/lib/exe/indexer.php b/lib/exe/indexer.php
index 1e6eb5685..75228779e 100644
--- a/lib/exe/indexer.php
+++ b/lib/exe/indexer.php
@@ -255,7 +255,7 @@ function runSitemapper(){
        return false;
     }
 
-    $pages = file($conf['indexdir'].'/page.idx');
+    $pages = idx_getIndex('page', '');
     print 'runSitemapper(): creating sitemap using '.count($pages).' pages'.NL;
 
     // build the sitemap
diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php
index 377003cf1..f06792361 100644
--- a/lib/exe/xmlrpc.php
+++ b/lib/exe/xmlrpc.php
@@ -354,24 +354,22 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
      * List all pages - we use the indexer list here
      */
     function listPages(){
-        global $conf;
-
         $list  = array();
-        $pages = file($conf['indexdir'] . '/page.idx');
-        $pages = array_filter($pages, 'isVisiblePage');
+        $pages = array_filter(array_filter(idx_getIndex('page', ''),
+                                           'isVisiblePage'),
+                              'page_exists');
 
         foreach(array_keys($pages) as $idx) {
-            if(page_exists($pages[$idx])) {
-                $perm = auth_quickaclcheck($pages[$idx]);
-                if($perm >= AUTH_READ) {
-                    $page = array();
-                    $page['id'] = trim($pages[$idx]);
-                    $page['perms'] = $perm;
-                    $page['size'] = @filesize(wikiFN($pages[$idx]));
-                    $page['lastModified'] = new IXR_Date(@filemtime(wikiFN($pages[$idx])));
-                    $list[] = $page;
-                }
+            $perm = auth_quickaclcheck($pages[$idx]);
+            if($perm < AUTH_READ) {
+                continue;
             }
+            $page = array();
+            $page['id'] = trim($pages[$idx]);
+            $page['perms'] = $perm;
+            $page['size'] = @filesize(wikiFN($pages[$idx]));
+            $page['lastModified'] = new IXR_Date(@filemtime(wikiFN($pages[$idx])));
+            $list[] = $page;
         }
 
         return $list;
-- 
GitLab