本文整理汇总了PHP中E::ModulePlugin方法的典型用法代码示例。如果您正苦于以下问题:PHP E::ModulePlugin方法的具体用法?PHP E::ModulePlugin怎么用?PHP E::ModulePlugin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类E
的用法示例。
在下文中一共展示了E::ModulePlugin方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: smarty_function_widget_template
/**
* Plugin for Smarty
*
* @param array $aParams
* @param Smarty_Internal_Template $oSmartyTemplate
*
* @return string|null
*/
function smarty_function_widget_template($aParams, $oSmartyTemplate)
{
if (!isset($aParams['name'])) {
trigger_error('Parameter "name" does not define in {widget ...} function', E_USER_WARNING);
return null;
}
$sWidgetName = $aParams['name'];
$aWidgetParams = isset($aParams['params']) ? $aParams['params'] : array();
$oEngine = Engine::getInstance();
// Проверяем делигирование
$sTemplate = E::ModulePlugin()->GetDelegate('template', $sWidgetName);
if ($sTemplate) {
if ($aWidgetParams) {
foreach ($aWidgetParams as $sKey => $sVal) {
$oSmartyTemplate->assign($sKey, $sVal);
}
if (!isset($aWidgetParams['params'])) {
/* LS-compatible */
$oSmartyTemplate->assign('params', $aWidgetParams);
}
$oSmartyTemplate->assign('aWidgetParams', $aWidgetParams);
}
$sResult = $oSmartyTemplate->fetch($sTemplate);
} else {
$sResult = null;
}
return $sResult;
}
示例2: Delegate
/**
* Передает информацию о делегатах в модуль ModulePlugin
* Вызывается Engine перед инициализацией плагина
*
* @see Engine::LoadPlugins
*/
final function Delegate()
{
$aDelegates = $this->GetDelegates();
foreach ($aDelegates as $sObjectName => $aParams) {
foreach ($aParams as $sFrom => $sTo) {
E::ModulePlugin()->Delegate($sObjectName, $sFrom, $sTo, get_class($this));
}
}
$aInherits = $this->GetInherits();
foreach ($aInherits as $aParams) {
foreach ($aParams as $sFrom => $sTo) {
E::ModulePlugin()->Inherit($sFrom, $sTo, get_class($this));
}
}
}
示例3: smarty_function_include_once
/**
* @param array $aParams
* @param Smarty_Internal_Template $oSmartyTemplate
*
* @return string|null;
*/
function smarty_function_include_once($aParams, $oSmartyTemplate)
{
if (!array_key_exists('file', $aParams)) {
trigger_error('include_once: missing "name" parameter', E_USER_WARNING);
return null;
}
$sTemplate = E::ModulePlugin()->GetDelegate('template', $aParams['file']);
$aIncluded = (array) $oSmartyTemplate->smarty->getTemplateVars('_included_files');
if (!in_array($sTemplate, $aIncluded)) {
unset($aParams['file']);
if ($aParams) {
$oSmartyTemplate->smarty->assign($aParams);
}
$sResult = $oSmartyTemplate->smarty->fetch($sTemplate);
$oSmartyTemplate->smarty->append('_included_files', $sTemplate);
} else {
$sResult = '';
}
return $sResult;
}
示例4: smarty_function_widget_template
/**
* Plugin for Smarty
*
* @param array $aParams
* @param Smarty_Internal_Template $oSmartyTemplate
*
* @return string|null
*/
function smarty_function_widget_template($aParams, $oSmartyTemplate)
{
if (!isset($aParams['name'])) {
trigger_error('Parameter "name" does not define in {widget ...} function', E_USER_WARNING);
return null;
}
$sWidgetName = $aParams['name'];
$sWidgetTemplate = !empty($aParams['template']) ? $aParams['template'] : $sWidgetName;
$aWidgetParams = isset($aParams['params']) ? array_merge($aParams['params'], $aParams) : $aParams;
// Проверяем делигирование
$sTemplate = E::ModulePlugin()->GetDelegate('template', $sWidgetTemplate);
if ($sTemplate) {
if ($aWidgetParams) {
$oSmartyTemplate->smarty->assign($aWidgetParams);
$oSmartyTemplate->smarty->assign('aWidgetParams', $aWidgetParams);
/* LS-compatible */
$oSmartyTemplate->smarty->assign('params', $aWidgetParams);
}
$sResult = $oSmartyTemplate->smarty->fetch($sTemplate);
} else {
$sResult = null;
}
return $sResult;
}
示例5: FetchWidget
/**
* Возвращает отрендеренный шаблон виджета
*
* @param string $sTemplate - Шаблон для рендеринга
* @param array $aVars - Переменные для локального рендеринга
* @param array $aOptions - Опции рендеринга
*
* @return string
*/
public function FetchWidget($sTemplate, $aVars = array(), $aOptions = array())
{
// * Проверяем наличие делегата
$sDelegateTemplate = E::ModulePlugin()->GetDelegate('template', $sTemplate);
$sRenderTemplate = '';
if ($sDelegateTemplate == $sTemplate && !$this->TemplateExists($sTemplate)) {
$sWidgetTemplate = 'widgets/widget.' . $sTemplate;
$sWidgetTemplate = E::ModulePlugin()->GetDelegate('template', $sWidgetTemplate);
if ($sTemplatePath = $this->TemplateExists($sWidgetTemplate)) {
$sRenderTemplate = $sTemplatePath;
}
if (!$sRenderTemplate) {
// * LS-compatible *//
$sWidgetTemplate = 'blocks/block.' . $sTemplate;
$sWidgetTemplate = E::ModulePlugin()->GetDelegate('template', $sWidgetTemplate);
if ($sTemplatePath = $this->TemplateExists($sWidgetTemplate)) {
$sRenderTemplate = $sTemplatePath;
}
}
if (!$sRenderTemplate) {
$sRenderTemplate = $sWidgetTemplate;
}
}
if (!$sRenderTemplate) {
$sRenderTemplate = $sDelegateTemplate;
}
return $this->Fetch($sRenderTemplate, $aVars, $aOptions);
}
示例6: populate
/**
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
*/
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->name = E::ModulePlugin()->GetDelegate('template', $source->name);
parent::populate($source, $_template);
}
示例7: smarty_function_widget_exec
/**
* Plugin for Smarty
*
* @param array $aParams
* @param Smarty_Internal_Template $oSmartyTemplate
*
* @return string|null
*/
function smarty_function_widget_exec($aParams, $oSmartyTemplate)
{
if (!isset($aParams['name'])) {
trigger_error('Parameter "name" does not define in {widget ...} function', E_USER_WARNING);
return null;
}
$sWidgetName = $aParams['name'];
$sPlugin = !empty($aParams['plugin']) ? $aParams['plugin'] : '';
$aWidgetParams = isset($aParams['params']) ? array_merge($aParams['params'], $aParams) : $aParams;
$sWidget = ucfirst(basename($sWidgetName));
$sTemplate = '';
$sDelegatedClass = E::ModulePlugin()->GetDelegate('widget', $sWidget);
if ($sDelegatedClass == $sWidget) {
// Пробуем получить делегата по старинке, для совместимости с LS
// * LS-compatible * //
$sDelegatedClass = E::ModulePlugin()->GetDelegate('block', $sWidget);
}
// Если делегатов нет, то определаем класс виджета
if ($sDelegatedClass == $sWidget) {
// Проверяем наличие класса виджета штатными средствами
$sWidgetClass = E::ModuleWidget()->FileClassExists($sWidget, $sPlugin, true);
if ($sWidgetClass) {
// Проверяем делегирование найденного класса
$sWidgetClass = E::ModulePlugin()->GetDelegate('widget', $sWidgetClass);
if ($sPlugin) {
$sPluginTplDir = Plugin::GetTemplateDir($sPlugin);
$sTemplate = $sPluginTplDir . 'tpls/widgets/widget.' . $sWidgetName . '.tpl';
if ($sFound = F::File_Exists('/widgets/widget.' . $sWidgetName . '.tpl', array($sPluginTplDir . 'tpls/', $sPluginTplDir))) {
$sTemplate = $sFound;
} else {
// * LS-compatible * //
$sLsTemplate = Plugin::GetTemplateDir($sPlugin) . '/blocks/block.' . $sWidgetName . '.tpl';
if (F::File_Exists($sLsTemplate)) {
$sTemplate = $sLsTemplate;
}
}
} else {
$sTemplate = E::ModulePlugin()->GetDelegate('template', 'widgets/widget.' . $sWidgetName . '.tpl');
$sTemplate = F::File_Exists($sTemplate, $oSmartyTemplate->smarty->getTemplateDir());
if (!$sTemplate) {
// * LS-compatible * //
$sLsTemplate = E::ModulePlugin()->GetDelegate('template', 'blocks/block.' . $sWidgetName . '.tpl');
if (F::File_Exists($sLsTemplate, $oSmartyTemplate->smarty->getTemplateDir())) {
$sTemplate = $sLsTemplate;
}
}
}
} else {
// * LS-compatible * //
// Класс не найден
if ($sPlugin) {
// Если класс виджета не найден, то пытаемся по старинке задать класс "LS-блока"
$sWidgetClass = 'Plugin' . ucfirst($sPlugin) . '_Block' . $sWidget;
} else {
// Если класс виджета не найден, то пытаемся по старинке задать класс "LS-блока"
$sWidgetClass = 'Block' . $sWidget;
}
// Проверяем делигирование найденного класса
$sWidgetClass = E::ModulePlugin()->GetDelegate('block', $sWidgetClass);
if (!$sTemplate) {
$sLsTemplate = E::ModulePlugin()->GetDelegate('template', 'blocks/block.' . $sWidgetName . '.tpl');
if (F::File_Exists($sLsTemplate, $oSmartyTemplate->smarty->getTemplateDir())) {
$sTemplate = $sLsTemplate;
}
}
}
} else {
$sWidgetClass = $sDelegatedClass;
}
// * Подключаем необходимый обработчик
/** @var Widget $oWidgetHandler */
$oWidgetHandler = new $sWidgetClass($aWidgetParams);
// * Запускаем обработчик
$sResult = $oWidgetHandler->Exec();
// Если обработчик ничего не вернул, то рендерим шаблон
if (!$sResult && $sTemplate) {
if ($aWidgetParams) {
$oSmartyTemplate->smarty->assign('aWidgetParams', $aWidgetParams);
}
$sResult = $oSmartyTemplate->smarty->fetch($sTemplate);
}
return $sResult;
}
示例8: _eventPluginsAdd
protected function _eventPluginsAdd()
{
if ($aZipFile = $this->GetUploadedFile('plugin_arc')) {
if ($sPackFile = F::File_MoveUploadedFile($aZipFile['tmp_name'], $aZipFile['name'] . '/' . $aZipFile['name'])) {
E::ModulePlugin()->UnpackPlugin($sPackFile);
F::File_RemoveDir(dirname($sPackFile));
}
}
$this->_setTitle(E::ModuleLang()->Get('action.admin.plugins_title'));
$this->SetTemplateAction('site/plugins_add');
E::ModuleViewer()->Assign('sMode', 'add');
}
示例9: SetTemplateAction
/**
* Устанавливает какой шаблон выводить
*
* @param string $sTemplate Путь до шаблона относительно каталога шаблонов экшена
*/
protected function SetTemplateAction($sTemplate)
{
if (substr($sTemplate, -4) != '.tpl') {
$sTemplate = $sTemplate . '.tpl';
}
$sActionTemplatePath = $sTemplate;
if (!F::File_IsLocalDir($sActionTemplatePath)) {
// If not absolute path then defines real path of template
$aDelegates = E::ModulePlugin()->GetDelegationChain('action', $this->GetActionClass());
foreach ($aDelegates as $sAction) {
if (preg_match('/^(Plugin([\\w]+)_)?Action([\\w]+)$/i', $sAction, $aMatches)) {
// for LS-compatibility
$sActionNameOriginal = $aMatches[3];
// New-style action templates
$sActionName = strtolower($sActionNameOriginal);
$sTemplatePath = E::ModulePlugin()->GetDelegate('template', 'actions/' . $sActionName . '/action.' . $sActionName . '.' . $sTemplate);
$sActionTemplatePath = $sTemplatePath;
if (!empty($aMatches[1])) {
$aPluginTemplateDirs = array(Plugin::GetTemplateDir($sAction));
if (basename($aPluginTemplateDirs[0]) !== 'default') {
$aPluginTemplateDirs[] = dirname($aPluginTemplateDirs[0]) . '/default/';
}
if ($sTemplatePath = F::File_Exists('tpls/' . $sTemplatePath, $aPluginTemplateDirs)) {
$sActionTemplatePath = $sTemplatePath;
break;
}
if ($sTemplatePath = F::File_Exists($sTemplatePath, $aPluginTemplateDirs)) {
$sActionTemplatePath = $sTemplatePath;
break;
}
// LS-compatibility
if (E::ModulePlugin()->IsActivePlugin('ls')) {
$sLsTemplatePath = E::ModulePlugin()->GetDelegate('template', 'actions/Action' . ucfirst($sActionName) . '/' . $sTemplate);
if ($sTemplatePath = F::File_Exists($sLsTemplatePath, $aPluginTemplateDirs)) {
$sActionTemplatePath = $sTemplatePath;
break;
}
$sLsTemplatePath = E::ModulePlugin()->GetDelegate('template', 'actions/Action' . ucfirst($sActionNameOriginal) . '/' . $sTemplate);
if ($sTemplatePath = F::File_Exists($sLsTemplatePath, $aPluginTemplateDirs)) {
$sActionTemplatePath = $sTemplatePath;
break;
}
}
}
}
}
}
$this->sActionTemplate = $sActionTemplatePath;
}
示例10: Autoload
/**
* Автозагрузка классов
*
* @param string $sClassName Название класса
*
* @return bool
*/
public static function Autoload($sClassName)
{
if ($sParentClass = Config::Get('classes.alias.' . $sClassName)) {
return self::_classAlias($sParentClass, $sClassName);
}
if (self::_autoloadDefinedClass($sClassName)) {
return true;
}
if (class_exists('Engine', false) && E::GetStage() >= E::STAGE_INIT) {
$aInfo = E::GetClassInfo($sClassName, E::CI_CLASSPATH | E::CI_INHERIT);
if ($aInfo[E::CI_INHERIT]) {
$sInheritClass = $aInfo[E::CI_INHERIT];
$sParentClass = E::ModulePlugin()->GetParentInherit($sInheritClass);
return self::_classAlias($sParentClass, $sClassName);
} elseif ($aInfo[E::CI_CLASSPATH]) {
return self::_includeFile($aInfo[E::CI_CLASSPATH], $sClassName);
}
}
if (self::_autoloadPSR($sClassName)) {
return true;
}
return false;
}
示例11: LoadFromXmlFile
/**
* Load data from XML file
*
* @param string $sPluginXmlFile
* @param array $aData
*/
public function LoadFromXmlFile($sPluginXmlFile, $aData = null)
{
$sPluginXmlString = E::ModulePlugin()->GetPluginManifestFrom($sPluginXmlFile);
$this->LoadFromXml($sPluginXmlString, $aData);
}
示例12: ExecAction
/**
* Запускает на выполнение экшен
* Может запускаться рекурсивно если в одном экшене стоит переадресация на другой
*
*/
public function ExecAction()
{
$this->DefineActionClass();
// Hook before action
E::ModuleHook()->Run('action_before');
$sActionClass = $this->DefineActionClass();
// * Определяем наличие делегата экшена
if ($aChain = E::ModulePlugin()->GetDelegationChain('action', $sActionClass)) {
if (!empty($aChain)) {
$sActionClass = $aChain[0];
}
}
static::$sActionClass = $sActionClass;
if (!class_exists($sActionClass)) {
throw new Exception('Cannot load class "' . $sActionClass . '"');
}
$this->oAction = new $sActionClass(static::$sAction);
// * Инициализируем экшен
$sInitResult = $this->oAction->Init();
if ($sInitResult === 'next') {
$this->ExecAction();
} else {
// Если инициализация экшена прошла успешно и метод провеки доступа вернул
// положительный результат то запускаем запрошенный ивент на исполнение.
if ($sInitResult !== false && $this->oAction->Access(self::GetActionEvent()) !== false) {
$res = $this->oAction->ExecEvent();
static::$sActionEventName = $this->oAction->GetCurrentEventName();
$this->oAction->EventShutdown();
if ($res === 'next') {
$this->ExecAction();
}
} else {
if (!F::AjaxRequest()) {
static::$sAction = $this->aConfigRoute['config']['action_not_found'];
static::$sActionEvent = '404';
$this->ExecAction();
}
}
}
// Hook after action
E::ModuleHook()->Run('action_after');
}
示例13: ExecAction
/**
* Запускает на выполнение экшен
* Может запускаться рекурсивно если в одном экшене стоит переадресация на другой
*
*/
public function ExecAction()
{
$this->DefineActionClass();
// Hook before action
E::ModuleHook()->Run('action_before');
$sActionClass = $this->DefineActionClass();
// * Определяем наличие делегата экшена
if ($aChain = E::ModulePlugin()->GetDelegationChain('action', $sActionClass)) {
if (!empty($aChain)) {
$sActionClass = $aChain[0];
}
}
static::$sActionClass = $sActionClass;
if (!class_exists($sActionClass)) {
throw new Exception('Cannot load class "' . $sActionClass . '"');
}
$this->oAction = new $sActionClass(static::$sAction);
// * Инициализируем экшен
$sInitResult = $this->oAction->Init();
if ($sInitResult === 'next') {
$this->ExecAction();
} else {
// Если инициализация экшена прошла успешно,
// то запускаем запрошенный ивент на исполнение.
if ($sInitResult !== false) {
$xEventResult = $this->oAction->ExecEvent();
static::$sActionEventName = $this->oAction->GetCurrentEventName();
$this->oAction->EventShutdown();
if ($xEventResult === 'next') {
$this->ExecAction();
}
}
}
// Hook after action
E::ModuleHook()->Run('action_after');
}
示例14: GetCountItemsByJoinTable
/**
* Получить число сущностей по связанной таблице
*
* @param array $aJoinData Фильтр
* @param string $sEntityFull Название класса сущности
*
* @return int
*/
public function GetCountItemsByJoinTable($aJoinData = array(), $sEntityFull = null)
{
if (is_null($sEntityFull)) {
$sEntityFull = E::GetPluginPrefix($this) . 'Module' . E::GetModuleName($this) . '_Entity' . E::GetModuleName(get_class($this));
} elseif (!substr_count($sEntityFull, '_')) {
$sEntityFull = E::GetPluginPrefix($this) . 'Module' . E::GetModuleName($this) . '_Entity' . $sEntityFull;
}
// Если параметр #cache указан и пуст, значит игнорируем кэширование для запроса
if (array_key_exists('#cache', $aJoinData) && !$aJoinData['#cache']) {
$iCount = $this->oMapper->GetCountItemsByJoinTable($aJoinData, $sEntityFull);
} else {
$sEntityFullRoot = E::ModulePlugin()->GetRootDelegater('entity', $sEntityFull);
$sCacheKey = $sEntityFullRoot . '_count_items_by_join_table_' . serialize($aJoinData);
$aCacheTags = array();
$iCacheTime = 60 * 60 * 24;
// скорее лучше хранить в свойстве сущности, для возможности выборочного переопределения
// переопределяем из параметров
if (isset($aJoinData['#cache'][0])) {
$sCacheKey = $aJoinData['#cache'][0];
}
if (isset($aJoinData['#cache'][1])) {
$aCacheTags = $aJoinData['#cache'][1];
}
if (isset($aJoinData['#cache'][2])) {
$iCacheTime = $aJoinData['#cache'][2];
}
$aCacheTags[] = 'm2m_' . $aJoinData['#relation_key'] . $aJoinData['#by_key'] . $aJoinData['#by_value'];
if (false === ($iCount = E::ModuleCache()->Get($sCacheKey))) {
$iCount = $this->oMapper->GetCountItemsByJoinTable($aJoinData, $sEntityFull);
E::ModuleCache()->Set($iCount, $sCacheKey, $aCacheTags, $iCacheTime);
}
}
return $iCount;
}
示例15: GetId
/**
* @param bool $bEncode
*
* @return mixed|null
*/
public function GetId($bEncode = false)
{
$sResult = $this->getProp('id');
if ($bEncode) {
$sResult = E::ModulePlugin()->EncodeId($sResult);
}
return $sResult;
}