Rev 2461 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
// declare(encoding='UTF-8');
/**
* Service rendant publique une observation.
*
* @internal Mininum PHP version : 5.2
* @category CEL
* @package Services
* @subpackage Observations
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class InventoryTransmit extends Cel {
private $idUtilisateur = null;
private $ordres = null;
public function updateElement($ressources, $data) {
$this->verifierRessources($ressources);
$this->verifierData($data);
$transmission = intval($data['transmission']) == 1 ? true : false;
$idsObs = $this->getIdsObs();
$gestionnaireObs = new GestionObservation($this->config);
$resultatObs = $gestionnaireObs->modifierTransmissionObservation($idsObs, $transmission);
if ($resultatObs === false) {
$idsObsConcat = implode(', ', $idsObs);
$msg = "Un problème est survenu (voir log). Les observations « $idsObsConcat » n'ont pas pu être dépubliées.";
$this->envoyerMessageErreur(304, $msg);
}
$gestionnaireImg = new GestionImage($this->config);
$resultatImg = $gestionnaireImg->modifierTransmissionParObs($idsObs, $transmission);
if ($resultatImg === false) {
$idsObsConcat = implode(', ', $idsObs);
$msg = "Un problème est survenu (voir log). Les images liées aux obs « $idsObsConcat » n'ont pas pu être dépubliées.";
$this->envoyerMessageErreur(304, $msg);
}
return ($resultatObs != 0 && $resultatImg != 0);
}
private function verifierRessources($ressources) {
if (!isset($ressources[0])) {
return false;
} else {
$this->controleUtilisateur($ressources[0]);
$this->idUtilisateur = $ressources[0];
}
if (!isset($ressources[1])) {
return false;
} else {
$this->ordres = $ressources[1];
}
}
private function verifierData($data) {
$transmission = (int) $data['transmission'];
if ($transmission != 0 && $transmission != 1) {
return false;
}
}
private function getIdsObs() {
$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
$ordres = $this->nettoyerOrdres();
$ordreConcat = implode(',', $ordres);
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $idUtilisateurP ".
"AND ordre IN ($ordreConcat) ".
' -- '.__FILE__.':'.__LINE__;
$resultats = Cel::db()->executer($requete);
$idsObs = array();
if ($idsObs && is_array($idsObs)) {
foreach ($resultats as $infos) {
$idsObs[] = $infos['id_observation'];
}
}
return $idsObs;
}
private function nettoyerOrdres() {
$ordres = explode(',', $this->ordres);
$ordresNettoyes = array();
foreach ($ordres as $ordre) {
if (preg_match('/^\d+$/', $ordre)) {
$ordresNettoyes[] = $ordre;
}
}
return $ordresNettoyes;
}
}