fetchOneCell()); } return intval($value); } public function save(ProfilePage &$page, $field, $value) { XDB::execute("UPDATE auth_user_md5 SET section = {?} WHERE user_id = {?}", $value, S::i('uid')); } } class ProfileGroup implements ProfileSetting { private $table; private $user_field; private $group_field; public function __construct($table, $user, $group) { $this->table = $table; $this->user_field = $user; $this->group_field = $group; } public function value(ProfilePage &$page, $field, $value, &$success) { if (is_null($value)) { $value = array(); $res = XDB::iterRow("SELECT g.id, g.text FROM {$this->table}_def AS g INNER JOIN {$this->table}_ins AS i ON (i.{$this->group_field} = g.id) WHERE i.{$this->user_field} = {?}", S::i('uid')); 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 {$this->table}_ins WHERE {$this->user_field} = {?}", S::i('uid')); if (!count($value)) { return; } $insert = array(); foreach ($value as $id=>$text) { $insert[] = '(' . S::i('uid') . ", $id)"; } XDB::execute("INSERT INTO {$this->table}_ins ({$this->user_field}, {$this->group_field}) VALUES " . implode(',', $insert)); } } class ProfileGroups extends ProfilePage { protected $pg_template = 'profile/groups.tpl'; public function __construct(PlWizard &$wiz) { parent::__construct($wiz); $this->settings['section'] = new ProfileSection(); $this->settings['binets'] = new ProfileGroup('binets', 'user_id', 'binet_id'); $this->watched['section'] = $this->watched['binets'] = true; } public function _prepare(PlPage &$page, $id) { $page->assign('mygroups', XDB::iterator("SELECT a.nom, a.site, a.diminutif, a.unsub_url, a.pub, m.perms FROM #groupex#.asso AS a INNER JOIN #groupex#.membres AS m ON (m.asso_id = a.id) WHERE m.uid = {?} AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')", S::i('uid'))); $page->assign('listgroups', XDB::iterator("SELECT a.nom, a.diminutif, a.sub_url, IF (a.cat = 'Institutions', a.cat, d.nom) AS dom FROM #groupex#.asso AS a LEFT JOIN #groupex#.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') >= S::i('promo_sortie')); } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>