X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fprofile%2Fgroups.inc.php;h=f274eb66fc31b5503cf0b6d2d9aa141da857b006;hb=72bd919e5d2093a816036c6cecc9e2725bad35f8;hp=40b8b61cf1e019c5df6a599da0d57ed9b8eb9348;hpb=92412b28cbc789932e041615d45f5bb8dd8c7874;p=platal.git diff --git a/modules/profile/groups.inc.php b/modules/profile/groups.inc.php index 40b8b61..f5e2941 100644 --- a/modules/profile/groups.inc.php +++ b/modules/profile/groups.inc.php @@ -1,6 +1,6 @@ pid()); + return intval($res->fetchOneCell()); + } + return intval($value); + } - public function __construct(PlWizard &$wiz) + public function save(ProfilePage &$page, $field, $value) { - parent::__construct($wiz); - $this->settings['section'] = $this->settings['binets'] - = $this->settings['groupesx'] - = null; + XDB::execute("UPDATE profiles + SET section = {?} + WHERE pid = {?}", + $value, $page->pid()); + } + + public function getText($value) { + $sectionsList = DirEnum::getOptions(DirEnum::SECTIONS); + return $sectionsList[$value]; + } +} + +class ProfileSettingBinets implements ProfileSetting +{ + public function __construct() + { + } + + public function value(ProfilePage &$page, $field, $value, &$success) + { + if (is_null($value)) { + $value = array(); + $res = XDB::iterRow("SELECT g.id, g.text + FROM profile_binet_enum AS g + INNER JOIN profile_binets AS i ON (i.binet_id = g.id) + WHERE i.pid = {?}", + $page->pid()); + while (list($gid, $text) = $res->next()) { + $value[intval($gid)] = $text; + } + } + if (!is_array($value)) { + $value = array(); + } + ksort($value); + $success = true; + return $value; + } + + public function save(ProfilePage &$page, $field, $value) + { + XDB::execute("DELETE FROM profile_binets + WHERE pid = {?}", + $page->pid()); + if (!count($value)) { + return; + } + $insert = array(); + foreach ($value as $id=>$text) { + $insert[] = XDB::format('({?}, {?})', $page->pid(), $id); + } + XDB::execute("INSERT INTO profile_binets (pid, binet_id) + VALUES " . implode(',', $insert)); + } + + public function getText($value) { + return implode(', ', $value); } +} + +class ProfileSettingGroups extends ProfilePage +{ + protected $pg_template = 'profile/groups.tpl'; - protected function fetchData() + public function __construct(PlWizard &$wiz) { - parent::fetchData(); + parent::__construct($wiz); + $this->settings['section'] = new ProfileSettingSection(); + $this->settings['binets'] = new ProfileSettingBinets(); + $this->watched['section'] = $this->watched['binets'] = true; } - public function prepare(PlatalPage &$page) + public function _prepare(PlPage &$page, $id) { - parent::prepare($page); + $page->assign('mygroups', XDB::iterator("SELECT a.nom, a.site, a.diminutif, a.unsub_url, a.pub, m.perms + FROM groups AS a + INNER JOIN group_members AS m ON (m.asso_id = a.id) + WHERE m.uid = {?} AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')", + $this->pid())); + $page->assign('listgroups', XDB::iterator("SELECT a.nom, a.diminutif, a.sub_url, + IF (a.cat = 'Institutions', a.cat, d.nom) AS dom + FROM groups AS a + LEFT JOIN group_dom AS d ON (d.id = a.dom) + WHERE a.inscriptible != 0 + AND (a.cat = 'GroupesX' OR a.cat = 'Institutions') + ORDER BY a.cat, a.dom, a.nom")); + $page->assign('old', (int) date('Y') >= $this->profile->grad_year); } }