Subversion Repositories eFlore/Applications.cel

Rev

Rev 1224 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
774 aurelien 1
<?php
2
/**
1198 jpm 3
* Script principal d'appel aux script de jrest par ligne de commande.
4
* Pour le moment ne supporte pas correctement les méthodes ayant des paramètres.
774 aurelien 5
*/
6
 
7
/**
8
* La fonction __autoload() charge dynamiquement les classes trouvées dans le code.
9
*
10
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
11
*
12
*@param string le nom de la classe appelée.
13
*@return void le fichier contenant la classe doit être inclu par la fonction.
14
*/
1198 jpm 15
function __autoload($classe) {
774 aurelien 16
	if (class_exists($classe)) {
17
		return null;
18
	}
1198 jpm 19
 
20
	$chemins = array('', 'scripts/', 'lib/');
774 aurelien 21
	foreach ($chemins as $chemin) {
22
		$chemin = $chemin.$classe.'.php';
23
		if (file_exists($chemin)) {
24
			require_once $chemin;
25
		}
26
	}
27
}
28
 
1224 jpm 29
/**
30
 * Configure PHP en fonction des paramètres du fichier de config.
31
 * @param array $config le tableau de paramètres extraits du fichier ini.
32
 */
33
function parametrer($config) {
34
	// Réglages de PHP
35
	setlocale(LC_ALL, $config['settings']['locale']);
36
	date_default_timezone_set($config['settings']['fuseauHoraire']);
37
}
38
 
1198 jpm 39
try {
40
	if (php_sapi_name() == 'cli') {
41
			if ($_SERVER['argc'] < 2){
42
			   $message = "Erreur: vous n'avez pas indiqué le nom du script à appeler.";
1204 jpm 43
			   throw new Exception($message, E_USER_ERROR);
1198 jpm 44
			}
45
 
1224 jpm 46
			// suppression du premier paramètre qui est le nom de ce fichier
1198 jpm 47
			array_shift($argv);
48
 
1224 jpm 49
			if ($_SERVER['argc'] == 0){
50
			   $message = "Erreur: vous n'avez pas indiqué le nom du script à lancer";
1204 jpm 51
			   throw new Exception($message, E_USER_ERROR);
1198 jpm 52
			}
53
 
1224 jpm 54
			// récupération du nom du script à lancer
55
			$nomScript = array_shift($argv);
1198 jpm 56
 
57
			$params = $argv;
58
			$_SERVER['SERVER_NAME'] = 'localhost';
59
 
60
			$config =  parse_ini_file('jrest.ini.php', TRUE);
1204 jpm 61
			parametrer($config);
1198 jpm 62
 
1224 jpm 63
			$conteneur = new Conteneur($config);
64
 
65
			$script = new $nomScript($conteneur);
66
			if (!is_callable(array($script, 'executer'))) {
67
				$message = "Erreur: la méthode 'executer' du script '$nomScript' n'existe pas ou n'est pas accessible";
1204 jpm 68
				throw new Exception($message, E_USER_ERROR);
1198 jpm 69
			}
1224 jpm 70
			$script->executer($params);
1198 jpm 71
	} else {
72
		$message = "Erreur: ce fichier est destiné a être appelé en ligne de commande.";
1204 jpm 73
		throw new Exception($message, E_USER_ERROR);
1198 jpm 74
	}
75
} catch (Exception $e) {
1224 jpm 76
	$tps = date('Y-m-j H:i:s');
1204 jpm 77
	$message = $e->getMessage();
78
	$code = $e->getCode();
1224 jpm 79
	echo "$tps - $code : $message\n";
774 aurelien 80
}
1224 jpm 81
exit(0);
774 aurelien 82
?>