diff --git a/inc/common.php b/inc/common.php index 88891af74046cada947141381ce2658dcb8d9f14..8b21c058553f34942f7f2a2437ef18beee106143 100644 --- a/inc/common.php +++ b/inc/common.php @@ -56,6 +56,11 @@ function pageinfo(){ global $USERINFO; global $conf; + // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml + // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary + $info['id'] = $ID; + $info['rev'] = $REV; + if($_SERVER['REMOTE_USER']){ $info['userinfo'] = $USERINFO; $info['perm'] = auth_quickaclcheck($ID); diff --git a/inc/parserutils.php b/inc/parserutils.php index 17f1811aed2d6dc1801ae5882db5fc10a1ae7a1c..468ffe5c6d73df8e984efdcbef1a5f706a2d8f7f 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -222,15 +222,21 @@ function p_get_instructions($text){ * @author Esther Brunner <esther@kaffeehaus.ch> */ function p_get_metadata($id, $key=false, $render=false){ - $file = metaFN($id, '.meta'); + global $INFO; - if (@file_exists($file)) $meta = unserialize(io_readFile($file, false)); - else $meta = array(); + if ($id == $INFO['id'] && !empty($INFO['meta'])) { + $meta = $INFO['meta']; + } else { + $file = metaFN($id, '.meta'); + + if (@file_exists($file)) $meta = unserialize(io_readFile($file, false)); + else $meta = array(); - // metadata has never been rendered before - do it! - if ($render && !$meta['description']['abstract']){ - $meta = p_render_metadata($id, $meta); - io_saveFile($file, serialize($meta)); + // metadata has never been rendered before - do it! + if ($render && !$meta['description']['abstract']){ + $meta = p_render_metadata($id, $meta); + io_saveFile($file, serialize($meta)); + } } // filter by $key @@ -283,6 +289,13 @@ function p_set_metadata($id, $data, $render=false){ // save only if metadata changed if ($meta == $orig) return true; + + // check if current page metadata has been altered - if so sync the changes + global $INFO; + if ($id == $INFO['id'] && isset($INFO['meta'])) { + $INFO['meta'] = $meta; + } + return io_saveFile(metaFN($id, '.meta'), serialize($meta)); }