HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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');
            }
        }
    }

}