Passed
Push — master ( 08b657...a4e6af )
by Anthony
02:47
created

RouterModule::getAllModules()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 14
rs 9.2
cc 4
eloc 8
nc 2
nop 0
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); $count = count($explode);
60
			$debut_url = ""; $centre_url = "";
61
			for ($i = 0; $i < $count; $i++) {
62
				if (in_array($explode[$i], $this->getAllModules())) {
63
					$this->module = $explode[$i];
64
					$debut_url = $explode[$i];
65
				}
66
				else if ($i >= 1) {
67
					$centre_url[] = $explode[$i];
68
				}
69
			}
70
			$centre_url = implode("/", $centre_url);
71
			$this->page = $centre_url;
72
			$centre_url = $this->setPathFile($debut_url, $centre_url, $admin);
73
			$this->admin = $admin;
74
			$this->setActionPage();
75
			
76
			return $centre_url."/".$this->parametre;
77
		}
78
		
79
		/**
80
		 * fonction qui permet de tester qu'une route existe bien
81
		 * appellee dans redirectError.class.php
82
		 * @param $url
83
		 */
84
		public function getRouteModuleExist($url) {
85
			$dbc = \core\App::getDb();
86
			$query = $dbc->select()->from("module")->get();
87
			
88
			if (count($query) > 0) {
89
				foreach ($query as $obj) {
90
					$test_module = ChaineCaractere::FindInString($url, $obj->url);
91
					$module_activer = \core\modules\GestionModule::getModuleActiver($obj->nom_module);
92
					
93
					if (($test_module === true) && ($module_activer === true)) {
94
						return true;
95
					}
96
				}
97
			}
98
		}
99
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
100
		
101
		
102
		
103
		//-------------------------- SETTER ----------------------------------------------------------------------------//
104
		/**
105
		 * @param $debut_url
106
		 * @param $centre_url
107
		 * @param $admin
108
		 * @return array|string
109
		 */
110
		private function setPathFile($debut_url, $centre_url, $admin) {
111
			if ($centre_url == "") {
112
				$this->page = "index";
113
			}
114
			else {
115
				$file = ROOT."modules/".$debut_url."/".$admin."/views/".$centre_url;
116
				
117
				if (!file_exists($file.".html")) {
118
					$centre_url = explode("/", $file);
119
					$this->parametre = array_pop($centre_url);
120
					$this->page = end($centre_url);
121
					
122
					$centre_url = implode("/", $centre_url);
123
				}
124
			}
125
			
126
			return $centre_url;
127
		}
128
		
129
		/**
130
		 * Fonction qui va se charger en focntion $this->page et de $this->action d'appeler la fonctoin qui va bien
131
		 * fontction appelee dans getUrl()
132
		 */
133
		private function setActionPage() {
134
			//on require le fichier routes.php dans /modules/nom_module/router/routes.php
135
			if ($this->admin !== "app") {
136
				require_once(MODULEROOT.$this->module."/router/admin_routes.php");
137
			}
138
			else {
139
				require_once(MODULEROOT.$this->module."/router/routes.php");
140
			}
141
		}
142
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
143
	}