<?php
/***************************************************************************
- * Copyright (C) 2003-2010 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
class ProfileSettingSkill implements ProfileSetting
{
private $table;
+ private $id;
private $skill_field;
private $text_field;
- public function __construct($table, $skill, $text)
+ public function __construct($table, $id, $skill, $text)
{
$this->table = $table;
+ $this->id = $id;
$this->skill_field = $skill;
$this->text_field = $text;
}
- public function value(ProfilePage &$page, $field, $value, &$success)
+ public function value(ProfilePage $page, $field, $value, &$success)
{
if (is_null($value)) {
$value = array();
- $res = XDB::iterRow("SELECT s.id, s.{$this->text_field}, i.level
+ $res = XDB::iterRow("SELECT s.{$this->id}, s.{$this->text_field}, i.level
FROM profile_{$this->table}_enum AS s
- INNER JOIN profile_{$this->table}s AS i ON(s.id = i.{$this->skill_field})
+ INNER JOIN profile_{$this->table}s AS i ON (s.{$this->id} = i.{$this->skill_field})
WHERE i.pid = {?}",
$page->pid());
while (list($sid, $text, $level) = $res->next()) {
if (!isset($skill['text']) || empty($skill['text'])) {
$res = XDB::query("SELECT {$this->text_field}
FROM profile_{$this->table}_enum
- WHERE id = {?}", $id);
+ WHERE {$this->id} = {?}", $id);
$skill['text'] = $res->fetchOneCell();
}
}
return $value;
}
- public function save(ProfilePage &$page, $field, $value)
+ public function save(ProfilePage $page, $field, $value)
{
XDB::execute("DELETE FROM profile_{$this->table}s
WHERE pid = {?}",
$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);
+ }
}
-class ProfileSettingSkills extends ProfilePage
+class ProfilePageSkills extends ProfilePage
{
protected $pg_template = 'profile/skill.tpl';
- public function __construct(PlWizard &$wiz)
+ public function __construct(PlWizard $wiz)
{
parent::__construct($wiz);
- $this->settings['competences'] = new ProfileSettingSkill('skill', 'cid', 'text_fr');
- $this->settings['langues'] = new ProfileSettingSkill('langskill', 'lid', 'langue_fr');
+ $this->settings['competences'] = new ProfileSettingSkill('skill', 'id', 'cid', 'text_fr');
+ $this->settings['langues'] = new ProfileSettingSkill('langskill', 'iso_639_2b', 'lid', 'language');
}
- public function _prepare(PlPage &$page, $id)
+ public function _prepare(PlPage $page, $id)
{
$page->assign('comp_list', XDB::iterator("SELECT id, text_fr, FIND_IN_SET('titre',flags) AS title
FROM profile_skill_enum"));
$page->assign('comp_level', array('initié' => 'initié',
'bonne connaissance' => 'bonne connaissance',
'expert' => 'expert'));
- $page->assign('lang_list', XDB::iterator("SELECT id, langue_fr
- FROM profile_langskill_enum"));
+ $page->assign('lang_list', XDB::iterator('SELECT iso_639_2b, language
+ FROM profile_langskill_enum
+ ORDER BY language'));
$page->assign('lang_level', array(1 => 'connaissance basique',
2 => 'maîtrise des bases',
3 => 'maîtrise limitée',