Passed
Push — master ( 1faf28...95951e )
by Anthony
02:22
created

RouterModule::getUrl()   C

Complexity

Conditions 7
Paths 12

Size

Total Lines 37
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 37
rs 6.7272
cc 7
eloc 23
nc 12
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
16
17
		//-------------------------- GETTER ----------------------------------------------------------------------------//
18
		//pour les parametres du getUrl ++ getAction ++ getController
19
		public function getParametre() {
20
			return $this->parametre;
21
		}
22
		public function getPage() {
23
			return $this->page;
24
		}
25
		public function getModule(){
26
		    return $this->module;
27
		}
28
		public function getController() {
29
			return $this->controller;
30
		}
31
		public function getErreur() {
32
			return $this->erreur;
33
		}
34
35
		private function getAllModules() {
36
			$dbc = App::getDb();
37
			$module = "";
38
39
			$query = $dbc->select()->from("module")->get();
40
41
			if ((is_array($query)) && (count($query) > 0)) {
42
				foreach ($query as $obj) {
43
					$module[] = str_replace("/", "", $obj->url);
44
				}
45
			}
46
47
			return $module;
48
		}
49
50
		/**
51
		 * Permets de générer l'url pour aller charger la page concernee pour le module blog
52
		 * appele également l'actoin à effectur dans la page
53
		 * @param $url
54
		 * @return string
55
		 */
56
		public function getUrl($url) {
57
			$explode = explode("/", $url);
58
			$count = count($explode);
59
			$debut_url = "";
60
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
71
			$centre_url = implode("/", $centre_url);
72
			$this->page = $centre_url;
73
74
			if (!isset($centre_url) || ($centre_url == "")) {
75
				$this->page = "index";
76
			}
77
			else {
78
				$file = ROOT."modules/".$debut_url."/app/views/".$centre_url;
79
				
80
				if (!file_exists($file.".html")) {
81
					$centre_url = explode("/", $file);
82
					$this->parametre = array_pop($centre_url);
83
					$this->page = end($centre_url);
84
					
85
					$centre_url = implode("/", $centre_url);
86
				}
87
			}
88
89
			$this->setActionPage();
90
91
			return $centre_url."/".$this->parametre;
92
		}
93
94
		/**
95
		 * fonction qui permet de tester qu'une route existe bien
96
		 * appellee dans redirectError.class.php
97
		 * @param $url
98
		 */
99
		public function getRouteModuleExist($url) {
100
			$dbc = \core\App::getDb();
101
			$query = $dbc->select()->from("module")->get();
102
103
			if ((is_array($query)) && (count($query) > 0)) {
104
				foreach ($query as $obj) {
105
					$test_module = ChaineCaractere::FindInString($url, $obj->url);
106
					$test_module1 = ChaineCaractere::FindInString($url, str_replace("/", "", $obj->url));
107
					$module_activer = \core\modules\GestionModule::getModuleActiver($obj->nom_module);
108
109
					if ((($test_module === true) || ($test_module1 === true)) && ($module_activer === true)) {
110
						return true;
111
					}
112
				}
113
			}
114
		}
115
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
116
117
118
119
		//-------------------------- SETTER ----------------------------------------------------------------------------//
120
		/**
121
		 * Fonction qui va se charger en focntion $this->page et de $this->action d'appeler la fonctoin qui va bien
122
		 * fontction appelee dans getUrl()
123
		 */
124
		private function setActionPage() {
125
			//on require le fichier routes.php dans /modules/nom_module/router/routes.php
126
127
			require_once(MODULEROOT.$this->module."/router/routes.php");
128
		}
129
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
130
	}