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']);
$date = ($transmission == 1) ? 'NOW()' : 'NULL';
$idsObsConcat = implode(',', $this->getIdsObs());
$requete = 'UPDATE cel_obs '.
"SET transmission = $transmission, date_transmission = $date, date_modification = NOW() ".
"WHERE id_observation IN ($idsObsConcat) ".
' -- '.__FILE__.':'.__LINE__;
$resultatObs = Cel::db()->executer($requete);
$requete = 'UPDATE cel_images '.
"SET transmission = $transmission, date_transmission = $date, date_modification = NOW() ".
"WHERE ce_observation IN ($idsObsConcat) ".
' -- '.__FILE__.':'.__LINE__;
$resultatImg = Cel::db()->executer($requete);
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;
}
}