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

114 lines
3.8 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace fox;
/**
*
* Class fox\baseModule
*
* @copyright MX STAR LLC 2021
* @version 4.0.0
* @author Pavel Dmitriev
* @license GPLv3
*
*/
class baseModule
{
/**
* @deprecated - moved into module.json
*/
public static $title = "Basic Module Template";
/**
* @deprecated - moved into module.json
*/
public static $desc = "Базовый класс модуля-заглушки";
/**
* @deprecated - moved into module.json
*/
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 $themes=[];
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;
$mi->themes=static::$themes;
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);
}
}
}