diff --git a/app/Actions/PHP/InstallNewPHP.php b/app/Actions/PHP/InstallNewPHP.php index 3b82a06..cb1267c 100755 --- a/app/Actions/PHP/InstallNewPHP.php +++ b/app/Actions/PHP/InstallNewPHP.php @@ -2,6 +2,7 @@ namespace App\Actions\PHP; +use App\Enums\PHP; use App\Enums\ServiceStatus; use App\Models\Server; use App\Models\Service; @@ -40,7 +41,7 @@ public static function rules(Server $server): array 'version' => [ 'required', Rule::in(config('core.php_versions')), - Rule::notIn($server->installedPHPVersions()), + Rule::notIn(array_merge($server->installedPHPVersions(), [PHP::NONE])), ], ]; } diff --git a/app/Enums/Database.php b/app/Enums/Database.php index 6c16e05..beb9796 100644 --- a/app/Enums/Database.php +++ b/app/Enums/Database.php @@ -18,6 +18,12 @@ final class Database const MARIADB104 = 'mariadb104'; + const MARIADB106 = 'mariadb1006'; + + const MARIADB1011 = 'mariadb1011'; + + const MARIADB114 = 'mariadb114'; + const POSTGRESQL12 = 'postgresql12'; const POSTGRESQL13 = 'postgresql13'; diff --git a/app/SSH/Services/PHP/PHP.php b/app/SSH/Services/PHP/PHP.php index d8c8611..37506a4 100644 --- a/app/SSH/Services/PHP/PHP.php +++ b/app/SSH/Services/PHP/PHP.php @@ -19,6 +19,7 @@ public function creationRules(array $input): array 'version' => [ 'required', Rule::in(config('core.php_versions')), + Rule::notIn([\App\Enums\PHP::NONE]), Rule::unique('services', 'version') ->where('type', 'php') ->where('server_id', $this->service->server_id), diff --git a/app/ServerTypes/Regular.php b/app/ServerTypes/Regular.php index fa5cddb..b5a571b 100755 --- a/app/ServerTypes/Regular.php +++ b/app/ServerTypes/Regular.php @@ -2,6 +2,8 @@ namespace App\ServerTypes; +use Illuminate\Validation\Rule; + class Regular extends AbstractType { public function createRules(array $input): array @@ -13,7 +15,7 @@ public function createRules(array $input): array ], 'php' => [ 'required', - 'in:none,'.implode(',', config('core.php_versions')), + Rule::in(config('core.php_versions')), ], 'database' => [ 'required', diff --git a/app/Web/Pages/Servers/PHP/Index.php b/app/Web/Pages/Servers/PHP/Index.php index 1ad5475..43a5a6b 100644 --- a/app/Web/Pages/Servers/PHP/Index.php +++ b/app/Web/Pages/Servers/PHP/Index.php @@ -3,6 +3,7 @@ namespace App\Web\Pages\Servers\PHP; use App\Actions\PHP\InstallNewPHP; +use App\Enums\PHP; use App\Models\Service; use App\Web\Pages\Servers\Page; use App\Web\Pages\Servers\PHP\Widgets\PHPList; @@ -43,7 +44,7 @@ protected function getHeaderActions(): array Select::make('version') ->options( collect(config('core.php_versions')) - ->filter(fn ($version) => ! in_array($version, $installedPHPs)) + ->filter(fn ($version) => ! in_array($version, array_merge($installedPHPs, [PHP::NONE]))) ->mapWithKeys(fn ($version) => [$version => $version]) ->toArray() ) diff --git a/config/core.php b/config/core.php index a5391d5..32a50c3 100755 --- a/config/core.php +++ b/config/core.php @@ -18,65 +18,66 @@ \App\Enums\OperatingSystem::UBUNTU22, \App\Enums\OperatingSystem::UBUNTU24, ], - 'webservers' => ['none', 'nginx'], + 'webservers' => [ + \App\Enums\Webserver::NONE, + \App\Enums\Webserver::NGINX, + ], 'php_versions' => [ - // 'none', - // '5.6', - '7.0', - '7.1', - '7.2', - '7.3', - '7.4', - '8.0', - '8.1', - '8.2', - '8.3', + \App\Enums\PHP::NONE, + \App\Enums\PHP::V70, + \App\Enums\PHP::V71, + \App\Enums\PHP::V72, + \App\Enums\PHP::V73, + \App\Enums\PHP::V74, + \App\Enums\PHP::V80, + \App\Enums\PHP::V81, + \App\Enums\PHP::V82, + \App\Enums\PHP::V83, ], 'databases' => [ - 'none', - 'mysql57', - 'mysql80', - 'mariadb103', - 'mariadb104', - 'mariadb106', - 'mariadb1011', - 'mariadb114', - 'postgresql12', - 'postgresql13', - 'postgresql14', - 'postgresql15', - 'postgresql16', + \App\Enums\Database::NONE, + \App\Enums\Database::MYSQL57, + \App\Enums\Database::MYSQL80, + \App\Enums\Database::MARIADB103, + \App\Enums\Database::MARIADB104, + \App\Enums\Database::MARIADB106, + \App\Enums\Database::MARIADB1011, + \App\Enums\Database::MARIADB114, + \App\Enums\Database::POSTGRESQL12, + \App\Enums\Database::POSTGRESQL13, + \App\Enums\Database::POSTGRESQL14, + \App\Enums\Database::POSTGRESQL15, + \App\Enums\Database::POSTGRESQL16, ], 'databases_name' => [ - 'none' => 'none', - 'mysql57' => 'mysql', - 'mysql80' => 'mysql', - 'mariadb103' => 'mariadb', - 'mariadb104' => 'mariadb', - 'mariadb106' => 'mariadb', - 'mariadb1011' => 'mariadb', - 'mariadb114' => 'mariadb', - 'postgresql12' => 'postgresql', - 'postgresql13' => 'postgresql', - 'postgresql14' => 'postgresql', - 'postgresql15' => 'postgresql', - 'postgresql16' => 'postgresql', + \App\Enums\Database::NONE => 'none', + \App\Enums\Database::MYSQL57 => 'mysql', + \App\Enums\Database::MYSQL80 => 'mysql', + \App\Enums\Database::MARIADB103 => 'mariadb', + \App\Enums\Database::MARIADB104 => 'mariadb', + \App\Enums\Database::MARIADB106 => 'mariadb', + \App\Enums\Database::MARIADB1011 => 'mariadb', + \App\Enums\Database::MARIADB114 => 'mariadb', + \App\Enums\Database::POSTGRESQL12 => 'postgresql', + \App\Enums\Database::POSTGRESQL13 => 'postgresql', + \App\Enums\Database::POSTGRESQL14 => 'postgresql', + \App\Enums\Database::POSTGRESQL15 => 'postgresql', + \App\Enums\Database::POSTGRESQL16 => 'postgresql', ], 'databases_version' => [ - 'none' => '', - 'mysql57' => '5.7', - 'mysql80' => '8.0', - 'mariadb' => '10.3', - 'mariadb103' => '10.3', - 'mariadb104' => '10.4', - 'mariadb106' => '10.6', - 'mariadb1011' => '10.11', - 'mariadb114' => '11.4', - 'postgresql12' => '12', - 'postgresql13' => '13', - 'postgresql14' => '14', - 'postgresql15' => '15', - 'postgresql16' => '16', + \App\Enums\Database::NONE => '', + \App\Enums\Database::MYSQL57 => '5.7', + \App\Enums\Database::MYSQL80 => '8.0', + \App\Enums\Database::MARIADB103 => '10.3', + \App\Enums\Database::MARIADB104 => '10.4', + \App\Enums\Database::MARIADB106 => '10.6', + \App\Enums\Database::MARIADB1011 => '10.11', + \App\Enums\Database::MARIADB114 => '11.4', + \App\Enums\Database::POSTGRESQL12 => '12', + \App\Enums\Database::POSTGRESQL13 => '13', + \App\Enums\Database::POSTGRESQL14 => '14', + \App\Enums\Database::POSTGRESQL15 => '15', + \App\Enums\Database::POSTGRESQL16 => '16', ], 'database_features' => [ 'remote' => [