Subversion Repositories Applications.gtt

Rev

Rev 10 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10 Rev 11
Line 1... Line 1...
1
<?php
1
<?php
Line 2... Line 2...
2
 
2
 
3
abstract class aAction {
3
abstract class aControlleurAction {
4
	
-
 
5
	private static $resultat = null;
4
    
6
	private $suivant = null;
5
    private $suivant;
7
	
6
    
8
	public function getResultat()
7
	public function getRegistre()
9
	{
-
 
10
		if (aAction::$resultat == null) {
-
 
11
			aAction::$resultat = new Resultat;
-
 
12
		} else {
8
	{
13
			return aAction::$resultat;
-
 
14
		}
9
		return Registre::getRegistre();
15
	}
10
	}
-
 
11
    
16
	
12
    // Suivant
17
	public function getSuivant()
13
    public function getSuivant()
18
	{
14
	{
19
		return $this->suivant;
15
		return $this->suivant;
20
	}
16
	}
21
	public function setSuivant($s)
17
	public function setSuivant($s)
Line 25... Line 21...
25
		} else {
21
		} else {
26
			$this->suivant[] = $s;
22
			$this->suivant[] = $s;
27
		}
23
		}
28
	}
24
	}
Line 29... Line 25...
29
	
25
	
30
	public function verifier(Resultat $Resultat)
26
	public function demarrer()
31
    {
-
 
32
    	// Nous rassemblons les valeurs du tableau _POST contenat des : dans sous tableau de _POST.
27
    {
33
    	foreach ($_POST as $cle => $val) {
-
 
34
    		$morceau = array();
-
 
35
    		if (preg_match('/^(.+):(.+)$/', $cle, $morceau)) {
-
 
36
    			$_POST[$morceau[1]][] = $morceau[2];
28
		if (!is_null($this->getSuivant())) {
37
    			unset($_POST[$cle]);
-
 
38
    		}
-
 
39
    	}
-
 
40
    }
-
 
41
    
-
 
42
    public function demarrer()
-
 
43
    {
-
 
44
    	$Resultat = $this->getResultat();
-
 
45
    	$this->executer($Resultat);
29
			// ATTENTION :
46
		if ($this->getSuivant() != null) {
30
			// Il est important de laisser "count($this->getSuivant())" $this->getSuivant() peut varier de taille
47
			for ($i = 0; $i < count($this->getSuivant()) ; $i++) {
31
			for ($i = 0; $i < count($this->getSuivant()) ; $i++) {
48
				$liste_actions = $this->getSuivant();
32
				$liste_actions = $this->getSuivant();
49
				if ($liste_actions[$i] instanceof aAction) {
33
				if ($liste_actions[$i] instanceof aControlleurAction) {
50
					$liste_actions[$i]->demarrer();
34
					$liste_actions[$i]->demarrer();
51
				} else {
35
				} else {
52
					if ($liste_actions[$i] == '__defaut__') {
36
					if ($liste_actions[$i] == '__defaut__') {
53
						$methode = 'executer';
37
						$methode = 'executer';
54
					} else {
38
					} else {
55
						$methode = 'executer'.$liste_actions[$i];
39
						$methode = 'executer'.$liste_actions[$i];
-
 
40
					}
56
					}
41
					if (method_exists($this, $methode)) {
-
 
42
						$this->$methode();
-
 
43
					} else {
-
 
44
						$m = "La méthode $methode de la classe ".get_class($this)." est introuvable!";
-
 
45
    					trigger_error($m, E_USER_ERROR);
57
					$this->$methode($Resultat);
46
					}
58
				}
47
				}
-
 
48
			}
-
 
49
		} else {
-
 
50
			$m = "Le registre ne  contient aucune action!";
59
			}
51
    		trigger_error($m, E_USER_ERROR);
60
		}
52
		}
-
 
53
    }
-
 
54
    
-
 
55
	public function verifier()
-
 
56
    {
-
 
57
    	// Nous rassemblons les valeurs du tableau _POST contenant des : dans des sous-tableau de _POST.
-
 
58
    	foreach ($_POST as $cle => $val) {
-
 
59
    		$morceau = array();
-
 
60
    		if (preg_match('/^(.+?)(:.+)+$/', $cle, $morceau)) {
-
 
61
    			$table = '';
-
 
62
    			foreach (explode(':', trim($morceau[2], ':')) as $c) { 
-
 
63
    				$table .= '['.$c.']';
-
 
64
    			}
-
 
65
    			eval('$_POST[$morceau[1]]'.$table.' = $val;');
-
 
66
    			unset($_POST[$cle]);
-
 
67
    		}
-
 
68
    	}
Line 61... Line 69...
61
    }
69
    }
62
 
70
 
63
    abstract protected function executer(Resultat $Resultat);
71
    abstract protected function executer();
64
}
72
}