next()) { if (!isset($value[$s])) { $value[$s] = array($ss => $ssname); } else { $value[$s][$ss] = $ssname; } } } else if (!is_array($value)) { $value = array(); } else if (count($value) > 10) { global $page; $page->trig("Le nombre de secteurs d'expertise est limité à 10"); $success = false; } ksort($value); foreach ($value as &$sss) { ksort($sss); } return $value; } public function save(ProfilePage &$page, $field, $value) { XDB::execute("DELETE FROM mentor_secteurs WHERE uid = {?}", S::i('uid')); if (!count($value)) { return; } foreach ($value as $id=>&$sect) { foreach ($sect as $sid=>&$name) { XDB::execute("INSERT INTO mentor_secteurs (uid, secteur, ss_secteur) VALUES ({?}, {?}, {?})", S::i('uid'), $id, $sid); } } } } class ProfileCountry implements ProfileSetting { public function value(ProfilePage &$page, $field, $value, &$success) { $success = true; if (is_null($value)) { $value = array(); $res = XDB::iterRow("SELECT m.pid, p.pays FROM mentor_pays AS m INNER JOIN geoloc_pays AS p ON(m.pid = p.a2) WHERE m.uid = {?}", S::i('uid')); while (list($id, $name) = $res->next()) { $value[$id] = $name; } } else if (!is_array($value)) { $value = array(); } else if (count($value) > 10) { global $page; $page->trig("Le nombre de secteurs d'expertise est limité à 10"); $success = false; } ksort($value); return $value; } public function save(ProfilePage &$page, $field, $value) { XDB::execute("DELETE FROM mentor_pays WHERE uid = {?}", S::i('uid')); foreach ($value as $id=>&$name) { XDB::execute("INSERT INTO mentor_pays (uid, pid) VALUES ({?}, {?})", S::i('uid'), $id); } } } class ProfileMentor extends ProfilePage { protected $pg_template = 'profile/mentor.tpl'; public function __construct(PlWizard &$wiz) { parent::__construct($wiz); $this->settings['expertise'] = null; $this->settings['secteurs'] = new ProfileSecteurs(); $this->settings['countries'] = new ProfileCountry(); } protected function _fetchData() { $res = XDB::query("SELECT expertise FROM mentor WHERE uid = {?}", S::i('uid')); $this->values['expertise'] = $res->fetchOneCell(); } protected function _saveData() { if ($this->changed['expertise']) { $expertise = trim($this->values['expertise']); if (empty($expertise)) { XDB::execute("DELETE FROM mentor WHERE uid = {?}", S::i('uid')); $this->values['expertise'] = null; } else { XDB::execute("REPLACE INTO mentor (uid, expertise) VALUES ({?}, {?})", S::i('uid'), $expertise); $this->values['expertise'] = $expertise; } } } public function _prepare(PlatalPage &$page, $id) { $page->assign('secteurs_sel', XDB::iterator("SELECT id, label FROM emploi_secteur")); } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>