Passed
Push — master ( 94d415...e3b18a )
by Anthony
03:47
created

ImportModule::setSupprimerOldModule()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 9
rs 9.6666
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
	namespace core\modules;
3
4
	use core\App;
5
	use core\HTML\flashmessage\FlashMessage;
6
7
	class ImportModule {
8
		private $nom_dossier;
9
		private $nom_fichier;
10
		private $extension;
11
		private $erreur;
0 ignored issues
show
Unused Code introduced by
The property $erreur is not used and could be removed.

This check marks private properties in classes that are never used. Those properties can be removed.

Loading history...
12
13
		//pour les infos du module
14
		private $id_module;
15
		private $url_telechargement;
16
		private $version_ok;
17
		private $dossier_module;
18
		private $url_module;
19
20
		
21
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
22
		public function __construct() {
23
			//On test si dossier temporaire + modules a la racines existes bien sinon on les crées
24
			if (!file_exists(ROOT."temp")) mkdir(ROOT."temp");
25
			if (!file_exists(ROOT."modules")) mkdir(ROOT."modules");
26
		}
27
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
28
		
29
		
30
		//-------------------------- GETTER ----------------------------------------------------------------------------//
31
		/**
32
		 * @param $id_module
33
		 * permets de récupérer des informations sur un module
34
		 */
35
		private function getInfoModule($id_module) {
36
			$dbc = App::getDb();
37
38
			$query = $dbc->select()->from("module")->where("ID_module", "=", $id_module)->get();
39
40
			if ((is_array($query)) && (count($query) > 0)) {
41
				foreach ($query as $obj) {
42
					$this->id_module = $obj->ID_module;
43
					$this->url_telechargement = $obj->url_telechargement;
44
					$this->version_ok = $obj->online_version;
45
					$this->dossier_module = str_replace("/", "", $obj->url);
46
					$this->url_module = $obj->url;
47
				}
48
			}
49
		}
50
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
51
52
53
		//-------------------------- SETTER ----------------------------------------------------------------------------//
54
		private function setInstallModule($url_module) {
55
			$zip = new \ZipArchive();
56
57
			if (($this->extension == "zip") &&
58
				(file_exists(MODULEROOT.$this->nom_dossier) == false) &&
59
				(file_put_contents(TEMPROOT.$this->nom_fichier, fopen($url_module, 'r')) != 0) &&
60
				($zip->open(TEMPROOT.$this->nom_fichier) == true) &&
61
				($zip->extractTo(TEMPROOT) == true) &&
62
				(rename(TEMPROOT.$this->nom_dossier, MODULEROOT.$this->nom_dossier) == true)) {
63
64
				$zip->close();
65
				return true;
66
			}
67
68
			return false;
69
		}
70
		/**
71
		 * @param $url_module
72
		 * @param boolean $update
73
		 * fonction qui permets d'importer un module dans notre site internet
74
		 */
75
		public function setImportModule($url_module, $update = null) {
76
			$dbc = App::getDb();
77
78
			//avant tout on récupère le nom du fichier pour le mettre dans le dossier temporaire
79
			$explode = explode("/", $url_module);
80
			$this->nom_fichier = end($explode);
81
82
			//on recupere le nom du dossier + extention
83
			$explode = explode(".", $this->nom_fichier);
84
			$this->nom_dossier = $explode[0];
85
			$this->extension = $explode[1];
86
87
			if ($this->setInstallModule($url_module) == true) {
88
				$this->setSupprimerArchiveTemp();
89
90
				//si c'est une install et non une mise à jour
91
				if ($update == null) {
92
					$requete = "";
93
					require_once(MODULEROOT.$this->nom_dossier."/install.php");
94
					$dbc->query($requete);
95
				}
96
97
				FlashMessage::setFlash("Votre module a bien été ajouté au site.", "success");
98
			}
99
			else {
100
				FlashMessage::setFlash("Le module n'a pas pu être correctement téléchargé et installé, veuillez réesseyer dans un instant");
101
			}
102
		}
103
104
		/**
105
		 * @return bool
106
		 * fonction qui après l'installation d'un module supprime les fichier temporaires
107
		 */
108
		private function setSupprimerArchiveTemp() {
109
			if (unlink(TEMPROOT.$this->nom_fichier) == true) {
110
				return true;
111
			}
112
			else {
113
				return false;
114
			}
115
		}
116
117
		/**
118
		 * @param $id_module
119
		 * fonction qui permet de supprimer un module (suppression des tables + appel fonction supprimer dossier)
120
		 */
121
		public function setSupprimerModule($id_module) {
122
			$dbc = App::getDb();
123
			$this->getInfoModule($id_module);
124
125
			$dbc->delete()->from("module")->where("ID_module", "=", $id_module)->del();
126
127
			$requete = "";
128
			require_once(MODULEROOT.$this->url_module."uninstall.php");
129
			$dbc->query($requete);
130
131
			App::supprimerDossier(str_replace("/", "", $this->url_module));
132
		}
133
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
134
	}