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()
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 = '')
{
'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');
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
// 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("
}
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("
nbMatches = 1
".($limit?('LIMIT '.$limit):''));
}
-
+
/** Module de mise en correspondance les ids */
function handler_ids(
&$page,
{
global $globals;
$page->addJsLink('jquery.js');
-
+
$page->assign(
'xorg_title',
'Polytechnique.org - Fusion - Mise en correspondance simple');
}
}
}
-
+
function handler_misc(&$page)
{
$page->changeTpl('fusionax/misc.tpl');
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` )
-- 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'
-- 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'
-- 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;
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));
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;
#! /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
# 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*
$(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');
});
});
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