Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1764 → Rev 1765

/trunk/jrest/services/CoelStatistique.php
6,8 → 6,6
*
* Cas d'utilisation :
* /CoelStatistique/MonTypeDeStat : retourne la balise html image du graphique pour le type de statistique demandé
* /CoelStatistique/MonTypeDeStat/MonIdProjet : retourne la balise html image du graphique pour le type de statistique
* demandé et le projet indiqué.
* ?html=non : ce paramètre ajouté en fin d'url, force le retour de l'url du graphique sans la balise html img
*
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
131,12 → 129,9
private function executerRequeteNombre($entite, $abr) {
$table = 'coel_'.$entite;
$champ_id = $abr.'_id_'.$entite;
$champ_projet = $abr.'_ce_projet';
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
$requete = "SELECT COUNT($champ_id) AS nbre ".
"FROM $table ".
(is_null($projet_id) ? '' : "WHERE $champ_projet = $projet_id ");
"FROM $table ";
try {
$nbre = $this->bdd->query($requete)->fetchColumn();
if ($nbre === false) {
188,7 → 183,6
$legende = implode('|', $etats);
$etiquettes_x = "0|$moitier|$maximum";
$titre = $this->existerParametre(0) ? 'Ma participation' : 'Participation';
$titre .= $this->existerParametre(1) ? ' au projet' : ' tous projets confondus';
// Paramètres du graphique
$graph = array(
211,26 → 205,13
private function executerRequeteNombreDansHistorique($tables_infos, $etat) {
// Récupération des paramêtres
$personne_id = (isset($this->parametres[0]) && $this->parametres[0] != '*') ? $this->bdd->quote($this->parametres[0]) : null;
$projet_id = (isset($this->parametres[1]) && $this->parametres[1] != '*') ? $this->bdd->quote($this->parametres[1]) : null;
// Construction du Xpath si nécessaire
if (isset($projet_id)) {
$squelette = '//row[1]/%s_ce_projet';
$abreviations = explode(',', $tables_infos['abreviations']);
$xpath = array();
foreach ($abreviations as $abr) {
$xpath[] = sprintf($squelette, $abr);
}
$xpath = implode(' | ', $xpath);
}
// Récupération des données
$requete = "SELECT COUNT(cmhl_date_modification) AS nbre ".
"FROM coel_meta_historique_ligne ".
"WHERE cmhl_ce_table IN ({$tables_infos['identifiants']}) ".
" AND cmhl_ce_etat = $etat ".
(isset($personne_id) ? " AND cmhl_ce_modifier_par = $personne_id " : '').
(isset($projet_id) ? " AND ExtractValue(cmhl_enregistrement, '$xpath') = $projet_id " : '');
(isset($personne_id) ? " AND cmhl_ce_modifier_par = $personne_id " : '');
try {
$nbre = $this->bdd->query($requete)->fetchColumn();
if ($nbre === false) {
243,14 → 224,11
}
private function getTypeDepot() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
// Récupération des données
$requete = 'SELECT cmlv_nom AS type, COUNT(cc_ce_type_depot) AS nbre '.
'FROM coel_collection '.
' LEFT JOIN coel_meta_liste_valeur ON (cc_ce_type_depot = cmlv_id_valeur) '.
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ").
'GROUP BY cc_ce_type_depot';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
293,13 → 271,10
}
private function getNombreCollectionParStructure() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
// Récupération des données
$requete = 'SELECT COUNT(cc_id_collection) AS nbre '.
'FROM coel_collection '.
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ").
'GROUP BY cc_ce_structure ';
try {
307,7 → 282,7
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$this->messages[] = "Aucune collection n'est référencée.";
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
361,21 → 336,17
}
private function getNombrePartParStructure() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
// Récupération des données
$requete = 'SELECT cc_ce_structure, ccb_truk_unite_base '.
'FROM coel_collection_botanique '.
' LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) '.
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
' LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) ';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$this->messages[] = "Aucune collection n'est référencée.";
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
443,14 → 414,10
}
private function getNombrePartParCollection() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
// Récupération des données
$requete = 'SELECT ccb_truk_unite_base '.
'FROM coel_collection_botanique '.
( is_null($projet_id) ? '' : ' LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) ').
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
'FROM coel_collection_botanique ';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
457,7 → 424,7
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$this->messages[] = "Aucune collection n'est référencée.";
$infos == false;
}
} catch (PDOException $e) {
525,74 → 492,65
}
private function getNombreCollectionParDepartement() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
if ($projet_id !== null) {
// Récupération des données
$requete = 'SELECT cs_code_postal '.
'FROM coel_collection '.
' LEFT JOIN coel_structure ON (cc_ce_structure = cs_id_structure) '.
'WHERE cs_ce_truk_pays = '.self::META_CODE_FRANCE.' '.
( is_null($projet_id) ? '' : " AND cc_ce_projet = $projet_id ");
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$infos == false;
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
// Récupération des données
$requete = 'SELECT cs_code_postal '.
'FROM coel_collection '.
' LEFT JOIN coel_structure ON (cc_ce_structure = cs_id_structure) '.
'WHERE cs_ce_truk_pays = '.self::META_CODE_FRANCE.' ';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée.";
$infos == false;
}
$graph = null;
if ($infos !== false) {
// Post traitement des données de la base de données
// Extraction du nombre de part
$donnees = array();
foreach ($infos as $info) {
if (preg_match('/^([0-8][0-9]|9[0-5]|97[1-4]|976)/', $info['cs_code_postal'], $match)) {
if (! isset($donnees[$match[1]])) {
$donnees[$match[1]] = 1;
} else {
$donnees[$match[1]]++;
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
$graph = null;
if ($infos !== false) {
// Post traitement des données de la base de données
// Extraction du nombre de part
$donnees = array();
foreach ($infos as $info) {
if (preg_match('/^([0-8][0-9]|9[0-5]|97[1-4]|976)/', $info['cs_code_postal'], $match)) {
if (! isset($donnees[$match[1]])) {
$donnees[$match[1]] = 1;
} else {
$donnees[$match[1]]++;
}
}
$donnees_tmp = $donnees;
$donnees = array();
foreach ($donnees_tmp as $cle => $valeur) {
$donnees[$cle.' ('.$valeur.' collections)'] = $valeur;
}
asort($donnees);
$valeurs = implode(',', $donnees);
$legende = implode('|', array_keys($donnees));
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chtt' => 'Nombre de collections conservées |par département',
'chts' => '000000,11.5',
'chts' => '000000,12');
}
} else {
$this->messages[] = "Veuillez sélectionner un projet pour voir le graphique.";
$donnees_tmp = $donnees;
$donnees = array();
foreach ($donnees_tmp as $cle => $valeur) {
$donnees[$cle.' ('.$valeur.' collections)'] = $valeur;
}
asort($donnees);
$valeurs = implode(',', $donnees);
$legende = implode('|', array_keys($donnees));
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chtt' => 'Nombre de collections conservées |par département',
'chts' => '000000,11.5',
'chts' => '000000,12');
}
return $graph;
}
private function getNombreCollectionParTypeStructure() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
 
// Récupération des données
$requete = 'SELECT cmlv_prive.cmlv_nom AS type_prive, cmlv_public.cmlv_nom AS type_public '.
599,8 → 557,7
'FROM coel_collection '.
' LEFT JOIN coel_structure ON (cc_ce_structure = cs_id_structure) '.
' LEFT JOIN coel_meta_liste_valeur AS cmlv_prive ON (cs_ce_truk_type_prive = cmlv_prive.cmlv_id_valeur) '.
' LEFT JOIN coel_meta_liste_valeur AS cmlv_public ON (cs_ce_truk_type_public = cmlv_public.cmlv_id_valeur) '.
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
' LEFT JOIN coel_meta_liste_valeur AS cmlv_public ON (cs_ce_truk_type_public = cmlv_public.cmlv_id_valeur) ';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
607,7 → 564,7
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$this->messages[] = "Aucune collection n'est référencée.";
$infos == false;
}
} catch (PDOException $e) {
660,19 → 617,16
}
private function getNombreCollectionParPeriode() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
 
// Récupération des données
$requete = 'SELECT cc_truk_periode_constitution '.
'FROM coel_collection '.
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
'FROM coel_collection ';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$this->messages[] = "Aucune collection n'est référencée.";
$infos == false;
}
} catch (PDOException $e) {
751,20 → 705,16
}
private function getNombreHerbierParType() {
// Récupération des paramêtres
$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
 
// Récupération des données
$requete = 'SELECT ccb_ce_truk_type '.
'FROM coel_collection_botanique '.
( is_null($projet_id) ? '' : ' LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) ').
( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
'FROM coel_collection_botanique ';
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else if (count($infos) == 0) {
$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
$this->messages[] = "Aucune collection n'est référencée.";
$infos == false;
}
} catch (PDOException $e) {
779,7 → 729,7
try {
$metadonnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($metadonnees === false) {
$this->messages[] = "La requête de recherche des métadonnées a retourné aucun résultat.";
$this->messages[] = "La requête de recherche des métadonnées n'a retourné aucun résultat.";
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());