function IndexForumEditTopic() { global $forum_lang; if (!System::user()->Auth) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_auth'] . '</p>'); return; } $topic = SafeEnv($_GET['topic'], 11, int); $post = System::database()->Select('forum_posts', "`object`='{$topic}' and `delete`='0'"); SortArray($post, 'id', false); System::database()->Select('forum_topics', "`id`='{$topic}'"); $topic = System::database()->FetchRow(); if ($topic['delete'] == 0 || System::config('forum/basket') == false) { $title = ''; if (SafeDB($topic['starter_id'], 11, str) == System::user()->Get('u_id') or System::user()->IsAdmin()) { $title = SafeDB($topic['title'], 0, str); } if (System::user()->Get('u_id') == $post[0]['user_id'] || System::user()->isAdmin()) { ForumRenderPostForm(true, 0, SafeEnv($_GET['topic'], 11, int), SafeDB($post[0]['id'], 11, int), SafeDB($post[0]['message'], 0, str, false, true), $title); } else { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['no_right_comment_edit'] . '</p>'); return; } } else { System::site()->AddTextBox($forum_lang['topic_basket_current_post'], '<p align="center">' . $forum_lang['topic_basket_post'] . '<br><input type="button" value="' . $forum_lang['back'] . '"onclick="history.back();"></p>'); } }
/** * Подключает группу системных плагинов. * @param $group группа * @param string $function подгруппа(если есть) * @param bool $return возвратить имена файлов плагинов вместо их автоматического подключения * @param bool $return_full возвращать вместо имен файлов массив с полной информацией по плагинам * @return array */ function SystemPluginsIncludeGroup($group, $function = '', $return = false, $return_full = false) { global $config; $result = array(); // Поиск плагинов $group_dir = System::config('sys_plug_dir') . $group; if (!is_dir($group_dir)) { return array(); } $plugins = GetFolders($group_dir . '/'); // Подготавливаем результат foreach ($plugins as $plugin) { if ($function != '') { $plugin_name = RealPath2($group_dir . '/' . $plugin . '/' . $function) . '/'; } else { $plugin_name = RealPath2($group_dir . '/' . $plugin) . '/'; } global $include_plugin_path; // эта переменная будет доступна из плагина $include_plugin_path = $plugin_name; if ($return) { $result[] = $include_plugin_path; } else { include $include_plugin_path . 'index.php'; } } return $result; }
/** * Вызывается при запросе несуществующей * страницы или ошибки и использования спецсимволов в параметрах * @param bool $LowProtect * @param bool $Redirect * @return void */ function HackOff($LowProtect = false, $Redirect = true) { global $config; if (System::user()->isAdmin() || $LowProtect) { if (defined('MAIN_SCRIPT') || defined('PLUG_SCRIPT') || !defined('ADMIN_SCRIPT')) { if ($Redirect) { GO(Ufu('index.php')); } } elseif (defined('ADMIN_SCRIPT')) { GO(ADMIN_FILE); } } else { if (System::config('security/hack_event') == 'alert') { die(System::config('security/hack_alert')); } elseif (System::config('security/hack_event') == 'ban') { die('Вам был запрещен доступ к сайту, возможно система обнаружила подозрительные действия с Вашей стороны. Если Вы считаете, что это произошло по ошибке, - обратитесь в службу поддержки по e-mail ' . System::config('general/site_email') . '.'); } else { if ($Redirect) { GO(Ufu('index.php')); } } } }
/** * Парсер смайликов. * @param $text * @return void */ function SmiliesReplace(&$text) { static $codes = null; if (!isset($codes)) { $codes = array(); $smilies_dir = System::config('general/smilies_dir'); $smilies = System::database()->Select('smilies'); // Пусть отключенные смайлики тоже парсятся foreach ($smilies as $smile) { $sub_codes = explode(',', $smile['code']); $smile_file = SafeDB($smile['file'], 255, str); if ($smile['desc'] != '') { $title = SafeDB($smile['desc'], 255, str); } else { $title = SafeDB(GetFileName($smile_file, true), 255, str); } foreach ($sub_codes as $code) { $code = trim($code); if ($code != '') { $codes[$code] = '<img src="' . RealPath2($smilies_dir . $smile_file) . '" title="' . $title . '">'; } } } } $text = strtr($text, $codes); }
/** * Подключение библиотеки из папки lib. Принимает произвольное количество параметров или массив. * @param $FileName1 Имя папки библиотеки в папке Lib (base/lib/ по умолчанию), функция подключает lib.php файл) * @param string $FileName2 * @param string $FileName3 * @return void */ function UseLib($FileName1, $FileName2 = '', $FileName3 = '') { $args = func_get_args(); if (is_array($args[0])) { $args = $args[0]; } foreach ($args as $path) { include_once RealPath2(System::config('lib_dir') . $path . '/lib.php'); } }
/** * 자동 라우팅 처리 start * @throws ConfigureException * @throws DirectoryException */ protected function autoload() { System::config(); $siteConfig = Configure::site(); $siteNamespace = $siteConfig['namespace'] . "\\"; Autoloader::setPsr4(array($siteNamespace => array(Directory::sitePath('controller')), $siteNamespace . "Model\\" => array(Directory::sitePath('model')))); //방화벽 가동 Firewall::ruleStart(); //실제 작업 시작 $this->execute(); }
function __construct() { global $config; $this->XMailer = CMS_VERSION_STR; if (System::config('smtp/use_smtp')) { $this->SmtpSend = true; $this->SmtpHost = System::config('smtp/host'); $this->SmtpPort = System::config('smtp/port'); $this->SmtpLogin = System::config('smtp/login'); $this->SmtpPassword = System::config('smtp/password'); } }
/** * Отправляет E-mail * @param $ToName * @param $ToEmail * @param $Subject * @param $Text * @param bool $Html * @param string $From * @param string $FromEmail */ function SendMail($ToName, $ToEmail, $Subject, $Text, $Html = false, $From = '', $FromEmail = '') { $mail = LmEmailExtended::Instance(); if ($From == '' && $FromEmail == '') { $mail->SetFrom(System::config('general/site_email'), Cp1251ToUtf8(System::config('general/site_name'))); } else { $mail->SetFrom($FromEmail, Cp1251ToUtf8($From)); } $mail->SetSubject(Cp1251ToUtf8($Subject)); if (!$Html) { $mail->AddTextPart(Cp1251ToUtf8($Text)); } else { $mail->AddHtmlPart(Cp1251ToUtf8($Text)); } $mail->AddTo($ToEmail, Cp1251ToUtf8($ToName)); if (!$mail->Send()) { ErrorHandler(USER_ERROR, 'Проблема при отправке E-mail "' . $Subject . '".', __FILE__); } }
function UrlRender($url) { static $out = null; if (!isset($out)) { $out = System::config('general/specialoutlinks'); if ($out == 0) { $out = false; } elseif ($out == 1) { $out = true; } elseif ($out == 2 && !System::user()->Auth) { $out = true; } else { $out = false; } } if ($out && !IsMainHost($url)) { return 'index.php?name=plugins&p=out&url=' . urlencode(Url($url)); } else { return 'http://' . Url($url); } }
/** * Генерирует миниатюру и кэширует её. Возвращает имя файла миниатюры. * @param $FileName Исходный файл изображения. * @param int $MaxWidth Максимальная ширина миниатюры. * @param int $MaxHeight Максимальная высота миниатюры. * @param bool $Streech Растягивать ли картинку если заданные размеры больше исходных * @param null $SaveFormat Формат сохранения миниатюры (jpeg, png, gif, wbmp). * @return mixed */ function GetThumb($FileName, $MaxWidth = 0, $MaxHeight = 0, $Streech = false, $SaveFormat = null) { if ($FileName == '') { return 'images/no_image.png'; } elseif (substr($FileName, 0, 7) == 'http://') { return $FileName; } $FileName = RealPath2($FileName); if (isset($SaveFormat)) { $ext = '.' . $SaveFormat; } else { $ext = GetFileExt($FileName); } $tmb_path = System::config('general/tmb_path'); if (!is_dir($tmb_path)) { MkDirRecursive($tmb_path); } $tmb_file = $tmb_path . md5($FileName) . '_' . $MaxWidth . 'x' . $MaxHeight . ($Streech ? '_streech' : '') . $ext; if (!is_file($tmb_file)) { CreateThumb($FileName, $tmb_file, $MaxWidth, $MaxHeight, $Streech, $SaveFormat); } return $tmb_file; }
<?php /* * LinkorCMS 1.4 * � 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } global $db; if (System::config('db_type') == 'MySQL') { include_once $include_plugin_path . 'mysql.layer.php'; $db = new LcDatabaseMySQL(); }
function IndexPollsVoice() { if (!isset($_GET['poll_id'])) { GoBack(); } if (!isset($_POST['voice'])) { System::site()->AddTextBox('', '<p align="center">Вы не выбрали ни одного варианта ответа.</p>'); } else { $pid = SafeEnv($_GET['poll_id'], 11, int); System::database()->Select('polls', GetWhereByAccess('view', "`id`='{$pid}' and `active`='1'")); if (System::database()->NumRows() == 0) { GoBack(); } $poll = System::database()->FetchRow(); $answers = unserialize($poll['answers']); $multianswers = SafeDB($poll['multianswers'], 1, int); $voice = SafeEnv($_POST['voice'], 11, int); if (!$multianswers) { $voice = $voice[0]; } //Проверяем, учавствовал ли данный пользователь в этом опросе $ip = getip(); if (System::user()->Auth) { $uid = System::user()->Get('u_id'); } else { $uid = -1; } System::database()->Select('polls_voices', "`poll_id`='{$pid}' and (`user_ip`='{$ip}' or `user_id`='{$uid}')"); if (System::database()->NumRows() == 0) { if (!$multianswers) { if (isset($answers[$voice])) { $answers[$voice][2] = $answers[$voice][2] + 1; $answers = serialize($answers); System::database()->Update('polls', "answers='{$answers}'", "`id`='{$pid}'"); } else { GoBack(); } } else { $c = count($voice); for ($i = 0; $i < $c; $i++) { if (isset($answers[$voice[$i]])) { $answers[$voice[$i]][2] = $answers[$voice[$i]][2] + 1; } else { GoBack(); } } $answers = serialize($answers); System::database()->Update('polls', "answers='{$answers}'", "`id`='{$pid}'"); } $voice = serialize($voice); if (System::user()->Auth) { $user_id = System::user()->Get('u_id'); } else { $user_id = 0; } System::database()->Insert('polls_voices', "'','{$pid}','" . getip() . "','{$voice}','{$user_id}'"); System::user()->ChargePoints(System::config('points/polls_answer')); GoBack(); } else { System::site()->AddTextBox('', '<p align="center">Извините, Вы уже принимали участие в этом опросе.</p>'); } } }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ AddCenterBox('Резервные копии'); $backup_dir = System::config('backup_dir'); if (!is_writable($backup_dir)) { System::admin()->HighlightError('<strong style="color: #FF0000;">Внимание!</strong> Нет прав на запись в папку ' . $backup_dir . '. Создание резервных копий не возможно.'); } System::admin()->AddJS(' CreateBackup = function(){ Admin.ShowSplashScreen("Создание резервной копии"); $.ajax({ type: "POST", url: "' . ADMIN_FILE . '?exe=dbadmin&a=backup_create", data: {}, success: function(data){ Admin.LoadPage("' . ADMIN_FILE . '?exe=dbadmin&a=backups", undefined, "Обновление страницы"); Admin.HideSplashScreen(); } }); }; '); $backup_files = GetFiles($backup_dir, false, true, '.zip'); rsort($backup_files, SORT_STRING); $backup_files2 = array(); foreach ($backup_files as $file) { if (GetSecondFileExt($file, true) == System::database()->Name) { $backup_files2[] = $file;
/** * Выводит дату в строковом формате * @param $Time * @param bool $Full * @param bool $Logic * @return string */ function TimeRender($Time, $Full = true, $Logic = true) { if ($Time == false || !is_numeric($Time)) { return 'Нет данных'; } $now = time(); $ld = round($now / 86400 - $Time / 86400); if ($ld > 1 || $now < $Time || !$Logic) { $fdate = 'd.m.Y'; } elseif ($ld == 0) { $fdate = 'Сегодня'; } elseif ($ld == 1) { $fdate = 'Вчера'; } else { return 'Нет данных'; } if ($Full) { $date = date($fdate . ' ' . System::config('general/datetime_delimiter') . ' H:i', $Time); } else { $date = date($fdate, $Time); } return $date; }
function __construct() { global $config; $this->path = System::config('cache_dir'); $this->enabled = USE_CACHE && is_dir($this->path) && is_writable($this->path) && !defined('SETUP_SCRIPT'); }
function IndexForumUserTopics() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверка данных if (isset($_GET['user'])) { $user_id = SafeEnv($_GET['user'], 11, int); $user = GetUserInfo($user_id); if ($user === false) { // Пользователь не найден System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_user']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_data']); // Нет параметра return; } // Параметры постраничной навигации if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $topics_on_page = System::config('forum/topics_on_page'); // Устанавливаем заголовок страницы $function_title = $forum_lang['allusertopics'] . ' "' . $user['name'] . '"'; System::site()->SetTitle(SafeDB($function_title, 255, str) . ' - ' . ($page > 1 ? $forum_lang['page'] . $page . ' - ' : '') . $forum_lang['forum']); $forum_nav_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}-{page}/', true); //$forum_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}/'); // Объекты статистики и онлайн $statistics = ForumStatistics::Instance(); $online = ForumOnline::Instance('0', '0', true); // Обновляем статус онлайн // Инициализируем статистику $statistics->Initialize($forum_lang['statistics_cat']); // Хлебные крошки System::site()->BreadCrumbAdd($function_title); $auth = System::user()->Auth; $is_admin = System::user()->isAdmin(); $current_user_id = System::user()->Get('u_id'); // Загружаем данные корзины для видимых топиков $basket = ForumBasketGetData('forum_basket_topics'); // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику) $topics_data = ForumCacheGetTopics(); // Запрашиваем данные тем (агрегированы по форумам) $topics = array(); // Сюда будем добавлять топики для вывода $resolve_cats = $forums_tree->GetAllAccessForumId(0); // Считаем только в открытых для доступа форумах foreach ($resolve_cats as $resolve_cat) { if (!isset($topics_data[$resolve_cat])) { continue; } foreach ($topics_data[$resolve_cat] as $topic) { // Отсеиваем if ($topic['starter_id'] == $user_id) { // Добавляем данные из корзины, если топик удалён в корзину $topic['status'] = ''; $topic['show_delete'] = $is_admin; if ($topic['delete'] && isset($basket[$topic['id']]) && $auth && ($is_admin || $topic['starter_id'] == $current_user_id)) { // Добавляем сообщение - "Удалено в корзину" $topic['status'] = ForumBasketRender($topic['id'], $topic['title'], $basket, false); $topic['show_delete'] = false; } elseif ($topic['delete']) { continue; // Удалён топик и корзина не показывается для этого пользователя } $statistics->hits += $topic['hits']; $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']); $statistics->topics_count += 1; $statistics->reply_count += $topic['posts']; $topics[] = $topic; } } } unset($topics_data); // Заголовки (Темы, Ответов, Просмотры) System::site()->AddBlock('statistik', true, false, 'stat'); System::site()->SetVars('statistik', array('count_read' => '')); // Отключаем некоторые блоки System::site()->AddBlock('topic_form', false, false, 'form'); System::site()->AddBlock('topic_right', false, false, 'topic'); System::site()->AddBlock('forum', false); System::site()->AddBlock('forum_guest_message', false); // Блоки шаблона // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы. $vars_is_forum_member = array(); $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread', 'forum/markread/') . '">' . $forum_lang['mark_all_read'] . '</a>'; $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread', 'forum/viewnoread/') . '">' . $forum_lang['viewnoread'] . '</a>'; $vars_is_forum_member['forum_id'] = '0'; if (!System::site()->HasBlock('is_forum_member')) { System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark'); } System::site()->SetVars('is_forum_member', $vars_is_forum_member); // Последние темы форума System::site()->AddBlock('old', true, false, 'mark'); $vars_old = array(); $vars_old['lasttopics'] = '<a href="' . Ufu('index.php?name=forum&op=lasttopics', 'forum/lasttopics/') . '">' . $forum_lang['lasttopics'] . '</a>'; System::site()->SetVars('old', $vars_old); // Блок списка топиков System::site()->AddBlock('topics', true, true, 'topic'); // Инициализируем постраничную навигацию $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); // Выводим топики в шаблон if (count($topics) == 0) { // В этом форуме пока нет ни одной темы System::site()->AddBlock('no_topics', true); $navigation->DisableNavigation(); } else { // Вывод постраничной навигации $navigation->GenNavigationMenu($topics, $topics_on_page, $forum_nav_url); // Загружаем данные о прочтении тем $read_data = Forum_Marker_GetReadData(); $visable_topics = false; // Вывод тем из этой категории с постраничной навигацией foreach ($topics as $topic) { $forum_config = $forums_tree->GetForumConfigRecursive($topic['forum_id']); // Конфигурация просматриваемого форума // Статус прочитано $read = true; // прочитано if ($auth && (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date'])) { $read = false; } $topic = ForumTopicFilterData($topic); // Фильтрация данных топика $topic['on'] = !$read; $topic['off'] = $read; if (!$topic['close']) { $topic['close'] = $forum_config['close']; $topic['begin'] = !$forum_config['close']; } $topic['page'] = $page; $visable_topics = true; System::site()->AddSubBlock('topics', true, $topic); } System::site()->AddBlock('no_topics', !$visable_topics); } // Блоки модерации ModerationForumTopicsBlocks(); // Подключаем шаблон System::site()->AddTemplatedBox('', 'module/forum_topics.html'); // Выводм блок онлайн $online->Render('0', '0', $forum_lang['all_online'], 'forum_topics_online'); // Выводим статистику $statistics->Render('forum_topics_statistics'); // Выбор периода и быстрый переход ForumQuickTransitionBox(0, $forum_lang['quick_transition']); }
/* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ define('RSS_SCRIPT', true); define('VALID_RUN', true); require 'config/init.php'; // Конфигурация и инициализация @header("Content-Type: text/xml"); @header("Cache-Control: no-cache"); @header("Pragma: no-cache"); $rss_title = 'Новости на ' . System::config('general/site_url'); $rss_link = System::config('general/site_url'); $rss_description = 'RSS канал сайта ' . System::config('general/site_url') . '.'; $rss = new RssChannel($rss_title, $rss_link, $rss_description); $rss->pubDate = gmdate('D, d M Y H:i:s') . ' GMT'; $rss->generator = CMS_NAME . ' ' . CMS_VERSION; $rss->managingEditor = '*****@*****.**'; $rss->webMaster = System::config('general/site_email'); $num = 10; // Пока максимум 10 заголовков по умолчанию $news = System::database()->Select('news', "`enabled`='1'", $num, 'date', true); foreach ($news as $s) { $title = SafeDB($s['title'], 255, str); $description = SafeDB($s['start_text'], 4048, str); $link = HtmlChars(GetSiteUrl() . Ufu('index.php?name=news&op=readfull&news=' . $s['id'] . '&topic=' . $s['topic_id'], 'news/{topic}/{news}/')); $pubDate = gmdate('D, d M Y H:i:s', $s['date']) . ' GMT'; $rss->AddItem($title, $description, $link, $pubDate, $link); } echo $rss->Generate();
/** * Отображает страницу ошибки 404 и завершает скрипт. * @param bool $Exit Если false то скрипт не завершиться. */ function Error404($Exit = true) { Header("HTTP/1.1 404 Not Found"); $path = System::config('tpl_dir') . System::config('general/site_template') . '/'; if ($path . '404.html') { $page = new Page('404.html', '', false, PAGE_AJAX); $page->TEcho(false, false); } else { readfile('errorpages/404.html'); } if ($Exit) { exit; } }
$id = SafeEnv($r['id'], 11, int); System::database()->Update('forms', "`link`='{$link}'", "`id`='{$id}'"); } // Обновление таблицы rewrite_rules System::database()->Truncate('rewrite_rules'); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:4:"name";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 0); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:6:"module";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 1); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:11:"description";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 2); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:5:"order";s:4:"type";s:3:"int";s:6:"length";i:11;s:7:"notnull";b:1;}'), 6); // Системные правила UfuAddRuleByTemplate('system', 'mod', 'Ссылка на модуль', 'name={str}', '{name}/', 1000); // Правила для страниц UfuAddRuleByTemplate('pages', 'page', 'Ссылка на страницу', 'name=pages&file={ustr}', '{file}.html'); // Правила для модуля веб форм UfuAddRuleByTemplate('forms', 'form', 'Страница с формой', 'name=forms&formlink={ustr}', 'forms/{formlink}.html'); Ufu('index.php?name=forms&form={num}', 'forms/{form}/'); Ufu('index.php?name=news&op=topics', 'news/{op}/', 15000); // Обновление шаблона $template = System::config('general/site_template'); if ($template != 'default' && $template != 'IgrimTheme') { $file_name = System::config('tpl_dir') . $template . '/module/user_list.html'; $temp_content = file_get_contents($file_name); $temp_content = str_replace('{title.last}', '{title.last_visit}', $temp_content); file_put_contents($file_name, $temp_content); } // Пересборка ядра if (is_file('config/system_build.php')) { unlink('config/system_build.php'); } System::cache()->ClearAll(); }
/** * Компилирует шаблоны и выводит результат в браузер * @param bool $Return * @return string|bool */ public function EchoAll($Return = false) { if (!$this->Disabled) { $this->SetPage(); } $start = microtime(true); $contents = $this->Compile(); // Компиляция всей страницы $info = $this->GetPageInfo($start); if (defined('SETUP_SCRIPT') || !System::config('general/show_script_time')) { $info = ''; } $contents = str_replace('%info%', $info, $contents); if ($Return) { return $contents; } if ($this->GZipCompressPage && $this->SupportGZip) { @header('Content-Encoding: gzip'); ob_start('ob_gzhandler'); echo $contents; ob_end_flush(); } else { echo $contents; } return true; }
function AdminBlocksSave($a) { $block_config = ''; $editsave = System::config('blocks_dir') . SafeEnv($_POST['type'], 255, str) . '/editsave.php'; if (file_exists($editsave)) { include_once $editsave; // Что-то записывает в $block_config } VisibilityConditionsAdminSave($showin, $extra_uri); $b_v = ViewLevelToInt($_POST['view']); $b_en = EnToInt($_POST['enabled']); if (isset($_GET['id'])) { $id = SafeEnv($_GET['id'], 11, int); } else { $id = 0; } $place = GetPlace(SafeEnv($_POST['position'][0], 1, str), $id); // FIXME: Ниже блок вытаскивается, тогда можно узнать его place без лишнего запроса if ($id != 0) { $block = System::database()->Select('blocks', "`id`='{$id}'"); $block_pos = SafeEnv($block[0]['position'], 1, str); } $vals = Values('', SafeEnv($_POST['title'], 255, str), SafeEnv($_POST['type'], 255, str), $place, '', '1', $block_config, SafeEnv($_POST['template'], 255, str), SafeEnv($_POST['position'][0], 1, str), $b_v, $b_en, $showin, $extra_uri); if ($a == 'newsave') { System::database()->Insert('blocks', $vals); Audit('Блока: Добавление блока "' . $_POST['title'] . '"'); } elseif ($a == 'update') { System::database()->Update('blocks', $vals, "`id`='" . $id . "'", true); Audit('Блока: Изменение блока "' . $_POST['title'] . '"'); if ($block_pos != $_POST['position'][0]) { // Пересчитываем все place в предыдущем position $blocks = System::database()->Select('blocks', "`position`='" . $block_pos . "'"); if (count($blocks) > 0) { usort($blocks, 'AdminBlocksSort'); foreach ($blocks as $i => $b) { System::database()->Update('blocks', "`place`='{$i}'", "`id`='" . SafeEnv($b['id'], 11, int) . "'"); } } } } GO(ADMIN_FILE . '?exe=blocks'); }
function IndexFeedBackSend() { $err = array(); if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['subject']) || !isset($_POST['department']) || !isset($_POST['message']) || !isset($_POST['feedback_form'])) { GO(Ufu('index.php')); } else { if ($_POST['name'] != '') { $name = SafeDB($_POST['name'], 250, str); } else { $err[] = 'Пожалуйста, укажите Ваше имя!'; } if ($_POST['email'] != '') { $email = SafeDB($_POST['email'], 50, str); } else { $err[] = 'Пожалуйста, укажите Ваш действительный адрес E-mail!'; } if ($_POST['subject'] != '') { $subject = SafeDB($_POST['subject'], 250, str, false, false, false); } else { $err[] = 'Пожалуйста, введите тему сообщения!'; } // Проверяем капчу if (!System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr']) { $err[] = 'Вы ошиблись при вводе кода с картинки.'; } if ($_POST['department'] != '') { $department = SafeEnv($_POST['department'], 11, int); System::database()->Select('feedback', "`active`='1' and `id`='{$department}'"); if (System::database()->NumRows() > 0) { $dep = System::database()->FetchRow(); $dep_email = SafeDB($dep['email'], 255, str); $department = SafeDB($dep['name'], 255, str); } else { $err[] = 'Департамент больше не существует или обратная связь с этим департаментом отключена.'; } } else { $err[] = 'Пожалуйста, выберите департамент!'; } if ($_POST['message'] != '') { $message = SafeDB($_POST['message'], 65535, str, false, false, false); } else { $err[] = 'Пожалуйста, введите сообщение!'; } } $size = $_FILES['attach']['size']; // / 1024; if ($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= System::config('feedback/max_filesize')) { $err[] = 'Слишком большой размер файла.'; } if (count($err) == 0) { $mail = LmEmailExtended::Instance(); $mail->SetTo($dep_email, Cp1251ToUtf8($department)); $mail->SetFrom($email, Cp1251ToUtf8($name)); $mail->SetSubject(Cp1251ToUtf8($subject)); $text = Indent("\n\t\t\tЗдравствуйте!\n\n\t\t\tС помощью формы обратной связи на сайте \"" . System::config('general/site_name') . "\"\n\t\t\tвам было отправлено сообщение.\n\n\t\t\tДепартамент: {$department}\n\t\t\tИмя: {$name}\n\t\t\tE-mail: {$email}\n\t\t\tТема сообщения: {$subject}\n\t\t\tДата отправки: " . TimeRender(time(), true, false) . "\n\t\t\tСообщение: {$message}\n\t\t"); $mail->AddTextPart(Cp1251ToUtf8($text)); if ($_FILES['attach']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachmentPart(file_get_contents($_FILES['attach']['tmp_name']), $_FILES['attach']['name']); } if ($mail->Send()) { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">Ваше сообщение успешно отправлено!</div>'); } else { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">При отправке вашего сообщения произошла ошибка, повторите попытку или обратитесь к администратору.</div>'); } } else { $text = 'Сообщение не отправлено:<br /><ul>'; foreach ($err as $error) { $text .= '<li>' . $error . '</li>'; } $text .= '</ul>'; System::site()->AddTextBox('Ошибка', $text); IndexFeedBackForm(); } }
/** * Выводит форму добавления или редактирования комментария. * @param bool $Edit Метод редактирования * @param string $PostFormBlockName Имя блока для вывода формы */ public function RenderForm($Edit = false, $PostFormBlockName = 'postsform') { if ($this->DisableComments) { System::site()->AddBlock($PostFormBlockName, false, false, 'form', $this->PostFormTemplate); return; } else { System::site()->AddBlock($PostFormBlockName, true, false, 'form', $this->PostFormTemplate); } if ($Edit && isset($_GET['post_id'])) { $post_id = SafeEnv($_GET['post_id'], 11, int); } elseif ($Edit && !isset($_GET['post_id'])) { ErrorHandler(USER_ERROR, 'Posts::PostForm(): post_id не инициализирована.', __FILE__); return; } if (!$Edit && !$this->AlloyComments) { $this->Alert($PostFormBlockName, 'Обсуждение закрыто'); return; } if (!$Edit && !System::user()->Auth && !$this->GuestPost) { // Гость $this->Alert($PostFormBlockName, 'Гости не могут добавлять комментарии, войдите или зарегистрируйтесь.'); return; } System::site()->AddVars('template', array('lang_posts_username' => 'Имя', 'lang_posts_useremail' => 'E-mail', 'lang_posts_hideemail' => 'Скрыть E-mail', 'lang_posts_userhomepage' => 'Сайт', 'lang_posts_posttitle' => 'Заголовок', 'lang_posts_postmessage' => 'Сообщение', 'lang_posts_cancel' => 'Отмена', 'lang_posts_canceltitle' => 'Вернуться к теме без сохранения изменений')); $back = ''; if (!$Edit) { $back = '&back=' . SaveRefererUrl(); } $vars = array(); if ($Edit) { System::database()->Select($this->PostsTable, "`id`='{$post_id}'"); $post = System::database()->FetchRow(); if (System::user()->Auth) { $access = System::user()->Get('u_id') == $post['user_id'] || System::user()->isAdmin(); } else { $access = $post['user_id'] == '0' && $post['user_ip'] == getip(); } if (!$access) { $this->Alert($PostFormBlockName, 'У вас не достаточно прав!'); return; } $vars['form_title'] = 'Редактирование сообщения'; $vars['form_action'] = $this->PostFormAction . "&post_id={$post_id}" . $back; $vars['post_message'] = HtmlChars($post['post_message']); $vars['edit'] = true; System::site()->SetVar('template', 'lang_posts_submit', 'Сохранить'); System::site()->SetVar('template', 'lang_posts_submittitle', 'Сохранить изменения и вернуться'); $vars['visibility'] = 'visible'; } else { $vars['form_title'] = 'Добавить комментарий'; $vars['form_action'] = $this->PostFormAction . $back; $vars['post_title'] = ''; $vars['post_message'] = ''; $vars['edit'] = false; System::site()->SetVar('template', 'lang_posts_submit', 'Добавить'); System::site()->SetVar('template', 'lang_posts_submittitle', 'Добавить новое сообщение'); $vars['visibility'] = 'hidden'; } $vars['add'] = !$vars['edit']; $vars['add_guest'] = (System::user()->AccessLevel() == 3 || System::user()->AccessLevel() == 4) && $vars['add']; $vars['show_kaptcha'] = $vars['add_guest'] || !System::user()->isAdmin() && $this->ShowKaptchaForMembers; $vars['kaptcha_url'] = 'index.php?name=plugins&p=antibot'; $vars['kaptcha_width'] = '120'; $vars['kaptcha_height'] = '40'; // Подключаем BBCode редактор IncludePluginsGroup('bbcode_editors'); // Смайлики для формы $smilies = System::database()->Select('smilies', "`enabled`='1'"); $vars['is_smilies'] = System::database()->NumRows() != 0; if ($vars['is_smilies']) { System::site()->AddBlock('smilies', true, true, 'smile'); foreach ($smilies as $smile) { $smile['file'] = RealPath2(System::config('general/smilies_dir') . $smile['file']); $sub_codes = explode(',', SafeDB($smile['code'], 255, str)); $smile['code'] = $sub_codes[0]; System::site()->AddSubBlock('smilies', true, $smile); } } else { System::site()->AddBlock('smilies', true, false, 'smile', '', 'Смайликов пока нет.'); } System::site()->Blocks[$PostFormBlockName]['vars'] = $vars; }
/** * Производит рендеринг и вывод всей страницы сайта * @param bool $Blocks * @param bool $OnlineProcess * @param bool $Return * @return bool|string */ public function TEcho($Blocks = true, $OnlineProcess = true, $Return = false) { if (defined('INDEX_PHP') && INDEX_PHP == true) { $title = 'Главная'; } else { $title = $this->Title; } if ($OnlineProcess) { System::user()->OnlineProcess($title); if (System::user()->Auth) { System::user()->ChargePoints(System::config('points/browsing')); } } if ($Blocks) { $this->ViewBlocks(); } if ($this->ShowBreadCrumbs) { $this->ViewBreadCrumbs(); } // Вывод ошибок и отладочных данных $ErrorsText = ''; if (System::config('debug/php_errors')) { $ErrorsText .= implode("<br>\n", System::$Errors); } if (ob_get_level() > 0 && ob_get_length() > 0) { $ErrorsText .= ob_get_clean(); } $this->SetVar('template', 'errors_text', $ErrorsText); return $this->EchoAll($Return); }
function AdminExtensionsConfig() { System::admin()->AddSubTitle('Настройки модуля'); $name = SafeEnv($_GET['name'], 255, str); System::database()->Select('modules', "`folder`='" . $name . "'"); $mod = System::database()->FetchRow(); System::admin()->FormRow('Имя', System::admin()->Edit('name', $mod['name'], false, 'style="width:200px;" class="autofocus"')); $dir = System::config('tpl_dir') . System::config('general/site_template') . '/themes/'; if (is_dir($dir)) { $templates = GetFiles($dir, false, true, ".html"); } else { $templates = array(); } System::admin()->DataAdd($templates_data, '', 'Стандартный "theme.html"', $mod['theme'] == ''); foreach ($templates as $template) { System::admin()->DataAdd($templates_data, $template, $template, $mod['theme'] == $template); } System::admin()->FormRow('Шаблон страницы', System::admin()->Select('theme', $templates_data)); System::admin()->FormRow('Кто видит', System::admin()->Select('view', GetUserTypesFormData(SafeDB($mod['view'], 1, int)))); System::admin()->FormRow('Включить', System::admin()->Select('enabled', GetEnData((bool) $mod['enabled'], 'Да', 'Нет'))); System::admin()->AddCenterBox('Настройка модуля "' . SafeDB($mod['name'], 255, str) . '"'); System::admin()->AddForm(System::admin()->FormOpen(ADMIN_FILE . '?exe=extensions&a=mod_configsave&name=' . SafeDB($mod['folder'], 255, str)), System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Сохранить')); }
/** * Сохраняет данные формы сгенерированной фукцией AdminUserEditor * * @param $back_link * @param string $a * @param int $id * @param bool $IsAdmin * @return void */ function AdminUserEditSave($back_link, $a = 'insert', $id = 0, $IsAdmin = false) { $SystemAdmin = System::user()->isSuperUser(); $edit = $a == 'update'; $editProfile = $edit && !$SystemAdmin && $id == System::user()->Get('u_id'); // Администратор редактирует свой профиль $editStatus = false; // Разрешено редактирование статуса $editType = false; // Разрешено редактировать тип пользователя // Загружаем данные пользователя из БД if ($edit) { $user = System::database()->SelectOne('users', "`id`='{$id}'" . ($IsAdmin ? " and `type`='1'" : " and `type`='2'")); if (!$user) { AddTextBox('Ошибка', '<p align="center">Пользователь не найден, либо у вас не достаточно прав для редактирования администраторов.</p>'); return; } } // Устанавливаем ограничения доступа if ($IsAdmin) { // Редактируем администратора if ($SystemAdmin) { // Только системные администраторы могут редактировать статус и тип администраторов if (!$edit) { $editStatus = true; } elseif (!(groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1)) { // Если он не системный или системных больше 1 $editStatus = true; } $editType = $editStatus; } } else { // Если пользователь $editStatus = true; // Все администраторы с доступом могут редактировать статус пользователя $editType = $SystemAdmin; // Только системные администраторы могут создавать администраторов } // Обрабатываем данные $errors = array(); // Логин if (isset($_POST['login']) && CheckLogin($_POST['login'], $errors, !$edit)) { $login = SafeEnv($_POST['login'], 30, str); } else { $login = ''; } // Пароль $pass = ''; if (!$edit || $_POST['pass'] != '') { $pass_generate_message = ''; if (isset($_POST['pass']) && CheckPass($_POST['pass'], $errors)) { $pass = SafeEnv($_POST['pass'], 30, str); if (!isset($_POST['rpass']) || SafeEnv($_POST['rpass'], 30, str) != $pass) { $errors[] = 'Пароли не совпадают.'; } } else { $pass = ''; } if (isset($_POST['pass']) && $_POST['pass'] == '') { srand(time()); $pass = GenBPass(rand(System::config('user/pass_min_length'), 15)); $pass_generate_message = '<br />Так как вы не указали пароль, он был сгенерирован автоматически и выслан на указанный E-mail пользователя.'; } $pass2 = md5($pass); } // e-mail if (isset($_POST['email']) && $_POST['email'] != '') { if (!CheckEmail($_POST['email'])) { $errors[] = 'Не правильный формат E-mail. Он должен быть вида: <b>domain@host.ru</b> .'; } $email = SafeEnv($_POST['email'], 50, str, true); } else { $email = ''; $errors[] = 'Вы не ввели E-mail.'; } // Скрыть e-mail if (isset($_POST['hideemail'])) { $hide_email = '1'; } else { $hide_email = '0'; } // Имя пользователя на сайте if (isset($_POST['nikname']) && CheckNikname($_POST['nikname'], $errors, !$edit)) { $nik_name = SafeEnv($_POST['nikname'], 50, str, true); } else { $nik_name = ''; } // Полное имя if (isset($_POST['realname'])) { $real_name = SafeEnv($_POST['realname'], 250, str, true); } else { $real_name = ''; } // Возраст if (isset($_POST['age'])) { if ($_POST['age'] == '' || is_numeric($_POST['age'])) { $age = SafeEnv($_POST['age'], 3, int); } else { $errors[] = 'Ваш возраст должен быть числом!'; } } else { $age = ''; } // Домашняя страница if (isset($_POST['homepage'])) { if ($_POST['homepage'] != '' && substr($_POST['homepage'], 0, 7) == 'http://') { $_POST['homepage'] = substr($_POST['homepage'], 7); } $homepage = SafeEnv($_POST['homepage'], 250, str, true); } else { $homepage = ''; } // Номер ICQ if (isset($_POST['icq'])) { if ($_POST['icq'] == '' || is_numeric($_POST['icq'])) { $icq = SafeEnv($_POST['icq'], 15, str, true); } else { $errors[] = 'Номер ICQ должен содержать только числа!'; } } else { $icq = ''; } // Город if (isset($_POST['city'])) { $city = SafeEnv($_POST['city'], 100, str, true); } else { $city = ''; } // Часовой пояс if (isset($_POST['gmt'])) { $gmt = SafeEnv($_POST['gmt'], 255, str); } else { $gmt = System::config('general/default_timezone'); } // О себе if (isset($_POST['about'])) { $about = SafeEnv($_POST['about'], System::config('user/about_max_length'), str, true); } else { $about = ''; } // Подписка на новости if (isset($_POST['snews'])) { $server_news = '1'; } else { $server_news = '0'; } //Обрабатываем аватар $updateAvatar = true; if (isset($_POST['avatar'])) { if (System::config('user/avatar_transfer') == '1' && isset($_FILES['upavatar']) && file_exists($_FILES['upavatar']['tmp_name'])) { if ($edit) { $avatar = $user['avatar']; $a_personal = $user['a_personal']; } else { $avatar = ''; $a_personal = '0'; } UserLoadAvatar($errors, $avatar, $a_personal, $avatar, $a_personal, $edit); } elseif ($_POST['avatar'] == '') { $updateAvatar = false; } elseif (file_exists(RealPath2(System::config('general/avatars_dir') . $_POST['avatar']))) { if ($edit) { if ($user['a_personal'] == '1') { UnlinkUserAvatarFiles($user['avatar']); } } $a_personal = '0'; $avatar = $_POST['avatar']; } else { $avatar = ''; $a_personal = '0'; } } else { $avatar = ''; $a_personal = '0'; } $SendActivation = false; if ($edit) { $active = SafeEnv($user['active'], 11, int); $code = SafeEnv($user['activate'], 11, int); } else { $active = '1'; $code = ''; } if ($editStatus) { $activate = $_POST['activate']; $lastactivate = 'manual'; if ($active == '0' && $code != '') { $lastactivate = 'mail'; } elseif ($active == '1' && $code == '') { $lastactivate = 'auto'; } if ($activate != $lastactivate) { switch ($activate) { case 'manual': $active = '0'; $code = ''; $SendActivation = false; break; case 'auto': $active = '1'; $code = ''; $SendActivation = false; break; case 'mail': $active = '0'; $code = GenRandomString(8, 'qwertyuiopasdfghjklzxcvbnm'); $SendActivation = true; break; } } } if ($edit) { $access = SafeEnv($user['type'], 11, int); $user_type = SafeEnv($user['access'], 11, int); } else { $access = '2'; $user_type = '-1'; } if ($editType && $_POST['status'] != 'member') { $access = '1'; $user_type = SafeEnv($_POST['status'], 11, int); } $reg_date = time(); $last_visit = time(); $ip = getip(); $points = 0; $visits = 0; if ($SendActivation) { UserSendActivationMail($nik_name, $email, $login, $pass, $code, $reg_date); } elseif (!$edit) { UserSendEndRegMail($email, $nik_name, $login, $pass, $reg_date); } if (!$edit) { $values = Values('', $login, $pass2, $nik_name, $real_name, $age, $email, $hide_email, $city, $icq, $homepage, $gmt, $avatar, $about, $server_news, $reg_date, $last_visit, $ip, $points, $visits, $active, $code, $access, $user_type, $a_personal, serialize(array())); System::database()->Insert('users', $values); } else { $set = "`login`='{$login}',`email`='{$email}',`hideemail`='{$hide_email}',`name`='{$nik_name}'," . "`truename`='{$real_name}',`age`='{$age}',`url`='{$homepage}',`icq`='{$icq}',`city`='{$city}'," . "`timezone`='{$gmt}'" . ($updateAvatar == true ? ",`avatar`='{$avatar}',`a_personal`='{$a_personal}'" : '') . "," . "`about`='{$about}',`servernews`='{$server_news}'" . ($pass != '' ? ",`pass`='{$pass2}'" : '') . ",`type`='{$access}'," . "`access`='{$user_type}',`active`='{$active}',`activate`='{$code}'"; System::database()->Update('users', $set, "`id`='" . $id . "'"); System::user()->UpdateMemberSession(); UpdateUserComments($id, $id, $nik_name, $email, $hide_email, $homepage); } if (count($errors) > 0) { $text = 'Аккаунт сохранен, но имели место следующие ошибки:<br /><ul>'; foreach ($errors as $error) { $text .= '<li>' . $error; } $text .= '</ul>'; AddTextBox('Внимание', $text); } else { // Очищаем кэш пользователей System::cache()->Delete(system_cache, 'users'); if (!$editProfile) { GO(ADMIN_FILE . '?exe=' . $back_link); } else { System::admin()->AddCenterBox('Редактирование профиля'); System::admin()->Highlight('Ваш профиль сохранён, обновите страницу.'); } } }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ /* * Плагин вывода карты архива статей * Автор: Мартин */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } global $sitemap_show_objects, $sitemap_articles; $sitemap_show_objects = System::config('general/sitemap_show_objects') ? '___SitemapPluginArticles2' : null; $sitemap_articles = array(); if (isset($sitemap_show_objects)) { $articles = System::database()->Select('articles', "`active` = '1' and `view` = '4'", null, 'public'); // Только включенные и доступные гостям foreach ($articles as $art) { $sitemap_articles[$art['cat_id']][] = array($art['title'], Ufu('index.php?name=articles&op=read&art=' . SafeDB($art['id'], 11, int) . '&cat=' . SafeDB($art['cat_id'], 11, int), 'articles/{cat}/{art}/')); } unset($articles); } function ___SitemapPluginArticles($Cat, $Level) { SitemapAddObject($Level, $Cat['title'], Ufu('index.php?name=articles&cat=' . SafeDB($Cat['id'], 11, int), 'articles/{cat}')); } function ___SitemapPluginArticles2($CatId, $Level) {
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ // Восстановление БД из резервной копии $name = RealPath2(System::config('backup_dir') . $_GET['name']); if (isset($_GET['table'])) { $table = $_GET['table']; System::admin()->AddCenterBox('Восстановление таблицы "' . $table . '"'); $table = System::database()->Prefix() . $table; } else { $table = ''; System::admin()->AddCenterBox('Восстановление базы данных'); } $restore_r = System::database()->RestoreBackupFile($name, $table); if ($restore_r == 3) { System::admin()->HighlightError('Ошибка. Неверный формат файла, либо это бекап другого типа Базы данных.'); } elseif ($restore_r == 2) { System::admin()->Highlight('Произошли ошибки при восстановлении некоторых таблиц.'); } else { if ($table == '') { System::admin()->Highlight('База данных успешно восстановлена из резервной копии.'); Audit('Управление БД: База данных восстановлена из резервной копии "' . $name . '"'); } else { System::admin()->Highlight('Таблица "' . $table . '" успешно восстановлена из резервной копии.'); Audit('Управление БД: Таблица "' . $table . '" восстановлена из резервной копии "' . $name . '"'); } }
function IndexForumAddPost() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверки на доступ if (CheckGet('topic')) { // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() > 0) { $topic = System::database()->FetchRow(); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']); return; } if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']); return; } if ($topic['close_topics'] == '1') { // Тема закрыта System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); if (!isset($forums_tree->IdCats[$forum_id])) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $forum = $forums_tree->IdCats[$forum_id]; $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['add_post']) { // Разрешено ли добавлять новые сообщения (+ защита от гостей) System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } // Добавляем сообщение if (!CheckPost('text') || strlen($_POST['text']) == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $name = System::user()->Get('u_name'); $email = System::user()->Get('u_email'); $hideemail = System::user()->Get('u_hideemail'); $site = System::user()->Get('u_homepage'); $icq = System::user()->Get('u_icq'); $uid = System::user()->Get('u_id'); $text = SafeEnv($_POST['text'], 0, str); $vals = Values('', $topic_id, $uid, time(), $name, $site, $email, $hideemail, $icq, $text, getip(), 0); System::database()->Insert('forum_posts', $vals); // Обновляем время прочтения темы автором сообщения $user_id = System::user()->Get('u_id'); System::database()->Delete('forum_topics_read', "`tid`='{$topic_id}' and `mid`='{$user_id}'"); $time = time(); $vals = "'{$user_id}','{$topic_id}','{$time}'"; System::database()->Insert('forum_topics_read', $vals); // Информация о последнем сообщении в теме и форуме $forum['posts'] = (int) $forum['posts'] + 1; $topic['posts'] = (int) $topic['posts'] + 1; IndexForumSetLastPostInfo($forum, $topic); // Добавляем очков пользователю System::user()->ChargePoints(System::config('points/forum_post')); // Увеличиваем счётчик сообщений пользователя ForumCalcUserCounters(1); // Делаем рассылку подписчикам на эту тему Forum_Subscription_Send($topic_id); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost#last', 'forum/topic{topic}-new.html')); }
/* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ /* * Модуль управления настройками. */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } System::admin()->AddSubTitle('Управление настройками'); if (!System::user()->isSuperUser()) { System::admin()->AccessDenied(); } include_once System::config('inc_dir') . 'forms.inc.php'; if (isset($_GET['a'])) { $action = $_GET['a']; } else { $action = 'view_all'; } TAddToolLink('Все настройки', 'view_all', 'config_admin&a=view_all'); TAddToolLink('Добавить настройку', 'add', 'config_admin&a=add'); TAddToolLink('Группы настроек', 'view_groups', 'config_admin&a=view_groups'); TAddToolBox($action); TAddToolLink('Все настройки плагинов', 'view_all_plugins', 'config_admin&a=view_all_plugins&plugins=1'); TAddToolLink('Добавить настройку плагина', 'add_plugins', 'config_admin&a=add_plugins&plugins=1'); TAddToolLink('Группы настроек плагинов', 'view_groups_plugins', 'config_admin&a=view_groups_plugins&plugins=1'); TAddToolBox($action); switch ($action) { case 'view_all':