Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1516 Rev 1526
Line 73... Line 73...
73
	}
73
	}
Line 74... Line 74...
74
 
74
 
75
	private function chargerConfigProjet() {
75
	private function chargerConfigProjet() {
76
		$fichier_config = dirname(__FILE__).self::DS.'configurations'.self::DS.$this->projet.'.ini';
76
		$fichier_config = dirname(__FILE__).self::DS.'configurations'.self::DS.$this->projet.'.ini';
77
		if (file_exists($fichier_config)) {
77
		if (file_exists($fichier_config)) {
78
			if (!$this->configProjet	= parse_ini_file($fichier_config)) {
78
			if (!$this->configProjet = parse_ini_file($fichier_config)) {
79
				$this->messages[] = "Le fichier ini '$fichier_config' du projet n'a pu être chargé.";
79
				$this->messages[] = "Le fichier ini '$fichier_config' du projet n'a pu être chargé.";
80
			}
80
			}
81
		} else {
81
		} else {
82
			$this->debug[] = "Le fichier ini '$fichier_config' du projet n'existe pas.";
82
			$this->debug[] = "Le fichier ini '$fichier_config' du projet n'existe pas.";
83
		}
83
		}
84
	}
84
	}
85
	
85
 
-
 
86
	private function chargerProjetsVersion() {
86
	private function chargerProjetsVersion() {
87
		if (isset($this->configProjet)) {
87
		foreach ($this->configProjet as $config => $valeur) {
88
			foreach ($this->configProjet as $config => $valeur) {
88
			if(strstr($config,'.version')) {
89
				if(strstr($config,'.version')) {
-
 
90
					$this->projetsVersions[str_replace('.version', '', $config)] = $valeur;
89
				$this->projetsVersions[str_replace('.version', '', $config)] = $valeur;
91
				}
90
			}
92
			}
91
		}
93
		}
Line 92... Line 94...
92
	}
94
	}
93
 
95
 
94
	public function executerWidget() {
96
	public function executerWidget() {
95
		$referentiel_impose = false;
97
		$referentiel_impose = false;
96
		if(isset($_GET['referentiel']) && $_GET['referentiel'] != '') {
98
		if (isset($_GET['referentiel']) && $_GET['referentiel'] != '') {
97
			$this->NS_PROJET = isset($_GET['referentiel']) && $_GET['referentiel'] != '' ? $_GET['referentiel'] : $this->NS_PROJET;
99
			$this->NS_PROJET = isset($_GET['referentiel']) && $_GET['referentiel'] != '' ? $_GET['referentiel'] : $this->NS_PROJET;
98
			$this->NS_PROJET_VERSION = $this->projetsVersions[$this->NS_PROJET];
100
			$this->NS_PROJET_VERSION = $this->projetsVersions[$this->NS_PROJET];
99
			$referentiel_impose = true;
101
			$referentiel_impose = true;
100
		}
102
		}
101
		
103
 
102
		$widget['squelette'] = $this->projet;
104
		$widget['squelette'] = $this->projet;
103
		$widget['donnees'] = array();
105
		$widget['donnees'] = array();
104
		$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
106
		$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
105
		$widget['donnees']['url_ws_saisie'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_SAISIE);
107
		$widget['donnees']['url_ws_saisie'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_SAISIE);
106
		
108
 
107
		$widget['donnees']['logo'] = isset($_GET['logo']) ? $_GET['logo'] : 'defaut';
109
		$widget['donnees']['logo'] = isset($_GET['logo']) ? $_GET['logo'] : 'defaut';
108
		$widget['donnees']['titre'] = isset($_GET['titre']) ? $_GET['titre'] : 'defaut';
110
		$widget['donnees']['titre'] = isset($_GET['titre']) ? $_GET['titre'] : 'defaut';
109
		$widget['donnees']['titre'] = ($widget['donnees']['titre'] == '0') ? '' : $widget['donnees']['titre'];
111
		$widget['donnees']['titre'] = ($widget['donnees']['titre'] == '0') ? '' : $widget['donnees']['titre'];
110
		
112
 
111
		// cas du projet par défaut ou bien d'un projet n'ayant pas de squelette spécifique
113
		// cas du projet par défaut ou bien d'un projet n'ayant pas de squelette spécifique
112
		if ($this->projet == 'defaut' || !$this->projetASquelette()) {
114
		if ($this->projet == 'defaut' || $this->projet == 'florileges' || !$this->projetASquelette()) {
113
			$urlWsNsTpl = $this->config['chemins']['baseURLServicesEfloreTpl'];
115
			$urlWsNsTpl = $this->config['chemins']['baseURLServicesEfloreTpl'];
114
			$urlWsNs = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, $this->NS_PROJET, self::WS_NOM);
116
			$urlWsNs = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, $this->NS_PROJET, self::WS_NOM);
115
			$urlWsNsSansRef = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, '{referentiel}', self::WS_NOM);
117
			$urlWsNsSansRef = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, '{referentiel}', self::WS_NOM);
116
			$widget['donnees']['url_ws_autocompletion_ns'] = $urlWsNs;
118
			$widget['donnees']['url_ws_autocompletion_ns'] = $urlWsNs;
117
			$widget['donnees']['url_ws_autocompletion_ns_tpl'] = $urlWsNsSansRef;
119
			$widget['donnees']['url_ws_autocompletion_ns_tpl'] = $urlWsNsSansRef;
118
			$widget['donnees']['ns_referentiel'] = $this->NS_PROJET.':'.$this->NS_PROJET_VERSION;
120
			$widget['donnees']['ns_referentiel'] = $this->NS_PROJET.':'.$this->NS_PROJET_VERSION;
119
			$widget['donnees']['ns_projet'] = $this->NS_PROJET;
121
			$widget['donnees']['ns_projet'] = $this->NS_PROJET;
120
			$widget['donnees']['ns_version'] = $this->NS_PROJET_VERSION;
122
			$widget['donnees']['ns_version'] = $this->NS_PROJET_VERSION;
-
 
123
			$widget['donnees']['referentiel_impose'] = $referentiel_impose;
-
 
124
			$widget['donnees']['projets_versions'] = $this->projetsVersions;
-
 
125
			$widget['donnees']['espece_imposee'] = false;
-
 
126
			$widget['donnees']['nn_espece_defaut'] = '';
-
 
127
			$widget['donnees']['nom_sci_espece_defaut'] = '';
121
			$widget['donnees']['referentiel_impose'] = $referentiel_impose;
128
			$widget['donnees']['infos_espece'] = array();
122
			$widget['donnees']['projets_versions'] = $this->projetsVersions;
129
 
123
			if(self::especeEstImposee()) {
130
			if ($this->especeEstImposee()) {
124
				$nom = self::executerChargementInfosTaxon($_GET['num_nom']);
131
				$nom = $this->executerChargementInfosTaxon($_GET['num_nom']);
125
				$widget['donnees']['espece_imposee'] = true;
132
				$widget['donnees']['espece_imposee'] = true;
126
				$widget['donnees']['nn_espece_defaut'] = $_GET['num_nom'];
133
				$widget['donnees']['nn_espece_defaut'] = $_GET['num_nom'];
127
				$widget['donnees']['nom_sci_espece_defaut'] = $nom['nom_sci'];
-
 
128
				$widget['donnees']['infos_espece'] = $this->array2js($nom, true);
-
 
129
			} else {
-
 
130
				$widget['donnees']['espece_imposee'] = false;
-
 
131
				$widget['donnees']['nn_espece_defaut'] = '';
-
 
132
				$widget['donnees']['nom_sci_espece_defaut'] = '';
134
				$widget['donnees']['nom_sci_espece_defaut'] = $nom['nom_sci'];
133
				$widget['donnees']['infos_espece'] = array();
135
				$widget['donnees']['infos_espece'] = $this->array2js($nom, true);
134
			}
136
			}
135
		} else {
137
		} else {
136
			$widget['donnees']['taxons'] = $this->recupererListeTaxon();
138
			$widget['donnees']['taxons'] = $this->recupererListeTaxon();
137
			$widget['donnees']['milieux'] = $this->parserMilieux();
139
			$widget['donnees']['milieux'] = $this->parserMilieux();
138
		}
140
		}
139
		return  $widget;
141
		return  $widget;
140
	}
142
	}
141
	
143
 
142
	private function projetASquelette() {
144
	private function projetASquelette() {
143
		// fonction très simple qui ne teste que si le dossier du projet courant 
145
		// fonction très simple qui ne teste que si le dossier du projet courant
144
		// existe, mais elle suffit pour le moment.
146
		// existe, mais elle suffit pour le moment.
Line 145... Line 147...
145
		return file_exists(dirname(__FILE__).self::DS.'squelettes'.self::DS.$this->projet);
147
		return file_exists(dirname(__FILE__).self::DS.'squelettes'.self::DS.$this->projet);
Line 198... Line 200...
198
			}
200
			}
199
		}
201
		}
200
		ksort($infosMilieux);
202
		ksort($infosMilieux);
201
		return $infosMilieux;
203
		return $infosMilieux;
202
	}
204
	}
203
	
205
 
204
	private function especeEstImposee() {
206
	private function especeEstImposee() {
205
		return isset($_GET['num_nom']) && $_GET['num_nom'] != '';
207
		return isset($_GET['num_nom']) && $_GET['num_nom'] != '';
206
	}
208
	}
207
	
209
 
208
	private function executerChargementInfosTaxon($num_nom) {
210
	private function executerChargementInfosTaxon($num_nom) {
209
		$url_service_infos = sprintf($this->config['chemins']['infosTaxonUrl'], $this->NS_PROJET, $num_nom);
211
		$url_service_infos = sprintf($this->config['chemins']['infosTaxonUrl'], $this->NS_PROJET, $num_nom);
210
		$infos = json_decode(file_get_contents($url_service_infos));
212
		$infos = json_decode(file_get_contents($url_service_infos));
211
		$resultat = array();
213
		$resultat = array();
212
		if(isset($infos) && !empty($infos)) {
214
		if(isset($infos) && !empty($infos)) {
Line 294... Line 296...
294
		// Retour des infos
296
		// Retour des infos
295
		$retour['donnees']['message'] = $message;
297
		$retour['donnees']['message'] = $message;
296
		$retour['donnees']['debogage'] = $debogage;
298
		$retour['donnees']['debogage'] = $debogage;
297
		return $retour;
299
		return $retour;
298
	}
300
	}
299
	
301
 
300
	// Il ne faut pas utiliser l'index type du tableau files pour tester 
302
	// Il ne faut pas utiliser l'index type du tableau files pour tester
301
	// si une image est en jpeg car le type renvoyé par les navigateurs
303
	// si une image est en jpeg car le type renvoyé par les navigateurs
302
	// peut varier (ex. sous ie qui renvoie image/pjpeg 
304
	// peut varier (ex. sous ie qui renvoie image/pjpeg
303
	private function verifierFormatJpeg($chemin) {
305
	private function verifierFormatJpeg($chemin) {
304
		// get imagesize renvoie un résultat consistant par contre
306
		// get imagesize renvoie un résultat consistant par contre
305
		$infos = getimagesize($chemin, $infos);
307
		$infos = getimagesize($chemin, $infos);
306
		return (isset($infos["mime"]) && $infos["mime"] == "image/jpeg");
308
		return (isset($infos['mime']) && $infos['mime'] == 'image/jpeg');
-
 
309
	}
-
 
310
 
-
 
311
	private function array2js($array,$show_keys) {
-
 
312
		$dimensions = array();
-
 
313
		$valeurs = array();
-
 
314
 
-
 
315
		$total = count($array) - 1;
-
 
316
		$i = 0;
-
 
317
		foreach ($array as $key => $value) {
-
 
318
			if (is_array($value)) {
-
 
319
				$dimensions[$i] = array2js($value,$show_keys);
-
 
320
				if ($show_keys) {
-
 
321
					$dimensions[$i] = '"'.$key.'":'.$dimensions[$i];
-
 
322
				}
-
 
323
			} else {
-
 
324
				$dimensions[$i] = '"'.addslashes($value).'"';
-
 
325
				if ($show_keys) {
-
 
326
					$dimensions[$i] = '"'.$key.'":'.$dimensions[$i];
-
 
327
				}
-
 
328
			}
-
 
329
			if ($i == 0) {
-
 
330
				$dimensions[$i] = '{'.$dimensions[$i];
-
 
331
			}
-
 
332
			if ($i == $total) {
-
 
333
				$dimensions[$i].= '}';
-
 
334
			}
-
 
335
			$i++;
-
 
336
		}
-
 
337
		return implode(',',$dimensions);
307
	}
338
	}
308
	
-
 
309
	private function array2js($array,$show_keys)
-
 
310
    {
-
 
311
        $dimensions = array();
-
 
312
        $valeurs = array();
-
 
313
              
-
 
314
        $total = count ($array)-1;
-
 
315
        $i=0;
-
 
316
        foreach($array as $key=>$value){
-
 
317
            if (is_array($value)) {
-
 
318
                $dimensions[$i] = array2js($value,$show_keys);
-
 
319
                if ($show_keys) $dimensions[$i] = '"'.$key.'":'.$dimensions[$i];
-
 
320
            } else {
-
 
321
                $dimensions[$i] = '"'.addslashes($value).'"';
-
 
322
                if ($show_keys) $dimensions[$i] = '"'.$key.'":'.$dimensions[$i];
-
 
323
            }
-
 
324
            if ($i==0) $dimensions[$i] = '{'.$dimensions[$i];
-
 
325
            if ($i==$total) $dimensions[$i].= '}';
-
 
326
            $i++;
-
 
327
        }
-
 
328
        return implode(',',$dimensions);
-
 
329
    }
-
 
330
}
339
}
331
?>
340
?>
332
341