Subversion Repositories eFlore/Applications.cel

Rev

Rev 2461 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2461 Rev 2486
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']);
27
		$transmission = intval($data['transmission']) == 1 ? true : false;
-
 
28
		$idsObs = $this->getIdsObs();
-
 
29
 
-
 
30
		$gestionnaireObs = new GestionObservation($this->config);
28
		$date = ($transmission == 1) ? 'NOW()' : 'NULL';
31
		$resultatObs = $gestionnaireObs->modifierTransmissionObservation($idsObs, $transmission);
-
 
32
		if ($resultatObs === false) {
-
 
33
			$idsObsConcat = implode(', ', $idsObs);
-
 
34
			$msg = "Un problème est survenu (voir log). Les observations « $idsObsConcat » n'ont pas pu être dépubliées.";
29
 
35
			$this->envoyerMessageErreur(304, $msg);
30
		$idsObsConcat = implode(',', $this->getIdsObs());
36
		}
31
 
-
 
32
		$requete = 'UPDATE cel_obs '.
37
 
33
			"SET transmission = $transmission, date_transmission = $date, date_modification = NOW() ".
38
		$gestionnaireImg = new GestionImage($this->config);
34
			"WHERE id_observation IN ($idsObsConcat) ".
-
 
35
			' -- '.__FILE__.':'.__LINE__;
-
 
36
		$resultatObs = Cel::db()->executer($requete);
39
		$resultatImg = $gestionnaireImg->modifierTransmissionParObs($idsObs, $transmission);
37
 
40
		if ($resultatImg === false) {
38
		$requete = 'UPDATE cel_images '.
41
			$idsObsConcat = implode(', ', $idsObs);
39
			"SET transmission = $transmission, date_transmission = $date, date_modification = NOW() ".
-
 
40
			"WHERE ce_observation IN ($idsObsConcat) ".
42
			$msg = "Un problème est survenu (voir log). Les images liées aux obs « $idsObsConcat » n'ont pas pu être dépubliées.";
41
			' -- '.__FILE__.':'.__LINE__;
43
			$this->envoyerMessageErreur(304, $msg);
42
		$resultatImg = Cel::db()->executer($requete);
44
		}
43
 
45
 
44
		return ($resultatObs != 0 && $resultatImg != 0);
46
		return ($resultatObs != 0 && $resultatImg != 0);
45
	}
47
	}
46
 
48
 
47
	private function verifierRessources($ressources) {
49
	private function verifierRessources($ressources) {
48
		if (!isset($ressources[0])) {
50
		if (!isset($ressources[0])) {
49
			return false;
51
			return false;
50
		} else {
52
		} else {
51
			$this->controleUtilisateur($ressources[0]);
53
			$this->controleUtilisateur($ressources[0]);
52
			$this->idUtilisateur = $ressources[0];
54
			$this->idUtilisateur = $ressources[0];
53
		}
55
		}
54
		if (!isset($ressources[1])) {
56
		if (!isset($ressources[1])) {
55
			return false;
57
			return false;
56
		} else {
58
		} else {
57
			$this->ordres = $ressources[1];
59
			$this->ordres = $ressources[1];
58
		}
60
		}
59
	}
61
	}
60
 
62
 
61
	private function verifierData($data) {
63
	private function verifierData($data) {
62
		$transmission = (int) $data['transmission'];
64
		$transmission = (int) $data['transmission'];
63
		if ($transmission != 0 && $transmission != 1) {
65
		if ($transmission != 0 && $transmission != 1) {
64
			return false;
66
			return false;
65
		}
67
		}
66
	}
68
	}
67
 
69
 
68
	private function getIdsObs() {
70
	private function getIdsObs() {
69
		$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
71
		$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
70
		$ordres = $this->nettoyerOrdres();
72
		$ordres = $this->nettoyerOrdres();
71
		$ordreConcat = implode(',', $ordres);
73
		$ordreConcat = implode(',', $ordres);
72
 
74
 
73
		$requete = 'SELECT id_observation '.
75
		$requete = 'SELECT id_observation '.
74
			'FROM cel_obs '.
76
			'FROM cel_obs '.
75
			"WHERE ce_utilisateur = $idUtilisateurP ".
77
			"WHERE ce_utilisateur = $idUtilisateurP ".
76
			"AND ordre IN ($ordreConcat) ".
78
			"AND ordre IN ($ordreConcat) ".
77
			' -- '.__FILE__.':'.__LINE__;
79
			' -- '.__FILE__.':'.__LINE__;
78
		$resultats = Cel::db()->executer($requete);
80
		$resultats = Cel::db()->executer($requete);
79
 
81
 
80
		$idsObs = array();
82
		$idsObs = array();
81
		if ($idsObs && is_array($idsObs)) {
83
		if ($idsObs && is_array($idsObs)) {
82
			foreach ($resultats as $infos) {
84
			foreach ($resultats as $infos) {
83
				$idsObs[] = $infos['id_observation'];
85
				$idsObs[] = $infos['id_observation'];
84
			}
86
			}
85
		}
87
		}
86
		return $idsObs;
88
		return $idsObs;
87
	}
89
	}
88
 
90
 
89
	private function nettoyerOrdres() {
91
	private function nettoyerOrdres() {
90
		$ordres = explode(',', $this->ordres);
92
		$ordres = explode(',', $this->ordres);
91
		$ordresNettoyes = array();
93
		$ordresNettoyes = array();
92
		foreach ($ordres as $ordre) {
94
		foreach ($ordres as $ordre) {
93
			if (preg_match('/^\d+$/', $ordre)) {
95
			if (preg_match('/^\d+$/', $ordre)) {
94
				$ordresNettoyes[] = $ordre;
96
				$ordresNettoyes[] = $ordre;
95
			}
97
			}
96
		}
98
		}
97
		return $ordresNettoyes;
99
		return $ordresNettoyes;
98
	}
100
	}
99
}
101
}