Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

No changes between revisions

Ignore whitespace Rev 97 → Rev 107

/tags/v1.3-costiere/modeles/SyndicationDao.php
New file
0,0 → 1,30
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des Collections pour les flux de Syndication.
*
* @package Collection
* @category php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class SyndicationDao extends ColModele {
const SERVICE = 'CoelSyndication';
/**
* Retourne l'ensemble des information sur les flux de syndication disponibles.
*
* @return array un tableau contenant les informations.
*/
public function getListeDesFlux() {
$url = $this->url_jrest.self::SERVICE.'/liste_des_flux';
$json = file_get_contents($url);
$donnees = json_decode($json, true);
return $donnees;
}
}
?>
/tags/v1.3-costiere/modeles/RechercheDao.php
New file
0,0 → 1,64
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des Collections pour la Recherche
*
* @package Collection
* @category php5
* @author aurelien <aurelien@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class RechercheDao extends ColModele {
const SERVICE = 'CoelRecherche';
/**
* Recherche une collection en fonction de paramêtres
* @return array un tableau contenant des objets d'informations sur les collections
*/
public function chercherStructureNbre($parametres) {
$url = $this->construireUrlRecherche('Nombre', $parametres, false);
$json = file_get_contents($url);
$donnees = json_decode($json);
return $donnees;
}
/**
* Recherche une collection en fonction de paramêtres
* @return array un tableau contenant des objets d'informations sur les collections
*/
public function chercher($parametres) {
$url = $this->construireUrlRecherche('ParDefaut', $parametres);
$json = file_get_contents($url);
$donnees = json_decode($json, true);
return $donnees;
}
private function construireUrlRecherche($type, $parametres, $limitation = true) {
$url = $this->url_jrest.self::SERVICE.'/'.$type;
$params_a_passer = array('mots', 'sci', 'bot', 'zg', 'p', 'pr', 'str-d', 'veg');
foreach ($params_a_passer as $param_cle) {
if (isset($parametres[$param_cle]) && $parametres[$param_cle] != '') {
$valeur = urlencode(trim($parametres[$param_cle]));
$url .= '/'.$valeur;
} else {
$url .= '/*';
}
}
if ($limitation) {
$url .= ($this->avoirLimitation() ? "?start={$this->getLimiteDebut()}&limit={$this->getLimiteNbre()}" : '');
$url .= "&distinct={$this->getDistinction()}";
} else {
$url .= "?distinct={$this->getDistinction()}";
}
return $url;
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/tags/v1.3-costiere/modeles/PersonneDao.php
New file
0,0 → 1,74
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des Collections pour le module Personnes.
*
* @package Collection
* @category php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class PersonneDao extends ColModele {
const SERVICE_PERSONNE = 'CoelPersonne';
const SERVICE_PERSONNE_A_PUBLICATION = 'CoelPublicationAPersonne';
 
/**
* Retourne l'ensemble des information d'une personne.
*
* @param integer l'id de la personne.
* @return array un tableau contenant les informations sur la personne.
*/
public function getPersonne($id) {
$donnees = array();
if (is_numeric($id)) {
$url = $this->url_jrest.self::SERVICE_PERSONNE."/$id";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
if ($donnees['nbElements'] == 1) {
$donnees = $donnees['personnes'][0];
}
}
return $donnees;
}
/**
* Retourne l'ensemble des publications liées à une personne.
*
* @param integer l'id de la personne.
* @return array un tableau contenant les informations sur les publications liées à la personne.
*/
public function getPersonneAPublication($id_personne) {
$url = $this->url_jrest.self::SERVICE_PERSONNE_A_PUBLICATION."/*/$id_personne/2361,2362,2363";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
$this->nettoyerTableauDeTableauxAssoc($donnees['publicationsAPersonne']);
return $donnees['publicationsAPersonne'];
}
public function getPersonneNomComplet($id) {
$nom_complet = '';
$donnees = $this->getPersonne($id);
if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
$nom_complet = $donnees['personnes'][0]['cp_fmt_nom_complet'];
} else if (isset($donnees['cp_fmt_nom_complet'])) {
$nom_complet = $donnees['cp_fmt_nom_complet'];
}
return $nom_complet;
}
public function getPersonneCourriels($id) {
$courriels = '';
$donnees = $this->getPersonne($id);
if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
$courriels = $donnees['personnes'][0]['cp_truk_courriel'];
} else if (isset($donnees['cp_truk_courriel'])) {
$courriels = $donnees['cp_truk_courriel'];
}
return $courriels;
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/tags/v1.3-costiere/modeles/CollectionDao.php
New file
0,0 → 1,90
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des Collections pour le module Collections.
*
* @package Collection
* @category php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class CollectionDao extends ColModele {
const SERVICE_COLLECTION = 'CoelCollection';
const SERVICE_COLLECTION_A_PERSONNE = 'CoelCollectionAPersonne';
const SERVICE_COLLECTION_A_PUBLICATION = 'CoelCollectionAPublication';
const SERVICE_COLLECTION_A_COMMENTAIRE = 'CoelCollectionACommentaire';
/**
* Retourne l'ensemble des information sur une collection.
*
* @param integer l'id de la collection.
* @return array un tableau contenant les informations sur la collection.
*/
public function getCollection($id) {
$json = file_get_contents("http://www.tela-botanica.org/eflore/coel/jrest/CoelCollection/*/$id/*");
$donnees = json_decode($json, true);
return $donnees['collections'];
}
/**
* Retourne les collection correspondant à un id strucutre précis.
*
* @param integer l'id d'une structure.
* @return array un tableau contenant les collections correspondant à l'id structure.
*/
public function getParIdStructure($id_structure) {
$url = $this->url_jrest.self::SERVICE_COLLECTION."/ParIdStructure/$id_structure";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
$this->nettoyerTableauDeTableauxAssoc($donnees);
return $donnees;
}
/**
* Retourne l'ensemble des personnes liées à une collection.
*
* @param integer l'id de la collection.
* @return array un tableau contenant les informations sur les personnes liées à la collection.
*/
public function getCollectionAPersonne($id_collection) {
$url = $this->url_jrest.self::SERVICE_COLLECTION_A_PERSONNE."/$id_collection";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
$this->nettoyerTableauDeTableauxAssoc($donnees['collectionsAPersonne']);
return $donnees['collectionsAPersonne'];
}
/**
* Retourne l'ensemble des publications liées à une collection.
*
* @param integer l'id de la collection.
* @return array un tableau contenant les informations sur les publications liées à la collection.
*/
public function getCollectionAPublication($id_collection) {
$url = $this->url_jrest.self::SERVICE_COLLECTION_A_PUBLICATION."/$id_collection";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
$this->nettoyerTableauDeTableauxAssoc($donnees['collectionsAPublication']);
return $donnees['collectionsAPublication'];
}
/**
* Retourne l'ensemble des commentaires publics liés à une collection.
*
* @param integer l'id de la collection.
* @return array un tableau contenant les informations sur les publications liées à la collection.
*/
public function getCollectionACommentaire($id_collection) {
$commentaire_public = '1';
$url = $this->url_jrest.self::SERVICE_COLLECTION_A_COMMENTAIRE."/$id_collection/$commentaire_public";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
$this->nettoyerTableauDeTableauxAssoc($donnees['collectionsACommentaire']);
return $donnees['collectionsACommentaire'];
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/tags/v1.3-costiere/modeles/Ontologie.php
New file
0,0 → 1,134
<?php
// declare(encoding='UTF-8');
/**
* Classe contenant les données de l'ontologie des Collections en Ligne.
* Elle contient un cache de l'ontologie.
* C'est un Singleton.
*
* @package Collection
* @category php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class Ontologie {
public static $ontologie_liste = array();
public static $ontologie_valeur = array();
 
public static function chargerListe($id_liste) {
$retour = false;
if (!isset(self::$ontologie_liste[$id_liste])) {
$metadonnees = new MetadonneeDao();
$donnees = $metadonnees->getOntologie($id_liste);
$traitementValeursOk = self::traiterValeurs($donnees['valeurs']);
if ($traitementValeursOk) {
self::$ontologie_liste[$id_liste] = $donnees['valeurs'];
$retour = true;
}
} else {
$retour = true;
}
return $retour;
}
public static function getListe($id_liste) {
$retour = false;
$chargementOk = self::chargerListe($id_liste);
if ($chargementOk) {
$retour = self::$ontologie_liste[$id_liste];
}
return $retour;
}
public static function getListeFormatee($id_liste) {
$retour = false;
$liste = self::getListe($id_liste);
if ($liste !== false) {
foreach ($liste as $cle => $valeur) {
$liste[$cle] = self::formaterTableauValeur($valeur);
}
$retour = $liste;
}
return $retour;
}
 
public static function getListeTrieeParAbreviation($id_liste) {
$retour = false;
$liste = self::getListe($id_liste);
if ($liste !== false) {
$liste_par_abr = array();
foreach ($liste as $cle => $valeur) {
$valeur_fromatee = self::formaterTableauValeur($valeur);
$abreviation = $valeur_fromatee['abreviation'];
$liste_par_abr[$abreviation] = $valeur_fromatee;
}
$retour = $liste_par_abr;
}
return $retour;
}
public static function chargerValeur($id_valeur) {
$retour = true;
if (empty($id_valeur)) {
$retour = false;
} else if (!isset(self::$ontologie_valeur[$id_valeur])) {
$metadonnees = new MetadonneeDao();
$donnees = $metadonnees->getOntologieValeur($id_valeur);
$retour = self::traiterValeurs($donnees['valeurs']);
}
return $retour;
}
public static function getValeur($id_valeur) {
$retour = false;
$chargementOk = self::chargerValeur($id_valeur);
if ($chargementOk) {
$retour = self::$ontologie_valeur[$id_valeur];
}
return $retour;
}
public static function getValeurNom($id_valeur) {
$retour = false;
$valeur = self::getValeur($id_valeur);
if ($valeur !== false) {
$retour = $valeur['nom'];
}
return $retour;
}
private static function traiterValeurs($valeurs) {
$retour = true;
if (is_null($valeurs)) {
$retour = false;
} else {
if (count($valeurs) == 0) {
$retour = false;
} else {
foreach ($valeurs as $valeur) {
self::$ontologie_valeur[$valeur['cmlv_id_valeur']] = self::formaterTableauValeur($valeur);
}
}
}
return $retour;
}
private static function formaterTableauValeur($valeur) {
$valeur_formatee = array();
if (is_array($valeur) && count($valeur) > 0) {
$valeur_formatee = array(
'id' => $valeur['cmlv_id_valeur'],
'parent' => $valeur['cmlv_ce_parent'],
'projet' => $valeur['cmlv_ce_projet'],
'nom' => $valeur['cmlv_nom'],
'abreviation' => $valeur['cmlv_abreviation'],
'description' => $valeur['cmlv_description'],
'meta' => $valeur['cmlv_ce_meta']);
}
return $valeur_formatee;
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/tags/v1.3-costiere/modeles/ColModele.php
New file
0,0 → 1,72
<?php
// declare(encoding='UTF-8');
/**
* Classe modèle spécifique à l'application Collection, donc d'accés au données, elle ne devrait pas être appelée de l'extérieur.
* Elle est abstraite donc doit obligatoirement être étendue.
*
* @category php5
* @package Collection
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*/
abstract class ColModele extends Modele {
protected $distinction = '0';
protected $limite_debut = null;
protected $limite_nbre = null;
protected $url_jrest = null;
public function __construct() {
parent::__construct();
$this->url_jrest = config::get('url_jrest');
}
public function avoirLimitation() {
$limitation = false;
if (!is_null($this->limite_debut) && !is_null($this->limite_nbre)) {
$limitation = true;
}
return $limitation;
}
public function setDistinction($distinct) {
$this->distinction = $distinct;
}
public function getDistinction() {
return $this->distinction;
}
public function setLimitation($limite_debut, $limite_nbre) {
$this->limite_debut = $limite_debut;
$this->limite_nbre = $limite_nbre;
}
public function getLimiteDebut() {
return $this->limite_debut;
}
public function getLimiteNbre() {
return $this->limite_nbre;
}
protected function nettoyerTableauDeTableauxAssoc(&$tableau) {
if (is_array($tableau) && count($tableau) > 0) {
foreach ($tableau as $cle => $valeur) {
$this->nettoyerTableauAssoc($valeur);
$tableau[$cle] = $valeur;
}
}
}
protected function nettoyerTableauAssoc(&$tableau) {
if (is_array($tableau) && count($tableau) > 0) {
foreach ($tableau as $cle => $valeur) {
if (is_numeric($cle) && is_int((integer) $cle)) {
unset($tableau[$cle]);
}
}
}
}
}
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/tags/v1.3-costiere/modeles/MetadonneeDao.php
New file
0,0 → 1,47
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des Collections pour le module Métadonnées.
*
* @package Collection
* @category php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class MetadonneeDao extends ColModele {
const SERVICE_ONTOLOGIE = 'CoelValeurListe';
/**
* Retourne l'ensemble des information d'une liste de valeurs.
*
* @param integer l'id de la liste.
* @return array un tableau contenant les valeurs de la liste.
*/
public function getOntologie($id) {
$url = $this->url_jrest.self::SERVICE_ONTOLOGIE."/id/$id?limit=500";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
return $donnees;
}
/**
* Retourne l'ensemble des information d'une liste de valeurs.
*
* @param integer l'id d'une valeur ou un ensemble d'id de valeurs séparés par des virgules.
* @return array un tableau contenant les valeurs.
*/
public function getOntologieValeur($id_valeurs) {
$donnees = array();
if (!empty($id_valeurs)) {
$url = $this->url_jrest.self::SERVICE_ONTOLOGIE."/idv/$id_valeurs";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
}
return $donnees;
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/tags/v1.3-costiere/modeles/StructureDao.php
New file
0,0 → 1,67
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des Collections pour le module Structure.
*
* @package Collection
* @category php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*
*/
class StructureDao extends ColModele {
const ROLE_EQUIPE = 2027;
const SERVICE_STRUCTURE = 'CoelStructure';
const SERVICE_STRUCTURE_A_PERSONNE = 'CoelStructureAPersonne';
/**
* Retourne l'ensemble des information sur une structure.
*
* @param integer l'id de la structure.
* @return array un tableau contenant les informations sur la structure.
*/
public function getStructure($id) {
$url = $this->url_jrest.self::SERVICE_STRUCTURE."/*/$id/*";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
return $donnees['structures'];
}
/**
* Retourne le nombre de structure par zone géographique.
*
* @param integer le type de recherche à effectuée.
* @return array un tableau contenant les informations sur le nombre de structures par zone.
*/
public function getStructureParZoneGeo($type_recherche) {
$url = $this->url_jrest.self::SERVICE_STRUCTURE."/ParZoneGeo/$type_recherche";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
return $donnees;
}
/**
* Retourne l'ensemble des informations du personnel d'une structure.
*
* @param integer l'id de la structure.
* @return array un tableau contenant les informations sur le personnel de la structure.
*/
public function getPersonnel($id) {
$url = $this->url_jrest.self::SERVICE_STRUCTURE_A_PERSONNE."/$id";
$json = file_get_contents($url);
$donnees = json_decode($json, true);
$personnes = $donnees['structuresAPersonne'];
$personnel = array();
foreach ($personnes as $personne) {
if ($personne['csap_id_role'] == self::ROLE_EQUIPE) {
$personnel[] = $personne;
}
}
return $personnel;
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property