<?php if (!defined('PmWiki')) exit();

/*  mkexpr-thread.php  for PmWiki 2.2.0 +

    provide {(thread 'Group' 'ThreadStart')} markup expression
    use
    {(thread)} returns next higher four digit number than highest pagename ending in current group
    Specify Group as first argument to check the pagenames there
    Specify Name as optoonal second argument for a Name pagename prefix (anything before the digits)
    Change in config.php ThreatStart: number from which the thread starts
*/

SDV($ThreadStart,'001');
$MarkupExpr['thread'] = 'MakeThread($pagename, $args[0], $args[1])';
function MakeThread($pagename, $grp="", $name="" ) {
   global $ThreadStart;
   $len = strlen($ThreadStart);
   if (!$grp) $grp = PageVar($pagename, '$Group');
   $n = $ThreadStart-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);
}