Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
2005 Aurelien 1
<?php
2011 Aurelien 2
/**
3
 *
4
 * Fichier contenant les fonctions d'initialisation de code igniter
5
 * permettant de l'utiliser en combinaison avec Papyrus.
6
 *
7
 */
2007 Aurélien 8
2011 Aurelien 9
/**
10
 * Initialise la configuration de code igniter pour une application
11
 * donnée. Normalement, cette fonction ne doit pas être appelée directement
12
 * @param string le nom de l'application à initialiser
13
 */
14
function initialiserCodeIgniter($nom_appli) {
15
2005 Aurelien 16
 	error_reporting(E_ALL);
17
18
	$system_folder = PAP_CHEMIN_RACINE.'papyrus/bibliotheque/system';
19
20
	$application_folder = GEN_CHEMIN_APPLICATION.$nom_appli;
21
22
	if (strpos($system_folder, '/') === FALSE) {
23
		if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE) {
24
			$system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
25
		}
26
	} else {
27
		// Swap directory separators to Unix style for consistency
28
		$system_folder = str_replace("\\", "/", $system_folder);
29
	}
30
31
	define('EXT', '.'.pathinfo(__FILE__, PATHINFO_EXTENSION));
32
	define('FCPATH', __FILE__);
33
	define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
34
	define('BASEPATH', $system_folder.'/');
35
36
	if (is_dir($application_folder)) {
37
		define('APPPATH', $application_folder.'/');
38
	} else {
39
		if ($application_folder == '') {
40
			$application_folder = 'application';
41
		}
42
		define('APPPATH', BASEPATH.$application_folder.'/');
43
	}
44
2011 Aurelien 45
	$GLOBALS[$nom_appli] = array('ci' => true) ;
46
 }
47
48
/**
49
 * Fonction intermédiaire entre Papyrus et code igniter,
50
 * appelant une application et une fonction donnée
51
 * @param string le nom de l'application à éxécuter
52
 * @param string le nom de la fonction à éxécuter (optionnel)
53
 * @return string le code html à afficher généré par l'application
54
 */
55
function executerCodeIgniter($nom_appli,$nom_fonction = '') {
2005 Aurelien 56
2011 Aurelien 57
	// si l'application n'a pas encore été initialisée
58
	if(!isset($GLOBALS[$nom_appli]['ci']) || $GLOBALS[$nom_appli]['ci'] != true) {
59
		// on appelle la fonction d'initialisation de code igniter
60
		initialiserCodeIgniter($nom_appli) ;
61
	}
62
63
 	// code igniter fonctionnant grâce à l'url, faute de mieux, on ajoute les bons
64
 	// paramètres au tableau superglobal GET
65
 	$_GET['c'] = $nom_appli ;
66
 	if($nom_fonction != '') {
67
 		$_GET['m'] = $nom_fonction ;
68
 	}
69
70
 	// N'ayant aucun moyen de récupérer directement le html généré par code igniter
71
 	// on le stockera dans une globale qui sera remplie par le controleur appelé.
72
 	$GLOBALS['retour'] = '' ;
73
74
 	// enfin on appelle le fichier principal de code igniter
75
 	// TODO: trouver comment faire pour l'appeller plusieurs fois dans une page
76
 	// sans que ça pose de problèmes
77
 	require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;
78
79
 	// on renvoie la variable globale remplie par le code
80
 	return $GLOBALS['retour'] ;
81
}
2005 Aurelien 82
83
?>