Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2048 → Rev 2049

/trunk/services/modules/0.1/utilisateurs/Connecter.php
31,6 → 31,8
$this->verifierUtilisateur($utilisateur);
$utilisateur = $this->completerInfosUtilisateur($utilisateur);
$this->poserCookieUtilisateur($utilisateur);
$this->ajouterEvenements($utilisateur);
 
// Mettre en forme le résultat et l'envoyer pour affichage
$resultat = new ResultatService();
/trunk/services/modules/0.1/utilisateurs/Activite.php
New file
0,0 → 1,45
<?php
// declare(encoding='UTF-8');
/**
* Permet de consulter l'activité d'un utilisateur de Del
*
* @category DEL
* @package Services
* @subpackage Utilisateurs
* @version 0.1
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class Activite extends GestionUtilisateur {
 
/**
* Méthode principale de la classe.
* 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
* */
public function consulter($ressources, $parametres) {
$utilisateur = $this->getUtilisateurIdentifie();
$id_utilisateur = $utilisateur['id_utilisateur'];
$sql = $this->conteneur->getSql();
$date = "2015-03-17 11:48:36.000000";
$requete_activite = $sql->getRequeteNbEvenementsDepuisDate($id_utilisateur, $date);
$resultats = $this->bdd->recupererTous($requete_activite);
 
$nb_evenements = $resultats[0]['nb_evenements'];
$activite = array('nb_evenements' => $nb_evenements,
'date_derniere_consultation_evenements' => $date);
 
// Mettre en forme le résultat et l'envoyer pour affichage
$resultat = new ResultatService();
$resultat->corps = $activite;
return $resultat;
}
}
/trunk/services/modules/0.1/utilisateurs/Identification.php
27,6 → 27,7
$utilisateur = $this->getUtilisateurIdentifie();
if ($utilisateur != null) {
$utilisateur['connecte'] = true;
$this->ajouterEvenements($utilisateur);
} else {
$utilisateur = $this->getUtilisateurAnonyme();
}
/trunk/services/modules/0.1/observations/ListeObservations.php
32,6 → 32,8
private $idsObsOrdonnees = array();
private $infosObs = array();
private $infosObsOrdonnee = array();
private $evenementsObs = array();
 
 
public function __construct(Conteneur $conteneur) {
89,14 → 91,9
* @param db: l'instance de db
*/
private function getIdObs() {
$requete = 'SELECT SQL_CALC_FOUND_ROWS id_observation '.
'FROM del_observation AS do '.
$this->sql->getJoin().
'WHERE '.$this->sql->getWhere().
$this->sql->getGroupBy().
$this->sql->getOrderBy().
$this->sql->getLimit().
' -- '.__FILE__.':'.__LINE__;
$requete = $this->renvoyerRequeteSelonType();
//Debug::printr($requete);
$resultats = $this->bdd->recupererTous($requete);
 
108,6 → 105,35
}
return $idObs;
}
private function renvoyerRequeteSelonType() {
//TODO: interdire l'appel si l'on est pas connecté ?
if($this->monActiviteEstDemandee()) {
$gestion_utilisateur = new GestionUtilisateur($this->conteneur);
$utilisateur = $gestion_utilisateur->getUtilisateurIdentifie();
$id_utilisateur = $utilisateur['id_utilisateur'];
$requete = $this->sql->getRequeteIdObsMonactiviteTout($id_utilisateur, $this->sql->getLimit()).' -- '.__FILE__.':'.__LINE__;
// Enregistrement de la date de consultation pour ne pas réafficher des évènements déjà consultés
setcookie('del_date_derniere_consultation_evenements_'+$id_utilisateur, date('Y-m-d H:i:s'), time() + (60*60*24*100),'/');
} else {
$requete = 'SELECT SQL_CALC_FOUND_ROWS id_observation '.
'FROM del_observation AS do '.
$this->sql->getJoin().
'WHERE '.$this->sql->getWhere().
$this->sql->getGroupBy().
$this->sql->getOrderBy().
$this->sql->getLimit().
' -- '.__FILE__.':'.__LINE__;
}
return $requete;
}
private function monActiviteEstDemandee() {
return isset($this->paramsFiltres['masque.type']) && in_array('monactivite',$this->paramsFiltres['masque.type']);
}
 
/**
* Après avoir récupérer seulement les ids dans une première requête, nous récupérons maintenant les infos.
127,10 → 153,70
' LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) '.
"WHERE id_observation IN ($idsObsConcat) ".
' -- '.__FILE__.':'.__LINE__;
if ($this->monActiviteEstDemandee()) {
$this->stockerEvenementsObs($idsObsConcat);
}
//Debug::printr($requete);
return $this->bdd->recupererTous($requete);
}
private function stockerEvenementsObs($idsObsConcat) {
$gestion_utilisateur = new GestionUtilisateur($this->conteneur);
$utilisateur = $gestion_utilisateur->getUtilisateurIdentifie();
$id_utilisateur = $utilisateur['id_utilisateur'];
$evenements = $this->sql->getEvenementsObs($idsObsConcat, $id_utilisateur);
$this->evenements_obs = array();
foreach($evenements as &$evenement) {
$this->affecterTypeEvenement($evenement, $id_utilisateur);
$this->evenementsObs[$evenement['id_observation']][] = $evenement['type'];
}
}
 
private function affecterTypeEvenement(&$evenement, $id_utilisateur) {
// La date maximale détermine le type d'évènement
switch($evenement['date_max']) {
// Quelqu'un a fait un nouveau commentaire ou proposition
case $evenement['date_com']:
if(!empty($evenement['nom_sel_com'])) {
$type = 'nouvelle_proposition';
} else {
$type = 'nouveau_commentaire';
}
// J'ai commenté ou fait une proposition
if($evenement['utilisateur_commentaire'] == $id_utilisateur) {
$type .= "_vous_a_obs_autre";
} else {
$type .= "_autre_sur_obs_vous";
}
break;
// Quelqu'un a fait un nouveau vote
case $evenement['date_vote']:
$type = 'nouveau vote';
// $type = "nouveau_vote_vous_a_com_autre";
$type = "nouveau_vote_autre_sur_com_vous";
break;
// Quelqu'un a validé une proposition
case $evenement['date_validation']:
$type = "nouvelle_validation_autre_sur_prop_vous";
// $type = "nouvelle_validation_vous_a_prop_autre";
break;
// Cas qui ne devrait jamais arriver
default:
$type = 'inconnu';
}
$evenement['type'] = $type;
}
 
/**
* Les informations étant extraites d'une vue dont les infos des obs sont dupliquées pour chaque image,
* il nous faut maintenant récupérer qu'une seule fois les données d'observations et y intégrer les données
148,6 → 234,10
$obsFormatees[$id] = $obs;
}
$obsFormatees[$id]['images'][] = $this->extraireInfosImage($obs);
if(isset($this->evenementsObs[$id])) {
$obsFormatees[$id]['evenements'] = $this->evenementsObs[$id];
}
}
return $obsFormatees;
}
/trunk/services/modules/0.1/Utilisateurs.php
79,6 → 79,8
$this->sousServiceNom = 'deconnecter';
} else if(count($this->ressources) == 2 && $this->ressources[1] == 'preferences') {
$this->sousServiceNom = 'preferences';
} else if(count($this->ressources) == 2 && $this->ressources[1] == 'activite') {
$this->sousServiceNom = 'activite';
} else if (count($this->ressources) == 2) {
$this->sousServiceNom = 'connecter';
} else {