Subversion Repositories eFlore/Applications.cel

Rev

Rev 2486 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2486 Rev 2490
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service rendant publique une observation.
4
 * Service rendant publique une observation.
5
 *
5
 *
6
 * @internal   Mininum PHP version : 5.2
6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
7
 * @category   CEL
8
 * @package    Services
8
 * @package    Services
9
 * @subpackage Observations
9
 * @subpackage Observations
10
 * @version    0.1
10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
17
 */
17
 */
18
class InventoryTransmit extends Cel  {
18
class InventoryTransmit extends Cel  {
19
 
19
 
20
	private $idUtilisateur = null;
20
	private $idUtilisateur = null;
21
	private $ordres = null;
21
	private $ordres = null;
22
 
22
 
23
	public function updateElement($ressources, $data) {
23
	public function updateElement($ressources, $data) {
24
		$this->verifierRessources($ressources);
24
		$this->verifierRessources($ressources);
25
		$this->verifierData($data);
25
		$this->verifierData($data);
26
 
26
 
27
		$transmission = intval($data['transmission']) == 1 ? true : false;
27
		$transmission = intval($data['transmission']) == 1 ? true : false;
28
		$idsObs = $this->getIdsObs();
28
		$idsObs = $this->getIdsObs();
29
 
29
 
30
		$gestionnaireObs = new GestionObservation($this->config);
30
		$gestionnaireObs = new GestionObservation($this->config);
31
		$resultatObs = $gestionnaireObs->modifierTransmissionObservation($idsObs, $transmission);
31
		$resultatObs = $gestionnaireObs->modifierTransmissionObservation($idsObs, $transmission);
32
		if ($resultatObs === false) {
32
		if ($resultatObs === false) {
33
			$idsObsConcat = implode(', ', $idsObs);
33
			$idsObsConcat = implode(', ', $idsObs);
34
			$msg = "Un problème est survenu (voir log). Les observations « $idsObsConcat » n'ont pas pu être dépubliées.";
34
			$msg = "Un problème est survenu (voir log). Les observations « $idsObsConcat » n'ont pas pu être dépubliées.";
35
			$this->envoyerMessageErreur(304, $msg);
35
			$this->envoyerMessageErreur(304, $msg);
36
		}
36
		}
37
 
37
 
38
		$gestionnaireImg = new GestionImage($this->config);
38
		$gestionnaireImg = new GestionImage($this->config);
39
		$resultatImg = $gestionnaireImg->modifierTransmissionParObs($idsObs, $transmission);
39
		$resultatImg = $gestionnaireImg->modifierTransmissionParObs($idsObs, $transmission);
40
		if ($resultatImg === false) {
40
		if ($resultatImg === false) {
41
			$idsObsConcat = implode(', ', $idsObs);
41
			$idsObsConcat = implode(', ', $idsObs);
42
			$msg = "Un problème est survenu (voir log). Les images liées aux obs « $idsObsConcat » n'ont pas pu être dépubliées.";
42
			$msg = "Un problème est survenu (voir log). Les images liées aux obs « $idsObsConcat » n'ont pas pu être dépubliées.";
43
			$this->envoyerMessageErreur(304, $msg);
43
			$this->envoyerMessageErreur(304, $msg);
44
		}
44
		}
45
 
45
 
46
		return ($resultatObs != 0 && $resultatImg != 0);
46
		return ($resultatObs != 0 && $resultatImg != 0);
47
	}
47
	}
48
 
48
 
49
	private function verifierRessources($ressources) {
49
	private function verifierRessources($ressources) {
50
		if (!isset($ressources[0])) {
50
		if (!isset($ressources[0])) {
51
			return false;
51
			return false;
52
		} else {
52
		} else {
53
			$this->controleUtilisateur($ressources[0]);
53
			$this->controleUtilisateur($ressources[0]);
54
			$this->idUtilisateur = $ressources[0];
54
			$this->idUtilisateur = $ressources[0];
55
		}
55
		}
56
		if (!isset($ressources[1])) {
56
		if (!isset($ressources[1])) {
57
			return false;
57
			return false;
58
		} else {
58
		} else {
59
			$this->ordres = $ressources[1];
59
			$this->ordres = $ressources[1];
60
		}
60
		}
61
	}
61
	}
62
 
62
 
63
	private function verifierData($data) {
63
	private function verifierData($data) {
64
		$transmission = (int) $data['transmission'];
64
		$transmission = (int) $data['transmission'];
65
		if ($transmission != 0 && $transmission != 1) {
65
		if ($transmission != 0 && $transmission != 1) {
66
			return false;
66
			return false;
67
		}
67
		}
68
	}
68
	}
69
 
69
 
70
	private function getIdsObs() {
70
	private function getIdsObs() {
71
		$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
71
		$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
72
		$ordres = $this->nettoyerOrdres();
72
		$ordres = $this->nettoyerOrdres();
73
		$ordreConcat = implode(',', $ordres);
73
		$ordreConcat = implode(',', $ordres);
74
 
74
 
75
		$requete = 'SELECT id_observation '.
75
		$requete = 'SELECT id_observation '.
76
			'FROM cel_obs '.
76
			'FROM cel_obs '.
77
			"WHERE ce_utilisateur = $idUtilisateurP ".
77
			"WHERE ce_utilisateur = $idUtilisateurP ".
78
			"AND ordre IN ($ordreConcat) ".
78
			"AND ordre IN ($ordreConcat) ".
79
			' -- '.__FILE__.':'.__LINE__;
79
			' -- '.__FILE__.':'.__LINE__;
80
		$resultats = Cel::db()->executer($requete);
80
		$resultats = Cel::db()->requeter($requete);
81
 
-
 
82
		$idsObs = array();
81
		$idsObs = array();
83
		if ($idsObs && is_array($idsObs)) {
82
		if ($resultats && is_array($resultats)) {
84
			foreach ($resultats as $infos) {
83
			foreach ($resultats as $infos) {
85
				$idsObs[] = $infos['id_observation'];
84
				$idsObs[] = $infos['id_observation'];
86
			}
85
			}
87
		}
86
		}
88
		return $idsObs;
87
		return $idsObs;
89
	}
88
	}
90
 
89
 
91
	private function nettoyerOrdres() {
90
	private function nettoyerOrdres() {
92
		$ordres = explode(',', $this->ordres);
91
		$ordres = explode(',', $this->ordres);
93
		$ordresNettoyes = array();
92
		$ordresNettoyes = array();
94
		foreach ($ordres as $ordre) {
93
		foreach ($ordres as $ordre) {
95
			if (preg_match('/^\d+$/', $ordre)) {
94
			if (preg_match('/^\d+$/', $ordre)) {
96
				$ordresNettoyes[] = $ordre;
95
				$ordresNettoyes[] = $ordre;
97
			}
96
			}
98
		}
97
		}
99
		return $ordresNettoyes;
98
		return $ordresNettoyes;
100
	}
99
	}
101
}
100
}