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