Skip to content
Snippets Groups Projects
Commit 6afe8dca authored by chris's avatar chris
Browse files

update p_get/set_metadata to use $INFO['meta']

This patch updates p_get_metadata() to utilise the in memory copy
copy of the current page's metadata ($INFO['meta']) when appropriate.

The patch also updates p_set_metadata() to synchronise any changes
to the current page's metadata with $INFO['meta'].

$INFO hash is updated with two new elements:
  'id'

darcs-hash:20061004210030-9b6ab-7eab6f933a775fe350a1fb14d1118ea77d2db919.gz
parent b8a111f5
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
......@@ -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));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment