]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - _darcs/pristine/actions/featured.php
move opening brace of class declaration to next line
[quix0rs-gnu-social.git] / _darcs / pristine / actions / featured.php
1 <?php
2 /*
3  * Laconica - a distributed open-source microblogging tool
4  * Copyright (C) 2008, Controlez-Vous, Inc.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program.     If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 if (!defined('LACONICA')) { exit(1); }
21
22 require_once(INSTALLDIR.'/lib/stream.php');
23 require_once(INSTALLDIR.'/lib/profilelist.php');
24
25 class FeaturedAction extends StreamAction
26 {
27
28     function handle($args)
29     {
30         parent::handle($args);
31
32         $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
33
34         common_show_header(_('Featured users'),
35                            array($this, 'show_header'), null,
36                            array($this, 'show_top'));
37
38         $this->show_notices($page);
39
40         common_show_footer();
41     }
42
43     function show_top()
44     {
45         $instr = $this->get_instructions();
46         $output = common_markup_to_html($instr);
47         common_element_start('div', 'instructions');
48         common_raw($output);
49         common_element_end('div');
50         $this->public_views_menu();
51     }
52
53     function show_header()
54     {
55     }
56
57     function get_instructions()
58     {
59         return _('Featured users');
60     }
61
62     function show_notices($page)
63     {
64
65         // XXX: Note I'm doing it this two-stage way because a raw query
66         // with a JOIN was *not* working. --Zach
67
68         $featured_nicks = common_config('nickname', 'featured');
69
70         if (count($featured_nicks) > 0) {
71
72             $quoted = array();
73
74             foreach ($featured_nicks as $nick) {
75                 $quoted[] = "'$nick'";
76             }
77
78             $user = new User;
79             $user->whereAdd(sprintf('nickname IN (%s)', implode(',', $quoted)));
80             $user->limit(($page - 1) * PROFILES_PER_PAGE, PROFILES_PER_PAGE + 1);
81             $user->orderBy('user.nickname ASC');
82
83             $user->find();
84
85             $profile_ids = array();
86
87             while ($user->fetch()) {
88                 $profile_ids[] = $user->id;
89             }
90
91             $profile = new Profile;
92             $profile->whereAdd(sprintf('profile.id IN (%s)', implode(',', $profile_ids)));
93             $profile->orderBy('nickname ASC');
94
95             $cnt = $profile->find();
96
97             if ($cnt > 0) {
98                 $featured = new ProfileList($profile);
99                 $featured->show_list();
100             }
101
102             $profile->free();
103
104             common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, $page, 'featured');
105         }
106     }
107
108 }