Recent Changes - Search:

Toyonaka ContactMe help To Do Sell Buy Minoo Lorain Bicycle Lorain High School 1976 New Stuff Vancouver, BC

Classes

Research

OJC info

MASLE References iPod Publications

Media

Design

Computer

Software

Politics

Teaching and Learning

Learning Japanese

Main.Religion

Music

Family

Family?

Friends?

Serendipity

Wiki Thoughts

PmWiki

Functions

This page describes some of the internal workings of Pm Wiki 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 Pm Wiki 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)

Returns $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 Pm Wiki, see PmWiki.FmtPageName for lots of details.

Markup($name, $when, $pattern, $replace)

Adds a new markup to the conversion table. Described in greater detail at Pm Wiki.Custom Markup.

This function is used to insert translation rules into the Pm Wiki's translation engine. The arguments to Markup() are all strings, where:

$name
The string names the rule that is inserted. It must be unique (?? and is used partially controls the order in which the rules are applied).
What happens if the name isn't unique??
$when
This string is used to primarily control when a rule is to be applied. See ??? for more details on the order of rules.
$pattern
This string is a regular expression that is used by the translation engine to look for occurences of this rule in the markup source.
$replace
This string will replace the matched text when a match occurs.

Also see: PmWiki.CustomMarkup and Cookbook:Functions#Markup

MarkupToHTML($pagename, $str)

Converts the string $str containing Pm Wiki 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 Pm Wiki 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 Pm Wiki sufficient permissions to be able to do it.

Code of mkdirp() taken from version pmwiki-2.0.beta55 (current is pmwiki-2.0.10):

## 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);
}
Edit - History - Print - Recent Changes - Search
Page last modified on August 31, 2005, at 11:21 PM