/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); |