Subversion Repositories Applications.papyrus

Rev

Rev 2014 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2014 Rev 2150
Line 1... Line 1...
1
<?php
1
<?php
2
/**
2
/**
3
 * Classe controlleur, coeur d'une application, c'est normalement la seule classe d'une application
3
 * Classe controlleur, coeur d'une application, c'est normalement la seule classe d'une application
4
 * qui devrait être appelée de l'extérieur.
4
 * qui devrait être appelée de l'extérieur.
5
 */
5
 */
6
abstract class Controleur {
6
abstract class Controleur {
7
 
7
 
8
	private $registre;
8
	private $registre;
9
	private $gestionnaire_erreur;
9
	private $gestionnaire_erreur;
10
	
10
	
11
	/**
11
	/**
12
	 * Constructeur par défaut
12
	 * Constructeur par défaut
13
	 */
13
	 */
14
     final public function __construct() {	
14
     final public function __construct() {	
15
    	
15
    	
16
    	$this->registre = Registre::getInstance() ;
16
    	$this->registre = Registre::getInstance() ;
17
    	$this->registre->set('chemin_config',CHEMIN_APPLI.'configuration'.DIRECTORY_SEPARATOR);
17
    	$this->registre->set('chemin_config',CHEMIN_APPLI.'configuration'.DIRECTORY_SEPARATOR);
18
    	$this->registre->set('base_chemin_modele',DOSSIER_MODELES.DIRECTORY_SEPARATOR);
18
    	$this->registre->set('base_chemin_modele',DOSSIER_MODELES.DIRECTORY_SEPARATOR);
19
    	$this->registre->set('base_chemin_squelette',DOSSIER_SQUELETTES.DIRECTORY_SEPARATOR);
19
    	$this->registre->set('base_chemin_squelette',DOSSIER_SQUELETTES.DIRECTORY_SEPARATOR);
20
    	$this->registre->set('base_chemin_controleur',DOSSIER_CONTROLEURS.DIRECTORY_SEPARATOR);
20
    	$this->registre->set('base_chemin_controleur',DOSSIER_CONTROLEURS.DIRECTORY_SEPARATOR);
21
    	
21
    	
22
    	$this->registre->set('bdd_type',BDD_PROTOCOLE) ;
22
    	$this->registre->set('bdd_type',BDD_PROTOCOLE) ;
23
    	$this->registre->set('bdd_hote',BDD_SERVEUR) ;
23
    	$this->registre->set('bdd_hote',BDD_SERVEUR) ;
24
    	$this->registre->set('bdd_nom',BDD_NOM_PRINCIPALE) ;
24
    	$this->registre->set('bdd_nom',BDD_NOM_PRINCIPALE) ;
25
    	$this->registre->set('bdd_utilisateur',BDD_UTILISATEUR) ;
25
    	$this->registre->set('bdd_utilisateur',BDD_UTILISATEUR) ;
26
    	$this->registre->set('bdd_pass',BDD_MOT_DE_PASSE) ;
26
    	$this->registre->set('bdd_pass',BDD_MOT_DE_PASSE) ;
27
    	
27
    	
28
    	$this->gestionnaire_erreur = GestionnaireErreur::getInstance();
28
    	$this->gestionnaire_erreur = GestionnaireErreur::getInstance();
29
    	
29
    	
30
    }
30
    }
31
    
31
    
32
    /**
32
    /**
33
     * Charge un modele donné et le rend disponible sous la forme $this->nom_modele
33
     * Charge un modele donné et le rend disponible sous la forme $this->nom_modele
34
     * @param $nom_modele le nom du modèle à charger
34
     * @param $nom_modele le nom du modèle à charger
35
     */
35
     */
36
     final protected function chargerModele($nom_modele) {
36
     final protected function chargerModele($nom_modele) {
37
    	
37
    	
38
 
38
 
39
    	$chemin_modele = ($this->registre->get('base_chemin_modele')).$nom_modele.'.php';
39
    	$chemin_modele = ($this->registre->get('base_chemin_modele')).$nom_modele.'.php';
40
    	
40
    	
41
    	if(!file_exists($chemin_modele)) {
41
    	if(!file_exists($chemin_modele)) {
42
    		return false ;	
42
    		return false ;	
43
    	}
43
    	}
44
    	
44
    	
45
    	include_once($chemin_modele) ;
45
    	include_once($chemin_modele) ;
46
    	
46
    	
47
    	if(!class_exists($nom_modele)) {    		
47
    	if(!class_exists($nom_modele)) {    		
48
    		return false ;
48
    		return false ;
49
    	}
49
    	}
50
    	
50
    	
51
    	$this->$nom_modele = new $nom_modele ;    	
51
    	$this->$nom_modele = new $nom_modele ;    	
52
    }
52
    }
53
    
53
    
54
    /**
54
    /**
55
     * Fonction prenant en paramètre le nom d'un squelette et un tableau associatif de données, en extrait les variables, charge le squelette
55
     * Fonction prenant en paramètre le nom d'un squelette et un tableau associatif de données, en extrait les variables, charge le squelette
56
     * et cree une variable de classe contenant les deux combinés.
56
     * et cree une variable de classe contenant les deux combinés.
57
     * @param String le nom du squelette
57
     * @param String le nom du squelette
58
     * @param Array un tableau associatif contenant les variables a injecter dans la vue
58
     * @param Array un tableau associatif contenant les variables a injecter dans la vue
59
     * 
59
     * 
60
     */
60
     */
61
     final protected function chargerVue($nom_squelette,$donnees) {
61
     final protected function chargerVue($nom_squelette,$donnees) {
62
    	
62
    	
63
    	$chemin_squelette = ($this->registre->get('base_chemin_squelette')).$nom_squelette.'.tpl.html';
63
    	$chemin_squelette = ($this->registre->get('base_chemin_squelette')).$nom_squelette.'.tpl.html';
64
    	
64
    	
65
    	if(!file_exists($chemin_squelette)) {
65
    	if(!file_exists($chemin_squelette)) {
66
    		return false ;	
66
    		return false ;	
67
    	}
67
    	}
68
    	
68
    	
69
    	$donnees['base_url'] = $this->registre->get('base_url_application') ;
69
    	$donnees['base_url'] = $this->registre->get('base_url_application') ;
70
    	
70
    	
71
    	// on extrait les variables du tableau de données   	
71
    	// on extrait les variables du tableau de données   	
72
    	extract($donnees);
72
    	extract($donnees);
73
    	
73
    	
74
    	// et on enclenche la bufferisation de sortie
74
    	// et on enclenche la bufferisation de sortie
75
    	ob_start();
75
    	ob_start();
76
    	
76
    	
77
    	// si les tags courts sont désactivés
77
    	// si les tags courts sont désactivés
78
    	if ((bool) @ini_get('short_open_tag') === FALSE)
78
    	if ((bool) @ini_get('short_open_tag') === FALSE)
79
		{
79
		{
80
			// on remplace les tags par la syntaxe classique avec echo
80
			// on remplace les tags par la syntaxe classique avec echo
81
			echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents($chemin_squelette))));
81
			echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents($chemin_squelette))));
82
		} else {
82
		} else {
83
			// sinon, on se contente d'inclure le squelette
83
			// sinon, on se contente d'inclure le squelette
84
			include($chemin_squelette); 
84
			include($chemin_squelette); 
85
		}
85
		}
86
		
86
		
87
		// on récupère le buffer et on le vide	
87
		// on récupère le buffer et on le vide	
88
		$buffer = ob_get_contents();
88
		$buffer = ob_get_contents();
89
		@ob_end_clean();
89
		@ob_end_clean();
90
		
90
		
91
		// enfin on renvoie le contenu
91
		// enfin on renvoie le contenu
92
		$this->$nom_squelette = $buffer;
92
		$this->$nom_squelette = $buffer;
93
		
93
		
94
		return $nom_squelette;
94
		return $nom_squelette;
95
    }
95
    }
96
}
96
}
97
?>
97
?>
98
98