Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1869 Rev 2143
Line 5... Line 5...
5
 * Encodage en entrée : utf8
5
 * Encodage en entrée : utf8
6
 * Encodage en sortie : utf8
6
 * Encodage en sortie : utf8
7
 *
7
 *
8
 * Cas d'utilisation :
8
 * Cas d'utilisation :
9
 * /CelImageDoublon/Sortie : images doublon de l'utilisateur authentifié.
9
 * /CelImageDoublon/Sortie : images doublon de l'utilisateur authentifié.
10
 * 
10
 *
11
 * Sortie = Type de sortie : html ou json. Par défaut : html
11
 * Sortie = Type de sortie : html ou json. Par défaut : html
12
 * 
12
 *
13
 * Utilisateur :
13
 * Utilisateur :
14
 * identifiant (= courriel) de l'utilisateur récupéré via une identification HTTP.
14
 * identifiant (= courriel) de l'utilisateur récupéré via une identification HTTP.
15
 *
15
 *
16
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
16
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
17
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
17
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
Line 26... Line 26...
26
	 */
26
	 */
27
	public function getElement($params) {
27
	public function getElement($params) {
28
		$parametres = $this->traiterParametres(array('mode', 'utilisateur'), $params, false);
28
		$parametres = $this->traiterParametres(array('mode', 'utilisateur'), $params, false);
29
		extract($parametres);
29
		extract($parametres);
30
		$contenu = '';
30
		$contenu = '';
31
		
31
 
32
		if ($this->authentifierUtilisateur()) {
32
		if ($this->authentifierUtilisateur()) {
33
			$retour = null;
33
			$retour = null;
34
			
34
 
35
			if (isset($mode)) {
35
			if (isset($mode)) {
36
				$methode = $this->traiterNomMethodeGet($mode);
36
				$methode = $this->traiterNomMethodeGet($mode);
37
				if (method_exists($this, $methode)) {
37
				if (method_exists($this, $methode)) {
38
					$retour = $this->$methode($parametres);
38
					$retour = $this->$methode($parametres);
39
				} else {
39
				} else {
Line 41... Line 41...
41
					$this->messages[] = "Ce type de mode '$mode' pour le service '$service' n'est pas disponible.";
41
					$this->messages[] = "Ce type de mode '$mode' pour le service '$service' n'est pas disponible.";
42
				}
42
				}
43
			} else {
43
			} else {
44
				$this->messages[] = "Vous devez indiquer un type de mode.";
44
				$this->messages[] = "Vous devez indiquer un type de mode.";
45
			}
45
			}
46
	
46
 
47
			if (is_null($retour)) {
47
			if (is_null($retour)) {
48
				$contenu = 'Un problème est survenu : '.print_r($this->messages, true);
48
				$contenu = 'Un problème est survenu : '.print_r($this->messages, true);
49
			} else {
49
			} else {
50
				if ($retour['type'] == 'widget') {
50
				if ($retour['type'] == 'widget') {
51
					$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html';
51
					$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html';
Line 53... Line 53...
53
				} else if ($retour['type'] == 'json') {
53
				} else if ($retour['type'] == 'json') {
54
					$contenu = $retour['donnees'];
54
					$contenu = $retour['donnees'];
55
				}
55
				}
56
			}
56
			}
57
		}
57
		}
58
				
58
 
59
		// Envoie sur la sortie standard
59
		// Envoie sur la sortie standard
60
		$encodage = 'UTF-8';
60
		$encodage = 'UTF-8';
61
		$mime = 'text/html';
61
		$mime = 'text/html';
62
		$formatage_json = (isset($retour) && $retour['type'] == 'json') ? true : false;
62
		$formatage_json = (isset($retour) && $retour['type'] == 'json') ? true : false;
63
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
63
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
Line 65... Line 65...
65
 
65
 
66
	/**
66
	/**
67
	 * Carte par défaut
67
	 * Carte par défaut
68
	 */
68
	 */
69
	private function getDoublonHtml($parametres) {
69
	private function getDoublonHtml($parametres) {
70
		
70
 
71
		$widget = null;
71
		$widget = null;
72
		$utilisateur_mail = Cel::getAuthIdentifiant();
72
		$utilisateur_mail = Cel::getAuthIdentifiant();
73
		$utilisateur_infos = new User($this->config);
73
		$utilisateur_infos = new User($this->config);
74
		$utilisateur = $utilisateur_infos->obtenirUtilisateurSiExiste($utilisateur_mail);
74
		$utilisateur = $utilisateur_infos->obtenirUtilisateurSiExiste($utilisateur_mail);
Line 93... Line 93...
93
			// Un utilisateur en particulier
93
			// Un utilisateur en particulier
94
			$requete = 	'SELECT id_image, ordre, nom_original, md5 '.
94
			$requete = 	'SELECT id_image, ordre, nom_original, md5 '.
95
						'FROM cel_images '.
95
						'FROM cel_images '.
96
						"WHERE ce_utilisateur = '$utilisateur' ";
96
						"WHERE ce_utilisateur = '$utilisateur' ";
Line 97... Line 97...
97
 
97
 
Line 98... Line 98...
98
			$images = Cel::db()->executerRequete($requete);
98
			$images = Cel::db()->requeter($requete);
99
 
99
 
100
			// Traitement
100
			// Traitement
101
			$doublons = array();
101
			$doublons = array();
102
			$images_doublons_id = array();
102
			$images_doublons_id = array();
103
			$md5 = array();
103
			$md5 = array();
104
			foreach ($images as $img) {
104
			foreach ($images as $img) {
105
				if (!isset($md5[$img['md5']])) {
105
				if (!isset($md5[$img['md5']])) {
106
					$md5[$img['md5']] = array(
106
					$md5[$img['md5']] = array(
107
						'url' => $this->getUrlImage($img['id_image'], 'CXS'), 
107
						'url' => $this->getUrlImage($img['id_image'], 'CXS'),
108
						'obs_ordre' => array(),
108
						'obs_ordre' => array(),
109
						'img_ordre' => $img['ordre'],
109
						'img_ordre' => $img['ordre'],
110
						'img_id' => $img['id_image']);
110
						'img_id' => $img['id_image']);
Line 114... Line 114...
114
						$doublons[$img['md5']][$id_img] = $md5[$img['md5']];
114
						$doublons[$img['md5']][$id_img] = $md5[$img['md5']];
115
						$images_doublons_id[] = Cel::db()->quote($id_img);
115
						$images_doublons_id[] = Cel::db()->quote($id_img);
116
					}
116
					}
Line 117... Line 117...
117
 
117
 
118
					$doublons[$img['md5']][$img['id_image']] = array(
118
					$doublons[$img['md5']][$img['id_image']] = array(
119
							'url' => $this->getUrlImage($img['id_image'], 'CXS'), 
119
							'url' => $this->getUrlImage($img['id_image'], 'CXS'),
120
							'obs_ordre' => array(),
120
							'obs_ordre' => array(),
121
							'img_ordre' => $img['ordre'],
121
							'img_ordre' => $img['ordre'],
122
							'img_id' => $img['id_image']);
122
							'img_id' => $img['id_image']);
123
					$images_doublons_id[] = Cel::db()->quote($img['id_image']);
123
					$images_doublons_id[] = Cel::db()->quote($img['id_image']);
124
				}
124
				}
125
			}
125
			}
126
			
126
 
127
			if (count($images_doublons_id) > 0) {
127
			if (count($images_doublons_id) > 0) {
128
				$requete = 	'SELECT cim.id_image, nom_original, md5, co.ordre as ordre_obs '.
128
				$requete = 	'SELECT cim.id_image, nom_original, md5, co.ordre as ordre_obs '.
129
							'FROM cel_images AS cim '.
129
							'FROM cel_images AS cim '.
130
							'	LEFT JOIN cel_obs_images AS coi '.
130
							'	LEFT JOIN cel_obs_images AS coi '.
131
							'		ON (coi.id_image = cim.id_image) '.
131
							'		ON (coi.id_image = cim.id_image) '.
132
							'	LEFT JOIN cel_obs AS co '.
132
							'	LEFT JOIN cel_obs AS co '.
133
							'		ON (coi.id_observation = co.id_observation) '.
133
							'		ON (coi.id_observation = co.id_observation) '.
134
							"WHERE cim.ce_utilisateur = '$utilisateur' ".
134
							"WHERE cim.ce_utilisateur = '$utilisateur' ".
Line 135... Line 135...
135
							'	AND cim.id_image IN ('.implode(',', $images_doublons_id).')';
135
							'	AND cim.id_image IN ('.implode(',', $images_doublons_id).')';
136
 
136
 
137
				$infos = Cel::db()->executerRequete($requete);
137
				$infos = Cel::db()->requeter($requete);
138
				
138
 
139
				foreach ($infos as $info) {
139
				foreach ($infos as $info) {
140
					if (isset($doublons[$info['md5']][$info['id_image']]) && ! $this->etreNull($info['ordre_obs'])) {
140
					if (isset($doublons[$info['md5']][$info['id_image']]) && ! $this->etreNull($info['ordre_obs'])) {
141
						$doublons[$info['md5']][$info['id_image']]['obs_ordre'][] = $info['ordre_obs'];
141
						$doublons[$info['md5']][$info['id_image']]['obs_ordre'][] = $info['ordre_obs'];