Subversion Repositories eFlore/Applications.cel

Rev

Rev 3857 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2458 jpm 2
// declare(encoding='UTF-8');
3
/**
4
 * Service rendant publique une observation.
5
 *
6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
8
 * @package    Services
9
 * @subpackage Observations
10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
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>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
1867 raphael 17
 */
762 aurelien 18
class InventoryTransmit extends Cel  {
1301 aurelien 19
 
2461 jpm 20
	private $idUtilisateur = null;
21
	private $ordres = null;
22
 
23
	public function updateElement($ressources, $data) {
24
		$this->verifierRessources($ressources);
25
		$this->verifierData($data);
26
 
2486 jpm 27
		$transmission = intval($data['transmission']) == 1 ? true : false;
28
		$idsObs = $this->getIdsObs();
2461 jpm 29
 
2486 jpm 30
		$gestionnaireObs = new GestionObservation($this->config);
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.";
35
			$this->envoyerMessageErreur(304, $msg);
36
		}
2461 jpm 37
 
2486 jpm 38
		$gestionnaireImg = new GestionImage($this->config);
39
		$resultatImg = $gestionnaireImg->modifierTransmissionParObs($idsObs, $transmission);
40
		if ($resultatImg === false) {
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.";
43
			$this->envoyerMessageErreur(304, $msg);
44
		}
2461 jpm 45
 
46
		return ($resultatObs != 0 && $resultatImg != 0);
47
	}
48
 
49
	private function verifierRessources($ressources) {
50
		if (!isset($ressources[0])) {
2458 jpm 51
			return false;
2461 jpm 52
		} else {
53
			$this->controleUtilisateur($ressources[0]);
54
			$this->idUtilisateur = $ressources[0];
2458 jpm 55
		}
2461 jpm 56
		if (!isset($ressources[1])) {
57
			return false;
58
		} else {
59
			$this->ordres = $ressources[1];
60
		}
61
	}
62
 
63
	private function verifierData($data) {
64
		$transmission = (int) $data['transmission'];
2458 jpm 65
		if ($transmission != 0 && $transmission != 1) {
66
			return false;
67
		}
2461 jpm 68
	}
416 aurelien 69
 
2461 jpm 70
	private function getIdsObs() {
71
		$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
72
		$ordres = $this->nettoyerOrdres();
73
		$ordreConcat = implode(',', $ordres);
2458 jpm 74
 
2461 jpm 75
		$requete = 'SELECT id_observation '.
76
			'FROM cel_obs '.
77
			"WHERE ce_utilisateur = $idUtilisateurP ".
78
			"AND ordre IN ($ordreConcat) ".
2458 jpm 79
			' -- '.__FILE__.':'.__LINE__;
2490 mathias 80
		$resultats = Cel::db()->requeter($requete);
2461 jpm 81
		$idsObs = array();
2490 mathias 82
		if ($resultats && is_array($resultats)) {
2461 jpm 83
			foreach ($resultats as $infos) {
84
				$idsObs[] = $infos['id_observation'];
85
			}
86
		}
87
		return $idsObs;
416 aurelien 88
	}
2461 jpm 89
 
90
	private function nettoyerOrdres() {
91
		$ordres = explode(',', $this->ordres);
92
		$ordresNettoyes = array();
93
		foreach ($ordres as $ordre) {
94
			if (preg_match('/^\d+$/', $ordre)) {
95
				$ordresNettoyes[] = $ordre;
96
			}
97
		}
98
		return $ordresNettoyes;
99
	}
2458 jpm 100
}