2 rcs_id('$Id: BackLinks.php,v 1.7 2002-01-21 06:55:47 dairiki Exp $');
5 class WikiPlugin_BackLinks
12 function getDescription () {
13 return sprintf(_("Get BackLinks for %s"),'[pagename]');
16 function getDefaultArguments() {
17 // FIXME: how to exclude multiple pages?
18 return array('exclude' => '',
25 // Currently only info=false or info=hits works (I don't think
26 // anything else would be useful anyway).
28 function run($dbi, $argstr, $request) {
29 $this->_args = $this->getArgs($argstr, $request);
30 extract($this->_args);
34 $p = $dbi->getPage($page);
35 $backlinks = $p->getLinks();
38 $list = $this->_info_listing($backlinks);
40 $list = $this->_plain_listing($backlinks);
46 $pagelink = $Theme->linkExistingWikiWord($page);
49 $head = fmt("These pages link to %s:", $pagelink);
51 $head = fmt("No pages link to %s.", $pagelink);
53 $head = HTML::p($head);
55 return array($head, $list);
58 function _plain_listing ($backlinks) {
59 extract($this->_args);
63 while ($backlink = $backlinks->next()) {
64 $name = $backlink->getName();
65 if ($exclude && $name == $exclude)
67 if (!$include_self && $name == $page)
69 $ul->pushContent(HTML::li(_LinkWikiWord($name)));
75 function _info_listing ($backlinks) {
76 extract($this->_args);
78 $tab = HTML::table(array('cellpadding' => 0,
81 $tab->pushContent($this->_tr(HTML::u(_(ucfirst($info))),
82 HTML::u(_("Page Name"))));
84 while ($backlink = $backlinks->next()) {
85 $name = $backlink->getName();
86 if ($exclude && $name == $exclude)
88 if (!$include_self && $name == $page)
90 $tab->pushContent($this->_tr($backlink->get($info),
91 _LinkWikiWord($name)));
94 return $n ? HTML::blockquote($tab) : '';
98 function _tr ($col1, $col2) {
99 return HTML::tr(HTML::td(array('align' => 'right'),
100 $col1, new RawXml(' ')),
101 HTML::td(new RawXml(' '), $col2));
114 // c-hanging-comment-ender-p: nil
115 // indent-tabs-mode: nil