]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/plugin/MostPopular.php
getName should not translate
[SourceForge/phpwiki.git] / lib / plugin / MostPopular.php
1 <?php
2
3 /*
4  * Copyright 1999, 2000, 2001, 2002 $ThePhpWikiProgrammingTeam
5  * Copyright 2009 Marc-Etienne Vargenau, Alcatel-Lucent
6  *
7  * This file is part of PhpWiki.
8  *
9  * PhpWiki is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * PhpWiki is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License along
20  * with PhpWiki; if not, write to the Free Software Foundation, Inc.,
21  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22  */
23
24 require_once 'lib/PageList.php';
25
26 class WikiPlugin_MostPopular
27     extends WikiPlugin
28 {
29     function getDescription()
30     {
31         return _("List the most popular pages.");
32     }
33
34     function getDefaultArguments()
35     {
36         return array_merge
37         (
38             PageList::supportedArgs(),
39             array('pagename' => '[pagename]', // hackish
40                 //'exclude'  => '',
41                 'limit' => 20, // limit <0 returns least popular pages
42                 'noheader' => 0,
43                 'sortby' => '-hits',
44                 'info' => false,
45                 //'paging'   => 'auto'
46             ));
47     }
48
49     // info arg allows multiple columns
50     // info=mtime,hits,summary,version,author,locked,minor
51     // exclude arg allows multiple pagenames exclude=HomePage,RecentChanges
52     // sortby: only pagename or hits. mtime not!
53
54     function run($dbi, $argstr, &$request, $basepage)
55     {
56         $args = $this->getArgs($argstr, $request);
57         extract($args);
58         if (strstr($sortby, 'mtime')) {
59             trigger_error(_("sortby=mtime not supported with MostPopular"),
60                 E_USER_WARNING);
61             $sortby = '';
62         }
63         $columns = $info ? explode(",", $info) : array();
64         array_unshift($columns, 'hits');
65
66         if (!$request->getArg('count')) {
67             //$args['count'] = $dbi->numPages(false,$exclude);
68             $allpages = $dbi->mostPopular(0, $sortby);
69             $args['count'] = $allpages->count();
70         } else {
71             $args['count'] = $request->getArg('count');
72         }
73         //$dbi->touch();
74         $pages = $dbi->mostPopular($limit, $sortby);
75         $pagelist = new PageList($columns, $exclude, $args);
76         while ($page = $pages->next()) {
77             $hits = $page->get('hits');
78             // don't show pages with no hits if most popular pages wanted
79             if ($hits == 0 && $limit > 0) {
80                 break;
81             }
82             $pagelist->addPage($page);
83         }
84         $pages->free();
85
86         if (!$noheader) {
87             if ($limit > 0) {
88                 $pagelist->setCaption(fmt("The %d most popular pages of this wiki:", $limit));
89             } elseif ($limit < 0) {
90                 $pagelist->setCaption(fmt("The %d least popular pages of this wiki:", -$limit));
91             } else {
92                 $pagelist->setCaption(_("Visited pages on this wiki, ordered by popularity:"));
93             }
94         }
95
96         return $pagelist;
97     }
98 }
99
100 // Local Variables:
101 // mode: php
102 // tab-width: 8
103 // c-basic-offset: 4
104 // c-hanging-comment-ender-p: nil
105 // indent-tabs-mode: nil
106 // End: