static function Init() { if (!self::$bInit) { ACE_Config::Init(); self::$bInit = true; } }
/** * Удаление топика * * @return void */ protected function EventDelete() { $this->Security_ValidateSendForm(); // * Получаем номер топика из УРЛ и проверяем существует ли он $sTopicId = $this->GetParam(0); if (!($oTopic = $this->Topic_GetTopicById($sTopicId))) { return parent::EventNotFound(); } // * проверяем есть ли право на удаление топика if (!$this->ACL_IsAllowDeleteTopic($oTopic, $this->oUserCurrent)) { return parent::EventNotFound(); } $oBlog = $oTopic->getBlog(); // * Гарантировано удаляем топик и его зависимости $this->Hook_Run('topic_delete_before', array('oTopic' => $oTopic)); $this->PluginAceadminpanel_Admin_DelTopic($oTopic->GetId()); $this->Hook_Run('topic_delete_after', array('oTopic' => $oTopic)); // * Перенаправляем на страницу со списком топиков из блога этого топика //Router::Location($oTopic->getBlog()->getUrlFull()); if ($this->sBackUrl and $this->sBackUrl != $oTopic->getUrl()) { ACE::HeaderLocation($this->sBackUrl); } else { ACE::HeaderLocation($oTopic->getBlog()->getUrlFull()); } }
function _smarty_prefilter_tplhook_mark($sSource, Smarty_Internal_Template $oTemplate) { $sTemplateFile = ACE::FilePath($oTemplate->smarty->_current_file); $nLevel = intval(Config::Get('plugin.aceadminpanel.smarty.options.mark_template_lvl')); $sSource = ($nLevel ? "\n\n" : "") . "<!-- TEMPLATE BEGIN ({$nLevel} " . $sTemplateFile . ") -->" . ($nLevel ? "\n" : "") . $sSource . ($nLevel ? "\n" : "") . "<!-- TEMPLATE END ({$nLevel} " . $sTemplateFile . ") -->" . ($nLevel ? "\n" : ""); Config::Set('plugin.aceadminpanel.smarty.options.mark_template_lvl', ++$nLevel); return $sSource; }
static function Init() { if (!self::$bInit) { ACE_Config::Init(); spl_autoload_register(array('ACE', 'autoload')); self::$bInit = true; } }
public function EventExec() { $sFile = ''; $sSourceFile = implode('/', $this->GetParams()); $sSourceFile = str_replace('[skin]', HelperPlugin::GetTemplatePath(), $sSourceFile); $sSourceFile = str_replace('[admin_skin]', HelperPlugin::GetPluginPath('aceadminpanel') . '/templates/skin/' . $this->Admin_GetAdminSkin(), $sSourceFile); if (isset($_SERVER['QUERY_STRING']) and $_SERVER['QUERY_STRING']) { $sSourceFile .= '?' . $_SERVER['QUERY_STRING']; } $sCachePath = Config::Get('path.smarty.cache') . '/' . $this->Admin_GetAdminSkin(); $aFileParts = ACE::PathInfo($sSourceFile); if (strtolower($aFileParts['extension']) == 'css' and getRequest('from', '', 'get') == 'less') { $sSourceFile = $aFileParts['dirname'] . '/' . $aFileParts['filename'] . '.less'; $sFileType = 'less'; } elseif (strtolower($aFileParts['extension']) == 'less') { $sFileType = 'less'; } else { $sFileType = 'other'; } if ($sFileType == 'less') { $sCachePath .= '/css/'; if (!is_dir($sCachePath)) { ACE::MakeDir($sCachePath); } $aLessParams = array('file' => $sSourceFile, 'config' => array('formatter' => 'compressed'), 'variables' => array('gridColumns' => 16, 'gridColumnWidth' => '65px', 'gridGutterWidth' => '12px', 'baseFontSize' => '12px', 'baseLineHeight' => '18px')); // определяем целевой CSS-файл $sFile = ACE::FilePath($sCachePath . '/' . md5(serialize($aLessParams)) . '.css'); // если целевого файла нет - компилируем его из исходного LESS-файла if (!is_file($sFile)) { $oLess = $this->PluginAceadminpanel_Aceless_GetLessCompiler(); $oLess->setVariables($aLessParams['variables'], true); $oLess->setFormatter('compressed'); $oLess->checkedCompile($sSourceFile, $sFile); $this->aFiles[] = array('source' => $sSourceFile, 'target' => $sFile); } $sContentType = 'text/css'; } else { $sCachePath .= '/' . basename($aFileParts['dirname']) . '/'; if (!is_dir($sCachePath)) { ACE::MakeDir($sCachePath); } $sFile = $sCachePath . $aFileParts['basename']; copy($sSourceFile, $sFile); $sContentType = 'image/' . strtolower($aFileParts['extension']); } if ($sFile and is_file($sFile)) { $sCssContent = file_get_contents($sFile); header('Content-type: ' . $sContentType); echo $sCssContent; } /* */ exit; }
public function GetTemplatePath($sName, $sPluginName = null) { if (!$sPluginName) { $sLangDir = 'notify/' . $this->Lang_GetLang(); if (Config::Get($this->sPlugin . '.saved.path.static.skin')) { $sDir = ACE::Url2Path(rtrim(Config::Get($this->sPlugin . '.saved.path.static.skin'), '/') . '/' . $sLangDir); if (is_dir($sDir)) { return $sDir . '/' . $sName; } } } return parent::GetTemplatePath($sName, $sPluginName); }
public function EventPages() { if (!$this->PluginAceadminpanel_Plugin_PluginActivated('Page')) { return parent::EventNotFound(); } $this->sMenuSubItemSelect = 'list'; if ($sAdminAction = $this->_getRequestCheck('action')) { $this->EventPagesAction($sAdminAction); } // * Обработка создания новой страницы if ($this->_getRequestCheck('submit_page_save')) { if (!getRequest('page_id')) { $this->EventPagesAddSubmit(); } } if ($this->GetParam(0) == 'new') { // создание новой страницы $this->sMenuSubItemSelect = 'new'; $this->Viewer_Assign('include_tpl', Plugin::GetTemplatePath($this->sPlugin) . '/actions/ActionAdmin/pages_edit.tpl'); } elseif ($this->GetParam(0) == 'edit') { // вывод формы для редактирования $this->EventPagesEdit(); $this->Viewer_Assign('include_tpl', Plugin::GetTemplatePath($this->sPlugin) . '/actions/ActionAdmin/pages_edit.tpl'); } elseif ($this->GetParam(0) == 'delete') { // отработка команды удаления $this->EventPagesDelSubmit(); ACE::HeaderLocation(Router::GetPath('admin') . 'pages/'); return; } elseif ($this->GetParam(0) == 'sort') { // отработка команды сортировки $this->EventPagesSort(); ACE::HeaderLocation(Router::GetPath('admin') . 'pages/'); return; } elseif ($this->GetParam(0) == 'options') { // вывод опций $this->sMenuSubItemSelect = 'options'; $this->EventPagesOptions(); $this->Viewer_Assign('include_tpl', Plugin::GetTemplatePath($this->sPlugin) . '/actions/ActionAdmin/pages_options.tpl'); } // * Получаем и загружаем список всех страниц $aPages = $this->PluginPage_Page_GetPages(); if (sizeof($aPages) == 0 and $this->PluginPage_Page_GetCountPage()) { $this->PluginPage_Page_SetPagesPidToNull(); $aPages = $this->PluginPage_Page_GetPages(); } $this->Viewer_Assign('aPages', $aPages); }
/** * Проверка, можем ли писать в текущий лог-файл */ protected function _checkLogFile() { if ($this->bCheckLogFiles and $this->sFileName and $this->sFileName != '-') { $sFile = ACE::FilePath($this->sPathLogs . $this->sFileName); if (!isset($this->aCheckedFiles[$sFile])) { // Проверяем, можем ли писать в лог-файл if ($fp = @fopen($sFile, 'a')) { fclose($fp); $this->aCheckedFiles[$sFile] = true; } else { if (($this->oUserCurrent or $this->oUserCurrent = $this->User_GetUserCurrent()) and $this->oUserCurrent->isAdministrator()) { $this->Message_AddError('Cannot write to log file "' . $sFile . '"', $this->Lang_Get('error')); //$this->Message_AddError('Cannot write to log file "' . $sFile . '"', $this->Lang_Get('error'), true); } $this->aCheckedFiles[$sFile] = false; } } return $this->aCheckedFiles[$sFile]; } return true; }
protected function SetTemplateInclude($sTemplate) { list($sPlugin, $sAction) = explode('_', get_class($this), 2); $sPath = HelperPlugin::GetPluginPath() . '/templates/skin/'; if (is_dir($sPath . Config::Get('view.skin'))) { $sPath .= Config::Get('view.skin'); } elseif (is_dir($sPath . 'admin_default')) { $sPath .= 'admin_default'; } elseif (is_dir($sPath . 'default')) { $sPath .= 'default'; } else { $sPath = ''; } if ($sPath) { $sTemplate = $sPath . '/actions/ActionAdmin/' . $sTemplate . '.tpl'; } else { $sTemplate = Plugin::GetTemplatePath($this->sPluginAddon) . 'actions/' . $sAction . '/' . $sTemplate . '.tpl'; } $sTemplate = ACE::LocalPath($sTemplate, ACE::GetPluginsDir()); //var_dump($s);exit; $this->Viewer_Assign('include_tpl', $sTemplate); }
public function PluginConfigSave($sPlugin = null) { if (!$this->sPluginAddon) { $this->sPluginAddon = HelperPlugin::GetPluginName($this, true); } if (!$sPlugin) { $sPlugin = $this->sPluginAddon; } $sFile = ACE::FilePath(Config::Get('sys.cache.dir') . 'adm.' . $sPlugin . '.cfg'); if (@file_put_contents($sFile, serialize(Config::Get('plugin.' . $sPlugin)))) { $this->Message('notice', $this->Lang_Get('adm_saved_ok')); } else { $this->Message('error', $this->Lang_Get('adm_saved_err')); } }
public function MemoryStats() { $aMemoryStats['memory_limit'] = ini_get('memory_limit'); $aMemoryStats['usage'] = ACE::MemSizeFormat(memory_get_usage()); $aMemoryStats['peak_usage'] = ACE::MemSizeFormat(memory_get_peak_usage(true)); $this->Viewer_Assign('aMemoryStats', $aMemoryStats); }
/** * Возвращает путь к шаблону скина плагина * * @param string $sFile * @param string $sPlugin * * @return string */ public static function GetTemplatePath($sFile = '', $sPlugin = '') { if ($sPath = self::GetPluginSkinPath($sPlugin)) { if ($sFile) { if (substr($sFile, 0, 1) != '/') { $sFile = '/' . $sFile; } $sPath .= $sFile; } else { $sPath .= '/'; } } return ACE::FilePath($sPath, '/'); }
public function TplProfileSidebarEnd() { if ($this->_checkAdmin()) { $sTpl = Plugin::GetTemplatePath(__CLASS__) . 'hook.profile_sidebar_end.tpl'; if (ACE::FileExists($sTpl)) { return $this->Viewer_Fetch($sTpl); } } }
protected function _EventSiteResetSubmit() { $this->Security_ValidateSendForm(); if (isPost('adm_cache_clear_data')) { $this->Cache_Clean(); } if (isPost('adm_cache_clear_headfiles')) { ACE::ClearHeadfilesCache(); } if (isPost('adm_cache_clear_smarty')) { ACE::ClearSmartyCache(); } if (isPost('adm_reset_config_data')) { $this->_ResetCustomConfig(); } $this->Message('notice', $this->Lang_Get('adm_action_ok'), null, true); ACE::HeaderLocation(Router::GetPath('admin') . 'site/reset/'); }
/** * Вернуться на предыдущую страницу */ protected function _gotoBackPage() { if ($this->sPageRef) { ACE::HeaderLocation($this->sPageRef); } else { ACE::HeaderLocation(Router::GetPath('admin')); } }
protected function _banlistIpDel() { $this->Security_ValidateSendForm(); $nId = $this->GetParam(2); if ($this->PluginAceadminpanel_Admin_ClearBanIp($nId)) { $this->_messageNotice($this->Lang_Get('adm_saved_ok'), 'banip:delete'); } else { $this->_messageError($this->Lang_Get('adm_saved_err'), 'banip:delete'); } ACE::HeaderLocation(Router::GetPath('admin') . 'banlist/ips/'); }
public function GetPluginDir($sPlugin = null) { $sResult = ACE::FilePath(Config::Get('path.root.server') . '/plugins', '/'); if ($sPlugin) { $sResult .= '/' . strtolower($sPlugin); } return $sResult; }
public function Call() { if ($this->SourceTypeIsTemplate()) { // получаем пути к шаблонам $aTplDirs = $this->GetSmarty()->getTemplateDir(); $sTemplate = $this->GetContentSource(); $sFile = ''; // лежит ли подгружаемый шаблон по одному из путей foreach ($aTplDirs as $sDir) { if (ACE::LocalPath(dirname($sTemplate), $sDir) and ACE::FileExists($sTemplate)) { $sFile = $sTemplate; break; } } if (!$sFile) { // варианты расположения шаблона foreach ($aTplDirs as $sDir) { if (ACE::FileExists($sDir . '/' . $sTemplate)) { $sFile = ACE::FilePath($sDir . '/' . $sTemplate); } } } if (!$sFile) { $sFile = $sTemplate; } $sResult = file_get_contents($sFile); } elseif ($this->SourceTypeIsCallback()) { $sResult = call_user_func_array($this->GetContentSource(), array()); } else { $sResult = $this->GetContentSource(); } return $sResult; }
protected function _EventPluginsExternalAdmin($nOffset) { $sActionClass = 'Plugin' . ucfirst($this->GetParam($nOffset)) . '_ActionAdminPlugin'; $sActionClass = $this->Plugin_GetDelegate('action', $sActionClass); if ($this->Plugin_GetDelegationChain('action', $sActionClass)) { $sActionClass = $this->Plugin_GetDelegate('action', $sActionClass); } $sFile = HelperPluginLoader::getInstance()->Class2Dir($sActionClass); if (ACE::FileExists($sFile)) { $this->sMenuSubItemSelect = 'plugins_admin_' . strtolower($this->GetParam($nOffset)); $this->oAdminAction = new $sActionClass($this->oEngine, 'admin'); if (method_exists($this->oAdminAction, 'Init')) { $this->oAdminAction->Init(); } if (method_exists($this->oAdminAction, 'Admin')) { $this->oAdminAction->Admin(); } elseif (method_exists($this->oAdminAction, 'EventIndex')) { $this->oAdminAction->EventIndex(); } if (method_exists($this->oAdminAction, 'EventShutdown')) { $this->oAdminAction->EventShutdown(); } if (method_exists($this->oAdminAction, 'Done')) { $this->oAdminAction->Done(); } } }
/** * Определение (и сохранение в куках на год) уникального ID посетителя сайта * * @return string */ static function GetVisitorId() { if (!defined('ADM_VISITOR_ID')) { if (!isset($_COOKIE['visitor_id'])) { if (headers_sent()) { if (!isset($_SERVER['HTTP_USER_AGENT'])) { // это точно не браузер $sVisitorId = ''; } else { $sUserAgent = @$_SERVER['HTTP_USER_AGENT']; $sVisitorId = md5($sUserAgent . '::' . serialize(ACE::GetAllUserIp())); } } else { $sVisitorId = md5(uniqid(time())); } } else { $sVisitorId = $_COOKIE['visitor_id']; } if (!headers_sent()) { setcookie('visitor_id', $sVisitorId, time() + 60 * 60 * 24 * 365, Config::Get('sys.cookie.path'), Config::Get('sys.cookie.host')); } define('ADM_VISITOR_ID', $sVisitorId); } return ADM_VISITOR_ID; }
/** * Определяет тип блока * * @param string $sName - Название блока * @param string|null $sDir - Путь до блока (определяется само для плагинов, если передать параметр 'plugin'=>'myplugin') * @return string ('block','template','undefined') * @throws Exception */ protected function DefineTypeBlock($sName, $sDir = null) { if ($sDir) { // * Если найден шаблон вида block.name.tpl то считаем что тип 'block' if (is_file(ACE::FilePath($sDir . '/blocks/block.' . $sName . '.tpl'))) { return 'block'; } // * Если найден шаблон по имени блока то считаем его простым шаблоном if (is_file(ACE::FilePath($sDir . '/' . $sName))) { return 'template'; } } /* try { $xResult = parent::DefineTypeBlock($sName, $sDir); } catch (Exception $e) { // если ищется шаблон плагина, и его скин не default, и он не найден, то делается попытка найти шаблон в default if (substr($e->getMessage(), 0, 22) == 'Can not find the block' AND ($s = ACE::InPath($sDir, ACE::GetRootDir() . '/plugins/*'))) { $n = strrpos($sDir, '/', -2); $sSkin = trim(substr($sDir, $n), '/'); if ($sSkin !== 'default') $sDir = substr($sDir, 0, $n) . '/default/'; $xResult = parent::DefineTypeBlock($sName, $sDir); } } */ $xResult = parent::DefineTypeBlock($sName, $sDir); return $xResult; }
public function LoadFile($sFileName) { if (strpos($sFileName, '%%language%%') !== false) { $this->LoadFile(ACE::FilePath(str_replace('%%language%%', $this->GetLangDefault(), $sFileName))); $this->LoadFile(ACE::FilePath(str_replace('%%language%%', $this->GetLang(), $sFileName))); } else { if (is_file($sFileName)) { $aLangMessages = (array) (include $sFileName); $this->aLangMsg = array_merge($this->aLangMsg, $aLangMessages); } } }
protected function EventUsersDelete($aUsersLogin = null) { $this->Security_ValidateSendForm(); if (!$aUsersLogin) { $aUsersLogin = ACE::Str2Array(getRequest('adm_del_login'), ',', true); } else { $aUsersLogin = ACE::Str2Array($aUsersLogin, ',', true); } foreach ($aUsersLogin as $sUserLogin) { if ($sUserLogin == $this->oUserCurrent->GetLogin()) { $this->_messageError($this->Lang_Get('adm_cannot_del_self'), 'users:delete'); } elseif ($oUser = $this->PluginAceadminpanel_Admin_GetUserByLogin($sUserLogin)) { if (mb_strtolower($sUserLogin, 'UTF-8') == 'admin') { $this->_messageError($this->Lang_Get('adm_cannot_with_admin'), 'users:delete'); } elseif ($oUser->IsAdministrator()) { $this->_messageError($this->Lang_Get('adm_cannot_del_admin'), 'users:delete'); } elseif (!getRequest('adm_user_del_confirm') and !getRequest('adm_bulk_confirm')) { $this->_messageError($this->Lang_Get('adm_cannot_del_confirm'), 'users:delete'); } else { $this->PluginAceadminpanel_Admin_DelUser($oUser->GetId()); $this->_messageNotice($this->Lang_Get('adm_user_deleted', array('user' => $sUserLogin ? $sUserLogin : '')), 'users:delete'); } } else { $this->_messageError($this->Lang_Get('adm_user_not_found', array('user' => $sUserLogin ? $sUserLogin : '')), 'users:delete'); } } return true; }
/** * Определяет тип блока * * @param string $sName - Название блока * @param string|null $sDir - Путь до блока (определяется само для плагинов, если передать параметр 'plugin'=>'myplugin') * @return string ('block','template','undefined') * @throws Exception */ protected function DefineTypeBlock($sName, $sDir = null) { if ($sDir) { // * Если найден шаблон вида block.name.tpl то считаем что тип 'block' if (is_file(ACE::FilePath($sDir . '/blocks/block.' . $sName . '.tpl'))) { return 'block'; } // * Если найден шаблон по имени блока то считаем его простым шаблоном if (is_file(ACE::FilePath($sDir . '/' . $sName))) { return 'template'; } } return parent::DefineTypeBlock($sName, $sDir); }
public function GetCustomConfigFile() { return ACE::FilePath(Config::Get('sys.cache.dir') . CUSTOM_CFG); }
protected function ClearCache() { if (!ACE::ClearDir(Config::Get('path.smarty.compiled'))) { $this->Message_AddErrorSingle('Unable to remove content of dir <b>' . ACE::FilePath(Config::Get('path.smarty.compiled')) . '</b>. It is recommended to do it manually', $this->Lang_Get('attention'), true); } if (!ACE::ClearDir(Config::Get('path.smarty.cache'))) { $this->Message_AddErrorSingle('Unable to remove content of dir <b>' . ACE::FilePath(Config::Get('path.smarty.cache')) . '</b>. It is recommended to do it manually', $this->Lang_Get('attention'), true); } $result = ACE::ClearAllCache(); return $result; }
protected static function _makeTmpDir($sTmpPath, $sDirKey, $sConfigKey) { if ($sDir = self::_getVal($sDirKey)) { if (is_dir($sPath = $sTmpPath . '/' . $sDir) or ACE::MakeDir($sPath, 0777, true)) { Config::Set($sConfigKey, $sPath); return true; } } }