This page describes some of the internal workings of PmWiki by explaining how some of the functions in pmwiki.php work. For a more brief list/overview on functions useful to for instance cookbook writers, see Cookbook:Functions. You might also want to look at the latest CVS version of pmwiki.php.
Put PmWiki standard functions here with brief explanations (per Pm email). Overly-documented functions get their own page (where possible). BenWilson August 02, 2005, at 02:15 PM
FmtPageName
($fmt, $pagename)$fmt
, with $variable and internationalisation substitutions performed, under the assumption that the current page is pagename
. See PmWiki.Variables for an (incomplete) list of available variables, PmWiki.Internationalizations for internationalisation.
This is one of the major functions in PmWiki, see PmWiki.FmtPageName for lots of details.
Markup
($name, $when, $pattern, $replace)This function is used to insert translation rules into the PmWiki's
translation engine. The arguments to Markup()
are all strings, where:
$name
$when
$pattern
$replace
Also see: PmWiki.CustomMarkup and Cookbook:Functions#Markup
MarkupToHTML
($pagename, $str)$str
containing PmWiki markup into the corresponding HTML code, assuming the current page is $pagename
.
Also see: Cookbook:Functions#MarkupToHTML
mkdirp
($dir)The function mkdirp
($dir) creates a directory, $dir
, if it doesn't
already exist, including any parent directories that might be needed. For
each directory created, it checks that the permissions on the directory are
sufficient to allow PmWiki scripts to read and write files in that
directory. This includes checking for restrictions imposed by PHP's
safe_mode setting. If mkdirp
() is unable to successfully create a
read/write directory, mkdirp
() aborts with an error message telling the
administrator the steps to take to either create $dir manually or give
PmWiki sufficient permissions to be able to do it.
Code of mkdirp
() taken from version pmwiki-2.0.beta55 (current is pmwiki-2.0.13):
## mkdirp creates a directory and its parents as needed, and sets ## permissions accordingly. function mkdirp($dir) { global $ScriptUrl; if (file_exists($dir)) return; if (!file_exists(dirname($dir))) mkdirp(dirname($dir)); if (mkdir($dir, 0777)) { fixperms($dir); if (@touch("$dir/xxx")) { unlink("$dir/xxx"); return; } rmdir($dir); } $parent = realpath(dirname($dir)); $perms = decoct(fileperms($parent) & 03777); $msg = "PmWiki needs to have a writable <tt>$dir/</tt> directory before it can continue. You can create the directory manually by executing the following commands on your server: <pre> mkdir $parent/$dir\n chmod 777 $parent/$dir</pre> Then, <a href='$ScriptUrl'>reload this page</a>."; $safemode = ini_get('safe_mode'); if (!$safemode) $msg .= "<br /><br />Or, for a slightly more secure installation, try executing <pre> chmod 2777 $parent</pre> on your server and following <a target='_blank' href='$ScriptUrl'> this link</a>. Afterwards you can restore the permissions to their current setting by executing <pre> chmod $perms $parent</pre>."; Abort($msg); }