chimera-mark2-core-release/core/fox/baseModule.php

104 lines
3.7 KiB
PHP
Raw Normal View History

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
{
public static $title = "Basic Module Template";
public static $desc = "Базовый класс модуля-заглушки";
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->title = static::$title;
$mi->modVersion = static::$version;
$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);
}
}
}