function macro_WantedPages($formatter, $value = '') { global $DBInfo; $pages = $DBInfo->getPageLists(); $pagelinks = $formatter->pagelinks; // save $save = $formatter->sister_on; $formatter->sister_on = 0; $cache = new Cache_text("pagelinks"); foreach ($pages as $page) { $dum = ''; $p = new WikiPage($page); $f = new Formatter($p); $pi = $f->page->get_instructions($dum); if (in_array($pi['#format'], array('wiki', 'monimarkup'))) { continue; } $links = $f->get_pagelinks(); if ($links) { $lns =& $links; foreach ($lns as $link) { if (!$link or $DBInfo->hasPage($link)) { continue; } if ($link and !$wants[$link]) { $wants[$link] = "[\"{$page}\"]"; } else { $wants[$link] .= " [\"" . $page . "\"]"; } } } } $formatter->pagelinks = $pagelinks; // save $formatter->sister_on = $save; if (!count($wants)) { return ''; } $pagelinks = $formatter->pagelinks; // save $formatter->sister_on = 0; asort($wants); $out = "<ul>\n"; while (list($name, $owns) = each($wants)) { $owns = str_replace('<', '<', $owns); $nowns = preg_replace_callback("/(" . $formatter->wordrule . ")/", array(&$formatter, 'link_repl'), $owns); $out .= "<li>" . $formatter->link_repl($name, htmlspecialchars($name)) . ": {$nowns}</li>"; } $out .= "</ul>\n"; $formatter->sister_on = $save; $formatter->pagelinks = $pagelinks; // save return $out; }
function macro_WantedPages($formatter, $value = '', $params = array()) { global $DBInfo; // set as dynamic macro if ($formatter->_macrocache and empty($params['call'])) { return $formatter->macro_cache_repl('WantedPages', $value); } // set default page_limit if (empty($params['limit'])) { $params['limit'] = 100; } $offset = 0; if (!empty($params['offset'])) { if (is_numeric($params['offset']) and $params['offset'] > 0) { $offset = $params['offset']; } } $param = array(); if (!empty($offset)) { $param['offset'] = $offset; } $param['limit'] = $params['limit']; $pages = $DBInfo->getPageLists($param); $pagelinks = $formatter->pagelinks; // save $save = $formatter->sister_on; $formatter->sister_on = 0; $cache = new Cache_text('pagelinks'); $j = 0; foreach ($pages as $page) { $dum = ''; $p = new WikiPage($page); $f = new Formatter($p); $pi = $f->page->get_instructions($dum); if (!in_array($pi['#format'], array('wiki', 'monimarkup'))) { continue; } $links = $f->get_pagelinks(); if ($links) { $lns =& $links; foreach ($lns as $link) { if (empty($link) or $DBInfo->hasPage($link)) { continue; } if (empty($wants[$link])) { $wants[$link] = array('[["' . $page . '"]]'); } else { $wants[$link][] = '[["' . $page . '"]]'; } } } $j++; } if (!count($wants)) { return ''; } $pagelinks = $formatter->pagelinks; // save $formatter->sister_on = 0; asort($wants); $out = "<ul>\n"; $old_owns = null; foreach ($wants as $name => $owns) { if ($old_owns != $owns) { $olinks = array_map(array($formatter, 'link_repl'), $owns); $olink = implode(', ', $olinks); if ($old_owns) { $out .= "</ul>\n</li>\n"; } $out .= "<li>\n" . $olink . '<ul>'; $old_owns = $owns; } $out .= '<li>' . $formatter->link_repl($name, _html_escape($name)) . '</li>' . "\n"; } $out .= "</ul>\n</li>\n</ul>\n"; $out .= $formatter->link_to("?action=wantedpages&offset={$j}", _("Show next page")); $formatter->sister_on = $save; $formatter->pagelinks = $pagelinks; // restore return $out; }