Example #1
0
 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;
}
Example #4
0
 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;
 }
Example #6
0
 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);
 }
Example #8
0
 /**
  * Проверка, можем ли писать в текущий лог-файл
  */
 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'));
     }
 }
Example #11
0
 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);
 }
Example #12
0
 /**
  * Возвращает путь к шаблону скина плагина
  *
  * @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/');
 }
Example #17
0
 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();
         }
     }
 }
Example #20
0
 /**
  * Определение (и сохранение в куках на год) уникального 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;
 }
Example #21
0
 /**
  * Определяет тип блока
  *
  * @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;
 }
Example #22
0
 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;
 }
Example #24
0
 /**
  * Определяет тип блока
  *
  * @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);
 }
Example #25
0
 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;
 }
Example #27
0
 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;
         }
     }
 }