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>'); } }
/** * Функция обновляет статус онлайн пользователя на форуме. * Перед вызовом всех остальных функций, нужно вызвать Process вначале. * @param type $cat * @param type $topic * @return type */ public function Process($cat = '0', $topic = '0') { if (!$this->online_process) { $time = time(); $time2 = $time - $this->AliveStatusTime; System::database()->Delete('forum_online', "`time` < {$time2}"); $user_ip = getip(); if (System::user()->Auth === true) { $user_id = System::user()->Get('u_id'); } else { $user_id = 0; } $user_name = System::user()->Get('u_name'); if (!$user_name) { $user_name = ''; } $user_level = System::user()->Get('u_level'); $where = "`user_ip`='{$user_ip}'"; System::database()->Select('forum_online', $where); if (System::database()->NumRows() > 0) { System::database()->Update('forum_online', "`time`='{$time}',`user_id`='{$user_id}',`user_name`='{$user_name}',`user_level`='{$user_level}',`user_ip`='{$user_ip}',`forum_cat`='{$cat}',`forum_topic`='{$topic}'", $where); } else { System::database()->Insert('forum_online', "'{$time}','{$user_id}','{$user_name}','{$user_level}','{$user_ip}','{$cat}','{$topic}'"); } $this->online_process = true; } }
function IndexForumLogin() { if (!System::user()->Auth) { System::site()->Login(''); System::user()->Def('forum_referrer', $_SERVER['HTTP_REFERER']); } else { GO(System::user()->Get('forum_referrer'), 202); } }
function HistoryGetUrl($BackSteps) { $history = System::user()->Get('HISTORY'); if (isset($history[10 - $BackSteps])) { return $history[10 - $BackSteps]; } else { return ''; } }
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}/' : ''))); }
/** * Initialises the system * @static */ public static function init() { self::redirectHTTPS(); Router::getInstance()->init(HOST_PATH, MOD_REWRITE); self::$database = new Database('mysql:dbname=' . DATABASE_NAME . ';host=' . DATABASE_HOST, DATABASE_USER, DATABASE_PASS); self::$session = new Session(); self::$user = System::getSession()->getUID() != NULL ? User::find('_id', System::getSession()->getUID()) : NULL; self::$language = new L10N(System::getUser() != NULL ? System::getUser()->lang : LANGUAGE); self::buildNavigation(); }
/** * Добавляет новую запись в лог действий администраторов. * @param $Action * @return bool */ function Audit($Action) { if (System::user()->Auth == false) { return false; } $user_ip = getip(); $user_id = System::user()->Get('u_id'); $date = time(); $Action = SafeEnv($Action, 255, str); System::database()->Insert('audit', Values('', $user_id, $date, $Action, $user_ip)); return true; }
function IndexForumRestoreBasketTopic($topic_id = 0, $go_back = true) { global $forum_lang; if (!System::user()->isAdmin()) { HackOff(); return; } $topic = System::database()->Select('forum_topics', "`id`='{$topic_id}' and `delete`='1'"); if (count($topic) > 0) { $topic = $topic[0]; $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 = SafeEnv($forum['topics'], 11, int) + 1; if ($forum_topics < 0) { $forum_topics = 0; } $forum_posts = SafeEnv($forum['posts'], 11, int) + SafeEnv($topic['posts'], 11, int); if ($forum_posts < 0) { $forum_posts = 0; } $forum_set = "`topics`='{$forum_topics}',`posts`='{$forum_posts}'"; System::database()->Update('forums', $forum_set, "`id`='{$forum_id}'"); // Восстанавливаем тему System::database()->Update('forum_topics', "`delete`='0'", "`id`='{$topic_id}'"); // Удаляем метку в корзине System::database()->Delete('forum_basket_topics', "`obj_id`='{$topic_id}'"); // Устанавливаем инф-ю о последнем сообщении для темы и форума ForumSetLastPost($topic_id); ForumSetLastTopic($forum_id); // Очищаем кэш форума ForumCacheClear(); if ($go_back) { if (isset($_GET['back'])) { GoRefererUrl($_GET['back']); } else { GoBack(); } } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); return; } }
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}/')); }
function IndexForumEditPosts() { global $forum_lang; if (!System::user()->isAdmin()) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_no_right_edit'] . '.</p>'); return; } if (!isset($_POST['posts'])) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_no_messages'] . '</p><br><a href="javascript:history.go(-1)">' . System::site()->Button($forum_lang['back']) . '</a>'); return; } if (isset($_GET['ok']) && $_GET['ok'] == '1') { $posts_ids = SafeEnv(explode(',', $_POST['posts']), 11, int); $moderation_result = ForumModerationPosts($_GET['edit'], $posts_ids, true); if ($moderation_result) { if (isset($_GET['back'])) { GoRefererUrl($_GET['back']); } else { GO($_POST['backurl']); } } } else { $posts_ids = array(); foreach (array_keys($_POST['posts']) as $post_id) { $posts_ids[] = SafeEnv($post_id, 11, int); } $do = SafeDB($_POST['do'], 255, str); $form_url = 'index.php?name=forum&op=edit_posts&edit=' . $do . '&ok=1'; if (isset($_GET['back'])) { $form_url .= '&back=' . SafeDB($_GET['back'], 10, str); } $vars['lang_premoderation'] = $forum_lang['moderation_messages']; $vars['posts_count'] = count($posts_ids); $vars['form_action'] = $form_url; $vars['form_name'] = 'forum_delete'; $vars['posts'] = implode(',', $posts_ids); $vars['backurl'] = $_SERVER['HTTP_REFERER']; $vars['reason'] = System::config('forum/basket') && $do == 'deleteposts'; $vars['lang_do'] = ForumModerationPosts($do, $posts_ids, false); System::site()->AddTemplatedBox($vars['lang_do'], 'module/forum_moderation.html'); System::site()->AddBlock('forum_moderation', true, false, 'mod'); System::site()->SetVars('forum_moderation', $vars); } }
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); } }
function IndexForumEditTopics() { global $forum_lang; if (!System::user()->isAdmin()) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_no_right_edit'] . '.</p>'); return; } if (!isset($_POST['topics'])) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_no_topics'] . '</p><br><a href="javascript:history.go(-1)">' . System::site()->Button('Назад') . '</a>'); return; } if (isset($_GET['ok']) && $_GET['ok'] == '1') { $topics_ids = SafeEnv(explode(',', $_POST['topics']), 11, int); $back_url = $_POST['backurl']; if (isset($_GET['back'])) { $back_url = GetRefererUrl($_GET['back']); } $moderation_result = ForumModerationTopics($_GET['edit'], $topics_ids, true); if ($moderation_result !== false) { $text = $moderation_result . '<br><br><b><a href="' . $back_url . '">' . $forum_lang['return_read'] . '</a></b>'; System::site()->AddTextBox($forum_lang['executed'], $text); } } else { $topics_ids = array(); foreach (array_keys($_POST['topics']) as $topic_id) { $topics_ids[] = SafeEnv($topic_id, 11, int); } $form_url = 'index.php?name=forum&op=edit_topics&edit=' . SafeDB($_POST['do'], 255, str) . '&ok=1'; if (isset($_GET['back'])) { $form_url .= '&back=' . SafeDB($_GET['back'], 10, str); } $moderation_content = ForumModerationTopics($_POST['do'], $topics_ids, false); if ($moderation_content !== false) { $text = System::site()->FormOpen($form_url) . System::site()->Hidden('topics', implode(',', $topics_ids)) . System::site()->Hidden('backurl', $_SERVER['HTTP_REFERER']) . $moderation_content . System::site()->Button($forum_lang['back'], 'onclick="history.go(-1);"') . System::site()->Submit($forum_lang['execute']); System::site()->AddTextBox('Модерация тем', $text); } } }
$frsy = $sy - floor($sy); $frsx1 = 1 - $frsx; $frsy1 = 1 - $frsy; // вычисление цвета нового пикселя как пропорции от цвета основного пикселя и его соседей $newcolor = floor($color * $frsx1 * $frsy1 + $color_x * $frsx * $frsy1 + $color_y * $frsx1 * $frsy + $color_xy * $frsx * $frsy); } imagesetpixel($result_MultiWave->gd, $x, $y, imagecolorallocate($result_MultiWave->gd, $newcolor, $newcolor, $newcolor)); } } // Сглаживание if (function_exists('imageconvolution')) { $matrix = array(array(1, 2, 1), array(2, 4, 2), array(1, 2, 1)); imageconvolution($result_MultiWave->gd, $matrix, 16, 0); } // Добавляем рамку //if($border > 0){ // imagerectangle($result_MultiWave->gd, 0, 0, $result_MultiWave->Width-1, $result_MultiWave->Height-1, $border_color); //} // ----------------------------------------------------------------------- header('Expires: Mon, 1 Jan 2006 00:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache'); $result_MultiWave->SendToHTTPClient(); $captcha->Destruct(); $result_image->Destruct(); $result_MultiWave->Destruct(); System::user()->Def('captcha_keystring', $code); // Восстанавливаем Referer System::user()->Def('REFERER', $_SERVER['HTTP_REFERER']); exit;
/** * Главная страница форума, список форумов в категории или подфорумов в форуме. * @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']); } } }
<?php /* * 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()->CheckAccess2('blocks', 'blocks')) { System::admin()->AccessDenied(); } /** * Возвращает имена шаблонов блоков, которые имеет текущий шаблон сайта * @return Array */ function GetBlockTemplates() { $TemplateDir = System::config('tpl_dir') . System::config('general/site_template') . '/block/'; return GetFiles($TemplateDir, false, true, '.html.htm.tpl', true); } if (isset($_GET['a'])) { $action = $_GET['a']; } else { $action = 'main'; } switch ($action) { case 'main': // SideBar
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 */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } global $db_types; $db_type = System::user()->Session('db_type'); $selected = $db_type === false || $db_type == 'flatfilesdb_setup'; System::site()->DataAdd($db_types, 'flatfilesdb_setup', 'FlatFiles (текстовые файлы)', $selected);
/* * 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()->CheckAccess2('gallery', 'gallery')) { System::admin()->AccessDenied(); } global $edit_images, $edit_cats, $edit_conf, $GalleryDir, $ThumbsDir; $edit_images = System::user()->CheckAccess2('gallery', 'edit_images'); $edit_cats = System::user()->CheckAccess2('gallery', 'edit_cats'); $edit_conf = System::user()->CheckAccess2('gallery', 'config'); $GalleryDir = System::config('gallery/gallery_dir'); $ThumbsDir = System::config('gallery/thumbs_dir'); if (isset($_GET['a'])) { $action = $_GET['a']; } else { $action = 'main'; } TAddToolLink('Изображения', 'main', 'gallery'); if ($edit_images) { TAddToolLink('Добавить изображение', 'editor', 'gallery&a=editor'); TAddToolLink('Мультизагрузка', 'upload', 'gallery&a=upload'); } if ($edit_cats) { TAddToolLink('Категории', 'cats', 'gallery&a=cats'); TAddToolLink('Добавить категорию', 'cateditor', 'gallery&a=cateditor');
/** * Удаление ключа индивидуальной настройки пользователя в базе данных. * @param $Name Имя настройки. * @param null $UserId Идентификатор пользователя. Если не указан, то используется идентификатор текущего пользователя. * @return var|null Возвращает значение удаленной настройки, или null, если настройка не найдена. */ function UserDataDelete($Name, $UserId = null) { $this_user = false; if (!isset($UserId)) { if (System::user()->Auth) { $UserId = SafeEnv($this->Get('u_id'), 11, int); $this_user = true; } else { return null; } } $Data = GetUserInfo($UserId); $Data = $Data['data']; if (isset($Data[$Name])) { $value = $Data[$Name]; unset($Data[$Name]); $system_users_cache = GetUsers(); $system_users_cache[$UserId]['data'] = $Data; if ($this_user) { System::user()->Session('u_data', $Data); } System::database()->Update('users', "`data`='" . SafeEnv(serialize($Data), 0, str) . "'", "`id`='{$UserId}'"); return $value; } }
/** * Рекурсивно проверяет ограничения доступа у всех родителей объекта и возвращает наименьшие права, а так-же ищет последнее сообщение * в ветке форума и подсчитывает общее количество тем и сообщений. * @param type $CatId * @param null $UserLevel * @param null $RankMin * @return array [no_link_guest, new_message_email, access, add_topic, add_post, close, access_reason, add_topic_reason, add_post_reason, ...] */ public function GetForumConfigRecursive($CatId, $UserLevel = null, $RankMin = null) { $config = array('no_link_guest' => '0', 'new_message_email' => '1', 'admin_theme_add' => '0', 'rang_access' => '0', 'rang_message' => '0', 'rang_add_theme' => '0', 'close_topic' => '0', 'view' => '4', 'status' => '1'); $result = array('no_link_guest' => false, 'new_message_email' => true, 'access' => true, 'add_topic' => true, 'add_post' => true, 'close' => false, 'access_reason' => '', 'add_topic_reason' => '', 'add_post_reason' => '', 'topics' => 0, 'posts' => 0, 'last_post' => 0, 'last_poster_id' => 0, 'last_poster_name' => '', 'last_title' => '', 'last_id' => 0); // Подсчитываем наименьшие права $parents = $this->GetAllParent($CatId); // У всех родителей и у себя foreach ($parents as &$parent) { if ($parent['no_link_guest'] == '1') { $config['no_link_guest'] = '1'; } if ($parent['new_message_email'] == '0') { $config['new_message_email'] = '0'; } if ($parent['admin_theme_add'] == '1') { $config['admin_theme_add'] = '1'; } if ($parent['rang_access'] != '0' && $config['rang_access'] == '0') { $config['rang_access'] = $parent['rang_access']; } elseif ($parent['rang_access'] != '0' && $config['rang_access'] != '0' && GetRankInfo($parent['rang_access'], 'min') > GetRankInfo($config['rang_access'], 'min')) { $config['rang_access'] = $parent['rang_access']; } if ($parent['rang_message'] != '0' && $config['rang_message'] == '0') { $config['rang_message'] = $parent['rang_message']; } elseif ($parent['rang_message'] != '0' && $config['rang_message'] != '0' && GetRankInfo($parent['rang_message'], 'min') > GetRankInfo($config['rang_message'], 'min')) { $config['rang_message'] = $parent['rang_message']; } if ($parent['rang_add_theme'] != '0' && $config['rang_add_theme'] == '0') { $config['rang_add_theme'] = $parent['rang_add_theme']; } elseif ($parent['rang_add_theme'] != '0' && $config['rang_add_theme'] != '0' && GetRankInfo($parent['rang_add_theme'], 'min') > GetRankInfo($config['rang_add_theme'], 'min')) { $config['rang_add_theme'] = $parent['rang_add_theme']; } if ($parent['close_topic'] == '1') { $config['close_topic'] = '1'; } if ($parent['view'] < $config['view']) { $config['view'] = $parent['view']; } if ($parent['status'] == '0') { $config['status'] = '0'; } } $user_rank = array(); if (isset($UserLevel)) { $user_level = $UserLevel; if (isset($RankMin)) { $user_rank['min'] = $RankMin; } else { $user_rank['min'] = 0; } } else { $user_level = System::user()->AccessLevel(); if ($user_level == ACCESS_MEMBER) { // Пользователь $user_rank = GetUserRankInfo(); // Ранг текущего пользователя } } $result['no_link_guest'] = $user_level == ACCESS_GUEST && $config['no_link_guest'] == '1'; // Только для гостей $result['new_message_email'] = $user_level < ACCESS_MEMBER && $config['new_message_email'] == '1'; // Только для пользователй // Доступ if (!AccessIsResolved($config['view'])) { // Проверяем доступ по view $result['access'] = false; $result['access_reason'] = 'Доступ в этот раздел ограничен.'; } elseif ($config['status'] == '0') { $result['access'] = false; $result['access_reason'] = 'Раздел отключён.'; } elseif ($user_level != ACCESS_ADMIN && $config['rang_access'] != '0') { if ($user_level > ACCESS_MEMBER) { // Гость $result['access'] = false; $result['access_reason'] = 'Доступ в этот раздел ограничен для гостей.'; } elseif ($user_level == ACCESS_MEMBER && GetRankInfo($config['rang_access'], 'min') > $user_rank['min']) { // Пользователь $result['access'] = false; $result['access_reason'] = 'Доступ в этот раздел разрешен только пользователям с рангом "' . SafeDB(GetRankInfo($config['rang_access'], 'title'), 255, str) . '" и выше.'; } } // Добавление тем if (!$result['access']) { $result['add_topic'] = false; $result['add_topic_reason'] = $result['access_reason']; } elseif ($user_level != ACCESS_ADMIN) { if ($user_level > ACCESS_MEMBER) { $result['add_topic'] = false; $result['add_topic_reason'] = 'Гости не могут создавать темы.'; } elseif ($config['close_topic'] == '1') { $result['add_topic'] = false; $result['add_topic_reason'] = 'Форум закрыт для обсуждения.'; } elseif ($config['admin_theme_add'] == '1') { $result['add_topic'] = false; $result['add_topic_reason'] = 'Создавать новые темы могут только администраторы.'; } elseif ($config['rang_add_theme'] != '0') { if ($user_level == ACCESS_MEMBER && GetRankInfo($config['rang_add_theme'], 'min') > $user_rank['min']) { // Пользователь $result['add_topic'] = false; $result['add_topic_reason'] = 'Создание тем разрешено только пользователям с рангом "' . SafeDB(GetRankInfo($config['rang_add_theme'], 'title'), 255, str) . '" и выше.'; } } } // Добавление сообщений if (!$result['access']) { $result['add_post'] = false; $result['add_post_reason'] = $result['access_reason']; } elseif ($user_level != ACCESS_ADMIN) { if ($user_level > ACCESS_MEMBER) { $result['add_post'] = false; $result['add_post_reason'] = 'Гости не могут добавлять сообщения.'; } elseif ($config['close_topic'] == '1') { $result['add_post'] = false; $result['add_post_reason'] = 'Форум закрыт для обсуждения.'; } elseif ($config['rang_add_theme'] != '0') { if ($user_level == ACCESS_MEMBER && GetRankInfo($config['rang_message'], 'min') > $user_rank['min']) { // Пользователь $result['add_post'] = false; $result['add_post_reason'] = 'Добавление сообщений разрешено только пользователям с рангом "' . SafeDB(GetRankInfo($config['rang_message'], 'title'), 255, str) . '" и выше.'; } } } // Форум закрыт $result['close'] = $config['close_topic'] == '1'; // Ищем данные о последнем посте, подсчитываем общее количество тем и сообщений $childs = $this->GetAllChildId($CatId); foreach ($childs as $child) { $child = $this->IdCats[$child]; $result['topics'] += $child['topics']; $result['posts'] += $child['posts']; if ($result['last_post'] < $child['last_post']) { $result['last_post'] = $child['last_post']; $result['last_poster_id'] = $child['last_poster_id']; $result['last_poster_name'] = $child['last_poster_name']; $result['last_title'] = $child['last_title']; $result['last_id'] = $child['last_id']; } } return $result; }
function AdminNewsSave() { global $news_access_editnews; if (!$news_access_editnews) { System::admin()->AccessDenied(); } $author = SafeEnv(System::user()->Get('u_name'), 255, str); // Получаем параметры $topic_id = SafeEnv($_POST['topic_id'], 11, int); $title = SafeEnv($_POST['title'], 255, str); // Модуль SEO $seo_title = SafeEnv($_POST['seo_title'], 255, str); $seo_keywords = SafeEnv($_POST['seo_keywords'], 255, str); $seo_description = SafeEnv($_POST['seo_description'], 255, str); // $allow_comments = EnToInt($_POST['acomments']); $icon = SafeEnv($_POST['icon'], 255, str); $start_text = SafeEnv($_POST['shorttext'], 0, str, false); $end_text = SafeEnv($_POST['continuation'], 0, str, false); $auto_br = EnToInt($_POST['auto_br']); $view = ViewLevelToInt(SafeEnv($_POST['view'], 15, str)); $enabled = EnToInt($_POST['enabled']); $img_view = SafeEnv($_POST['img_view'], 1, int); $public_date = $_POST['public_date']; $public_time = $_POST['public_time']; $public = strtotime(str_replace('.', '-', $public_date) . ' ' . $public_time); $comments_counter = 0; $hit_counter = 0; if (isset($_GET['id'])) { $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('news', "`id`='{$id}'"); $news = System::database()->FetchRow(); $author = SafeEnv($news['author'], 255, str); $comments_counter = SafeEnv($news['comments_counter'], 11, int); $hit_counter = SafeEnv($news['hit_counter'], 11, int); if ($topic_id != $news['topic_id'] && $news['enabled'] == 1) { CalcNewsCounter($news['topic_id'], false); CalcNewsCounter($topic_id, true); } if ($enabled != $news['enabled']) { CalcNewsCounter($topic_id, $enabled); } } $vals = Values('', $title, $public, $author, $topic_id, $allow_comments, $icon, $start_text, $end_text, $auto_br, $comments_counter, $hit_counter, $view, $enabled, $img_view, $seo_title, $seo_keywords, $seo_description); if (isset($id)) { System::database()->Update('news', $vals, "`id`='{$id}'", true); Audit('Редактирование новости "' . $title . '" (id: ' . $id . ')'); } else { System::database()->Insert('news', $vals); CalcNewsCounter($topic_id, true); Audit('Новости: Добавление новости "' . $title . '"'); } AdminNewsClearBlockCache(); if (isset($_REQUEST['back'])) { GoRefererUrl($_REQUEST['back']); } else { GO(ADMIN_FILE . '?exe=news'); } }
/** * Подключает модуль. * @param $ClassName * @param bool $Admin * @return mixed */ public static function run($ClassName, $Admin = false) { $anns = GetAnnotations($ClassName); $action_param = isset($anns['class']['ActionParam']) ? $anns['class']['ActionParam'] : 'a'; $action = isset($_GET[$action_param]) ? $_GET[$action_param] : 'main'; $title = isset($anns['class']['Title']) ? $anns['class']['Title'] : ''; if ($Admin && $title != '') { self::admin()->AddSubTitle($title); } foreach ($anns['methods'] as $method => $params) { if (!isset($params['Action'])) { continue; } $actions = array(); $titles = array(); if (is_string($params['Action'])) { $actions[] = $params['Action']; } else { $actions = $params['Action']; } /* * Параметр ActionParam класса модуля совпадает с параметром Action метода. */ if (($s = array_search($action, $actions)) !== false) { $params['Action'] = $action; $anns['Action'] = $action; /* * Проверка доступа. * Если есть заголовок аннотации Access проверяем доступ для администратора. */ if (isset($params['Access']) && !System::user()->CheckAccess2($params['Access'][0], $params['Access'][1])) { if ($Admin) { System::admin()->AccessDenied(); } else { Header('HTTP/1.1 403 Forbidden'); System::site()->InitPage(); System::site()->AddTextBox('Ошибка', '<p align="center">Доступ запрещен.</p>'); System::site()->TEcho(); exit; } } /* * Генерируем массив заголовков. */ if (isset($params['Title'])) { if (is_string($params['Title'])) { $titles[] = $params['Title']; } else { $titles = $params['Title']; } } else { $titles[] = $title; } /* * Берём заголовок для этого действия (Action) */ $title = $titles[$s]; $params['Title'] = $title; $anns['Title'] = $title; if ($title != '') { if ($Admin) { self::admin()->AddSubTitle($title); } else { self::site()->SetTitle($title); } } /* * Создаём объект и вызываем метод. */ $mod_obj = new $ClassName($anns); call_user_func(array($mod_obj, $method), $params); } } }
* LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } System::admin()->AddSubTitle('Администраторы'); global $editprofile, $action; if (isset($_GET['a'])) { $action = $_GET['a']; } else { $action = 'main'; } $editprofile = ($action == 'editadmin' || $action == 'adminsave') && !System::user()->isSuperUser() && isset($_GET['id']) && $_GET['id'] == System::user()->Get('u_id'); if (!System::user()->isSuperUser() && !$editprofile) { System::admin()->AccessDenied(); } if (!$editprofile) { TAddToolLink('Администраторы', 'main', 'admins'); TAddToolLink('Группы администраторов', 'groups', 'admins&a=groups'); TAddToolLink('Добавить группу', 'addgroup', 'admins&a=addgroup'); TAddToolBox($action); } switch ($action) { case 'main': AdminsMain(); break; case 'groups': AdminsGroups(); break;
public function DeletePost($post_id = null, $first = true) { if ($post_id == null) { if (isset($_GET['post_id'])) { $post_id = $_GET['post_id']; } } if ($post_id != null) { System::database()->Select($this->PostsTable, "`id`='{$post_id}'"); $post = System::database()->FetchRow(); } else { $text = 'post_id нигде не инициализирована.'; System::site()->AddTextBox('Ошибка.', '<p align="center">' . $text . '</p>'); return 0; } if ($first) { if (System::user()->Auth) { $editing = System::user()->Get('u_id') == $post['user_id'] || System::user()->isAdmin(); } else { $editing = $post['user_id'] == '0' && $post['user_ip'] == getip(); } if (!$editing) { $text = 'У вас недостаточно прав для удаления этого сообщения.'; System::site()->AddTextBox('Ошибка.', '<p align="center">' . $text . '</p>'); return 0; } } if (!$first || isset($_GET['ok'])) { $del_count = 1; $parent_posts = System::database()->Select($this->PostsTable, "`post_parent_id`='{$post_id}'"); foreach ($parent_posts as $post) { $del_count += $this->DeletePost(SafeDB($post['id'], 11, int), false); } System::database()->Delete($this->PostsTable, "`id`='{$post_id}'"); if (System::user()->isAdmin()) { Audit('Posts: Удаление комментария "' . $this->PostsTable . '"/"' . "(user: {$post['user_name']}, object_id: {$post['object_id']})" . '"'); } return $del_count; } else { $text = '<br />Удалить сообщение?<br /><br />' . '<a href="' . $this->DeletePageUrl . '&post_id=' . $post_id . '&ok=1">Да</a> <a href="javascript:history.go(-1)">Нет</a><br /><br />'; System::site()->AddTextBox('', '<p align="center">' . $text . '</p>'); return 0; } }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } if (!System::user()->isSuperUser()) { System::admin()->AccessDenied(); } System::admin()->AddSubTitle('Расширения'); $action = isset($_GET['a']) ? $_GET['a'] : 'main'; System::admin()->SideBarAddMenuItem('Расширения', 'exe=extensions&a=main', 'main'); System::admin()->SideBarAddMenuItem('Установить', 'exe=extensions&a=installlist', 'installlist'); System::admin()->SideBarAddMenuItem('Загрузить', 'exe=extensions&a=uploadform', 'uploadform'); System::admin()->SideBarAddMenuBlock('', $action); switch ($action) { case 'main': AdminExtensions(); break; case 'installlist': AdminExtensionsInstallList(); break; case 'install': AdminExtensionsInstall(); break; case 'uploadform': AdminExtensionsUploadForm();
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 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']); }
} $text = "<div class=\"license_frame\"><div>" . $license . "</div></div>"; $this->SetContent($text); $this->AddButton('Назад', 'main&p=2'); $this->AddButton('Принимаю', 'install&p=2'); break; case 2: // Выбор типа базы данных global $db_types; $db_types = array(); SetupPlugins('db_types'); $this->SetTitle("Выбор типа Базы данных."); $this->OpenForm('install&p=3'); $text = '<p>Выберите тип Базы данных: </p>' . System::site()->Select('db_type', $db_types, true); $this->SetContent($text); $this->AddButton('Назад', 'install&p=1'); $this->AddSubmitButton('Далее'); break; case 3: // Перенаправление соответственно выбранному типу БД if (!isset($_POST['db_type'])) { $this->SetTitle('Ошибка'); $this->SetContent('Вы не выбрали тип Базы данных.'); $this->AddButton('Назад', 'install&p=2'); break; } $smod = SafeEnv($_POST['db_type'], 255, str); System::user()->Session('db_type', $smod); GO('setup.php?mod=' . $smod); break; }
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 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); }