]> git.agnieray.net Git - galette.git/blob - galette/lib/Galette/Filters/MembersList.php
Merge branch 'hotfix/0.7.2.2' into develop
[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-2012 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-2012 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 * @version SVN: $Id$
34 * @link http://galette.tuxfamily.org
35 * @since march, 3rd 2009
36 */
37
38 namespace Galette\Filters;
39
40 use Galette\Common\KLogger as KLogger;
41 use Galette\Core\Pagination as Pagination;
42 use Galette\Entity\Group as Group;
43 use Galette\Repository\Members as Members;
44
45 /**
46 * Members list filters and paginator
47 *
48 * @name MembersList
49 * @category Filters
50 * @package Galette
51 *
52 * @author Johan Cwiklinski <johan@x-tnd.be>
53 * @copyright 2009-2012 The Galette Team
54 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
55 * @link http://galette.tuxfamily.org
56 */
57
58 class MembersList extends Pagination
59 {
60 //filters
61 private $_filter_str;
62 private $_field_filter;
63 private $_membership_filter;
64 private $_account_status_filter;
65 private $_email_filter;
66 private $_group_filter;
67
68 private $_selected;
69 private $_unreachable;
70
71 /**
72 * Default constructor
73 */
74 public function __construct()
75 {
76 $this->reinit();
77 }
78
79 /**
80 * Returns the field we want to default set order to
81 *
82 * @return string field name
83 */
84 protected function getDefaultOrder()
85 {
86 return 'nom_adh';
87 }
88
89 /**
90 * Reinit default parameters
91 *
92 * @return void
93 */
94 public function reinit()
95 {
96 parent::reinit();
97 $this->_filter_str = null;
98 $this->_field_filter = null;
99 $this->_membership_filter = null;
100 $this->_account_status_filter = null;
101 $this->_email_filter = Members::FILTER_DC_EMAIL;
102 $this->_group_filter = null;
103 $this->_selected = array();
104 }
105
106 /**
107 * Global getter method
108 *
109 * @param string $name name of the property we want to retrive
110 *
111 * @return object the called property
112 */
113 public function __get($name)
114 {
115 global $log;
116
117 $log->log(
118 '[MembersList] Getting property `' . $name . '`',
119 KLogger::DEBUG
120 );
121
122 if ( in_array($name, $this->pagination_fields) ) {
123 return parent::__get($name);
124 } else {
125 $return_ok = array(
126 'filter_str',
127 'field_filter',
128 'membership_filter',
129 'account_status_filter',
130 'email_filter',
131 'group_filter',
132 'selected',
133 'unreachable'
134 );
135 if (in_array($name, $return_ok)) {
136 $name = '_' . $name;
137 return $this->$name;
138 } else {
139 $log->log(
140 '[MembersList] Unable to get proprety `' .$name . '`',
141 KLogger::WARN
142 );
143 }
144 }
145 }
146
147 /**
148 * Global setter method
149 *
150 * @param string $name name of the property we want to assign a value to
151 * @param object $value a relevant value for the property
152 *
153 * @return void
154 */
155 public function __set($name, $value)
156 {
157 global $log;
158
159 if ( in_array($name, $this->pagination_fields) ) {
160 parent::__set($name, $value);
161 } else {
162 $log->log(
163 '[MembersList] Setting property `' . $name . '`',
164 KLogger::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 } else {
174 $log->log(
175 '[MembersList] Value for property `' . $name .
176 '` should be an array (' . gettype($value) . ' given)',
177 KLogger::WARN
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 'account_status_filter':
188 if ( is_numeric($value) ) {
189 $name = '_' . $name;
190 $this->$name = $value;
191 } else {
192 $log->log(
193 '[MembersList] Value for property `' . $name .
194 '` should be an integer (' . gettype($value) . ' given)',
195 KLogger::WARN
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 $log->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 KLogger::WARN
213 );
214 break;
215 }
216 break;
217 case 'group_filter':
218 if ( is_numeric($value) ) {
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 $log->log(
226 'Group #' . $value . ' does not exists!',
227 KLogger::WARN
228 );
229 }
230 } else {
231 $log->log(
232 '[MembersList] Value for group filter should be an '
233 .'integer (' . gettype($value) . ' given',
234 KLogger::WARN
235 );
236 }
237 break;
238 default:
239 $log->log(
240 '[MembersList] Unable to set proprety `' . $name . '`',
241 KLogger::WARN
242 );
243 break;
244 }
245 }
246 }
247
248 /**
249 * Add SQL limit
250 *
251 * @param Zend_Db_Select $select Original select
252 *
253 * @return <type>
254 */
255 public function setLimit($select)
256 {
257 return $this->setLimits($select);
258 }
259
260 /**
261 * Set counter
262 *
263 * @param int $c Count
264 *
265 * @return void
266 */
267 public function setCounter($c)
268 {
269 $this->counter = (int)$c;
270 $this->countPages();
271 }
272 }