Passed
Push — master ( faaa2f...62f6dd )
by Anthony
03:04
created

RouterModule   A

Complexity

Total Complexity 24

Size/Duplication

Total Lines 131
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 5
Bugs 0 Features 2
Metric Value
wmc 24
c 5
b 0
f 2
lcom 1
cbo 4
dl 0
loc 131
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A getParametre() 0 3 1
A getPage() 0 3 1
A getModule() 0 3 1
A getController() 0 3 1
A getErreur() 0 3 1
A getAllModules() 0 14 4
A setActionPage() 0 9 2
B getRouteModuleExist() 0 16 7
B getUrl() 0 39 6
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() {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
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
			if ($centre_url == "") {
78
				$this->page = "index";
79
			}
80
			else {
81
				$file = ROOT."modules/".$debut_url."/".$admin."/views/".$centre_url;
82
				
83
				if (!file_exists($file.".html")) {
84
					$centre_url = explode("/", $file);
85
					$this->parametre = array_pop($centre_url);
86
					$this->page = end($centre_url);
87
					
88
					$centre_url = implode("/", $centre_url);
89
				}
90
			}
91
			
92
			$this->admin = $admin;
93
			$this->setActionPage();
94
			
95
			return $centre_url."/".$this->parametre;
96
		}
97
		
98
		/**
99
		 * fonction qui permet de tester qu'une route existe bien
100
		 * appellee dans redirectError.class.php
101
		 * @param $url
102
		 */
103
		public function getRouteModuleExist($url) {
104
			$dbc = \core\App::getDb();
105
			$query = $dbc->select()->from("module")->get();
106
			
107
			if ((is_array($query)) && (count($query) > 0)) {
108
				foreach ($query as $obj) {
109
					$test_module = ChaineCaractere::FindInString($url, $obj->url);
110
					$test_module1 = ChaineCaractere::FindInString($url, str_replace("/", "", $obj->url));
111
					$module_activer = \core\modules\GestionModule::getModuleActiver($obj->nom_module);
112
					
113
					if ((($test_module === true) || ($test_module1 === true)) && ($module_activer === true)) {
114
						return true;
115
					}
116
				}
117
			}
118
		}
119
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
120
		
121
		
122
		
123
		//-------------------------- SETTER ----------------------------------------------------------------------------//
124
		/**
125
		 * Fonction qui va se charger en focntion $this->page et de $this->action d'appeler la fonctoin qui va bien
126
		 * fontction appelee dans getUrl()
127
		 */
128
		private function setActionPage() {
129
			//on require le fichier routes.php dans /modules/nom_module/router/routes.php
130
			if ($this->admin !== "app") {
131
				require_once(MODULEROOT.$this->module."/router/admin_routes.php");
132
			}
133
			else {
134
				require_once(MODULEROOT.$this->module."/router/routes.php");
135
			}
136
		}
137
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
138
	}