Passed
Push — master ( b0b695...4118f6 )
by Anthony
02:59
created

RouterModule::setPathFile()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

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