2022-04-26 19:48:03 +00:00
|
|
|
|
<?php
|
|
|
|
|
namespace fox;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* Class fox\baseModule
|
|
|
|
|
*
|
|
|
|
|
* @copyright MX STAR LLC 2021
|
|
|
|
|
* @version 4.0.0
|
|
|
|
|
* @author Pavel Dmitriev
|
|
|
|
|
* @license GPLv3
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
class baseModule
|
|
|
|
|
{
|
|
|
|
|
|
2022-05-12 13:59:48 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated - moved into module.json
|
|
|
|
|
*/
|
2022-04-26 19:48:03 +00:00
|
|
|
|
public static $title = "Basic Module Template";
|
|
|
|
|
|
2022-05-12 13:59:48 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated - moved into module.json
|
|
|
|
|
*/
|
2022-04-26 19:48:03 +00:00
|
|
|
|
public static $desc = "Базовый класс модуля-заглушки";
|
|
|
|
|
|
2022-05-12 13:59:48 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated - moved into module.json
|
|
|
|
|
*/
|
2022-04-26 19:48:03 +00:00
|
|
|
|
public static $version = "0.0.0";
|
|
|
|
|
|
|
|
|
|
public static $type = "fake";
|
|
|
|
|
|
|
|
|
|
public static $allowAlias = false;
|
|
|
|
|
|
|
|
|
|
public static $authRequred = true;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* globalAccessKey:
|
|
|
|
|
* Уровень доступа, необходимый для вызова функций mainPage и ajaxPage.
|
|
|
|
|
* Если у пользователя нет необходимого уровня доступа для инстанса или all
|
|
|
|
|
* то селектор не передает запросы модулю.
|
|
|
|
|
*
|
|
|
|
|
* Если установлен в null - контроль доступа к модулю системой не осуществляется,
|
|
|
|
|
* а осуществляется только средствами самого модуля.
|
|
|
|
|
*
|
|
|
|
|
* isRoot - базовый ключ доступа, означающий запрет доступа для всех, кроме Администратора
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public static $globalAccessKey = "isRoot";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Features:
|
|
|
|
|
* - page - модуль отображает странцу web-интерфейса
|
|
|
|
|
* - auth - модуль предоставляет интерфейс аутентификации
|
|
|
|
|
* (Используется как модуль для coreAuth)
|
|
|
|
|
* - cron - модуль имеет функции обслуживания, которые нужно запускать по cron
|
|
|
|
|
* (Используется как модуль для coreCron)
|
|
|
|
|
* - log - модуль используется как интерфейс для coreLogger
|
|
|
|
|
*
|
|
|
|
|
* Эти фичи все или частично записываются в таблицу при установке модуля. Если фичи нет
|
|
|
|
|
* в таблице - она использоваться не будет. Запись в таблицу фич, которых нет в модуле
|
|
|
|
|
* недопустимо так как может привести к ошибкам в работе системы.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public static $features = [];
|
|
|
|
|
|
|
|
|
|
public static $menuItem = [];
|
|
|
|
|
|
|
|
|
|
public static $dependsOn = [];
|
|
|
|
|
|
|
|
|
|
public static $ACLRules = [];
|
|
|
|
|
|
|
|
|
|
public static $configKeys = [];
|
|
|
|
|
|
|
|
|
|
public static $languages = [];
|
|
|
|
|
|
|
|
|
|
public static $crontab=[];
|
|
|
|
|
|
|
|
|
|
public static function getModInfo(): moduleInfo
|
|
|
|
|
{
|
|
|
|
|
$mi = new moduleInfo();
|
|
|
|
|
$mi->name = $mi->namespace = substr(static::class, 0, strrpos(static::class, '\\'));
|
|
|
|
|
$mi->features = static::$features;
|
|
|
|
|
$mi->isTemplate = true;
|
|
|
|
|
$mi->singleInstanceOnly = ! static::$allowAlias;
|
|
|
|
|
$mi->authRequired = static::$authRequred;
|
|
|
|
|
$mi->ACLRules = static::$ACLRules;
|
|
|
|
|
$mi->menuItem = static::$menuItem;
|
|
|
|
|
$mi->globalAccessKey = static::$globalAccessKey;
|
|
|
|
|
$mi->languages = static::$languages;
|
|
|
|
|
$mi->configKeys=static::$configKeys;
|
|
|
|
|
|
|
|
|
|
return $mi;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function doMigration() {
|
|
|
|
|
if (static::$allowAlias) {
|
|
|
|
|
throw new \Exception("Embedded migration not allowed for multi-instance modules");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$modInfo = static::getModInfo();
|
|
|
|
|
$instances = $modInfo->getInstances();
|
|
|
|
|
|
|
|
|
|
foreach ($instances as $module) {
|
|
|
|
|
\fox\sql::doMigration($module);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|