Subversion Repositories eFlore/Applications.del

Compare Revisions

Regard whitespace Rev 1611 → Rev 1612

/trunk/services/modules/0.1/commentaires/SupprimerCommentaire.php
77,9 → 77,10
* n'a aucune réponse
* */
public function sansEnfant() {
$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
'WHERE (ce_proposition = '.$this->commentaireId.' '.
'OR ce_commentaire_parent = '.$this->commentaireId.')';
$requete = 'SELECT * '.
'FROM del_commentaire '.
"WHERE (ce_proposition = {$this->commentaireId} ".
"OR ce_commentaire_parent = {$this->commentaireId}) ";
$resultats = $this->bdd->recupererTous($requete);
if (!empty($resultats)) {
$e = 'Impossible de supprimer le commentaire car il a des réponses';
104,11 → 105,11
*
* */
public function estProprietaire() {
$requete = 'SELECT * '.
'FROM del_commentaire '.
"WHERE id_commentaire = {$this->commentaireId} ".
"AND ce_utilisateur = {$this->utilisateurId} ";
$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
'WHERE id_commentaire = '.$this->commentaireId.' '.
'AND ce_utilisateur = '.$this->utilisateurId;
$resultats = $this->bdd->recupererTous($requete);
return !empty($resultats);
121,9 → 122,8
//TODO: utiliser le cookie n'est pas très sécurisé
// ceci aussi devrait être dans une classe utilitaire
if(isset($_COOKIE['del_courriel']) && $_COOKIE['del_courriel'] != '') {
$courriel = $_COOKIE['del_courriel'];
$requete = 'SELECT id_utilisateur FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du').
'WHERE courriel = '.$this->bdd->proteger($courriel);
$courriel = $this->bdd->proteger($_COOKIE['del_courriel']);
$requete = "SELECT id_utilisateur FROM del_utilisateur WHERE courriel = $courriel ";
$utilisateur = $this->bdd->recuperer($requete);
$this->utilisateurId = $utilisateur['id_utilisateur'];
}
134,14 → 134,15
*/
private function utilisateurEstAdmin() {
//TODO: déplacer ceci dans une classe utilitaire
$requete = 'SELECT admin FROM '.$this->gestionBdd->formaterTable('del_utilisateur_infos', 'dui').
'WHERE id_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
$idUtilisateur = $this->bdd->proteger($this->utilisateurId);
$requete = 'SELECT admin '.
'FROM del_utilisateur_infos '.
"WHERE id_utilisateur = $idUtilisateur ";
$resultat = $this->bdd->recuperer($requete);
return ($resultat && $resultat['admin'] == 1);
}
/**
* Initialiser les attributs de la classe avec les parametres
* */
173,9 → 174,11
* Requete effective de suppression
* */
public function supprimerCommentaire() {
$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire').' '.
'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId).' '.
'AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
$commentaireId = $this->bdd->proteger($this->commentaireId);
$utilisateurId = $this->bdd->proteger($this->utilisateurId);
$requete = 'DELETE FROM del_commentaire '.
"WHERE id_commentaire = $commentaireId ".
"AND ce_utilisateur = $utilisateurId ";
$retour = $this->bdd->requeter($requete);
if (!$retour) {
$e = 'Erreur lors de la suppression';
187,8 → 190,8
* Requete de suppression de votes associés au commentaire
*/
public function supprimerVotesAssocies() {
$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire_vote').' '.
'WHERE ce_proposition = '.$this->bdd->proteger($this->commentaireId);
$commentaireId = $this->bdd->proteger($this->commentaireId);
$requete = "DELETE FROM del_commentaire_vote WHERE ce_proposition = $commentaireId ";
$retour = $this->bdd->requeter($requete);
if (!$retour) {
$e = 'Erreur lors de la suppression des votes associés';
/trunk/services/modules/0.1/commentaires/AjouterCommentaire.php
140,7 → 140,7
// Sinon, on récupère les informations depuis le tableau Commentaire et on vérifie leur cohérence
if (isset($this->parametres['auteur.id'])) {
$requete = "SELECT id_utilisateur as 'auteur.id', nom as 'auteur.nom', prenom as 'auteur.prenom', courriel as 'auteur.courriel' ".
'FROM '.$this->gestionBdd->formaterTable('del_utilisateur').
'FROM del_utilisateur '.
'WHERE id_utilisateur = '.$this->bdd->proteger($this->parametres['auteur.id']);
$utilisateur = $this->bdd->recuperer($requete);
} else {
/trunk/services/modules/0.1/commentaires/ConsulterCommentaire.php
94,7 → 94,6
* Vérifier que le service est bien configuré
* */
public function verifierConfiguration() {
$erreurs = array();
$tableauCommentaires = $this->conteneur->getParametre('commentaires');
if (empty($tableauCommentaires)) {
127,7 → 126,6
}
}
if (!empty($erreurs)) {
$e = 'Erreur lors de la configuration : '."\n";
$e .= implode("\n", $erreurs);
172,9 → 170,7
* Chargement depuis la bdd de tous les commentaires
* */
private function chargerCommentaires() {
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * '.
'FROM '.$this->gestionBdd->formaterTable('del_commentaire', 'dc');
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * FROM del_commentaire ';
$requeteLiaisons .= $this->chargerClauseWhere();
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
return $this->bdd->recupererTous($requeteLiaisons);
/trunk/services/modules/0.1/commentaires/ListeCommentaires.php
114,7 → 114,6
}
}
if (!empty($erreurs)) {
$e = 'Erreur lors de la configuration : '."\n";
$e .= implode("\n", $erreurs);
155,8 → 154,7
* */
private function chargerCommentaires() {
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * '.
'FROM '.$this->gestionBdd->formaterTable('del_commentaire', 'dc');
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * FROM del_commentaire ';
$requeteLiaisons .= $this->chargerClauseWhere();
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
return $this->bdd->recupererTous($requeteLiaisons);
/trunk/services/modules/0.1/motscles/ListeMotsCles.php
135,10 → 135,8
* Chargement depuis la bdd de tous les mots clés
* */
private function chargerMotsCles() {
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * '.
'FROM '.$this->gestionBdd->formaterTable('del_image_tag', 'dit');
$requeteLiaisons .= $this->chargerClauseWhere();
'FROM del_image_tag '.$this->chargerClauseWhere();
return $this->bdd->recupererTous($requeteLiaisons);
}
/trunk/services/modules/0.1/images/VotesImage.php
259,9 → 259,7
* Charger les votes pour chaque image
* */
private function chargerVotes() {
$requeteVotes = 'SELECT * FROM '.
$this->gestionBdd->formaterTable('del_image_vote').
$this->chargerClauseWhere();
$requeteVotes = 'SELECT * FROM del_image_vote '.$this->chargerClauseWhere();
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
$votes = $this->formaterVotes($resultatsVotes);
return $votes;
/trunk/services/modules/0.1/observations/VoteObservation.php
54,9 → 54,10
}
 
private function chargerVotes($id_commentaire) {
$requeteVotes = 'SELECT * FROM '.
$this->gestionBdd->formaterTable('del_commentaire_vote').
'WHERE ce_proposition = '.$this->proteger($id_commentaire);
$id_commentaire = $this->proteger($id_commentaire);
$requeteVotes = 'SELECT * '.
'FROM del_commentaire_vote '.
"WHERE ce_proposition = $id_commentaire ";
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
$votes = array();
foreach ($resultatsVotes as $vote) {
75,8 → 76,9
* */
private function chercherUtilisateur($id) {
$utilisateur = array();
$requete = "SELECT id_utilisateur as 'auteur.id', nom as 'auteur.nom', prenom as 'auteur.prenom', courriel as 'auteur.courriel' ".
'FROM '.$this->gestionBdd->formaterTable('del_utilisateur').
$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', ".
"courriel AS 'auteur.courriel' ".
'FROM del_utilisateur '.
'WHERE id_utilisateur = '.$this->bdd->proteger($id);
$utilisateur = $this->bdd->recuperer($requete);
 
104,7 → 106,6
*
* */
public function ajouter($ressources, $parametres) {
 
$this->verifierParametresAjoutModif($ressources, $parametres);
 
// Vérifie si la proposition existe, et la crée sinon
126,7 → 127,6
}
 
private function renvoyerIdPropositionObservation($id_observation) {
 
$id_commentaire = null;
// Récupération de l'utilisateur + nom sel de l'observation originale
$requete_selection_obs = 'SELECT ce_utilisateur, nom_sel '.
138,14 → 138,18
if(is_array($obs) && isset($obs['ce_utilisateur'])) {
// On considère que la proposition faite par le même utilisateur et ayant le même
// nom sélectionné est bien la proposition composée à partir de l'obs originale
$requete_selection_comm = 'SELECT id_commentaire FROM del_commentaire '.
$requete_selection_comm = 'SELECT id_commentaire '.
'FROM del_commentaire '.
'WHERE ce_observation = '.$this->proteger($id_observation).' '.
' AND nom_sel = '.$this->proteger($obs['nom_sel']).' AND '.
' ce_utilisateur = '.$this->proteger($obs['ce_utilisateur']);
 
$commentaire = $this->bdd->recuperer($requete_selection_comm);
$id_commentaire = (is_array($commentaire) && $commentaire['id_commentaire'] != null) ? $commentaire['id_commentaire'] : null;
$id_commentaire = null;
if (is_array($commentaire) && $commentaire['id_commentaire'] != null) {
$id_commentaire = $commentaire['id_commentaire'];
}
}
 
return $id_commentaire;
}
155,8 → 159,10
if(!$proposition_existe) {
$id_proposition = $this->creerPropositionAPartirObservation($id_observation);
} else {
$requete = "SELECT id_commentaire FROM del_commentaire WHERE ce_observation = ".$id_observation." ".
"AND proposition_initiale = 1";
$requete = 'SELECT id_commentaire '.
'FROM del_commentaire '.
"WHERE ce_observation = $id_observation ".
'AND proposition_initiale = 1 ';
$resultat = $this->bdd->recuperer($requete);
$id_proposition = $resultat['id_commentaire'];
}
164,15 → 170,15
}
 
private function propositionInitialeExiste($id_observation) {
 
$requete = "SELECT COUNT(*) >= 1 as existe FROM del_commentaire WHERE ce_observation = ".$id_observation." ".
"AND proposition_initiale = 1";
$requete = 'SELECT COUNT(*) >= 1 AS existe '.
'FROM del_commentaire '.
"WHERE ce_observation = $id_observation ".
'AND proposition_initiale = 1 ';
$resultat = $this->bdd->recuperer($requete);
return $resultat['existe'] == 1;
}
 
private function creerPropositionAPartirObservation($id_observation) {
 
$insertion = 'INSERT IGNORE INTO del_commentaire '.
'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, date, proposition_initiale) '.
180,14 → 186,13
' courriel, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
" nt, famille, 'bdtfx_v1', NOW(), '1' ".
'FROM del_observation do '.
' LEFT JOIN del_utilisateur du ON '.
'do.ce_utilisateur = du.id_utilisateur '.
' LEFT JOIN del_utilisateur du ON (do.ce_utilisateur = du.id_utilisateur) '.
'WHERE id_observation = '.$this->proteger($id_observation);
 
$resultat = $this->bdd->requeter($insertion);
 
// Attention à l'abstraction utilisée, récupérer le dernier id en mysql ou msqli ça marche bien, mais pour d'autres moins
$id = $this->bdd->recupererIdDernierAjout();
 
return $id;
}
 
200,7 → 205,6
*
* */
public function modifier($ressources, $parametres) {
 
$this->verifierParametresAjoutModif($ressources, $parametres);
 
// Si l'identifiant de proposition vaut 0, c'est un vote sur une proposition
220,9 → 224,8
$modification = 'UPDATE del_commentaire_vote '.
'SET valeur ='.$this->proteger($parametres['valeur']).', '.
'date = NOW() '.
'WHERE '.
'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
'WHERE ce_proposition = '.$this->proteger($ressources[1]).' '.
'AND ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
 
$resultatsVotes = $this->bdd->requeter($modification);
if ($resultatsVotes == false) {
/trunk/services/modules/0.1/observations/ListeObservationsWidget.php
4,20 → 4,17
* Le web service observations récupère toutes les observations et, pour chacune d'elle, les
* images qui lui sont associées.
*
* @category php 5.2
* @package del
* @subpackage images
* @category DEL
* @package Observations
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Observations
*/
 
class ListeObservationsWidget {
private $conteneur;
private $navigation;
private $masque;
267,8 → 264,7
}
//TODO: déplacer les fonctions ci dessus et dessous dans une classe
// utilitaire
function supprimerAccents($str, $charset='utf-8')
{
public function supprimerAccents($str, $charset='utf-8') {
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
279,7 → 275,6
}
private function obtenirIdDepartement($nomDpt) {
$nomDpt = $this->supprimerAccents($nomDpt);
$nomDpt = strtolower(str_replace(' ','-',$nomDpt));
312,10 → 307,10
private function creerFiltreDate($valeurMasque) {
//TODO: définir dans le fichier de config un tableau contenant plusieurs format de date
// autorisés pour la recherche, qui seraient ajoutés au OR
$valeurMasque = $this->proteger($valeurMasque);
$masque = '(';
$masque .= (is_numeric($valeurMasque)) ? ' YEAR(date_observation) = '.$this->proteger($valeurMasque).' OR ' : '';
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = ".$this->proteger($valeurMasque).' '.
')';
$masque .= (is_numeric($valeurMasque)) ? " YEAR(date_observation) = $valeurMasque OR " : '';
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = $valeurMasque )";
return $masque;
}
348,11 → 343,10
* */
private function chargerObservations() {
$requete = 'SELECT DISTINCT dob.id_observation '.
'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
'ON doi.id_observation = dob.id_observation '.
$this->chargerClauseWhere().
' ORDER BY '.$this->tri.' '.$this->directionTri.' '.
'FROM del_observation AS dob '.
' INNER JOIN del_obs_image AS doi ON doi.id_observation = dob.id_observation '.
$this->chargerClauseWhere().' '.
"ORDER BY {$this->tri} {$this->directionTri} ".
$this->gestionBdd->getLimitSql();
return $this->bdd->recupererTous($requete);
/trunk/services/bibliotheque/GestionBdd.php
57,35 → 57,5
}
return $this->bdd;
}
/** Formater un nom de table avec le schéma de la base de données, s'il existe
* @param String $table le nom de la table
* @param String $as (optionnel) l'alias de la table
* @return String la chaine de caractère sous la forme "schema.nomtable as nt"
* */
public function formaterTable($table, $as = null) {
$chaineTable = $table;
if ($this->schemaBdd != null) {
$chaineTable = $this->schemaBdd.'.'.$table;
}
if ($as != null && $as != '') {
$chaineTable .= ' as '.$as;
}
return $chaineTable.' ';
}
/** Formater des noms de table avec le schéma de la base de données, s'il existe
* @param Array $tables un tableau à deux dimensions contenant le nom et l'alias de la table
* Ex : Array("nom" => "as", "table" => "")
* @return String la chaine de caractère sous la forme "schema.nomtable as nt, schema.nomtable2 as nt2"
* */
public function formaterTables($tables) {
$tablesFormatees = array();
foreach ($tables as $nom => $as) {
$tablesFormatees[] = $this->formaterTable($nom, $as);
}
return implode(',', $tablesFormatees);
}
}
?>
/trunk/services/bibliotheque/GestionUtilisateur.php
50,7 → 50,7
}
 
protected function identifierUtilisateur($login, $motDePasse) {
$requete = 'SELECT id_utilisateur, nom, prenom, courriel, mot_de_passe FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du').
$requete = 'SELECT id_utilisateur, nom, prenom, courriel, mot_de_passe FROM del_utilisateur AS du '.
'WHERE courriel = '.$this->bdd->proteger($login).' '.
'AND mot_de_passe = MD5('.$this->bdd->proteger($motDePasse).')';
$utilisateur = $this->bdd->recupererTous($requete);
58,7 → 58,7
}
 
protected function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe) {
$requete = 'SELECT id_utilisateur, nom, prenom, courriel, mot_de_passe FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du').
$requete = 'SELECT id_utilisateur, nom, prenom, courriel, mot_de_passe FROM del_utilisateur AS du '.
'WHERE courriel = '.$this->bdd->proteger($login).' '.
'AND mot_de_passe = '.$this->bdd->proteger($mot_de_passe);
$utilisateur = $this->bdd->recuperer($requete);