* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org) * @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 $Id$ */ abstract class DelScript extends Script { private $Bdd = null; private $projetNom = null; public function getProjetNom() { return $this->projetNom; } protected function initialiserProjet($projetNom) { $this->projetNom = $projetNom; } //+------------------------------------------------------------------------------------------------------+ // Méthodes d'url /** * Formate une url à partir d'un template contenant des paramètres à remplacer sous la forme {monParametre}. * Le tableau associatif de paramètres doit contenir en clé le paramêtre (monParametre) sans les accolades, * la valeur correspondante sera la valeur de remplacement. * Par défaut, les parametres suivant sont pris en compte par cette méthode : * - {projet} : le code du référentiel courrant ou définit dans le constructeur de l'objet métier. * * @param String $tpl le squelette d'url à formater. * @param Array $parametres le tableau de parametres (sans accolades pour les clés).*/ public function formaterUrl($tpl, Array $parametres) { foreach($parametres as $key=> $value) { $tpl = str_replace('{'.$key.'}',rawurlencode($value),$tpl); } return $tpl; } //+------------------------------------------------------------------------------------------------------+ // 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. */ public function getBdd() { if (! isset($this->Bdd)) { $this->Bdd = new Bdd(); } return $this->Bdd; } //+----------------------------------------------------------------------------------------------------------------+ // GESTION DES SQUELETTES PHP /** * Méthode prenant en paramètre un chemin de fichier squelette et un tableau associatif de données, * en extrait les variables, charge le squelette et retourne le résultat des deux combinés. * * @param String $fichier le chemin du fichier du squelette * @param Array $donnees un tableau associatif contenant les variables a injecter dans le squelette. * * @return boolean false si le squelette n'existe pas, sinon la chaine résultat. */ public function traiterSquelettePhp($fichier, Array $donnees = array()) { $sortie = false; if (file_exists($fichier)) { // Extraction des variables du tableau de données extract($donnees); // Démarage de la bufferisation de sortie ob_start(); // Si les tags courts sont activés if ((bool) @ini_get('short_open_tag') === true) { // Simple inclusion du squelette include $fichier; } else { // Sinon, remplacement des tags courts par la syntaxe classique avec echo $html_et_code_php = self::traiterTagsCourts($fichier); // Pour évaluer du php mélangé dans du html il est nécessaire de fermer la balise php ouverte par eval $html_et_code_php = '?>'.$html_et_code_php; // Interprétation du html et du php dans le buffer echo eval($html_et_code_php); } // Récupèration du contenu du buffer $sortie = ob_get_contents(); // Suppression du buffer @ob_end_clean(); } else { $msg = "Le fichier du squelette '$fichier' n'existe pas."; trigger_error($msg, E_USER_WARNING); } // Retourne le contenu return $sortie; } /** * Fonction chargeant le contenu du squelette et remplaçant les tags court php (/", "; ?>", $contenu); return $contenu; } } ?>