Use mysqli for LOAD DATA LOCAL INFILE.
[platal.git] / modules / fusionax.php
index 16aa488..fc43d3d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2011 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -89,6 +89,7 @@ class FusionAxModule extends PLModule
     /** Import de l'annuaire de l'AX depuis l'export situé dans le home de jacou */
     function handler_import($page, $action = 'index', $file = '')
     {
+        global $globals;
         if ($action == 'index') {
             $page->changeTpl('fusionax/import.tpl');
             return;
@@ -143,6 +144,11 @@ class FusionAxModule extends PLModule
             if ($file != '') {
                 // récupère le contenu du fichier sql
                 $queries = explode(';', file_get_contents($modulepath . $filesSQL[$file]));
+                $db = mysqli_init();
+                $db->options(MYSQLI_OPT_LOCAL_INFILE, true);
+                $db->real_connect($globals->dbhost, $globals->dbuser, $globals->dbpwd, $globals->dbdb);
+                $db->autocommit(true);
+                $db->set_charset($globals->dbcharset);
                 foreach ($queries as $q) {
                     if (trim($q)) {
                         // coupe le fichier en requêtes individuelles
@@ -153,9 +159,13 @@ class FusionAxModule extends PLModule
                             $report[] = addslashes($l);
                         }
                         // exécute la requête
-                        XDB::execute(str_replace('{?}', $spoolpath, $q));
+                        $res = $db->query(str_replace('{?}', $spoolpath, $q));
+                        if ($res === false) {
+                            throw new XDBException($q, $db->error);
+                        }
                     }
                 }
+                $db->close();
                 // trouve le prochain fichier à exécuter
                 $nextfile = $file + 1;
             } else {
@@ -958,5 +968,5 @@ class FusionAxModule extends PLModule
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>