Rev 1117 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** EfloreScript est une classe abstraite qui doit être implémenté par les classes éxecutant des scripts* en ligne de commande pour les projets d'eFlore.** @category PHP 5.2* @package Eflore/Scripts* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @copyright Copyright (c) 2011, 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* @since 0.3* @version $Id$* @link /doc/framework/*/abstract class EfloreScript extends Script {private $Bdd = null;private $projetNom = null;protected $conteneur; // mélange cracra, n'était pas utilisé jusqu'à présent (2014-09-29)public function __construct($script_nom, $parametres_cli) {parent::__construct($script_nom, $parametres_cli);$this->conteneur = new Conteneur();}public function getProjetNom() {return $this->projetNom;}protected function initialiserProjet($projetNom) {$this->projetNom = $projetNom;$this->chargerConfigDuProjet();}//+------------------------------------------------------------------------------------------------------+// Méthodes d'accès aux objets du Framework/*** Méthode de connection à la base de données sur demande.* Tous les scripts n'ont pas besoin de s'y connecter.*/protected function getBdd() {if (! isset($this->Bdd)) {$this->Bdd = new Bdd();}return $this->Bdd;}//+------------------------------------------------------------------------------------------------------+// Méthodes communes aux projets d'eFloreprotected function chargerConfigDuProjet() {$fichierIni = $this->getScriptChemin().$this->getProjetNom().'.ini';if (file_exists($fichierIni)) {Config::charger($fichierIni);} else {$m = "Veuillez configurer le projet en créant le fichier '{$this->projetNom}.ini' "."dans le dossier du module de script du projet à partir du fichier '{$this->projetNom}.defaut.ini'.";throw new Exception($m);}}protected function chargerStructureSql() {$contenuSql = $this->recupererContenu(Config::get('chemins.structureSql'));$this->executerScripSql($contenuSql);}protected function executerScripSql($sql) {$requetes = Outils::extraireRequetes($sql);foreach ($requetes as $requete) {$this->getBdd()->requeter($requete);}}protected function recupererContenu($chemin) {$contenu = file_get_contents($chemin);if ($contenu === false){throw new Exception("Impossible d'ouvrir le fichier SQL : $chemin");}return $contenu;}protected function stopperLaBoucle($limite = false) {$stop = false;if ($limite) {static $ligneActuelle = 1;if ($limite == $ligneActuelle++) {$stop = true;}}return $stop;}/*** Consulte une URL et retourne le résultat (ou déclenche une erreur), en* admettant qu'il soit au format JSON** @param string $url l'URL du service*/protected function chargerDonnees($url, $decoderJSON = true) {$resultat = $this->conteneur->getRestClient()->consulter($url);$entete = $this->conteneur->getRestClient()->getReponseEntetes();// Si le service meta-donnees fonctionne correctement, l'entete comprend la clé wrapper_dataif (isset($entete['wrapper_data'])) {if ($decoderJSON) {$resultat = json_decode($resultat, true);$this->entete = (isset($resultat['entete'])) ? $resultat['entete'] : null;}} else {$m = "L'url <a href=\"$url\">$url</a> lancée via RestClient renvoie une erreur";trigger_error($m, E_USER_WARNING);}return $resultat;}}?>