All pastes #149508 Raw Edit

Something

public text v1 · immutable
#149508 ·published 2006-08-25 22:22 UTC
rendered paste body
<?php if (!defined('PmWiki')) exit();

# automatic creation of a number of pages from template pages
# if a pattern is met. By Hans.

# What new pages need to be created when a pattern matches?
$AutoGroupPagesFmt = array(
      'P{$Name}-Issues.HomePage' => 'Issues.Issues',
      'P{$Name}-Activities.Homepage' => 'Activities.Activities',
      'P{$Name}-Discussion.HomePage' => 'Activities.Activities',
      );

# These are the patterns
$AutoGroupPattern = array(
       'p1' => '(Projects\.\\d\\d\\d\\d\\d)(.*)', # *Projects.12345*
# add more patterns here       'p2' => '(.*)(\\d\\d\\d\\d\\d)(.*)', # *12345*
   );


# Catch some variables and put them in new variables ;-)
$group = PageVar($pagename, '$Group');
$name =  PageVar($pagename, '$Name');

# below replace $pagename with $name if only Name should match and not Group
# below replace $pagename with $group if only Group should match and not Name
if ($action=='edit') {
   foreach ((array)$AutoGroupPattern as $k=>$v) {
       $match = preg_match("/^($v)$/i", $pagename);
       if($match) $EditFunctions[] = 'AutoGroupPages';
       }
   }

# Let's create the wanted groups/pages
function AutoGroupPages($pagename, &$page, &$new) {
    global $IsPagePosted, $AutoGroupPagesFmt;
    if (!$IsPagePosted) return;
    foreach($AutoGroupPagesFmt as $n => $t) {
      $n = FmtPageName($n, $pagename);
      if (!PageExists($n)) {
        $t = FmtPageName($t, $pagename);
        WritePage($n, ReadPage($t));
      }
    }
  }