Files
lichterei-web/kirby/src/Cms/LicenseStatus.php
Bastian Allgeier 5c44c8fcfd Upgrade to 4.0.3
2024-01-10 11:32:26 +01:00

144 lines
2.8 KiB
PHP

<?php
namespace Kirby\Cms;
use Kirby\Toolkit\I18n;
/**
* @package Kirby Cms
* @author Nico Hoffmann <nico@getkirby.com>
* @link https://getkirby.com
* @copyright Bastian Allgeier
* @license https://getkirby.com/license
*
* @codeCoverageIgnore
*/
enum LicenseStatus: string
{
/**
* The license is valid and active
*/
case Active = 'active';
/**
* Only used for the demo instance
*/
case Demo = 'demo';
/**
* The included updates period of
* the license is over.
*/
case Inactive = 'inactive';
/**
* The installation has an old
* license (v1, v2, v3)
*/
case Legacy = 'legacy';
/**
* The installation has no license or
* the license cannot be validated
*/
case Missing = 'missing';
/**
* Checks if the license can be saved when it
* was entered in the activation dialog;
* renewable licenses are accepted as well
* to allow renewal from the Panel
*/
public function activatable(): bool
{
return match ($this) {
static::Active,
static::Inactive,
static::Legacy => true,
default => false
};
}
/**
* Returns the dialog according to the status
*/
public function dialog(): string
{
return match ($this) {
static::Missing => 'registration',
default => 'license'
};
}
/**
* Returns the icon according to the status.
* The icon is used for the system view and
* in the license dialog.
*/
public function icon(): string
{
return match ($this) {
static::Missing => 'key',
static::Legacy => 'alert',
static::Inactive => 'clock',
static::Active => 'check',
static::Demo => 'preview',
};
}
/**
* The info text is shown in the license dialog
* in the status row.
*/
public function info(string|null $end = null): string
{
return I18n::template('license.status.' . $this->value . '.info', ['date' => $end]);
}
/**
* Label for the system view
*/
public function label(): string
{
return I18n::translate('license.status.' . $this->value . '.label');
}
/**
* Checks if the license can be renewed
* The license dialog will show the renew
* button in this case and redirect to the hub
*/
public function renewable(): bool
{
return match ($this) {
static::Demo,
static::Active => false,
default => true
};
}
/**
* Returns the theme according to the status
* The theme is used for the label in the system
* view and the status icon in the license dialog.
*/
public function theme(): string
{
return match ($this) {
static::Missing => 'love',
static::Legacy => 'negative',
static::Inactive => 'notice',
static::Active => 'positive',
static::Demo => 'notice',
};
}
/**
* Returns the status as string value
*/
public function value(): string
{
return $this->value;
}
}