| Line 173... |
Line 173... |
| 173 |
|
173 |
|
| 174 |
if(!isset($_SESSION)) session_start();
|
174 |
if(!isset($_SESSION)) session_start();
|
| Line 175... |
Line 175... |
| 175 |
$this->controleUtilisateur($id_utilisateur);
|
175 |
$this->controleUtilisateur($id_utilisateur);
|
| - |
|
176 |
|
| - |
|
177 |
$this->utilisateur = $this->getInfosComplementairesUtilisateur($id_utilisateur);
|
| Line 176... |
Line 178... |
| 176 |
|
178 |
|
| Line 177... |
Line 179... |
| 177 |
$this->utilisateur = $this->getInfosComplementairesUtilisateur($id_utilisateur);
|
179 |
|
| 178 |
|
180 |
|
| Line 320... |
Line 322... |
| 320 |
Cel::db()->beginTransaction();
|
322 |
Cel::db()->beginTransaction();
|
| 321 |
$stmt = Cel::db()->prepare($sql_pattern);
|
323 |
$stmt = Cel::db()->prepare($sql_pattern);
|
| 322 |
$donnees = array();
|
324 |
$donnees = array();
|
| 323 |
foreach($enregistrements as $e) $donnees = array_merge($donnees, array_values($e));
|
325 |
foreach($enregistrements as $e) $donnees = array_merge($donnees, array_values($e));
|
| Line 324... |
Line 326... |
| 324 |
|
326 |
|
| Line 325... |
Line 327... |
| 325 |
// echo $sql_pattern . "\n"; var_dump($enregistrements, $donnees); die; // debug ici
|
327 |
// echo $sql_pattern . "\n"; var_dump($enregistrements, $donnees); die; // debug ici
|
| Line 326... |
Line 328... |
| 326 |
|
328 |
|
| 327 |
$stmt->execute($donnees);
|
329 |
$stmt->execute($donnees);
|
| Line 333... |
Line 335... |
| 333 |
if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
|
335 |
if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
|
| Line 334... |
Line 336... |
| 334 |
|
336 |
|
| 335 |
$obs_ajouts += count($enregistrements);
|
337 |
$obs_ajouts += count($enregistrements);
|
| 336 |
// $obs_ajouts += count($enregistrements['insert']);
|
338 |
// $obs_ajouts += count($enregistrements['insert']);
|
| - |
|
339 |
// $obs_maj += count($enregistrements['update']);
|
| - |
|
340 |
|
| - |
|
341 |
$ordre_ids = self::chargerCorrespondancesIdOrdre($this, $enregistrements);
|
| 337 |
// $obs_maj += count($enregistrements['update']);
|
342 |
|
| 338 |
$nb_images_ajoutees += self::stockerImages($enregistrements, $images, $dernier_autoinc);
|
343 |
$nb_images_ajoutees += self::stockerImages($enregistrements, $images, $ordre_ids);
|
| 339 |
$nb_mots_cle_ajoutes += self::stockerMotsCle($enregistrements, $mots_cle, $dernier_autoinc);
|
344 |
$nb_mots_cle_ajoutes += self::stockerMotsCle($enregistrements, $mots_cle, $dernier_autoinc);
|
| Line 340... |
Line 345... |
| 340 |
}
|
345 |
}
|
| Line 418... |
Line 423... |
| 418 |
// TODO: pourquoi ne pas comparer avec les abbrevs aussi ?
|
423 |
// TODO: pourquoi ne pas comparer avec les abbrevs aussi ?
|
| 419 |
// merge ( Array( I => rien ) , Array ( S => Ordre, AA => Phénologie ) )
|
424 |
// merge ( Array( I => rien ) , Array ( S => Ordre, AA => Phénologie ) )
|
| 420 |
// ==> Array ( I => rien, AA => Phénologie )
|
425 |
// ==> Array ( I => rien, AA => Phénologie )
|
| 421 |
return array_merge($colonnesID_non_reconnues, $colonnesID_a_exclure);
|
426 |
return array_merge($colonnesID_non_reconnues, $colonnesID_a_exclure);
|
| 422 |
}
|
427 |
}
|
| - |
|
428 |
|
| - |
|
429 |
static function chargerCorrespondancesIdOrdre($cel, $lignes) {
|
| - |
|
430 |
|
| - |
|
431 |
$ordre_ids = array();
|
| - |
|
432 |
|
| - |
|
433 |
$requete_obs_ids = "SELECT id_observation, ordre FROM cel_obs WHERE ordre IN (";
|
| - |
|
434 |
foreach($lignes as &$ligne) {
|
| - |
|
435 |
$requete_obs_ids .= $ligne['ordre'].',';
|
| - |
|
436 |
}
|
| - |
|
437 |
$requete_obs_ids = rtrim($requete_obs_ids, ',');
|
| - |
|
438 |
$requete_obs_ids .= ") AND ce_utilisateur = ".Cel::db()->proteger($cel->id_utilisateur);
|
| - |
|
439 |
|
| - |
|
440 |
|
| - |
|
441 |
$obs_ids = Cel::db()->requeter($requete_obs_ids);
|
| - |
|
442 |
foreach($obs_ids as &$obs) {
|
| - |
|
443 |
$ordre_ids[$obs['ordre']] = $obs['id_observation'];
|
| - |
|
444 |
}
|
| - |
|
445 |
return $ordre_ids;
|
| - |
|
446 |
}
|
| Line 423... |
Line 447... |
| 423 |
|
447 |
|
| 424 |
/*
|
448 |
/*
|
| 425 |
* charge un groupe de lignes
|
449 |
* charge un groupe de lignes
|
| 426 |
*/
|
450 |
*/
|
| Line 490... |
Line 514... |
| 490 |
// debug: var_dump($tous_mots_cle);die;
|
514 |
// debug: var_dump($tous_mots_cle);die;
|
| 491 |
foreach($tous_mots_cle as $v) $c += count($v['mots_cle']['to_insert']);
|
515 |
foreach($tous_mots_cle as $v) $c += count($v['mots_cle']['to_insert']);
|
| 492 |
return $c;
|
516 |
return $c;
|
| 493 |
}
|
517 |
}
|
| Line 494... |
Line 518... |
| 494 |
|
518 |
|
| 495 |
static function stockerImages($enregistrements, $toutes_images, $lastid) {
|
519 |
static function stockerImages($enregistrements, $toutes_images, $ordre_ids) {
|
| 496 |
$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
|
520 |
$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
|
| Line 497... |
Line 521... |
| 497 |
$images_obs_assoc = Array();
|
521 |
$images_obs_assoc = Array();
|
| 498 |
|
522 |
|
| 499 |
foreach($toutes_images as $images_pour_obs) {
|
- |
|
| 500 |
$obs = $enregistrements[$images_pour_obs["obs_pos"]];
|
- |
|
| 501 |
$id_obs = $lastid // dernier autoinc inséré
|
523 |
foreach($toutes_images as $images_pour_obs) {
|
| 502 |
- count($enregistrements) + 1 // correspondrait au premier autoinc
|
524 |
$obs = $enregistrements[$images_pour_obs["obs_pos"]];
|
| 503 |
+ $images_pour_obs["obs_pos"]; // ordre d'insertion = ordre dans le tableau $enregistrements (commence à 0)
|
525 |
$id_obs = $ordre_ids[$obs['ordre']]; // id réel de l'observation correspondant à l'ordre
|
| 504 |
foreach($images_pour_obs['images'] as $image) {
|
526 |
foreach($images_pour_obs['images'] as $image) {
|
| 505 |
$images_obs_assoc[] = sprintf('(%d,%d)',
|
527 |
$images_obs_assoc[] = sprintf('(%d,%d)',
|
| 506 |
$image['id_image'], // intval() useless
|
528 |
$image['id_image'], // intval() useless
|