$len) $len = $mlen; $n = max($n,$m[1]); } $target= $grp.".".$name.sprintf("%0{$len}d",$n+1); return $target; } # add markup expression {(serial Group Name)} # creates auto increasing number only defined by $SerialStart # incrementing number of Group.Name1234 pages $MarkupExpr['serial'] = 'MakeSerialNumber($pagename, $args[0], $args[1])'; function MakeSerialNumber($pagename, $grp="", $name="" ) { global $SerialStart; $len = strlen($SerialStart); if (!$grp) $grp = PageVar($pagename, '$Group'); $n = $SerialStart-1; foreach(ListPages("/^$grp.$name\\d/") as $p) { preg_match("/.*[^\\d](\\d+)$/",$p, $m); $mlen = strlen($m[1]); if($mlen>$len) $len = $mlen; $n = max($n,$m[1]); } return sprintf("%0{$len}d",$n+1); } # add markup expression {(newticket Group)} # creates auto increasing pagename of format # Group.20061220001 (date and 3 digit number) $MarkupExpr['newticket'] = 'MakeNewTicket($pagename, $args[0])'; function MakeNewTicket($pagename, $grp) { if (!$grp) $grp = PageVar($pagename, '$Group'); foreach(ListPages("/^$grp.\\d{11}/") as $p) $issue = max(@$issue,substr($p,-11)); $issueday = substr($issue,0,8); $today = strftime("%Y%m%d", time()); if($issueday==$today) { $nextissue = $issue+1; $target = $grp.".".$nextissue; } else $target = $grp.".".$today."001"; return $target; }