[dokuwiki] Re: Content-dependent Purge/Cache

  • From: "Todd Augsburger" <todd@xxxxxxxxxxxxxxxx>
  • To: <dokuwiki@xxxxxxxxxxxxx>
  • Date: Thu, 11 Jan 2007 11:52:08 -0500

Samuele,

Although DW might not support actual removal of permanent metadata, it would 
not be difficult to write a bit o' code ( modeled after p_set_metadata() in 
inc/parserutils.php ) that you could use to directly delete your key(s). 
However, you always take a definite risk that things will _change_ and break 
your plugin. Try this:

// modeled after p_set_metadata() in inc/parserutils.php
function p_del_metadata($id, $data, $render=false){
  if (!is_array($data)) return false;

  $orig = p_get_metadata($id);

  // render metadata first?
  if ($render) $meta = p_render_metadata($id, $orig);
  else $meta = $orig;

  // now del the passed metadata
  foreach ($data as $key => $value){
    // be careful with sub-arrays of $meta['relation']
    if ($key == 'relation'){
      foreach ($value as $subkey => $subvalue){
        unset($meta[$key][$subkey]);
      }
    // no special treatment for the rest
    } else {
      unset($meta[$key]);
    }
  }

  // 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));
}

Todd Augsburger
todd@xxxxxxxxxxxxxxxx
Roller Organs
http://www.rollerorgans.com/

----- Original Message ----- 
From: "Samuele Tognini" <samuele@xxxxxxxxxxxxxxx>
To: <dokuwiki@xxxxxxxxxxxxx>
Sent: Thursday, January 11, 2007 10:01 AM
Subject: [dokuwiki] Re: Content-dependent Purge/Cache


[...]
when i've read Todd's mail i've hoped there was a
trick with the stable release.
About updating, since i'm releasing a plugin i'd prefer that it's
compatible with the stable release.
My syntax plugin uses p_set_metatada to write the value (it was you who
give me this tips, do you remember? :) ), and for what i've understand
the support for metada rendering in syntax mode is not in the stable
release.
[...]

-- 
DokuWiki mailing list - more info at
http://wiki.splitbrain.org/wiki:mailinglist

Other related posts: