Fixes homonyms handling.
[platal.git] / modules / auth / auth.inc.php
index e87d10d..334c51d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2009 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -34,17 +34,26 @@ function gpex_make($chlg, $privkey, $datafields, $charset)
 
     $user =& S::user();
     if ($user->hasProfile()) {
-        // XXX: Transition table for auth.
+        /* Transition table for authentification. */
         $personnal_data = $user->profile()->data();
+        $personnal_data['full_promo'] = $personnal_data['promo'];
+        $personnal_data['promo'] = $personnal_data['entry_year'];
         $personnal_data['matricule'] = $personnal_data['xorg_id'];
         $personnal_data['matricule_ax'] = $personnal_data['ax_id'];
-        $personnal_data['promo_sortie'] = $personnal_data['promo'] + 3; // FIXME: Hum, not that good
+        $personnal_data['promo_sortie'] = $personnal_data['grad_year'];
         $personnal_data['nationalite'] = $personnal_data['nationality1'];
         $personnal_data['naissance'] = $personnal_data['birthdate'];
         $personnal_data['deces'] = $personnal_data['deathdate'];
+        $personnal_data['nom'] = $personnal_data['lastname'];
+        $personnal_data['prenom'] = $personnal_data['firstname'];
         $personnal_data['flags'] = $user->profile()->isFemale() ? 'femme' : '';
     } else {
-        $personnal_data = array();
+        // Missing fields: promo, entry_year, grad_year, ax_id, xorg_id, forlife
+        $personnal_data = array(
+            'lastname' => $user->lastname,
+            'firstname' => $user->firstname,
+            'sex' => $user->gender
+        );
     }
 
     foreach ($fieldarr as $val) {
@@ -58,12 +67,11 @@ function gpex_make($chlg, $privkey, $datafields, $charset)
         } else if (isset($personnal_data[$val])) {
             $params .= gpex_prepare_param($val, $personnal_data[$val], $tohash, $charset);
         } else if ($val == 'username') {
-            $res = XDB::query("SELECT  alias
-                                 FROM  aliases
-                                WHERE  id = {?} AND FIND_IN_SET('bestalias', flags)",
-                              S::i('uid'));
-            $min_username = $res->fetchOneCell();
-            $params      .= gpex_prepare_param($val, $min_username, $tohash, $charset);
+            $min_username = XDB::fetchOneCell('SELECT  email
+                                                 FROM  email_source_account
+                                                WHERE  uid = {?} AND FIND_IN_SET(\'bestalias\', flags)',
+                                              S::i('uid'));
+            $params .= gpex_prepare_param($val, (is_null($min_username) ? '' : $min_username), $tohash, $charset);
         } else if ($val == 'grpauth') {
             if (isset($_GET['group'])) {
                 $res = XDB::query("SELECT  perms