pid()); while (list($s, $ss, $ssname) = $res->next()) { if (!isset($value[$s])) { $value[$s] = array($ss => $ssname); } else { $value[$s][$ss] = $ssname; } } } elseif (!is_array($value)) { $value = array(); } elseif (count($value) > 10) { Platal::page()->trigError("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 profile_mentor_sector WHERE uid = {?}", $page->pid()); if (!count($value)) { return; } foreach ($value as $id => $sect) { foreach ($sect as $sid => $name) { XDB::execute("INSERT INTO profile_mentor_sector (uid, sectorid, subsectorid) VALUES ({?}, {?}, {?})", $page->pid(), $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.country, gc.countryFR FROM profile_mentor_country AS m INNER JOIN geoloc_countries AS gc ON (m.country = gc.iso_3166_1_a2) WHERE m.uid = {?}", $page->pid()); while (list($id, $name) = $res->next()) { $value[$id] = $name; } } else if (!is_array($value)) { $value = array(); } else if (count($value) > 10) { Platal::page()->trigError("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 profile_mentor_country WHERE uid = {?}", $page->pid()); foreach ($value as $id=>&$name) { XDB::execute("INSERT INTO profile_mentor_country (uid, country) VALUES ({?}, {?})", $page->pid(), $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['sectors'] = new ProfileSectors(); $this->settings['countries'] = new ProfileCountry(); } protected function _fetchData() { $res = XDB::query("SELECT expertise FROM profile_mentor WHERE uid = {?}", $this->pid()); $this->values['expertise'] = $res->fetchOneCell(); } protected function _saveData() { if ($this->changed['expertise']) { $expertise = trim($this->values['expertise']); if (empty($expertise)) { XDB::execute("DELETE FROM profile_mentor WHERE uid = {?}", $this->pid()); $this->values['expertise'] = null; } else { XDB::execute("REPLACE INTO profile_mentor (uid, expertise) VALUES ({?}, {?})", $this->pid(), $expertise); $this->values['expertise'] = $expertise; } } } public function _prepare(PlPage &$page, $id) { $page->assign('sectorList', XDB::iterator('SELECT id, name FROM profile_job_sector_enum')); $page->assign('countryList', XDB::iterator("SELECT iso_3166_1_a2, countryFR FROM geoloc_countries ORDER BY countryFR")); } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>