Plugin

Package engine
Inheritance abstract class Plugin » LsObject
Since 1.0
Source Code /engine/classes/Plugin.class.php
Абстракция плагина, от которой наследуются все плагины Файл плагина должен находиться в каталоге /plugins/plgname/ и иметь название PluginPlgname.class.php

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
aDelegates array Массив делегатов плагина Plugin
aInherits array Массив наследуемых классов плагина Plugin
aTemplatePath array Путь к шаблонам с учетом наличия соответствующего skin`a Plugin
aTemplateWebPath array Web-адрес директорий шаблонов с учетом наличия соответствующего skin`a Plugin

Public Methods

Hide inherited methods

MethodDescriptionDefined By
Activate() Метод активации плагина Plugin
Deactivate() Метод деактивации плагина Plugin
Delegate() Передает информацию о делегатах в модуль ModulePlugin Plugin
GetDelegates() Возвращает массив делегатов Plugin
GetInherits() Возвращает массив наследников Plugin
GetPath() Возвращает полный серверный путь до плагина Plugin
GetTemplatePath() Возвращает правильный серверный путь к директории шаблонов с учетом текущего шаблона Plugin
GetTemplateWebPath() Возвращает правильный web-адрес директории шаблонов Plugin
GetVersion() Возвращает версию плагина Plugin
GetWebPath() Возвращает полный web-адрес до плагина Plugin
Init() Метод инициализации плагина Plugin
MakeDelegateParams() Преобразовывает краткую форму имен делегатов в полную Plugin
SetTemplatePath() Устанавливает значение серверного пути до шаблонов плагина Plugin
SetTemplateWebPath() Устанавливает значение web-пути до шаблонов плагина Plugin
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Plugin

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
ExportSQL() Транслирует на базу данных запросы из указанного файла Plugin
ExportSQLQuery() Выполняет SQL Plugin
addEnumType() Добавляет новый тип в поле enum(перечисление) Plugin
isFieldExists() Проверяет наличие поля в таблице Plugin
isTableExists() Проверяет наличие таблицы в БД Plugin

Property Details

aDelegates property
protected array $aDelegates;

Массив делегатов плагина

aInherits property
protected array $aInherits;

Массив наследуемых классов плагина

aTemplatePath property
protected static array $aTemplatePath;

Путь к шаблонам с учетом наличия соответствующего skin`a

aTemplateWebPath property
protected static array $aTemplateWebPath;

Web-адрес директорий шаблонов с учетом наличия соответствующего skin`a

Method Details

Activate() method
public bool Activate()
{return} bool
Source Code: /engine/classes/Plugin.class.php#157 (show)
public function Activate() {
    return 
true;
}

Метод активации плагина

Deactivate() method
public bool Deactivate()
{return} bool
Source Code: /engine/classes/Plugin.class.php#165 (show)
public function Deactivate() {
    return 
true;
}

Метод деактивации плагина

Delegate() method
final public void Delegate()
Source Code: /engine/classes/Plugin.class.php#62 (show)
final function Delegate() {
    
$aDelegates=$this->GetDelegates();
    foreach (
$aDelegates as $sObjectName=>$aParams) {
        foreach (
$aParams as $sFrom=>$sTo) {
            
$this->Plugin_Delegate($sObjectName,$sFrom,$sTo,get_class($this));
        }
    }

    
$aInherits=$this->GetInherits();
    foreach (
$aInherits as $sObjectName=>$aParams) {
        foreach (
$aParams as $sFrom=>$sTo) {
            
$this->Plugin_Inherit($sFrom,$sTo,get_class($this));
        }
    }
}

Передает информацию о делегатах в модуль ModulePlugin Вызывается Engine перед инициализацией плагина

ExportSQL() method
protected array ExportSQL(string $sFilePath)
$sFilePath string Полный путь до файла с SQL
{return} array
Source Code: /engine/classes/Plugin.class.php#175 (show)
protected function ExportSQL($sFilePath) {
    return 
$this->Database_ExportSQL($sFilePath);
}

Транслирует на базу данных запросы из указанного файла

ExportSQLQuery() method
protected array ExportSQLQuery(string $sSql)
$sSql string Строка SQL запроса
{return} array
Source Code: /engine/classes/Plugin.class.php#185 (show)
protected function ExportSQLQuery($sSql) {
    return 
$this->Database_ExportSQLQuery($sSql);
}

Выполняет SQL

GetDelegates() method
final public array GetDelegates()
{return} array
Source Code: /engine/classes/Plugin.class.php#105 (show)
final function GetDelegates() {
    
$aReturn=array();
    if(
is_array($this->aDelegates) and count($this->aDelegates)) {
        foreach (
$this->aDelegates as $sObjectName=>$aParams) {
            if(
is_array($aParams) and count($aParams)) {
                foreach (
$aParams as $sFrom=>$sTo) {
                    if (
is_int($sFrom)) {
                        
$sFrom=$sTo;
                        
$sTo=null;
                    }
                    list(
$sFrom,$sTo)=$this->MakeDelegateParams($sObjectName,$sFrom,$sTo);
                    
$aReturn[$sObjectName][$sFrom]=$sTo;
                }
            }
        }
    }
    return 
$aReturn;
}

Возвращает массив делегатов

GetInherits() method
final public array GetInherits()
{return} array
Source Code: /engine/classes/Plugin.class.php#82 (show)
final function GetInherits() {
    
$aReturn=array();
    if(
is_array($this->aInherits) and count($this->aInherits)) {
        foreach (
$this->aInherits as $sObjectName=>$aParams) {
            if(
is_array($aParams) and count($aParams)) {
                foreach (
$aParams as $sFrom=>$sTo) {
                    if (
is_int($sFrom)) {
                        
$sFrom=$sTo;
                        
$sTo=null;
                    }
                    list(
$sFrom,$sTo)=$this->MakeDelegateParams($sObjectName,$sFrom,$sTo);
                    
$aReturn[$sObjectName][$sFrom]=$sTo;
                }
            }
        }
    }
    return 
$aReturn;
}

Возвращает массив наследников

GetPath() method
public static string GetPath(string $sName)
$sName string
{return} string
Source Code: /engine/classes/Plugin.class.php#254 (show)
static public function GetPath($sName) {
    
$sName preg_match('/^Plugin([\w]+)(_[\w]+)?$/Ui',$sName,$aMatches)
        ? 
strtolower($aMatches[1])
        : 
strtolower($sName);

    return 
Config::Get('path.root.server').'/plugins/'.$sName.'/';
}

Возвращает полный серверный путь до плагина

GetTemplatePath() method
public static string|null GetTemplatePath(string $sName)
$sName string Название плагина или его класс
{return} string|null
Source Code: /engine/classes/Plugin.class.php#281 (show)
static public function GetTemplatePath($sName) {
    
$sName preg_match('/^Plugin([\w]+)(_[\w]+)?$/Ui',$sName,$aMatches)
        ? 
strtolower($aMatches[1])
        : 
strtolower($sName);
    if(!isset(
self::$aTemplatePath[$sName])) {
        
$aPaths=glob(Config::Get('path.root.server').'/plugins/'.$sName.'/templates/skin/*',GLOB_ONLYDIR);
        
$sTemplateName=($aPaths and in_array(Config::Get('view.skin'),array_map('basename',$aPaths)))
            ? 
Config::Get('view.skin')
            : 
'default';

        
$sDir=Config::Get('path.root.server')."/plugins/{$sName}/templates/skin/{$sTemplateName}/";
        
self::$aTemplatePath[$sName] = is_dir($sDir) ? $sDir null;
    }
    return 
self::$aTemplatePath[$sName];
}

Возвращает правильный серверный путь к директории шаблонов с учетом текущего шаблона Если пользователь использует шаблон которого нет в плагине, то возвращает путь до шабона плагина 'default'

GetTemplateWebPath() method
public static string GetTemplateWebPath(string $sName)
$sName string Название плагина или его класс
{return} string
Source Code: /engine/classes/Plugin.class.php#303 (show)
static public function GetTemplateWebPath($sName) {
    
$sName preg_match('/^Plugin([\w]+)(_[\w]+)?$/Ui',$sName,$aMatches)
        ? 
strtolower($aMatches[1])
        : 
strtolower($sName);
    if(!isset(
self::$aTemplateWebPath[$sName])) {
        
$aPaths=glob(Config::Get('path.root.server').'/plugins/'.$sName.'/templates/skin/*',GLOB_ONLYDIR);
        
$sTemplateName=($aPaths and in_array(Config::Get('view.skin'),array_map('basename',$aPaths)))
            ? 
Config::Get('view.skin')
            : 
'default';

        
self::$aTemplateWebPath[$sName]=Config::Get('path.root.web')."/plugins/{$sName}/templates/skin/{$sTemplateName}/";
    }
    return 
self::$aTemplateWebPath[$sName];
}

Возвращает правильный web-адрес директории шаблонов Если пользователь использует шаблон которого нет в плагине, то возвращает путь до шабона плагина 'default'

GetVersion() method
public string|null GetVersion()
{return} string|null
Source Code: /engine/classes/Plugin.class.php#229 (show)
public function GetVersion() {
    
preg_match('/^Plugin([\w]+)$/i',get_class($this),$aMatches);
    
$sPluginXML Config::Get('path.root.server').'/plugins/'.strtolower($aMatches[1]).'/'.ModulePlugin::PLUGIN_XML_FILE;
    if(
$oXml = @simplexml_load_file($sPluginXML)) {
        return (string)
$oXml->version;
    }
    return 
null;
}

Возвращает версию плагина

GetWebPath() method
public static string GetWebPath(string $sName)
$sName string
{return} string
Source Code: /engine/classes/Plugin.class.php#267 (show)
static public function GetWebPath($sName) {
    
$sName preg_match('/^Plugin([\w]+)(_[\w]+)?$/Ui',$sName,$aMatches)
        ? 
strtolower($aMatches[1])
        : 
strtolower($sName);

    return 
Config::Get('path.root.web').'/plugins/'.$sName.'/';
}

Возвращает полный web-адрес до плагина

Init() method
public void Init()
Source Code: /engine/classes/Plugin.class.php#55 (show)
public function Init() {
}

Метод инициализации плагина

MakeDelegateParams() method
public array MakeDelegateParams($sObjectName $sObjectName, $sFrom $sFrom, $sTo $sTo)
$sObjectName $sObjectName Название типа объекта делегата
$sFrom $sFrom Что делегируем
$sTo $sTo Что делегирует
{return} array
Source Code: /engine/classes/Plugin.class.php#132 (show)
public function MakeDelegateParams($sObjectName,$sFrom,$sTo) {
    
/**
     * Если не указан делегат TO, считаем, что делегатом является
     * одноименный объект текущего плагина
     */
    
if ($sObjectName=='template') {
        if(!
$sTo) {
            
$sTo self::GetTemplatePath(get_class($this)).$sFrom;
        } else {
            
$sTo=preg_replace("/^_/",$this->GetTemplatePath(get_class($this)),$sTo);
        }
    } else {
        if(!
$sTo) {
            
$sTo get_class($this).'_'.$sFrom;
        } else {
            
$sTo=preg_replace("/^_/",get_class($this).'_',$sTo);
        }
    }
    return array(
$sFrom,$sTo);
}

Преобразовывает краткую форму имен делегатов в полную

SetTemplatePath() method
public static bool SetTemplatePath(string $sName, string $sTemplatePath)
$sName string Имя плагина
$sTemplatePath string Серверный путь до шаблона
{return} bool
Source Code: /engine/classes/Plugin.class.php#324 (show)
static public function SetTemplatePath($sName,$sTemplatePath) {
    if(!
is_dir($sTemplatePath)) return false;
    
self::$aTemplatePath[$sName]=$sTemplatePath;
    return 
true;
}

Устанавливает значение серверного пути до шаблонов плагина

SetTemplateWebPath() method
public static void SetTemplateWebPath(string $sName, string $sTemplatePath)
$sName string Имя плагина
$sTemplatePath string Серверный путь до шаблона
Source Code: /engine/classes/Plugin.class.php#335 (show)
static public function SetTemplateWebPath($sName,$sTemplatePath) {
    
self::$aTemplateWebPath[$sName]=$sTemplatePath;
}

Устанавливает значение web-пути до шаблонов плагина

__call() method
public mixed __call(string $sName, array $aArgs)
$sName string Имя метода
$aArgs array Аргументы
{return} mixed
Source Code: /engine/classes/Plugin.class.php#245 (show)
public function __call($sName,$aArgs) {
    return 
Engine::getInstance()->_CallModule($sName,$aArgs);
}

Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля

addEnumType() method
protected void addEnumType(string $sTableName, string $sFieldName, string $sType)
$sTableName string Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
$sFieldName string Название поля в таблице
$sType string Название типа
Source Code: /engine/classes/Plugin.class.php#221 (show)
protected function addEnumType($sTableName,$sFieldName,$sType) {
    
$this->Database_addEnumType($sTableName,$sFieldName,$sType);
}

Добавляет новый тип в поле enum(перечисление)

isFieldExists() method
protected bool isFieldExists(string $sTableName, string $sFieldName)
$sTableName string Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
$sFieldName string Название поля в таблице
{return} bool
Source Code: /engine/classes/Plugin.class.php#209 (show)
protected function isFieldExists($sTableName,$sFieldName) {
    return 
$this->Database_isFieldExists($sTableName,$sFieldName);
}

Проверяет наличие поля в таблице

isTableExists() method
protected bool isTableExists(string $sTableName)
$sTableName string Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
prefix_topic
{return} bool
Source Code: /engine/classes/Plugin.class.php#198 (show)
protected function isTableExists($sTableName) {
    return 
$this->Database_isTableExists($sTableName);
}

Проверяет наличие таблицы в БД