diff --git a/htdocs/includes/modules/modTelephonie.class.php b/htdocs/includes/modules/modTelephonie.class.php
index 4a7ff9c7961..bbfe10b8af6 100644
--- a/htdocs/includes/modules/modTelephonie.class.php
+++ b/htdocs/includes/modules/modTelephonie.class.php
@@ -274,7 +274,9 @@ class modTelephonie extends DolibarrModules
$this->dirs[4] = $conf->telephonie->dir_output."/client" ;
$this->dirs[5] = $conf->telephonie->dir_output."/rapports" ;
$this->dirs[6] = $conf->telephonie->dir_output."/ligne/commande/retour" ;
-
+ //
+ $this->load_tables();
+ //
return $this->_init($sql);
}
@@ -288,5 +290,159 @@ class modTelephonie extends DolibarrModules
return $this->_remove($sql);
}
+ /*
+ *
+ *
+ */
+ function load_tables()
+ {
+ /**************************************************************************************
+ *
+ * Chargement fichiers tables/*.sql (non *.key.sql)
+ * A faire avant les fichiers *.key.sql
+ *
+ ***************************************************************************************/
+ $ok = 1;
+ if ($ok)
+ {
+ $dir = DOL_DOCUMENT_ROOT.'/telephonie/sql/';
+
+ $ok = 0;
+ $handle=opendir($dir);
+ $table_exists = 0;
+ while (($file = readdir($handle))!==false)
+ {
+ if (substr($file, strlen($file) - 4) == '.sql' && substr($file,0,4) == 'llx_' && substr($file, -8) <> '.key.sql')
+ {
+ $name = substr($file, 0, strlen($file) - 4);
+ $buffer = '';
+ $fp = fopen($dir.$file,"r");
+ if ($fp)
+ {
+ while (!feof ($fp))
+ {
+ $buf = fgets($fp, 4096);
+ if (substr($buf, 0, 2) <> '--')
+ {
+ $buffer .= $buf;
+ }
+ }
+ fclose($fp);
+ }
+
+ //print "
| Création de la table $name/td>";
+ $requestnb++;
+ if (@$this->db->query($buffer))
+ {
+ //print " | OK requete ==== $buffer |
";
+ }
+ else
+ {
+ if ($this->db->errno() == 'DB_ERROR_TABLE_ALREADY_EXISTS')
+ {
+ //print "Déjà existante | ";
+ $table_exists = 1;
+ }
+ else
+ {
+ $error++;
+ }
+ }
+ }
+
+ }
+ closedir($handle);
+
+ if ($error == 0)
+ {
+ $ok = 1;
+ }
+ }
+
+
+ /***************************************************************************************
+ *
+ * Chargement fichiers tables/*.key.sql
+ * A faire après les fichiers *.sql
+ *
+ ***************************************************************************************/
+ if ($ok)
+ {
+ $okkeys = 0;
+ $handle=opendir($dir);
+ $table_exists = 0;
+ while (($file = readdir($handle))!==false)
+ {
+ if (substr($file, strlen($file) - 4) == '.sql' && substr($file,0,4) == 'llx_' && substr($file, -8) == '.key.sql')
+ {
+ $name = substr($file, 0, strlen($file) - 4);
+ $buffer = '';
+ $fp = fopen($dir.$file,"r");
+ if ($fp)
+ {
+ while (!feof ($fp))
+ {
+ $buf = fgets($fp, 4096);
+
+ // Cas special de lignes autorisees pour certaines versions uniquement
+ if (eregi('^-- V([0-9\.]+)',$buf,$reg))
+ {
+ $versioncommande=split('\.',$reg[1]);
+ //print var_dump($versioncommande);
+ //print var_dump($versionarray);
+ if (sizeof($versioncommande) && sizeof($versionarray)
+ && versioncompare($versioncommande,$versionarray) <= 0)
+ {
+ // Version qualified, delete SQL comments
+ $buf=eregi_replace('^-- V([0-9\.]+)','',$buf);
+ //print "Ligne $i qualifiée par version: ".$buf.'
';
+ }
+ }
+
+ // Ajout ligne si non commentaire
+ if (! eregi('^--',$buf)) $buffer .= $buf;
+ }
+ fclose($fp);
+ }
+
+ // Si plusieurs requetes, on boucle sur chaque
+ $listesql=split(';',$buffer);
+ foreach ($listesql as $buffer)
+ {
+ if (trim($buffer))
+ {
+ $requestnb++;
+ if (@$this->db->query(trim($buffer)))
+ {
+ //print "OK requete ==== $buffer | ";
+ }
+ else
+ {
+ if ($this->db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS' ||
+ $this->db->errno() == 'DB_ERROR_CANNOT_CREATE' ||
+ $this->db->errno() == 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS' ||
+ eregi('duplicate key name',$this->db->error()))
+ {
+ $key_exists = 1;
+ }
+ else
+ {
+ $error++;
+ }
+ }
+ }
+ }
+ }
+
+ }
+ closedir($handle);
+
+ if ($error == 0)
+ {
+ $okkeys = 1;
+ }
+ }
+
+ }
}
?>