更新
This commit is contained in:
@@ -27,7 +27,9 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
{
|
||||
public const CONFIG_TYPE = 'desktop_workstation';
|
||||
|
||||
public const PLATFORMS = ['windows_x64', 'macos_arm64', 'macos_x64'];
|
||||
public const PLATFORMS = ['windows_x64', 'macos_arm64', 'macos_x64'];
|
||||
|
||||
public const PACKAGE_TYPES = ['archive', 'inno_setup'];
|
||||
|
||||
/**
|
||||
* @notes 管理端读取配置(安装包地址补全域名)
|
||||
@@ -76,10 +78,10 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
$latest = self::normalizeVersion((string) ($config['latest_version'] ?? ''));
|
||||
$minVersion = self::normalizeVersion((string) ($config['min_version'] ?? ''));
|
||||
$enabled = (int) ($config['enabled'] ?? 0) === 1;
|
||||
$packageKey = self::packageKey($platform, $arch);
|
||||
$package = $packageKey !== ''
|
||||
? self::plainPackage($config['packages'][$packageKey] ?? [])
|
||||
: self::emptyPackage();
|
||||
$packageKey = self::packageKey($platform, $arch);
|
||||
$package = $packageKey !== ''
|
||||
? self::plainPackage($config['packages'][$packageKey] ?? [], $packageKey)
|
||||
: self::emptyPackage();
|
||||
$canInstall = $package['url'] !== '' && $package['sha256'] !== '';
|
||||
$hasUpdate = $enabled && $latest !== '' && $current !== '' && self::compareVersion($current, $latest) < 0;
|
||||
$belowMin = $minVersion !== '' && $current !== '' && self::compareVersion($current, $minVersion) < 0;
|
||||
@@ -186,8 +188,9 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
$packages[$key] = [
|
||||
'url' => (string) ($params[$key . '_url'] ?? ''),
|
||||
'sha256' => (string) ($params[$key . '_sha256'] ?? ''),
|
||||
'size' => $params[$key . '_size'] ?? 0,
|
||||
'filename' => (string) ($params[$key . '_filename'] ?? ''),
|
||||
'size' => $params[$key . '_size'] ?? 0,
|
||||
'filename' => (string) ($params[$key . '_filename'] ?? ''),
|
||||
'type' => (string) ($params[$key . '_type'] ?? 'archive'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -210,7 +213,7 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
{
|
||||
$packages = [];
|
||||
foreach (self::PLATFORMS as $key) {
|
||||
$packages[$key] = self::publicPackage($config['packages'][$key] ?? []);
|
||||
$packages[$key] = self::publicPackage($config['packages'][$key] ?? [], $key);
|
||||
}
|
||||
$config['packages'] = $packages;
|
||||
return $config;
|
||||
@@ -230,8 +233,9 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
$url = FileService::setFileUrl($url);
|
||||
}
|
||||
$sha256 = strtolower(trim((string) ($row['sha256'] ?? '')));
|
||||
$filename = trim((string) ($row['filename'] ?? ''));
|
||||
$size = (int) ($row['size'] ?? 0);
|
||||
$filename = trim((string) ($row['filename'] ?? ''));
|
||||
$size = (int) ($row['size'] ?? 0);
|
||||
$type = self::normalizePackageType((string) ($row['type'] ?? ''), $key);
|
||||
if ($persist) {
|
||||
$filled = self::fillLocalPackageMeta($url, $sha256, $size, $filename);
|
||||
$url = $filled['url'];
|
||||
@@ -242,8 +246,9 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
$normalized[$key] = [
|
||||
'url' => $url,
|
||||
'sha256' => $sha256,
|
||||
'size' => max(0, $size),
|
||||
'filename' => mb_substr($filename, 0, 180),
|
||||
'size' => max(0, $size),
|
||||
'filename' => mb_substr($filename, 0, 180),
|
||||
'type' => $type,
|
||||
];
|
||||
}
|
||||
return $normalized;
|
||||
@@ -251,36 +256,52 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $row
|
||||
* @return array{url:string,sha256:string,size:int,filename:string}
|
||||
*/
|
||||
private static function publicPackage(array $row): array
|
||||
{
|
||||
$plain = self::plainPackage($row);
|
||||
* @return array{url:string,sha256:string,size:int,filename:string,type:string}
|
||||
*/
|
||||
private static function publicPackage(array $row, string $key): array
|
||||
{
|
||||
$plain = self::plainPackage($row, $key);
|
||||
$plain['url'] = $plain['url'] === '' ? '' : FileService::getFileUrl($plain['url']);
|
||||
return $plain;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $row
|
||||
* @return array{url:string,sha256:string,size:int,filename:string}
|
||||
*/
|
||||
private static function plainPackage(array $row): array
|
||||
{
|
||||
return [
|
||||
* @return array{url:string,sha256:string,size:int,filename:string,type:string}
|
||||
*/
|
||||
private static function plainPackage(array $row, string $key = ''): array
|
||||
{
|
||||
return [
|
||||
'url' => trim((string) ($row['url'] ?? '')),
|
||||
'sha256' => strtolower(trim((string) ($row['sha256'] ?? ''))),
|
||||
'size' => max(0, (int) ($row['size'] ?? 0)),
|
||||
'filename' => (string) ($row['filename'] ?? ''),
|
||||
'size' => max(0, (int) ($row['size'] ?? 0)),
|
||||
'filename' => (string) ($row['filename'] ?? ''),
|
||||
'type' => self::normalizePackageType((string) ($row['type'] ?? ''), $key),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array{url:string,sha256:string,size:int,filename:string}
|
||||
*/
|
||||
private static function emptyPackage(): array
|
||||
{
|
||||
return ['url' => '', 'sha256' => '', 'size' => 0, 'filename' => ''];
|
||||
}
|
||||
* @return array{url:string,sha256:string,size:int,filename:string,type:string}
|
||||
*/
|
||||
private static function emptyPackage(): array
|
||||
{
|
||||
return ['url' => '', 'sha256' => '', 'size' => 0, 'filename' => '', 'type' => 'archive'];
|
||||
}
|
||||
|
||||
public static function normalizePackageType(string $type, string $key = ''): string
|
||||
{
|
||||
$value = strtolower(trim($type));
|
||||
if ($value === '') {
|
||||
return 'archive';
|
||||
}
|
||||
if (!in_array($value, self::PACKAGE_TYPES, true)) {
|
||||
return 'archive';
|
||||
}
|
||||
if ($value === 'inno_setup' && $key !== '' && $key !== 'windows_x64') {
|
||||
return 'archive';
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array{url:string,sha256:string,size:int,filename:string}
|
||||
|
||||
Reference in New Issue
Block a user