Subversion Repositories Sites.obs-saisons.fr

Compare Revisions

Ignore whitespace Rev 280 → Rev 281

/trunk/applications/jrest/services/OdsExport.php
35,9 → 35,9
 
$this->envoyer($info,$this->type_mime);
}
public function getExportStationJson() {
$donnees = $this->getExportStation();
$donnees_formatees = $this->formaterListeStationPourExportJson($donnees);
55,6 → 55,55
return $res_selection_stations;
}
public function getExportUtilisateurCsv() {
$controle = new ControleUtilisateur($this->config);
$controle->authentifierAdmin();
$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);
$utilisateurs = $gestionnaire_utilisateurs->getListeUtilisateurAvecInfosComplementairesFormateeId();
$utilisateurs_formates = array();
$premiere_annee = 2006;
$nb_obs = $this->compterObservationsParUtilisateur();
foreach ($utilisateurs as $id => $utilisateur) {
$utilisateur_formate = array(
'id' => isset($utilisateur['uid']) ? $utilisateur['uid'] : '',
'pseudo' => isset($utilisateur['name']) ? $utilisateur['name'] : '',
'mail' => isset($utilisateur['mail']) ? $utilisateur['mail'] : '',
'nom' => isset($utilisateur['profile_nom']) ? $utilisateur['profile_nom'] : '',
'prenom' => isset($utilisateur['profile_prenom']) ? $utilisateur['profile_prenom'] : '',
'code postal' => isset($utilisateur['profile_code_postal']) ? $utilisateur['profile_code_postal'] : '',
'ville' => isset($utilisateur['profile_ville']) ? $utilisateur['profile_ville'] : '',
'type' => isset($utilisateur['profile_type']) ? $utilisateur['profile_type'] : ''
);
for($i = $premiere_annee; $i <= date('Y'); $i++) {
$utilisateur_formate['annee '.$i] = isset($nb_obs[$utilisateur['uid']]) && isset($nb_obs[$utilisateur['uid']][$i]) ? $nb_obs[$utilisateur['uid']][$i] : '0';
}
$utilisateurs_formates[] = $utilisateur_formate;
}
$csv = $this->convertirTableauAssocVersCSV($utilisateurs_formates);
$this->envoyerFichier($csv, 'utilisateurs');
}
private function compterObservationsParUtilisateur() {
$requete = 'SELECT COUNT(*) as nb_obs, oo_ce_participant as participant, YEAR(oo_date) as annee '.
'FROM `ods_observations` WHERE oo_date != "0000-00-00" GROUP BY oo_ce_participant, YEAR(oo_date)';
$res_selection_obs = $this->executerRequete($requete);
$stats = array();
foreach ($res_selection_obs as $obs_nb) {
$stats[$obs_nb['participant']][$obs_nb['annee']] = $obs_nb['nb_obs'];
}
return $stats;
}
public function formaterListeStationPourExportJson($tableau_stations_infos) {
$gestionnaire_especes = new OdsEspece($this->config);
317,6 → 366,7
$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
$id_observation = $observations_infos['oo_id_observation'];
$milieu = isset($milieux[$observations_infos['os_ce_environnement']]['ot_valeur']) ? $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'] : '';
$infos_formatees = array(
'id_observation' => $id_observation,
330,7 → 380,7
'latitude' => $observations_infos['os_latitude'],
'longitude' => $observations_infos['os_longitude'],
'altitude' => $observations_infos['os_altitude'],
'milieu' => $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'],
'milieu' => $milieu,
'id_participant' => $observations_infos['os_ce_participant'],
'pseudo_participant' => '',
'mail_participant' => ''
342,7 → 392,7
$codes_insee_communes[] = $observations_infos['os_ce_commune'];
}
}
 
$correspondance_codes_insee_noms = $gestionnaire_communes->obtenirTableauNomsCommunesParTableauCodesInsee($codes_insee_communes);
$correspondance_id_utilisateur = $gestionnaire_utilisateurs->getListeUtilisateurFormateeId();
366,15 → 416,21
$csv .= implode(';',$colonnes).";\n";
foreach($tableau as $elements) {
$csv .= implode(';',$elements).";\n";
$ligne = "";
// parcours des cases de chaque ligne nécessaire car si on utilise implode
// les valeurs vides ne sont pas prises et ça décale les colonnes
foreach ($elements as $element) {
$ligne .= '"'.$element.'";';
}
$csv .= $ligne."\n";
}
return $csv;
}
public function envoyerFichier($contenu) {
public function envoyerFichier($contenu, $nom = 'observations_export') {
$nom_fichier = "observations_export.csv";
$nom_fichier = $nom.".csv";
$chemin_fichier = $this->config['appli']['chemin_fichiers_temp'].'/'.$nom_fichier;
file_put_contents($chemin_fichier, $contenu);
/trunk/applications/jrest/lib/ControleUtilisateur.php
New file
0,0 → 1,77
<?php
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DE L'IDENTIFICATION
Class ControleUtilisateur extends JRestService {
private function envoyerAuth($message_accueil, $message_echec) {
header('HTTP/1.0 401 Unauthorized');
header('WWW-Authenticate: Basic realm="UTF-8"');
header('Content-type: text/plain; charset=UTF-8');
print $message_echec;
exit(0);
}
protected function getAuthIdentifiant() {
$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;
return $id;
}
protected function getAuthMotDePasse() {
$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null;
return $mdp;
}
public function authentifierAdmin() {
$message_accueil = "Veuillez vous identifier avec votre compte Observatoire des saisons.";
$message_echec = "Accès limité aux administrateurs de l'ods.\n".
"Votre tentative d'identification a échoué.\n".
"Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme administrateur.";
return $this->authentifier($message_accueil, $message_echec, 'Admin');
}
private function authentifier($message_accueil, $message_echec, $type) {
$id = $this->getAuthIdentifiant();
if (!isset($id)) {
$this->envoyerAuth($message_accueil, $message_echec);
} else {
$methodeAutorisation = "etre{$type}Autorise";
$autorisation = $this->$methodeAutorisation();
 
if ($autorisation == false) {
$this->envoyerAuth($message_accueil, $message_echec);
}
}
return true;
}
public function etreUtilisateurAutorise() {
$identifiant = $this->getAuthIdentifiant();
$mdp = md5($this->getAuthMotDePasse());
$requete = 'SELECT COUNT(*) as existe FROM ods_redesign.drupal_users du '.
'WHERE name = '.$this->proteger($identifiant).' '.
'AND pass = '.$this->proteger($mdp);
$existe = $this->executerRequete($requete);
$autorisation = (!empty($existe) && $existe['existe'] > 0) ? true :false;
return $autorisation;
}
public function etreAdminAutorise() {
$identifiant = $this->getAuthIdentifiant();
$mdp = md5($this->getAuthMotDePasse());
$requete = 'SELECT COUNT(*) as existe FROM ods_redesign.drupal_users du '.
'INNER JOIN ods_redesign.drupal_users_roles dur '.
'ON du.uid = dur.uid '.
'WHERE name = '.$this->proteger($identifiant).' '.
'AND pass = '.$this->proteger($mdp).' '.
'AND rid = 3 ';
$existe = $this->executerRequete($requete);
$autorisation = (!empty($existe) && $existe[0]['existe'] > 0) ? true :false;
return $autorisation;
}
}
?>