Passed
Push — master ( 59625a...08b657 )
by Anthony
02:53
created

RouterModule::getRouteModuleExist()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 1
Metric Value
c 3
b 0
f 1
dl 0
loc 15
rs 8.8571
cc 5
eloc 9
nc 4
nop 1
1
<?php
2
	namespace core\modules;
3
	
4
	
5
	use core\App;
6
	use core\functions\ChaineCaractere;
7
	
8
	class RouterModule {
9
		//varaibles de base de config
10
		private $controller;
11
		private $erreur;
12
		private $parametre;
13
		private $module; //varialbe qui contiendra le nom d'un module
14
		private $page;
15
		private $admin; //permet de savoir si on est dans l'administration du site ou pas et de charger lebon router
16
		
17
		
18
		//-------------------------- GETTER ----------------------------------------------------------------------------//
19
		//pour les parametres du getUrl ++ getAction ++ getController
20
		public function getParametre() {
21
			return $this->parametre;
22
		}
23
		public function getPage() {
24
			return $this->page;
25
		}
26
		public function getModule() {
27
			return $this->module;
28
		}
29
		public function getController() {
30
			return $this->controller;
31
		}
32
		public function getErreur() {
33
			return $this->erreur;
34
		}
35
		
36
		private function getAllModules() {
37
			$dbc = App::getDb();
38
			$module = "";
39
			
40
			$query = $dbc->select()->from("module")->get();
41
			
42
			if ((is_array($query)) && (count($query) > 0)) {
43
				foreach ($query as $obj) {
44
					$module[] = str_replace("/", "", $obj->url);
45
				}
46
			}
47
			
48
			return $module;
49
		}
50
		
51
		/**
52
		 * @param $url
53
		 * @param null $admin
54
		 * @return string
55
		 * Permets de générer l'url pour aller charger la page concernee pour le module blog
56
		 * appele également l'actoin à effectur dans la page
57
		 */
58
		public function getUrl($url, $admin = "app") {
59
			$explode = explode("/", $url);
60
			$count = count($explode);
61
			$debut_url = "";
62
			$centre_url = "";
63
			
64
			for ($i = 0; $i < $count; $i++) {
65
				if (in_array($explode[$i], $this->getAllModules())) {
66
					$this->module = $explode[$i];
67
					$debut_url = $explode[$i];
68
				}
69
				else if ($i >= 1) {
70
					$centre_url[] = $explode[$i];
71
				}
72
			}
73
			
74
			$centre_url = implode("/", $centre_url);
75
			$this->page = $centre_url;
76
			
77
			$centre_url = $this->setPathFile($debut_url, $centre_url, $admin);
78
			
79
			$this->admin = $admin;
80
			$this->setActionPage();
81
			
82
			return $centre_url."/".$this->parametre;
83
		}
84
		
85
		/**
86
		 * fonction qui permet de tester qu'une route existe bien
87
		 * appellee dans redirectError.class.php
88
		 * @param $url
89
		 */
90
		public function getRouteModuleExist($url) {
91
			$dbc = \core\App::getDb();
92
			$query = $dbc->select()->from("module")->get();
93
			
94
			if (count($query) > 0) {
95
				foreach ($query as $obj) {
96
					$test_module = ChaineCaractere::FindInString($url, $obj->url);
97
					$module_activer = \core\modules\GestionModule::getModuleActiver($obj->nom_module);
98
					
99
					if (($test_module === true) && ($module_activer === true)) {
100
						return true;
101
					}
102
				}
103
			}
104
		}
105
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
106
		
107
		
108
		
109
		//-------------------------- SETTER ----------------------------------------------------------------------------//
110
		/**
111
		 * @param $debut_url
112
		 * @param $centre_url
113
		 * @param $admin
114
		 * @return array|string
115
		 */
116
		private function setPathFile($debut_url, $centre_url, $admin) {
117
			if ($centre_url == "") {
118
				$this->page = "index";
119
			}
120
			else {
121
				$file = ROOT."modules/".$debut_url."/".$admin."/views/".$centre_url;
122
				
123
				if (!file_exists($file.".html")) {
124
					$centre_url = explode("/", $file);
125
					$this->parametre = array_pop($centre_url);
126
					$this->page = end($centre_url);
127
					
128
					$centre_url = implode("/", $centre_url);
129
				}
130
			}
131
			
132
			return $centre_url;
133
		}
134
		
135
		/**
136
		 * Fonction qui va se charger en focntion $this->page et de $this->action d'appeler la fonctoin qui va bien
137
		 * fontction appelee dans getUrl()
138
		 */
139
		private function setActionPage() {
140
			//on require le fichier routes.php dans /modules/nom_module/router/routes.php
141
			if ($this->admin !== "app") {
142
				require_once(MODULEROOT.$this->module."/router/admin_routes.php");
143
			}
144
			else {
145
				require_once(MODULEROOT.$this->module."/router/routes.php");
146
			}
147
		}
148
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
149
	}