From 593bf8f6e49cbf0437d75edaa8a468d8bbfe6911 Mon Sep 17 00:00:00 2001 From: Michael Klier <chi@chimeric.de> Date: Wed, 13 Aug 2008 22:06:14 +0200 Subject: [PATCH] XMLRPC: run indexer on putPage() darcs-hash:20080813200614-23886-ad320ca14e120d8206ee5ffdfb4ac087e0aa6929.gz --- lib/exe/xmlrpc.php | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php index 256cd61fc..eaa68c76c 100644 --- a/lib/exe/xmlrpc.php +++ b/lib/exe/xmlrpc.php @@ -6,14 +6,15 @@ if(isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA); require_once(DOKU_INC.'inc/init.php'); +require_once(DOKU_INC.'inc/common.php'); +require_once(DOKU_INC.'inc/auth.php'); +session_write_close(); //close session if(!$conf['xmlrpc']) { die('XML-RPC server not enabled.'); + // FIXME check for groups allowed } -require_once(DOKU_INC.'inc/common.php'); -require_once(DOKU_INC.'inc/auth.php'); -session_write_close(); //close session require_once(DOKU_INC.'inc/IXR_Library.php'); @@ -252,6 +253,7 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer { function putPage($id, $text, $params) { global $TEXT; global $lang; + global $conf; $id = cleanID($id); $TEXT = trim($text); @@ -292,6 +294,31 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer { unlock($id); + // run the indexer if page wasn't indexed yet + if(!@file_exists(metaFN($id, '.indexed'))) { + // try to aquire a lock + $lock = $conf['lockdir'].'/_indexer.lock'; + while(!@mkdir($lock,$conf['dmode'])){ + usleep(50); + if(time()-@filemtime($lock) > 60*5){ + // looks like a stale lock - remove it + @rmdir($lock); + }else{ + return false; + } + } + if($conf['dperm']) chmod($lock, $conf['dperm']); + + require_once(DOKU_INC.'inc/indexer.php'); + + // do the work + idx_addPage($id); + + // we're finished - save and free lock + io_saveFile(metaFN($id,'.indexed'),INDEXER_VERSION); + @rmdir($lock); + } + return 0; } -- GitLab