]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/plugin/AllUsers.php
function run: @return mixed
[SourceForge/phpwiki.git] / lib / plugin / AllUsers.php
1 <?php
2
3 /*
4  * Copyright 2002,2004 $ThePhpWikiProgrammingTeam
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 require_once 'lib/PageList.php';
24
25 /**
26  * Based on AllPages and WikiGroup.
27  *
28  * We list all users,
29  * either homepage users (prefs stored in a page),
30  * users with db prefs and
31  * externally authenticated users with a db users table, if auth_user_exists is defined.
32  */
33 class WikiPlugin_AllUsers
34     extends WikiPlugin
35 {
36     function getDescription()
37     {
38         return _("List all once authenticated users.");
39     }
40
41     function getDefaultArguments()
42     {
43         return array_merge
44         (
45             PageList::supportedArgs(),
46             array('noheader' => false,
47                 'include_empty' => true
48             ));
49     }
50
51     // info arg allows multiple columns
52     // info=mtime,hits,summary,version,author,locked,minor,markup or all
53     // exclude arg allows multiple pagenames exclude=WikiAdmin,.SecretUser
54     //
55     // include_empty shows also users which stored their preferences,
56     // but never saved their homepage
57     //
58     // sortby: [+|-] pagename|mtime|hits
59
60     /**
61      * @param WikiDB $dbi
62      * @param string $argstr
63      * @param WikiRequest $request
64      * @param string $basepage
65      * @return mixed
66      */
67     function run($dbi, $argstr, &$request, $basepage)
68     {
69         $args = $this->getArgs($argstr, $request);
70
71         extract($args);
72
73         $group = $request->getGroup();
74         if (method_exists($group, '_allUsers')) {
75             $allusers = $group->_allUsers();
76         } else {
77             $allusers = array();
78         }
79         $args['count'] = count($allusers);
80         // deleted pages show up as version 0.
81         $pagelist = new PageList($info, $exclude, $args);
82         if (!$noheader)
83             $pagelist->setCaption(_("Authenticated users on this wiki (%d total):"));
84         if ($include_empty and empty($info))
85             $pagelist->_addColumn('version');
86         list($offset, $pagesize) = $pagelist->limit($args['limit']);
87         if (!$pagesize) {
88             $pagelist->addPageList($allusers);
89         } else {
90             for ($i = $offset; $i < $offset + $pagesize - 1; $i++) {
91                 if ($i >= $args['count']) break;
92                 $pagelist->addPage(trim($allusers[$i]));
93             }
94         }
95         return $pagelist;
96     }
97 }
98
99 // Local Variables:
100 // mode: php
101 // tab-width: 8
102 // c-basic-offset: 4
103 // c-hanging-comment-ender-p: nil
104 // indent-tabs-mode: nil
105 // End: