Subversion Repositories Applications.referentiel

Rev

Rev 26 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// Encodage : UTF-8
// +-------------------------------------------------------------------------------------------------------------------+
/**
* script
*
* Description : initialise le chargement et l'exécution des scripts
* Fichier d'origine jelix-scripts par Jouanneau Laurent
* copyright   2005-2007 Jouanneau laurent
* link        http://www.jelix.org
* 
//Auteur original :
* @author       Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright    Tela-Botanica 1999-2008
* @licence              GPL v3 & CeCILL v2
* @version              $Id$
*/
// +-------------------------------------------------------------------------------------------------------------------+
// Récupération de la config générale
require dirname(__FILE__).DIRECTORY_SEPARATOR.'scripts.conf.php';

// Gestion de l'auto chargement des classes
function __autoload($classe)
{
        // Gestion des fichiers pésent dans le path
        $fichier = $classe.'.php';
        if (file_exists($fichier)) {
                require_once $fichier;
        } 

        // Gestion des classes PEAR
        $fichier = ES_CHEMIN_PEAR;
        if (!substr_count($classe, '_') > 0) {
                $fichier .= $classe;            
        } else {

                $tab_chemin = explode('_', $classe);
                foreach ($tab_chemin as $c => $v) {
                        $fichier .= ($c == 0) ? $v.DS : $v;
                }
        }
        $fichier .= '.php';
        if (file_exists($fichier)) {
                require_once $fichier;
        }       
        
        // Gestion des classes principales des modules
        $module = strtolower(str_replace(' ', '_', preg_replace('/([a-z])([A-Z])/', '$1 $2', $classe)));
        $fichier = ES_CHEMIN_MODULE.$module.DS.$classe.'.php';
        if (file_exists($fichier)) {
                require_once $fichier;
        }
        
        // Gestion des bibliothèques des scripts
        foreach ($GLOBALS['chemins_autoload'] as $chemin) {
                $fichier = $chemin.$classe.'.php';
                
                if (file_exists($fichier)) {
                        require_once $fichier;
                        break;
                }
        }
}

// Le fichier autoload.inc.php du Framework de Tela Botanica doit être appelée avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
// Chemin du fichier chargeant le framework requis
$framework = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'interfaces'.DIRECTORY_SEPARATOR.'framework.php';
if (!file_exists($framework)) {
        $e = "Veuillez paramêtrer l'emplacement et la version du Framework dans le fichier $framework";
        trigger_error($e, E_USER_ERROR);
} else {
        // Inclusion du Framework
        require_once $framework;
        // Ajout d'information concernant cette application
        Application::setChemin(__FILE__);// Obligatoire
        Application::setInfo(Config::get('info'));

        /**
         * récupération du nom de la commande et éventuellement du nom de l'application
         */
        if ($_SERVER['argc'] < 2){
           die("Erreur: pas de commande. Voir '".$_SERVER['argv'][0]." help'.\n");
        }
        
        $argv = $_SERVER['argv'];
        $script_nom = array_shift($argv); // shift le nom du script
        $commande_nom = array_shift($argv); // prend le nom de la commande
        
        // Chargement de la commande
        $Script = Script::charger($commande_nom);
        $parametres = Script::getParametres($argv);
        
        // Lancement de la commande
        $Script->initialiser($parametres);
        $Script->executer();
        
        // Affichage des execptions et erreurs générées par le script
        echo GestionnaireException::getExceptions();
}
?>