Shortens profile_name_search* in profile_name*.
[platal.git] / modules / profile.php
index 293f3a6..51302ed 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   *
@@ -42,11 +42,12 @@ class ProfileModule extends PLModule
             'profile/ajax/ssecteur'      => $this->make_hook('ajax_ssecteur',              AUTH_COOKIE, 'user', NO_AUTH),
             'profile/ajax/skill'         => $this->make_hook('ajax_skill',                 AUTH_COOKIE, 'user', NO_AUTH),
             'profile/ajax/searchname'    => $this->make_hook('ajax_searchname',            AUTH_COOKIE, 'user', NO_AUTH),
+            'profile/ajax/buildnames'    => $this->make_hook('ajax_buildnames',            AUTH_COOKIE, 'user', NO_AUTH),
             'javascript/education.js'    => $this->make_hook('education_js',               AUTH_COOKIE),
             'javascript/grades.js'       => $this->make_hook('grades_js',                  AUTH_COOKIE),
             'profile/medal'              => $this->make_hook('medal',                      AUTH_PUBLIC),
+            'profile/name_info'          => $this->make_hook('name_info',                  AUTH_PUBLIC),
             'profile/orange'             => $this->make_hook('p_orange',                   AUTH_MDP),
-            'profile/usage'              => $this->make_hook('p_usage',                    AUTH_MDP),
 
             'referent'                   => $this->make_hook('referent',                   AUTH_COOKIE),
             'emploi'                     => $this->make_hook('ref_search',                 AUTH_COOKIE),
@@ -138,6 +139,19 @@ class ProfileModule extends PLModule
         exit;
     }
 
+    function handler_name_info(&$page)
+    {
+        header('Content-Type: text/html; charset=utf-8');
+        $page->changeTpl('profile/name_info.tpl', SIMPLE);
+        $res = XDB::iterator("SELECT  name, explanations,
+                                      FIND_IN_SET('public', flags) AS public,
+                                      FIND_IN_SET('has_particle', flags) AS has_particle
+                                FROM  profile_name_enum
+                               WHERE  NOT FIND_IN_SET('not_displayed', flags)
+                            ORDER BY  NOT FIND_IN_SET('public', flags)");
+        $page->assign('types', $res);
+    }
+
     function handler_networking(&$page, $mid)
     {
         $res = XDB::query("SELECT  icon
@@ -374,7 +388,7 @@ class ProfileModule extends PLModule
                             WHERE  user_id = {?} AND naissance = '0000-00-00'", S::i('uid'));
         if ($res->numRows()) {
             $page->trigWarning("Ta date de naissance n'est pas renseignée, ce qui t'empêcheras de réaliser"
-                      . " la procédure de récupération de mot de passe si un jour tu le perdais");
+                      . " la procédure de récupération de mot de passe si un jour tu le perdais.");
         }
 
        $page->setTitle('Mon Profil');
@@ -439,7 +453,7 @@ class ProfileModule extends PLModule
     function handler_ajax_edu(&$page, $eduid, $class)
     {
         header('Content-Type: text/html; charset=utf-8');
-        $page->changeTpl('profile/edu.tpl', NO_SKIN);
+        $page->changeTpl('profile/general.edu.tpl', NO_SKIN);
         $res = XDB::iterator("SELECT  id, field
                                 FROM  profile_education_field_enum
                             ORDER BY  field");
@@ -524,24 +538,35 @@ class ProfileModule extends PLModule
         }
     }
 
-    function handler_ajax_searchname(&$page, $snid)
+    function handler_ajax_searchname(&$page, $id)
     {
         header('Content-Type: text/html; charset=utf-8');
         $page->changeTpl('profile/general.searchname.tpl', NO_SKIN);
-        $page->assign('i', $snid);
-        $page->assign('sn', array());
-        $page->assign('newsn', true);
+        $res = XDB::query("SELECT  id, name, FIND_IN_SET('public', flags) AS pub
+                             FROM  profile_name_enum
+                            WHERE  NOT FIND_IN_SET('not_displayed', flags)
+                                   AND NOT FIND_IN_SET('always_displayed', flags)");
+        $page->assign('sn_type_list', $res->fetchAllAssoc());
+        $page->assign('i', $id);
     }
-    
+
+    function handler_ajax_buildnames(&$page, $data)
+    {
+        header('Content-Type: text/html; charset=utf-8');
+        $page->changeTpl('profile/general.buildnames.tpl', NO_SKIN);
+        require_once 'name.func.inc.php';
+        $page->assign('names', build_javascript_names($data));
+    }
+
     function handler_p_orange(&$page)
     {
         $page->changeTpl('profile/orange.tpl');
 
         require_once 'validations.inc.php';
 
-        $res = XDB::query("SELECT  e.entry_year, e.grad_year, d.promo_display, FIND_IN_SET('femme', u.flags) AS sexe
+        $res = XDB::query("SELECT  e.entry_year, e.grad_year, d.promo, FIND_IN_SET('femme', u.flags) AS sexe
                              FROM  auth_user_md5     AS u
-                       INNER JOIN  profile_display   AS d ON (d.uid = u.user_id)
+                       INNER JOIN  profile_display   AS d ON (d.pid = u.user_id)
                        INNER JOIN  profile_education AS e ON (e.uid = u.user_id AND FIND_IN_SET('primary', e.flags))
                             WHERE  u.user_id = {?}", S::v('uid'));
 
@@ -719,49 +744,6 @@ class ProfileModule extends PLModule
         $page->assign('list', $it);
     }
 
-    function handler_p_usage(&$page)
-    {
-        $page->changeTpl('profile/nomusage.tpl');
-
-        require_once 'validations.inc.php';
-
-        $res = XDB::query(
-                "SELECT  u.nom, u.nom_usage, u.flags, e.alias
-                   FROM  auth_user_md5  AS u
-              LEFT JOIN  aliases        AS e ON(u.user_id = e.id
-                                                AND FIND_IN_SET('usage', e.flags))
-                  WHERE  user_id={?}", S::v('uid'));
-
-        list($nom, $usage_old, $flags, $alias_old) = $res->fetchOneRow();
-        $flags = new PlFlagSet($flags);
-        $page->assign('usage_old', $usage_old);
-        $page->assign('alias_old',  $alias_old);
-
-        $nom_usage = replace_accent(trim(Env::v('nom_usage')));
-        $nom_usage = strtoupper($nom_usage);
-        $page->assign('usage_req', $nom_usage);
-
-        if (Env::has('submit') && ($nom_usage != $usage_old)) {
-            S::assert_xsrf_token();
-
-            // on vient de recevoir une requete, differente de l'ancien nom d'usage
-            if ($nom_usage == $nom) {
-                $page->trigWarning('Le nom d\'usage que tu demandes est identique à ton nom à l\'X, '
-                                   . 'aucune modification n\'a donc été effectuée.');
-                $page->assign('same', true);
-            } else { // le nom de mariage est distinct du nom à l'X
-                // on calcule l'alias pour l'afficher
-                $reason = Env::v('reason');
-                if ($reason == 'other') {
-                    $reason = Env::v('other_reason');
-                }
-                $myusage = new UsageReq(S::user(), $nom_usage, $reason);
-                $myusage->submit();
-                $page->assign('myusage', $myusage);
-            }
-        }
-    }
-
     function handler_xnet(&$page)
     {
         $page->changeTpl('profile/groupesx.tpl');