Subversion Repositories eFlore/Applications.cel

Rev

Rev 2030 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2030 Rev 2041
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