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>'); } }
function MessagesRender($msg) { global $userAccess; $disableMsg = ''; $total = TotalTime(time(), $msg['date'] + Day2Sec * $msg['expire']); if ($total === false) { if ($msg['expire'] != 0) { $disableMsg .= "and `id`='" . $msg['id'] . "'"; return; } } if (VisibilityConditionsCheck($msg['showin'], $msg['showin_uri'])) { $adin = ''; if ($userAccess == '1') { if ($msg['expire'] != '0') { $vt = 'Срок истекает через ' . $total['sdays'] . ($total['hours'] != 0 ? ' и ' . $total['shours'] : ''); } else { $vt = 'Неограниченно'; } $adin = '(Просматривают: ' . ViewLevelToStr($msg['view'], 'Только администраторы', 'Только пользователи', 'Только анонимные пользователи', 'Все посетители') . ' - ' . $vt . ' - <a href="' . ADMIN_FILE . '?exe=messages&a=msgeditor&id=' . $msg['id'] . '">Редактировать</a>)'; } if ($msg['view_title'] == 1) { // Показывать заголовок $title = $msg['title']; } else { $title = ''; } System::site()->AddMessage($title, $msg['text'], $adin); } }
function ScriptsAddCss($FileNameInScripts, $OtherParams = '') { if (USE_GZIP_STATIC) { $FileNameInScripts .= '.gz'; } $FileNameInScripts .= '.css'; System::site()->AddCSSFile('scripts/' . $FileNameInScripts, true, false, $OtherParams); }
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); } }
/** * Конструктор * @param <type> $ParamName * @param string|StarkytBlock $Block * @param string $ParamName */ public function __construct($Page, $Block = 'navigation', $ParamName = 'page') { $this->page = $Page; $this->param_name = $ParamName; if (self::$StarkytDefault == null) { $this->Starkyt = System::site(); } else { $this->Starkyt = self::$StarkytDefault; } $this->template_block = $Block; }
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}/')); }
/** * Генерирует данные для элемента формы Select в виде дерева. * * @param int|array $sel_id Выделенный элемент. * @param bool $viewitems Показать количество объектов в скобках. * @param bool $root Добавить корневой элемент. * @param int $id_exclude_childs * @param bool $DisableCategories * @global array $FCatsData * @internal param \type $id Идентификатор форума у которого будут отсеиваться дочерние форумы (для редактирования форума). * @return array */ public function GetCatsDataF($sel_id, $viewitems = true, $root = false, $id_exclude_childs = 0, $DisableCategories = false) { global $FCatsData; $FCatsData = array(); $this->childs = array(); if (!is_array($sel_id)) { $sel_id = array($sel_id); } $this->sel_id = $sel_id; $this->viewitems = $viewitems; $this->DisableCats = $DisableCategories; if ($id_exclude_childs != 0) { $this->childs = $this->GetAllAccessForumId($id_exclude_childs); } if ($root) { System::site()->DataAdd($FCatsData, '0', $this->TopCatName, in_array(0, $sel_id)); } $this->ListingTree(0, array($this, 'ForumCatsData')); return $FCatsData; }
function AntispamEmail($Email, $AddJava = true) { static $javaAdd = false; if (!$javaAdd && $AddJava) { System::site()->AddJS(' function email(login, domain){ mail = login+"@"+domain; mail = \'<a href="mailto:\'+mail+\'" target="_blank">\'+mail+\'</a>\'; document.write(mail); } '); $javaAdd = true; } $Email = explode('@', $Email); if (count($Email) == 2) { return '<script>email(\'' . $Email[0] . '\',\'' . $Email[1] . '\');</script>'; } else { return ''; } }
\t\t\t\t} \t\t\t\taceel.hide(); \t\t\t\tecediv.css(dest); \t\t\t\tvar {$var} = ace.edit("{$id}_replace"); \t\t\t\t{$var}.getSession().setValue(aceeldom.defaultValue); \t\t\t\t{$var}.getSession().on('change', function(){ \t\t\t\t\taceel.val({$var}.getSession().getValue()); \t\t\t\t}); \t\t\t}else{ \t\t\t\tvar {$var} = ace.edit("{$id}"); \t\t\t} \t\t\t{$var}.getSession().setUseSoftTabs({$softwraps}); \t\t\t{$var}.getSession().setUseWrapMode({$wordwrap}); \t\t\t{$var}.setHighlightActiveLine({$highlightline}); \t\t\t{$var}.setShowPrintMargin({$printmargin}); \t\t\t{$var}.getSession().setTabSize({$tabsize}); \t\t\taceel.val({$var}.getSession().getValue()); JS ); } ScriptsAddCss('ace/theme'); if (isset($params['theme']) && $params['theme'] != 'textmate') { ScriptsAddJs('ace/src/theme-' . $params['theme']); System::site()->AddOnLoadJS($var . '.setTheme("ace/theme/' . $params['theme'] . '");'); } if (isset($params['mode'])) { ScriptsAddJs('ace/src/mode-' . $params['mode']); System::site()->AddOnLoadJS('var Mode = require("ace/mode/' . $params['mode'] . '").Mode;'); System::site()->AddOnLoadJS($var . '.getSession().setMode(new Mode());'); } return $var;
function AdminBlocksEdit($a) { global $config, $site, $user; // Для обратной совместимости со старыми блоками $showin = array('ALL_EXCEPT'); $showin_uri = array(); $template = ''; $b_vi = 4; $b_en = 1; if (isset($_POST['type']) || $a == 'edit') { $b_pos = array('L' => false, 'R' => false, 'T' => false, 'B' => false); $b_pos = array('L' => false, 'R' => false, 'T' => false, 'B' => false, 'A' => false); $b_title = ''; $b_vi = 4; $b_en = 1; $block_config = ''; // Используется в подключаемых файлах if ($a == 'edit') { System::database()->Select('blocks', "`id`='" . SafeEnv($_GET['id'], 11, int) . "'"); $r = System::database()->FetchRow(); $b_title = SafeDB($r['title'], 255, str); $b_pos[SafeDB($r['position'], 1, str)] = true; $b_vi = SafeDB($r['view'], 1, int); $b_en = SafeDB($r['enabled'], 1, bool); $b_type = SafeDB($r['type'], 255, str); $template = SafeDB($r['template'], 255, str); $block_config = $r['config']; // Используется в подключаемых файлах $title = 'Редактирование блока'; $a_form = ADMIN_FILE . '?exe=blocks&a=update&id=' . SafeEnv($_GET['id'], 11, int); $button = 'Сохранить изменения'; if ($r['showin'] != '') { $showin = unserialize($r['showin']); } if ($r['showin_uri'] != '') { $showin_uri = unserialize($r['showin_uri']); } } else { $a_form = ADMIN_FILE . '?exe=blocks&a=newsave'; $b_type = SafeEnv($_POST['type'], 255, str); $title = 'Настройка блока'; $button = 'Создать'; $showin[] = array('ALL_EXCEPT'); } FormRow('Заголовок', System::site()->Edit('title', $b_title, false, 'style="width:400px;" class="autofocus"')); $constructor = System::config('blocks_dir') . $b_type . '/constructor.php'; if (is_file($constructor)) { include_once $constructor; } $btems = GetBlockTemplates(); $temdata = array(); foreach ($btems as $tem) { System::site()->DataAdd($temdata, $tem, $tem, $tem == $template); } FormRow('Шаблон блока', System::site()->Select('template', $temdata)); System::site()->DataAdd($posdata, 'Left', 'Колонка слева', $b_pos['L']); System::site()->DataAdd($posdata, 'Right', 'Колонка справа', $b_pos['R']); System::site()->DataAdd($posdata, 'Top', 'В центре сверху', $b_pos['T']); System::site()->DataAdd($posdata, 'Bottom', 'В центре снизу', $b_pos['B']); //System::site()->DataAdd($posdata, 'ABottom', 'A В центре снизу', $b_pos['A']); FormRow('Позиционирование', System::site()->Select('position', $posdata)); VisibilityConditionsAdmin($showin, $showin_uri); FormRow('Кто видит', System::site()->Select('view', GetUserTypesFormData($b_vi))); FormRow('Включить', System::site()->Select('enabled', GetEnData($b_en, 'Да', 'Нет'))); AddCenterBox($title); AddForm('<form action="' . $a_form . '" method="post">' . System::site()->Hidden('type', $b_type), System::site()->Button('Отмена', 'onclick="history.go(-1);"') . System::site()->Submit($button)); } else { GO(ADMIN_FILE); } }
/** * Главная страница форума, список форумов в категории или подфорумов в форуме. * @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; } 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);
if ($action == 'editfield') { if (isset($_GET['where'])) { $where = $_GET['where']; $where_url = '&where=' . SafeDB($_GET['where'], 255, str); } $edit = true; $index = SafeEnv($_GET['index'], 255, int); $rows = System::database()->Select($table, $where); $row = $rows[$index]; } $i = 0; foreach ($columns as $col) { if ($edit) { $val = HtmlChars($row[$columns[$i]['name']]); $cap = 'Сохранить'; $title = 'Редактирование записи'; } else { $val = ''; $cap = 'Добавить'; $title = 'Добавление записи'; } if (strtolower($col['type']) != 'text') { FormRow('<font color="#0000FF">' . (isset($col['auto_increment']) && $col['auto_increment'] == true ? '<u>' . $col['name'] . '</u>' : $col['name']) . '</font>' . '<br /><font color="#666666">' . $col['type'] . (isset($col['length']) ? '(' . $col['length'] . ')</font>' : '</font>'), System::admin()->Edit($col['name'], $val, false, 'style="width: 400px;"' . ($i == 0 ? ' class="autofocus"' : ''))); } else { FormRow('<font color="#0000FF">' . $col['name'] . '</font>', System::admin()->TextArea($col['name'], $val, 'style="width: 400px; height: 200px;"' . ($i == 0 ? ' class="autofocus"' : ''))); } $i++; } AddCenterBox($title); AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=' . ($edit ? 'editsave' : 'insertsave') . '&name=' . $table . ($edit ? '&index=' . $index : '') . $where_url . $back . '" method="post">', ($edit ? System::site()->Button('Отмена', 'onclick="history.go(-1)"') : '') . System::admin()->Submit($cap)); AdminFdbAdminGenTableMenu($table);
function AdminGalleryUploadForm() { global $edit_images; if (!$edit_images) { System::admin()->AccessDenied(); } $top = 'Мультизагрузка'; $cat_id = isset($_GET['to']) ? SafeDB($_GET['to'], 11, int) : 0; $cats_data = AdminGalleryGetTree()->GetCatsData($cat_id); if (count($cats_data) == 0) { $back_to_form = SaveRefererUrl(); AddTextBox($top, 'Нет категорий для добавления! ' . System::admin()->SpeedButton('Добавить категорию', ADMIN_FILE . '?exe=gallery&a=cateditor&back=' . $back_to_form, '', true, true)); return; } System::admin()->AddCenterBox($top); UseScript('swfupload'); $formid = uniqid(); // Уникальный ID формы $_SESSION['uploadforms'][$formid] = array('photos' => array(), 'category' => '0', 'allow_comments' => '1', 'allow_votes' => '1', 'view' => '4', 'show' => '1'); System::admin()->AddOnLoadJS(Indent(' window.photo_id = 1; window.allUploadComplete = false; window.photosCountFiles = 0; window.photosUploaded = 0; // SWFUpload if(window.gallery_swfu){ window.gallery_swfu.destroy(); }else{ window.GallerySubmitFormGuard = function(){ if(window.photosCountFiles == 0){ alert("Выберите фотографии для загрузки"); return false; } if(!window.allUploadComplete){ window.gallery_swfu.startUpload(); Admin.ShowSplashScreen("Загрузка фотографий на хостинг"); return false; } return true; } } window.gallery_swfu = new SWFUpload({ upload_url: "' . ADMIN_FILE . '?exe=gallery&a=upload&formid=' . $formid . '", file_post_name : "up_image", post_params: { "action": "upload" }, file_size_limit: "100 MB", file_types: "*.jpg; *.png; *.jpeg; *.gif", file_types_description: "Все файлы", file_upload_limit: 0, file_queue_limit: 0, debug: false, button_placeholder_id: "uploadbutton", button_width: "54", button_height: "18", button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT, button_text: "<span class=\\"btnCap\\">Обзор<span>", button_text_style: ".btnCap{ align: center; color: #4F4F4F; font-family: Verdana, Tahoma, sans-serif; font-weight: bold; }", button_text_left_padding: 4, button_text_top_padding: 1, file_dialog_complete_handler: function(numFilesSelected, numFilesQueued, total){ $("#uploadFilesCount").html("Выбрано " + total + " файл(ов)"); window.photosCountFiles = total; }, upload_progress_handler: function(file, bytesLoaded, bytesTotal){ var current = window.photosUploaded + 1; Admin.SetSplashScreenMessage("Загрузка фотографий на хостинг: " + current + "/" + window.photosCountFiles + " (" + Math.round(bytesLoaded/bytesTotal*100) + "%)"); }, upload_complete_handler: function(file){ window.photosUploaded++; if(window.photosUploaded == window.photosCountFiles){ window.allUploadComplete = true; $("#galleryForm").submit(); } } }); ')); FormRow('В категорию', System::site()->Select('category', $cats_data)); FormRow('Выберите файлы', RemoveIndent(' <div style="float: left;" id="uploadFilesCount">Выбрано 0 файл(ов)</div> <div class="button" style="float: right; border: 1px #ccc solid;"> <span id="uploadbutton"> <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a> </span> </div> ')); FormRow('Комментарии', System::site()->Select('allow_comments', GetEnData(true, 'Разрешить', 'Запретить'))); FormRow('Оценки', System::site()->Select('allow_votes', GetEnData(true, 'Разрешить', 'Запретить'))); FormRow('Кто видит', System::site()->Select('view', GetUserTypesFormData(4))); FormRow('Показать', System::site()->Select('show', GetEnData(true, 'Да', 'Нет'))); AddForm('<form action="' . ADMIN_FILE . '?exe=gallery&a=upload&formid=' . $formid . '" method="post" onsubmit="return GallerySubmitFormGuard();" id="galleryForm">', System::admin()->Hidden('action', 'preview') . System::admin()->Submit('Загрузить')); }
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 (!isset($col['default'])) { $col['default'] = ''; } if (!isset($col['attributes'])) { $col['attributes'] = ''; } if (!isset($col['auto_increment'])) { $col['auto_increment'] = false; } $func = ''; $func .= SpeedButton('Просмотреть информацию для установки', ADMIN_FILE . '?exe=dbadmin&a=viewcollinfo&name=' . $name . '&collid=' . $i, 'images/admin/info.png'); $func .= System::admin()->SpeedConfirm('Удалить колонку', ADMIN_FILE . '?exe=dbadmin&a=deletecoll&name=' . $name . '&collid=' . $i, 'images/admin/delete.png', 'Удалить колонку?'); $text .= '<tr> <td>' . $i . '</td> <td>' . SafeDB($col['name'], 255, str) . '</td> <td>' . SafeDB($col['type'], 255, str) . (isset($col['length']) ? '(' . SafeDB($col['length'], 11, int) . ')' : '') . '</td> <td>' . SafeDB($col['attributes'], 255, str) . '</td> <td>' . ($col['notnull'] ? '<font color="#0000FF">Нет</font>' : '<font color="#FF0000">Да</font>') . '</td> <td>' . SafeDB($col['default'], 255, str) . '</td> <td>' . ($col['auto_increment'] ? '<font color="#FF0000">Да</font>' : '<font color="0000FF">Нет</a>') . '</td> <td>' . $func . '</td>'; System::site()->DataAdd($selcoldata, $i, SafeDB($col['name'], 255, str), $i == $colcount); $i++; } $text .= '</table><br />'; AddCenterBox('Структура таблицы "' . $name . '"'); AddText($text); System::admin()->FormTitleRow('Вставить колонку'); FormRow('После', System::site()->Select('toindex', $selcoldata)); AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=newcoll&name=' . $name . '" method="post">', $site->Submit('Далее', 'title="Перейти к след. шагу добавления колонки."')); AdminFdbAdminGenTableMenu($name);
$license = 'Текст лицензии вы можете прочитать на сайте <a href="http://linkorcms.ru">http://linkorcms.ru</a>.<br> Внимание, это ознакомительная тестовая версия, использование в других целях запрещено.'; } $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);
/** * Подключает модуль. * @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); } } }
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(); } }
public function SEcho() { System::site()->TEcho(); }
function AdminsDeleteGroup() { if (!isset($_GET['id'])) { GO(ADMIN_FILE . '?exe=admins&a=groups'); exit; } $id = SafeEnv($_GET['id'], 11, int); if (isset($_GET['ok']) && SafeEnv($_GET['ok'], 1, int) == '1') { // Очищаем кэш if (System::cache()->HasCache(system_cache, 'usertypes')) { System::cache()->Delete(system_cache, 'usertypes'); } System::database()->Select('users', "`access`='" . $id . "'"); $num_users = System::database()->NumRows(); System::database()->Select('usertypes', "`id`='{$id}'"); $group = System::database()->FetchRow(); if ($num_users > 0) { if (!isset($_GET['users'])) { $text = 'К этой группе принадлежат ' . $num_users . ' пользователей. Вы можете:<br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1&users=del">Удалить их...</a> <br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . SafeEnv($_GET['id'], 11, int) . '&ok=1&users=move">Переместить их в другую группу.</a>'; AddTextBox('Внимание!', $text); } else { if ($_GET['users'] == 'del') { System::database()->Delete('users', "`access`='" . $id . "'"); } elseif ($_GET['users'] == 'move' && !isset($_POST['to'])) { $text = 'Выберите группу, в которую Вы желаете переместить пользователей:<br />' . '<form action="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1&users=move" method="post">'; System::database()->Select('usertypes', "`id`<>'" . $id . "'"); System::site()->DataAdd($group_data, '-1', 'Пользователи'); while ($tp = System::database()->FetchRow()) { System::site()->DataAdd($group_data, $tp['id'], $tp['name']); } $text .= System::site()->Select('to', $group_data) . '<br />'; $text .= System::site()->Submit('Продолжить') . '<br />'; $text .= '</form>'; AddTextBox('Внимание!', $text); return; } elseif ($_GET['users'] == 'move' && isset($_POST['to'])) { $to = SafeEnv($_POST['to'], 11, int); if ($to == '-1') { $set = "type='2',access='" . $to . "'"; } else { $set = "access='" . $to . "'"; } System::database()->Update('users', $set, "`access`='" . $id . "'"); } } } System::database()->Delete('usertypes', "`id`='" . $id . "'"); Audit('Администраторы: Удаление группы администраторов "' . $group['name'] . '"'); GO(ADMIN_FILE . '?exe=admins&a=groups'); } else { System::database()->Select('usertypes', "`id`='" . $id . "'"); $group = System::database()->FetchRow(); $text = 'Вы действительно хотите удалить группу "' . SafeDB($group['name'], 255, str) . '"?<br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1">Да</a> <a href="javascript:history.go(-1)">Нет</a>'; AddTextBox("Предупреждение", $text); } }
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; } }
function AdminConfigGroupEdit() { $id = SafeEnv($_GET['id'], 11, int); System::database()->Select(AdminConfigGroupTable(), "`id`='{$id}'"); $group = System::database()->FetchRow(); FormRow('Имя', System::site()->Edit('name', SafeDB($group['name'], 255, str), false, 'style="width:400px;" class="autofocus"')); FormRow('Заголовок', System::site()->Edit('hname', SafeDB($group['hname'], 255, str), false, 'style="width:400px;"')); FormRow('Описание', System::site()->TextArea('description', SafeDB($group['description'], 255, str), 'style="width:400px;height:100px;"')); FormRow('Видимая', System::site()->Check('visible', '1', $group['visible'] == '1')); AddCenterBox('Редактирование группы'); AddForm('<form action="' . ADMIN_FILE . '?exe=config_admin&a=savegroup&id=' . $id . (AdminConfigPlugins() ? '&plugins=1' : '') . '" method="post">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Submit('Сохранить')); }
function AdminExtensionsInstallList() { global $config; $mod_dir = $config['mod_dir']; $plug_dir = $config['plug_dir']; $block_dir = $config['blocks_dir']; $temp_dir = $config['tpl_dir']; $list = array(); $title = 'Установка расширений'; System::admin()->AddSubTitle($title); // Загружаем информацию об установленных модулях $installed_mods = array(); $installed_plugins = array(); $installed_blocks = array(); $installed_templates = array(); System::database()->Select('modules'); while ($mod = System::database()->FetchRow()) { $installed_mods[] = $mod['folder']; } System::database()->Select('plugins'); while ($mod = System::database()->FetchRow()) { $installed_plugins[] = ($mod['group'] != '' ? $mod['group'] . '/' : '') . $mod['name']; } System::database()->Select('block_types'); while ($mod = System::database()->FetchRow()) { $installed_blocks[] = $mod['folder']; } System::database()->Select('templates'); while ($mod = System::database()->FetchRow()) { $installed_templates[] = $mod['folder']; } // Поиск модулей $mod_folders = GetFolders($mod_dir); foreach ($mod_folders as $folder) { if (!in_array($folder, $installed_mods)) { $info = ExtLoadInfo($mod_dir . $folder); if ($info !== false) { $info['type'] = EXT_MODULE; $info['path'] = $mod_dir . $folder . '/'; $info['folder'] = $folder; if (is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) { $list[] = $info; } } } } // Поиск плагинов $plug_folders = GetFolders($plug_dir); foreach ($plug_folders as $folder) { $info = false; if (is_file($plug_dir . $folder . '/info.php')) { // Возможно группа $info = ExtLoadInfo($plug_dir . $folder); } if (isset($info['1.3_old_plugins_group']) || $info === false) { // Группа $plug_folders2 = GetFolders($plug_dir . $folder . '/'); foreach ($plug_folders2 as $folder2) { if (!in_array($folder . '/' . $folder2, $installed_plugins)) { $info = ExtLoadInfo($plug_dir . $folder . '/' . $folder2); if ($info !== false) { $info['type'] = EXT_PLUGIN; $info['path'] = $plug_dir . $folder . '/' . $folder2 . '/'; $info['group'] = $folder; $info['folder'] = $folder2; if (isset($info['1.3']) || is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) { $list[] = $info; } } } } } else { // Отдельный плагин if (!in_array($folder, $installed_plugins)) { if ($info !== false) { $info['type'] = EXT_PLUGIN; $info['path'] = $plug_dir . $folder . '/'; $info['folder'] = $folder; if (isset($info['1.3']) || is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) { $list[] = $info; } } } } } // Поиск блоков $block_folders = GetFolders($block_dir); foreach ($block_folders as $folder) { if (!in_array($folder, $installed_blocks)) { $info = ExtLoadInfo($block_dir . $folder); if ($info !== false) { $info['type'] = EXT_BLOCK; $info['path'] = $block_dir . $folder . '/'; $info['folder'] = $folder; if (is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) { $list[] = $info; } } } } // Поиск шаблонов $temp_folders = GetFolders($temp_dir); foreach ($temp_folders as $folder) { if (!in_array($folder, $installed_templates)) { $info = ExtLoadInfo($temp_dir . $folder); if ($info === false) { $info = array('name' => $folder, 'description' => '', 'author' => '', 'site' => '', 'version' => '1.0', 'admin' => false); } $info['type'] = EXT_TEMPLATE; $info['path'] = $temp_dir . $folder . '/'; $info['folder'] = $folder; $list[] = $info; } } $count = count($list); $text = '<form action="' . ADMIN_FILE . '?exe=extensions&a=install" method="post">'; $text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Установка</th><th>Тип</th><th>Имя</th><th>Описание</th><th>Автор</th><th>Сайт</th></tr>'; if (count($list) > 0) { foreach ($list as $i => $ext) { switch ($ext['type']) { case 1: if (is_file($ext['path'] . 'icon.png')) { $type = '<img src="' . $ext['path'] . 'icon.png" title="Модуль">'; } else { $type = '<img src="' . MOD_DIR . 'icon.png" title="Модуль">'; } break; case 2: $type = '<img src="images/plugins.png" title="Плагин">'; break; case 3: $type = '<img src="images/blocks.png" title="Блок">'; break; case 4: $type = '<img src="images/skins.png" title="Шаблон">'; break; } $text .= Indent(' <tr> <td>' . System::site()->Check('install_' . $i, '1') . System::site()->Hidden('folder_' . $i, $ext['folder']) . System::site()->Hidden('type_' . $i, $ext['type']) . ($ext['type'] == EXT_PLUGIN && isset($ext['group']) ? System::site()->Hidden('group_' . $i, $ext['group']) : '') . '</td> <td>' . $type . '</td> <td>' . SafeDB($ext['name'], 255, str) . '</td> <td>' . (isset($ext['description']) && $ext['description'] != '' && $ext['description'] != ' - ' ? SafeDB($ext['description'], 255, str) : 'Нет описания') . '</td> <td>' . (isset($ext['author']) && $ext['author'] != '' ? SafeDB($ext['author'], 255, str) : ' ') . '</td> <td>' . (isset($ext['site']) && $ext['site'] != '' ? '<a href="' . HtmlChars($ext['site']) . '" title="' . HtmlChars($ext['site']) . '" target="_blank">Перейти</a>' : 'Нет') . '</td> </tr> '); } $text .= '</table>'; $text .= '<div style="margin-bottom: 25px;">' . System::site()->Hidden('count', $count) . System::site()->Submit('Установить выделенные') . '</div>'; $text .= '</form>'; } else { $text .= '<tr><td colspan="6" style="text-align: left;">Нет не установленных модулей.</td></tr>'; $text .= '</table>'; $text .= '</form>'; } System::admin()->AddCenterBox($title . ' (' . $count . ' готово к установке)'); System::admin()->AddText($text); }
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>'); } } }
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']); }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } include MOD_DIR . 'lib/functions.php'; include MOD_DIR . 'lib/forum_lang.php'; System::site()->SetTitle($forum_lang['forum']); if (isset($_GET['op'])) { $op = $_GET['op']; } else { $op = 'main'; } switch ($op) { case 'main': ForumLoadFunction('main'); IndexForumMain(); break; case 'showforum': ForumLoadFunction('showforum'); IndexForumShowForum(); break; case 'showtopic': ForumLoadFunction('showtopic'); IndexForumShowTopic(); 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 $save_link Ссылка на обработчик формы (имя модуля и параметр action) * @param string $a Добавление или редавтирование пользователя (edit or add) * @param int $id Идентификатор пользователя * @param bool $isadmin Редактирование администратора (влияет на выборку и отключает активацию по email) * @param bool $EditProfile Редактирование своего профиля администратором (не может изменить свой статус если не системный администратор) * @return */ function AdminUserEditor($save_link, $a = 'add', $id = '0', $isadmin = false) { $active = array(false, false, false); $SystemAdmin = System::user()->isSuperUser(); $edit = $a == 'edit'; $editProfile = $edit && !$SystemAdmin && $id == System::user()->Get('u_id'); // Администратор редактирует свой профиль $editStatus = false; // Разрешено редактирование статуса $editType = false; // Разрешено редавтировать тип пользователя // Загружаем данные пользователя из БД if ($edit) { $user = System::database()->SelectOne('users', "`id`='{$id}'" . ($isadmin ? " and `type`='1'" : " and `type`='2'")); if (!$user) { AddTextBox('Ошибка', '<p align="center">Пользователь не найден, либо у вас не достаточно прав для редактирования администраторов.</p>'); return; } } // Устатанавливаем ограничения доступа if ($isadmin) { // Редатируем администратора if ($SystemAdmin) { // Только системные администаторы могут редактировать статус и тип администраторов if (!(groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1)) { // Если он не системный или системных больше 1 $editStatus = true; } $editType = $editStatus; } } else { // Если пользователь $editStatus = true; // Все администраторы с доступом могут редактировать статус пользователя $editType = $SystemAdmin; // Только системные администраторы могут создавать администраторов } if ($editType) { $user_types_db = System::database()->Select('usertypes'); $types = array('member' => array('member', 'Пользователь', false)); foreach ($user_types_db as $type) { $types[$type['id']] = array(SafeDB($type['id'], 11, int), SafeDB($type['name'], 255, str), false); } } if ($edit) { $login = SafeDB($user['login'], 30, str); $mail = SafeDB($user['email'], 50, str); $hideemail = $user['hideemail'] == 1 ? true : false; $snews = $user['servernews'] == 1 ? true : false; $name = SafeDB($user['name'], 50, str); $tname = SafeDB($user['truename'], 250, str); $age = SafeDB($user['age'], 11, str); $city = SafeDB($user['city'], 100, str); $url = SafeDB($user['url'], 250, str); $icq = SafeDB($user['icq'], 15, str); $gmt = SafeDB($user['timezone'], 255, str); $about = SafeDB($user['about'], 0, str); $avatar = SafeDB($user['avatar'], 250, str); $apersonal = SafeDB($user['a_personal'], 1, int); if ($editStatus) { if ($user['active'] == '1') { $active[0] = true; } elseif ($user['active'] == '0' && $user['activate'] == '') { $active[1] = true; } elseif ($user['active'] == '0' && $user['activate'] != '') { $active[2] = true; } } if ($editType) { if ($user['type'] == '1') { $types[$user['access']][2] = true; } else { $types['member'][2] = true; //пользователь } } $caption = 'Сохранить'; if ($isadmin) { if ($editProfile) { $title = 'Редактирование профиля'; } else { $title = 'Редактирование администратора'; } } else { $title = 'Редактирование пользователя'; } } else { $login = ''; $mail = ''; $snews = false; $hideemail = false; $name = ''; $tname = ''; $age = ''; $city = ''; $url = ''; $icq = ''; $gmt = System::config('general/default_timezone'); $about = ''; $avatar = ''; $apersonal = '0'; if ($editStatus) { $active[0] = true; } if ($editType) { $types['member'][2] = true; } $caption = 'Добавить'; $title = 'Добавить пользователя'; } FormRow('Логин', System::site()->Edit('login', $login, false, 'style="width:400px;" class="autofocus"')); FormRow('Пароль', System::site()->Edit('pass', '', true, 'style="width:400px;"')); FormRow('Повторите пароль<br /><small>(для проверки)</small>', System::site()->Edit('rpass', '', true, 'style="width:400px;"')); FormRow('E-mail', System::site()->Edit('email', $mail, false, 'style="width:300px;"') . ' <label for="hideemail">Скрыть</label> ' . System::site()->Check('hideemail', '1', $hideemail, 'id="hideemail"')); FormRow('<label for="snews">Рассылка</label>', System::site()->Check('snews', '1', $snews, 'id="snews"')); FormRow('Ник', System::site()->Edit('nikname', $name, false, 'style="width:400px;"')); FormRow('Настоящее имя', System::site()->Edit('realname', $tname, false, 'style="width:400px;"')); FormRow('Возраст', System::site()->Edit('age', $age, false, 'style="width:400px;"')); FormRow('Город', System::site()->Edit('city', $city, false, 'style="width:400px;"')); FormRow('Сайт', System::site()->Edit('homepage', $url, false, 'style="width:400px;"')); FormRow('ICQ', System::site()->Edit('icq', $icq, false, 'style="width:400px;"')); $gmt = GetGmtData($gmt); FormRow('Часовой пояс', System::site()->Select('gmt', $gmt, false, 'style="width:400px;"')); FormRow('О себе', System::site()->TextArea('about', $about, 'style="width:400px; height:200px;"')); $avatars = GetGalleryAvatarsData($avatar, $apersonal); if ($apersonal == '1') { $selected = GetPersonalAvatar($id); } else { $selected = GetGalleryAvatar($avatars[1]); } System::site()->AddJS(' ShowAvatar = function(){ if(document.userform.avatar.value==\'\'){ document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&user='******'general/personal_avatars_dir') . $avatar) . '\'; }else{ document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&aname=' : System::config('general/avatars_dir')) . '\'+document.userform.avatar.value; } }'); FormRow('Аватар', System::site()->Select('avatar', $avatars[0], false, 'onchange="ShowAvatar();"')); FormRow('', '<img id="avatarview" src="' . $selected . '" border="0">'); FormRow('Загрузить аватар', System::site()->FFile('upavatar')); if ($editStatus) { FormRow('Активация', System::site()->Radio('activate', 'auto', $active[0]) . 'Активировать' . System::site()->Radio('activate', 'manual', $active[1]) . 'Не активировать' . (!$isadmin ? System::site()->Radio('activate', 'mail', $active[2]) . 'По E-mail' : '')); } if ($editType) { $user_types = array(); foreach ($types as $type) { System::site()->DataAdd($user_types, $type[0], $type[1], $type[2]); } FormRow('Статус', System::site()->Select('status', $user_types)); } TAddSubTitle($title); AddCenterBox($title); AddForm('<form name="userform" action="' . ADMIN_FILE . '?exe=' . $save_link . '&id=' . $id . '" method="post" enctype="multipart/form-data">', System::site()->Button('Отмена', 'onclick="history.go(-1);"') . System::site()->Submit($caption)); }