X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fgroup.php;h=ce93e92add4571ea02baaf76ae513613bada57c5;hb=b270577e919c58455a3629a4d9d61bd38ea49e11;hp=62236dbbac2099fc18b2d3c507aa11b849a6c68a;hpb=34ade5a639500e0a43dfb5ccff4ecbac5fbda919;p=platal.git diff --git a/classes/group.php b/classes/group.php index 62236db..ce93e92 100644 --- a/classes/group.php +++ b/classes/group.php @@ -1,6 +1,6 @@ $value) { @@ -55,44 +52,45 @@ 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 = 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 = 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) @@ -100,7 +98,7 @@ class Group if (!$id) { return null; } - if (ctype_digit($id)) { + if (is_int($id) || ctype_digit($id)) { $where = XDB::format('id = {?}', $id); } else { $where = XDB::format('diminutif = {?}', $id); @@ -108,8 +106,8 @@ class Group $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) { return null;