/** * Вызывается при запросе несуществующей * страницы или ошибки и использования спецсимволов в параметрах * @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')); } } } }
function GoBack($exit = true, $response_code = 303) { if (isset($_SERVER['HTTP_REFERER'])) { return GO($_SERVER['HTTP_REFERER'], $exit, $response_code); } else { return GO(Ufu('index.php'), $exit, $response_code); } }
function ___SitemapPluginForum($Forum, $Level, $i, $c) { global $forums_tree; $forum_config = $forums_tree->GetForumConfigRecursive($Forum['id'], ACCESS_ALL); if (!$forum_config['access']) { return false; } SitemapAddObject($Level, $Forum['title'], Ufu('index.php?name=forum&op=showforum&forum=' . SafeDB($Forum['id'], 11, int), 'forum/{forum}/')); }
function IndexForumMarkRead() { $mark_forums = array(); // Форумы на которых устанавливать метки $forums_tree = ForumTree::Instance(); if (isset($_GET['forum'])) { // Только внутри определённого форума $forum = SafeDB($_GET['forum'], 11, int); $mark_forums = $forums_tree->GetAllAccessForumId($forum); } else { // На всех форумах $mark_forums = $forums_tree->GetAllAccessForumId(); } $user_id = System::user()->Get('u_id'); if (System::user()->Auth) { // Загружаем данные о прочтении тем пользователем $read_data = Forum_Marker_GetReadData(); // Загружаем топики (агрегированы по forum_id) $topics = ForumCacheGetTopics(); $del_where = ''; $insert_values = array(); $time = time(); foreach ($mark_forums as $forum_id) { if (!isset($topics[$forum_id])) { continue; } foreach ($topics[$forum_id] as $topic) { $tid = SafeEnv($topic['id'], 11, int); // Не прочитана или метка устарела if (!isset($read_data[$topic['id']])) { $insert_values[] = "'{$user_id}','{$tid}','{$time}'"; // Добавить новую метку } elseif ($read_data[$topic['id']]['date'] < $topic['last_post']) { $del_where .= "(`tid`='{$tid}' and `mid`= '{$user_id}') or "; // Удалить текущую метку $insert_values[] = "'{$user_id}','{$tid}','{$time}'"; // Добавить новую метку } } } // Удаляем устаревшие метки if ($del_where != '') { $del_where = substr($del_where, 0, -4); // Удаляем .or. System::database()->Delete('forum_topics_read', $del_where); } // Добавляем новые метки // TODO: В будущем нужно перейти на InnoDB и использовать транзакции как в MySQL так и в FilesDB. if (count($insert_values) > 0) { foreach ($insert_values as $vals) { System::database()->Insert('forum_topics_read', $vals); } } } GO(GetSiteUrl() . Ufu('index.php?name=forum' . (isset($forum) ? '&op=showforum&forum=' . $forum : ''), 'forum/' . (isset($forum) ? '{forum}/' : ''))); }
/** * Выводит путь в хлебных крошках в категории форума. * @param type $CatId Текущая открытая категория. */ public function BreadCrumbsF($CatId) { if ($CatId == 0) { return; } $parents = $this->GetAllParent($CatId); foreach ($parents as $parent) { $link = Ufu('index.php?name=' . $this->moduleName . '&op=showforum&forum=' . SafeDB($parent['id'], 11, int), $this->moduleName . '/{forum}/'); System::site()->BreadCrumbAdd(SafeDB($parent['title'], 255, str), $link); } }
function IndexForumSubscription() { 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_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['new_message_email']) { // Разрешено ли подписываться на новые сообщения (+ защита от гостей) System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } Forum_Subscription($topic_id); // Подписка (обратное действие, если пользователь уже подписан) GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost', 'forum/topic{topic}-new.html')); }
function IndexForumCloseTopic() { if (!System::user()->isAdmin()) { HackOff(); return; } if (CheckGet('topic')) { $topic_id = SafeEnv($_GET['topic'], 11, int); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } System::database()->Select('forum_topics', "`id`='{$topic_id}'"); $topic = System::database()->FetchRow(); $forum_id = SafeDB($topic['forum_id'], 11, int); System::database()->Update('forum_topics', "`close_topics`='1'", "`id`='{$topic_id}'"); GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/')); }
/** * Выводит дерево в html-коде для отображения в админ-панели * @param int $ParentId * @return bool|string */ public function ShowCats($ParentId = 0) { UseScript('jquery_ui_treeview'); if ($ParentId == 0 && isset($_GET['_cat_parent'])) { $ParentId = SafeEnv($_GET['_cat_parent'], 11, int); } $elements = array(); if ($ParentId == 0 && !isset($this->Cats[$ParentId])) { return 'Нет категорий'; } foreach ($this->Cats[$ParentId] as $cat) { $id = SafeDB($cat['id'], 11, int); $icon = trim(SafeDB($cat['icon'], 255, str)); $info = ''; if ($icon != '') { $info .= '<img src="' . $icon . '">'; } if ($this->index_id_par_name != '') { $link_go = Ufu('index.php?name=' . $this->module . '&' . $this->index_id_par_name . '=' . $id, $this->module . '/{' . $this->index_id_par_name . '}/'); $info .= ($icon != '' ? '<br>' : '') . '<b>Адрес</b>: <a href="' . $link_go . '" target="_blank">/' . $link_go . '</a>'; } $icon = 'images/folder.png'; $add_cat_link = ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->edit_met . '&_cat_adto=' . $id; $edit_cat_link = ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->edit_met . '&' . $this->id_par_name . '=' . $id; $func = ''; $func .= System::admin()->SpeedButton('Добавить дочернюю категорию', $add_cat_link, 'images/admin/folder_add.png'); $func .= System::admin()->SpeedButton('Редактировать', $edit_cat_link, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirmJs('Удалить категорию', '$(\'#cats_tree_container\').treeview(\'deleteNode\', ' . $id . ');', 'images/admin/delete.png', 'Уверены что хотите удалить? Все дочерние объекты так-же будут удалены.'); $obj_counts = $this->GetCountersRecursive($id); $elements[] = array('id' => $id, 'icon' => $icon, 'title' => '<b>' . System::admin()->Link(SafeDB($cat['title'], 255, str) . ' (' . $obj_counts['files'] . ')', $edit_cat_link) . '</b>', 'info' => $info, 'func' => $func, 'isnode' => isset($this->Cats[$id]), 'child_url' => ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->showcats_met . '&_cat_parent=' . $id); } if ($ParentId == 0) { System::admin()->AddOnLoadJS('$("#cats_tree_container").treeview({del: \'' . ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->del_met . '&ok=1\', delRequestType: \'GET\', tree: ' . JsonEncode($elements) . '});'); return '<div id="cats_tree_container"></div>'; } else { echo JsonEncode($elements); exit; } }
public function ActiveTopicAuthors() { $this->topic_authors_count = count(array_unique($this->_author_count)); $this->active_topic_authors = ' '; if (count($this->_author_name) > 0) { SortArray($this->_author_name, 'count', true); $i = 0; foreach ($this->_author_name as $author) { $i++; $author_link = Ufu('index.php?name=user&op=userinfo&user='******'id'], 'user/{user}/info/'); $usertopics_link = Ufu('index.php?name=forum&op=usertopics&user='******'id'], 'forum/usertopics/{user}/'); $this->active_topic_authors .= '<a href="' . $author_link . '">' . $author['name'] . '</a> <font size="1">[<a href="' . $usertopics_link . '">' . $author['count'] . '</a>]</font>'; if ($i == 20 || count($this->_author_name) == $i) { $this->active_topic_authors .= '.'; } else { $this->active_topic_authors .= ', '; } if ($i == 20) { break; } } } return $this->active_topic_authors; }
function ___SitemapPluginArticles($Cat, $Level) { SitemapAddObject($Level, $Cat['title'], Ufu('index.php?name=articles&cat=' . SafeDB($Cat['id'], 11, int), 'articles/{cat}')); }
/* * 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();
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ // Ѕлок пользовател¤ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $info = System::user()->Online(); $vars['title'] = $title; $tempvars['content'] = 'block/content/online.html'; System::site()->AddBlock('block_online', true, false, 'online'); $block_vars['num_admins'] = count($info['admins']); $block_vars['num_members'] = count($info['members']); $block_vars['num_guests'] = count($info['guests']); $block_vars['num_online'] = count($info['admins']) + count($info['members']) + count($info['guests']); $block_vars['show_uselist'] = true; $block_vars['userlist_link'] = Ufu('index.php?name=user', '{name}/'); System::site()->Blocks['block_online']['vars'] = $block_vars;
/** * Главная страница форума, список форумов в категории или подфорумов в форуме. * @param int $cat_id Идентификатор просматриваемого каталога * @global type $forum_lang * @return type */ function IndexForumMain($cat_id = null, &$topics_data = null) { global $forum_lang; $forums_tree = ForumTree::Instance(); if (isset($cat_id)) { $parent = $forums_tree->IdCats[$cat_id]['parent_id']; // Чтобы сделать просмотр категории нужно её выводить как подкатегорию родительской категории $cat = $parent == 0; // Просмотр категории или главной страницы форума $main = false; // Не главная страница (просмотр категории или форума) } else { $cat = true; // Однозначно просматриваем категрию или главную страницу форума (выводим блоки онлайн и статистики) $cat_id = 0; $parent = 0; // Корневой раздел в качестве родительской категории $main = true; // Главная страница } // Нет категорий, выводим сообщение if (!isset($forums_tree->Cats[$parent]) && $cat) { System::site()->AddTextBox($forum_lang['forum'], $forum_lang['no_category']); return; } if ($cat) { // Выводим категорию или главная страница форума (без топиков) // Устанавливаем заголовок страницы if (!$main) { System::site()->SetTitle(SafeDB($forums_tree->IdCats[$cat_id]['title'], 255, str) . ' - ' . $forum_lang['forum']); } // Объекты статистини и онлайн $statistics = ForumStatistics::Instance(); $online = ForumOnline::Instance($cat_id, '0', true); // Инициализируем статистику $statistics->Initialize($forum_lang['statistics']); // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику) $topics_data = ForumCacheGetTopics(); // Запрашиваем данные тем (агрегированы по форумам) $resolve_cats = array_keys($topics_data); foreach ($resolve_cats as $resolve_cat) { if (!isset($topics_data[$resolve_cat])) { continue; } foreach ($topics_data[$resolve_cat] as $topic) { $statistics->hits += $topic['hits']; $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']); } } // Подсчитываем количество тем и постов $counters = $forums_tree->GetCountersRecursive($cat_id); $statistics->topics_count = $counters['files']; $statistics->reply_count = $counters['cats']; // Выводим хлебные крошки $forums_tree->BreadCrumbsF($cat_id); System::site()->BreadCrumbsLastUrl = true; // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы. System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark'); $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>'; System::site()->Blocks['is_forum_member']['vars'] = $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()->Blocks['old']['vars'] = $vars_old; } // Загружаем данные о прочтении тем $read_data = Forum_Marker_GetReadData(); $auth = System::user()->Auth; // Блоки форума System::site()->AddBlock('forums', true, true, 'forum'); System::site()->AddBlock('is_no_sub_forum', $cat, false); // Блок со статистикой и онлайн (отключается в категории) $visable_cats = false; // Выведена хотябы одна категория с форумом - если нет то показываем ошибку foreach ($forums_tree->Cats[$parent] as $category) { // Категории if (!$main && ($category['id'] != $cat_id || !isset($forums_tree->Cats[$category['id']]))) { // Если просматриваем только одну категорию continue; } // Рекурсивно определяем настройки $forum_config = $forums_tree->GetForumConfigRecursive($category['id']); // Нет доступа или форум не виден или отключён if (!$forum_config['access']) { continue; } $visable_cats = true; $category = IndexForumDataFilter($category, $forum_config); // Выводим категорию IndexForumCatOpen($category); IndexForumRender($category); // Выводим форумы foreach ($forums_tree->Cats[$category['id']] as $forum) { $forum_id = $forum['id']; $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); // Нет доступа или форум не виден или отключён if (!$forum_config['access']) { continue; } $forum = IndexForumDataFilter($forum, $forum_config); // Обрабатываем подфорумы $subforums = array(); if (isset($forums_tree->Cats[$forum_id])) { foreach ($forums_tree->Cats[$forum_id] as $sforum) { // Подфорумы, нужно добавить только пометку о прочтении и обработать $read = true; // прочитан if ($auth) { $childs_forums = $forums_tree->GetAllChildId($sforum['id']); foreach ($childs_forums as $child_forum_id) { if (!isset($topics_data[$child_forum_id])) { continue; } foreach ($topics_data[$child_forum_id] as $topic) { if (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date']) { $read = false; // не прочитан break; } } if (!$read) { break; } } } $sforum = IndexForumDataFilter($sforum); $sforum['read'] = $read; $subforums[] = $sforum; } } // Определяем статус "прочинано" для форума $read = true; // прочитан if ($auth) { $childs_forums = $forums_tree->GetAllChildId($forum_id); foreach ($childs_forums as $child_forum_id) { if (!isset($topics_data[$child_forum_id])) { continue; } foreach ($topics_data[$child_forum_id] as $topic) { if (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date']) { $read = false; // не прочитан break; } } if (!$read) { break; } } } // Вывод форума в шаблон IndexForumRender($forum, false, $read, $subforums); } // Закрываем категорию IndexForumCatClose($category); } if ($visable_cats) { // Шаблон форума (полезно подключать шаблоны вконце, там может быть PHP код) System::site()->AddTemplatedBox('', 'module/forums.html'); } if ($cat) { // Не при просмотре форума (субфорумы + топики) if (!$visable_cats) { System::site()->AddTextBox($forum_lang['forum'], $forum_lang['no_category']); return; } // Выводим блок онлайн $online->Render($cat_id, '0', $cat_id == 0 ? $forum_lang['all_online'] : $forum_lang['current_category']); // Выводим статистику $statistics->Render(); // Быстрый переход if (!$cat) { ForumQuickTransitionBox($cat_id, $forum_lang['quick_transition']); } } }
*/ /* * Плагин вывода карты страниц * Автор: Мартин */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } global $pages, $pages_tree; $pages = array(); $pages_db = System::database()->Select('pages', "`enabled` = '1' and `view` = '4'", null, 'order'); foreach ($pages_db as $p) { $link = false; if ($p['type'] == 'page') { $link = Ufu('index.php?name=pages&file=' . SafeDB($p['link'], 255, str), 'pages:page'); } // elseif($p['type'] == 'link'){ // $link = SafeDB($p['text'], 255, str); // if(substr($link, 0, 6) == 'mod://'){ // $link = Ufu('index.php?name='.substr($link, 6), '{name}/'); // } // } $p['link'] = $link; $pages[] = $p; } function ___SitemapPagesPlugin($Page, $Level) { global $pages_tree; if ($Page['type'] != 'page') { $child_ids = $pages_tree->GetAllChildId($Page['id']);
/** * Отправка письма с новым паролем * @param $user_mail * @param $name * @param $login * @param $pass * @return void */ function UserSendForgotPassword($user_mail, $name, $login, $pass) { $ip = getip(); $text = Indent(' Здравствуйте, [' . $name . ']! На сайте ' . GetSiteDomain() . ' было запрошено напоминание пароля. Имя: ' . $name . ' Ваш логин и новый пароль: логин: ' . $login . ' пароль: ' . $pass . ' Изменить данные аккаунта вы можете по адресу: ' . GetSiteUrl() . Ufu('index.php?name=user&op=editprofile', 'user/{op}/') . ' IP-адрес, с которого был запрошен пароль: ' . $ip . ' С уважением, администрация сайта ' . GetSiteDomain() . '. '); SendMail($name, $user_mail, '[' . GetSiteDomain() . '] Напоминание пароля', $text); }
function IndexForumDeletePost() { global $forum_lang; if (!System::user()->isAdmin() || !CheckGet('topic', 'post', 'ok')) { HackOff(); return; } if (isset($_GET['page']) && $_GET['page'] > 1) { $page = '&page=' . SafeDB($_GET['page'], 11, int); $page_ufu = '-{page}'; } else { $page = ''; $page_ufu = ''; } // Подтверждение на удаление if (!isset($_GET['ok']) || !isset($_POST['text']) && System::config('forum/basket') || $_GET['ok'] == '0') { $text = '<br>' . $forum_lang['delete_post'] . '?'; System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $text . '</p>'); System::site()->AddTemplatedBox('', 'module/forum_delete_post.html'); System::site()->AddBlock('delete_form', true, false, 'form'); $vars = array(); $vars['basket'] = System::config('forum/basket'); $vars['url'] = 'index.php?name=forum&op=deletepost&topic=' . SafeDB($_GET['topic'], 11, int) . '&post=' . SafeDB($_GET['post'], 11, int) . $page . '&ok=1'; // Без UFU System::site()->Blocks['delete_form']['vars'] = $vars; return; } // Сообщение $post_id = SafeEnv($_GET['post'], 11, int); System::database()->Select('forum_posts', "`id`='{$post_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_post']); return; } $post = System::database()->FetchRow(); if ($post['delete'] == '1') { // На удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['post_basket']); return; } // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); return; } $topic = System::database()->FetchRow(); if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); System::database()->Select('forums', "`id`='{$forum_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']); return; } $forum = System::database()->FetchRow(); // Удаление поста if (System::config('forum/basket')) { // Удаляем сообщение в корзину $reason = ''; if (isset($_POST['text'])) { $reason = SafeEnv($_POST['text'], 255, str); } Moderation_Do_Basket_Post($post_id, $reason); } else { ForumAdminDeletePost($post_id); } // Обновляем тему $topic_posts = (int) $topic['posts'] - 1; if ($topic_posts < 0) { $topic_posts = 0; } $topic_set = "`posts`='{$topic_posts}'"; $topic_extra_set = false; // Удаляется последний пост в теме (нужно ли обновлять последний пост в форуме) if ($topic['last_post'] == $post['public'] && $topic['last_poster_id'] == $post['user_id']) { $topic_extra_set = true; $topic_set = ForumSetLastPost($topic_id, $topic_set, true); } System::database()->Update('forum_topics', $topic_set, "`id`='{$topic_id}'"); // Обновляем форум $forum_posts = (int) $forum['posts'] - 1; if ($forum_posts < 0) { $forum_posts = 0; } $forum_set = "`posts`='{$forum_posts}'"; if ($topic_extra_set) { // Только если удален последний пост в теме $forum_set = ForumSetLastTopic($forum_id, $forum_set, true); } System::database()->Update('forums', $forum_set, "`id`= '{$forum_id}'"); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . $page, 'forum/topic{topic}' . $page_ufu . '.html')); }
function ___SitemapPluginGallery($Cat, $Level) { SitemapAddObject($Level, $Cat['title'], Ufu('index.php?name=gallery&cat=' . SafeDB($Cat['id'], 11, int), 'gallery/{cat}')); }
function IndexForumDeleteTopic() { global $forum_lang; if (!System::user()->isAdmin() || !CheckGet('topic', 'ok')) { HackOff(); return; } $topic_id = SafeEnv($_GET['topic'], 11, int); // Подтверждение на удаление if (!isset($_GET['ok']) || !isset($_POST['text']) && System::config('forum/basket') || $_GET['ok'] == '0') { System::database()->Select('forum_topics', "`id`='" . SafeEnv($_GET['topic'], 11, int) . "'"); $topic = System::database()->FetchRow(); $text = $forum_lang['delete_topic'] . ' "' . SafeDB($topic['title'], 255, str) . '"?'; System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $text . '</p>'); System::site()->AddTemplatedBox('', 'module/forum_delete_post.html'); System::site()->AddBlock('delete_form', true, false, 'form'); $vars = array(); $vars['basket'] = System::config('forum/basket') == true; $vars['url'] = 'index.php?name=forum&op=deletetopic&topic=' . SafeEnv($_GET['topic'], 11, int) . '&ok=1'; // Без UFU System::site()->Blocks['delete_form']['vars'] = $vars; return; } // Вытаскиваем тему System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); return; } $topic = System::database()->FetchRow(); if ($topic['delete'] == '1') { // Удалена в корзину System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket']); return; } // Удаление if (System::config('forum/basket')) { // Удаляем тему в корзину $reason = ''; if (isset($_POST['text'])) { $reason = SafeEnv($_POST['text'], 255, str); } Moderation_Do_Basket_Topic($topic_id, $reason); } else { ForumAdminDeleteTopic($topic_id); } // Форум (Изменяем счетчики количества тем и сообщений, устанавливаем информацию о последнем посте) $forum_id = SafeEnv($topic['forum_id'], 11, int); System::database()->Select('forums', "`id`='{$forum_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']); return; } $forum = System::database()->FetchRow(); // Значения счётчиков форума $forum_topics = (int) $forum['topics'] - 1; if ($forum_topics < 0) { $forum_topics = 0; } $forum_posts = (int) $forum['posts'] - (int) $topic['posts']; if ($forum_posts < 0) { $forum_posts = 0; } $forum_set = "`topics`='{$forum_topics}',`posts`='{$forum_posts}'"; // Устанавливаем информацию о последнем посте в форуме if ($forum['last_id'] == $topic_id) { // Только если удалена тема с последним постом $forum_set = ForumSetLastTopic($forum_id, $forum_set, true); } System::database()->Update('forums', $forum_set, "`id`= '{$forum_id}'"); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/')); }
function IndexPollsViewPoll($op) { $id = SafeEnv($_GET['poll_id'], 11, int); System::database()->Select('polls', GetWhereByAccess('view', "`id`='{$id}' and `active`='1'")); if (System::database()->NumRows() == 0) { HackOff(); } $poll = System::database()->FetchRow(); $question = SafeDB($poll['question'], 255, str); System::site()->SetTitle($question); System::site()->BreadCrumbAdd($question); // Отвечал ли пользователь $ip = getip(); if (System::user()->Auth) { $uid = System::user()->Get('u_id'); } else { $uid = -1; } System::database()->Select('polls_voices', "`poll_id`='{$id}' and (`user_ip`='{$ip}' or `user_id`='{$uid}')"); $viewresult = System::database()->NumRows() != 0; $viewresult = $viewresult || $op == 'viewresult' && (System::config('polls/show_results') == '1' || System::user()->isAdmin()); $answers = unserialize($poll['answers']); $c = count($answers); $num_voices = 0; for ($i = 0; $i < $c; $i++) { $num_voices += SafeDB($answers[$i][2], 11, int); } if ($viewresult) { if ($num_voices != 0) { $per_c = 100 / $num_voices; } else { $per_c = 0; } System::site()->AddTemplatedBox('', 'module/poll_result.html'); $vars = array('lresults_title' => 'Результаты опроса', 'lrvalue' => 'гол.'); System::site()->AddBlock('poll_result_rows', true, true, 'pr'); $c = count($answers); for ($i = 0; $i < $c; $i++) { if ($answers[$i][0] != '') { $title = SafeDB($answers[$i][0], 255, str); $color = SafeDB($answers[$i][1], 255, str); $value = round($per_c * $answers[$i][2]); $num_voices2 = SafeDB($answers[$i][2], 11, int); System::site()->AddSubBlock('poll_result_rows', true, array('answertext' => $title, 'value' => $value, 'num_voices' => $num_voices2, 'color' => $color)); } } } else { System::site()->AddTemplatedBox('', 'module/poll.html'); $vars = array(); $vars['form_action'] = Ufu('index.php?name=polls&op=voice&poll_id=' . SafeDB($poll['id'], 11, int), 'polls/{poll_id}/voice/'); System::site()->AddBlock('poll_variants', true, true, 'variant'); for ($i = 0; $i < $c; $i++) { if ($answers[$i][0] != '') { $color = SafeDB($answers[$i][1], 255, str); $title = SafeDB($answers[$i][0], 255, str); if ($poll['multianswers'] == '1') { $control = System::site()->Check('voice[]', $i); } else { $control = System::site()->Radio('voice[]', $i); } System::site()->AddSubBlock('poll_variants', true, array('title' => $title, 'control' => $control, 'color' => $color)); } } $vars['poll_showresults'] = System::config('polls/show_results') == '1' || System::user()->isAdmin(); $vars['showresults_url'] = Ufu('index.php?name=polls&op=viewresult&poll_id=' . $id, 'polls/{poll_id}/results/'); $vars['others_url'] = Ufu('index.php?name=polls', '{name}/'); } $vars['title'] = $question; $vars['back_url'] = Ufu('index.php?name=polls', '{name}/'); $vars['back_caption'] = 'Назад к списку'; $vars['lnum_voices'] = 'Ответов'; $vars['num_voices'] = $num_voices; $vars['lcomments'] = 'Комментариев'; $vars['comments'] = SafeDB($poll['com_counter'], 11, int); System::site()->AddBlock('poll', true, false, ''); System::site()->Blocks['poll']['vars'] = $vars; // Выводим комментарии if (isset($_GET['page'])) { $nav_page = SafeEnv($_GET['page'], 11, int); } else { $nav_page = 0; } $posts = new Posts('polls_comments', $poll['allow_comments'] == '1'); $posts->PostFormAction = "index.php?name=polls&op=addpost&poll_id={$id}&page={$nav_page}"; $posts->EditPageUrl = "index.php?name=polls&op=editpost&poll_id={$id}"; $posts->DeletePageUrl = "index.php?name=polls&op=deletepost&poll_id={$id}"; $posts->NavigationUrl = Ufu("index.php?name=polls&op=viewpoll&poll_id={$id}", 'polls/{poll_id}/page{page}/', true); $posts->RenderPosts($id, 'poll_comments', 'comments_navigation', false, $nav_page); $posts->RenderForm(false, 'poll_comments_form'); }
public function Render($cat, $topic = '0', $title = '', $block = 'forum_online') { if ($this->MainPage) { // Кто на всём форуме $online = $this->AllOnline; } elseif ($topic != '0') { // Кто в топике $online = $this->GetTopicOnline($topic); } else { // Кто в категории $online = $this->GetCatOnline($cat); } $reg_count = count($online['admins']) + count($online['members']); // Кол-во не гостей // Шаблон System::site()->AddBlock($block, true, false, $block, 'module/forum_online.html'); // Общий блок System::site()->AddBlock('gen_online', true, false, 'users'); $vars = array(); $vars['count'] = $online['count']; $vars['online_img'] = true; $vars['title'] = $title; $vars['reg'] = $reg_count; $vars['guest'] = $online['count'] - $reg_count; System::site()->Blocks['gen_online']['vars'] = $vars; // Выводим пользователей System::site()->AddBlock('onlines', true, true, 'user'); $i = 0; // Выводим админов $vars = array(); foreach ($online['admins'] as $row) { $i++; $vars['url'] = '<a href="' . Ufu('index.php?name=user&op=userinfo&user='******'user_id'], 11, int), 'user/{user}/info/') . '">' . SafeDB($row['user_name'], 255, str) . '</a>'; System::site()->AddSubBlock('onlines', true, $vars); if ($i > 250) { break; } } // Выводим пользователей $vars = array(); foreach ($online['members'] as $row) { $i++; $vars['url'] = '<a href="' . Ufu('index.php?name=user&op=userinfo&user='******'user_id'], 11, int), 'user/{user}/info/') . '">' . SafeDB($row['user_name'], 255, str) . '</a>'; System::site()->AddSubBlock('onlines', true, $vars); if ($i > 250) { break; } } if ($this->MainPage) { $vars['url'] = ($reg_count > 0 ? '<br>' : '') . 'всего на форуме: ' . $online['count']; System::site()->AddSubBlock('onlines', true, $vars); } }
if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } global $search_results, $searchstr; $objects = System::database()->Select('articles', GetWhereByAccess('view', "`active`='1'")); foreach ($objects as $object) { $result = array(); $result['mod'] = $plugin_info['mod_title']; // Имя модуля $result['coincidence'] = ''; // Показывает где было совпадение $result['title'] = SafeDB($object['title'], 255, str); $result['public'] = TimeRender(SafeDB($object['public'], 11, int)); // Дата публикации $result['link'] = Ufu('index.php?name=articles&op=read&art=' . SafeDB($object['id'], 11, int) . '&cat=' . SafeDB($object['cat_id'], 11, int), 'articles/{cat}/{art}/'); $result['text'] = SafeDB($object['description'], 0, str); if (strlen($result['text']) > 255) { $result['text'] = substr($result['text'], 0, 255) . ' ...'; } if (SSearch($object['seo_keywords'], $searchstr) != false) { $result['coincidence'] = 'Ключевые слова статьи'; $search_results[] = $result; } elseif (SSearch($object['seo_description'], $searchstr) != false) { $result['coincidence'] = 'Описание статьи'; $search_results[] = $result; } elseif (SSearch($object['title'], $searchstr) != false) { $result['coincidence'] = 'Заголовок статьи'; $search_results[] = $result; } elseif (SSearch($object['description'], $searchstr) != false) { $result['text'] = SCoincidence($object['description'], $searchstr);
function AdminGalleryMainFunc() { global $edit_images, $GalleryDir, $ThumbsDir; UseScript('colorbox?theme=admin'); $back = SaveRefererUrl(); if (isset($_GET['cat']) && $_GET['cat'] > -1) { $cat = SafeEnv($_GET['cat'], 11, int); $where = "`cat_id`='{$cat}'"; } else { $cat = -1; $where = ""; } $data = AdminGalleryGetTree()->GetCatsData($cat, true); System::site()->DataAdd($data, -1, 'Все изображения', $cat == -1); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); $page_param = '&page=' . SafeDB($_GET['page'], 11, int); } else { $page = 1; $page_param = ''; } AddCenterBox('Фото'); System::admin()->AddJS(Indent(' GallerySelectCat = function(){ Admin.LoadPage("' . ADMIN_FILE . '?exe=gallery&cat="+$("#gallery-cat").val()); } ')); $text = '<div style="margin-bottom: 10px;">Категория: ' . System::site()->Select('cat', $data, false, 'id="gallery-cat" onchange="GallerySelectCat();"'); if ($cat < 0) { $text .= ' (Для сортировки изображений, выберите категорию)'; } $text .= '</div>'; AddText($text); $images = System::database()->Select('gallery', $where); $count_images = count($images) - 1; SortArray($images, 'order'); if (count($images) > System::config('gallery/images_on_page')) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($images, System::config('gallery/images_on_page'), ADMIN_FILE . '?exe=gallery' . ($cat > 0 ? '&cat=' . $cat : '')); $nav = true; } else { $nav = false; } $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr>' . ($cat > 0 ? '<th>Сортировка</th>' : '') . '<th>Изображение</th><th>Просмотров</th><th>Видят</th><th>Статус</th><th>Функции</th></tr>'; foreach ($images as $i => $img) { $id = SafeDB($img['id'], 11, int); $title = SafeDB($img['title'], 255, str); if ($title == '') { $title = 'Изображение ' . $id; } if (System::config('gallery/show_thumbs')) { $img_filename = SafeDB($img['file'], 255, str); $size = FormatFileSize(filesize($GalleryDir . $img_filename)); $asize = getimagesize($GalleryDir . $img_filename); $asize = $asize[0] . 'x' . $asize[1]; $thumb = '<div style="margin: 5px 0;"><a href="' . $GalleryDir . $img_filename . '" target="_blank" class="colorbox">' . '<img title="' . $title . '" src="' . $ThumbsDir . $img_filename . (isset($_GET['update']) && $_GET['update'] == $id ? '?' . GenRandomString(5) : '') . '"></a></div>' . "({$asize}, {$size})"; } else { $thumb = ''; } $hits = SafeDB($img['hits'], 11, int); $st = $img['show'] == '1' ? 'Вкл.' : 'Выкл.'; $func = '-'; $move_menu = ''; $link_go = Ufu('index.php?name=gallery&op=view&img=' . $id . '&cat=' . SafeDB($img['cat_id'], 11, int), 'gallery/{cat}/{img}/'); $func = ''; $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"'); if ($edit_images) { $edit_url = ADMIN_FILE . '?exe=gallery&a=editor&id=' . $id . '&back=' . $back; $title = '<b>' . System::admin()->Link($title, $edit_url) . '</b>'; $hits .= ' ' . System::admin()->SpeedConfirm('Обнулить счётчик просмотров', ADMIN_FILE . '?exe=gallery&a=resethits&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить счётчик просмотров?'); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=gallery&a=changestatus&id=' . $id, $img['show'] == '1'); $func .= System::admin()->SpeedButton('Редактировать', $edit_url, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=gallery&a=delete&id=' . $id . '&back=' . $back, 'images/admin/delete.png', 'Удалить изображение?'); $func .= '<div style="margin-top: 4px;">'; $func .= System::admin()->SpeedButton('Повернуть влево на 90°', ADMIN_FILE . '?exe=gallery&a=rotate&turn=left&id=' . $id . '&back=' . $back, 'images/admin/layer-rotate-left.png'); $func .= System::admin()->SpeedButton('Повернуть вправо на 90° ', ADMIN_FILE . '?exe=gallery&a=rotate&turn=right&id=' . $id . '&back=' . $back, 'images/admin/layer-rotate-right.png'); $func .= System::admin()->SpeedButton('Обновить эскиз', ADMIN_FILE . '?exe=gallery&a=refreshthumb&id=' . $id . '&back=' . $back, 'images/admin/refresh.png'); $func .= '</div>'; if ($count_images == 0) { // Единственный элемент в списке $move_menu .= ' - '; } else { if ($i != $count_images) { // Первый элемент $move_menu .= System::admin()->SpeedButton('Вниз', ADMIN_FILE . '?exe=gallery&a=move&to=down&id=' . $id . '&cat=' . $cat . $page_param, 'images/admin/down.png'); } if ($i != 0) { // Последний элемент $move_menu .= System::admin()->SpeedButton('Вверх', ADMIN_FILE . '?exe=gallery&a=move&to=up&id=' . $id . '&cat=' . $cat . $page_param, 'images/admin/up.png'); } } } $text .= Indent(' <tr> ' . ($cat > 0 ? '<td>' . $move_menu . '</td>' : '') . ' <td>' . $title . $thumb . '</td> <td>' . $hits . '</td> <td>' . ViewLevelToStr(SafeDB($img['view'], 1, int)) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr> '); } $text .= '</table>'; AddText($text); if ($nav) { AddNavigation(); } }
$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(); }
if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } global $search_results, $searchstr; $objects = System::database()->Select('downloads', GetWhereByAccess('view', "`active`='1'")); foreach ($objects as $object) { $result = array(); $result['mod'] = $plugin_info['mod_title']; //'Архив файлов'; // Имя модуля $result['coincidence'] = ''; // Показывает где было совпадение $result['title'] = SafeDB($object['title'], 255, str); $result['public'] = TimeRender(SafeDB($object['public'], 11, int)); // Дата публикации $result['link'] = Ufu('index.php?name=downloads&op=full&cat=' . SafeDB($object['category'], 11, int) . '&file=' . SafeDB($object['id'], 11, int), 'downloads/{cat}/{file}/'); $result['text'] = SafeDB($object['shortdesc'], 0, str); if (strlen($result['text']) > 255) { $result['text'] = substr($result['text'], 0, 255) . ' ...'; } if (SSearch($object['title'], $searchstr) !== false) { $result['coincidence'] = 'Заголовок файла'; $search_results[] = $result; } elseif (SSearch($object['shortdesc'], $searchstr) !== false) { $result['text'] = SCoincidence($object['shortdesc'], $searchstr); $result['coincidence'] = 'Краткое описание файла'; $search_results[] = $result; } elseif (SSearch($object['description'], $searchstr) !== false) { $result['text'] = SCoincidence($object['description'], $searchstr); $result['coincidence'] = 'Полное описание файла'; $search_results[] = $result;
private function RenderPost($ObjectId, &$Posts, $BlockName, $Level) { if (count($Posts) == 0) { return false; } foreach ($Posts as $post) { $post_id = SafeDB($post['id'], 11, int); $user_id = SafeDB($post['user_id'], 11, int); $vars = array(); $vars['level_padding'] = Posts::$LevelMargin * $Level; $vars['post_message'] = HtmlChars($post['post_message']); SmiliesReplace($vars['post_message']); $vars['post_message'] = nl2br($vars['post_message']); $vars['post_message'] = BbCodePrepare($vars['post_message']); if ($user_id != 0) { // Зарегистрированный пользователь $userinfo = GetUserInfo($user_id); $vars['user_link'] = Ufu("index.php?name=user&op=userinfo&user={$user_id}", 'user/{user}/info/'); $vars['user_name'] = '<a href="' . $vars['user_link'] . '">' . $userinfo['name'] . '</a>'; $vars['post_date'] = SafeDB($post['post_date'], 11, int); if ($userinfo['hideemail'] == '0') { $vars['user_email'] = AntispamEmail($userinfo['email']); } else { $vars['user_email'] = ''; } $vars['user_homepage'] = SafeDB($userinfo['url'], 255, str); $vars['user_homepage_url'] = UrlRender(SafeDB($post['user_homepage'], 255, str)); if ($userinfo['online']) { $vars['user_status'] = 'Сейчас на сайте.'; } else { $vars['user_status'] = ''; } $vars['user_rank_image'] = $userinfo['rank_image']; $vars['user_rank_name'] = $userinfo['rank_name']; $vars['user_avatar'] = $userinfo['avatar_file']; $vars['user_avatar_small'] = $userinfo['avatar_file_small']; $vars['user_avatar_smallest'] = $userinfo['avatar_file_smallest']; $vars['user_regdate'] = TimeRender($userinfo['regdate'], false, false); } else { $vars['user_name'] = SafeDB($post['user_name'], 255, str); $vars['post_date'] = SafeDB($post['post_date'], 11, int); if ($post['user_email'] != '' && $post['user_hideemail'] != 0) { $vars['user_email'] = AntispamEmail(SafeDB($post['user_email'], 255, str)); } else { $vars['user_email'] = ''; } if ($post['user_homepage'] != '') { $vars['user_homepage'] = SafeDB($post['user_homepage'], 255, str); $vars['user_homepage_url'] = UrlRender(SafeDB($post['user_homepage'], 255, str)); } else { $vars['user_homepage'] = ''; $vars['user_homepage_url'] = ''; } $vars['user_status'] = ''; $vars['user_rank_image'] = ''; $vars['user_rank_name'] = ''; $vars['user_avatar'] = GetPersonalAvatar(0); $vars['user_avatar_small'] = GetSmallUserAvatar(0, $vars['user_avatar']); $vars['user_avatar_smallest'] = GetSmallestUserAvatar(0, $vars['user_avatar']); $vars['user_regdate'] = ''; } $vars['user_id'] = SafeDB($post['user_id'], 11, int); $vars['post_id'] = $post_id; $vars['user_ip'] = SafeDB($post['user_ip'], 19, str); $vars['object_id'] = $ObjectId; $vars['parent_id'] = SafeDB($post['post_parent_id'], 11, int); if ($vars['user_homepage'] != '') { $vars['user_homepage'] = '<a href="' . $vars['user_homepage_url'] . '" target="_blank">' . $vars['user_homepage'] . '</a>'; } else { $vars['user_homepage'] = ''; } $vars['post_date'] = TimeRender($vars['post_date']); if (System::user()->Auth) { $vars['editing'] = System::user()->Get('u_id') == $user_id || System::user()->isAdmin(); } else { $vars['editing'] = $user_id == '0' && $vars['user_ip'] == getip(); } $vars['answers'] = $this->Answers != '0' || System::user()->isAdmin(); if (!System::user()->Auth && !$this->GuestPost) { $vars['answers'] = false; } if (!$this->AlloyComments) { $vars['answers'] = false; } $vars['no_answers'] = !$vars['answers']; $back = SaveRefererUrl(); $vars['edit_url'] = $this->EditPageUrl . '&post_id=' . $post_id . '&back=' . $back; $vars['delete_url'] = $this->DeletePageUrl . '&post_id=' . $post_id . '&back=' . $back; $vars['parent_post_url'] = $_SERVER['REQUEST_URI'] . '#post_' . SafeDB($post['post_parent_id'], 11, int); $vars['post_url'] = $_SERVER['REQUEST_URI'] . '#post_' . $post_id; System::site()->AddSubBlock($BlockName, true, $vars, array(), $this->PostTemplate); if (isset($this->PostsTree[$post_id])) { if ($this->MaxTreeLevel > $Level) { $newLevel = $Level + 1; } else { $newLevel = $Level; } $this->RenderPost($ObjectId, $this->PostsTree[$post_id], $BlockName, $newLevel); } } return true; }
function AdminNewsTopics() { global $news_access_edittopics; UseScript('jquery_ui', 'colorbox?theme=admin'); if (!$news_access_edittopics) { System::admin()->AccessDenied(); } $cntr = 0; AddCenterBox('Текущие новостные разделы'); $topics = System::database()->Select('news_topics'); $text = '<table style="width: 100%; border: 1px #ABC5D8 solid; background-color: #fff; padding: 10px;">'; foreach ($topics as $topic) { $topic_id = SafeDB($topic['id'], 11, int); $edit_url = ADMIN_FILE . '?exe=news&a=edittopic&id=' . $topic_id; $link_go = Ufu('index.php?name=news&topic=' . $topic_id, 'news/{topic}/'); $title = SafeDB($topic['title'], 255, str); $desc = SafeDB($topic['description'], 255, str); $counter = SafeDB($topic['counter'], 11, int); $image = SafeDB($topic['image'], 255, str); if ($image != '') { list($width, $height) = SafeDB(explode(':', System::config('news/topics_tmb_size')), 11, int); $image = GetThumb($image, $width, $height); $image = '<tr><td align="center"><a href="' . $edit_url . '"><img src="' . $image . '" height="80" title="' . $desc . '"></a></td></tr>'; } $func = ''; $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"'); $func .= System::admin()->SpeedButton('Редактировать', $edit_url, 'images/admin/edit.png'); $func .= System::admin()->SpeedAjax('Удалить', ADMIN_FILE . '?exe=news&a=deltopic&id=' . $topic_id, 'images/admin/delete.png', 'Удалить раздел? Все новости в этом разделе так-же будут удалены.', '', "\$('#topic_{$topic_id}').children('table').fadeOut('slow');"); if ($cntr % 4 == 0) { $text .= '<tr>'; } $text .= Indent(' <td id="topic_$topic_id" valign="top" align="center" style="padding: 10px;"> <table align="center" cellspacing="5" cellpadding="0"> <tr> <td align="center"> <b><a href="' . $edit_url . '">' . $title . '</a> (' . $counter . ')</b> </td> </tr> ' . $image . ' <tr> <td align="center">' . $func . '</td> </tr> </table> </td> '); if (++$cntr % 4 == 0) { $text .= '</tr>'; } } if ($cntr % 4 != 0) { $text .= '</tr>'; } $text .= '</table>'; AddText($text); System::admin()->FormTitleRow('Создать новый раздел новостей'); System::admin()->FormRow('Название раздела', System::admin()->Edit('topic_name', '', false, 'maxlength="255" style="width:400px;"')); System::admin()->FormTextRow('Описание (HTML)', System::admin()->HtmlEditor('topic_description', '', 600, 200)); FormRow('Изображение', System::admin()->FileManager('topic_image', '') . '<br> <a href="images/no_image.png" class="filemanager_topic_image colorbox" data-content="href:path" target="_blank"> <img src="images/no_image.png" class="filemanager_topic_image" data-content="src:tmb" style="margin-top: 5px; max-width: 250px;"> </a>'); System::admin()->AddForm('<form name="topicsform" action="' . ADMIN_FILE . '?exe=news&a=addtopic" method="post" name="topicsform">', System::admin()->Submit('Создать')); }
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']); }
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(); } }
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')); }
/** * Выводит форму логина * @param string $Message * @param StarkytBlock $ToBlock * @return void */ public function Login($Message = '', $ToBlock = null) { if (!isset($ToBlock)) { $ToBlock = $this->AddTemplatedBox('Авторизация', 'login.html'); } $vars = array('message' => $Message, 'form_action' => 'index.php?name=user&op=login&back=main', 'llogin' => 'Логин', 'lpass' => 'Пароль', 'lremember' => 'Запомнить меня', 'registration' => System::config('user/registration') == 'on', 'lregistration' => 'Регистрация', 'registration_url' => Ufu('index.php?name=user&op=registration', 'user/{op}/'), 'lsubmit' => 'Войти', 'lforgot_pass' => 'Напомнить пароль'); $ToBlock->NewBlock('login', true, false, 'lf')->SetVars($vars); }