From 22f043e40dbab2dccdc909151402c1ff53baf925 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Fri, 12 Sep 2008 11:28:56 +0200 Subject: [PATCH] Updates fusionax scripts for better compliance. --- modules/fusionax.php | 38 +++++++++++------------ modules/fusionax/Activites.sql | 12 ++++---- modules/fusionax/Adresses.sql | 36 +++++++++++----------- modules/fusionax/Anciens.sql | 64 +++++++++++++++++++-------------------- modules/fusionax/Entreprises.sql | 10 +++--- modules/fusionax/Formations.sql | 6 ++-- modules/fusionax/import-ax.sh | 18 ++++++----- templates/fusionax/import.tpl | 2 +- upgrade/merge-0.0.1/01_emails.sql | 4 +-- 9 files changed, 96 insertions(+), 94 deletions(-) diff --git a/modules/fusionax.php b/modules/fusionax.php index ff3e33d..a4116a8 100644 --- a/modules/fusionax.php +++ b/modules/fusionax.php @@ -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'); diff --git a/modules/fusionax/Activites.sql b/modules/fusionax/Activites.sql index 7db895a..07a3c57 100644 --- a/modules/fusionax/Activites.sql +++ b/modules/fusionax/Activites.sql @@ -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` ) diff --git a/modules/fusionax/Adresses.sql b/modules/fusionax/Adresses.sql index 1b9ed47..3ce99f0 100644 --- a/modules/fusionax/Adresses.sql +++ b/modules/fusionax/Adresses.sql @@ -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' diff --git a/modules/fusionax/Anciens.sql b/modules/fusionax/Anciens.sql index 4aa07de..dd88f9b 100644 --- a/modules/fusionax/Anciens.sql +++ b/modules/fusionax/Anciens.sql @@ -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; diff --git a/modules/fusionax/Entreprises.sql b/modules/fusionax/Entreprises.sql index 651d24b..886fe49 100644 --- a/modules/fusionax/Entreprises.sql +++ b/modules/fusionax/Entreprises.sql @@ -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)); diff --git a/modules/fusionax/Formations.sql b/modules/fusionax/Formations.sql index 7d2854a..d48f18c 100644 --- a/modules/fusionax/Formations.sql +++ b/modules/fusionax/Formations.sql @@ -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; diff --git a/modules/fusionax/import-ax.sh b/modules/fusionax/import-ax.sh index 35b4b6a..505f87b 100755 --- a/modules/fusionax/import-ax.sh +++ b/modules/fusionax/import-ax.sh @@ -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* diff --git a/templates/fusionax/import.tpl b/templates/fusionax/import.tpl index 7982e3d..a6b2e99 100644 --- a/templates/fusionax/import.tpl +++ b/templates/fusionax/import.tpl @@ -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...
'); + $('#fusionax_import').append('Lancement de l\'import.
'); $.getScript('fusionax/import/launch'); }); }); diff --git a/upgrade/merge-0.0.1/01_emails.sql b/upgrade/merge-0.0.1/01_emails.sql index 30c9ba4..55de747 100644 --- a/upgrade/merge-0.0.1/01_emails.sql +++ b/upgrade/merge-0.0.1/01_emails.sql @@ -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 -- 2.1.4