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