Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 17 → Rev 18

/trunk/bibliotheque/noyau/ColControleur.php
278,4 → 278,21
return $chaineARetourner;
}
protected function obtenirUrlFicheStructure($id_structure) {
$this->url->setVariableRequete('module', 'Fiche');
$this->url->setVariableRequete('action', 'afficherStructure');
$this->url->setVariableRequete('id', $id_structure);
$url = $this->url->getURL();
$this->url->unsetVariablesRequete(array('module', 'action', 'id'));
return $url;
}
protected function obtenirUrlFicheColletion($id_collection) {
$this->url->setVariableRequete('module', 'Fiche');
$this->url->setVariableRequete('action', 'afficherCollection');
$this->url->setVariableRequete('id', $id_collection);
$url = $this->url->getURL();
$this->url->unsetVariablesRequete(array('module', 'action', 'id'));
return $url;
}
}
/trunk/bibliotheque/noyau/ColModele.php
37,16 → 37,20
}
protected function nettoyerTableauDeTableauxAssoc(&$tableau) {
foreach ($tableau as $cle => $valeur) {
$this->nettoyerTableauAssoc($valeur);
$tableau[$cle] = $valeur;
if (is_array($tableau) && count($tableau) > 0) {
foreach ($tableau as $cle => $valeur) {
$this->nettoyerTableauAssoc($valeur);
$tableau[$cle] = $valeur;
}
}
}
protected function nettoyerTableauAssoc(&$tableau) {
foreach ($tableau as $cle => $valeur) {
if (is_numeric($cle) && is_int((integer) $cle)) {
unset($tableau[$cle]);
if (is_array($tableau) && count($tableau) > 0) {
foreach ($tableau as $cle => $valeur) {
if (is_numeric($cle) && is_int((integer) $cle)) {
unset($tableau[$cle]);
}
}
}
}
/trunk/squelettes/fiche_collection.tpl.html
1,6 → 1,6
<h1><?=$info['cc_nom']?> <span class="discretion">(id:<?=$id?>)</span></h1>
<dl>
<dt>Structure</dt> <dd><?=$info['_structure_nom_']?></dd>
<dt>Structure</dt> <dd><a href="<?=$info['_structure_url_']?>"><?=$info['_structure_nom_']?></a></dd>
<dt>Ville</dt> <dd><?=$info['_structure_ville_']?></dd>
</dl>
 
84,6 → 84,7
<?php else : ?>
<p>Aucune</p>
<?php endif; ?>
 
<h2>Publications</h2>
<h3>Publication(s) de la collection</h3>
<?php if (count($publications) > 0) : ?>
118,7 → 119,185
<?php else : ?>
<p>Aucune</p>
<?php endif; ?>
 
<h2>Description</h2>
<h3>Description et état de la collection</h3>
<dl>
<dt>Type d'herbier</dt> <dd><?=$info['_type_']?></dd>
<dt>Nombre de cartons ou liasses échantillonnés</dt> <dd><?=$info['ccb_nbre_echantillon']?></dd>
</dl>
 
<h3>Types d'unité de rangement de la collection botanique</h3>
<dl>
<dt>État général</dt> <dd><?=$info['_unite_rangement_etat_']?></dd>
</dl>
<?php if (count($info['_rangements_']) > 0) : ?>
<table>
<thead>
<tr>
<th>Type</th>
<th>Nombre</th>
<th>Précision</th>
<th>Format</th>
</tr>
</thead>
<tbody>
<?php foreach ($info['_rangements_'] as $rangement) : ?>
<tr>
<td><?=$rangement['type']?></td>
<td><?=$rangement['nbre']?></td>
<td><?=$rangement['precision']?></td>
<td><?=$rangement['format']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else : ?>
<p>Aucune unité de rangement n'a été renseignée.</p>
<?php endif; ?>
 
<h3>Types d'unité de base de la collection si différent de l'untité de rangement</h3>
<?php if (count($info['_unites_base_']) > 0) : ?>
<table>
<thead>
<tr>
<th colspan="4">Unité de base</th>
<th colspan="2">Parts</th>
<th colspan="2">Espèces</th>
</tr>
<tr>
<th>Type</th>
<th>Nombre</th>
<th>Précision</th>
<th>Format</th>
<th>Nombre</th>
<th>Précision</th>
<th>Nombre</th>
<th>Précision</th>
</tr>
</thead>
<tbody>
<?php foreach ($info['_unites_base_'] as $unite_base) : ?>
<tr>
<td><?=$unite_base['type']?></td>
<td><?=$unite_base['nbre']?></td>
<td><?=$unite_base['precision']?></td>
<td><?=$unite_base['format']?></td>
<td><?=$unite_base['part_nbre']?></td>
<td><?=$unite_base['part_precision']?></td>
<td><?=$unite_base['sp_nbre']?></td>
<td><?=$unite_base['sp_precision']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else : ?>
<p>Aucune unité de base n'a été renseignée.</p>
<?php endif; ?>
 
<h3>Conservation</h3>
<dl>
<dt>Type de papier</dt> <dd><?=$info['']?></dd>
<dt>Méthode</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>Étiquettes</h3>
<dl>
<dt>% de spécimen fixés</dt> <dd><?=$info['']?></dd>
<dt>% d'étiquettes fixées</dt> <dd><?=$info['']?></dd>
<dt>Méthode de fixation du spécimen</dt> <dd><?=$info['']?></dd>
<dt>Méthode de fixation des étiquettes au support</dt> <dd><?=$info['']?></dd>
<dt>Méthode de fixation des étiquettes au spécimen</dt> <dd><?=$info['']?></dd>
<dt>Type d'écriture des étiquettes</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>Traitements</h3>
<dl>
<dt>Traitement</dt> <dd><?=$info['']?></dd>
<dt>Empoisonnement</dt> <dd><?=$info['']?></dd>
<dt>Pesticide</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>État général et dégradation</h3>
<dl>
<dt>État général</dt> <dd><?=$info['']?></dd>
<dt>Causes de dégradation des spécimens</dt> <dd><?=$info['']?></dd>
<dt>Causes de dégradation de la présentation</dt> <dd><?=$info['']?></dd>
<dt>Détermination des échantillons</dt> <dd><?=$info['']?></dd>
</dl>
 
<h2>Contenu</h2>
<h3>Nature</h3>
<dl>
<dt>Nature de la collection</dt> <dd><?=$info['']?></dd>
<dt>Collection spécialisée</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>Période de constitution</h3>
<dl>
<dt>Période de constitution</dt> <dd><?=$info['']?></dd>
<dt>Date de DÉBUT de récolte</dt> <dd><?=$info['']?></dd>
<dt>Date de FIN de récolte</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>Classement</h3>
<dl>
<dt>État du classement</dt> <dd><?=$info['']?></dd>
<dt>Principe de classement</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>Étiquette</h3>
<dl>
<dt>Renseignements</dt> <dd><?=$info['']?></dd>
<dt>Localités précises</dt> <dd><?=$info['']?></dd>
<dt>Dates précises</dt> <dd><?=$info['']?></dd>
<dt>Annotations</dt> <dd><?=$info['']?></dd>
</dl>
 
<h3>Collections intégrées</h3>
<dl>
<dt>Intégration de collection antérieures</dt> <dd><?=$info['']?></dd>
<dt>Nom de la collection sur les étiquettes</dt> <dd><?=$info['']?></dd>
</dl>
 
<h2>Inventaire</h2>
<h2>Notes</h2>
<h3>Inventaire (autre que celui de l'auteur)</h3>
<dl>
<dt>Existence inventaire</dt> <dd><?=$info['']?></dd>
<dt>Participation de l'auteur</dt> <dd><?=$info['']?></dd>
<dt>Forme de l'inventaire</dt> <dd><?=$info['']?></dd>
<dt>Informations disponibles</dt> <dd><?=$info['']?></dd>
<dt>Logiciel utilisé</dt> <dd><?=$info['']?></dd>
<dt>% en base de données</dt> <dd><?=$info['']?></dd>
<dt>État inventaire</dt> <dd><?=$info['']?></dd>
</dl>
 
<h2>Notes</h2>
<h3>Notes liées à la collection</h3>
<?php if (count($notes) > 0) : ?>
<table>
<thead>
<tr>
<th>Type</th>
<th>Titre</th>
<th>Importance</th>
<th>Accès</th>
</tr>
</thead>
<tbody>
<?php foreach ($notes as $note) : ?>
<tr>
<td><?=$note['']?></td>
<td><?=$note['']?></td>
<td><?=$note['']?></td>
<td><?=$note['']?></td>
</tr>
<tr>
<td colspan="4"><?=$note['']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else : ?>
<p>Aucune note n'a été ajoutée.</p>
<?php endif; ?>
/trunk/squelettes/fiche_structure.tpl.html
142,5 → 142,15
<dt>Type de recherche</dt> <dd><?=$info['_recherche_type_']?></dd>
<?php endif; ?>
</dl>
 
<h2>Collections</h2>
<h3>Collections liées à cette institution</h3>
<?php if (count($collections) > 0) : ?>
<ul>
<?php foreach ($collections as $collection) : ?>
<li><a href="<?=$collection['_url_']?>"><?=$collection['cc_nom']?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<hr />
<!-- FIN FICHE STRUCTURE -->
/trunk/controleurs/Fiche.php
13,6 → 13,15
*/
class Fiche extends ColControleur {
private $structureDao = null;
private $collectionDao = null;
public function __construct() {
parent::__construct();
$this->structureDao = $this->getModele('StructureDao');
$this->collectionDao = $this->getModele('CollectionDao');
}
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
33,14 → 42,16
} else {
$donnees['id'] = $_GET['id'];
$structureDao = $this->getModele('StructureDao');
$donnees['info'] = $structureDao->getStructure($donnees['id']);
$donnees['personnel'] = $structureDao->getPersonnel($donnees['id']);
$donnees['info'] = $this->structureDao->getStructure($donnees['id']);
$donnees['personnel'] = $this->structureDao->getPersonnel($donnees['id']);
$donnees['collections'] = $this->collectionDao->getParIdStructure($donnees['id']);
$this->traiterMetaDonnees($donnees['info']);
$this->traiterDonneesStructure($donnees['info']);
$this->traiterPersonnel($donnees['personnel']);
$this->traiterDonneesStructureConservation($donnees['info']);
$this->traiterDonneesStructureValorisation($donnees['info']);
$this->traiterDonneesStructureCollections($donnees['collections']);
//Debug::printr($donnees['collections']);
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_structure', $donnees));
}
}
145,6 → 156,12
$donnees['_visite_avec_motif_info_'] = $this->formaterParenthese($donnees['csv_visite_avec_motif']);
}
private function traiterDonneesStructureCollections(&$collections) {
foreach ($collections as &$collection) {
$collection['_url_'] = $this->obtenirUrlFicheColletion($collection['cc_id_collection']);
}
}
private function traiterPersonnel(&$donnees) {
// liste 09 : Liste des fonctions d'une personne au sein d'une structure
Ontologie::chargerListe(1012);
186,11 → 203,29
$this->traiterDonneesCollection($donnees['info']);
$this->traiterDonneesCollectionAPersonne($donnees['personnes']);
$this->traiterDonneesCollectionAPublication($donnees['publications']);
$this->traiterDonneesCollectionDescription($donnees['info']);
Debug::printr($donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_collection', $donnees));
}
}
private function traiterDonneesCollectionDescription(&$donnees) {
// liste 41 : Liste des types d'unité de rangement pour les collections botaniques
Ontologie::chargerListe(1044);
// liste 42 : Liste des états
Ontologie::chargerListe(1045);
// liste 43 : Liste des types de support pour les spécimens des collections botaniques
Ontologie::chargerListe(1046);
// liste 80 : Liste des types de collection botanique
Ontologie::chargerListe(1083);
 
$donnees['_type_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_truk_type']);
$donnees['_unite_rangement_etat_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_unite_rangement_etat']);
$donnees['_rangements_'] = $this->parserValeurUniteRangement($donnees['ccb_truk_unite_rangement']);
$donnees['_unites_base_'] = $this->parserValeurUniteBase($donnees['ccb_truk_unite_base']);
 
}
private function traiterDonneesCollectionAPublication(&$publications) {
foreach ($publications as &$publication) {
$publication['_editeur_'] = $this->construireTxtTruck($publication['cpu_ce_truk_editeur']);
228,6 → 263,7
// liste 79 : Liste exact/approximatif
Ontologie::chargerListe(1082);
$donnees['_structure_url_'] = $this->obtenirUrlFicheStructure($donnees['cc_ce_structure']);
$donnees['_nom_alternatif_'] = $this->construireTxtTruck($donnees['cc_truk_nom_alternatif']);
$donnees['_type_ncd_'] = $this->construireTxtListeOntologie($donnees['cc_ce_type']);
$donnees['_type_depot_'] = $this->construireTxtListeOntologie($donnees['cc_ce_type_depot']);
244,4 → 280,105
$donnees['_groupement_but_'] = $this->construireTxtListeOntologie($donnees['cc_truk_groupement_but']);
$donnees['_couverture_lieu_'] = $this->construireTxtTruck($donnees['cc_truk_couverture_lieu']);
}
private function parserValeurUniteBase($valeurTruk) {
$unitesEnregistrees = array();
if ($valeurTruk != '') {
$unites = explode(self::SEPARATEUR_VALEURS, $valeurTruk);
$unites_nbre = count($unites);
for ($i = 0; $i < $unites_nbre; $i++) {
$uniteTypeIdDonnees = explode(self::SEPARATEUR_TYPE_VALEUR, $unites[$i]);
$uniteChaineDonnees = $uniteTypeIdDonnees[1];
$uniteDonnees = explode(self::SEPARATEUR_DONNEES, $uniteChaineDonnees);
$uniteDonneesNbre = count($uniteDonnees);
$uniteBase = array();
if ($uniteDonneesNbre > 0) {
$uniteBase['nbre'] = $uniteDonnees[0];
}
if ($uniteBase['nbre'] > 0) {
if ($uniteDonneesNbre > 1) {
$uniteBase['precision'] = self::getPrecisionNom($uniteDonnees[1]);
}
if ($uniteDonneesNbre > 2) {
$uniteBase['format'] = $uniteDonnees[2];
}
if ($uniteDonneesNbre > 3) {
$uniteBase['part_nbre'] = $uniteDonnees[3];
}
if ($uniteDonneesNbre > 4) {
$uniteBase['part_precision'] = self::getPrecisionNom($uniteDonnees[4]);
}
if ($uniteDonneesNbre > 5) {
$uniteBase['sp_nbre'] = $uniteDonnees[5];
}
if ($uniteDonneesNbre > 6) {
$uniteBase['sp_precision'] = self::getPrecisionNom($uniteDonnees[6]);
}
if (preg_match('/^[0-9]+$/', $uniteTypeIdDonnees[0])) {
$uniteBase['id'] = $uniteTypeIdDonnees[0];
$uniteBase['type'] = Ontologie::getValeurNom($uniteTypeIdDonnees[0]);
} else {
$uniteBase['type'] = $uniteTypeIdDonnees[0];
}
$unitesEnregistrees[] = $uniteBase;
}
}
}
return $unitesEnregistrees;
}
private function parserValeurUniteRangement($valeurTruk) {
$unitesEnregistrees = array();
if ($valeurTruk != '') {
$unites = explode(self::SEPARATEUR_VALEURS, $valeurTruk);
$unites_nbre = count($unites);
for ($i = 0; $i < $unites_nbre; $i++) {
$uniteTypeIdDonnees = explode(self::SEPARATEUR_TYPE_VALEUR, $unites[$i]);
$uniteChaineDonnees = $uniteTypeIdDonnees[1];
$uniteDonnees = explode(self::SEPARATEUR_DONNEES, $uniteChaineDonnees);
$uniteDonneesNbre = count($uniteDonnees);
$uniteRangement = array();
if ($uniteDonneesNbre > 0) {
$uniteRangement['nbre'] = $uniteDonnees[0];
}
if ($uniteRangement['nbre'] > 0) {
if ($uniteDonneesNbre > 1) {
$uniteRangement['precision'] = self::getPrecisionNom($uniteDonnees[1]);
}
if ($uniteDonneesNbre > 2) {
$uniteRangement['format'] = $uniteDonnees[2];
}
if (preg_match('/^[0-9]+$/', $uniteTypeIdDonnees[0])) {
$uniteRangement['id'] = $uniteTypeIdDonnees[0];
$uniteRangement['type'] = Ontologie::getValeurNom($uniteTypeIdDonnees[0]);
} else {
$uniteRangement['type'] = $uniteTypeIdDonnees[0];
}
$unitesEnregistrees[] = $uniteRangement;
}
}
}
return $unitesEnregistrees;
}
private static function getPrecisionNom($precisionAbr) {
$precision_nom = '';
if ($precisionAbr != 'NULL') {
// liste 79 : Liste exact/approximatif
$precisions = Ontologie::getListeFormatee(1082);
foreach ($precisions as $precision) {
if ($precision['abreviation'] == $precisionAbr) {
$precision_nom = $precision['nom'];
break;
}
}
}
return $precision_nom;
}
}
/trunk/modeles/CollectionDao.php
27,6 → 27,19
}
/**
* 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) {
$json = file_get_contents("http://www.tela-botanica.org/eflore/coel/jrest/CoelCollection/ParIdStructure/$id_structure");
$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.
/trunk/modeles/Ontologie.php
28,6 → 28,8
self::$ontologie_liste[$id_liste] = $donnees['valeurs'];
$retour = true;
}
} else {
$retour = true;
}
return $retour;
}
41,6 → 43,18
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 chargerValeur($id_valeur) {
$retour = true;
if (!isset(self::$ontologie_valeur[$id_valeur])) {
78,18 → 92,25
$retour = false;
} else {
foreach ($valeurs as $valeur) {
self::$ontologie_valeur[$valeur['cmlv_id_valeur']] = array(
'parent' => $valeur['cmlv_id_valeur'],
'projet' => $valeur['cmlv_ce_projet'],
'nom' => $valeur['cmlv_nom'],
'abreviation' => $valeur['cmlv_abreviation'],
'description' => $valeur['cmlv_description'],
'meta' => $valeur['cmlv_ce_meta']
);
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(
'parent' => $valeur['cmlv_id_valeur'],
'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;
}
}
?>