Line 70... |
Line 70... |
70 |
function __anonyme_3($cell) { return !is_null($cell); };
|
70 |
function __anonyme_3($cell) { return !is_null($cell); };
|
71 |
function __anonyme_5($item) { return is_null($item) ? '?' : $item; }
|
71 |
function __anonyme_5($item) { return is_null($item) ? '?' : $item; }
|
72 |
function __anonyme_6() { return NULL; }
|
72 |
function __anonyme_6() { return NULL; }
|
Line 73... |
Line 73... |
73 |
|
73 |
|
74 |
class ImportXLS extends Cel {
|
74 |
class ImportXLS extends Cel {
|
Line 75... |
Line 75... |
75 |
static function __anonyme_4(&$item, $key, $obj) { $item = $obj->quoteNonNull(trim($item)); }
|
75 |
static function __anonyme_4(&$item, $key) { $item = self::quoteNonNull(trim($item)); }
|
76 |
|
76 |
|
77 |
static $ordre_BDD = Array(
|
77 |
static $ordre_BDD = Array(
|
78 |
"ce_utilisateur",
|
78 |
"ce_utilisateur",
|
Line 227... |
Line 227... |
227 |
$obs_ajouts = 0;
|
227 |
$obs_ajouts = 0;
|
228 |
$obs_maj = 0;
|
228 |
$obs_maj = 0;
|
229 |
$nb_images_ajoutees = 0;
|
229 |
$nb_images_ajoutees = 0;
|
230 |
$nb_mots_cle_ajoutes = 0;
|
230 |
$nb_mots_cle_ajoutes = 0;
|
Line 231... |
Line 231... |
231 |
|
231 |
|
232 |
$dernier_ordre = $this->requeter("SELECT MAX(ordre) AS ordre FROM cel_obs WHERE ce_utilisateur = $id_utilisateur");
|
232 |
$dernier_ordre = Cel::db()->requeter("SELECT MAX(ordre) AS ordre FROM cel_obs WHERE ce_utilisateur = $id_utilisateur");
|
233 |
$dernier_ordre = intval($dernier_ordre[0]['ordre']) + 1;
|
233 |
$dernier_ordre = intval($dernier_ordre[0]['ordre']) + 1;
|
Line 234... |
Line 234... |
234 |
if(! $dernier_ordre) $dernier_ordre = 0;
|
234 |
if(! $dernier_ordre) $dernier_ordre = 0;
|
235 |
|
235 |
|
Line 268... |
Line 268... |
268 |
|
268 |
|
269 |
$sql_pattern = self::$insert_prefix .
|
269 |
$sql_pattern = self::$insert_prefix .
|
270 |
str_repeat(self::$insert_ligne_pattern . ', ', $nb_rec - 1) .
|
270 |
str_repeat(self::$insert_ligne_pattern . ', ', $nb_rec - 1) .
|
Line 271... |
Line 271... |
271 |
self::$insert_ligne_pattern;
|
271 |
self::$insert_ligne_pattern;
|
272 |
|
272 |
|
273 |
$this->bdd->beginTransaction();
|
273 |
Cel::db()->beginTransaction();
|
274 |
$stmt = $this->bdd->prepare($sql_pattern);
|
274 |
$stmt = Cel::db()->prepare($sql_pattern);
|
Line 275... |
Line 275... |
275 |
$donnees = array();
|
275 |
$donnees = array();
|
Line 276... |
Line 276... |
276 |
foreach($enregistrements as $e) $donnees = array_merge($donnees, array_values($e));
|
276 |
foreach($enregistrements as $e) $donnees = array_merge($donnees, array_values($e));
|
Line 277... |
Line 277... |
277 |
|
277 |
|
278 |
/* debug ici: echo $sql_pattern . "\n"; var_dump($enregistrements, $donnees); die;*/
|
278 |
/* debug ici: echo $sql_pattern . "\n"; var_dump($enregistrements, $donnees); die;*/
|
279 |
|
279 |
|
Line 280... |
Line 280... |
280 |
$stmt->execute($donnees);
|
280 |
$stmt->execute($donnees);
|
Line 281... |
Line 281... |
281 |
|
281 |
|
282 |
// $stmt->debugDumpParams(); // https://bugs.php.net/bug.php?id=52384
|
282 |
// $stmt->debugDumpParams(); // https://bugs.php.net/bug.php?id=52384
|
283 |
$dernier_autoinc = $this->bdd->lastInsertId();
|
283 |
$dernier_autoinc = Cel::db()->lastInsertId();
|
284 |
$this->bdd->commit();
|
284 |
Cel::db()->commit();
|
285 |
|
285 |
|
286 |
if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
|
286 |
if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
|
Line 287... |
Line 287... |
287 |
|
287 |
|
Line 288... |
Line 288... |
288 |
$obs_ajouts += count($enregistrements);
|
288 |
$obs_ajouts += count($enregistrements);
|
Line 403... |
Line 403... |
403 |
//$req .= implode(', ', $enregistrement) . "\n";
|
403 |
//$req .= implode(', ', $enregistrement) . "\n";
|
404 |
}
|
404 |
}
|
405 |
}
|
405 |
}
|
Line 406... |
Line 406... |
406 |
|
406 |
|
407 |
|
407 |
|
408 |
static function stockerMotsCle($cel, $enregistrements, $tous_mots_cle, $lastid) {
|
408 |
static function stockerMotsCle($enregistrements, $tous_mots_cle, $lastid) {
|
409 |
$c = 0;
|
409 |
$c = 0;
|
410 |
// debug: var_dump($tous_mots_cle);die;
|
410 |
// debug: var_dump($tous_mots_cle);die;
|
411 |
foreach($tous_mots_cle as $v) $c += count($v['mots_cle']['to_insert']);
|
411 |
foreach($tous_mots_cle as $v) $c += count($v['mots_cle']['to_insert']);
|
Line 412... |
Line 412... |
412 |
return $c;
|
412 |
return $c;
|
413 |
}
|
413 |
}
|
414 |
|
414 |
|
Line 415... |
Line 415... |
415 |
static function stockerImages($cel, $enregistrements, $toutes_images, $lastid) {
|
415 |
static function stockerImages($enregistrements, $toutes_images, $lastid) {
|
416 |
$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
|
416 |
$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
|
Line 429... |
Line 429... |
429 |
}
|
429 |
}
|
Line 430... |
Line 430... |
430 |
|
430 |
|
431 |
if($images_obs_assoc) {
|
431 |
if($images_obs_assoc) {
|
432 |
$requete = sprintf($images_insert, implode(', ', $images_obs_assoc));
|
432 |
$requete = sprintf($images_insert, implode(', ', $images_obs_assoc));
|
433 |
// debug echo "$requete\n";
|
433 |
// debug echo "$requete\n";
|
434 |
$cel->requeter($requete);
|
434 |
Cel::db()->requeter($requete);
|
Line 435... |
Line 435... |
435 |
}
|
435 |
}
|
436 |
|
436 |
|
Line 454... |
Line 454... |
454 |
C_NOM_RET_NN => NULL, C_NT => NULL, C_FAMILLE => NULL);
|
454 |
C_NOM_RET_NN => NULL, C_NT => NULL, C_FAMILLE => NULL);
|
455 |
self::traiterEspece($ligne, $espece, $referentiel, $cel);
|
455 |
self::traiterEspece($ligne, $espece, $referentiel, $cel);
|
Line 456... |
Line 456... |
456 |
|
456 |
|
457 |
// $localisation est rempli à partir de plusieurs champs: C_ZONE_GEO et C_CE_ZONE_GEO
|
457 |
// $localisation est rempli à partir de plusieurs champs: C_ZONE_GEO et C_CE_ZONE_GEO
|
458 |
$localisation = Array(C_ZONE_GEO => NULL, C_CE_ZONE_GEO => NULL);
|
458 |
$localisation = Array(C_ZONE_GEO => NULL, C_CE_ZONE_GEO => NULL);
|
Line 459... |
Line 459... |
459 |
self::traiterLocalisation($ligne, $localisation, $cel);
|
459 |
self::traiterLocalisation($ligne, $localisation);
|
460 |
|
460 |
|
461 |
// $transmission est utilisé pour date_transmission
|
461 |
// $transmission est utilisé pour date_transmission
|
Line 508... |
Line 508... |
508 |
);
|
508 |
);
|
Line 509... |
Line 509... |
509 |
|
509 |
|
510 |
// passage de $enregistrement par référence, ainsi ['_images'] n'est défini
|
510 |
// passage de $enregistrement par référence, ainsi ['_images'] n'est défini
|
511 |
// que si des résultats sont trouvés
|
511 |
// que si des résultats sont trouvés
|
512 |
// "@" car PHPExcel supprime les colonnes null sur toute la feuille (ou tout le chunk)
|
512 |
// "@" car PHPExcel supprime les colonnes null sur toute la feuille (ou tout le chunk)
|
Line 513... |
Line 513... |
513 |
if(@$ligne[C_IMAGES]) self::traiterImage($ligne[C_IMAGES], $cel, $enregistrement);
|
513 |
if(@$ligne[C_IMAGES]) self::traiterImage($ligne[C_IMAGES], $cel->id_utilisateur, $enregistrement);
|
Line 514... |
Line 514... |
514 |
|
514 |
|
515 |
if(@$ligne[C_MOTS_CLES_TEXTE]) self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel, $enregistrement);
|
515 |
if(@$ligne[C_MOTS_CLES_TEXTE]) self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel->id_utilisateur, $enregistrement);
|
Line 516... |
Line 516... |
516 |
|
516 |
|
517 |
return $enregistrement;
|
517 |
return $enregistrement;
|
Line 518... |
Line 518... |
518 |
}
|
518 |
}
|
519 |
|
519 |
|
520 |
static function traiterImage($str, $cel, &$enregistrement) {
|
520 |
static function traiterImage($str, $id_utilisateur, &$enregistrement) {
|
521 |
$liste_images = array_filter(explode("/", $str));
|
521 |
$liste_images = array_filter(explode("/", $str));
|
522 |
|
522 |
|
523 |
//array_walk($liste_images, '__anonyme_4', $cel);
|
523 |
//array_walk($liste_images, '__anonyme_4');
|
Line 524... |
Line 524... |
524 |
array_walk($liste_images, array(__CLASS__, '__anonyme_4'), $cel);
|
524 |
array_walk($liste_images, array(__CLASS__, '__anonyme_4'));
|
Line 525... |
Line 525... |
525 |
$requete = sprintf(
|
525 |
$requete = sprintf(
|
526 |
"SELECT id_image, nom_original FROM cel_images WHERE ce_utilisateur = %d AND nom_original IN (%s)",
|
526 |
"SELECT id_image, nom_original FROM cel_images WHERE ce_utilisateur = %d AND nom_original IN (%s)",
|
Line 527... |
Line 527... |
527 |
$cel->id_utilisateur,
|
527 |
$id_utilisateur,
|
528 |
implode(',', $liste_images));
|
528 |
implode(',', $liste_images));
|
529 |
|
529 |
|
Line 530... |
Line 530... |
530 |
$resultat = $cel->requeter($requete);
|
530 |
$resultat = Cel::db()->requeter($requete);
|
531 |
|
531 |
|
532 |
if($resultat) $enregistrement['_images'] = $resultat;
|
532 |
if($resultat) $enregistrement['_images'] = $resultat;
|
533 |
}
|
533 |
}
|
534 |
|
534 |
|
535 |
static function traiterMotsCle($str, $cel, &$enregistrement) {
|
535 |
static function traiterMotsCle($str, $id_utilisateur, &$enregistrement) {
|
Line 536... |
Line 536... |
536 |
$liste_mots_cle = $liste_mots_cle_recherche = array_map("trim", array_unique(array_filter(explode(",", $str))));
|
536 |
$liste_mots_cle = $liste_mots_cle_recherche = array_map("trim", array_unique(array_filter(explode(",", $str))));
|
537 |
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4'), $cel);
|
537 |
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4'));
|
Line 538... |
Line 538... |
538 |
|
538 |
|
539 |
// TODO!!!! remplace > (pour les tests uniquement) par un = et supprimer le group by mot_cle
|
539 |
// TODO!!!! remplace > (pour les tests uniquement) par un = et supprimer le group by mot_cle
|
Line 713... |
Line 713... |
713 |
$espece[C_NT] = $complement['Num_Taxon'];
|
713 |
$espece[C_NT] = $complement['Num_Taxon'];
|
714 |
$espece[C_FAMILLE] = $complement['Famille'];
|
714 |
$espece[C_FAMILLE] = $complement['Famille'];
|
715 |
//var_dump("a", $espece);die;
|
715 |
//var_dump("a", $espece);die;
|
716 |
}
|
716 |
}
|
Line 717... |
Line 717... |
717 |
|
717 |
|
718 |
static function detectFromNom($nom, $cel) {
|
718 |
static function detectFromNom($nom) {
|
719 |
$r = $cel->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s') ".
|
719 |
$r = Cel::db()->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s') ".
|
720 |
"ORDER BY nom_sci ASC LIMIT 0, 1",
|
720 |
"ORDER BY nom_sci ASC LIMIT 0, 1",
|
721 |
$cel->proteger($nom)));
|
721 |
Cel::db()->proteger($nom)));
|
Line 722... |
Line 722... |
722 |
if($r) return $r;
|
722 |
if($r) return $r;
|
723 |
|
723 |
|
724 |
$cel->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s' OR nom LIKE '%s') ".
|
724 |
Cel::db()->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s' OR nom LIKE '%s') ".
|
725 |
"ORDER BY nom_sci ASC LIMIT 0, 1",
|
725 |
"ORDER BY nom_sci ASC LIMIT 0, 1",
|
726 |
$cel->proteger($nom),
|
726 |
Cel::db()->proteger($nom),
|
727 |
$cel->proteger(str_replace(' ', '% ', $nom))));
|
727 |
Cel::db()->proteger(str_replace(' ', '% ', $nom))));
|
Line 728... |
Line 728... |
728 |
return $r;
|
728 |
return $r;
|
729 |
}
|
729 |
}
|
730 |
|
730 |
|
731 |
|
731 |
|
732 |
static function traiterLocalisation($ligne, Array &$localisation, $cel) {
|
732 |
static function traiterLocalisation($ligne, Array &$localisation) {
|
733 |
$identifiant_commune = trim($ligne[C_ZONE_GEO]);
|
733 |
$identifiant_commune = trim($ligne[C_ZONE_GEO]);
|
Line 761... |
Line 761... |
761 |
if (preg_match('/(.+) \((\d+)\)/', $identifiant_commune, $elements)) {
|
761 |
if (preg_match('/(.+) \((\d+)\)/', $identifiant_commune, $elements)) {
|
762 |
// commune + departement : montpellier (34)
|
762 |
// commune + departement : montpellier (34)
|
763 |
$nom_commune=$elements[1];
|
763 |
$nom_commune=$elements[1];
|
764 |
$code_commune=$elements[2];
|
764 |
$code_commune=$elements[2];
|
765 |
$requete = sprintf("%s WHERE nom = %s AND code LIKE %s",
|
765 |
$requete = sprintf("%s WHERE nom = %s AND code LIKE %s",
|
766 |
$select, $cel->quoteNonNull($nom_commune), $cel->quoteNonNull($code_commune.'%'));
|
766 |
$select, self::quoteNonNull($nom_commune), self::quoteNonNull($code_commune.'%'));
|
767 |
}
|
767 |
}
|
768 |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
|
768 |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
|
769 |
// Code insee seul
|
769 |
// Code insee seul
|
770 |
$code_insee_commune=$elements[1];
|
770 |
$code_insee_commune=$elements[1];
|
771 |
$requete = sprintf("%s WHERE code = %s", $select, $cel->quoteNonNull($code_insee_commune));
|
771 |
$requete = sprintf("%s WHERE code = %s", $select, self::quoteNonNull($code_insee_commune));
|
772 |
}
|
772 |
}
|
773 |
else {
|
773 |
else {
|
774 |
// Commune seule (le departement sera recupere dans la colonne departement si elle est presente)
|
774 |
// Commune seule (le departement sera recupere dans la colonne departement si elle est presente)
|
775 |
// on prend le risque ici de retourner une mauvaise Commune
|
775 |
// on prend le risque ici de retourner une mauvaise Commune
|
776 |
$nom_commune = str_replace(" ", "%", iconv('UTF-8', 'ASCII//TRANSLIT', $identifiant_commune));
|
776 |
$nom_commune = str_replace(" ", "%", iconv('UTF-8', 'ASCII//TRANSLIT', $identifiant_commune));
|
777 |
$requete = sprintf("%s WHERE nom LIKE %s", $select, $cel->quoteNonNull($nom_commune.'%'));
|
777 |
$requete = sprintf("%s WHERE nom LIKE %s", $select, self::quoteNonNull($nom_commune.'%'));
|
778 |
}
|
778 |
}
|
Line 779... |
Line 779... |
779 |
|
779 |
|
780 |
$resultat_commune = $cel->requeter($requete);
|
780 |
$resultat_commune = Cel::db()->requeter($requete);
|
Line 781... |
Line 781... |
781 |
// TODO: levenstein sort ?
|
781 |
// TODO: levenstein sort ?
|
782 |
|
782 |
|
783 |
// cas de la commune introuvable dans le référentiel
|
783 |
// cas de la commune introuvable dans le référentiel
|
Line 812... |
Line 812... |
812 |
$localisation[C_ZONE_GEO] = $localisation[C_ZONE_GEO];
|
812 |
$localisation[C_ZONE_GEO] = $localisation[C_ZONE_GEO];
|
813 |
$localisation[C_CE_ZONE_GEO] = $localisation[C_CE_ZONE_GEO];
|
813 |
$localisation[C_CE_ZONE_GEO] = $localisation[C_CE_ZONE_GEO];
|
814 |
}
|
814 |
}
|
Line 815... |
Line 815... |
815 |
|
815 |
|
816 |
/*
|
816 |
/*
|
817 |
static function traiterLocalisation($ligne, Array &$localisation, $cel) {
|
817 |
static function traiterLocalisation($ligne, Array &$localisation) {
|
818 |
$identifiant_commune = trim($ligne[C_ZONE_GEO]);
|
818 |
$identifiant_commune = trim($ligne[C_ZONE_GEO]);
|
819 |
if(!$identifiant_commune) {
|
819 |
if(!$identifiant_commune) {
|
820 |
$departement = trim($ligne[C_CE_ZONE_GEO]);
|
820 |
$departement = trim($ligne[C_CE_ZONE_GEO]);
|
821 |
goto testdepartement;
|
821 |
goto testdepartement;
|
Line 827... |
Line 827... |
827 |
if (preg_match('/(.*) \((\d+)\)/', $identifiant_commune, $elements)) {
|
827 |
if (preg_match('/(.*) \((\d+)\)/', $identifiant_commune, $elements)) {
|
828 |
// commune + departement : montpellier (34)
|
828 |
// commune + departement : montpellier (34)
|
829 |
$nom_commune=$elements[1];
|
829 |
$nom_commune=$elements[1];
|
830 |
$code_commune=$elements[2];
|
830 |
$code_commune=$elements[2];
|
831 |
$requete = sprintf("%s WHERE nom = %s AND code LIKE %s",
|
831 |
$requete = sprintf("%s WHERE nom = %s AND code LIKE %s",
|
832 |
$select, $cel->quoteNonNull($nom_commune), $cel->quoteNonNull($code_commune.'%'));
|
832 |
$select, self::quoteNonNull($nom_commune), self::quoteNonNull($code_commune.'%'));
|
833 |
}
|
833 |
}
|
834 |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
|
834 |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
|
835 |
// Code insee seul
|
835 |
// Code insee seul
|
836 |
$code_insee_commune=$elements[1];
|
836 |
$code_insee_commune=$elements[1];
|
837 |
$requete = sprintf("%s WHERE code = %s", $select, $cel->quoteNonNull($code_insee_commune));
|
837 |
$requete = sprintf("%s WHERE code = %s", $select, self::quoteNonNull($code_insee_commune));
|
838 |
}
|
838 |
}
|
839 |
else {
|
839 |
else {
|
840 |
// Commune seule (le departement sera recupere dans la colonne departement si elle est presente)
|
840 |
// Commune seule (le departement sera recupere dans la colonne departement si elle est presente)
|
841 |
// on prend le risque ici de retourner une mauvaise Commune
|
841 |
// on prend le risque ici de retourner une mauvaise Commune
|
842 |
$nom_commune = str_replace(" ", "%", iconv('UTF-8', 'ASCII//TRANSLIT', $identifiant_commune));
|
842 |
$nom_commune = str_replace(" ", "%", iconv('UTF-8', 'ASCII//TRANSLIT', $identifiant_commune));
|
843 |
$requete = sprintf("%s WHERE nom LIKE %s", $select, $cel->quoteNonNull($nom_commune.'%'));
|
843 |
$requete = sprintf("%s WHERE nom LIKE %s", $select, self::quoteNonNull($nom_commune.'%'));
|
844 |
}
|
844 |
}
|
Line 845... |
Line 845... |
845 |
|
845 |
|
846 |
$resultat_commune = $cel->requeter($requete);
|
846 |
$resultat_commune = Cel::db()->requeter($requete);
|
Line 847... |
Line 847... |
847 |
// TODO: levenstein sort ?
|
847 |
// TODO: levenstein sort ?
|
848 |
|
848 |
|
849 |
// cas de la commune introuvable dans le référentiel
|
849 |
// cas de la commune introuvable dans le référentiel
|
Line 904... |
Line 904... |
904 |
// et doivent donc être échappées correctement.
|
904 |
// et doivent donc être échappées correctement.
|
905 |
public function initialiser_colonnes_statiques() {
|
905 |
public function initialiser_colonnes_statiques() {
|
906 |
$this->colonnes_statiques = array_merge($this->colonnes_statiques,
|
906 |
$this->colonnes_statiques = array_merge($this->colonnes_statiques,
|
907 |
Array(
|
907 |
Array(
|
908 |
"ce_utilisateur" => $this->id_utilisateur,
|
908 |
"ce_utilisateur" => $this->id_utilisateur,
|
909 |
"prenom_utilisateur" => $this->quoteNonNull($this->utilisateur['prenom']),
|
909 |
"prenom_utilisateur" => self::quoteNonNull($this->utilisateur['prenom']),
|
910 |
"nom_utilisateur" => $this->quoteNonNull($this->utilisateur['nom']),
|
910 |
"nom_utilisateur" => self::quoteNonNull($this->utilisateur['nom']),
|
911 |
"courriel_utilisateur" => $this->quoteNonNull($this->utilisateur['courriel']),
|
911 |
"courriel_utilisateur" => self::quoteNonNull($this->utilisateur['courriel']),
|
912 |
));
|
912 |
));
|
Line 913... |
Line 913... |
913 |
|
913 |
|
Line 914... |
Line 914... |
914 |
}
|
914 |
}
|
Line 947... |
Line 947... |
947 |
)))) .
|
947 |
)))) .
|
948 |
')'
|
948 |
')'
|
949 |
);
|
949 |
);
|
950 |
}
|
950 |
}
|
Line 951... |
Line 951... |
951 |
|
951 |
|
952 |
// équivalent à CEL->Bdd->proteger() (qui wrap PDO::quote),
|
952 |
// équivalent à Bdd2->proteger() (qui wrap PDO::quote),
|
953 |
// sans transformer NULL en ""
|
953 |
// sans transformer NULL en ""
|
954 |
private function quoteNonNull($chaine) {
|
954 |
static function quoteNonNull($chaine) {
|
955 |
if(is_null($chaine)) return "NULL";
|
955 |
if(is_null($chaine)) return "NULL";
|
956 |
if(!is_string($chaine)) die("erreur __FILE__, __LINE__");
|
956 |
if(!is_string($chaine)) die("erreur __FILE__, __LINE__");
|
957 |
return $this->bdd->quote($chaine);
|
957 |
return Cel::db()->quote($chaine);
|
Line 958... |
Line 958... |
958 |
}
|
958 |
}
|
959 |
|
959 |
|
960 |
public function erreurs_stock($errno, $errstr) {
|
960 |
public function erreurs_stock($errno, $errstr) {
|