continue # otherwise strcmp # If this is the last element in either list, it wins $n = 0; while(true) { if($n + 1 == $an) { return -1; } if($n + 1 == $bn) { return 1; } $s = strcmp($ac[$n], $bc[$n]); if($s != 0) { return $s; } $n += 1; } } class syntax_plugin_publish extends DokuWiki_Syntax_Plugin { function getInfo(){ return publish_getInfo(); } function pattern() { return '\[APPROVALS.*?\]'; } function getType() { return 'substition'; } function getSort() { return 20; } function PType() { return 'block'; } function connectTo($mode) { $this->Lexer->addSpecialPattern($this->pattern(),$mode,'plugin_publish'); } function handle($match, $state, $pos, &$handler){ $namespace = substr($match, 11, -1); return array($match, $state, $pos, $namespace); } function render($mode, &$renderer, $data) { global $conf; if($mode == 'xhtml'){ $ns = cleanID(getNS($data[3] . ":dummy")); $dir = $conf['datadir'] . '/' . str_replace(':', '/', $ns); $pages = array(); search($pages, $dir, 'search_helper', array($ns, $this->getConf('apr_namespaces'))); if(count($pages) == 0) { $renderer->doc .= '

' . $this->getLang('apr_p_none') . '

'; return true; } usort($pages, pagesorter); # Output Table $renderer->doc .= ''; $renderer->doc .= ''; $renderer->doc .= ''; $renderer->doc .= ''; $renderer->doc .= ''; $working_ns = null; foreach($pages as $page) { # $page: 0 -> pagename, 1 -> approval metadata, 2 -> last changed date $this_ns = getNS($page[0]); if($this_ns != $working_ns) { $name_ns = $this_ns; if($this_ns == '') { $name_ns = 'root'; } $renderer->doc .= ''; $working_ns = $this_ns; } $updated = '' . date('d/m/Y H:i', $page[2]) . ''; if($page[1] == null || count($page[1]) == 0) { # Has never been approved $approved = ''; }else{ $keys = array_keys($page[1]); sort($keys); $last = $keys[count($keys)-1]; $approved .= sprintf($this->getLang('apr_p_approved'), $page[1][$last][1], wl($page[0], 'rev=' . $last), date('d/m/Y H:i', $last)); if($last == $page[2]) { $updated = 'Unchanged'; } //shouldn't be possible: //the search_helper should have //excluded this } $renderer->doc .= ''; #$renderer->doc .= ''; } $renderer->doc .= '
' . $this->getLang('apr_p_hdr_page') . '' . $this->getLang('apr_p_hdr_previous') . '' . $this->getLang('apr_p_hdr_updated') . '
'; $renderer->doc .= $name_ns; $renderer->doc .= '
'; $renderer->doc .= $page[0]; $renderer->doc .= ''; $renderer->doc .= $approved; $renderer->doc .= ''; $renderer->doc .= $updated; $renderer->doc .= '
' . print_r($page, true) . '
'; return true; } return false; } } ?>