<?php if (!defined('PmWiki')) exit(); /* This file is SetPageTextVariable.php; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation http://www.fsf.org either version 2 of the License, or (at your option) any later version. Copyright 2006 GNUZoo (guru@gnuzoo.org) http://www.pmwiki.org/wiki/Profiles/GNUZoo Please donate to the author: http://gnuzoo.org/GNUZooPayPal/ */ $RecipeInfo['SetPageTextVariable']['Version'] = '1.1'; function SetPageTextVariable($pagename, $ptv, $val) { Lock(2); # read pagetextvariable to see if it exists or is already set $d = PageTextVar($pagename, $ptv); # already set if ($d === $val) { Lock(0); return; } $originalpage = ReadPage($pagename); $newpage = $originalpage; $originaltext = $originalpage['text']; $text = $originaltext; if ($d === "" | $d === NULL) { # not set $text .= "\n(:$ptv:$val:)"; } else { # form (:Name:Value:) $text = preg_replace("/\\(: *$ptv *:(?!\\))\\s?(.*?):\\)/s","(:$ptv:$val:)", $text, 1); # form :Name: Value if ($text === $originaltext) { # form :Name: Value $text = preg_replace("/^:+$ptv:[ \\t]?(.*)$/m",":$ptv: $val", $text, 1); if ($text === $originaltext) { # form Name: Value $text = preg_replace("/^$ptv:[ \\t]?(.*)$/m", "$ptv: $val", $text, 1); if ($text === $originaltext) { # no value changed Lock(0); return; } } } } # save page $newpage['text'] = $text; UpdatePage($pagename, $originalpage, $newpage); Lock(0); }