File: /var/www/heifetz/heifetz-app/models/Modules/AbstractModule.php
<?php
declare(strict_types=1);
namespace Models\Modules;
use Core\Models\Ajax;
use Core\Models\CoreHelper;
use Core\Models\ModuleSetting;
use Models\Repositories\ModuleRepository;
abstract class AbstractModule
{
public static function getModuleName(): string
{
return static::NAME;
}
protected static function getConfigName(): string
{
return static::NAME . '_config';
}
public static function isActive(): bool
{
return ModuleSetting::isActive(static::getModuleName());
}
public static function isSet(): bool
{
return true;
}
public static function setup(array $settings): void
{
$moduleSettings = ModuleRepository::findOrCreateSetting(static::getModuleName());
$oldSettings = $moduleSettings->settings ?? null;
if (!empty($oldSettings)) {
$oldSettings = json_decode($oldSettings, true);
}
$settings = array_merge($oldSettings, $settings);
$moduleSettings->saveSettings($settings);
}
public static function getConfig(): array
{
return ModuleSetting::getConfig(static::getModuleName());
}
public static function ifNotActiveRedirect(string $link = '/', ?string $flushMessage = null, string $flushType = 'info'): void
{
if (!static::isActive()) {
if (IS_AJAX) {
Ajax::redirect($link, $flushMessage, $flushType);
} else {
CoreHelper::redirect($link, $flushMessage, $flushType);
}
}
}
public static function ifNeedSettingError(string $error = null): void
{
if (!static::isSet()) {
$error ??= 'Необходимо настроить модуль «' . static::DATA['title'] . '»';
if (IS_AJAX) {
Ajax::error($error);
} else {
CoreHelper::redirect('/', $error, 'warning');
}
}
}
}