Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2460 → Rev 2461

/trunk/jrest/services/InventoryTransmit.php
17,28 → 17,83
*/
class InventoryTransmit extends Cel {
 
public function updateElement($uid, $pairs) {
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
if (!isset($uid[1])) {
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];
}
$transmission = intval($pairs['transmission']);
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;
}
}
 
$ids = array_filter(array_map(create_function('$v','return intval($v);'), explode(',', $uid[1])), 'strlen');
private function getIdsObs() {
$idUtilisateurP = Cel::db()->proteger($this->idUtilisateur);
$ordres = $this->nettoyerOrdres();
$ordreConcat = implode(',', $ordres);
 
$date = ($transmission == 1) ? 'now()' : 'NULL';
//TODO: modification pour passer ceci dans la classe gestion observation
$requete = 'UPDATE cel_obs '.
'SET transmission = '.$pairs['transmission'].', '.
'date_modification = now(), date_transmission = '.$date.' '.
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' '.
'AND ordre in ('.implode(',', $ids).') '.
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $idUtilisateurP ".
"AND ordre IN ($ordreConcat) ".
' -- '.__FILE__.':'.__LINE__;
$resultat = Cel::db()->executer($requete);
return ($resultat != 0);
$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;
}
}