Updates Changelog (Closes #1512).
[platal.git] / modules / profile / skills.inc.php
index 4a8c579..3145811 100644 (file)
@@ -1,6 +1,6 @@
 <?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()) {
@@ -52,7 +54,7 @@ class ProfileSettingSkill implements ProfileSetting
                 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();
                 }
             }
@@ -62,7 +64,7 @@ class ProfileSettingSkill implements ProfileSetting
         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 = {?}",
@@ -76,29 +78,53 @@ class ProfileSettingSkill implements ProfileSetting
                          $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
+        $page->assign('lang_list', XDB::iterator('SELECT  iso_639_2b, language
                                                     FROM  profile_langskill_enum
-                                                ORDER BY  langue_fr"));
+                                                ORDER BY  language'));
         $page->assign('lang_level', array(1 => 'connaissance basique',
                                           2 => 'maîtrise des bases',
                                           3 => 'maîtrise limitée',