* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ 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()->requeter($requete); $idsObs = array(); if ($resultats && is_array($resultats)) { 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; } }