Subversion Repositories Applications.referentiel

Rev

Blame | Last modification | View Log | RSS feed

<?php
// Encodage : UTF-8
// +-------------------------------------------------------------------------------------------------------------------+
/**
* Script
*
* Description : Fabrique permettant de charger les scripts
* 
//Auteur original :
* @author       Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright    Tela-Botanica 1999-2008
* @licence              GPL v3 & CeCILL v2
* @version              $Id$
*/
// +-------------------------------------------------------------------------------------------------------------------+

class Script {
        /** Niveau de message de type LOG */
        const LOG = 0;
        /** Niveau de message de type ERREUR */
        const ERREUR = 1;
        /** Niveau de message de type AVERTISSEMENT */
        const AVERTISSEMENT = 2;
        /** Niveau de message de type INFORMATION */
        const INFO = 3;
        
        public static function getCode($niveau) {
                $txt_niveaux = array('LOG', 'ERREUR','AVERTISSEMENT', 'INFO');
                return $txt_niveaux[$niveau];
        }
        
        public static function charger($commande_nom) {
                $classe_nom = implode('', array_map('ucfirst', explode('_', strtolower($commande_nom))));
                $fichier_script = ES_CHEMIN_MODULE.$commande_nom.DS.$classe_nom.'.php';
                if (!file_exists($fichier_script)){
                        trigger_error("Erreur : script '$fichier_script' inconnu!\n", E_USER_ERROR);
                }
                require_once $fichier_script;
                if (!class_exists( $classe_nom)) {
                        trigger_error("Erreur: impossible de trouver la classe de la commande : $classe_nom\n", E_USER_ERROR);
                }
                $Script = new $classe_nom($commande_nom);
                return $Script;
        }
        
        public static function getParametres($argv) {
                $parametres = array();
                // Récupération des options
                while(count($argv)) {
                        if (isset($argv[1]) && $argv[1]{0} != '-') {
                                $param = array_shift($argv);
                                $parametres[$param] = array_shift($argv);
                        } elseif (!isset($argv[1]) || $argv[1]{0} == '-') {
                                $parametres[array_shift($argv)] = null;
                        } else {
                                trigger_error("Erreur: valeur manquante pour le paramêtre '".$argv[0]."' \n", E_USER_ERROR);
                        }
                }
                return $parametres;
        }
        
        public static function setAutoloadChemin($chemin) {
                if (is_array($chemin)) {
                        $GLOBALS['chemins_autoload'] = array_unique(array_merge($GLOBALS['chemins_autoload'], $chemin));
                } else {
                        $GLOBALS['chemins_autoload'][] = $chemin;
                }
        }
        
}
?>