| 1 |  |  | <?php | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | 	namespace core\modules; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | 	 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | 	 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | 	use core\App; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | 	trait CheckVersionModule { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  | 		private $nom; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | 		private $version; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  | 		private $online_version; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 |  |  | 		//-------------------------- GETTER ----------------------------------------------------------------------------// | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  | 		/** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  | 		 * @param $nom_module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  | 		 * @return boolean|null | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 |  |  | 		 * fonction qui permet de savoir si un module est à jour ou non | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 |  |  | 		 * si a jour renvoi true sinon renvoi false | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  | 		 */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 |  |  | 		public static function getModuleAJour($nom_module) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 |  |  | 			$dbc = App::getDb(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 |  |  | 			$query = $dbc->query("SELECT mettre_jour FROM module WHERE nom_module = ".$dbc->quote($nom_module)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 |  |  | 			if ((is_array($query)) && (count($query) > 0)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  | 				foreach ($query as $obj) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 |  |  | 					return $obj->mettre_jour; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  | 				} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 28 |  |  | 			} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 29 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 30 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 31 |  |  | 		public function getListeModuleMettreJour() { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 32 |  |  | 			$dbc = App::getDb(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 33 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 34 |  |  | 			$query = $dbc->query("SELECT * FROM module WHERE mettre_jour=1"); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  | 			if ((is_array($query)) && (count($query) > 0)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 |  |  | 				$nom_module = []; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 |  |  | 				$version = []; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 |  |  | 				$online_version = []; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 |  |  | 				foreach ($query as $obj) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 |  |  | 					$nom_module[] = $obj->nom_module; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 |  |  | 					$version[] = $obj->version; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 |  |  | 					$online_version[] = $obj->online_version; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  | 				} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  | 				$this->setListeModuleMettreJour($nom_module, $version, $online_version); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 |  |  | 				return true; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  | 			} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  | 		/** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  | 		 * fonction qui se lance à chaquer fois que l'on ouvre l'admin | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 |  |  | 		 * permet de tester si tous les modules présent sur le site sont bien à jour | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 |  |  | 		 */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  | 		public function getCheckModuleVersion() { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 |  |  | 			$dbc = App::getDb(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 |  |  | 			$today = date("Y-m-d"); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  | 			$query = $dbc->query("SELECT next_check_version, version, url_telechargement, mettre_jour, delete_old_version, ID_module FROM module"); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 |  |  | 			if ((is_array($query)) && (count($query) > 0)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 |  |  | 				foreach ($query as $obj) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 |  |  | 					if ($obj->next_check_version == null) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  | 						//si pas de version a checker, cela veut dire qu'on vient d'installer le module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  | 						//du coup on met le next_check aa la semaine pro | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  | 						$this->setNextCheckUpdate($obj->ID_module); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  | 					} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  | 					else if (($obj->next_check_version <= $today) && ($obj->mettre_jour != 1)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  | 						//avant tout on regarde si on doit delete une vieille version | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  | 						$this->setDeleteOldVersionModule($obj->delete_old_version, $obj->ID_module); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 |  |  | 						//on recupere le nom du dossier + extention | 
            
                                                                                                            
                            
            
                                    
            
            
                | 75 |  |  | 						$explode = explode(".", $obj->url_telechargement); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 76 |  |  | 						array_pop($explode); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 77 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 78 |  |  | 						$version_txt = implode(".", $explode)."_version.txt"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 79 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 80 |  |  | 						$this->getCheckModuleUpToDate($version_txt, $obj->version, $obj->ID_module); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 81 |  |  | 					} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 82 |  |  | 				} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 83 |  |  | 			} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 84 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 85 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 86 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 87 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 88 |  |  | 		//-------------------------- SETTER ----------------------------------------------------------------------------// | 
            
                                                                                                            
                            
            
                                    
            
            
                | 89 |  |  | 		private function setListeModuleMettreJour($nom_module, $version, $online_version) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 90 |  |  | 			$this->nom = $nom_module; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 91 |  |  | 			$this->version = $version; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 92 |  |  | 			$this->online_version = $online_version; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 93 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 94 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 95 |  |  | 		/** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 96 |  |  | 		 * @param $id_module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 97 |  |  | 		 * fonction qui permet de palnnifier la nouvelle check de si il il y aa une new maj du module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 98 |  |  | 		 */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 99 |  |  | 		private function setNextCheckUpdate($id_module) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 100 |  |  | 			$dbc = App::getDb(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 101 |  |  | 			$today_o = new \DateTime(date("Y-m-d")); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 102 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 103 |  |  | 			$value = [ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 104 |  |  | 				"next_check" => $today_o->add(new \DateInterval("P1W"))->format("Y-m-d"), | 
            
                                                                                                            
                            
            
                                    
            
            
                | 105 |  |  | 				"id_module" => $id_module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 106 |  |  | 			]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 107 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 108 |  |  | 			$dbc->prepare("UPDATE module SET next_check_version=:next_check WHERE ID_module=:id_module", $value); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 109 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 110 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 111 |  |  | 		/** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 112 |  |  | 		 * @param $version_txt | 
            
                                                                                                            
                            
            
                                    
            
            
                | 113 |  |  | 		 * @param $version | 
            
                                                                                                            
                            
            
                                    
            
            
                | 114 |  |  | 		 * @param $id_module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 115 |  |  | 		 * fonction qui va vérifier si notre mdule est bien a jour | 
            
                                                                                                            
                            
            
                                    
            
            
                | 116 |  |  | 		 */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 117 |  |  | 		private function getCheckModuleUpToDate($version_txt, $version, $id_module) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 118 |  |  | 			$dbc = App::getDb(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 119 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 120 |  |  | 			if (file_get_contents($version_txt) !== "") { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 121 |  |  | 				//online pour bdd | 
            
                                                                                                            
                            
            
                                    
            
            
                | 122 |  |  | 				$version_online_txt = file_get_contents($version_txt); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 123 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 124 |  |  | 				$version_online = floatval($version_online_txt); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 125 |  |  | 				$version_site = floatval($version); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 126 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 127 |  |  | 				//la version sur le serveur de telechargement est plus récente, on va donc proposer | 
            
                                                                                                            
                            
            
                                    
            
            
                | 128 |  |  | 				//en passant la valeur update a 1 dans la table module pour ce module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 129 |  |  | 				// au client de mettre a jour sa version sinon on met la next check a la semaine pro | 
            
                                                                                                            
                            
            
                                    
            
            
                | 130 |  |  | 				if ($version_online > $version_site) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 131 |  |  | 					$value = [ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 132 |  |  | 						"update" => 1, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 133 |  |  | 						"online_version" => $version_online_txt, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 134 |  |  | 						"id_module" => $id_module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 135 |  |  | 					]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 136 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 137 |  |  | 					//on met la notification admin à 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 138 |  |  | 					$dbc->query("UPDATE notification SET admin=1 WHERE ID_notification=1"); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 139 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 140 |  |  | 					$dbc->prepare("UPDATE module SET mettre_jour=:update, online_version=:online_version WHERE ID_module=:id_module", $value); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 141 |  |  | 				} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 142 |  |  | 			} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 143 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 144 |  |  | 			$this->setNextCheckUpdate($id_module); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 145 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 146 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 147 |  |  | 		/** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 148 |  |  | 		 * @param $delete | 
            
                                                                                                            
                            
            
                                    
            
            
                | 149 |  |  | 		 * @param $id_module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 150 |  |  | 		 * fonction qui sert à supprimer un module | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 151 |  |  | 		 */ | 
            
                                                        
            
                                    
            
            
                | 152 |  |  | 		public function setDeleteOldVersionModule($delete, $id_module) { | 
            
                                                        
            
                                    
            
            
                | 153 |  |  | 			if ($delete == 1) { | 
            
                                                        
            
                                    
            
            
                | 154 |  |  | 				$import = new ImportModule(); | 
            
                                                        
            
                                    
            
            
                | 155 |  |  | 				$import->setSupprimerOldModule($id_module); | 
            
                                                        
            
                                    
            
            
                | 156 |  |  | 			} | 
            
                                                        
            
                                    
            
            
                | 157 |  |  | 		} | 
            
                                                        
            
                                    
            
            
                | 158 |  |  | 	} |