]> git.agnieray.net Git - galette.git/blob - galette/lib/Galette/Filters/MembersList.php
Merge branch 'feature/autoloader' 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 Classes
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\Core\Pagination as Pagination;
41 use Galette\Repository\Members as Members;
42
43 /**
44 * Members list filters and paginator
45 *
46 * @name MembersList
47 * @category Classes
48 * @package Galette
49 *
50 * @author Johan Cwiklinski <johan@x-tnd.be>
51 * @copyright 2009-2012 The Galette Team
52 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
53 * @link http://galette.tuxfamily.org
54 */
55
56 class MembersList extends Pagination
57 {
58 //filters
59 private $_filter_str;
60 private $_field_filter;
61 private $_membership_filter;
62 private $_account_status_filter;
63 private $_email_filter;
64
65 private $_selected;
66 private $_unreachable;
67
68 /**
69 * Default constructor
70 */
71 public function __construct()
72 {
73 $this->reinit();
74 }
75
76 /**
77 * Returns the field we want to default set order to
78 *
79 * @return string field name
80 */
81 protected function getDefaultOrder()
82 {
83 return 'nom_adh';
84 }
85
86 /**
87 * Reinit default parameters
88 *
89 * @return void
90 */
91 public function reinit()
92 {
93 parent::reinit();
94 $this->_filter_str = null;
95 $this->_field_filter = null;
96 $this->_membership_filter = null;
97 $this->_account_status_filter = null;
98 $this->_email_filter = Members::FILTER_DC_EMAIL;
99 $this->_selected = array();
100 }
101
102 /**
103 * Global getter method
104 *
105 * @param string $name name of the property we want to retrive
106 *
107 * @return object the called property
108 */
109 public function __get($name)
110 {
111 global $log;
112
113 $log->log(
114 '[MembersList] Getting property `' . $name . '`',
115 PEAR_LOG_DEBUG
116 );
117
118 if ( in_array($name, $this->pagination_fields) ) {
119 return parent::__get($name);
120 } else {
121 $return_ok = array(
122 'filter_str',
123 'field_filter',
124 'membership_filter',
125 'account_status_filter',
126 'email_filter',
127 'selected',
128 'unreachable'
129 );
130 if (in_array($name, $return_ok)) {
131 $name = '_' . $name;
132 return $this->$name;
133 } else {
134 $log->log(
135 '[MembersList] Unable to get proprety `' .$name . '`',
136 PEAR_LOG_WARNING
137 );
138 }
139 }
140 }
141
142 /**
143 * Global setter method
144 *
145 * @param string $name name of the property we want to assign a value to
146 * @param object $value a relevant value for the property
147 *
148 * @return void
149 */
150 public function __set($name, $value)
151 {
152 global $log;
153
154 if ( in_array($name, $this->pagination_fields) ) {
155 parent::__set($name, $value);
156 } else {
157 $log->log(
158 '[MembersList] Setting property `' . $name . '`',
159 PEAR_LOG_DEBUG
160 );
161
162 switch($name) {
163 case 'selected':
164 case 'unreachable':
165 if (is_array($value)) {
166 $name = '_' . $name;
167 $this->$name = $value;
168 } else {
169 $log->log(
170 '[MembersList] Value for property `' . $name .
171 '` should be an array (' . gettype($value) . ' given)',
172 PEAR_LOG_WARNING
173 );
174 }
175 break;
176 case 'filter_str':
177 $name = '_' . $name;
178 $this->$name = $value;
179 break;
180 case 'field_filter':
181 case 'membership_filter':
182 case 'account_status_filter':
183 if ( is_numeric($value) ) {
184 $name = '_' . $name;
185 $this->$name = $value;
186 } else {
187 $log->log(
188 '[MembersList] Value for property `' . $name .
189 '` should be an integer (' . gettype($value) . ' given)',
190 PEAR_LOG_WARNING
191 );
192 }
193 break;
194 case 'email_filter':
195 switch ($value) {
196 case Members::FILTER_DC_EMAIL:
197 case Members::FILTER_W_EMAIL:
198 case Members::FILTER_WO_EMAIL:
199 $this->_email_filter = $value;
200 break;
201 default:
202 $log->log(
203 '[MembersList] Value for email filter should be either ' .
204 Members::FILTER_DC_EMAIL . ', ' .
205 Members::FILTER_W_EMAIL . ' or ' .
206 Members::FILTER_WO_EMAIL . ' (' . $value . ' given)',
207 PEAR_LOG_WARNING
208 );
209 break;
210 }
211 break;
212 default:
213 $log->log(
214 '[MembersList] Unable to set proprety `' . $name . '`',
215 PEAR_LOG_WARNING
216 );
217 break;
218 }
219 }
220 }
221
222 /**
223 * Add SQL limit
224 *
225 * @param Zend_Db_Select $select Original select
226 *
227 * @return <type>
228 */
229 public function setLimit($select)
230 {
231 return $this->setLimits($select);
232 }
233
234 /**
235 * Set counter
236 *
237 * @param int $c Count
238 *
239 * @return void
240 */
241 public function setCounter($c)
242 {
243 $this->counter = (int)$c;
244 $this->countPages();
245 }
246 }
247 ?>