Updates fusionax scripts for better compliance.
authorStéphane Jacob <jacou@melix.net>
Fri, 12 Sep 2008 09:28:56 +0000 (11:28 +0200)
committerStéphane Jacob <jacou@melix.net>
Fri, 12 Sep 2008 09:28:56 +0000 (11:28 +0200)
modules/fusionax.php
modules/fusionax/Activites.sql
modules/fusionax/Adresses.sql
modules/fusionax/Anciens.sql
modules/fusionax/Entreprises.sql
modules/fusionax/Formations.sql
modules/fusionax/import-ax.sh
templates/fusionax/import.tpl
upgrade/merge-0.0.1/01_emails.sql

index ff3e33d..a4116a8 100644 (file)
@@ -36,8 +36,8 @@ class FusionAxModule extends PLModule{
 
     function __construct()
     {
-        $this->ax_xorg_rsa_key =
-            dirname(__FILE__).'/../configs/ax_xorg_rsa.pem';
+        /*$this->ax_xorg_rsa_key =
+            dirname(__FILE__).'/../configs/ax_xorg_rsa.pem';*/
     }
 
     function handlers()
@@ -63,7 +63,7 @@ class FusionAxModule extends PLModule{
                 date("d-m-Y",$globals->fusionax->LastUpdate));
         } 
     }
-    
+
     /** Import de l'annuaire de l'AX depuis l'export situé sur leur serveur */
     function handler_import(&$page, $action = 'index', $fileSQL = '')
     {
@@ -77,20 +77,20 @@ class FusionAxModule extends PLModule{
                     'lastimport',
                     "le ".date("d/m/Y à H:i",$globals->fusionax->LastUpdate));
             }
-            if (!file_exists($this->ax_xorg_rsa_key)) {
+            /*if (!file_exists($this->ax_xorg_rsa_key)) {
                 $page->assign(
                     'keymissing',
                     $this->ax_xorg_rsa_key);
-            }
+            }*/
             return;
         }
-        
+
         // toutes les actions sont faites en ajax en utilisant jquery
         header("Content-type: text/javascript; charset=utf-8");
-        
+
         // log des actions
         $report = array();
-        
+
         // création d'un fichier temporaire si nécessaire
         if (Env::has('tmpdir')) {
             $tmpdir = Env::v('tmpdir');
@@ -101,18 +101,18 @@ class FusionAxModule extends PLModule{
             chmod($tmpdir, 0700);
             // copie la clef d'authentification (paire de clef RSA dont la
             // partie publique est sur polytechniciens.com)
-            if (!copy(
+            /*if (!copy(
                 $this->ax_xorg_rsa_key,
                 $tmpdir.'/ax_xorg_rsa'))
                 $report[] = 'Impossible de copier la clef pour se logger '.
                     'au serveur AX';
-            chmod($tmpdir.'/ax_xorg_rsa', 0600);
+            chmod($tmpdir.'/ax_xorg_rsa', 0600);*/
         }
-        
+
         $modulepath = realpath(dirname(__FILE__).'/fusionax/').'/';
         $olddir = getcwd();
         chdir($tmpdir);
-        
+
         if ($action == 'launch') {
             // lancement : connexion en ssh et récupération du fichier depuis
             // polyechniciens.com, décompression de l'archive et séparation en
@@ -182,12 +182,12 @@ class FusionAxModule extends PLModule{
         // exit pour ne pas afficher la page template par défaut
         exit;
     }
-    
+
     /** Lier les identifiants d'un ancien dans les deux annuaires
      * @param user_id identifiant dans l'annuaire X.org
      * @param matricule_ax identifiant dans l'annuaire de l'AX
      * @return 0 si la liaison a échoué, 1 sinon
-     */          
+     */
     private static function link_by_ids($user_id, $matricule_ax)
     {
         if (!XDB::execute("
@@ -210,13 +210,13 @@ class FusionAxModule extends PLModule{
         }
         return XDB::affectedRows() / 2;  
     }
-    
+
     /** Recherche automatique d'anciens à lier entre les deux annuaires
      * @param limit nombre d'anciens à trouver au max
      * @param sure si true, ne trouve que des anciens qui sont quasi sûrs
      * @return un XOrgDBIterator sur les entrées avec display_name, promo,
      * user_id, id_ancien et display_name_ax
-     */              
+     */
     private static function find_easy_to_link($limit = 10, $sure = false)
     {
         $easy_to_link = XDB::iterator("
@@ -265,7 +265,7 @@ class FusionAxModule extends PLModule{
             nbMatches = 1
         ".($limit?('LIMIT '.$limit):''));
     }
-    
+
     /** Module de mise en correspondance les ids */
     function handler_ids(
         &$page,
@@ -275,7 +275,7 @@ class FusionAxModule extends PLModule{
     {
         global $globals;
         $page->addJsLink('jquery.js');
-        
+
         $page->assign(
             'xorg_title',
             'Polytechnique.org - Fusion - Mise en correspondance simple');
@@ -355,7 +355,7 @@ class FusionAxModule extends PLModule{
             }
         }
     }
-    
+
     function handler_misc(&$page)
     {
         $page->changeTpl('fusionax/misc.tpl');
index 7db895a..07a3c57 100644 (file)
@@ -3,12 +3,12 @@
 DROP TABLE IF EXISTS `fusionax_activites`;
 
 CREATE TABLE IF NOT EXISTS `fusionax_activites` (
-  `AC` varbinary(2) NOT NULL COMMENT 'Vaut toujours AC pour cette table',
-  `id_ancien` varbinary(8) NOT NULL COMMENT 'Id unique de l''ancien',
-  `hash_activite` binary(5) NOT NULL COMMENT 'Hash de cette ligne pour la lier à l''adresse',
-  `Code_etab` varbinary(10) NOT NULL COMMENT 'Code de l''établissement',
-  `Raison_sociale` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'Raison sociale de l''établissement',
-  `Libelle_fonctio` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'Libéllé de la fonction',
+  `AC` CHAR(2) NOT NULL COMMENT 'Vaut toujours AC pour cette table',
+  `id_ancien` VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien',
+  `hash_activite` BINARY(5) NOT NULL COMMENT 'Hash de cette ligne pour la lier à l''adresse',
+  `Code_etab` INT(10) NOT NULL COMMENT 'Code de l''établissement',
+  `Raison_sociale` VARCHAR(255) collate utf8_unicode_ci NOT NULL COMMENT 'Raison sociale de l''établissement',
+  `Libelle_fonctio` VARCHAR(255) collate utf8_unicode_ci NOT NULL COMMENT 'Libéllé de la fonction',
   `Annuaire` BOOLEAN NOT NULL COMMENT 'publiable dans l''annuaire papier',
   `Date_maj` DATE NOT NULL COMMENT 'Date de mise à jour de ces informations',
   PRIMARY KEY( `id_ancien` , `hash_activite` )
index 1b9ed47..3ce99f0 100644 (file)
@@ -1,24 +1,24 @@
 -- Import complet des adresses
 
-DROP TABLE IF EXISTS `fusionax_adresses`;
+DROP TABLE IF EXISTS fusionax_adresses;
 
-CREATE TABLE IF NOT EXISTS `fusionax_adresses` (
-  `provenance` varbinary(2) NOT NULL COMMENT 'Vaut AC, AD ou AN selon la provenance de l''info',
-  `id_ancien` varbinary(8) NOT NULL COMMENT 'Id unique de l''ancien',
-  `Type_adr` enum('E', 'P') character set binary NOT NULL DEFAULT 'P' COMMENT 'Type d''adresse : E pour Entreprise, P pour Personnelle',
-  `hash_adresse` binary(5) NOT NULL COMMENT 'Hash pour différencier les diverses adresses',
-  `Ligne1` varchar(60) character set utf8 NOT NULL,
-  `Ligne2` varchar(60) character set utf8 NOT NULL,
-  `Ligne3` varchar(60) character set utf8 NOT NULL,
-  `code_postal` varchar(20) character set utf8 NOT NULL,
-  `ville` varchar(40) character set utf8 NOT NULL,
-  `zip_cedex` varchar(20) character set utf8 NOT NULL,
-  `etat_distr` varchar(20) character set utf8 NOT NULL,
-  `pays` varchar(50) character set utf8 NOT NULL,
-  `tel` varbinary(30) NOT NULL,
-  `fax` varbinary(30) NOT NULL,
-  `Date_maj` date NOT NULL,
-  PRIMARY KEY  (`id_ancien`, `hash_adresse`)
+CREATE TABLE IF NOT EXISTS fusionax_adresses (
+  provenance CHAR(2) NOT NULL COMMENT 'Vaut AC, AD ou AN selon la provenance de l''info',
+  id_ancien VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien',
+  Type_adr ENUM('E', 'P') character set binary NOT NULL DEFAULT 'P' COMMENT 'Type d''adresse : E pour Entreprise, P pour Personnelle',
+  hash_adresse BINARY(5) NOT NULL COMMENT 'Hash pour différencier les diverses adresses',
+  Ligne1 VARCHAR(90) character set utf8 NOT NULL,
+  Ligne2 VARCHAR(90) character set utf8 NOT NULL,
+  Ligne3 VARCHAR(90) character set utf8 NOT NULL,
+  code_postal VARCHAR(20) character set utf8 NOT NULL,
+  ville VARCHAR(80) character set utf8 NOT NULL,
+  zip_cedex VARCHAR(20) character set utf8 NOT NULL,
+  etat_distr VARCHAR(20) character set utf8 NOT NULL,
+  pays VARCHAR(50) character set utf8 NOT NULL,
+  tel VARCHAR(30) NOT NULL,
+  fax VARCHAR(30) NOT NULL,
+  Date_maj DATE NOT NULL,
+  PRIMARY KEY  (id_ancien, hash_adresse)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
 LOAD DATA LOCAL INFILE 'Adresses.txt' INTO TABLE `fusionax_adresses` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'
index 4aa07de..dd88f9b 100644 (file)
@@ -1,34 +1,34 @@
 -- Import complet des anciens
 
-DROP TABLE IF EXISTS `fusionax_anciens`;
+DROP TABLE IF EXISTS fusionax_anciens;
 
-CREATE TABLE IF NOT EXISTS `fusionax_anciens` (
-  `AN` varbinary(2) NOT NULL COMMENT 'Vaut toujours AN pour cette table',
-  `id_ancien` varbinary(8) NOT NULL COMMENT 'Id unique de l''ancien',
-  `Login` varbinary(15) NOT NULL COMMENT 'Login sur le site de l''AX',
-  `Password` int(11) NOT NULL COMMENT 'Mot de passe sur le site AX',
-  `promotion_etude` int(11) NOT NULL COMMENT 'Promotion avec laquelle il/elle a fait ses études',
-  `Groupe_promo` enum('','A','B','C','N','S') character set binary NOT NULL COMMENT 'Groupe de promotion (code compris seulement par AX)',
-  `Nom_patronymique` varchar(50) character set utf8 NOT NULL COMMENT 'Nom patronymique (nom de jeune fille) sans la particule',
-  `partic_patro` varchar(5) character set utf8 NOT NULL COMMENT 'Particule du nom patronymique',
-  `prenom` varchar(30) character set utf8 NOT NULL COMMENT 'Prénom',
-  `Nom_usuel` varchar(50) character set utf8 NOT NULL COMMENT 'Nom usuel (nom marital par exemple) sans la particule',
-  `partic_nom` varchar(5) character set utf8 NOT NULL COMMENT 'Particule du nom usuel',
-  `Nom_complet` varchar(80) character set utf8 NOT NULL COMMENT 'Nom patronymique complet (avec la particule)',
-  `Civilite` enum('','.','M','MME','MLLE') character set utf8 NOT NULL COMMENT 'Civilité',
-  `Code_nationalite` varbinary(2) NOT NULL COMMENT 'Nationalité (code)',
-  `Type_membre` enum('','*','F','FB','P','PB','T','TB','TA') character set binary NOT NULL COMMENT 'Type de membre (code compris seulement par AX)',
-  `corps_sortie` varchar(10) character set utf8 NOT NULL COMMENT 'Corps de sortie (ou D si aucun)',
-  `Date_deces` DATE COMMENT 'Date de décès',
-  `grade` varbinary(20) NOT NULL COMMENT 'Grade actuel dans son corps',
-  `Mel_usage` varbinary(150) NOT NULL COMMENT 'Adresse e-mail d''usage',
-  `Mel_publiable` tinyint(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail',
-  `tel_mobile` varbinary(30) NOT NULL COMMENT 'Numéro de téléphone mobile',
-  `annee_dernCot` int(11) NOT NULL COMMENT 'Année de dernière cotisation AX',
-  `Representant` enum('','K','DE') character set binary NOT NULL COMMENT 'Représentant de promotion',
-  `hash_adr_defaut` binary(5) NOT NULL COMMENT 'Hash de l''adresse par défaut',
-  `Date_maj` DATE NOT NULL,
-  PRIMARY KEY  (`id_ancien`)
+CREATE TABLE IF NOT EXISTS fusionax_anciens (
+  AN CHAR(2) NOT NULL COMMENT 'Vaut toujours AN pour cette table',
+  id_ancien VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien',
+  Login VARCHAR(15) NOT NULL COMMENT 'Login sur le site de l''AX',
+  Password INT(11) NOT NULL COMMENT 'Mot de passe sur le site AX',
+  promotion_etude SMALLINT(4) NOT NULL COMMENT 'Promotion avec laquelle il/elle a fait ses études',
+  Groupe_promo ENUM('', 'A', 'B', 'C', 'N', 'S') NOT NULL COMMENT 'Groupe de promotion (code compris seulement par AX)',
+  Nom_patronymique VARCHAR(255) NOT NULL COMMENT 'Nom patronymique (nom de jeune fille) sans la particule',
+  partic_patro VARCHAR(5) NOT NULL COMMENT 'Particule du nom patronymique',
+  prenom VARCHAR(30) NOT NULL COMMENT 'Prénom',
+  Nom_usuel VARCHAR(255) NOT NULL COMMENT 'Nom usuel (nom marital par exemple) sans la particule',
+  partic_nom VARCHAR(5) NOT NULL COMMENT 'Particule du nom usuel',
+  Nom_complet VARCHAR(255) NOT NULL COMMENT 'Nom patronymique complet (avec la particule)',
+  Civilite ENUM('', '.', 'M', 'MME', 'MLLE') NOT NULL COMMENT 'Civilité',
+  Code_nationalite CHAR(3) NOT NULL COMMENT 'Nationalité (code)',
+  Type_membre ENUM('', '*', 'F', 'FB', 'P', 'PB', 'T', 'TB', 'TA') NOT NULL COMMENT 'Type de membre (code compris seulement par AX)',
+  corps_sortie VARCHAR(50) NOT NULL COMMENT 'Corps de sortie (ou D si aucun)',
+  Date_deces DATE COMMENT 'Date de décès',
+  grade VARCHAR(50) NOT NULL COMMENT 'Grade actuel dans son corps',
+  Mel_usage VARCHAR(255) NOT NULL COMMENT 'Adresse e-mail d''usage',
+  Mel_publiable TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail',
+  tel_mobile VARCHAR(30) NOT NULL COMMENT 'Numéro de téléphone mobile',
+  annee_dernCot INT(11) NOT NULL COMMENT 'Année de dernière cotisation AX',
+  Representant ENUM('', 'K', 'DE') NOT NULL COMMENT 'Représentant de promotion',
+  hash_adr_defaut BINARY(5) NOT NULL COMMENT 'Hash de l''adresse par défaut',
+  Date_maj DATE NOT NULL,
+  PRIMARY KEY  (id_ancien)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
 LOAD DATA LOCAL INFILE 'Anciens.txt' INTO TABLE `fusionax_anciens` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'
@@ -43,11 +43,11 @@ SET
 
 -- Correspondances entre fiches X.org et fiches AX
 DROP TABLE IF EXISTS `fusionax_import`;
+
 CREATE TABLE IF NOT EXISTS `fusionax_import` (
-  `id_ancien` binary(8) NOT NULL COMMENT 'identifiant AX de l''ancien',
-  `user_id` int(11) default NULL COMMENT 'identifiant x.org de l''ancien si on l''a trouvé',
-  `date_match_id` timestamp NULL default NULL COMMENT 'date de mise en correspondance des identifiants',
+  `id_ancien` VARCHAR(8) NOT NULL COMMENT 'identifiant AX de l''ancien',
+  `user_id` INT(11) default NULL COMMENT 'identifiant x.org de l''ancien si on l''a trouvé',
+  `date_match_id` TIMESTAMP NULL default NULL COMMENT 'date de mise en correspondance des identifiants',
   PRIMARY KEY  (`id_ancien`),
   KEY `user_id` (`user_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
index 651d24b..886fe49 100644 (file)
@@ -3,15 +3,15 @@
 DROP TABLE IF EXISTS `fusionax_entreprises`;
 
 CREATE TABLE IF NOT EXISTS `fusionax_entreprises` (
-  `EN` varbinary(2) NOT NULL COMMENT 'Vaut toujours EN pour cette table',
-  `Code_etab` varbinary(10) NOT NULL COMMENT 'Code de l''établissement',
-  `Raison_sociale` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'Raison sociale de l''établissement',
-  `Sigle` varchar(50) collate utf8_unicode_ci NOT NULL COMMENT 'Sigle de l''établissement',
+  `EN` CHAR(2) NOT NULL COMMENT 'Vaut toujours EN pour cette table',
+  `Code_etab` INT(10) NOT NULL COMMENT 'Code de l''établissement',
+  `Raison_sociale` VARCHAR(255) collate utf8_unicode_ci NOT NULL COMMENT 'Raison sociale de l''établissement',
+  `Sigle` VARCHAR(50) collate utf8_unicode_ci NOT NULL COMMENT 'Sigle de l''établissement',
   `Date_maj` DATE NOT NULL COMMENT 'Date de mise à jour de ces informations',
   PRIMARY KEY(`Code_etab`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
 LOAD DATA LOCAL INFILE 'Entreprises.txt' INTO TABLE `fusionax_entreprises` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'
 (EN, Code_etab, Raison_sociale, Sigle, @Inconnu, @StringDate_maj)
-SET 
+SET
 `Date_maj` = CONCAT(SUBSTRING(@StringDate_maj,7),'-',SUBSTRING(@StringDate_maj,4,2),'-',SUBSTRING(@StringDate_maj,1,2));
index 7d2854a..d48f18c 100644 (file)
@@ -3,9 +3,9 @@
 DROP TABLE IF EXISTS `fusionax_formations`;
 
 CREATE TABLE IF NOT EXISTS `fusionax_formations` (
-  `FO` varbinary(2) NOT NULL COMMENT 'Vaut toujours FO pour cette table',
-  `id_ancien` varbinary(8) NOT NULL COMMENT 'Id unique de l''ancien',
-  `Intitule_formation` varchar(60) collate utf8_unicode_ci NOT NULL COMMENT 'Intitulé de la formation',
+  `FO` CHAR(2) NOT NULL COMMENT 'Vaut toujours FO pour cette table',
+  `id_ancien` VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien',
+  `Intitule_formation` VARCHAR(60) collate utf8_unicode_ci NOT NULL COMMENT 'Intitulé de la formation',
   `Date_maj` DATE NOT NULL COMMENT 'Date de mise à jour de ces informations',
   PRIMARY KEY (`id_ancien`, `Intitule_formation`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
index 35b4b6a..505f87b 100755 (executable)
@@ -1,15 +1,16 @@
 #! /bin/bash
 
 # import des données
-scp -i ax_xorg_rsa xorg@polytechniciens.com:/home/axasso/ax-import/export_4D.txt.rar .
-unrar e -inul export_4D.txt.rar
+#scp -i ax_xorg_rsa xorg@polytechniciens.com:/home/axasso/ax-import/export_4D.txt.rar .
+#unrar e -inul export_4D.txt.rar
+cp /home/x2004jacob/export*utf8.TXT .
 
 # séparation en fichiers de tables 
-cat export-total* | grep ^AD > Adresses.txt
-cat export-total* | grep ^AN > Anciens.txt
-cat export-total* | grep ^FO > Formations.txt
-cat export-total* | grep ^AC > Activites.txt
-cat export-total* | grep ^EN > Entreprises.txt
+cat export_total* | grep ^AD > Adresses.txt
+cat export_total* | grep ^AN > Anciens.txt
+cat export_total* | grep ^FO > Formations.txt
+cat export_total* | grep ^AC > Activites.txt
+cat export_total* | grep ^EN > Entreprises.txt
 
 exit 1
 
@@ -23,4 +24,5 @@ $MYSQL x4dat < Entreprises.sql
 
 # nettoyage
 echo nettoyage
-rm Adresses.txt Anciens.txt Formations.txt Activites.txt Entreprises.txt export_4D.txt.rar export-total*
+#rm Adresses.txt Anciens.txt Formations.txt Activites.txt Entreprises.txt export_4D.txt.rar export-total*
+rm Adresses.txt Anciens.txt Formations.txt Activites.txt Entreprises.txt export-total*
index 7982e3d..a6b2e99 100644 (file)
@@ -26,7 +26,7 @@
     $(document).ready(function() {
         $('#fusionax_import input').click(function() {
             $('#fusionax_import input').hide();
-            $('#fusionax_import').append('Import en cours : récupération du fichier depuis le serveur de l\'AX...<br/>');
+            $('#fusionax_import').append('Lancement de l\'import.<br/>');
             $.getScript('fusionax/import/launch');
         });
     });
index 30c9ba4..55de747 100644 (file)
@@ -1,13 +1,13 @@
 INSERT INTO  profile_directory (uid, email_directory)
      SELECT  user_id, Mel_usage
        FROM  fusionax_anciens AS ax
- INNER JOIN  auth_user_md5    AS u ON (ax.id_ancien = CONVERT(u.matricule_ax, BINARY))
+ INNER JOIN  auth_user_md5    AS u ON (ax.id_ancien = u.matricule_ax)
       WHERE  Mel_publiable != '0' AND Mel_usage != '';
 
 INSERT IGNORE INTO  register_marketing (uid, email, type)
             SELECT  user_id, Mel_usage, 'ax'
               FROM  fusionax_anciens AS ax
-        INNER JOIN  auth_user_md5    AS u ON (ax.id_ancien = CONVERT(u.matricule_ax, BINARY))
+        INNER JOIN  auth_user_md5    AS u ON (ax.id_ancien = u.matricule_ax)
          LEFT JOIN  emails           AS e ON (e.uid = u.user_id AND e.flags = 'active')
              WHERE  Mel_usage != '' AND
                     Mel_usage NOT LIKE '%@polytechnique.edu' AND