Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 838 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/**
 * @category    PHP 5.2
 * @package     Framework
 * @author          Raphaël Droz <raphael@tela-botanica.org>
 * @copyright   Copyright (c) 2013, Tela Botanica (accueil@tela-botanica.org)
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
 */

/*
 - bootstrap le framework
 - bootstrap une fiche
 - puis, pour un ou plusieurs onglet (automatique ou manuellement),
 obtient les données correspondante.

 L'objectif est de pouvoir générer un flux de données exhaustive pour une Fiche donnée
 tout en restant assez indépendant des (lourds) appels à l'API.
 Une finalité est de pouvoir s'orienter vers un cron pour index Sphinx, tout en
 permettant d'identifier les limites de l'API.
*/


define('_DIR_FRAMEWORK', '/home/raphael/TBF/trunk/framework');
define('_DIR_CONSULT', '/home/raphael/eflore/consultation');
define('_DIR_SERVICES', '/home/raphael/eflore/projets/services/modules/0.1');

//require_once __DIR__ . '/../../framework.php';
set_include_path(_DIR_FRAMEWORK . PATH_SEPARATOR .
                                 _DIR_CONSULT . '/controleurs' . PATH_SEPARATOR .
                                 _DIR_CONSULT . '/bibliotheque' . PATH_SEPARATOR .
                                 _DIR_CONSULT . '/modules/fiche' . PATH_SEPARATOR .
                                 _DIR_CONSULT . '/metier/api_0.1' . PATH_SEPARATOR .
                                 _DIR_SERVICES . '/commun' . PATH_SEPARATOR .
                                 _DIR_SERVICES . '/bdtfx' . PATH_SEPARATOR .
                                 _DIR_CONSULT . '/modules/fiche/formateurs' . PATH_SEPARATOR .
                                 get_include_path());
spl_autoload_extensions('.php');
spl_autoload_register();

/*require_once _DIR_FRAMEWORK . '/Controleur.php';
require_once _DIR_CONSULT . '/controleurs/AppControleur.php';
require_once _DIR_CONSULT . '/bibliotheque/AppUrls.php';
require_once _DIR_CONSULT . '/controleurs/aControleur.php';
require_once _DIR_CONSULT . '/bibliotheque/Conteneur.php';
require_once _DIR_CONSULT . '/modules/fiche/Fiche.php';*/


// require_once _DIR_CONSULT . '/modules/fiche/Fiche.php'
require_once('Framework.php');
Framework::setCheminAppli(__FILE__);
Framework::setInfoAppli(Config::get('info'));
// idéalement
// $a = new Fiche(new Conteneur(array()));


require_once('Config.php');
require_once('Controleur.php');
require_once('aControleur.php');
require_once('AppControleur.php');
require_once('AppUrls.php');
require_once('Conteneur.php');

AppControleur::initialiser();

require_once('Commun.php');
require_once('CommunNomsTaxons.php');
require_once('Eflore.php');
require_once('Taxons.php');
require_once('Noms.php');

require_once('NomCourant.php');
require_once('Nom.php');

Config::charger(_DIR_FRAMEWORK . '/config.ini');
Config::charger(_DIR_CONSULT . '/configurations/config.ini');


require_once('Fiche.php');
$a = new Fiche();
$_GET['num_nom'] = 141;
$_GET['referentiel'] = 'bdtfx';

$a->initialiser();

$classes = array(
        // 'illustrations',
        // 'repartition',
        // 'ecologie', // fait main (mais peu utile)

        // 'nomenclature', // TODO
        // 'description', // fait main
        // 'ethnobotanique', // fait main
        // 'bibliographie', // fait main
        // 'statut', // TODO
);

// pour nomenclature
require_once('MetaDonnees.php');
require_once('Wikini.php');

// pour description
require_once('Textes.php');
require_once('Informations.php');

// pour ethnobotanique
require_once('NomsVernaculaires.php');

// pour bibliographie
require_once('BiblioBota.php');

// pour statuts
require_once('Statuts.php');

// pour ecologie
require_once('Graphiques.php');
require_once('Syntaxons.php');

// pour repartition
require_once('Cartes.php'); // TODO

// way 1
foreach($classes as $c) {
        $a->onglet = $c;
        $b = $a->obtenirDonnees();
        var_dump($b);die();
}


// non-nécessaire si l'on peut récupérer le conteneur
// initialisé par new Fiche()
// $conteneur = new Conteneur($a->parametres);

// description
$onglet = new Description($a->conteneur);
$onglet->obtenirDonnees();
$onglet->getCoste();
echo implode('; ', $onglet->donnees['wikini']['description']);
echo implode('; ', $onglet->donnees['coste']['description']);

// bibliographie
Config::charger(_DIR_CONSULT . '/configurations/bdtfx.ini');
$onglet = new Bibliographie($a->conteneur);
$onglet->obtenirDonnees();
echo implode('; ', $onglet->donnees['flores']['liste_flores']);
echo implode('; ', $onglet->donnees['bibliobota']['references']);

// ethnobota
Config::charger(_DIR_CONSULT . '/configurations/bdtfx.ini');
$onglet = new Ethnobotanique($a->conteneur);
$onglet->obtenirDonnees();
echo implode('; ', array_map(function($v) { return $v['nom_vernaculaire']; }, $onglet->donnees['nvjfl']['noms'])) . '; ' .
        implode('; ', array_map(function($v) { return $v['nom_vernaculaire']; }, $onglet->donnees['nvps']['noms']));

// ecologie
Config::charger(_DIR_CONSULT . '/configurations/bdtfx.ini');
$onglet = new Ecologie($a->conteneur);
// $onglet->obtenirDonnees(); // slow !
// var_dump($onglet->donnees['baseflor']['legende']);



/*
  API: TODO:
  - Chaque service de /consultation/formateur/ doit définir en en-tête:
  * référentiels supportés
  * fichiers/directives de configuration nécessaire
  * class utilisées (namespace "use")

  - obtenirDonnees() doit prendre ses paramètres [optionnels] par argument, sans compter
  sur l'instanciation et la définition d'attributs
  - obtenirDonnees() doit retourner les valeurs générées
  - obtenirDonnees() ne doit pas traiter le formattage des résultats (getBloc() oui)
  - si $this->données reste nécessaire pour une quelconque raison, celui-ci doit être public

  - pour Fiche.php
  - onglets ne doit plus être un attribut (pas même public)
  - executerFiche(), executerOnglet() et obtenirDonnees() doivent prendre un $onglet comme paramètre
  - $parametre et $conteneur doivent être "public"

 */