Merge commit 'origin/fusionax' into account
[platal.git] / include / education.func.inc.php
index 857774e..dd63591 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2009 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
 function education_options($current = 0)
 {
     $html = '<option value="-1"></option>';
-    $res  = XDB::iterator("SELECT  e.id AS id, e.name AS name, g.pays AS country
+    $res  = XDB::iterator("SELECT  e.id AS id, gc.countryFR AS country,
+                                   IF(CHAR_LENGTH(e.name) > 76, e.abbreviation, e.name) AS name
                              FROM  profile_education_enum AS e
-                        LEFT JOIN  geoloc_pays            AS g ON (e.country = g.a2)
+                        LEFT JOIN  geoloc_countries       AS gc ON (e.country = gc.iso_3166_1_a2)
                      WHERE EXISTS  (SELECT  *
                                       FROM  profile_education_degree AS d
                                      WHERE  e.id = d.eduid)
-                         ORDER BY  g.pays, e.name");
+                         ORDER BY  gc.countryFR, e.name");
     $country = "";
     while ($arr_edu = $res->next()) {
         if ($arr_edu["country"] != $country) {
@@ -59,33 +60,25 @@ Platal::page()->register_function('education_options', '_education_options_smart
  */
 function education_degree()
 {
-    $html = "";
-    $res = XDB::iterRow("SELECT  d.eduid, d.degreeid
-                           FROM  profile_education_enum   AS e
-                     INNER JOIN  profile_education_degree AS d ON (e.id = d.eduid)
-                      LEFT JOIN  geoloc_pays              AS g ON (e.country = g.a2)
-                       ORDER BY  g.pays, e.name");
-    if ($edu_degree = $res->next()) {
-        $eduid = $edu_degree['0'];
-        $html .= "[";
-        $html .= $edu_degree['1'];
-        $edu_degree = $res->next();
-        while ($edu_degree['0'] == $eduid) {
-            $html .= "," . $edu_degree['1'];
+    $html  = '';
+    $res = XDB::iterRow("SELECT  eduid, degreeid
+                           FROM  profile_education_degree
+                       ORDER BY  eduid");
+    $edu_degree = $res->next();
+    for ($eduid = 1; $edu_degree; ++$eduid) {
+        $html .= '[';
+        if ($edu_degree['0'] == $eduid) {
+            $html .= $edu_degree['1'];
             $edu_degree = $res->next();
+            while ($edu_degree['0'] == $eduid) {
+                $html .= ',' . $edu_degree['1'];
+                $edu_degree = $res->next();
+            }
         }
-        $html .= "]";
-    }
-    while ($edu_degree) {
-        $eduid = $edu_degree['0'];
-        $html .= ",\n[";
-        $html .= $edu_degree['1'];
-        $edu_degree = $res->next();
-        while ($edu_degree['0'] == $eduid) {
-            $html .= "," . $edu_degree['1'];
-            $edu_degree = $res->next();
+        $html .= ']';
+        if ($edu_degree) {
+            $html .= ",\n";
         }
-        $html .= "]";
     }
     return $html;
 }
@@ -163,8 +156,16 @@ function education_fmt($name, $url, $degree, $grad_year, $field, $program, $sexe
 
 function _education_fmt($params, &$smarty)
 {
-    extract($params);
-    return education_fmt($name, $url, $degree, $grad_year, $field, $program, $sexe, $long);
+    $params  = new PlDict($params);
+    $edu     = $params->v('edu');
+    if (!$params->has('sex')) {
+        $profile = $params->v('profile');
+        $sex = $profile->isFemale();
+    } else {
+        $sex = $params->b('sex');
+    }
+    return education_fmt($edu['school_short'], $edu['school_url'], $edu['degree_short'], $edu['grad_year'],
+                         $edu['field'], $edu['program'], $sex, $params->b('long'));
 }
 Platal::page()->register_function('education_fmt', '_education_fmt');