+ }
+ ksort($value);
+ $success = true;
+ return $value;
+ }
+
+ public function save(ProfilePage $page, $field, $value)
+ {
+ XDB::execute("DELETE FROM profile_{$this->table}s
+ WHERE pid = {?}",
+ $page->pid());
+ if (!count($value)) {
+ return;
+ }
+ foreach ($value as $id=>&$skill) {
+ XDB::execute("INSERT INTO profile_{$this->table}s (pid, {$this->skill_field}, level)
+ VALUES ({?}, {?}, {?})",
+ $page->pid(), $id, $skill['level']);
+ }
+ }
+
+ public function getText($value) {
+ $skills = array();
+
+ if ($this->table == 'langskill') {
+ static $levels = array(
+ 1 => 'connaissance basique',
+ 2 => 'maîtrise des bases',
+ 3 => 'maîtrise limitée',
+ 4 => 'maîtrise générale',
+ 5 => 'bonne maîtrise',
+ 6 => 'maîtrise complète'
+ );
+ foreach ($value as $skill) {
+ $skills[] = $skill['text'] . ' (' . $levels[$skill['level']] . ')';
+ }
+ } else {
+ foreach ($value as $skill) {
+ $skills[] = $skill['text'] . ' (' . $skill['level'] . ')';
+ }
+ }
+
+ return implode(', ' , $skills);
+ }
+}
+
+/** Terms associated to profile mentoring */
+class ProfileSettingTerms implements ProfileSetting
+{
+ public function value(ProfilePage $page, $field, $value, &$success)
+ {
+ $success = true;
+ if (is_null($value)) {