2009-12-24 22:18:13 +02:00
|
|
|
|
<?php
|
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Абстракция плагина, от которой наследуются все плагины
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
abstract class Plugin extends Object {
|
2010-01-15 19:44:59 +02:00
|
|
|
|
/**
|
|
|
|
|
* Путь к шаблонам с учетом наличия соответствующего skin`a
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
static protected $aTemplatePath=array();
|
2010-01-31 17:20:16 +02:00
|
|
|
|
/**
|
|
|
|
|
* Web-адрес директорий шаблонов с учетом наличия соответствующего skin`a
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
static protected $aTemplateWebPath=array();
|
2010-01-15 19:44:59 +02:00
|
|
|
|
/**
|
|
|
|
|
* Массив делегатов плагина
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
2010-01-12 21:02:29 +02:00
|
|
|
|
protected $aDelegates=array();
|
|
|
|
|
|
2009-12-24 22:18:13 +02:00
|
|
|
|
public function __construct() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Функция инициализации плагина
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public function Init() {
|
|
|
|
|
|
|
|
|
|
}
|
2010-01-12 21:02:29 +02:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Передает информацию о делегатах на Plugin-модуль
|
|
|
|
|
* Вызывается Engine перед инициализацией плагина
|
|
|
|
|
*/
|
|
|
|
|
final function Delegate() {
|
|
|
|
|
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) {
|
2010-01-14 17:45:47 +02:00
|
|
|
|
$this->Plugin_Delegate($sObjectName,$sFrom,$sTo,get_class($this));
|
2010-01-12 21:02:29 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает массив делегатов
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
final function GetDelegates() {
|
|
|
|
|
return $this->aDelegates;
|
|
|
|
|
}
|
|
|
|
|
|
2009-12-24 22:18:13 +02:00
|
|
|
|
/**
|
|
|
|
|
* Функция активации плагина
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public function Activate() {
|
2009-12-30 00:15:25 +02:00
|
|
|
|
return true;
|
2009-12-24 22:18:13 +02:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Функция деактивации плагина
|
|
|
|
|
*
|
|
|
|
|
*/
|
2009-12-30 00:15:25 +02:00
|
|
|
|
public function Deactivate() {
|
|
|
|
|
return true;
|
2009-12-24 22:18:13 +02:00
|
|
|
|
}
|
2009-12-31 00:27:54 +02:00
|
|
|
|
/**
|
|
|
|
|
* Транслирует на базу данных запросы из указанного файла
|
|
|
|
|
*
|
|
|
|
|
* @param string $sFilePath
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
protected function ExportSQL($sFilePath) {
|
|
|
|
|
$sFileQuery = @file_get_contents($sFilePath);
|
|
|
|
|
/**
|
|
|
|
|
* Замена префикса таблиц
|
|
|
|
|
*/
|
|
|
|
|
$sFileQuery = str_replace('prefix_', Config::Get('db.table.prefix'), $sFileQuery);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Массивы запросов и пустой контейнер для сбора ошибок
|
|
|
|
|
*/
|
|
|
|
|
$aErrors = array();
|
|
|
|
|
$aQuery=explode(';',$sFileQuery);
|
|
|
|
|
/**
|
|
|
|
|
* Выполняем запросы по очереди
|
|
|
|
|
*/
|
|
|
|
|
foreach($aQuery as $sQuery){
|
|
|
|
|
$sQuery = trim($sQuery);
|
|
|
|
|
/**
|
|
|
|
|
* Заменяем движек, если таковой указан в запросе
|
|
|
|
|
*/
|
|
|
|
|
if(Config::Get('db.tables.engine')!='InnoDB') $sQuery=str_ireplace('ENGINE=InnoDB', "ENGINE=".Config::Get('db.tables.engine'),$sQuery);
|
|
|
|
|
|
|
|
|
|
if($sQuery!='') {
|
|
|
|
|
$bResult=$this->Database_GetConnect()->query($sQuery);
|
|
|
|
|
if(!$bResult) $aErrors[] = mysql_error();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращаем результат выполнения, взависимости от количества ошибок
|
|
|
|
|
*/
|
|
|
|
|
if(count($aErrors)==0) {
|
|
|
|
|
return array('result'=>true,'errors'=>null);
|
|
|
|
|
}
|
|
|
|
|
return array('result'=>false,'errors'=>$aErrors);
|
|
|
|
|
}
|
2009-12-24 22:18:13 +02:00
|
|
|
|
|
|
|
|
|
public function __call($sName,$aArgs) {
|
|
|
|
|
return Engine::getInstance()->_CallModule($sName,$aArgs);
|
|
|
|
|
}
|
2010-01-15 19:44:59 +02:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает правильный путь к директории шаблонов
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
static public function GetTemplatePath($sName) {
|
|
|
|
|
$sName = preg_match('/^Plugin([\w]+)$/i',$sName,$aMatches)
|
|
|
|
|
? strtolower($aMatches[1])
|
2010-01-15 20:18:54 +02:00
|
|
|
|
: strtolower($sName);
|
2010-01-15 19:44:59 +02:00
|
|
|
|
if(!isset(self::$aTemplatePath[$sName])) {
|
|
|
|
|
$sTemplateName=in_array(Config::Get('view.skin'),array_map('basename',glob(Config::Get('path.root.server').'/plugins/'.$sName.'/templates/skin/*',GLOB_ONLYDIR)))
|
|
|
|
|
? 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];
|
|
|
|
|
}
|
2010-01-16 17:40:55 +02:00
|
|
|
|
|
2010-01-31 17:20:16 +02:00
|
|
|
|
/**
|
|
|
|
|
* Возвращает правильный web-адрес директории шаблонов
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
static public function GetTemplateWebPath($sName) {
|
|
|
|
|
$sName = preg_match('/^Plugin([\w]+)$/i',$sName,$aMatches)
|
|
|
|
|
? strtolower($aMatches[1])
|
|
|
|
|
: strtolower($sName);
|
|
|
|
|
if(!isset(self::$aTemplateWebPath[$sName])) {
|
|
|
|
|
$sTemplateName=in_array(Config::Get('view.skin'),array_map('basename',glob(Config::Get('path.root.server').'/plugins/'.$sName.'/templates/skin/*',GLOB_ONLYDIR)))
|
|
|
|
|
? Config::Get('view.skin')
|
|
|
|
|
: 'default';
|
|
|
|
|
|
|
|
|
|
self::$aTemplateWebPath[$sName]=Config::Get('path.root.web')."/plugins/{$sName}/templates/skin/{$sTemplateName}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return self::$aTemplateWebPath[$sName];
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-16 17:40:55 +02:00
|
|
|
|
/**
|
|
|
|
|
* Устанавливает значение пути до шаблонов плагина
|
|
|
|
|
*
|
|
|
|
|
* @param string $sName
|
|
|
|
|
* @param string $sTemplatePath
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
static public function SetTemplatePath($sName,$sTemplatePath) {
|
|
|
|
|
if(!is_dir($sTemplatePath)) return false;
|
|
|
|
|
self::$aTemplatePath[$sName]=$sTemplatePath;
|
|
|
|
|
}
|
2010-01-31 17:20:16 +02:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Устанавливает значение web-пути до шаблонов плагина
|
|
|
|
|
*
|
|
|
|
|
* @param string $sName
|
|
|
|
|
* @param string $sTemplatePath
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
static public function SetTemplateWebPath($sName,$sTemplatePath) {
|
|
|
|
|
self::$aTemplateWebPath[$sName]=$sTemplatePath;
|
|
|
|
|
}
|
2009-12-24 22:18:13 +02:00
|
|
|
|
}
|
|
|
|
|
?>
|