<?php if (isset($_GET["updateVBcms"])&&!empty($_GET["updateVBcms"])) { // On va récupérer la clé pour être sûr que ce n'est pas une action mal intentionnée $updateKey=$bdd->query("SELECT * FROM `vbcms-settings` WHERE name = 'updateKey'")->fetch(PDO::FETCH_ASSOC); if($_GET["updateVBcms"]==$updateKey['value']){ // On vérifie les mises à jour et on récupère les informations $newUpdateInfos = checkVBcmsUpdates(); // On génère le nom du fichier de màj $updateFilename = $GLOBALS['vbcmsRootPath']."/vbcms-content/updates/".$newUpdateInfos['name'].".zip"; if (!file_exists($GLOBALS['vbcmsRootPath']."/vbcms-content/updates")) mkdir($GLOBALS['vbcmsRootPath']."/vbcms-content/updates", 0755); //On créé le contexte $options = array('http' => array('user_agent' => 'VBcms Updater')); $context = stream_context_create($options); // Puis on télécharge file_put_contents($updateFilename, file_get_contents($newUpdateInfos["zip"], true, $context)); if (file_exists($updateFilename)) { $zip = new ZipArchive; if ($zip->open($updateFilename) === TRUE) { $updateFolder = $GLOBALS['vbcmsRootPath']."/vbcms-content/updates/".$newUpdateInfos['name']; $zip->extractTo($updateFolder); $zip->close(); // On vérifie si la mise à jour est dans le dossier racine if(file_exists($updateFolder."/index.php")){ recursive_copy_if_different($updateFolder, $GLOBALS['vbcmsRootPath']); }else{ // La mise a jour est peut-être dans un sous-dossier, on va vérifier $subfolder = scandir($updateFolder); $foundFolder = false; foreach($subfolder as $file){ if (( $file != '.' ) && ( $file != '..' )){ if(file_exists($updateFolder."/".$file."/index.php?update")){ $foundFolder = true; $updateFolder = $updateFolder."/".$file; // À ce compte là il ne faut pas qu'il y ai 2 dossiers avec des index.php } } } if($foundFolder) recursive_copy_if_different($updateFolder, $GLOBALS['vbcmsRootPath']); } $response["success"] = true; if(file_exists($GLOBALS['vbcmsRootPath']."/install.php")) $response["link"] = VBcmsGetSetting("websiteUrl")."install.php"; else $response["link"] = VBcmsGetSetting("websiteUrl")."vbcms-admin"; } else { $response["success"] = false; $response["code"] = "CANT_OPEN_ARCHIVE"; // Impossible d'ouvrir l'archive } } else { $response["success"] = false; $response["code"] = "CANT_DOWNLOAD_UPDATE"; // Impossible de télécharger la màj } }else{ $response["success"] = false; $response["code"] = "WRONG_CODE"; // Impossible d'ouvrir l'archive } echo json_encode($response); /* $updateInfos = file_get_contents("https://api.vbcms.net/updater/lastest?serverId=".VBcmsGetSetting("serverId")."&key=".VBcmsGetSetting('encryptionKey')."&version=".VBcmsGetSetting('vbcmsVersion')."&canal=".VBcmsGetSetting('updateCanal')); if(isJson($updateInfos)){ $updateInfosData = json_decode($updateInfos, true); $updateFilename = $GLOBALS['vbcmsRootPath']."/vbcms-content/updates/vbcms-update-v".$updateInfosData['version']."_from-".$vbcmsVer.".zip"; if (!file_exists($GLOBALS['vbcmsRootPath']."/vbcms-content/updates")) mkdir($GLOBALS['vbcmsRootPath']."/vbcms-content/updates", 0755); //echo $updateInfosData["downloadLink"]."?serverId=".VBcmsGetSetting("serverId")."&key=".$key; file_put_contents($updateFilename, file_get_contents($updateInfosData["downloadLink"]."?serverId=".VBcmsGetSetting("serverId")."&key=".$key)); if (file_exists($updateFilename)) { $zip = new ZipArchive; if ($zip->open($updateFilename) === TRUE) { $zip->extractTo($GLOBALS['vbcmsRootPath']); $zip->close(); $response["success"] = true; $response["link"] = VBcmsGetSetting("websiteUrl")."update.php"; } else { $response["success"] = false; $response["code"] = 2; // Impossible d'ouvrir l'archive } } else { $response["success"] = false; $response["code"] = 1; // Impossible de télécharger la màj } echo json_encode($response); } else { $response["success"] = false; $response["code"] = 0; // Impossible de lire la réponse -> !JSON }*/ }