public function InitAction($aVars) { $oLang = $this->Lang_Dictionary(); $this->Viewer_Assign('oLang', $oLang); $oUser = $this->GetUser(); if ($oUser && $oUser->IsAdministrator() && Config::Get('plugin.' . $this->sPlugin . '.' . 'icon_menu')) { $sScript = Plugin::GetTemplateWebPath($this->sPlugin) . 'js/' . 'icon_menu.js'; $this->Viewer_AppendScript($sScript); } if (Router::GetAction() == 'admin' || Router::GetAction() == 'error') { return; } if (!$oUser) { if (Router::GetAction() == 'registration') { $aIp = admGetAllUserIp(); foreach ($aIp as $sIp) { if ($this->PluginAceadminpanel_Admin_IsBanIp($sIp)) { $this->Message_AddErrorSingle($this->Lang_Get('adm_banned2_text'), $this->Lang_Get('adm_denied_title')); return $this->UserBanned(null); } } } return; } if (defined('ADMIN_SITE_CLOSED') && ADMIN_SITE_CLOSED && !$oUser->IsAdministrator()) { $this->SiteClosed(); } if ($oUser->IsBannedByLogin() || $oUser->IsBannedByIp() && !$oUser->IsAdministrator()) { return $this->UserBanned($oUser); } }
/** * Meta hook * * @return void */ public function hook_meta() { $sAction = Router::GetAction(); $sUrl = E::ModuleSeopack()->ClearUrl(R::Url('path')); $oSeopack = E::ModuleSeopack()->GetSeopackByUrl($sUrl); E::ModuleViewer()->Assign('sCurrentUrl', $sUrl); if ($oSeopack) { E::ModuleViewer()->Assign('oSeopack', $oSeopack); } $sMetaDescriptionTemplate = Plugin::GetTemplateDir(__CLASS__) . 'tpls/meta/description/' . $sAction . '.tpl'; if (E::ModuleViewer()->TemplateExists($sMetaDescriptionTemplate)) { $sMetaDescription = E::ModuleViewer()->Fetch($sMetaDescriptionTemplate); if ($oSeopack && $oSeopack->getDescription()) { E::ModuleViewer()->Assign('sHtmlDescription', htmlspecialchars($oSeopack->getDescription())); } else { E::ModuleViewer()->Assign('sHtmlDescription', htmlspecialchars($sMetaDescription)); } } $sMetaKeywordsTemplate = Plugin::GetTemplateDir(__CLASS__) . 'tpls/meta/keywords/' . $sAction . '.tpl'; if (E::ModuleViewer()->TemplateExists($sMetaKeywordsTemplate)) { $sMetaKeywords = E::ModuleViewer()->Fetch($sMetaKeywordsTemplate); if ($oSeopack && $oSeopack->getKeywords()) { E::ModuleViewer()->Assign('sHtmlKeywords', htmlspecialchars($oSeopack->getKeywords())); } else { E::ModuleViewer()->Assign('sHtmlKeywords', htmlspecialchars($sMetaKeywords)); } } if ($oSeopack && $oSeopack->getTitle()) { E::ModuleViewer()->Assign('sHtmlTitle', htmlspecialchars($oSeopack->getTitle())); } }
public function Copyright() { if (Router::GetAction() != 'blogs' and Router::GetAction() != 'index' and Router::GetAction() != 'page') { return false; } return 'Спонсор плагина - <a href="http://catalognica.ru" target="_blank">catalognica.ru</a><br />'; }
public function Copyright() { if (Router::GetAction() != 'blogs') { return; } return '<a href="http://imonger.ru" target="_blank">Спонсор DPB - ЯТрейдер</a><br />'; }
public function Init() { if ($result = parent::Init()) { return $result; } $this->SetDefaultEvent('info'); $this->InitParams(); $this->aConfig = array_merge($this->aConfig, HelperPlugin::GetConfig()); $this->oUserCurrent = $this->PluginAceadminpanel_Admin_GetUserCurrent(); if (!$this->User_IsAuthorization() || !$this->oUserCurrent->isAdministrator()) { return $this->EventDenied(); } $this->oUserCurrent = $this->User_GetUserCurrent(); $this->Viewer_Assign('ROUTE_PAGE_ADMIN', ROUTE_PAGE_ADMIN); $this->Viewer_Assign('sModuleVersion', $this->PluginAceadminpanel_Admin_getVersion(true)); if (Config::Get('plugin.avalogs.admin_file') && Config::Get('plugin.avalogs.admin_enable')) { if (!$this->oLogs) { $this->oLogs = $this->Adminlogs_GetLogs(); } $this->oLogs->SetLogOptions('admin', array('file' => Config::Get('plugin.avalogs.admin_file'))); $this->aLogsMsg[] = 'user=>' . $this->oUserCurrent->GetLogin() . ', ip=>' . $_SERVER["REMOTE_ADDR"] . ', action=>' . Router::GetAction() . ', event=>' . Router::GetActionEvent() . ', path=>' . Router::GetPathWebCurrent(); } if (isset($_SERVER['HTTP_REFERER'])) { $this->sPageRef = $_SERVER['HTTP_REFERER']; } $this->PluginSetTemplate(Router::GetActionEvent()); $this->sMenuItemSelect = Router::GetActionEvent(); $this->sMenuSubItemSelect = Router::GetParam(0); $this->aPluginInfo = array('version' => HelperPlugin::GetConfig('version')); $this->PluginAppendStyle('admin.css'); $this->PluginAppendScript('admin.js'); }
public function InitAction() { if (Config::Get('general.close') and Config::Get('plugin.getlasttopics.enable_rss')) { $sUrl = @$_SERVER['REDIRECT_URL']; if (Router::GetAction() == 'login' and substr_count($sUrl, '/rss') > 0) { Router::Action('rss', 'login'); } } }
public function CopyrightLink() { /** * Выводим везде, кроме страницы списка блогов и списка всех комментов */ if (!(Router::GetAction() == 'blogs' or Router::GetAction() == 'comments')) { return '© Powered by <a href="http://livestreetcms.ru">LiveStreet CMS</a>'; } return ''; }
protected function EventError() { if (Router::GetAction() == 'admin') { //func_header_location(Config::Get('path.root.web') . '/admin/'); admHeaderLocation(Config::Get('path.root.web') . '/admin/'); exit; } else { return parent::EventError(); } }
public function SponsorLink() { /** * Выводим на странице списка блогов и списка всех комментов */ if (Router::GetAction() == 'blogs' or Router::GetAction() == 'comments') { return 'Спонсор релиза LiveStreet - <a href="http://radiorealty.ru" target="_blank">Портал недвижимости</a>'; } return ''; }
public function WriteActionCounter($aParams) { $sAction = Router::GetAction(); $sEvent = Router::GetActionEvent(); if (!$sEvent) { $sEvent = 'default'; } $oUser = $this->User_GetUserCurrent(); if ($oUser) { $this->PluginBotchecker_Botchecker_writeActionCounter($oUser, $sAction, $sEvent); } }
/** * Проверка ключа, в ответ браузеру выдается только сообщение "ok" или "no" */ public function CheckVerificationKey() { if (Router::GetAction() == 'error' and isset($_GET['livestreet_check_verification_key'])) { $sKey = trim((string) Config::Get('module.ls.verification_key')); if ($sKey and $_GET['livestreet_check_verification_key'] === $sKey) { echo 'ok'; exit; } echo 'no'; exit; } }
public function Exec() { $aPages = $this->PluginPage_Page_GetPages(array('pid' => Config::Get('block.pageslist.pid'), 'active' => 1)); //Для того, чтобы не допустить конфликта создаем локальный объект представления $oViewer = $this->Viewer_GetLocalViewer(); $sAction = strtolower(Router::GetAction()); $sParams = Router::GetParams(); $oViewer->Assign('aPages', $aPages); $oViewer->Assign('sAction', $sAction); $oViewer->Assign('sParams', $sParams); $sPagesList = $oViewer->Fetch('block.pageslist_content.tpl'); //Передаем данные уже в глобальный объект вида $this->Viewer_Assign('sPagesList', $sPagesList); }
public function CheckSearch($aVars) { if (!MYSEARCH_HOOK_ENABLE) { return; } if (Router::GetAction() == 'search') { if (getRequest('q') && isset($_SERVER["HTTP_REFERER"]) && preg_match('|/search/(\\w+)/|', $_SERVER["HTTP_REFERER"], $m)) { $sActionEvent = $m[1]; } else { $sActionEvent = Router::GetActionEvent(); } Router::Action('mysearch', $sActionEvent, Router::GetParams()); } }
/** * Логика инициализации * */ public function InitAction() { /** * Проверяем наличие директории install */ if (is_dir(rtrim(Config::Get('path.root.server'), '/') . '/install')) { $this->Message_AddErrorSingle($this->Lang_Get('install_directory_exists')); Router::Action('error'); } if (!$this->oUserCurrent and Config::Get('general.close') and Router::GetAction() != 'registration' and Router::GetAction() != 'login') { Router::Action('login'); } $this->Hook_Run('init_action'); }
public function Init() { $this->sCurrentEvent = Router::GetActionEvent(); if ($result = parent::Init()) { return $result; } if ($this->User_IsAuthorization()) { $this->oUserCurrent = $this->PluginAceadminpanel_Admin_GetUserCurrent(); } if (!$this->oUserCurrent or !$this->oUserCurrent->isAdministrator()) { return $this->EventDenied(); } if (!$this->oUserCurrent) { $this->oUserCurrent = $this->User_GetUserCurrent(); } $this->Viewer_Assign('ROUTE_PAGE_ADMIN', ROUTE_PAGE_ADMIN); $this->Viewer_Assign('sModuleVersion', $this->PluginAceadminpanel_Admin_getVersion(true)); $this->_InitParams(); $this->aConfig = array_merge($this->aConfig, HelperPlugin::GetConfig()); if (Config::Get('plugin.avalogs.admin_file') and Config::Get('plugin.avalogs.admin_enable')) { if (!$this->oLogs) { $this->oLogs = $this->Adminlogs_GetLogs(); } $this->oLogs->SetLogOptions('admin', array('file' => Config::Get('plugin.avalogs.admin_file'))); $this->aLogsMsg[] = 'user=>' . $this->oUserCurrent->GetLogin() . ', ip=>' . $_SERVER["REMOTE_ADDR"] . ', action=>' . Router::GetAction() . ', event=>' . Router::GetActionEvent() . ', path=>' . Router::GetPathWebCurrent(); } $this->sPageRef = ACE::Backward('url'); if (ACE::Backward('action') == Router::GetAction()) { $this->sFormAction = $this->sPageRef; } //$this->_PluginSetTemplate(Router::GetActionEvent()); $this->sMenuItemSelect = Router::GetActionEvent(); $this->sMenuSubItemSelect = Router::GetParam(0); $sVerion = HelperPlugin::GetConfig('version'); if (!$sVerion) { $sVerion = ACEADMINPANEL_VERSION . '.' . ACEADMINPANEL_VERSION_BUILD; } if (preg_match('|[a-z\\-]+|i', $sVerion, $m)) { $sVerion = str_replace($m[0], '', $sVerion) . $m[0]; } $this->aPluginInfo = array('version' => $sVerion); $sHtmlTitle = $this->Lang_Get('adm_title') . ' v.' . $this->PluginAceadminpanel_Admin_getVersion(); //$this->Viewer_AddTemplateDir(HelperPlugin::GetTemplatePath(), true); $this->Viewer_AddHtmlTitle($sHtmlTitle); $this->Viewer_Assign('sAdminTitle', 'aceAdminPanel v.' . $this->PluginAceadminpanel_Admin_getVersion()); }
/** * Обработка хука инициализации экшенов */ public function InitAction() { /** * Проверяем наличие директории install */ if (is_dir(rtrim(Config::Get('path.root.server'), '/') . '/install')) { $this->Message_AddErrorSingle($this->Lang_Get('install_directory_exists')); Router::Action('error'); } /** * Проверка на закрытый режим */ $oUserCurrent = $this->User_GetUserCurrent(); if (!$oUserCurrent and Config::Get('general.close') and Router::GetAction() != 'registration' and Router::GetAction() != 'login') { Router::Action('login'); } /** * Запуск обработки сборщика */ $this->Ls_SenderRun(); }
/** * Hook Handler * Add banners to body footer * * @return mixed */ public function AddBannersInFooter($aVars) { if (in_array(Router::GetAction(), Config::Get('plugin.banneroid.banner_skip_actions'))) { return false; } $aBanners = $this->PluginBanneroid_Banner_GetFooterBanners($_SERVER['REQUEST_URI'], true); if (count($aBanners)) { //Inser banner block $this->Viewer_Assign("aBanners", $aBanners); $this->Viewer_Assign('sBannersPath', Config::Get("plugin.banneroid.images_dir")); return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__) . 'footer.banneroid.tpl'); } }
/** * Анализируем правила и наборы массивов * получаем окончательные списки блоков */ protected function BuildBlocks() { $sAction = strtolower(Router::GetAction()); $sEvent = strtolower(Router::GetActionEvent()); foreach ($this->aBlockRules as $sName => $aRule) { $bUse = false; /** * Если в правиле не указан список блоков, нам такое не нужно */ if (!array_key_exists('blocks', $aRule)) { continue; } /** * Если не задан action для исполнения и нет ни одного шаблона path, * или текущий не входит в перечисленные в правиле * то выбираем следующее правило */ if (!array_key_exists('action', $aRule) && !array_key_exists('path', $aRule)) { continue; } if (isset($aRule['action'])) { if (in_array($sAction, (array) $aRule['action'])) { $bUse = true; } if (array_key_exists($sAction, (array) $aRule['action'])) { /** * Если задан список event`ов и текущий в него не входит, * переходи к следующему действию. */ foreach ((array) $aRule['action'][$sAction] as $sEventPreg) { if (substr($sEventPreg, 0, 1) != '/') { /** * значит это название event`a */ if ($sEvent == $sEventPreg) { $bUse = true; break; } } else { /** * это регулярное выражение */ if (preg_match($sEventPreg, $sEvent)) { $bUse = true; break; } } } } } /** * Если не найдено совпадение по паре Action/Event, * переходим к поиску по regexp путей. */ if (!$bUse && isset($aRule['path'])) { $sPath = rtrim(Router::GetPathWebCurrent(), "/"); /** * Проверяем последовательно каждый regexp */ foreach ((array) $aRule['path'] as $sRulePath) { $sPattern = "~" . str_replace(array('/', '*'), array('\\/', '[\\w\\-]+'), $sRulePath) . "~"; if (preg_match($sPattern, $sPath)) { $bUse = true; break 1; } } } if ($bUse) { /** * Если задан режим очистки блоков, сначала чистим старые блоки */ if (isset($aRule['clear'])) { switch (true) { /** * Если установлен в true, значит очищаем все */ case $aRule['clear'] === true: $this->ClearBlocksAll(); break; case is_string($aRule['clear']): $this->ClearBlocks($aRule['clear']); break; case is_array($aRule['clear']): foreach ($aRule['clear'] as $sGroup) { $this->ClearBlocks($sGroup); } break; } } /** * Добавляем все блоки, указанные в параметре blocks */ foreach ($aRule['blocks'] as $sGroup => $aBlocks) { foreach ((array) $aBlocks as $sName => $aParams) { /** * Если название блока указывается в параметрах */ if (is_int($sName)) { if (is_array($aParams)) { $sName = $aParams['block']; } } /** * Если $aParams не являются массивом, значит передано только имя блока */ if (!is_array($aParams)) { $this->AddBlock($sGroup, $aParams); } else { $this->AddBlock($sGroup, $sName, isset($aParams['params']) ? $aParams['params'] : array(), isset($aParams['priority']) ? $aParams['priority'] : 5); } } } } } return true; }
public function Display($sTemplate) { // ajax-запросы нас не интересуют ? if (!$this->sResponseAjax) { if ($sTemplate) { $sTemplate = ACE::FilePath($this->Plugin_GetDelegate('template', $sTemplate), '/'); if (!$this->TemplateExists($sTemplate)) { if (dirname($sTemplate) == '.') { if (strpos($sClass = Router::GetActionClass(), 'Plugin') === 0) { $sTemplate = HelperPlugin::GetPluginSkinPath($sClass) . 'actions/Action' . ucfirst(Router::GetAction()) . '/' . $sTemplate; } } $sTemplate = $this->_getRealTeplate($sTemplate); } $sPathRoot = ACE::FilePath(Config::Get('path.root.server'), '/'); if ($this->bAddPluginDirs and strpos($sTemplate, $sPathRoot) === 0 and is_file($sTemplate)) { // добавляем пути к шаблонам $sPath = dirname($sTemplate); if ($sPath and $sPath != '.') { $this->AddTemplateDir($sPath, true); if (basename(dirname($sPath)) == 'actions') { $this->AddTemplateDir(dirname(dirname($sPath)), true); } } } } } $this->_initTplHooks(); return parent::Display($sTemplate); }
/** * Загружает виджеты, указанные в правилах * * @return mixed */ protected function _loadWidgetsList() { $aResult = parent::_loadWidgetsList(); // добавляем LS-блоки по старым правилам, если они есть $aBlockRules = Config::Get('block'); if ($aBlockRules) { $sAction = strtolower(Router::GetAction()); $sEvent = strtolower(Router::GetActionEvent()); $sEventName = strtolower(Router::GetActionEventName()); foreach ($aBlockRules as $aRule) { $bUse = false; // * Если в правиле не указан список блоков, нам такое не нужно if (!array_key_exists('blocks', $aRule)) { continue; } /* * Если не задан action для исполнения и нет ни одного шаблона path, * или текущий не входит в перечисленные в правиле * то выбираем следующее правило */ if (!array_key_exists('action', $aRule) && !array_key_exists('path', $aRule)) { continue; } if (isset($aRule['action'])) { if (in_array($sAction, (array) $aRule['action'])) { $bUse = true; } if (array_key_exists($sAction, (array) $aRule['action'])) { /** * Если задан список event`ов и текущий в него не входит, * переходи к следующему действию. */ foreach ((array) $aRule['action'][$sAction] as $sEventPreg) { if (substr($sEventPreg, 0, 1) == '/') { // * Это регулярное выражение if (preg_match($sEventPreg, $sEvent)) { $bUse = true; break; } } elseif (substr($sEventPreg, 0, 1) == '{') { // * Это имя event'a (именованный евент, если его нет, то совпадает с именем метода евента в экшене) if (trim($sEventPreg, '{}') == $sEventName) { $bUse = true; break; } } else { // * Это название event`a if ($sEvent == $sEventPreg) { $bUse = true; break; } } } } } // * Если не найдено совпадение по паре Action/Event, то переходим к поиску по regexp путей. if (!$bUse && isset($aRule['path'])) { $sPath = rtrim(Router::GetPathWebCurrent(), "/"); // * Проверяем последовательно каждый regexp foreach ((array) $aRule['path'] as $sRulePath) { $sPattern = "~" . str_replace(array('/', '*'), array('\\/', '[\\w\\-]+'), $sRulePath) . "~"; if (preg_match($sPattern, $sPath)) { $bUse = true; break 1; } } } if ($bUse) { // * Если задан режим очистки блоков, сначала чистим старые блоки if (isset($aRule['clear'])) { switch (true) { // * Если установлен в true, значит очищаем все case $aRule['clear'] === true: //$this->ClearBlocksAll(); $aResult = array(); break; case is_string($aRule['clear']): //$this->ClearBlocks($aRule['clear']); foreach ($aResult as $sId => $oWidget) { if ($oWidget->GetGroup() == $aRule['clear']) { unset($aResult[$sId]); } } break; case is_array($aRule['clear']): /* foreach ($aRule['clear'] as $sGroup) { $this->ClearBlocks($sGroup); } */ foreach ($aResult as $sId => $oWidget) { if (in_array($oWidget->GetGroup(), $aRule['clear'])) { unset($aResult[$sId]); } } break; } } // * Добавляем все блоки, указанные в параметре blocks foreach ($aRule['blocks'] as $sGroup => $aBlocks) { foreach ((array) $aBlocks as $sName => $aParams) { // * Если название блока указывается в параметрах if (is_int($sName)) { if (is_array($aParams)) { $sName = $aParams['block']; } } // * Если $aParams не являются массивом, значит передано только имя блока if (!is_array($aParams)) { $sName = $aParams; $aParams = array(); $nPriority = isset($aParams['priority']) ? $aParams['priority'] : 5; } else { $nPriority = isset($aParams['priority']) ? $aParams['priority'] : 5; $aParams = isset($aParams['params']) ? $aParams['params'] : array(); } $aWidgetData = array('name' => $sName, 'group' => $sGroup, 'priority' => $nPriority, 'params' => $aParams); $oWidget = $this->MakeWidget($aWidgetData); $aResult[$oWidget->getId()] = $oWidget; } } } } } return $aResult; }
public function InitAction() { $oLang = $this->Lang_Dictionary(); $this->Viewer_Assign('oLang', $oLang); $this->Viewer_Assign('MSIE6', ACE::MSIE6()); $this->Viewer_Assign('WEB_ADMIN_SKIN', ACE::MSIE6()); $oUser = $this->_getUser(); $this->_checkPluginAction(); $sScript = Config::Get('path.admin.skin') . '/assets/js/' . 'ace-admin.js'; $this->Viewer_AppendScript($sScript); if (Router::GetAction() == 'admin' or Router::GetAction() == 'error') { return; } if (!$oUser) { if (Router::GetAction() == 'registration') { $aIp = ACE::GetAllUserIp(); foreach ($aIp as $sIp) { if ($this->PluginAceadminpanel_Admin_IsBanIp($sIp)) { $this->Message_AddErrorSingle($this->Lang_Get('adm_banned2_text'), $this->Lang_Get('adm_denied_title')); return $this->_userBanned(null); } } } return; } if (defined('ADMIN_SITE_CLOSED') and ADMIN_SITE_CLOSED and !$oUser->IsAdministrator()) { $this->SiteClosed(); } if ($oUser->IsBannedByLogin() || ($oUser->IsBannedByIp() and !$oUser->IsAdministrator())) { return $this->_UserBanned($oUser); } }
/** * Получить путь (полное имя файла) к шаблону акшена * * @param string $sFile * @return string */ public static function GetTemplateActionPath($sFile = '') { $aClassElements = self::ClassNameExplode(Router::GetActionClass()); if (isset($aClassElements['Action'])) { $sAction = $aClassElements['Action']; } else { $sAction = Router::GetAction(); } return self::GetTemplatePath('actions/Action' . ucfirst($sAction) . '/' . $sFile); }
*/ require_once $sPathToFramework . '/config/loader.php'; /** * Определяем дополнительные параметры роутинга */ $aRouterParams = array('callback_after_parse_url' => array(function () { /** * Логика по ЧПУ топиков * Если URL соответствует шаблону ЧПУ топика, перенаправляем обработку на экшен/евент /blog/_show_topic_url/ * Через свои параметры конфига передаем исходный URL * Суть обработки _show_topic_url в том, чтобы определить ID топика и корректность его URL, если он некорректен, то произвести его корректировку через внешний редирект на правильный URL * Если удалось определить топик и URL корректный, то происходит внутренний редирект на стандартный евент отображения топика по ID (/blog/12345.html) */ $sUrlRequest = ''; if (Router::GetAction()) { $sUrlRequest .= Router::GetAction(); } if (Router::GetActionEvent()) { $sUrlRequest .= '/' . Router::GetActionEvent(); } if (Router::GetParams()) { $sUrlRequest .= '/' . join('/', Router::GetParams()); } /** * Функция для формирования регулярного выражения по маске URL топика * * @param string $sUrl * @return string */ $funcMakePreg = function ($sUrl) { $sUrl = preg_quote(trim($sUrl, '/ '));
/** * Восстановление сохраненного скина, чтобы сторонние плагины могли создать свою собственную админику * * @param $aEvents */ static function RestoreAdminSkin($aEvents) { if (Config::Get('saved')) { if ($aEvents and !is_array($aEvents)) { $aEvents = array_map('trim', explode(',', $aEvents)); } else { $aEvents = (array) $aEvents; } if (Router::GetAction() == 'admin' and (!$aEvents or in_array(Router::GetActionEvent(), $aEvents))) { if (Config::Get('saved.view.skin')) { Config::Set('view.skin', Config::Get('saved.view.skin')); } if (Config::Get('saved.path.smarty.template')) { Config::Set('path.smarty.template', Config::Get('saved.path.smarty.template')); } if (Config::Get('saved.path.static.skin')) { Config::Set('path.static.skin', Config::Get('saved.path.static.skin')); } } } }