Plugin
Package | engine |
---|---|
Inheritance | abstract class Plugin » LsObject |
Since | 1.0 |
Source Code | /engine/classes/Plugin.class.php |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
aDelegates | array | Массив делегатов плагина | Plugin |
aInherits | array | Массив наследуемых классов плагина | Plugin |
aTemplatePath | array | Путь к шаблонам с учетом наличия соответствующего skin`a | Plugin |
aTemplateWebPath | array | Web-адрес директорий шаблонов с учетом наличия соответствующего skin`a | Plugin |
Public Methods
Method | Description | Defined 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
Method | Description | Defined By |
---|---|---|
ExportSQL() | Транслирует на базу данных запросы из указанного файла | Plugin |
ExportSQLQuery() | Выполняет SQL | Plugin |
addEnumType() | Добавляет новый тип в поле enum(перечисление) | Plugin |
isFieldExists() | Проверяет наличие поля в таблице | Plugin |
isTableExists() | Проверяет наличие таблицы в БД | Plugin |
Property Details
Массив делегатов плагина
Массив наследуемых классов плагина
Путь к шаблонам с учетом наличия соответствующего skin`a
Web-адрес директорий шаблонов с учетом наличия соответствующего skin`a
Method Details
public bool Activate()
| ||
{return} | bool |
public function Activate() {
return true;
}
Метод активации плагина
public bool Deactivate()
| ||
{return} | bool |
public function Deactivate() {
return true;
}
Метод деактивации плагина
final public void Delegate()
|
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 перед инициализацией плагина
See Also
protected array ExportSQL(string $sFilePath)
| ||
$sFilePath | string | Полный путь до файла с SQL |
{return} | array |
protected function ExportSQL($sFilePath) {
return $this->Database_ExportSQL($sFilePath);
}
Транслирует на базу данных запросы из указанного файла
See Also
protected array ExportSQLQuery(string $sSql)
| ||
$sSql | string | Строка SQL запроса |
{return} | array |
protected function ExportSQLQuery($sSql) {
return $this->Database_ExportSQLQuery($sSql);
}
Выполняет SQL
See Also
final public array GetDelegates()
| ||
{return} | array |
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;
}
Возвращает массив делегатов
final public array GetInherits()
| ||
{return} | array |
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;
}
Возвращает массив наследников
public static string GetPath(string $sName)
| ||
$sName | string | |
{return} | string |
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.'/';
}
Возвращает полный серверный путь до плагина
public static string|null GetTemplatePath(string $sName)
| ||
$sName | string | Название плагина или его класс |
{return} | string|null |
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'
public static string GetTemplateWebPath(string $sName)
| ||
$sName | string | Название плагина или его класс |
{return} | string |
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'
public string|null GetVersion()
| ||
{return} | string|null |
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;
}
Возвращает версию плагина
public static string GetWebPath(string $sName)
| ||
$sName | string | |
{return} | string |
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-адрес до плагина
public void Init()
|
public function Init() {
}
Метод инициализации плагина
public array MakeDelegateParams($sObjectName $sObjectName, $sFrom $sFrom, $sTo $sTo)
| ||
$sObjectName | $sObjectName | Название типа объекта делегата |
$sFrom | $sFrom | Что делегируем |
$sTo | $sTo | Что делегирует |
{return} | array |
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);
}
Преобразовывает краткую форму имен делегатов в полную
See Also
public static bool SetTemplatePath(string $sName, string $sTemplatePath)
| ||
$sName | string | Имя плагина |
$sTemplatePath | string | Серверный путь до шаблона |
{return} | bool |
static public function SetTemplatePath($sName,$sTemplatePath) {
if(!is_dir($sTemplatePath)) return false;
self::$aTemplatePath[$sName]=$sTemplatePath;
return true;
}
Устанавливает значение серверного пути до шаблонов плагина
public static void SetTemplateWebPath(string $sName, string $sTemplatePath)
| ||
$sName | string | Имя плагина |
$sTemplatePath | string | Серверный путь до шаблона |
static public function SetTemplateWebPath($sName,$sTemplatePath) {
self::$aTemplateWebPath[$sName]=$sTemplatePath;
}
Устанавливает значение web-пути до шаблонов плагина
public mixed __call(string $sName, array $aArgs)
| ||
$sName | string | Имя метода |
$aArgs | array | Аргументы |
{return} | mixed |
public function __call($sName,$aArgs) {
return Engine::getInstance()->_CallModule($sName,$aArgs);
}
Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
See Also
protected void addEnumType(string $sTableName, string $sFieldName, string $sType)
| ||
$sTableName | string | Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя |
$sFieldName | string | Название поля в таблице |
$sType | string | Название типа |
protected function addEnumType($sTableName,$sFieldName,$sType) {
$this->Database_addEnumType($sTableName,$sFieldName,$sType);
}
Добавляет новый тип в поле enum(перечисление)
See Also
protected bool isFieldExists(string $sTableName, string $sFieldName)
| ||
$sTableName | string | Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя |
$sFieldName | string | Название поля в таблице |
{return} | bool |
protected function isFieldExists($sTableName,$sFieldName) {
return $this->Database_isFieldExists($sTableName,$sFieldName);
}
Проверяет наличие поля в таблице
See Also
protected bool isTableExists(string $sTableName)
| ||
$sTableName | string | Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
prefix_topic |
{return} | bool |
protected function isTableExists($sTableName) {
return $this->Database_isTableExists($sTableName);
}
Проверяет наличие таблицы в БД