]> git.agnieray.net Git - galette.git/blob - galette/lib/Galette/Filters/MembersList.php
Remove 'svn' lines
[galette.git] / galette / lib / Galette / Filters / MembersList.php
1 <?php
2
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5 /**
6 * Members list filters and paginator
7 *
8 * PHP version 5
9 *
10 * Copyright © 2009-2014 The Galette Team
11 *
12 * This file is part of Galette (http://galette.tuxfamily.org).
13 *
14 * Galette is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * Galette is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
26 *
27 * @category Filters
28 * @package Galette
29 *
30 * @author Johan Cwiklinski <johan@x-tnd.be>
31 * @copyright 2009-2014 The Galette Team
32 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
33 * @link http://galette.tuxfamily.org
34 * @since march, 3rd 2009
35 */
36
37 namespace Galette\Filters;
38
39 use Analog\Analog;
40 use Galette\Core\Pagination;
41 use Galette\Entity\Group;
42 use Galette\Repository\Members;
43
44 /**
45 * Members list filters and paginator
46 *
47 * @name MembersList
48 * @category Filters
49 * @package Galette
50 *
51 * @author Johan Cwiklinski <johan@x-tnd.be>
52 * @copyright 2009-2014 The Galette Team
53 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
54 * @link http://galette.tuxfamily.org
55 */
56
57 class MembersList extends Pagination
58 {
59 //filters
60 private $_filter_str;
61 private $_field_filter;
62 private $_membership_filter;
63 private $_filter_account;
64 private $_email_filter;
65 private $_group_filter;
66
67 private $_selected;
68 private $_unreachable;
69
70 protected $query;
71
72 protected $memberslist_fields = array(
73 'filter_str',
74 'field_filter',
75 'membership_filter',
76 'filter_account',
77 'email_filter',
78 'group_filter',
79 'selected',
80 'unreachable',
81 'query'
82 );
83
84 /**
85 * Default constructor
86 */
87 public function __construct()
88 {
89 $this->reinit();
90 }
91
92 /**
93 * Returns the field we want to default set order to
94 *
95 * @return string field name
96 */
97 protected function getDefaultOrder()
98 {
99 return 'nom_adh';
100 }
101
102 /**
103 * Reinit default parameters
104 *
105 * @return void
106 */
107 public function reinit()
108 {
109 global $preferences;
110
111 parent::reinit();
112 $this->_filter_str = null;
113 $this->_field_filter = null;
114 $this->_membership_filter = null;
115 $this->_filter_account = $preferences->pref_filter_account;
116 $this->_email_filter = Members::FILTER_DC_EMAIL;
117 $this->_group_filter = null;
118 $this->_selected = array();
119 }
120
121 /**
122 * Global getter method
123 *
124 * @param string $name name of the property we want to retrive
125 *
126 * @return object the called property
127 */
128 public function __get($name)
129 {
130 if (in_array($name, $this->pagination_fields)) {
131 return parent::__get($name);
132 } else {
133 if (in_array($name, $this->memberslist_fields)) {
134 if ($name === 'query') {
135 return $this->$name;
136 } else {
137 $name = '_' . $name;
138 return $this->$name;
139 }
140 } else {
141 Analog::log(
142 '[MembersList] Unable to get proprety `' . $name . '`',
143 Analog::WARNING
144 );
145 }
146 }
147 }
148
149 /**
150 * Global setter method
151 *
152 * @param string $name name of the property we want to assign a value to
153 * @param object $value a relevant value for the property
154 *
155 * @return void
156 */
157 public function __set($name, $value)
158 {
159 if (in_array($name, $this->pagination_fields)) {
160 parent::__set($name, $value);
161 } else {
162 Analog::log(
163 '[MembersList] Setting property `' . $name . '`',
164 Analog::DEBUG
165 );
166
167 switch ($name) {
168 case 'selected':
169 case 'unreachable':
170 if (is_array($value)) {
171 $name = '_' . $name;
172 $this->$name = $value;
173 } elseif ($value !== null) {
174 Analog::log(
175 '[MembersList] Value for property `' . $name .
176 '` should be an array (' . gettype($value) . ' given)',
177 Analog::WARNING
178 );
179 }
180 break;
181 case 'filter_str':
182 $name = '_' . $name;
183 $this->$name = $value;
184 break;
185 case 'field_filter':
186 case 'membership_filter':
187 case 'filter_account':
188 if (is_numeric($value)) {
189 $name = '_' . $name;
190 $this->$name = $value;
191 } elseif ($value !== null) {
192 Analog::log(
193 '[MembersList] Value for property `' . $name .
194 '` should be an integer (' . gettype($value) . ' given)',
195 Analog::WARNING
196 );
197 }
198 break;
199 case 'email_filter':
200 switch ($value) {
201 case Members::FILTER_DC_EMAIL:
202 case Members::FILTER_W_EMAIL:
203 case Members::FILTER_WO_EMAIL:
204 $this->_email_filter = $value;
205 break;
206 default:
207 Analog::log(
208 '[MembersList] Value for email filter should be either ' .
209 Members::FILTER_DC_EMAIL . ', ' .
210 Members::FILTER_W_EMAIL . ' or ' .
211 Members::FILTER_WO_EMAIL . ' (' . $value . ' given)',
212 Analog::WARNING
213 );
214 break;
215 }
216 break;
217 case 'group_filter':
218 if (is_numeric($value) && $value > 0) {
219 //check group existence
220 $g = new Group();
221 $res = $g->load($value);
222 if ($res === true) {
223 $this->_group_filter = $value;
224 } else {
225 Analog::log(
226 'Group #' . $value . ' does not exists!',
227 Analog::WARNING
228 );
229 }
230 } elseif ($value !== null && $value !== '0') {
231 Analog::log(
232 '[MembersList] Value for group filter should be an '
233 . 'integer (' . gettype($value) . ' given)',
234 Analog::WARNING
235 );
236 }
237 break;
238 case 'query':
239 $this->$name = $value;
240 break;
241 default:
242 Analog::log(
243 '[MembersList] Unable to set proprety `' . $name . '`',
244 Analog::WARNING
245 );
246 break;
247 }
248 }
249 }
250
251 /**
252 * Set commons filters for templates
253 *
254 * @param Preferences $prefs Preferences instance
255 * @param Smarty $view Smarty template reference
256 *
257 * @return void
258 */
259 public function setViewCommonsFilters($prefs, \Smarty $view)
260 {
261 $filter_options = array(
262 Members::FILTER_NAME => _T("Name"),
263 Members::FILTER_COMPANY_NAME => _T("Company name"),
264 Members::FILTER_ADDRESS => _T("Address"),
265 Members::FILTER_MAIL => _T("Email,URL,IM"),
266 Members::FILTER_JOB => _T("Job"),
267 Members::FILTER_INFOS => _T("Infos")
268 );
269
270 if ($prefs->pref_show_id) {
271 $filter_options[Members::FILTER_NUMBER] = _T("Member number");
272 }
273
274 $view->assign(
275 'field_filter_options',
276 $filter_options
277 );
278
279 $view->assign(
280 'membership_filter_options',
281 array(
282 Members::MEMBERSHIP_ALL => _T("All members"),
283 Members::MEMBERSHIP_UP2DATE => _T("Up to date members"),
284 Members::MEMBERSHIP_NEARLY => _T("Close expiries"),
285 Members::MEMBERSHIP_LATE => _T("Latecomers"),
286 Members::MEMBERSHIP_NEVER => _T("Never contributed"),
287 Members::MEMBERSHIP_STAFF => _T("Staff members"),
288 Members::MEMBERSHIP_ADMIN => _T("Administrators"),
289 Members::MEMBERSHIP_NONE => _T("Non members")
290 )
291 );
292
293 $view->assign(
294 'filter_accounts_options',
295 array(
296 Members::ALL_ACCOUNTS => _T("All accounts"),
297 Members::ACTIVE_ACCOUNT => _T("Active accounts"),
298 Members::INACTIVE_ACCOUNT => _T("Inactive accounts")
299 )
300 );
301 }
302 }