23,6 → 23,7 |
private $idObs = null; |
private $idProposition = null; |
private $idAuteurObs = null; |
private $idValidateurObs = null; |
|
public function __construct(Conteneur $conteneur = null) { |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; |
34,6 → 35,7 |
public function modifier($ressources, $parametres) { |
$this->verifierParametres($ressources, $parametres); |
$this->idProposition = $ressources[1]; |
$this->idValidateurObs = $this->validateurEstPresent($parametres) ? $parametres['validateur.id'] : $parametres['auteur.id'] ; |
$retourCel = $this->modifierObservationParDetermination(); |
|
if (preg_match('/^(OK|Not Modified)$/i', $retourCel) == false) { |
43,6 → 45,10 |
} |
return 'OK'; |
} |
|
private function validateurEstPresent($parametres) { |
return isset($parametres['validateur.id']) && is_numeric($parametres['validateur.id']) && $parametres['validateur.id'] != 0; |
} |
|
private function verifierParametres($ressources, $parametres) { |
$erreurs = array(); |
50,11 → 56,17 |
$erreurs[] = '- la ressource indiquant l\'identifiant de la proposition doit être numérique'; |
} |
|
//Le paramètre auteur.id (id de l'auteur de la détermination) |
// Le paramètre auteur.id (id de l'auteur de la détermination) |
// est là pour éviter que le $_POST ne soit vide |
if (!isset($parametres['auteur.id'])) { |
$erreurs[] = "- le paramètre 'auteur.id' est manquant"; |
} |
|
// Le paramètre validateur.id (id de la personne validant la détemrinatiuon) |
// est là pour éviter que le $_POST ne soit vide |
if (isset($parametres['validateur.id']) && !is_numeric($parametres['validateur.id'])) { |
$erreurs[] = "- le paramètre 'validateur.id' doit être un entier"; |
} |
|
if ($erreurs) { |
$msg = "Erreur dans les paramètres d'appel au web service :\n" . implode("\n", $erreurs); |
76,10 → 88,10 |
$this->verifierDroitUtilisateur(); |
|
$parametres = array( |
'id_observation' => $this->idObs, |
'nom_sel_nn' => $propositionInfos['nom_sel_nn'], |
'nom_referentiel' => $propositionInfos['nom_referentiel'], |
'id_utilisateur' => $this->idAuteurObs); |
'id_observation' => $this->idObs, |
'nom_sel_nn' => $propositionInfos['nom_sel_nn'], |
'nom_referentiel' => $propositionInfos['nom_referentiel'] |
); |
|
$urlBase = $this->conteneur->getParametre('urlServiceCelObs'); |
$url = $urlBase.$this->idObs; |
119,9 → 131,10 |
$controleAcces = $this->conteneur->getControleAcces(); |
$utilisateurInfos = $controleAcces->getInfosUtilisateurConnecte(); |
$utilisateurId = $utilisateurInfos['id_utilisateur']; |
|
if ($this->idAuteurObs != $utilisateurId) { |
$msg = "Seul l'utilisateur ayant saisi l'observation peut la valider : veuillez vous identifier.\n"; |
|
// si l'utilisateur connecté n'est ni auteur de l'observation, ni au moins administrateur de niveau 1 |
if (($this->idAuteurObs != $utilisateurId) && $utilisateurInfos['admin'] < 1) { |
$msg = "Seul l'utilisateur ayant saisi l'observation, un administrateur ou un validateur peut la valider : veuillez vous identifier.\n"; |
throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR); |
} |
} |
128,13 → 141,16 |
|
/** |
* Remet à 0 le status "proposition_retenue" pour toutes les propositions faites sur cette |
* observation à l'exception de celle désormais validée |
* observation à l'exception de celle désormais validée (qui voit son ce_validateur et sa date validation mise à jour) |
*/ |
private function mettreAJourPropositionRetenue() { |
$requete = 'UPDATE del_commentaire '. |
"SET proposition_retenue = IF(id_commentaire = {$this->idProposition}, 1, 0) ". |
"SET proposition_retenue = IF(id_commentaire = {$this->idProposition}, 1, 0), ". |
"ce_validateur = IF(id_commentaire = {$this->idProposition}, {$this->idValidateurObs} , ce_validateur), ". |
"date_validation = IF(id_commentaire = {$this->idProposition}, NOW() , date_validation) ". |
"WHERE ce_observation = {$this->idObs} ". |
' -- '.__FILE__.' : '.__LINE__; |
|
return $this->bdd->requeter($requete); |
} |
} |