]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - actions/oldschoolsettings.php
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
[quix0rs-gnu-social.git] / actions / oldschoolsettings.php
1 <?php
2 /**
3  * StatusNet - the distributed open-source microblogging tool
4  * Copyright (C) 2011, StatusNet, Inc.
5  *
6  * Settings panel for old-school UI
7  * 
8  * PHP version 5
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Affero General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Affero General Public License for more details.
19  *
20  * You should have received a copy of the GNU Affero General Public License
21  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22  *
23  * @category  Oldschool
24  * @package   StatusNet
25  * @author    Evan Prodromou <evan@status.net>
26  * @copyright 2011 StatusNet, Inc.
27  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
28  * @link      http://status.net/
29  */
30
31 if (!defined('STATUSNET')) {
32     // This check helps protect against security problems;
33     // your code file can't be executed directly from the web.
34     exit(1);
35 }
36
37 /**
38  * Old-school settings
39  *
40  * @category  Oldschool
41  * @package   StatusNet
42  * @author    Evan Prodromou <evan@status.net>
43  * @copyright 2011 StatusNet, Inc.
44  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
45  * @link      http://status.net/
46  */
47
48 class OldschoolsettingsAction extends SettingsAction
49 {
50     /**
51      * Title of the page
52      *
53      * @return string Title of the page
54      */
55     function title()
56     {
57         // TRANS: Page title for profile settings.
58         return _('Old school UI settings');
59     }
60
61     /**
62      * Instructions for use
63      *
64      * @return instructions for use
65      */
66     function getInstructions()
67     {
68         // TRANS: Usage instructions for profile settings.
69         return _('If you like it "the old way", you can set that here.');
70     }
71
72     /**
73      * For initializing members of the class.
74      *
75      * @param array $argarray misc. arguments
76      *
77      * @return boolean true
78      */
79
80     function prepare($argarray)
81     {
82         if (!common_config('oldschool', 'enabled')) {
83             throw new ClientException("Old-school settings not enabled.");
84         }
85         parent::prepare($argarray);
86         return true;
87     }
88
89     /**
90      * Handler method
91      *
92      * @param array $argarray is ignored since it's now passed in in prepare()
93      *
94      * @return void
95      */
96
97     function handlePost()
98     {
99         $user = common_current_user();
100
101         $osp = Old_school_prefs::staticGet('user_id', $user->id);
102         $orig = null;
103
104         if (!empty($osp)) {
105             $orig = clone($osp);
106         } else {
107             $osp = new Old_school_prefs();
108             $osp->user_id = $user->id;
109             $osp->created = common_sql_now();
110         }
111
112         $osp->stream_mode_only  = $this->boolean('stream_mode_only');
113         $osp->conversation_tree = $this->boolean('conversation_tree');
114         $osp->stream_nicknames  = $this->boolean('stream_nicknames');
115         $osp->modified          = common_sql_now();
116
117         if (!empty($orig)) {
118             $osp->update($orig);
119         } else {
120             $osp->insert();
121         }
122
123         // TRANS: Confirmation shown when user profile settings are saved.
124         $this->showForm(_('Settings saved.'), true);
125
126         return;
127     }
128
129     function showContent()
130     {
131         $user = common_current_user();
132         $form = new OldSchoolForm($this, $user);
133         $form->show();
134     }
135 }
136
137 class OldSchoolForm extends Form
138 {
139     var $user;
140
141     function __construct($out, $user)
142     {
143         parent::__construct($out);
144         $this->user = $user;
145     }
146
147     /**
148      * Visible or invisible data elements
149      *
150      * Display the form fields that make up the data of the form.
151      * Sub-classes should overload this to show their data.
152      *
153      * @return void
154      */
155
156     function formData()
157     {
158         $this->elementStart('fieldset');
159         $this->elementStart('ul', 'form_data');
160         $this->elementStart('li');
161         $this->checkbox('stream_mode_only', _('Only stream mode (no conversations) in timelines'),
162                         $this->user->streamModeOnly());
163         $this->elementEnd('li');
164         $this->elementStart('li');
165         $this->checkbox('conversation_tree', _('Show conversation page as hierarchical trees'),
166                         $this->user->conversationTree());
167         $this->elementEnd('li');
168         $this->elementStart('li');
169         $this->checkbox('stream_nicknames', _('Show nicknames (not full names) in timelines'),
170                         $this->user->streamNicknames());
171         $this->elementEnd('li');
172         $this->elementEnd('fieldset');
173         $this->elementEnd('ul');
174     }
175
176     /**
177      * Buttons for form actions
178      *
179      * Submit and cancel buttons (or whatever)
180      * Sub-classes should overload this to show their own buttons.
181      *
182      * @return void
183      */
184
185     function formActions()
186     {
187         $this->submit('submit', _('Save'));
188     }
189
190     /**
191      * ID of the form
192      *
193      * Should be unique on the page. Sub-classes should overload this
194      * to show their own IDs.
195      *
196      * @return int ID of the form
197      */
198
199     function id()
200     {
201         return 'form_oldschool';
202     }
203
204     /**
205      * Action of the form.
206      *
207      * URL to post to. Should be overloaded by subclasses to give
208      * somewhere to post to.
209      *
210      * @return string URL to post to
211      */
212
213     function action()
214     {
215         return common_local_url('oldschoolsettings');
216     }
217
218     /**
219      * Class of the form. May include space-separated list of multiple classes.
220      *
221      * @return string the form's class
222      */
223
224     function formClass()
225     {
226         return 'form_settings';
227     }
228 }