| 1530 | jpm | 1 | <?php
 | 
        
           |  |  | 2 |   | 
        
           |  |  | 3 | /**
 | 
        
           |  |  | 4 |  * Service exportant des informations concernant COEL au format CSV.
 | 
        
           |  |  | 5 |  * Encodage en entrée : utf8
 | 
        
           |  |  | 6 |  * Encodage en sortie : utf8
 | 
        
           | 1586 | jpm | 7 |  *
 | 
        
           | 1530 | jpm | 8 |  * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
 | 
        
           |  |  | 9 |  * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 | 
        
           |  |  | 10 |  * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 | 
        
           |  |  | 11 |  * @version $Id$
 | 
        
           |  |  | 12 |  * @copyright 2010
 | 
        
           |  |  | 13 |  */
 | 
        
           |  |  | 14 | class CoelExport extends Coel {
 | 
        
           | 1586 | jpm | 15 |   | 
        
           | 1530 | jpm | 16 | 	const META_LISTE_STOCK_PARAMS = 1020;// Liste des paramètres de contrôle environnemental d'un local
 | 
        
           | 1537 | jpm | 17 | 	const META_LISTES_EXPERTISE_COLLECTION = '1040,1041,1043,1045,1046,1049,1050,1053,1057,1081';// Liste des métadonnées pour les informations des des collections
 | 
        
           | 1586 | jpm | 18 |   | 
        
           | 1530 | jpm | 19 | 	private $format = null;
 | 
        
           |  |  | 20 | 	private $service = null;
 | 
        
           |  |  | 21 | 	private $squelette = null;
 | 
        
           |  |  | 22 | 	private $squelette_dossier = null;
 | 
        
           | 1586 | jpm | 23 |   | 
        
           | 1530 | jpm | 24 | 	/**
 | 
        
           |  |  | 25 | 	 * Méthode appelée avec une requête de type GET.
 | 
        
           |  |  | 26 | 	 */
 | 
        
           |  |  | 27 | 	public function getElement($params = array()) {
 | 
        
           |  |  | 28 | 		// Initialisation des variables
 | 
        
           |  |  | 29 | 		$info = array();
 | 
        
           |  |  | 30 | 		$contenu = '';
 | 
        
           | 1586 | jpm | 31 |   | 
        
           | 1530 | jpm | 32 | 		// Pré traitement des paramêtres
 | 
        
           |  |  | 33 | 		$pour_bdd = false;
 | 
        
           | 1765 | aurelien | 34 | 		$this->parametres = $this->traiterParametresUrl(array('service', 'format'), $params, $pour_bdd);
 | 
        
           | 1586 | jpm | 35 |   | 
        
           | 1530 | jpm | 36 | 		// Chargement du bon type de service demandé
 | 
        
           |  |  | 37 | 		if (isset($this->parametres['service'])) {
 | 
        
           |  |  | 38 | 			$this->service = strtolower($this->parametres['service']);
 | 
        
           | 1586 | jpm | 39 |   | 
        
           | 1530 | jpm | 40 | 			$methode = $this->getNomMethodeService();
 | 
        
           |  |  | 41 | 			if (method_exists($this, $methode)) {
 | 
        
           |  |  | 42 | 				if (isset($this->parametres['format']) && preg_match('/^(?:csv|txt)$/i', $this->parametres['format'])) {
 | 
        
           |  |  | 43 | 					// Mise en minuscule de l'indication du format
 | 
        
           |  |  | 44 | 					$this->format = strtolower($this->parametres['format']);
 | 
        
           |  |  | 45 | 					// Définition du fichier squelette demandé
 | 
        
           |  |  | 46 | 					$this->definirSquelette();
 | 
        
           |  |  | 47 | 				} else {
 | 
        
           |  |  | 48 | 					$this->format = '';
 | 
        
           |  |  | 49 | 					$this->messages[] = "Le service COEL Export nécessite d'indiquer en second paramètre le format : csv, txt.";
 | 
        
           |  |  | 50 | 				}
 | 
        
           |  |  | 51 | 				// Récupération du contenu à renvoyer
 | 
        
           |  |  | 52 | 				$contenu = $this->$methode();
 | 
        
           |  |  | 53 | 			} else {
 | 
        
           |  |  | 54 | 				$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
 | 
        
           |  |  | 55 | 			}
 | 
        
           |  |  | 56 | 		} else {
 | 
        
           |  |  | 57 | 			$this->messages[] = "Le service COEL Syndication nécessite d'indiquer en premier paramètre le type d'information demandé.";
 | 
        
           |  |  | 58 | 		}
 | 
        
           | 1586 | jpm | 59 |   | 
        
           | 1530 | jpm | 60 | 		// Envoie sur la sortie standard
 | 
        
           |  |  | 61 | 		$encodage = 'utf-8';
 | 
        
           |  |  | 62 | 		$mime = $this->getTypeMime();
 | 
        
           |  |  | 63 | 		$formatage_json = $this->getFormatageJson();
 | 
        
           |  |  | 64 | 		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
 | 
        
           |  |  | 65 | 	}
 | 
        
           | 1586 | jpm | 66 |   | 
        
           | 1530 | jpm | 67 | 	private function definirSquelette() {
 | 
        
           |  |  | 68 | 		$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
 | 
        
           |  |  | 69 | 		$ext = $this->getExtensionFichierSquelette();
 | 
        
           |  |  | 70 | 		$this->squelette = $this->squelette_dossier.'export_'.$this->service.'.tpl.'.$ext;
 | 
        
           |  |  | 71 | 	}
 | 
        
           | 1586 | jpm | 72 |   | 
        
           | 1530 | jpm | 73 | 	private function getExtensionFichierSquelette() {
 | 
        
           |  |  | 74 | 		$ext = '';
 | 
        
           |  |  | 75 | 		switch ($this->format) {
 | 
        
           |  |  | 76 | 			case 'csv' :
 | 
        
           |  |  | 77 | 			case 'txt' :
 | 
        
           |  |  | 78 | 				$ext = 'csv';
 | 
        
           |  |  | 79 | 				break;
 | 
        
           |  |  | 80 | 			default:
 | 
        
           |  |  | 81 | 				$ext = 'csv';
 | 
        
           |  |  | 82 | 		}
 | 
        
           |  |  | 83 | 		return $ext;
 | 
        
           |  |  | 84 | 	}
 | 
        
           | 1586 | jpm | 85 |   | 
        
           | 1530 | jpm | 86 | 	private function getNomMethodeService() {
 | 
        
           |  |  | 87 | 		$methode = '';
 | 
        
           |  |  | 88 | 		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('_', $this->service))));
 | 
        
           |  |  | 89 | 		$methode = 'getService'.$service_formate;
 | 
        
           |  |  | 90 | 		return $methode;
 | 
        
           |  |  | 91 | 	}
 | 
        
           | 1586 | jpm | 92 |   | 
        
           | 1530 | jpm | 93 | 	private function getTypeMime() {
 | 
        
           |  |  | 94 | 		$mime = '';
 | 
        
           |  |  | 95 | 		switch ($this->format) {
 | 
        
           |  |  | 96 | 			case 'csv' :
 | 
        
           |  |  | 97 | 				$mime = 'text/csv';
 | 
        
           |  |  | 98 | 				break;
 | 
        
           |  |  | 99 | 			case 'txt' :
 | 
        
           |  |  | 100 | 				$mime = 'text/plain';
 | 
        
           |  |  | 101 | 				break;
 | 
        
           |  |  | 102 | 			default:
 | 
        
           |  |  | 103 | 				$mime = 'text/html';
 | 
        
           |  |  | 104 | 		}
 | 
        
           |  |  | 105 | 		return $mime;
 | 
        
           |  |  | 106 | 	}
 | 
        
           | 1586 | jpm | 107 |   | 
        
           | 1530 | jpm | 108 | 	private function getFormatageJson() {
 | 
        
           |  |  | 109 | 		$json = false;
 | 
        
           |  |  | 110 | 		switch ($this->service) {
 | 
        
           |  |  | 111 | 			default:
 | 
        
           |  |  | 112 | 				$json = false;
 | 
        
           |  |  | 113 | 		}
 | 
        
           |  |  | 114 | 		return $json;
 | 
        
           |  |  | 115 | 	}
 | 
        
           | 1586 | jpm | 116 |   | 
        
           |  |  | 117 |   | 
        
           | 1530 | jpm | 118 | 	private function getServiceStructureExpertise() {
 | 
        
           |  |  | 119 | 		$donnees = array();
 | 
        
           | 1586 | jpm | 120 |   | 
        
           | 1530 | jpm | 121 | 		// Construction de la requête
 | 
        
           | 1537 | jpm | 122 | 		$requete = 'SELECT '.(($this->distinct) ? 'DISTINCT' : '').' '.
 | 
        
           | 1530 | jpm | 123 | 					'	cs_id_structure, '.
 | 
        
           |  |  | 124 | 					'	SUM(csap_bota_travail_hebdo_tps) AS personnel_heure_nbre, '.
 | 
        
           | 1572 | jpm | 125 | 					'	cs_nom, csc_truk_stockage_parametre, csv_mark_visite_avec_motif '.
 | 
        
           | 1586 | jpm | 126 | 					'FROM coel_structure '.
 | 
        
           | 1530 | jpm | 127 | 					'	LEFT JOIN coel_structure_a_personne ON (cs_id_structure = csap_id_structure) '.
 | 
        
           |  |  | 128 | 		    		'	LEFT JOIN coel_structure_conservation ON (cs_id_structure = csc_id_structure) '.
 | 
        
           | 1572 | jpm | 129 | 					'	LEFT JOIN coel_structure_valorisation ON (cs_id_structure = csv_id_structure) '.
 | 
        
           | 1530 | jpm | 130 | 					'GROUP BY cs_id_structure '.
 | 
        
           | 1543 | jpm | 131 | 					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'cs_nom ASC').' ';
 | 
        
           | 1530 | jpm | 132 | 		$message_echec = "La requête a retourné aucun résultat.";
 | 
        
           |  |  | 133 | 		$structures = $this->executerRequete($requete, $message_echec);
 | 
        
           | 1586 | jpm | 134 |   | 
        
           | 1530 | jpm | 135 | 		// Construction de la requête
 | 
        
           | 1537 | jpm | 136 | 		$requete = 'SELECT '.(($this->distinct) ? 'DISTINCT' : '').' '.
 | 
        
           | 1530 | jpm | 137 | 					'	cs_id_structure, '.
 | 
        
           |  |  | 138 | 					'	COUNT(cc_id_collection) AS collection_nbre '.
 | 
        
           |  |  | 139 | 					'FROM coel_structure '.
 | 
        
           |  |  | 140 | 					'	LEFT JOIN coel_collection ON (cs_id_structure = cc_ce_structure) '.
 | 
        
           |  |  | 141 | 					'GROUP BY cs_id_structure ';
 | 
        
           |  |  | 142 | 		$message_echec = "La requête comptant le nombre de collection a retourné aucun résultat.";
 | 
        
           |  |  | 143 | 		$collections_nbre = $this->executerRequete($requete, $message_echec);
 | 
        
           | 1586 | jpm | 144 |   | 
        
           | 1530 | jpm | 145 | 		// Récupération des métadonnées nécessaires
 | 
        
           |  |  | 146 | 		$requete = 	'SELECT cmlv_id_valeur, cmlv_nom, cmlv_abreviation '.
 | 
        
           |  |  | 147 | 					'FROM coel_meta_liste_valeur '.
 | 
        
           |  |  | 148 | 					'WHERE cmlv_ce_parent = '.self::META_LISTE_STOCK_PARAMS.' ';
 | 
        
           |  |  | 149 | 		$message_echec = "La requête de recherche des métadonnées a retourné aucun résultat.";
 | 
        
           |  |  | 150 | 		$metadonnees = $this->executerRequete($requete, $message_echec);
 | 
        
           | 1586 | jpm | 151 |   | 
        
           | 1530 | jpm | 152 | 		// Traitement des données
 | 
        
           |  |  | 153 | 		if ($structures !== false) {
 | 
        
           |  |  | 154 | 			// Traitement du nombre de collection par structure
 | 
        
           |  |  | 155 | 			$collections_par_structure = array();
 | 
        
           |  |  | 156 | 			foreach ($collections_nbre as $collection) {
 | 
        
           |  |  | 157 | 				$nbre = (empty($collection['collection_nbre'])) ? 0 : $collection['collection_nbre'];
 | 
        
           |  |  | 158 | 				$collections_par_structure[$collection['cs_id_structure']] = $nbre;
 | 
        
           |  |  | 159 | 			}
 | 
        
           | 1541 | jpm | 160 |   | 
        
           |  |  | 161 | 			// Instanciation des objets nécessaires aux traitements
 | 
        
           |  |  | 162 | 			$ontologie = new Ontologie($metadonnees);
 | 
        
           |  |  | 163 | 			$utilTruck = new UtilTruck($ontologie);
 | 
        
           | 1586 | jpm | 164 |   | 
        
           |  |  | 165 | 			// Traitement final des données concernant les structures
 | 
        
           | 1530 | jpm | 166 | 			foreach ($structures as $structure) {
 | 
        
           |  |  | 167 | 				$id_structure = $structure['cs_id_structure'];
 | 
        
           | 1541 | jpm | 168 | 				$nom = $structure['cs_nom'];
 | 
        
           |  |  | 169 | 				$stockage_params = $utilTruck->construireTxtListeOntologie($structure['csc_truk_stockage_parametre']);
 | 
        
           |  |  | 170 | 				$stockage_params_nbre = $utilTruck->getNbreValeur($structure['csc_truk_stockage_parametre']);
 | 
        
           |  |  | 171 | 				$stockage_params_nbre = empty($stockage_params_nbre) ? 0 : $stockage_params_nbre;
 | 
        
           | 1530 | jpm | 172 | 				$collection_nbre = $collections_par_structure[$structure['cs_id_structure']];
 | 
        
           |  |  | 173 | 				$collection_nbre = empty($collection_nbre) ? 0 : $collection_nbre;
 | 
        
           |  |  | 174 | 				$personnel_heure_nbre = empty($structure['personnel_heure_nbre']) ? 0 : $structure['personnel_heure_nbre'];
 | 
        
           | 1572 | jpm | 175 | 				$visite_avec_motif_science = $structure['csv_mark_visite_avec_motif'];
 | 
        
           | 1586 | jpm | 176 |   | 
        
           | 1541 | jpm | 177 | 				$structure_affichage = array(
 | 
        
           | 1586 | jpm | 178 | 					'nom' => $nom,
 | 
        
           | 1530 | jpm | 179 | 					'stockage_params' => $stockage_params,
 | 
        
           | 1531 | jpm | 180 | 					'stockage_params_nbre' => $stockage_params_nbre,
 | 
        
           | 1530 | jpm | 181 | 					'collection_nbre' => $collection_nbre,
 | 
        
           | 1572 | jpm | 182 | 					'personnel_heure_nbre' => $personnel_heure_nbre,
 | 
        
           |  |  | 183 | 					'visite_avec_motif_science' => $visite_avec_motif_science);
 | 
        
           | 1541 | jpm | 184 | 				$structure_affichage = $this->nettoyerTableau($structure_affichage);
 | 
        
           | 1586 | jpm | 185 |   | 
        
           | 1541 | jpm | 186 | 				$donnees['structures'][$id_structure] = $structure_affichage;
 | 
        
           | 1530 | jpm | 187 | 			}
 | 
        
           |  |  | 188 | 		}
 | 
        
           | 1586 | jpm | 189 |   | 
        
           | 1530 | jpm | 190 | 		// Création du contenu
 | 
        
           |  |  | 191 | 		$contenu = $this->executerService($donnees);
 | 
        
           |  |  | 192 | 		return $contenu;
 | 
        
           |  |  | 193 | 	}
 | 
        
           | 1586 | jpm | 194 |   | 
        
           | 1531 | jpm | 195 | 	private function getServiceCollectionExpertise() {
 | 
        
           | 1537 | jpm | 196 |   | 
        
           | 1531 | jpm | 197 | 		// Construction de la requête
 | 
        
           | 1537 | jpm | 198 | 		$requete = 'SELECT '.(($this->distinct) ? 'DISTINCT' : '').' '.
 | 
        
           | 1531 | jpm | 199 | 					'	cc_id_collection, '.
 | 
        
           | 1586 | jpm | 200 | 					'	cc_nom, cc_cote, cs_nom, cc_ce_specimen_type, cc_description, cc_truk_periode_constitution, '.
 | 
        
           | 1531 | jpm | 201 | 					'	cc_truk_couverture_lieu, ccb_truk_etiquette_renseignement, ccb_truk_nature, '.
 | 
        
           | 1583 | jpm | 202 | 					'	ccb_truk_unite_base, ccb_ce_etat_general, ccb_specimen_fixation_pourcent, '.
 | 
        
           |  |  | 203 | 					'	ccb_truk_specimen_fixation_methode, ccb_truk_etiquette_fixation_support, '.
 | 
        
           | 1531 | jpm | 204 | 					'	ccb_truk_etiquette_fixation_specimen, ccb_truk_degradation_presentation, '.
 | 
        
           |  |  | 205 | 					'	ccb_ce_classement_etat, ccb_ce_inventaire '.
 | 
        
           | 1586 | jpm | 206 | 					'FROM coel_collection '.
 | 
        
           | 1531 | jpm | 207 | 		    		'	LEFT JOIN coel_collection_botanique ON (cc_id_collection = ccb_id_collection) '.
 | 
        
           |  |  | 208 | 					'	LEFT JOIN coel_structure ON (cs_id_structure = cc_ce_structure) '.
 | 
        
           | 1543 | jpm | 209 | 					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'cc_nom ASC').' ';
 | 
        
           | 1531 | jpm | 210 | 		$message_echec = "La requête a retourné aucun résultat.";
 | 
        
           | 1537 | jpm | 211 | 		$collections = $this->executerRequete($requete, $message_echec);
 | 
        
           | 1586 | jpm | 212 |   | 
        
           | 1531 | jpm | 213 | 		// Récupération des métadonnées nécessaires
 | 
        
           |  |  | 214 | 		$requete = 	'SELECT cmlv_id_valeur, cmlv_ce_parent, cmlv_nom, cmlv_abreviation '.
 | 
        
           |  |  | 215 | 					'FROM coel_meta_liste_valeur '.
 | 
        
           |  |  | 216 | 					'WHERE cmlv_ce_parent IN ('.self::META_LISTES_EXPERTISE_COLLECTION.') ';
 | 
        
           |  |  | 217 | 		$message_echec = "La requête de recherche des métadonnées a retourné aucun résultat.";
 | 
        
           |  |  | 218 | 		$metadonnees = $this->executerRequete($requete, $message_echec);
 | 
        
           | 1586 | jpm | 219 |   | 
        
           | 1531 | jpm | 220 | 		// Traitement des données
 | 
        
           | 1537 | jpm | 221 | 		$donnees = array();
 | 
        
           |  |  | 222 | 		if ($collections !== false) {
 | 
        
           |  |  | 223 | 			// Instanciation des objets nécessaires aux traitements
 | 
        
           |  |  | 224 | 			$ontologie = new Ontologie($metadonnees);
 | 
        
           |  |  | 225 | 			$utilTruck = new UtilTruck($ontologie);
 | 
        
           | 1586 | jpm | 226 |   | 
        
           |  |  | 227 | 			// Traitement final des données concernant les structures
 | 
        
           | 1537 | jpm | 228 | 			foreach ($collections as $collection) {
 | 
        
           |  |  | 229 | 				$id_collection = $collection['cc_id_collection'];
 | 
        
           | 1541 | jpm | 230 | 				$nom = $collection['cc_nom'];
 | 
        
           | 1586 | jpm | 231 | 				$cote = $collection['cc_cote'];
 | 
        
           | 1541 | jpm | 232 | 				$nom_structure = $collection['cs_nom'];
 | 
        
           | 1537 | jpm | 233 | 				$specimen_type = $utilTruck->construireTxtListeOntologie($collection['cc_ce_specimen_type']);
 | 
        
           | 1541 | jpm | 234 | 				$description = $collection['cc_description'];
 | 
        
           | 1537 | jpm | 235 | 				$periode_constitution = $utilTruck->construireTxtListeOntologie($collection['cc_truk_periode_constitution']);
 | 
        
           |  |  | 236 | 				$couverture_lieu = $utilTruck->construireTxtListeOntologie($collection['cc_truk_couverture_lieu']);
 | 
        
           | 1583 | jpm | 237 | 				$specimen_fixation_pourcent = $collection['ccb_specimen_fixation_pourcent'];
 | 
        
           |  |  | 238 | 				$specimen_fixation_methode = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_specimen_fixation_methode']);
 | 
        
           | 1537 | jpm | 239 | 				$etiquette_renseignement = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_etiquette_renseignement']);
 | 
        
           |  |  | 240 | 				$nature = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_nature']);
 | 
        
           | 1540 | jpm | 241 | 				$parts_total = UtilTruck::extraireNbrePart($collection['ccb_truk_unite_base']);
 | 
        
           | 1541 | jpm | 242 | 				$etat_general = $utilTruck->construireTxtListeOntologie($collection['ccb_ce_etat_general']);
 | 
        
           |  |  | 243 | 				$etiquette_fixation_support = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_etiquette_fixation_support']);
 | 
        
           |  |  | 244 | 				$etiquette_fixation_specimen = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_etiquette_fixation_specimen']);
 | 
        
           |  |  | 245 | 				$degradation_presentation = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_degradation_presentation'], false, true, true);
 | 
        
           |  |  | 246 | 				$classement_etat = $utilTruck->construireTxtListeOntologie($collection['ccb_ce_classement_etat']);
 | 
        
           |  |  | 247 | 				$inventaire = $utilTruck->construireTxtListeOntologie($collection['ccb_ce_inventaire']);
 | 
        
           | 1586 | jpm | 248 |   | 
        
           | 1541 | jpm | 249 | 				$collection_affichage = array(
 | 
        
           |  |  | 250 | 					'id' => $id_collection,
 | 
        
           | 1586 | jpm | 251 | 					'cote' => $cote,
 | 
        
           | 1537 | jpm | 252 | 					'nom' => $nom,
 | 
        
           | 1586 | jpm | 253 | 					'nom_structure' => $nom_structure,
 | 
        
           | 1537 | jpm | 254 | 					'specimen_type' => $specimen_type,
 | 
        
           |  |  | 255 | 					'description' => $description,
 | 
        
           |  |  | 256 | 					'periode_constitution' => $periode_constitution,
 | 
        
           |  |  | 257 | 					'couverture_lieu' => $couverture_lieu,
 | 
        
           |  |  | 258 | 					'etiquette_renseignement' => $etiquette_renseignement,
 | 
        
           |  |  | 259 | 					'nature' => $nature,
 | 
        
           | 1541 | jpm | 260 | 					'parts_total' => $parts_total,
 | 
        
           |  |  | 261 | 					'etat_general' => $etat_general,
 | 
        
           |  |  | 262 | 					'etiquette_fixation_support' => $etiquette_fixation_support,
 | 
        
           |  |  | 263 | 					'etiquette_fixation_specimen' => $etiquette_fixation_specimen,
 | 
        
           | 1583 | jpm | 264 | 					'specimen_fixation_pourcent' => $specimen_fixation_pourcent,
 | 
        
           |  |  | 265 | 					'specimen_fixation_methode' => $specimen_fixation_methode,
 | 
        
           | 1541 | jpm | 266 | 					'degradation_presentation' => $degradation_presentation,
 | 
        
           |  |  | 267 | 					'classement_etat' => $classement_etat,
 | 
        
           |  |  | 268 | 					'inventaire' => $inventaire);
 | 
        
           |  |  | 269 | 				$collection_affichage = $this->nettoyerTableau($collection_affichage);
 | 
        
           | 1586 | jpm | 270 |   | 
        
           | 1541 | jpm | 271 | 				$donnees['collections'][] = $collection_affichage;
 | 
        
           | 1531 | jpm | 272 | 			}
 | 
        
           | 1541 | jpm | 273 | 			$donnees['champs'] = array_keys(current($donnees['collections']));
 | 
        
           | 1531 | jpm | 274 | 		}
 | 
        
           | 1586 | jpm | 275 |   | 
        
           | 1531 | jpm | 276 | 		// Création du contenu
 | 
        
           |  |  | 277 | 		$contenu = $this->executerService($donnees);
 | 
        
           |  |  | 278 | 		return $contenu;
 | 
        
           |  |  | 279 | 	}
 | 
        
           | 1586 | jpm | 280 |   | 
        
           | 1530 | jpm | 281 | 	private function executerRequete($requete, $message_echec) {
 | 
        
           |  |  | 282 | 		try {
 | 
        
           |  |  | 283 | 			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
 | 
        
           |  |  | 284 | 			if ($infos === false) {
 | 
        
           |  |  | 285 | 				$this->messages[] = $message_echec;
 | 
        
           |  |  | 286 | 			}
 | 
        
           |  |  | 287 | 		} catch (PDOException $e) {
 | 
        
           | 1537 | jpm | 288 | 			$this->messages[] = sprintf($this->getTxt('sql_erreur_requete'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
 | 
        
           | 1530 | jpm | 289 | 		}
 | 
        
           |  |  | 290 | 		return $infos;
 | 
        
           |  |  | 291 | 	}
 | 
        
           | 1586 | jpm | 292 |   | 
        
           | 1530 | jpm | 293 | 	private function executerService($donnees) {
 | 
        
           |  |  | 294 | 		// Création du contenu à partir d'un template PHP
 | 
        
           |  |  | 295 | 		$contenu = Coel::traiterSquelettePhp($this->squelette, $donnees);
 | 
        
           |  |  | 296 | 		return $contenu;
 | 
        
           |  |  | 297 | 	}
 | 
        
           | 1586 | jpm | 298 |   | 
        
           | 1541 | jpm | 299 | 	private function nettoyerTableau(Array $tableau) {
 | 
        
           |  |  | 300 | 		foreach ($tableau as $cle => $valeur) {
 | 
        
           |  |  | 301 | 			$tableau[$cle] = self::nettoyerGuillemets($valeur);
 | 
        
           |  |  | 302 | 		}
 | 
        
           |  |  | 303 | 		return $tableau;
 | 
        
           |  |  | 304 | 	}
 | 
        
           | 1586 | jpm | 305 |   | 
        
           | 1537 | jpm | 306 | 	private static function nettoyerGuillemets($txt) {
 | 
        
           |  |  | 307 | 		$txt = preg_replace('/"/', '""', $txt);
 | 
        
           |  |  | 308 | 		return $txt;
 | 
        
           |  |  | 309 | 	}
 | 
        
           | 1586 | jpm | 310 | }
 |