diff --git a/app/Http/Controllers/MarketController.php b/app/Http/Controllers/MarketController.php
index 5812c094..3e5937bc 100644
--- a/app/Http/Controllers/MarketController.php
+++ b/app/Http/Controllers/MarketController.php
@@ -104,7 +104,7 @@ class MarketController extends Controller
protected function getAllAvailablePlugins()
{
$registryVersion = 1;
- if (app()->environment('testing') || ! $this->registryCache) {
+ if (app()->runningUnitTests() || ! $this->registryCache) {
$registries = collect(explode(',', config('plugins.registry')));
$this->registryCache = $registries->map(function ($registry) use ($registryVersion) {
try {
diff --git a/app/Http/Controllers/UpdateController.php b/app/Http/Controllers/UpdateController.php
index bcbbed05..f21de9dc 100644
--- a/app/Http/Controllers/UpdateController.php
+++ b/app/Http/Controllers/UpdateController.php
@@ -67,8 +67,8 @@ class UpdateController extends Controller
protected function getUpdateInfo()
{
- $acceptableSpec = 1;
- if (! $this->info) {
+ $acceptableSpec = 2;
+ if (app()->runningUnitTests() || ! $this->info) {
try {
$json = $this->guzzle->request(
'GET',
@@ -79,7 +79,7 @@ class UpdateController extends Controller
if (Arr::get($info, 'spec') == $acceptableSpec) {
$this->info = $info;
} else {
- $this->error = trans('admin.update.spec');
+ $this->error = trans('admin.update.errors.spec');
}
} catch (Exception $e) {
$this->error = $e->getMessage();
@@ -93,6 +93,12 @@ class UpdateController extends Controller
{
$this->getUpdateInfo();
+ $php = Arr::get($this->info, 'php');
+ if (Comparator::lessThan(PHP_VERSION, $php)) {
+ $this->error = trans('admin.update.errors.php', ['version' => $php]);
+ return false;
+ }
+
return Comparator::greaterThan(Arr::get($this->info, 'latest'), $this->currentVersion);
}
}
diff --git a/config/app.php b/config/app.php
index 52f91ead..8de0e505 100644
--- a/config/app.php
+++ b/config/app.php
@@ -22,7 +22,7 @@ return [
'update_source' => env(
'UPDATE_SOURCE',
'https://dev.azure.com/blessing-skin/51010f6d-9f99-40f1-a262-0a67f788df32/_apis/git/'.
- 'repositories/a9ff8df7-6dc3-4ff8-bb22-4871d3a43936/Items?path=%2Fupdate.json'
+ 'repositories/a9ff8df7-6dc3-4ff8-bb22-4871d3a43936/Items?path=%2Fupdate_2.json'
),
/*
diff --git a/resources/lang/en/admin.yml b/resources/lang/en/admin.yml
index 16ceaab5..3142b9ee 100644
--- a/resources/lang/en/admin.yml
+++ b/resources/lang/en/admin.yml
@@ -126,8 +126,6 @@ update:
check-github: Check GitHub Releases
button: Update Now
- spec: Current update source is not supported.
-
cautions:
title: Cautions
text: |
@@ -141,6 +139,8 @@ update:
errors:
connection: "Unable to access to current update source. Details: :error"
+ spec: Current update source is not supported.
+ php: Your PHP version is too low to update. Requires :version or later.
download:
errors:
diff --git a/resources/lang/zh_CN/admin.yml b/resources/lang/zh_CN/admin.yml
index efa001c1..5c22f062 100644
--- a/resources/lang/zh_CN/admin.yml
+++ b/resources/lang/zh_CN/admin.yml
@@ -131,8 +131,6 @@ update:
check-github: 查看 GitHub Releases
button: 马上升级
- spec: 不支持当前的更新源。
-
cautions:
title: 注意事项
text: |
@@ -146,6 +144,8 @@ update:
errors:
connection: 无法访问当前更新源。详细信息::error
+ spec: 不支持当前的更新源。
+ php: PHP 版本过低,至少需要 :version。
download:
errors:
diff --git a/resources/misc/changelogs/en/4.3.0.md b/resources/misc/changelogs/en/4.3.0.md
index 9ecaa147..844b52d7 100644
--- a/resources/misc/changelogs/en/4.3.0.md
+++ b/resources/misc/changelogs/en/4.3.0.md
@@ -16,6 +16,7 @@
- Optimized panel of changing theme color.
- Tweaked some links at closet page.
- Limited that only super administrators can visit update pages.
+- Update source specification version has been changed to `2`.
## Fixed
diff --git a/resources/misc/changelogs/zh_CN/4.3.0.md b/resources/misc/changelogs/zh_CN/4.3.0.md
index e706c2a8..413dd8ed 100644
--- a/resources/misc/changelogs/zh_CN/4.3.0.md
+++ b/resources/misc/changelogs/zh_CN/4.3.0.md
@@ -16,6 +16,7 @@
- 优化「更改配色」的面板
- 调整衣柜页面上的某些链接
- 限制仅超级管理员才能访问升级页面
+- 更新源信息 spec 版本更改为 `2`
## 修复
diff --git a/scripts/release.sh b/scripts/release.sh
index cc0c4203..d6b62185 100755
--- a/scripts/release.sh
+++ b/scripts/release.sh
@@ -26,7 +26,7 @@ zip -9 -r blessing-skin-server-$RELEASE_TAG.zip \
mkdir dist
cd dist
cp ../blessing-skin-server-$RELEASE_TAG.zip blessing-skin-server-$RELEASE_TAG.zip
-echo "{\"spec\":1,\"latest\":\"$RELEASE_TAG\",\"url\":\"https://dev.azure.com/blessing-skin/51010f6d-9f99-40f1-a262-0a67f788df32/_apis/git/repositories/a9ff8df7-6dc3-4ff8-bb22-4871d3a43936/Items?path=%2Fblessing-skin-server-$RELEASE_TAG.zip\"}" > update.json
+echo "{\"spec\":2,\"php\":\"7.1.8\",\"latest\":\"$RELEASE_TAG\",\"url\":\"https://dev.azure.com/blessing-skin/51010f6d-9f99-40f1-a262-0a67f788df32/_apis/git/repositories/a9ff8df7-6dc3-4ff8-bb22-4871d3a43936/Items?path=%2Fblessing-skin-server-$RELEASE_TAG.zip\"}" > update_2.json
git init
git add .
git commit -m "Publish"
diff --git a/tests/UpdateControllerTest.php b/tests/UpdateControllerTest.php
index b66856f0..25ce6398 100644
--- a/tests/UpdateControllerTest.php
+++ b/tests/UpdateControllerTest.php
@@ -32,9 +32,17 @@ class UpdateControllerTest extends TestCase
// Missing `spec` field
$this->appendToGuzzleQueue([
- new Response(200, [], json_encode(['latest' => '8.9.3', 'url' => ''])),
+ new Response(200, [], $this->mockFakeUpdateInfo('8.9.3', ['spec' => 0])),
+ // Weird. Don't remove the following line, or the tests will fail.
+ new Response(200, [], $this->mockFakeUpdateInfo('8.9.3', ['php' => '100.0.0'])),
]);
- $this->get('/admin/update')->assertSee(trans('admin.update.spec'));
+ $this->get('/admin/update')->assertSee(trans('admin.update.errors.spec'));
+
+ // Low PHP version
+ $this->appendToGuzzleQueue([
+ new Response(200, [], $this->mockFakeUpdateInfo('8.9.3', ['php' => '100.0.0'])),
+ ]);
+ $this->get('/admin/update')->assertSee(trans('admin.update.errors.php', ['version' => '100.0.0']));
// New version available
$this->appendToGuzzleQueue([
@@ -91,12 +99,13 @@ class UpdateControllerTest extends TestCase
]);
}
- protected function mockFakeUpdateInfo($version)
+ protected function mockFakeUpdateInfo(string $version, $extra = [])
{
- return json_encode([
- 'spec' => 1,
+ return json_encode(array_merge([
+ 'spec' => 2,
+ 'php' => '7.1.8',
'latest' => $version,
'url' => "https://whatever.test/$version/update.zip",
- ]);
+ ], $extra));
}
}