commit 7074cc574b1a664db57ae9aa775b4cae9522a761
Author: Eric Seigne <eric.seigne@ryxeo.com>
Date:   Tue Jul 26 11:40:02 2011 +0200

    migration

diff --git a/plugins/anet_migration/front/plugin_anet_migration.config.form.php b/plugins/anet_migration/front/plugin_anet_migration.config.form.php
new file mode 100644
index 0000000..ceb141b
--- /dev/null
+++ b/plugins/anet_migration/front/plugin_anet_migration.config.form.php
@@ -0,0 +1,50 @@
+<?php
+
+//Création automatique des 2000 packs dans la base de données
+
+if(!defined('GLPI_ROOT')){
+  define('GLPI_ROOT', '../../..'); 
+}
+include_once (GLPI_ROOT . "/inc/includes.php");
+
+checkRight("config","w");
+
+commonHeader("anet_migration",$_SERVER['PHP_SELF'],"config","plugins");
+
+/*
+// Pour le jour où on aura un réel développement GLPI ... en attendant je fais un appel
+// brutal au fichier ...
+
+echo "<div align='center'>";
+echo "<form method='post' action=\"./plugin_aner-migration.config.php\">";
+echo "<table class='tab_cadre' cellpadding='5'>";
+echo "<tr><th colspan=\"2\">Configuration anet-migration</th></tr>";
+if (haveRight("config","w")){
+	echo "<tr><td>Nombre de packs</td><td><input type=\"text\" name=\"nombre\" value=\"2000\"></td></tr>";
+	echo "<tr><td>Racine</td><td><input type=\"text\" name=\"nombre\" value=\"ENR\"></td></tr>";
+	echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\"></td></tr>";
+}
+echo "</table></div>";
+*/
+
+print "<p>Editez le fichier plugin_anet_migration.config.form.php et retournez sur cette page pour créer automatiquement 2000 packs</p>";
+print "<p>Voyez ça avec Éric !</p>";
+//On fait ça a la main pour l'instant
+/*
+global $DB;
+$nb_packs = 2000;
+$prefix = "ENR09-01-";
+for($i = 0; $i < $nb_packs; $i++) {
+  srand();
+  $code=$prefix . rand(1000,9999) . "-" . chr(rand(65,90)) . chr(rand(65,90)) . chr(rand(65,90)) . chr(rand(65,90)) . "-" . rand(1000,9999);
+  $password=rand(1000,9999) . "-" . rand(1000,9999);
+  $query="INSERT into glpi_plugin_anet_migration values('','','','2011-12-31','$code','$password',0,0,0,0);";
+  //print "<p>" . $query . "</p>";
+  //exit;
+  $DB->query($query);// or die($DB->error());
+}
+*/
+
+commonFooter();
+?>
+
diff --git a/plugins/anet_migration/front/plugin_anet_migration.etapes.php b/plugins/anet_migration/front/plugin_anet_migration.etapes.php
new file mode 100644
index 0000000..050408f
--- /dev/null
+++ b/plugins/anet_migration/front/plugin_anet_migration.etapes.php
@@ -0,0 +1,112 @@
+<?php
+/*******
+*
+* migration: collecte des donn�es et envoi par email en attendant
+* de g�n�rer un rapport PDF/OOO
+*
+*******/
+//recup les stats aussi
+
+if(!defined('GLPI_ROOT')){
+  define('GLPI_ROOT', '../../..');
+}
+include_once (GLPI_ROOT . "/inc/includes.php");
+
+$cmd = "bzip2 -dc " . $_FILES['file']['tmp_name'] . " | head -n50";
+$ANET                      = $_POST['ANET'];
+$EPACK                     = $_POST['EPACK'];
+$MESSAGE                   = $_POST['MESSAGE'];
+$ECOLE                     = $_POST['ECOLE'];
+$ETAPE                     = $_POST['ETAPE'];
+$INSTALLATION_NAME         = $_POST['INSTALLATION_NAME'];
+if($ETAPE == "end") {
+  $LOG                       = `$cmd`;
+}
+$IPADDR                    = $_SERVER['REMOTE_ADDR'];
+
+if($INSTALLATION_NAME != "") {
+  if($ETAPE == "prerestaure") {
+    $subject = "[migration] AbulEdu D�but de migration : " . $INSTALLATION_NAME;
+    $mail_body = "
+
+Site:        " . $INSTALLATION_NAME . "
+Ecole:       " . $ECOLE . "
+Compte ANET: " . $ANET . "
+
+Etape: Lancement de la migration ...
+
+--
+Script de collecte de migration ...
+https://anet.ryxeo.com/migration.php
+";
+    
+  }
+  else if($ETAPE == "end") {
+    $subject = "[migration] AbulEdu Rapport : " . $INSTALLATION_NAME;
+    $mail_body = "
+
+Site:        " . $INSTALLATION_NAME . "
+Ecole:       " . $ECOLE . "
+Compte ANET: " . $ANET . "
+Log de la migration:\n\n" . $LOG . "
+
+--
+Script de collecte de migration ...
+https://secure.ryxeo.com/glpi/plugins/anet_migration/front/plugin_anet_migration.etapes.php
+";
+ }
+
+
+  //insersion dans la base GLPI / plugin_migration
+  global $DB;
+  $query = "SELECT id FROM glpi_plugin_anet_epacks WHERE code='" . $EPACK . "'";
+  $result = $DB->query($query);
+  if($result) {
+    $data=$DB->fetch_array($result);
+    $epackid=$data['id'];
+
+    $query2 = "INSERT INTO glpi_plugin_anet_migration(etape,FK_epack,message) VALUES('" . $ETAPE . "','" . $epackid . "','" . $MESSAGE . "')";
+    $result2 = $DB->query($query2);
+  }
+  //@mail("abuledu.installation@ryxeo.com", "[migration] AbulEdu ... (" . $INSTALLATION_NAME . ")", $mail_body);
+
+  if($subject != "") {
+
+    include('Mail.php');
+    include('Mail/mime.php');
+    //$text = $mail_body;
+    $html = "<html>
+<head>
+  <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"> 
+</head>
+<body>
+  <pre>" . $mail_body . "</pre>
+</body>
+</html>\n";
+    $file = $_FILES['file']['tmp_name'];
+    $filename = $_FILES['file']['name'];
+    $crlf = "\n";
+    $hdrs = array( 'From' => 'supportteam@ryxeo.com',
+		   'Subject' => $subject ,
+		   'Content-Type' => 'text/html; charset="UTF-8"'
+		   );
+    
+    $mime = new Mail_mime($crlf);
+    //$mime->setTXTBody($text);
+    $mime->setHTMLBody($html);
+    $mime->addAttachment($file, 'application/octet-stream', $filename);
+    $body = $mime->get(array('text_charset' => 'utf-8', 'html_charset' => 'utf-8'));
+    $hdrs = $mime->headers($hdrs);
+    $mail =& Mail::factory('mail');
+    $mail->send('supportteam@ryxeo.com', $hdrs, $body);
+    
+    
+    //SMS de confirmation
+    $sms_message = urlencode("Fin de la migration de $ECOLE ($INSTALLATION_NAME).");
+    $dest = urlencode($ANET);
+    $url = "https://secure.ryxeo.com/glpi/plugins/anet_epacks/front/plugin_sms_send.php?dest=$dest&message=$sms_message";
+    readfile($url);
+  }
+}
+
+?>
diff --git a/plugins/anet_migration/front/plugin_anet_migration.index.php b/plugins/anet_migration/front/plugin_anet_migration.index.php
new file mode 100644
index 0000000..7735da0
--- /dev/null
+++ b/plugins/anet_migration/front/plugin_anet_migration.index.php
@@ -0,0 +1,72 @@
+<?php
+
+if(!defined('GLPI_ROOT')){
+  define('GLPI_ROOT', '../../..');
+}
+include_once (GLPI_ROOT . "/inc/includes.php");
+
+commonHeader("anet_migration",$_SERVER['PHP_SELF'],"config","plugins");
+
+$glpiid = $_SESSION['glpiID'];
+
+print "<h1>Liste des migrations de serveurs</h1>";
+
+function local_make_array_header() {
+  return   "<table style=\"width:100%; padding: 0 10px 0 10px;\">
+<tr class='tab_bg_2'>
+  <th>Nom / epack</th>
+  <th>Date</th>
+  <th>Étape</th>
+  <th>Message</th>
+</tr>\n";
+
+}
+
+function local_make_array_footer() {
+  $s .= "</table>";
+  return $s;
+}
+
+
+commonHeader("AbulEdu.NET -- Tableau récapitulatif -- Accueil RyXéo",$_SERVER['PHP_SELF'],"config","plugins");
+
+$glpiid = $_SESSION['glpiID'];
+
+global $DB;
+
+$query = "SELECT glpi_profiles.name AS name,glpi_users_profiles.FK_entities as FK_entities FROM glpi_profiles,glpi_users_profiles,glpi_users WHERE glpi_users_profiles.FK_users='" . $glpiid . "' AND glpi_users_profiles.FK_profiles=glpi_profiles.ID GROUP BY FK_entities";
+
+//print $query;
+//exit;
+
+$tab_deja_affiche         = array();
+$num_debut_ligne_maint    = 0;
+$num_debut_ligne_horsmaint = 0;
+
+$result = $DB->query($query);
+if($result) {
+  
+  print local_make_array_header();
+
+  $query2 = "SELECT m.*,e.code FROM glpi_plugin_anet_migration as m
+LEFT JOIN glpi_plugin_anet_epacks as e ON e.id=FK_epack
+GROUP BY FK_epack,etape
+ORDER BY ladate,etape";
+  $result2 = $DB->query($query2);
+  for($i = 0; $i < $DB->numrows($result2); $i++) {
+    $data2=$DB->fetch_array($result2);
+    print "<tr>
+ <td>" . $data2['code'] . "</td>
+ <td>" . $data2['ladate'] . "</td>
+ <td align=\"left\">" . $data2['etape'] . "</td>
+ <td>" . $data2['message'] . "</td>
+</tr>\n";
+  }
+  print local_make_array_footer();
+  
+  commonFooter();
+  exit;
+ }
+
+
+?>
diff --git a/plugins/anet_migration/index.php b/plugins/anet_migration/index.php
new file mode 100644
index 0000000..c80d700
--- /dev/null
+++ b/plugins/anet_migration/index.php
@@ -0,0 +1,9 @@
+<?php
+
+define('GLPI_ROOT', '../..');
+include (GLPI_ROOT."/inc/includes.php");
+
+glpi_header("front/plugin_anet_migration.index.php");
+
+commonFooter();
+?>
diff --git a/plugins/anet_migration/ryxeo.php b/plugins/anet_migration/ryxeo.php
new file mode 100644
index 0000000..0fe8bc7
--- /dev/null
+++ b/plugins/anet_migration/ryxeo.php
@@ -0,0 +1,166 @@
+<?php
+
+// ---------------------------------------------
+// On vire les espaces ponctuations etc.
+// agressif = 0 on est gentil - on ne fait rien
+//          = 1 on vire les accents + tout en minuscules
+//          = 2 on vire aussi les tirets et espaces (login / pass)
+function anti_speciaux($t) {
+  if(trim($t) == "")
+  return ;
+  $texte = strtolower($t);
+  $texte = str_replace(" ","",$texte);
+  $texte = str_replace("?","",$texte);
+  $texte = str_replace("\\","",$texte);
+  $texte = str_replace("/","",$texte);
+  $texte = str_replace("-","",$texte);
+  $texte = str_replace("_","",$texte);
+  $texte = str_replace("'","",$texte);
+  $texte = str_replace('"',"",$texte);
+  $texte = remove_accents($texte);
+  return $texte;
+}
+
+
+/**
+ * Code from wordpress - wordpress.org
+ * Converts all accent characters to ASCII characters.
+ *
+ * If there are no accent characters, then the string given is just returned.
+ *
+ * @since 1.2.1
+ *
+ * @param string $string Text that might have accent characters
+ * @return string Filtered string with replaced "nice" characters.
+ */
+function remove_accents($string) {
+	if ( !preg_match('/[\x80-\xff]/', $string) )
+		return $string;
+
+	if (seems_utf8($string)) {
+		$chars = array(
+		// Decompositions for Latin-1 Supplement
+		chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
+		chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
+		chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
+		chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
+		chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
+		chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
+		chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
+		chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
+		chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
+		chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
+		chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
+		chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
+		chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
+		chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
+		chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
+		chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
+		chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
+		chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
+		chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
+		chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
+		chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
+		chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
+		chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
+		chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
+		chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
+		chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
+		chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
+		chr(195).chr(191) => 'y',
+		// Decompositions for Latin Extended-A
+		chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
+		chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
+		chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
+		chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
+		chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
+		chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
+		chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
+		chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
+		chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
+		chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
+		chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
+		chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
+		chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
+		chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
+		chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
+		chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
+		chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
+		chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
+		chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
+		chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
+		chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
+		chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
+		chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
+		chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
+		chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
+		chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
+		chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
+		chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
+		chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
+		chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
+		chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
+		chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
+		chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
+		chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
+		chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
+		chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
+		chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
+		chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
+		chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
+		chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
+		chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
+		chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
+		chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
+		chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
+		chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
+		chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
+		chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
+		chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
+		chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
+		chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
+		chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
+		chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
+		chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
+		chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
+		chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
+		chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
+		chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
+		chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
+		chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
+		chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
+		chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
+		chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
+		chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
+		chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
+		// Euro Sign
+		chr(226).chr(130).chr(172) => 'E',
+		// GBP (Pound) Sign
+		chr(194).chr(163) => '');
+
+		$string = strtr($string, $chars);
+	} else {
+		// Assume ISO-8859-1 if not UTF-8
+		$chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
+			.chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
+			.chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
+			.chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
+			.chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
+			.chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
+			.chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
+			.chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
+			.chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
+			.chr(252).chr(253).chr(255);
+
+		$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
+
+		$string = strtr($string, $chars['in'], $chars['out']);
+		$double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
+		$double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
+		$string = str_replace($double_chars['in'], $double_chars['out'], $string);
+	}
+
+	return $string;
+}
+
+?>
diff --git a/plugins/anet_migration/setup.php b/plugins/anet_migration/setup.php
new file mode 100644
index 0000000..0810141
--- /dev/null
+++ b/plugins/anet_migration/setup.php
@@ -0,0 +1,24 @@
+<?php
+//anet_migration plugin
+function plugin_init_anet_migration() {
+  global $PLUGIN_HOOKS,$CFG_GLPI;
+
+
+  $PLUGIN_HOOKS['menu_entry']['anet_migration'] = true;
+  $PLUGIN_HOOKS['submenu_entry']['anet_migration']['search'] = 'front/plugin_anet_migration.view.php';
+  $PLUGIN_HOOKS['submenu_entry']['anet_migration']['showall'] = 'front/plugin_anet_migration.view.php';
+  $PLUGIN_HOOKS['submenu_entry']['anet_migration']['summary'] = 'front/plugin_anet_migration.view.php';
+  $PLUGIN_HOOKS['submenu_entry']['anet_migration']['config'] = 'front/plugin_anet_migration.config.form.php';
+
+  $PLUGIN_HOOKS['config_page']['anet_migration'] = 'front/plugin_anet_migration.config.form.php';
+
+}
+
+function plugin_version_anet_migration() {
+  return array ('name' => "anet_migration", 
+		'minGlpiVersion' => '0.71', 
+		'maxGlpiVersion' => '0.71.9', 
+		'version' => '11.07');
+}
+
+?>
