X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fgroup.php;h=e3f3b62025eccd17cd1fbf98db5f59e4a5584770;hb=c76545c351fae4e2298624ff9ee5bf854dc5a5b6;hp=62236dbbac2099fc18b2d3c507aa11b849a6c68a;hpb=34ade5a639500e0a43dfb5ccff4ecbac5fbda919;p=platal.git diff --git a/classes/group.php b/classes/group.php index 62236db..e3f3b62 100644 --- a/classes/group.php +++ b/classes/group.php @@ -1,6 +1,6 @@ $value) { @@ -55,63 +52,67 @@ class Group return property_exists($this, $name) || isset($this->data[$name]); } - public function getMemberUIDs() + private function getUF($admin = false, $extra_cond = null, $sort = null) { - if (is_null($this->members)) { - $this->members = XDB::fetchColumn('SELECT uid - FROM groupex.membres - WHERE asso_id = {?}', $this->id); + $cond = new UFC_Group($this->id, $admin); + if (!is_null($extra_cond)) { + $cond = new PFC_And($cond, $extra_cond); } - return $this->members; + return new UserFilter($cond, $sort); } - public function getMembers($sortby = null, $count = null, $offset = null) + public function getMembersFilter($extra_cond = null, $sort = null) { - return User::getBuildUsersWithUIDs($this->getMemberUIDs(), $sortby, $count, $offset); + return $this->getUF(false, $extra_cond, $sort); } - public function getMemberCount() + public function getAdminsFilter($extra_cond = null, $sort = null) { - return count($this->getMemberUIDs()); + return $this->getUF(true, $extra_cond, $sort); } - public function getAdminUIDs() + public function iterMembers($extra_cond = null, $sort = null, $limit = null) { - if (is_null($this->admins)) { - $this->admins = XDB::fetchColumn('SELECT uid - FROM groupex.membres - WHERE asso_id = {?} AND perms = \'admin\'', $this->id); - } - return $this->admins; + $uf = $this->getMembersFilter($extra_cond, $sort); + return $uf->iterUsers($limit); } - public function getAdmins($sortby = null, $count = null, $offset = null) + public function iterAdmins($extra_cond = null, $sort = null, $limit = null) { - return User::getBuildUsersWithUIDs($this->getAdminUIDs(), $sortby, $count, $offset); + $uf = $this->getAdminsFilter($extra_cond, $sort); + return $uf->iterUsers($limit); } - public function getAdminCount() + public function getLogo($fallback = true) { - return count($this->getAdminUIDs()); + if (!empty($this->logo)) { + return PlImage::fromData($this->logo, $this->logo_mime); + } else if ($fallback) { + return PlImage::fromFile(dirname(__FILE__).'/../htdocs/images/dflt_carre.jpg', 'image/jpeg'); + } + return null; } - static public function get($id) + static public function get($id, $can_be_shortname = true) { if (!$id) { return null; } - if (ctype_digit($id)) { - $where = XDB::format('id = {?}', $id); + if (!$can_be_shortname) { + $where = XDB::format('a.id = {?}', $id); } else { - $where = XDB::format('diminutif = {?}', $id); + $where = XDB::format('a.diminutif = {?}', $id); } $res = XDB::query('SELECT a.*, d.nom AS domnom, FIND_IN_SET(\'wiki_desc\', a.flags) AS wiki_desc, FIND_IN_SET(\'notif_unsub\', a.flags) AS notif_unsub - FROM groupex.asso AS a - LEFT JOIN groupex.dom AS d ON d.id = a.dom + FROM groups AS a + LEFT JOIN group_dom AS d ON d.id = a.dom WHERE ' . $where); if ($res->numRows() != 1) { + if ($can_be_shortname && (is_int($id) || ctype_digit($id))) { + return Group::get($id, false); + } return null; } return new Group($res->fetchOneAssoc());