e3f3b62025eccd17cd1fbf98db5f59e4a5584770
2 /***************************************************************************
3 * Copyright (C) 2003-2010 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
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 General Public License for more details. *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
26 private $data = array();
28 private function __construct(array $data)
30 foreach ($data as $key=>$value) {
31 $this->data
[$key] = $value;
33 $this->id
= intval($this->data
['id']);
34 $this->shortname
= $this->data
['diminutif'];
37 public function __get($name)
39 if (property_exists($this, $name)) {
43 if (isset($this->data
[$name])) {
44 return $this->data
[$name];
50 public function __isset($name)
52 return property_exists($this, $name) ||
isset($this->data
[$name]);
55 private function getUF($admin = false
, $extra_cond = null
, $sort = null
)
57 $cond = new UFC_Group($this->id
, $admin);
58 if (!is_null($extra_cond)) {
59 $cond = new PFC_And($cond, $extra_cond);
61 return new UserFilter($cond, $sort);
64 public function getMembersFilter($extra_cond = null
, $sort = null
)
66 return $this->getUF(false
, $extra_cond, $sort);
69 public function getAdminsFilter($extra_cond = null
, $sort = null
)
71 return $this->getUF(true
, $extra_cond, $sort);
74 public function iterMembers($extra_cond = null
, $sort = null
, $limit = null
)
76 $uf = $this->getMembersFilter($extra_cond, $sort);
77 return $uf->iterUsers($limit);
80 public function iterAdmins($extra_cond = null
, $sort = null
, $limit = null
)
82 $uf = $this->getAdminsFilter($extra_cond, $sort);
83 return $uf->iterUsers($limit);
86 public function getLogo($fallback = true
)
88 if (!empty($this->logo
)) {
89 return PlImage
::fromData($this->logo
, $this->logo_mime
);
90 } else if ($fallback) {
91 return PlImage
::fromFile(dirname(__FILE__
).'/../htdocs/images/dflt_carre.jpg', 'image/jpeg');
96 static public function get($id, $can_be_shortname = true
)
101 if (!$can_be_shortname) {
102 $where = XDB
::format('a.id = {?}', $id);
104 $where = XDB
::format('a.diminutif = {?}', $id);
106 $res = XDB
::query('SELECT a.*, d.nom AS domnom,
107 FIND_IN_SET(\'wiki_desc\', a.flags) AS wiki_desc,
108 FIND_IN_SET(\'notif_unsub\', a.flags) AS notif_unsub
110 LEFT JOIN group_dom AS d ON d.id = a.dom
112 if ($res->numRows() != 1) {
113 if ($can_be_shortname && (is_int($id) ||
ctype_digit($id))) {
114 return Group
::get($id, false
);
118 return new Group($res->fetchOneAssoc());
122 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: