/trunk/services/modules/0.1/observations/ListeObservations.php |
---|
44,7 → 44,7 |
'ce_zone_geo AS id_zone_geo', 'zone_geo', 'lieudit', |
'station', 'milieu', 'date_observation', 'mots_cles_texte', 'date_transmission', |
'ce_utilisateur AS `auteur.id`', 'prenom_utilisateur AS `auteur.prenom`', |
'nom_utilisateur AS `auteur.nom`', 'courriel_utilisateur AS observateur', |
'nom_utilisateur AS `auteur.nom`', 'courriel_utilisateur AS `auteur.courriel` ', |
'commentaire'), |
'di' => array('id_image', 'date_prise_de_vue AS `date`', 'hauteur',/* 'largeur','nom_original' // apparemment inutilisés */), |
'du' => array('prenom', 'nom', 'courriel'), |
69,12 → 69,12 |
$obs_merged = array(); |
foreach($obs as $o) { |
$id = $o['id_observation']; |
// car auteur.id peut être un email, un hash, ou un annuaire_tela.U_ID |
// mais dans les deux premiers cas SELECT courriel AS observateur fait déjà l'affaire |
if(!isset($o['auteur.id']) || !is_numeric($o['auteur.id'])) $o['auteur.id'] = "0"; |
if(!isset($o['auteur.nom'])) $o['auteur.nom'] = '[inconnu]'; |
$image = array_intersect_key($o, array_flip(array('id_image', 'date', 'hauteur' , 'largeur', 'nom_original'))); |
$image['binaire.href'] = sprintf($url_pattern, $image['id_image']); |
unset($o['id_image'], $o['date'], $o['hauteur'], $o['largeur'], $o['nom_original']); |
90,51 → 90,51 |
* pour l'afficher. |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2) |
* @param array $parametres les paramètres situés après le ? dans l'url |
**/ |
**/ |
public function consulter($ressources, $parametres) { |
// SELECT, à terme, pourrait affecter getInfos(), mais en aucune manière getIdObs() |
$req = array('select' => array(), 'join' => array(), 'where' => array(), 'groupby' => array(), 'having' => array()); |
// toujours nécessaire puisque nous tapons sur v_del_image qui INNER JOIN cel_images, or nous voulons certes |
// toutes les images, mais nous voulons $limite observations uniques. |
$req['groupby'][] = 'vdi.id_observation'; |
$db = $this->bdd; |
// filtrage de l'INPUT |
$params = DelTk::requestFilterParams($parametres, DelTk::$parametres_autorises, $this->conteneur); |
$params['masque.tag'] = DelTk::buildTagsAST(@$parametres['masque.tag'], 'OR', ','); |
// ... et paramètres par défaut |
$params = array_merge(DelTk::$default_params, $params); |
// création des contraintes (masques) |
DelTk::sqlAddConstraint($params, $db, $req); |
self::sqlAddConstraint($params, $db, $req, $this->conteneur); |
self::sqlAddMasqueConstraint($params, $db, $req, $this->conteneur); |
// 1) grunt-work: *la* requête de récupération des id valides (+ SQL_CALC_FOUND_ROWS) |
$idobs_tab = self::getIdObs($params, $req, $db); |
// idobs est une liste (toujours ordonnée) des id d'observations recherchées |
$idobs = array_values(array_map(create_function('$a', 'return $a["id_observation"];'), $idobs_tab)); |
if($idobs) { |
$total = $db->recuperer('SELECT FOUND_ROWS() AS c'); $total = intval($total['c']); |
// 2) récupération des données nécessaires pour ces observations (obs + images) |
// ici les champs récupérés sont issus de self::$sql_fields_liaisons mais sans préfixes |
// car tout provient de v_del_image |
$obs_unfmt = self::getInfos($idobs, $db); |
// 3) suppression, merge des données en tableau assez représentatif du futur JSON en output |
$observations = self::reformateObservation($obs_unfmt, $this->conteneur->getParametre('url_images')); |
// 4) récupération des données nécessaires pour ces observations (commentaires + votes) |
// modifie $observations |
$this->configurer(); |
$this->chargerDeterminations($observations); |
// 5) restauration de l'ordre souhaité initialement |
$observations = self::sortArrayByArray($observations, $idobs); |
} else { |
141,12 → 141,12 |
$observations = array(); |
$total = 0; |
} |
// 6) JSON output |
$resultat = new ResultatService(); |
$resultat->corps = array('entete' => DelTk::makeJSONHeader($total, $params, Config::get('url_service')), |
'resultats' => $observations); |
return $resultat; |
} |
179,7 → 179,7 |
' %s'. // having (si commentaires) |
' ORDER BY %s %s %s'. |
' LIMIT %d, %d -- %s', |
$req['join'] ? implode(' ', $req['join']) : '', |
$req['where'] ? implode(' AND ', $req['where']) : 'TRUE', |
373,7 → 373,7 |
$idComment = $proposition['id_commentaire']; |
$comment = $this->formaterDetermination($idComment, $proposition); |
if($comment) $observations['"' . $idObs . '"']['commentaires'][$idComment] = $comment; |
} |
} |
390,7 → 390,7 |
// Charger les votes sur les déterminations |
$resultatsVotes = $this->bdd->recupererTous( |
sprintf('SELECT * FROM del_commentaire_vote WHERE ce_proposition = %d', $commentId)); |
foreach ($resultatsVotes as $vote) { |
$proposition_formatee['votes'][$vote['id_vote']] = $this->formaterVote($vote); |
} |
/trunk/services/modules/0.1/observations/Observation.php |
---|
30,7 → 30,7 |
'observations' => array( // v_del_image |
"id_observation" => 1, |
"date_observation" => 1, |
"date_transmission" => 1, |
"date_transmission" => 1, |
"famille" => "determination.famille", |
"nom_sel" => "determination.ns", |
"nom_sel_nn" => "determination.nn", |
107,11 → 107,11 |
"proposition_initiale" => 1), |
); |
private $conteneur; |
private $gestionBdd; |
private $bdd; |
public function __construct(Conteneur $conteneur = null) { |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; |
$this->conteneur->chargerConfiguration('config_votes.ini'); |
120,10 → 120,10 |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
} |
/** |
* Méthode principale de la classe. |
* Lance la récupération des images dans la base et les place dans un objet ResultatService |
* Lance la récupération des images dans la base et les place dans un objet ResultatService |
* pour l'afficher. |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2) |
* @param array $parametres les paramètres situés après le ? dans l'url |
148,7 → 148,7 |
// 1) récupération de l'observation (et de ses images (v_del_image est une vue utilisant des INNER JOIN)) |
$liaisons = self::chargerObservation($this->bdd, $idobs); |
if(!$liaisons) { |
header('HTTP/1.0 404 Not Found'); |
// don't die (phpunit) |
184,8 → 184,8 |
// autre élément de post-processing: le ce_utilisateur de l'observation non-numeric... |
if(!is_numeric($observation['auteur.id'])) $observation['auteur.id'] = "0"; |
if(!isset($observation['auteur.nom'])) $observation['auteur.nom'] = '[inconnu]'; |
if(isset($parametres['justthrow'])) return $observation; |
// Mettre en forme le résultat et l'envoyer pour affichage |
204,7 → 204,7 |
// champs de l'annuaire (del_utilisateur): id_utilisateur prenom, nom, courriel |
$annuaire_fields = implode(', ', array("IFNULL(du.prenom, prenom_utilisateur) AS `auteur.prenom`", |
"IFNULL(du.nom, nom_utilisateur) AS `auteur.nom`", |
"IFNULL(du.courriel, courriel_utilisateur) AS observateur")); |
"IFNULL(du.courriel, courriel_utilisateur) AS `auteur.courriel`")); |
return $db->recupererTous(sprintf( |
'SELECT %s, %s, %s FROM v_del_image as dob'. |
' LEFT JOIN del_utilisateur du ON CAST(du.id_utilisateur AS CHAR) = CAST(dob.ce_utilisateur AS CHAR)'. |
212,7 → 212,7 |
$obs_fields, $image_fields, $annuaire_fields, $idobs, __FILE__ . ':' . __LINE__)); |
} |
// Charger les images et leurs votes associés |
static function chargerVotesImage($db, $images, $protocole = NULL) { |
if(!$images) return NULL; |
219,11 → 219,11 |
$select = array('votes' => |
array('id_vote', 'ce_image', 'ce_protocole', 'ce_utilisateur', 'valeur', 'date', /* del_image_vote */), |
'protocole' => |
'protocole' => |
array('id_protocole', 'intitule', 'descriptif', 'tag' /* del_image_protocole */ )); |
$vote_fields = DelTk::sqlFieldsToAlias(self::$mappings['votes'], $select['votes'], 'v'); // "v": cf alias dans la requête |
$proto_fields = DelTk::sqlFieldsToAlias(self::$mappings['protocoles'], $select['protocole'], 'p'); |
$where = array(); |
$idsImages = array_values(array_map(create_function('$a', 'return $a["id_image"];'), $images)); |
$where[] = sprintf('v.ce_image IN (%s)', |
245,12 → 245,12 |
($where ? implode(' AND ', $where) : 1), |
$ordreDesIdsRecus, |
__FILE__ . ':' . __LINE__); |
//echo "REQUETE: $req"; exit; |
return $db->recupererTous($req); |
} |
/** |
* Formater une observation depuis une ligne liaison |
* @param $liaison liaison issue de la recherche |
269,10 → 269,10 |
foreach ($votes as $vote) { |
$imgid = $vote['image.id']; |
$protoid = $vote['protocole.id']; |
// un vote sans image associée ? est-ce possible ? |
// if(!isset($images[$imgid])) continue; |
if(!array_key_exists('protocoles_votes', $images[$imgid]) || |
!array_key_exists($protoid, $images[$imgid]['protocoles_votes'])) { |
// extrait les champs spécifique au protocole (le LEFT JOIN de chargerVotesImage les ramène en doublons |
/trunk/services/modules/0.1/Utilisateurs.php |
---|
16,7 → 16,7 |
*/ |
class Utilisateurs extends RestService { |
private $parametres = array(); |
private $ressources = array(); |
private $methode = null; |
25,7 → 25,7 |
private $cheminCourant = null; |
private $conteneur; |
/** Indique si oui (true) ou non (false), on veut utiliser les paramètres bruts. */ |
protected $utilisationParametresBruts = true; |
49,7 → 49,7 |
$corps = $reponseHttp->getCorps(); |
return $corps; |
} |
public function modifier($ressources, $parametres) { |
$this->methode = 'modifier'; |
$resultat = ''; |
66,7 → 66,7 |
$corps = $reponseHttp->getCorps(); |
return $corps; |
} |
private function initialiserRessourcesEtParametres($ressources, $parametres) { |
$this->ressources = $ressources; |
$this->parametres = $parametres; |
78,8 → 78,8 |
$retour = $this->initialiserService(); |
return $retour; |
} |
/*------------------------------------------------------------------------------------------------------------------ |
CONFIGURATION DU PROJET |
------------------------------------------------------------------------------------------------------------------*/ |
98,9 → 98,9 |
CONFIGURATION DU SERVICE |
------------------------------------------------------------------------------------------------------------------*/ |
private function initialiserService() { |
$this->chargerNomService(); |
$classe = $this->obtenirNomClasseService($this->serviceNom); |
$chemins = array(); |
$chemins[] = $this->cheminCourant.$this->projetNom.DS.$classe.'.php'; |
110,19 → 110,19 |
foreach ($chemins as $chemin) { |
if (file_exists($chemin)) { |
$this->conteneur->chargerConfiguration('config_'.$this->projetNom.'.ini'); |
require_once $chemin; |
$service = new $classe($this->conteneur); |
if ($this->methode == 'consulter') { |
$retour = $service->consulter($this->ressources, $this->parametres); |
} elseif ($this->methode == 'ajouter') { |
$retour = $service->ajouter($this->ressources, $this->parametres); |
$retour = $service->ajouter($this->ressources, $this->parametres); |
} elseif ($this->methode == 'modifier') { |
$retour = $service->modifier($this->ressources, $this->parametres); |
$retour = $service->modifier($this->ressources, $this->parametres); |
} |
} |
} |
if (is_null($service)) { |
$message = "Le service demandé '{$this->serviceNom}' n'existe pas dans le projet {$this->projetNom} !"; |
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE; |
130,7 → 130,7 |
} |
return $retour; |
} |
private function chargerNomService() { |
//S'il n'y a pas de ressources => envoyer sur identification anonyme |
if (!isset($this->ressources) || empty($this->ressources)) { |
153,7 → 153,5 |
$classeNom = str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot)))); |
return $classeNom; |
} |
} |
?> |
/trunk/services/modules/0.1/Images.php |
---|
53,7 → 53,7 |
} |
public function modifier($ressources, $requeteDonnees) { |
$this->methode = 'supprimer'; |
$this->methode = 'modifier'; |
$this->initialiserRessourcesEtParametres($ressources, $requeteDonnees); |
return $this->executerService(); |
} |
97,25 → 97,36 |
} |
/** |
* URLs possibles GET : |
* URLs possibles : |
* |
* GET : |
* http://localhost/del/services/0.1/images/ => toutes les images : classe ListeImages |
* http://localhost/del/services/0.1/images/#id/votes => tous les votes d'une image classés par protocole : classe VotesImage |
* http://localhost/del/services/0.1/images/#idImg/votes => tous les votes d'une image (#idImg) classés par protocole : classe VotesImage |
* |
* Non Implémenté : http://localhost/del/services/0.1/images/#id => une image donnée => en test pour remplacer les appels à eflore/cel |
* Non Implémenté : http://localhost/del/services/0.1/images/#id/votes?protocole=#id => tous les votes d'une image et d'un protocole donné |
* |
* URLs possibles DELETE : |
* http://localhost/del/services/0.1/images/#id => supprimer une image donnée |
* PUT : |
* http://localhost/del/services/0.1/images/#idImg => ajouter un vote sur une image donnée (#idImg) |
* |
* POST : |
* http://localhost/del/services/0.1/images/#idImg => modifier un vote sur une image donnée (#idImg) |
* |
* DELETE : |
* http://localhost/del/services/0.1/images/#idImg => supprimer une image donnée (#idImg) |
* http://localhost/del/services/0.1/images/#idImg/votes/#idVote => supprimer un vote (#idVote) d'une image donnée (#idImg) |
*/ |
private function analyserRessources() { |
if ($this->methode == 'consulter' || $this->methode == 'modifier' || $this->methode == 'ajouter') { |
$this->analyserRessoucerConsultation(); |
if ($this->methode == 'consulter') { |
$this->analyserRessoucesConsultation(); |
} else if ($this->methode == 'modifier' || $this->methode == 'ajouter') { |
$this->analyserRessoucesModification(); |
} else if ($this->methode == 'supprimer') { |
$this->analyserRessoucerSuppression(); |
$this->analyserRessoucesSuppression(); |
} |
} |
private function analyserRessoucerConsultation() { |
private function analyserRessoucesConsultation() { |
if (count($this->ressources) == 0) { |
$this->sousServiceNom = 'liste-images'; |
} else if (count($this->ressources) == 2) { |
129,9 → 140,25 |
} |
} |
private function analyserRessoucerSuppression() { |
private function analyserRessoucesModification() { |
if (count($this->ressources) == 2) { |
if ($this->etreRessourceIdentifiant(0) && $this->verifierRessourceValeur(1, 'votes')) { |
$this->sousServiceNom = 'votes-image'; |
} |
} |
if ($this->sousServiceNom == null) { |
$this->lancerMessageErreurRessource(); |
} |
} |
private function analyserRessoucesSuppression() { |
if (count($this->ressources) == 1 && $this->etreRessourceIdentifiant(0)) { |
$this->sousServiceNom = 'liste-images'; |
} else if (count($this->ressources) == 3) { |
if ($this->etreRessourceIdentifiant(0) && $this->verifierRessourceValeur(1, 'votes') && $this->etreRessourceIdentifiant(2) ) { |
$this->sousServiceNom = 'votes-image'; |
} |
} |
if ($this->sousServiceNom == null) { |
183,6 → 210,10 |
$service = new $classe($this->conteneur); |
if ($this->methode == 'consulter') { |
$retour = $service->consulter($this->ressources, $this->parametres); |
} elseif ($this->methode == 'ajouter') { |
$retour = $service->ajouter($this->ressources, $this->parametres); |
} elseif ($this->methode == 'modifier') { |
$retour = $service->modifier($this->ressources, $this->parametres); |
} elseif ($this->methode == 'supprimer') { |
$retour = $service->supprimer($this->ressources); |
} |
/trunk/services/modules/0.1/utilisateurs/Preferences.php |
---|
15,11 → 15,11 |
*/ |
class Preferences { |
private $conteneur; |
private $gestionBdd; |
private $bdd; |
public function __construct(Conteneur $conteneur = null) { |
session_start(); |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; |
27,7 → 27,7 |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
} |
/** |
* Renvoie les préférences utilisateurs |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2) |
34,7 → 34,6 |
* @param array $parametres les paramètres situés après le ? dans l'url |
* */ |
public function consulter($ressources, $parametres) { |
$id_utilisateur = $ressources[0]; |
$prefs = $this->obtenirPreferencesUtilisateur($id_utilisateur); |
// Mettre en forme le résultat et l'envoyer pour affichage |
42,27 → 41,12 |
$resultat->corps = $prefs; |
return $resultat; |
} |
/** |
* Méthode principale de la classe. |
* Modifie les préférences utilisateurs |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2) |
* @param array $parametres les paramètres situés dans le post |
* */ |
public function modifier($ressources, $parametres) { |
$id_utilisateur = $ressources[0]; |
$prefs = $this->modifierPreferencesUtilisateur($id_utilisateur, $parametres); |
// Mettre en forme le résultat et l'envoyer pour affichage |
$resultat = new ResultatService(); |
$resultat->corps = $prefs; |
return $resultat; |
} |
private function obtenirPreferencesUtilisateur($id_utilisateur) { |
$requete = 'SELECT * FROM del_utilisateur_infos WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur); |
$prefs_utilisateur = $this->bdd->recupererTous($requete); |
if(empty($prefs_utilisateur)) { |
if (empty($prefs_utilisateur)) { |
$this->initialiserInfosUtilisateur($id_utilisateur); |
$prefs_utilisateur = $this->renvoyerInfosUtilisateurDefaut($id_utilisateur); |
} else { |
70,43 → 54,56 |
$prefs_utilisateur['preferences'] = json_decode($prefs_utilisateur['preferences']); |
$prefs_utilisateur['admin'] = $prefs_utilisateur['admin']; |
} |
return $prefs_utilisateur; |
} |
private function modifierPreferencesUtilisateur($id_utilisateur, $prefs) { |
$requete = 'UPDATE del_utilisateur_infos '. |
'SET preferences = '.$this->bdd->proteger(json_encode($prefs)).' '. |
'WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur); |
$resultat = $this->bdd->requeter($requete); |
return $resultat; |
} |
private function initialiserInfosUtilisateur($id_utilisateur) { |
$preferences_defaut = $this->obtenirTableauPreferenceDefaut(); |
$prefsEncodeesP = $this->bdd->proteger(json_encode($preferences_defaut)); |
$idUtilisateurP = $this->bdd->proteger($id_utilisateur); |
$requete = 'INSERT INTO del_utilisateur_infos '. |
'(id_utilisateur, admin, preferences, date_premiere_utilisation )'. |
'VALUES '. |
"(".$this->bdd->proteger($id_utilisateur).", 0, ".$this->bdd->proteger(json_encode($preferences_defaut)).", NOW()) ". |
'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() '; |
'(id_utilisateur, admin, preferences, date_premiere_utilisation )'. |
"VALUES ($idUtilisateurP, 0, $prefsEncodeesP, NOW()) ". |
'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() '; |
$resultat = $this->bdd->requeter($requete); |
return $resultat; |
} |
private function obtenirTableauPreferenceDefaut() { |
return array('mail_notification_mes_obs' => '1', 'mail_notification_toutes_obs' => '0'); |
} |
private function renvoyerInfosUtilisateurDefaut($id_utilisateur) { |
return array('id_utilisateur' => $id_utilisateur, |
'admin' => "0", |
'preferences' => $this->obtenirTableauPreferenceDefaut(), |
'date_premiere_utilisation' => date('Y-m-d H:i:s')); |
return array('id_utilisateur' => $id_utilisateur, |
'admin' => '0', |
'preferences' => $this->obtenirTableauPreferenceDefaut(), |
'date_premiere_utilisation' => date('Y-m-d H:i:s')); |
} |
private function obtenirTableauPreferenceDefaut() { |
return array('mail_notification_mes_obs' => "1", |
'mail_notification_toutes_obs' => "0"); |
/** |
* Méthode principale de la classe. |
* Modifie les préférences utilisateurs |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2) |
* @param array $parametres les paramètres situés dans le post |
* */ |
public function modifier($ressources, $parametres) { |
$id_utilisateur = $ressources[0]; |
$prefs = $this->modifierPreferencesUtilisateur($id_utilisateur, $parametres); |
// Mettre en forme le résultat et l'envoyer pour affichage |
$resultat = new ResultatService(); |
$resultat->corps = $prefs; |
return $resultat; |
} |
private function modifierPreferencesUtilisateur($id_utilisateur, $prefs) { |
$requete = 'UPDATE del_utilisateur_infos '. |
'SET preferences = '.$this->bdd->proteger(json_encode($prefs)).' '. |
'WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur); |
$resultat = $this->bdd->requeter($requete); |
return $resultat; |
} |
} |
?> |
/trunk/services/modules/0.1/images/VotesImage.php |
---|
71,7 → 71,7 |
$this->proteger($parametres['protocole']).','. |
$this->proteger($parametres['utilisateur']).','. |
$this->proteger($parametres['valeur']).', '. |
'NOW()'. |
'NOW()'. |
');'; |
$resultat = $this->bdd->requeter($insertion); |
78,6 → 78,7 |
if ($resultat == false) { |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} else { |
// ATTENTION : idVote doit être récupéré avant toute nouvelle requete ! |
$idVote = $this->bdd->recupererIdDernierAjout(); |
self::updateStats($this->bdd, $ressources[0], $parametres['protocole']); |
105,10 → 106,9 |
$resultat = $this->bdd->requeter($modification); |
if ($resultat == false) { |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} else { |
self::updateStats($this->bdd, $ressources[0],$parametres['protocole']); |
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK); |
} |
self::updateStats($this->bdd, $ressources[0],$parametres['protocole']); |
return 'ok'; |
} |
public function supprimer($ressources) { |
126,21 → 126,19 |
$controle_acces = $this->conteneur->getControleAcces(); |
$utilisateur = $controle_acces->getInfosUtilisateurConnecte(); |
if ($utilisateur['id_utilisateur'] != $infos_vote['ce_utilisateur'] && |
$controle_acces->getIdAnonymeTemporaire() != $infos_vote['ce_utilisateur']) { |
throw new Exception("Vous n'êtes pas autorisé à supprimer ce vote", |
RestServeur::HTTP_CODE_ACCES_NON_AUTORISE); |
if (isset($utilisateur['id_utilisateur']) && |
$utilisateur['id_utilisateur'] != $infos_vote['ce_utilisateur'] && |
$controle_acces->getIdAnonymeTemporaire() != $infos_vote['ce_utilisateur']) { |
$message = "Vous n'êtes pas autorisé à supprimer le vote : $id_vote"; |
throw new Exception($message, RestServeur::HTTP_CODE_ACCES_NON_AUTORISE); |
} |
$suppression = 'DELETE FROM del_image_vote '. |
'WHERE id_vote = '.$id_vote_p; |
$suppression = "DELETE FROM del_image_vote WHERE id_vote = $id_vote_p "; |
$resultat = $this->bdd->requeter($suppression); |
if ($resultat == false) { |
throw new Exception("Impossible de supprimer le vote", RestServeur::HTTP_CODE_ERREUR); |
} else { |
self::updateStats($this->bdd, $ressources[0],$infos_vote['ce_protocole']); |
} |
self::updateStats($this->bdd, $ressources[0],$infos_vote['ce_protocole']); |
} |
// intermédiaire pour la méthode contenue dans "Commun" |
/trunk/services/modules/0.1/images/ListeImages.php |
---|
113,7 → 113,8 |
"commentaire" => 1, |
"ce_utilisateur" => "auteur.id", |
"nom_utilisateur" => "auteur.nom", |
"prenom_utilisateur" => "auteur.prenom",), |
"prenom_utilisateur" => "auteur.prenom", |
"courriel_utilisateur" => "auteur.courriel",), |
'images' => array( // v_del_image |
'id_image' => 1, |
// l'alias suivant est particulier: in-fine il doit s'appeler mots_cles_texte |
/trunk/services/configurations/config_observations.ini |
---|
9,7 → 9,7 |
[observations] |
; URL de base des services de ce projet |
; url_service = "{ref:url_base}del/services/0.1/observations/" |
url_service = "{ref:url_base}service:del:0.1/observations/" |
url_service = "{ref:url_base}service:del:0.1/observations/" |
url_images = "http://api.tela-botanica.org/img:%09dXL.jpg"; |
; +------------------------------------------------------------------------------------------------------+ |
21,13 → 21,12 |
[mapping_observation] |
id_observation = "id_observation" |
date_observation = "date_observation" |
date_transmission = "date_transmission" |
date_transmission = "date_transmission" |
famille = "determination.famille" |
nom_sel = "determination.ns" |
nom_sel_nn = "determination.nn" |
nt = "determination.nt" |
nom_referentiel = "determination.referentiel" |
courriel = "observateur" |
ce_zone_geo = "id_zone_geo" |
zone_geo = "zone_geo" |
lieudit = "lieudit" |
36,6 → 35,7 |
nom = "auteur.nom" |
prenom = "auteur.prenom" |
ce_utilisateur = "auteur.id" |
courriel = "auteur.courriel" |
mots_cles_texte = "mots_cles_texte" |
dob_commentaire = commentaire |
/trunk/services/bibliotheque/GestionUtilisateur.php |
---|
27,6 → 27,7 |
'mot_de_passe' => '', |
'nom' => '', |
'prenom' => '', |
'admin' => '0', |
'session_id' => session_id() |
); |
} |
42,15 → 43,16 |
protected function utilisateurEstIdentifieCookie() { |
$retour = null; |
if (isset($_COOKIE["del_courriel"]) && isset($_COOKIE["del_mot_de_passe"])) { |
$retour = $this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["del_courriel"], $_COOKIE["del_mot_de_passe"]); |
if (isset($_COOKIE['del_courriel']) && isset($_COOKIE['del_mot_de_passe'])) { |
$retour = $this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE['del_courriel'], $_COOKIE['del_mot_de_passe']); |
} |
return $retour; |
} |
protected function identifierUtilisateur($login, $motDePasse) { |
$requete = 'SELECT id_utilisateur, nom, prenom, courriel, mot_de_passe FROM del_utilisateur AS du '. |
$requete = 'SELECT du.id_utilisateur, nom, prenom, courriel, mot_de_passe, dui.admin '. |
'FROM del_utilisateur AS du '. |
' LEFT JOIN del_utilisateur_infos AS dui ON (du.id_utilisateur = dui.id_utilisateur) '. |
'WHERE courriel = '.$this->bdd->proteger($login).' '. |
'AND mot_de_passe = MD5('.$this->bdd->proteger($motDePasse).')'; |
$utilisateur = $this->bdd->recupererTous($requete); |
58,7 → 60,9 |
} |
protected function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe) { |
$requete = 'SELECT id_utilisateur, nom, prenom, courriel, mot_de_passe FROM del_utilisateur AS du '. |
$requete = 'SELECT du.id_utilisateur, nom, prenom, courriel, mot_de_passe, dui.admin '. |
'FROM del_utilisateur AS du '. |
' LEFT JOIN del_utilisateur_infos AS dui ON (du.id_utilisateur = dui.id_utilisateur) '. |
'WHERE courriel = '.$this->bdd->proteger($login).' '. |
'AND mot_de_passe = '.$this->bdd->proteger($mot_de_passe); |
$utilisateur = $this->bdd->recuperer($requete); |
65,12 → 69,11 |
return $utilisateur; |
} |
protected function setUtilisateur($utilisateur) { |
$utilisateur['session_id'] = session_id(); |
$utilisateur['connecte'] = true; |
$this->setPersistentCookie("del_courriel", $utilisateur['courriel'], 1); |
$this->setPersistentCookie("del_mot_de_passe", $utilisateur['mot_de_passe'], 1); |
$this->setPersistentCookie('del_courriel', $utilisateur['courriel'], 1); |
$this->setPersistentCookie('del_mot_de_passe', $utilisateur['mot_de_passe'], 1); |
return $utilisateur; |
} |
79,8 → 82,8 |
} |
protected function oublierUtilisateur() { |
setcookie("del_courriel", $_COOKIE['del_courriel'], time()-3600, '/'); |
setcookie("del_mot_de_passe", $_COOKIE['del_mot_de_passe'], time()-3600, '/'); |
setcookie('del_courriel', $_COOKIE['del_courriel'], time()-3600, '/'); |
setcookie('del_mot_de_passe', $_COOKIE['del_mot_de_passe'], time()-3600, '/'); |
unset($_COOKIE['del_courriel']); |
unset($_COOKIE['del_mot_de_passe']); |
} |
/trunk/services/bibliotheque/ControleAcces.php |
---|
160,16 → 160,6 |
$courriel = $_COOKIE['del_courriel']; |
$motDePasse = $_COOKIE['del_mot_de_passe']; |
$utilisateur = $this->obtenirUtilisateurSansEncryptionMdp($courriel, $motDePasse); |
if ($utilisateur == false) { |
$message = "Vos login et/ou mot de passe ne sont pas corrects !\n"; |
$code = RestServeur::HTTP_CODE_ACCES_NON_AUTORISE; |
throw new Exception($message, $code); |
} |
} else { |
$message = "Vous n'êtes pas identifié à DEL et/ou le cookie de DEL n'est pas accessible !\n"; |
$code = RestServeur::HTTP_CODE_ACCES_NON_AUTORISE; |
throw new Exception($message, $code); |
} |
return $utilisateur; |
} |