Subversion Repositories eFlore/Applications.cel

Rev

Rev 2407 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2407 Rev 2446
Line 451... Line 451...
451
 
451
 
452
	static function getImages_preload($cel, $obsids) {
452
	static function getImages_preload($cel, $obsids) {
453
		if(!$obsids) return;
453
		if(!$obsids) return;
454
		$rec = Cel::db()->requeter(
454
		$rec = Cel::db()->requeter(
455
			sprintf("SELECT o.id_observation, GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i " .
455
			sprintf("SELECT o.id_observation, GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i " .
456
					"FROM cel_images i LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image) LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation) " .
456
					"FROM cel_images i LEFT JOIN cel_obs o ON (i.ce_observation = o.id_observation) " .
457
					"WHERE o.ce_utilisateur = %d AND o.id_observation IN (%s) " .
457
					"WHERE o.ce_utilisateur = %d AND o.id_observation IN (%s) " .
458
					"GROUP BY id_observation",
458
					"GROUP BY id_observation",
459
					SEPARATEUR_IMAGES,
459
					SEPARATEUR_IMAGES,
460
					$cel->id_utilisateur,
460
					$cel->id_utilisateur,
Line 469... Line 469...
469
		if(! $id_utilisateur) return NULL;
469
		if(! $id_utilisateur) return NULL;
470
		if(isset(self::$cache['getImages'][$obs['id_observation']]))
470
		if(isset(self::$cache['getImages'][$obs['id_observation']]))
471
			return self::$cache['getImages'][$obs['id_observation']];
471
			return self::$cache['getImages'][$obs['id_observation']];
Line 472... Line 472...
472
 
472
 
473
		$rec = Cel::db()->requeter(
473
		$rec = Cel::db()->requeter(
474
			sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i FROM cel_images i"
474
			sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i ".
475
					." LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image)"
475
					"FROM cel_images i ".
476
					." LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation)"
476
					"	LEFT JOIN cel_obs o ON (i.ce_observation = o.id_observation) ".
-
 
477
					"WHERE o.ce_utilisateur = %d ".
-
 
478
					"	AND o.id_observation = %d ".
477
					." WHERE o.ce_utilisateur = %d AND o.id_observation = %d LIMIT 1",
479
					'LIMIT 1',
478
					SEPARATEUR_IMAGES,
480
					SEPARATEUR_IMAGES,
479
					$id_utilisateur,
481
					$id_utilisateur,
480
					$obs['id_observation']));
482
					$obs['id_observation']));
481
		return $rec ? $rec[0]['i'] : NULL;
483
		return $rec ? $rec[0]['i'] : NULL;
Line 649... Line 651...
649
		}
651
		}
650
		return TRUE;
652
		return TRUE;
651
	}
653
	}
Line 652... Line 654...
652
 
654
 
653
	static function getNomCommun_v4($obs) {
655
	static function getNomCommun_v4($obs) {
654
		// Attention la fonction suppose que l'on ait fait appel à getNomCommun_preload avant
656
		// Attention la fonction suppose que l'on ait fait appel à getNomCommun_preload avant
655
		// d'être appelée
657
		// d'être appelée
656
		if(! $obs['nt']) return NULL;
658
		if(! $obs['nt']) return NULL;
Line 657... Line 659...
657
		if(! self::referenceTableExiste()) return NULL;
659
		if(! self::referenceTableExiste()) return NULL;
Line 693... Line 695...
693
 
695
 
694
		foreach($res as $v) {
696
		foreach($res as $v) {
695
			$data = $v;
697
			$data = $v;
696
			unset($data['referentiel']); // non nécessaire
698
			unset($data['referentiel']); // non nécessaire
697
			unset($data['num_nom_retenu']); // non nécessaire
699
			unset($data['num_nom_retenu']); // non nécessaire
698
			
700
 
699
			// Des fois les synonymes ont des valeurs pour baseflor et pas le nom retenu et vice versa
701
			// Des fois les synonymes ont des valeurs pour baseflor et pas le nom retenu et vice versa
700
			// on les fusionne pour avoir le maximum d'infos, en attendant de repenser la table référence 
702
			// on les fusionne pour avoir le maximum d'infos, en attendant de repenser la table référence
701
			if(isset(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']])) {
703
			if(isset(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']])) {
702
				$orig  = array_filter(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']], 'strlen');
704
				$orig  = array_filter(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']], 'strlen');
703
				$data  = array_filter($data , 'strlen');
705
				$data  = array_filter($data , 'strlen');
704
				$data = array_merge($orig, $data);
706
				$data = array_merge($orig, $data);
705
			}
707
			}
706
			
708
 
707
			self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']] = $data;
709
			self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']] = $data;
Line 708... Line 710...
708
		}
710
		}
709
 
711
 
Line 710... Line 712...
710
		return NULL;
712
		return NULL;
711
	}
713
	}
712
 
714
 
713
	/** 
715
	/**
714
	 * Attention la fonction suppose que l'on ait fait appel à baseflor_preload avant
716
	 * Attention la fonction suppose que l'on ait fait appel à baseflor_preload avant
715
	 * d'être appelée
717
	 * d'être appelée
Line 740... Line 742...
740
		}
742
		}
Line 741... Line 743...
741
 
743
 
742
		// Quand les données sont prêtes, on les fusionne
744
		// Quand les données sont prêtes, on les fusionne
743
		$ligne = array_merge($ligne, $donneesBF);
745
		$ligne = array_merge($ligne, $donneesBF);
744
	}
746
	}
745
	
747
 
746
	static function champsEtendus_preload($cel, $obsids) {
748
	static function champsEtendus_preload($cel, $obsids) {
747
		$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs');				
749
		$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs');
748
		$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids);
750
		$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids);
749
		
751
 
750
		// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant 
752
		// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant
751
		// le catalogue et en excluant ceux qui sont explicitement privés
753
		// le catalogue et en excluant ceux qui sont explicitement privés
752
		if(!$cel->export_prive) {
754
		if(!$cel->export_prive) {
753
			$indices_a_supprimer = array();
755
			$indices_a_supprimer = array();
754
			$catalogue_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis();
756
			$catalogue_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis();
755
			foreach($catalogue_champs_etendus as $champ_catalogue) {
757
			foreach($catalogue_champs_etendus as $champ_catalogue) {
756
				if($champ_catalogue['options']['prive'] == 1) {
758
				if($champ_catalogue['options']['prive'] == 1) {
757
					// Les champs étendus peuvent avoir des variantes lorsqu'ils apparaissent de multiples fois. 
759
					// Les champs étendus peuvent avoir des variantes lorsqu'ils apparaissent de multiples fois.
758
					// Vont donc matcher monChamp mais aussi monChamp:1, monChamp:2 ou bien monChamp1, monChamp: etc...
760
					// Vont donc matcher monChamp mais aussi monChamp:1, monChamp:2 ou bien monChamp1, monChamp: etc...
759
					// pour plus de sécurité (ce filtra n'est affectué qu'une fois au début de l'export donc on ne s'en prive pas)
761
					// pour plus de sécurité (ce filtra n'est affectué qu'une fois au début de l'export donc on ne s'en prive pas)
760
					$entrees = preg_grep("/".$champ_catalogue['cle']."(?::?\d*)?$/", $colonnes_champs_supp_par_obs);
762
					$entrees = preg_grep("/".$champ_catalogue['cle']."(?::?\d*)?$/", $colonnes_champs_supp_par_obs);
761
					$indices_a_supprimer = array_merge($indices_a_supprimer, array_keys($entrees));
763
					$indices_a_supprimer = array_merge($indices_a_supprimer, array_keys($entrees));
762
				}
764
				}
763
			}
765
			}
764
			// les champs étendus sont renvoyés dans l'export suivant les colonnes présentes dans ce tableau
766
			// les champs étendus sont renvoyés dans l'export suivant les colonnes présentes dans ce tableau
765
			// les éliminer de la liste des colonnes suffit à les faire ignorer par l'export
767
			// les éliminer de la liste des colonnes suffit à les faire ignorer par l'export
766
			foreach($indices_a_supprimer as $indice_supp) {
768
			foreach($indices_a_supprimer as $indice_supp) {
767
				unset($colonnes_champs_supp_par_obs[$indice_supp]);
769
				unset($colonnes_champs_supp_par_obs[$indice_supp]);
768
			}
770
			}
769
		}
771
		}
770
		
772
 
771
		// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique)
773
		// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique)
772
		// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin.
774
		// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin.
773
		$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs),
775
		$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs),
774
															   self::$ordre_champ_etendus_Florileges);
776
															   self::$ordre_champ_etendus_Florileges);