1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-01 05:55:02 +03:00
ifhub.club/engine/classes/ActionPlugin.class.php

88 lines
2.5 KiB
PHP
Raw Normal View History

<?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
*
---------------------------------------------------------
*/
require_once('Action.class.php');
/**
* Абстрактный класс экшена
*
*/
abstract class ActionPlugin extends Action {
/**
* Путь к шаблонам с учетом наличия соответствующего skin`a
*
* @var string
*/
2010-01-15 20:17:23 +02:00
protected $sTemplatePathPlugin=null;
2010-01-01 17:31:04 +02:00
/**
* Конструктор
*
* @param Engine $oEngine
* @param string $sAction
*/
public function __construct(Engine $oEngine, $sAction) {
parent::__construct($oEngine, $sAction);
$this->Viewer_Assign('sTemplatePathPlugin',rtrim($this->getTemplatePathPlugin(),'/'));
$this->Viewer_Assign('sTemplateWebPathPlugin',Plugin::GetTemplateWebPath(get_class($this)));
2010-01-01 17:31:04 +02:00
}
/**
* Возвращает путь к шаблонам плагина
*
* @return string
*/
public function getTemplatePathPlugin() {
if(is_null($this->sTemplatePathPlugin)) {
preg_match('/^Plugin([\w]+)_Action([\w]+)$/i',$this->GetActionClass(),$aMatches);
/**
* Проверяем в списке шаблонов
*/
2010-01-05 12:38:22 +02:00
$aMatches[1]=strtolower($aMatches[1]);
2010-04-17 18:12:10 +03:00
$aPaths=glob(Config::Get('path.root.server').'/plugins/'.$aMatches[1].'/templates/skin/*/actions/Action'.ucfirst($aMatches[2]),GLOB_ONLYDIR);
$sTemplateName=($aPaths and in_array(
Config::Get('view.skin'),
array_map(
create_function(
'$sPath',
2011-08-11 10:37:15 +03:00
'preg_match("/skin\/([\w\-]+)\/actions/i",$sPath,$aMatches); return $aMatches[1];'
),
2010-04-17 18:12:10 +03:00
$aPaths
)
2010-04-17 18:12:10 +03:00
))
? Config::Get('view.skin')
: 'default';
$sDir=Config::Get('path.root.server')."/plugins/{$aMatches[1]}/templates/skin/{$sTemplateName}/";
2010-01-15 20:17:23 +02:00
$this->sTemplatePathPlugin = is_dir($sDir) ? $sDir : null;
}
2010-01-15 20:17:23 +02:00
return $this->sTemplatePathPlugin;
}
/**
* Установить значение пути к директории шаблонов плагина
*
* @param string $sTemplatePath
* @return bool
*/
public function setTemplatePathPlugin($sTemplatePath) {
if(!is_dir($sTemplatePath)) return false;
$this->sTemplatePathPlugin = $sTemplatePath;
}
}
?>