diff --git a/VBcms-2.0.zip b/VBcms-2.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..489f12c5b474fe98954a0e121d8a543cf7e96f39 Binary files /dev/null and b/VBcms-2.0.zip differ diff --git a/jsonEncode.php b/jsonEncode.php index 568c53dd3e8b92b94c0af849e1ab0d15e01c0be9..523797018fbd1e44a26afde24e00b32a5878774f 100644 --- a/jsonEncode.php +++ b/jsonEncode.php @@ -1,6 +1,6 @@ <?php // Fichier de test -$deTest['type'] = "user"; -$deTest['id'] = "1"; +$deTest['branch'] = "pre2.1"; +$deTest['build'] = "114"; -echo urlencode(json_encode($deTest)); \ No newline at end of file +echo (json_encode($deTest)); \ No newline at end of file diff --git a/vbcms-admin/updater.php b/vbcms-admin/updater.php index 14c51d78790490593b8784255cf3a0bb0a994efc..deb39dd0c078c10abdf3e55723cd582b927dd365 100644 --- a/vbcms-admin/updater.php +++ b/vbcms-admin/updater.php @@ -1,36 +1,7 @@ <?php -$curentUpdateCanal = VBcmsGetSetting('updateCanal'); -$serverId = VBcmsGetSetting('serverId'); -$key = VBcmsGetSetting('encryptionKey'); -$vbcmsVer = VBcmsGetSetting('vbcmsVersion'); -$curentUpdateCanal = VBcmsGetSetting('updateCanal'); +$hasNewUpdate = checkVBcmsUpdates(); -$updateInfos = file_get_contents("https://api.vbcms.net/updater/lastest?serverId=".$serverId."&key=".$key."&version=".$vbcmsVer."&canal=".$curentUpdateCanal); -if(isJson($updateInfos)){ - $updateInfosData = json_decode($updateInfos, true); - if (!$updateInfosData["upToDate"]) { - $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 0 WHERE `vbcms-settings`.`name` = 'upToDate'"); - - $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn(); - if ($response!=1) { - $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `removable`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)"); - $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]); - } - } else{ - $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 1 WHERE `vbcms-settings`.`name` = 'upToDate'"); - $bdd->query("DELETE FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'"); - } -} else { - $error = "Impossible de vérifier les mises à jour:".$updateInfos; - $updateInfosData['version'] = translate("unknownF"); -} - -$response = $bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `vbcms-settings`.`name` = 'lastUpdateCheck'"); -$response->execute([date("Y-m-d H:i:s")]); - -$isUpToDate = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'upToDate'")->fetchColumn(); -$lastUpdateCheck = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'lastUpdateCheck'")->fetchColumn(); -if ($isUpToDate == 1) { +if (!$hasNewUpdate) { $updateMessage = translate("isUpToDate"); $textColor = "success"; } else { @@ -59,14 +30,12 @@ if ($isUpToDate == 1) { <img src="<?=VBcmsGetSetting("websiteUrl")?>vbcms-admin/images/vbcms-logo/raccoon-in-box-512x.png"> </div> <div class="ml-5"> - <h4>VBcms <small><?=$vbcmsVer?></small></h4> + <h4>VBcms <small><?=VBcmsGetSetting("vbcmsVersion")?></small></h4> <p><strong><?=$updateMessage?></strong><br> - <?=translate("lastChecked")?>: <?=$lastUpdateCheck?></p> + <?=translate("lastChecked")?>: <?=VBcmsGetSetting("lastUpdateCheck")?></p> <?php - if ($isUpToDate == 1) { - # - } else { + if ($hasNewUpdate) { echo '<p>Test</p>'; echo '<button type="button" onclick="$(\'#updateModal\').modal(\'toggle\');" class="btn btn-light">'.translate("downloadAndInstall").'</button>'; } @@ -80,17 +49,17 @@ if ($isUpToDate == 1) { <div class="row"> <div class="col"> <h5>Détail de la mise à jour</h5> - <p><span class="text-muted">Installée: </span><span class="text-<?=$textColor?>"><?=$vbcmsVer?></span> + <p><span class="text-muted">Installée: </span><span class="text-<?=$textColor?>"><?=VBcmsGetSetting("vbcmsVersion")?></span> <?php - if ($isUpToDate == 0) echo '<br><span class="text-muted">Disponible: </span><span class="text-success">'.$updateInfosData["version"].'</span>'; + if ($hasNewUpdate) echo '<br><span class="text-muted">Disponible: </span><span class="text-success">'.$hasNewUpdate["name"].'</span>'; ?> <br><span class="text-muted">Canal de mise à jour: </span> <?php - if ($curentUpdateCanal == "release") { + if (VBcmsGetSetting("updateCanal") == "release") { echo '<span class="text-success">Release</span>'; - } elseif ($curentUpdateCanal == "dev") { + } elseif (VBcmsGetSetting("updateCanal") == "dev") { echo '<span class="text-danger">Développement</span>'; - } elseif ($curentUpdateCanal == "nightly") { + } elseif (VBcmsGetSetting("updateCanal") == "nightly") { echo '<span class="text-warning">Bêta</span>'; } @@ -100,6 +69,7 @@ if ($isUpToDate == 1) { </div> <div class="col-8""> <h4>Détail de la mise à jour</h4> + <p><?=$hasNewUpdate["description"] ?? ''?></p> </div> <div class="col"> <h5>Obtenir de l'aide</h5> diff --git a/vbcms-core/adminAutomatedTasks.php b/vbcms-core/adminAutomatedTasks.php index 4c9a26feef834f0288e40a42bf8ca827809e8f83..43ff2338082c423c503130f5cedd84b0b8594f8b 100644 --- a/vbcms-core/adminAutomatedTasks.php +++ b/vbcms-core/adminAutomatedTasks.php @@ -8,22 +8,5 @@ $datetime = new DateTime(date("Y-m-d H:i:s")); $lastUpdateCheck = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'lastUpdateCheck'")->fetchColumn(); $lastUpdateCheck = DateTime::createFromFormat('Y-m-d H:i:s', $lastUpdateCheck); if ((abs($datetime->getTimestamp()-$lastUpdateCheck->getTimestamp())) > 1800){ - $key = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='encryptionKey'")->fetchColumn(); - $vbcmsVer = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='vbcmsVersion'")->fetchColumn(); - $curentUpdateCanal = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='updateCanal'")->fetchColumn(); - - $json = file_get_contents("https://api.vbcms.net/updater/lastest?serverId=".VBcmsGetSetting("serverId")."&key=".$key."&version=".$vbcmsVer."&canal=".$curentUpdateCanal); - $jsonData = json_decode($json, true); - - if (!empty($jsonData) && !$jsonData["upToDate"]) { - $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 0 WHERE `vbcms-settings`.`name` = 'upToDate'"); - - $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn(); - if ($response!=1) { - $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `dismissible`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)"); - $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]); - } - } - $response = $bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `vbcms-settings`.`name` = 'lastUpdateCheck'"); - $response->execute([date("Y-m-d H:i:s")]); + checkVBcmsUpdates(); } \ No newline at end of file diff --git a/vbcms-core/functions.php b/vbcms-core/functions.php index 7b487f2293d63924d26bf30107a0fb542264f69f..5c1b614092171b2f75cb773ee46270ad0a08af06 100644 --- a/vbcms-core/functions.php +++ b/vbcms-core/functions.php @@ -164,6 +164,73 @@ function show404($type){ } } +function checkVBcmsUpdates(){ + global $bdd; + $vbcmsVer = VBcmsGetSetting('vbcmsVersion'); + $currentUpdateCanal = VBcmsGetSetting('updateCanal'); + + if($currentUpdateCanal == "dev"){ + $updateUrl = "https://api.github.com/repos/SofianeLasri/VBcms-2.0/commits"; + }else{ + $updateUrl = "https://api.github.com/repos/SofianeLasri/VBcms-2.0/releases"; + } + + $options = array('http' => array('user_agent' => 'VBcms Updater')); + $context = stream_context_create($options); + + $updateInfos = file_get_contents($updateUrl, true, $context); + if(isJson($updateInfos)){ + // On le fait ici et pas avant car on souhaite recommencer si l'on ne reçoit pas du JSON + $response = $bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `vbcms-settings`.`name` = 'lastUpdateCheck'"); + $response->execute([date("Y-m-d H:i:s")]); + + $updateInfosData = json_decode($updateInfos, true); + unset($updateInfos); + + if(!empty($updateInfosData)){ + $VBcmsDateFormat = 'Y-m-d H:i:s'; + $VBcmsActualUpdateCreationDate = new DateTime(VBcmsGetSetting('updateCreationDate')); + + if($currentUpdateCanal == "dev"){ + $remoteUpdateDate = new DateTime($updateInfosData[0]['commit']['author']['date']); + $updateInfos['name'] = "Commit ".substr($updateInfosData[0]['sha'], 0, 7); + $updateInfos['description'] = $updateInfosData[0]['commit']['message']; + $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s"); + }else{ + if($updateInfosData[0]['prerelease']){ + $remoteUpdateDate = new DateTime($updateInfosData[0]['published_at']); + $updateInfos['name'] = $updateInfosData[0]['name']; + $updateInfos['description'] = $updateInfosData[0]['body']; + $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s"); + } + + } + + if($remoteUpdateDate > $VBcmsActualUpdateCreationDate){ + + $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 0 WHERE `vbcms-settings`.`name` = 'upToDate'"); + + $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn(); + if ($response!=1) { + $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `removable`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)"); + $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]); + } + return $updateInfos; + } else { + $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 1 WHERE `vbcms-settings`.`name` = 'upToDate'"); + $bdd->query("DELETE FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'"); + return false; + } + } else { + $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 1 WHERE `vbcms-settings`.`name` = 'upToDate'"); + $bdd->query("DELETE FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'"); + return false; + } + } else { + return false; + } +} + // Petites fonctions utiles function isJson($string) { json_decode($string);