]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/plugin/PopularTags.php
include [all] Include and file path should be devided with single space. File path...
[SourceForge/phpwiki.git] / lib / plugin / PopularTags.php
1 <?php // -*-php-*-
2
3 /*
4  * Copyright 2007 Reini Urban
5  *
6  * This file is part of PhpWiki.
7  *
8  * PhpWiki is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * PhpWiki is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with PhpWiki; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21  */
22
23 /* Usage:
24  *   <<PopularTags >>
25  */
26
27 require_once 'lib/PageList.php';
28
29 class WikiPlugin_PopularTags
30 extends WikiPlugin
31 {
32     function getName () {
33         return _("PopularTags");
34     }
35
36     function getDescription () {
37         return _("List the most popular tags.");
38     }
39
40     function getDefaultArguments() {
41         return array('pagename' => '[pagename]',
42                      'limit'    => 10,
43                      'mincount' => 5,
44                      'noheader' => 0,
45                     );
46     }
47
48     function run($dbi, $argstr, &$request, $basepage) {
49             $args = $this->getArgs($argstr, $request);
50         extract($args);
51
52         $maincat = $dbi->getPage(_("CategoryCategory"));
53         $bi = $maincat->getBackLinks(false);
54         $bl = array();
55         while ($b = $bi->next()) {
56             $name = $b->getName();
57             if (preg_match("/^"._("Template")."/", $name)) continue;
58             $pages = $b->getBackLinks(false);
59             $bl[] = array('name' => $name,
60                           'count' => $pages->count());
61         }
62
63         usort($bl, 'cmp_by_count');
64         $html = HTML::ul(); $i = 0;
65         foreach ($bl as $b) {
66             $i++;
67             $name  = $b['name'];
68             $count = $b['count'];
69             if ($count < $mincount) break;
70             if ($i > $limit) break;
71             $wo = preg_replace("/^("._("Category")."|"
72                                ._("Topic").")/", "", $name);
73             $wo = HTML(HTML::span($wo),HTML::raw("&nbsp;"),HTML::small("(".$count.")"));
74             $link = WikiLink($name, 'auto', $wo);
75             $html->pushContent(HTML::li($link));
76         }
77         return $html;
78     }
79 }
80
81 // get list of categories sorted by number of backlinks
82 function cmp_by_count($a, $b) {
83      if ($a['count'] == $b['count']) return 0;
84      return $a['count'] < $b['count'] ? 1 : -1;
85 }
86
87 // Local Variables:
88 // mode: php
89 // tab-width: 8
90 // c-basic-offset: 4
91 // c-hanging-comment-ender-p: nil
92 // indent-tabs-mode: nil
93 // End: