'.Keep(EntryForm(\$pagename,'posteform','post',\$GLOBALS['WikiFormPageFmt'],ParseArgs(\$m[1])))"); Markup('wsubmit','directives','/^\(:submit\s+(post|preview):\)/', "On submit: ''$1''"); Markup_e('wlist','directives','/^\(:wikilist\s*(.*?):\)/', "'<:block>'.FmtEntryList('',\$pagename,array('q'=>\$m[1]))"); Markup('includef','{$fmt}',"/(($GroupPattern)(?:[.\/]))?{\\\$Newest}/", "\$m[1].NewestEntry(\$pagename,\$m[2])"); SDV($FormsGroup,'Forms'); SDV($FormTemplatePage,'FormTemplate'); SDV($DefaultWikiFormPageFmt,"\$Group.$FormTemplatePage"); SDVA($WikiFormPageFmt,array($DefaultWikiFormPageFmt, "$FormsGroup.\$Group", "\$Suffix.$FormTemplatePage", "$FormsGroup.\$Suffix")); SDVA($WikiFormGroupFmt,array('$Group','$Name','$Prefix-$Group','$Prefix-$Name')); $FmtPV['$Suffix'] = 'preg_replace("/^(.+-)?/","",$group)'; // Form elements in chosen language SDV($language,'en'); SDV($scriptlocation,'scripts'); SDV($wikiformi18n,"wikiform-i18n-$language.php"); if (file_exists("$FarmD/cookbook/$wikiformi18n")) include_once("$FarmD/cookbook/$wikiformi18n"); elseif (file_exists("$FarmD/cookbook/$scriptlocation/$wikiformi18n")) include_once("$FarmD/cookbook/$scriptlocation/$wikiformi18n"); elseif (file_exists("$FarmD/local/$wikiformi18n")) include_once("$FarmD/local/$wikiformi18n"); elseif (file_exists("$FarmD/local/$scriptlocation/$wikiformi18n")) include_once("$FarmD/local/$scriptlocation/$wikiformi18n"); elseif (file_exists("$FarmD/local/$scriptlocation/wikiform-i18n-en.php")) include_once("$FarmD/local/$scriptlocation/wikiform-i18n-en.php"); else include_once("$FarmD/cookbook/$scriptlocation/wikiform-i18n-en.php"); // Publish button format SDV($PublishForm,false); if ($PublishForm) SDV($PublishWikiFormFmt,(($action=='print'||$action=='publish') ? '' : "
$PDFCheckboxFmt$PDFTypesetVFmt$PDFOptionsFmt
")); else $PublishWikiFormFmt = ''; // String comparison function SDV($CollateFunction, 'str' . ((@$EnableCollate) ? 'coll' : 'casecmp')); if ($action=='posteform' || $action=='saveeform') { Lock(2); if ($action=='posteform') { $g = SetFormGroup($_REQUEST['n'],$WikiFormPageFmt,$WikiFormGroupFmt); SDV($RecordStartingNumber,0); $record = $RecordStartingNumber; foreach(ListPages("/^$g\\.\\d/") as $i) $record = max(@$record,substr($i,strlen($g)+1)); $pagename = sprintf("$g.%05d",@$record+1); } $action = 'edit'; if (isset($_REQUEST['onsubmit'])) $WikiFormSubmit = $_REQUEST['onsubmit']; else SDV($WikiFormSubmit,'preview'); $_POST[$WikiFormSubmit] = 1; $EditMessageFmt = "

$wikiform_editmessage

"; $_POST['text'] = FormData($pagename,$WikiFormPageFmt); } elseif ($action=='vieweform') { $FmtPV['$LastModified'] = '$GLOBALS["CurrentTime"]'; $action = 'editeform'; $EformAction = 'neweform'; } elseif ($action=='browse') { SDV($FormNavFooter,true); if (preg_match('/[.\\/]\\d{5}$/',$pagename)) { $HandleActions['browse'] = 'HandleBrowseEform'; if ($FormNavFooter) $GroupFooterFmt.= '(:nl:)=>'.FormNavigation($pagename); else $GroupHeaderFmt = '=>'.FormNavigation($pagename).'(:nl:)'. $GroupHeaderFmt; } elseif (str_replace('/','.',$pagename)==FmtPageName($DefaultWikiFormPageFmt,$pagename)) if ($FormNavFooter) $GroupFooterFmt.= "(:nl:)=>[[$pagename?action=vieweform | $wikiform_viewform]]"; else $GroupHeaderFmt = "=>[[$pagename?action=vieweform | $wikiform_viewform]]". "(:nl:)$GroupHeaderFmt"; } elseif ($action=='print') { if (preg_match('/[.\\/]\\d{5}$/',$pagename)) $HandleActions['print'] = 'HandleBrowseEform'; } SDV($HandleActions['editeform'],'HandleUseEform'); function HandleUseEform($pagename) { global $HandleEformFmt,$EformAction,$PageStartFmt,$PageEformFmt,$PageEndFmt, $WikiFormPageFmt; SDV($HandleEformFmt,array(&$PageStartFmt, &$PageEformFmt, &$PageEndFmt)); SDV($EformAction,'saveeform'); $PageEformFmt = MarkupToHTML($pagename,'(:groupheader:)') . EntryForm($pagename,$EformAction,'post',$WikiFormPageFmt) . MarkupToHTML($pagename,'(:groupfooter:)'); PrintFmt($pagename,$HandleEformFmt); } function FormNavigation($pagename) { global $wikiform_editform; $r = array(); preg_match('/^([^.\\/]+)[.\\/](\\d+)$/',$pagename,$m); $g = $m[1]; $prev = sprintf("%05d",$m[2]-1); if (PageExists("$g.$prev")) $r[] = "« [[($g.)$prev]]"; $r[] = "[[$pagename?action=editeform | $wikiform_editform]]"; $next = sprintf("%05d",$m[2]+1); if (PageExists("$g.$next")) $r[] = "[[($g.)$next]] »"; return implode(' · ',$r); } function SetFormGroup($pagename,$FormPageFmt,$FormGroupFmt) { $i = 0; $prefix = preg_replace("/-.+$/",'',FmtPageName('$Group',$pagename)); foreach ($FormPageFmt as $p) { $pg = FmtPageName($p,$pagename); if (PageExists($pg)) return str_replace('$Prefix',$prefix,FmtPageName($FormGroupFmt[$i],$pg)); $i++; } return ''; } function SetFormTemplate($pagename,$FormPageFmt) { foreach ($FormPageFmt as $p) { $pg = FmtPageName($p,$pagename); if (PageExists($pg)) return $pg; } return ''; } function FormFields($pagename,$FormPageFmt) { global $FormTitleFmt; $formname = SetFormTemplate($pagename,$FormPageFmt); if (!$formname) Abort("cannot associate a form with '$pagename'"); $formpage = ReadPage($formname); $f = array(); $FormTitleFmt = array(); $n = 0; $formpage['text'] = preg_replace_callback( '/\\(:include\\s+(\\S.*?):\\)/', function ($m) use ($pagename) { return IncludeText($pagename,$m[1]); }, @$formpage['text']); foreach(explode("\n",$formpage['text']) as $x) { if (preg_match("/^:([^:]+?):(\\*)?([[:alnum:]]*?)(?:\\s+([^-+\\(]+?))?(?:\\s*\\(([^\\)]*?)\\))?(?:\\s*([-+]\\*?)?)(?:\\s+(\\d[-+]))?$/", $x,$match)) { $f[$n]['eprompt'] = trim($match[1]); $f[$n]['element'] = ($match[3]) ? strtolower($match[3]) : preg_replace('/[^[:alnum:]]/','',strtolower($match[1])); if ($match[2]=='*') SDV($FormTitleFmt['csum'], $f[$n]['element']); $f[$n]['etitle'] = str_replace(array('"',"'"),array('"','''),$match[4]); $f[$n]['etype'] = $match[5]; $f[$n]['elist'] = $match[6]; $f[$n]['esum'] = $match[7]; $n++; } elseif (preg_match("/^!+\\s*(.*?)$/",$x,$match)) { if (isset($FormTitleFmt['title'])) $FormTitleFmt['th'][$n] = $match[1]; else $FormTitleFmt['title'] = $match[1]; } elseif (preg_match("/^\\(:submit\\s+(post|preview):\\)/",$x,$match)) SDV($FormTitleFmt['submit'], $match[1]); elseif (preg_match('/^::(.*?)("(.*)")?$/',$x,$match)) $FormTitleFmt[$n-1] = array('help' => $match[1], 'prompt' => $match[3]); } return $f; } function FormValues($pagename,$fields,$auth='read') { global $Charset; $fvals = array(); $ferrs = array(); $n = 0; $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); foreach (explode("\n\n:",substr($page['text'],1)) as $p) { preg_match('/^([^:]+):/',$p,$m); $fvals[$fields[$n]['element']] = str_replace('$','$', htmlspecialchars(preg_replace('/^[^:]+:\s*/','',$p),ENT_QUOTES,$Charset)); $ferrs[$fields[$n]['element']] = ($fields[$n]['eprompt']==$m[1]) ? '' : $m[1]; $n++; } PCache($pagename, $page); return array('fv' => $fvals, 'fe' => $ferrs); } function EntryForm($pagename,$action,$method,$FormPageFmt,$opt=NULL) { global $FormTitleFmt, $FmtPV, $Now, $FormValuesFunction, $SaveEformAction, $Charset; SDV($SaveEformAction, 'saveeform'); if (@$opt['formtemplate']) $FormPageFmt = array(MakePageName($pagename, $opt['formtemplate'])); $f = FormFields($pagename, $FormPageFmt); if (@$FormTitleFmt['title']) $out[] = MarkupToHTML($pagename, '!%block class=wikiaction%' . $FormTitleFmt['title']); if (@$opt['action']) { $action = $opt['action']; $pageaction = FmtPageName("action='\$PageUrl'", $pagename); } else $pageaction = "action='\$ScriptUrl'"; if ($action=='posteform') $pageaction = ''; elseif ($action==$SaveEformAction) { $pageaction = "action='\$PageUrl'"; if (PageExists($pagename)) { $editing = true; SDV($FormValuesFunction, 'FormValues'); $fve = $FormValuesFunction($pagename,$f,'edit'); foreach ($fve as $k => $v) $$k = $v; } else $FmtPV['$LastModified'] = '$GLOBALS["CurrentTime"]'; } elseif ($action=='neweform') $action = 'posteform'; $FmtPV['$PatchTitle'] = 'str_replace("&","&",FmtPageTitle(@$page["title"], $name, 0))'; $FmtPV['$PatchTitlespaced'] = 'str_replace("&","&",FmtPageTitle(@$page["title"], $name, 1))'; $opt = array_merge(@$_REQUEST, (array)$opt); $out[] = "
".(($editing) ? "" : '').""; for($i=0;$i"; $p = @$FormTitleFmt[$i]['prompt'] ? @$FormTitleFmt[$i]['prompt'] : $f[$i]['eprompt']; if ($f[$i]['etitle']) $p = "$p"; if (@$fe[$f[$i]['element']]) $p.= ' ('.$fe[$f[$i]['element']].')'; $out[] = ""; if (@$FormTitleFmt[$i]['help']) $out[] = ""; } $out[] = "
$p:"; if ($f[$i]['etype']=='' || preg_match('/^".*?"$/',$f[$i]['etype'])) $f[$i]['etype'] .= '=54'; elseif (preg_match('/^(".*?"|title)?!(=\\d+)?$/',$f[$i]['etype'],$m)) { if ($editing) SDV($opt[$f[$i]['element']], (($m[1]=='title') ? DeTitle($fv[$f[$i]['element']]) : $fv[$f[$i]['element']])); else $f[$i]['etype'] = $m[1].($m[2] ? $m[2] : '=54'); } if (preg_match('/^(\\*)?author(plain)?(?:=(\\d+))?$/',$f[$i]['etype'],$m)) { $col = ($m[3]) ? $m[3] : 32; if ($editing) $author = ($m[2]) ? $fv[$f[$i]['element']] : DeLink($fv[$f[$i]['element']]); elseif ($m[1]=='*') $author = FmtPageName('$Author',$pagename); else $author = ''; $out[] = ""; } elseif (isset($opt[$f[$i]['element']])) { $v = $opt[$f[$i]['element']]; if (preg_match('/^([^\\|]+)\\|(.*?)$/',$v,$m)) { $vv = $m[1]; $vp = $m[2]; } else { $vp = $v; $vv = $v; } $vv = str_replace("'",''',$vv); $out[] = "$vp"; } elseif (preg_match('/^(?:"(.*?)")?=(\\d+)$/',$f[$i]['etype'],$m)) { $default = str_replace(array("'",'$Title'),array(''','$PatchTitle'),$m[1]); $col = $m[2]; $out[] = ""; } elseif (preg_match('/^title(?:=(\\d+))?$/', $f[$i]['etype'], $m)) { $default = (isset($_REQUEST['title'])) ? str_replace("'",''',$_REQUEST['title']) : ''; $col = ($m[1]) ? $m[1] : 54; $out[] = ""; } elseif (preg_match('/^text(?:=(\\d+)(?:\\*(\\d+))?)?\\s*(.*?)$/', $f[$i]['etype'], $m)) { $row = ($m[1]) ? $m[1] : 10; $col = ($m[2]) ? $m[2] : 54; $out[] = ""; } elseif (preg_match('/^(\\d+)(?:\\*(\\d+))?$/',$f[$i]['etype'],$m)) { $col = ($m[2]) ? $m[2] : 40; $rows = ($editing) ? explode("\\\\\n",$fv[$f[$i]['element']]) : array(); for($j=0;$j<$m[1];$j++) { $rows[$j] = (isset($rows[$j])) ? " value='".$rows[$j]."'" : ''; $out[] = ""; } } elseif (preg_match('/^group(?:=(\\d+))?(?:\\s+`?(.*?))$/',$f[$i]['etype'],$m)) { $col = ($m[1]) ? $m[1] : 32; $out[] = "$m[2] "; } elseif (preg_match('/^email(?:"(.*?)")?(?:=(\\d+)(?:\\s+(\\d+))?)?$/',$f[$i]['etype'],$m)) { $col = ($m[2]) ? $m[2] : 40; $col2= ($m[3]) ? $m[3] : 16; $em = ($editing) ? DeMail($fv[$f[$i]['element']]) : array('','',($m[1] ? " value='".$m[1]."'" : '')); $out[] = "
". "@". ""; } elseif (preg_match('/^(\\*)?date$/',$f[$i]['etype'],$m)) { if ($editing) $date = ($fv[$f[$i]['element']]) ? $fv[$f[$i]['element']] : 'yyyy-mm-dd'; elseif ($m[1]=='*') $date = strftime('%Y-%m-%d',time()); else $date = 'yyyy-mm-dd'; if ($date == 'yyyy-mm-dd') { $v = strftime('%Y-%m-%d',time()); $check= "   $v"; } else $check = ''; $y = substr($date,0,4); $m = substr($date,5,2); $d = substr($date,8,2); $out[] = " - ". " - ". "$check"; } elseif (preg_match('/^category(?:=(\\d+))?$/',$f[$i]['etype'],$m)) { $col = ($m[1]) ? $m[1] : 54; if ($editing) $category = DeLink($fv[$f[$i]['element']]); else $category = ''; $out[] = ""; } elseif (preg_match('/^caption(?:=(\\d+))?$/',$f[$i]['etype'],$m)) { $col = ($m[1]) ? $m[1] : 32; $cap = ($editing) ? DeCaption($fv[$f[$i]['element']]) : array('',''); $out[] = "".' "'. "".'"'; } elseif (preg_match('/^(\\*)?attach\\s*(.*?)$/',$f[$i]['etype'],$m)) { $col = 32; $out[] = "Attach: . "; if ($m[2]) { if (strstr($m[2],'|')) { $checked = false; $cv = $editing ? DeAttachExt($fv[$f[$i]['element']],$m[2]) : ''; foreach(explode('|',$m[2]) as $c) { $s=''; $c = trim($c); if ($c[0]=='*') { $c = substr($c,1); if (!$checked) $s = " checked='checked'"; $checked = true; } if ($editing) $s = ($c==$cv) ? " checked='checked'" : ''; $out[] = "$c "; } } else $out[] = $m[2]; } } elseif (preg_match('/^(\\*)?check\\s*(.*?)$/',$f[$i]['etype'],$m)) { $v = ($m[2]=='') ? 'Yes' : $m[2]; $s = ($m[1]=='*') ? " checked='checked'" : ''; if ($editing) $s = ($v==$fv[$f[$i]['element']]) ? " checked='checked'" : ''; $out[] = ""; } elseif (preg_match('/^hide\\s*\\*?(.*?)$/',$f[$i]['etype'],$m)) { $v = ($m[1]=='') ? $f[$i]['element'] : $m[1]; if (preg_match('/\\$[[:upper:]]/',$m[1])) $v = ($action=='posteform') ? str_replace('$Name','{$Name}',$m[1]) : FmtPageName($m[1],$pagename); $v = preg_replace('/(:f?para\s[^:]+:)/', '($1)', $v); if (preg_match('/^([^\\|]*)\\|(.*?)$/',$v,$m)) { $vv = $m[1]; $vp = $m[2]; } else { $vp = $v; $vv = $v; } $out[] = ($v) ? "$vp" : 'none'; } elseif (strstr($f[$i]['etype'],',')) { $out[] = ""; } elseif (strstr($f[$i]['etype'],';')) { $checked = false; foreach(explode(';',$f[$i]['etype']) as $c) { $s=''; $c = htmlspecialchars(trim($c),ENT_QUOTES,$Charset); if ($c[0]=='*') { $c = substr($c,1); if (!$checked) $s = " checked='checked'"; $checked = true; } if (preg_match('/^([^\\|]*)\\|(.*?)$/',$c,$m)) { $cv = trim($m[1]); $cp = trim($m[2]); } else { $cv = trim($c); $cp = $cv; } if ($editing) $s = ($cv==$fv[$f[$i]['element']]) ? " checked='checked'" : ''; $out[] = "$cp "; } } elseif (strstr($f[$i]['etype'],':')) { if ($f[$i]['etype'][0]=='!') { $f[$i]['etype'] = substr($f[$i]['etype'],1); if ($editing) $fv[$f[$i]['element']] = DeLink($fv[$f[$i]['element']]); } foreach(explode(':',$f[$i]['etype']) as $c) { $s=''; $c = htmlspecialchars(trim($c),ENT_QUOTES,$Charset); if ($c[0]=='*') { $c = substr($c,1); $s = " checked='checked'"; } if ($editing) $s = (strstr($fv[$f[$i]['element']],$c))?" checked='checked'":''; $out[] = "$c "; } } $out[] = "
 {$FormTitleFmt[$i]['help']}
 "; if (@$FormTitleFmt['submit']) $out[] = ""; $out[] = FmtPageName("", $pagename); if ($action!='posteform') $out[] = FmtPageName("", $pagename); $out[] = "
"; return implode("\n",$out); } function DeTitle($text) { return preg_replace("/\\n\\(:title.*?:\\)/",'',$text); } function DeLink($text) { return preg_replace('/\\[\\[([!~]|.*?\\/)/','',str_replace(']]','',$text)); } function DeMail($text) { if ($text[0]=='[') preg_match('/^\\[\\[(.*?)\\s->\\smailto:([^@]+)@([^\\]]+)\\]\\]$/', $text, $m); else preg_match('/^(.*?)\\s\\(([^@]*)@([^\\)]*)\\)$/',$text,$m); for ($j=1;$j<4;$j++) $r[] = " value='".$m[$j]."'"; return $r; } function DeAttach($text,$star,$ext) { $bra = 'Attach:'; $ket = ($ext ? '.('. str_replace('*','',$ext).')' : ''); if ($star) { $bra = "[[($bra)"; $ket = $ket . ']]'; } return str_replace($bra,'',preg_replace("/$ket$/",'',$text)); } function DeAttachExt($text,$ext) { $ket = str_replace('*','',$ext); if (preg_match("/\\.($ket)(\\]\\])?$/",$text,$m)) return $m[1]; else return ''; } function DeCaption($text) { return preg_match('/^(.*?)(?:"(.*?)")?$/',$text,$m) ? array(trim($m[1]), $m[2]) : array('', ''); } function FormData($pagename,$FormPageFmt) { global $UrlExcludeChars, $FormTitleFmt, $ChangeSummary; $f = FormFields($pagename,$FormPageFmt); for($i=0;$i mailto:$em]]" : $_REQUEST[$f[$i]['element'].'name']." ($em)"; } elseif (preg_match('/^caption(?:=(\\d+))?$/',$f[$i]['etype'],$m)) { $v = trim($_REQUEST[$f[$i]['element']]); $cap = trim($_REQUEST[$f[$i]['element'].'-cap']); if ($v) $v .= ($cap ? ' "'.$cap.'"' : ''); elseif ($cap) $v = '"'.$cap.'"'; } elseif (preg_match('/^(\\*)?attach\\s*(.*?)$/',$f[$i]['etype'],$m)) { $v = preg_replace('/\\s+/','_',trim($_REQUEST[$f[$i]['element']])); if ($v) { $bra = 'Attach:'; $ext = $_REQUEST[$f[$i]['element'].'-ext']; $ket = ($ext ? '.' . $ext : ($m[2] ? '.' . $m[2] : '')); if ($m[1]) { $bra = "[[($bra)"; $ket = $ket . ']]'; } $v = "$bra$v$ket"; } } elseif (preg_match('/^hide/',$f[$i]['etype'])) { $v = $_REQUEST[$f[$i]['element']]; } elseif (strstr($f[$i]['etype'],':')) @$v = ($f[$i]['etype'][0]=='!') ? str_replace('[[!]]','', '[[!'.implode(']], [[!',$_REQUEST[$f[$i]['element']]).']]') : implode(', ',$_REQUEST[$f[$i]['element']]); else $v = $_REQUEST[$f[$i]['element']]; $text[] = ':'.$f[$i]['eprompt'].':'.$v; } if (isset($FormTitleFmt['csum'])) { $_POST['csum'] = $_REQUEST[$FormTitleFmt['csum']]; $ChangeSummary = stripmagic($_REQUEST[$FormTitleFmt['csum']]); } return implode("\n\n",$text); } function WikiformPrompt($f,$element) { for($i=0;$i 0 && strcasecmp($haystack, $n[1]) < 0) : (strcasecmp($haystack, $needle) < 0); } function EntryListGreaterThan($haystack, $needle) { return (preg_match('/^(.*?)<(.*?)$/',$needle,$n)) ? (strcasecmp($haystack, $n[1]) > 0 && strcasecmp($haystack, $n[2]) < 0) : (strcasecmp($haystack, $needle) > 0); } function FmtEntryList($fmt,$pagename,$opt) { global $WikiFormPageFmt,$PublishWikiFormFmt,$PublishForm,$HTMLVSpace, $FmtV,$PCache,$AsSpacedFunction,$EntryListOperatorPattern, $EntryListOperatorFunction, $Charset; global $wikiform_select,$wikiform_page,$wikiform_score,$wikiform_allitems, $wikiform_lastmod,$wikiform_nomatches,$wikiform_matches,$wikiform_typeset; SDV($EntryListOperatorPattern, '[=~]|&[gl]t;'); $EntryListOperatorFunction = array( '=' => 'EntryListEquals', '~' => 'EntryListContains', '<' => 'EntryListLessThan', '>' => 'EntryListGreaterThan' ); $u = FmtPageName('$PageUrl',$pagename); $opt = array_merge($opt, @$_REQUEST); $terms = preg_split('/((?:[-+]\\*?|!|\\w+[:=])?(?:"[^"]*"|\'[^\']*\'|\\S+))/', $opt['q'],-1,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY); foreach($terms as $t) { if (trim($t)=='') continue; if (preg_match('/^([^\'":=]*)[:=]([\'"]?)(.*?)\\2$/',$t,$m)) SDV($opt[strtolower($m[1])], $m[3]); elseif (preg_match('/^([-+]\\*?|!)([[:alnum:]]+)$/',$t,$m)) $elist[strtolower($m[2])] = $m[1]; } $g = (@$opt['group']) ? $opt['group'] : FmtPageName('$Group',$pagename); $f = FormFields("$g.$g",$WikiFormPageFmt); if (@$opt['search']) { if (@$opt['value']) { if (strstr($opt['value'],',')) { $selected = false; foreach(explode(',',$opt['value']) as $c) { $s=''; $c = trim($c); if ($c[0]=='*') { $c = substr($c,1); if (!$selected) { $s = " selected='selected'"; if (!isset($_REQUEST[$opt['search']])) $_REQUEST[$opt['search']] = $opt[$opt['search']] = $c; } $selected = true; } $sel[] = ""; } $searchfor = ""; } else { $searchfor = ""; } } else $searchfor = ""; $SearchBoxFmt = "
\$SearchPrompt: ".$searchfor."
"; $FmtV['$SearchPrompt'] = WikiformPrompt($f,$opt['search']); $search = Keep(FmtPageName($SearchBoxFmt,$pagename)); if (isset($_REQUEST[$opt['search']])) $sv = $opt['search'].'='.$_REQUEST[$opt['search']].'&'; else return $search; } else $search = ''; $entrylist = ListPages("/^$g\\.\\d+$/"); $out[] = ""; $out[] = ""; $n = 0; $cols = array(); $order = @$opt['order']; $caption = ''; $s = 0; $scols= array(); $tcol = ''; $score = false; $lastmodified = false; $pagenumber = true; if ($order[0]=='-') { $otoggle = ''; $oelement = substr($order,1); } else { $otoggle = '-'; $oelement = $order; } $o = ($oelement=='name') ? $otoggle : '-'; $oeprompt = $wikiform_page; if (@$elist['page']=='!') $pagenumber = false; $out[] = Keep("" . (($pagenumber) ? "" : '')); for($i=0;$i".$f[$i]['eprompt'].''); } } if (@$elist['lastmodified']) { $lastmodified = true; if (preg_match('/^([-+])(\\*)$/',$elist['lastmodified'],$m)) $elist['lastmodified'] = $m[1]; $o = ($elist['lastmodified']=='-') ? '-' : ''; if ($oelement=='lastmodified') { $o = $otoggle; $oeprompt = $wikiform_lastmod; } if ($m[2]) $order .= ','.$o.'lastmodified'; $out[] = Keep(""); } if ($score) { $o = ($oelement=='score') ? $otoggle : '-'; if ($oelement=='score') $oeprompt = $wikiform_score; $out[] = Keep(""); } $order.= ',name'; $out[] = ''; if ($caption=='') $caption = $wikiform_allitems; $out[1] = str_replace('$Caption',"$wikiform_select $caption",$out[1]); $n = 0; $elist = array(); foreach($entrylist as $e) { $page = ReadPage($e); preg_match_all("/\n:([^:]+):([^\n\\\\]*)/","\n".$page['text'],$match); $fields = array(); $sum = 0; for($i=0;$i 'edit', 'form' => 'editeform'); $a = (@$opt['page']) ? '(?action='.$PageActions[$opt['page']].')' : ''; foreach($elist as $e) { $out[] = ''.(($pagenumber) ? '" : ''); foreach($cols as $c) { $cell = (@$e[$c]) ? $e[$c] : ' '; if ($c==$tcol) $cell = "[[{$e['name']} | $cell]]"; $out[] = ""; } if ($lastmodified) $out[] = ''; if ($score) $out[] = ''; $out[] = ''; $matches[] = $e['name']; } $out[] = '
\$Caption
". "$wikiform_page$wikiform_lastmod$wikiform_score
[['.$e['name']."$a]]$cell'.$e['lastmodfmt'].''.$e['score'].'
'; if (count($matches)) $out[]='

'.count($matches)." $wikiform_matches

"; if (@$opt['include']) $oeprompt .= '*'.MakePageName("$g.$g",$opt['include']); $FmtV['$Pages'] = implode('+',$matches); $FmtV['$PSort'] = $oeprompt; $FmtV['$Typeset'] = $wikiform_typeset; $pbutton = Keep(FmtPageName($PublishWikiFormFmt,$pagename)); if ($PublishForm==2) array_unshift($out,$pbutton); elseif ($PublishForm) $out[] = "$HTMLVSpace\n$pbutton"; return $search . ((count($matches)) ? implode("\n",$out) : "

$wikiform_nomatches ($caption)

"); } function FirstDigit($value,$shift) { return (preg_match('/^(\\d)/',$value,$m)) ? $m[1] - $shift : 0; } # this is a piece of incomprehensible Pm code for more efficient sorting function CreateOrderFunction($order) { global $CollateFunction; $code = ''; foreach(preg_split('/[\\s,|]+/',$order,-1,PREG_SPLIT_NO_EMPTY) as $o) { $r = ''; if ($o[0]=='-') { $r = '-'; $o = substr($o,1); } if (preg_match('/\\W/',$o)) continue; $code .= "\$c=$CollateFunction(@\$x['$o'],@\$y['$o']); if (\$c!=0) return $r\$c;\n"; } $code .= "return 0;\n"; return create_function('$x,$y',$code); } function FormParaText($prompts, $values, $prompt) { for($i=0;$i $v) $$k = $v; $template = RetrieveAuthPage($ViewTemplate, $auth, true, READPAGE_CURRENT); $text = $template['text']; for($i=0;$i', str_replace(array('&','"','"','$','''), array('&','"','"','$',"'"), $fv[$f[$i]['element']]), $text); $text = '(:groupheader:)'.@$text.'(:groupfooter:)'; $FmtV['$PageText'] = str_replace(array('&lt;','&gt;'), array('<','>'), MarkupToHTML($pagename,$text)); SDV($HandleBrowseFmt,array(&$PageStartFmt,'$PageText',&$PageEndFmt)); PrintFmt($pagename,$HandleBrowseFmt); } else HandleBrowse($pagename, $auth); } ?>