Файл: CMS/core/modules/blog_post.php
Строк: 233
<?php
if (!defined('CMS')) { die('Access Denied!'); }
# Функция проверки возраста 18+
function show_xxx_form($back_id = '') {
global $id, $config;
if (empty($_SESSION['xxx']) || !isset($_SESSION['xxx'])) {
if (!empty($_POST['xxx_code']) && $_POST['xxx_code'] == $_SESSION['captcha_key']) {
$_SESSION['xxx'] = $_POST['xxx_code'];
}
else {
$config['blog_warning'] = str_replace('{SITE_NAME}', $config['site_name'], $config['blog_warning']);
$form = new cmsForm();
$form->addCaptcha($config['blog_warning'],'xxx_code');
echo $form->Submit('согласен');
echo '<div class="b">';
echo icon('return.png') . ' <a href="' . gen_uri('index', $back_id, RND) . '">Назад</a><br />';
echo '</div>';
show_footer();
die;
}
}
}
if (!empty($id)) {
$parse = parse_url($_SERVER['REQUEST_URI']);
$blogs = $db->selectRow("SELECT `p`.*, `c`.`cats_id`, `c`.`cats_name`,
(SELECT COUNT(1) FROM ?_users_bookmarks WHERE `book_path` = ?) AS `bookmarks`
FROM ?_blog_posts `p` LEFT JOIN ?_blog_category `c`
ON `p`.`blog_cats_id` = `c`.`cats_id`
WHERE `p`.`blog_id` = ? LIMIT 1;", $parse['path'], $id);
if (!empty($blogs)) {
if (!empty($_GET['vote'])) {
$vote = check($_GET['vote']);
if ($is_logged) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($vote == 'up' || $vote == 'down') {
$score = ($vote == 'up') ? 1 : -1;
if ($log != $blogs['blog_user']) {
$is_rated = (int) $db->selectCell("SELECT `rated_id` FROM ?_blog_rated
WHERE `rated_blog` = ? AND `rated_user` = ? LIMIT 1;", $id, $log);
if ($is_rated < 1) {
$expiresrated = SITE_TIME + 3600 * $config['blog_exp_rated'];
$db->query("DELETE FROM ?_blog_rated WHERE `rated_time` < ?;", SITE_TIME);
$db->query("INSERT INTO ?_blog_rated (`rated_blog`, `rated_user`, `rated_time`)
VALUES (?, ?, ?);", $id, $log, $expiresrated);
$db->query("UPDATE ?_blog_posts SET `blog_rating` = (`blog_rating` + ?) WHERE `blog_id` = ?;", $score, $id);
$inSes->addMessage('Ваша оценка принята! Рейтинг статьи: ' . format_num($blogs['blog_rating'] + $score), 'ok');
}
else $inSes->addMessage('Ошибка! Вы уже оценивали данную статью!');
}
else $inSes->addMessage('Ошибка! Вы не можете оценивать свою публикацию!');
}
else $inSes->addMessage('Ошибка! Необходимо проголосовать за или против статьи!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Голосовать за публикации, могут только обитатели сайта!');
gen_red('post', $id, RND);
}
if ($is_logged) {
if (!empty($_POST['submit'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen(trim($msg)) >= 5 && cms_strlen($msg) < 1000) {
if (is_quarantine($log)) {
if (is_flood($log)) {
$msg = antimat($msg);
$msg = smiles($msg);
$date = date('Y-m-d H:i:s', SITE_TIME);
$db->query("INSERT INTO ?_comments SET `comm_post` = ?, `comm_text` = ?, `comm_author` = ?, `comm_type` = 'blog', `comm_date` = ?, `comm_ip` = ?, `comm_ua` = ?", $id, $msg, $log, $date, $ip, $brow);
$db->query("UPDATE ?_blog_posts SET `blog_comments` = (`blog_comments` + 1) WHERE `blog_id` = ?;", $id);
$db->query("UPDATE ?_users SET `users_allcomments` = (`users_allcomments` + 1), `users_point` = (`users_point` + ?), `users_money` = (`users_money` + ?) WHERE `users_login` = ?", $config['comm_add_point'], $config['comm_add_money'], $log);
$inSes->addMessage('Комментарий успешно добавлен!', 'ok');
gen_red('post', $id, RND);
}
else $inSes->addMessage('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
}
else $inSes->addMessage('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_POST['del'])) {
if (is_admin()) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$del = intar($_POST['del']);
if (!empty($del)) {
$del = is_array($del) ? $del : array($del);
$del = implode(',', $del);
$delcom = (int) $db->query("DELETE FROM ?_comments WHERE `comm_type` = 'blog'
AND `comm_id` IN (" . $del . ") AND `comm_post` = ?", $id);
$db->query("UPDATE ?_blog_posts SET `blog_comments` = (`blog_comments` - ?) WHERE `blog_id` = ?;",$delcom, $id);
$inSes->addMessage('Выбранные комментарии успешно удалены!', 'ok');
gen_red('post', $id, RND);
}
else $inSes->addMessage('Ошибка! Отстутствуют выбранные комментарии для удаления!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Удалять комментарии могут только модераторы!');
}
}
show_header($blogs['blog_title'], $blogs['blog_text'], $blogs['blog_text']);
if (!empty($blogs['blog_is_xxx'])) show_xxx_form();
if ( empty($_SESSION['view'][$id]) ) {
$db->query( "UPDATE ?_blog_posts SET `blog_read` = (`blog_read` + 1) WHERE `blog_id` = ?", $id );
}
$_SESSION['view'][$id] = 1;
echo '<div class="b">' . icon('myblog.png', 'icons');
echo '<a href="' . gen_uri('index', '', RND) . '">Блоги</a> | ';
echo '<a href="' . gen_uri('category', $blogs['cats_id'], RND) . '">' . $blogs['cats_name'] . '</a>';
if ($is_logged && $blogs['blog_user'] == $log) {
echo ' | <a href="' . gen_uri('edit', $id, RND) . '">Изменить</a>';
}
echo '<div class="imgrss">';
echo '<a href="' . gen_uri('print', $id, RND) . '">' . icon('printer.png') . '</a> </div>';
echo '</div>';
if (is_admin()) {
echo '<div class="b">' . icon('edit.png', 'icons');
echo '<a href="' . gen_admin('?m=blog_edit&id=' . $id . '&' . RND) . '">Редактировать</a> | ';
echo '<a href="' . gen_admin('?m=blog&del_post=' . $id . '&rnd=' . $_SESSION['token']) . '" onclick="return confirm('Вы действительно хотите удалить данную статью?')">Удалить</a></div>';
}
echo '<div class="b">' . nl2br(bb_code($blogs['blog_text'])) . '</div>';
$files = $db->select("SELECT * FROM ?_blog_files WHERE `files_post` = ? ORDER BY `files_id` ASC", $id );
if (!empty($files)) {
echo '<div class="b">Прикрепленные файлы:<br />';
$c = 1;
foreach($files as $file) {
echo $c++ . '. <a href="' . gen_uri('download', $file['files_id']) . '">' . $file['files_name'] . '</a><br />';
if (($is_logged && $blogs['blog_user'] == $log) || is_admin()) {
echo '<div class="text">
- Скачано: <b>' . intval($file['files_count']) . '</b><br />
- Размер: ' . size($file['files_size']) . '<br />
- <a href="' . gen_uri('del_file', num($file['files_id']), 'rnd=' . $_SESSION['token']) . '">Удалить</a>
<br /></div>';
}
}
echo '</div>';
}
echo '<div class="b">- Рейтинг: ';
echo '<a href="' . gen_uri('post', $id, 'vote=down&rnd=' . $_SESSION['token'] . '&' . RND) . '" title="Минус"><img src="/images/icons/1_14_down.png" class="icon" alt="Минус" /></a> <big><b>' . format_num($blogs['blog_rating']) . '</b></big> <a href="' . gen_uri('post', $id, 'vote=down&rnd=' . $_SESSION['token'] . '&' . RND) . '" title="Плюс"><img src="/images/icons/1_14_up.png" class="icon" alt="Плюс" /></a><br />';
echo '- Автор статьи: ' . users_anketa($blogs['blog_user']) . '<br />';
echo '- Опубликована: ' . get_date($blogs['blog_time']) . '<br />';
echo '- Просмотров: '.$blogs['blog_read'].'<br />';
echo '</div>';
echo show_bookmarks($blogs['blog_title'], '', $blogs['bookmarks']);
/*
if ($config['share_links'] == 1) echo '<div class="b"><script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script><div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="button" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,moikrug"></div></div>';
*/
$onpage = !empty($config['comm_num']) ? num($config['comm_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$_SESSION[SP]['comm'] = !empty($_SESSION[SP]['comm']) ? num($_SESSION[SP]['comm']) : 1;
$_SESSION[SP]['comm'] = (!empty($_GET['sort']) && in_array($_GET['sort'],array(1,2))) ? num($_GET['sort']) : num($_SESSION[SP]['comm']);
$order = ($_SESSION[SP]['comm'] == 1) ? 'DESC' : 'ASC';
$coms = $db->selectPage( $total, "SELECT `c`.*, `v`.`visit_nowtime`, `u`.`users_gender`
FROM ?_comments `c`
LEFT JOIN ?_users_visit `v`
ON `c`.`comm_author` = `v`.`visit_user`
LEFT JOIN ?_users `u`
ON `c`.`comm_author` = `u`.`users_login`
WHERE `c`.`comm_type` = 'blog' AND `c`.`comm_post` = ?
ORDER BY `c`.`comm_date` " . $order . "
LIMIT ?d, ?d", $id, $from, $onpage );
echo '<div class="b">' . icon('comment.png', 'icons');
echo '<span id="comm"><b>Комментарии</b> (' . num($total) . ')</span><br />';
echo 'Показывать новые: ';
if ($_SESSION[SP]['comm'] == 1) echo '<a href="' . gen_uri('post', $id, 'sort=2&' . RND) . '">вверху</a> | <b>внизу</b>';
else echo '<b>вверху</b> | <a href="' . gen_uri('post', $id, 'sort=1&' . RND) . '">внизу</a>';
echo '</div>';
if (!empty($coms) && $total > 0) {
if (is_admin()) {
echo '<form action="' . gen_uri('post', $id, 'rnd=' . $_SESSION['token'] . '&' . RND) . '" method="post" name="post">';
}
$i = $from + 1;
foreach($coms as $com) {
$cid = num($com['comm_id']);
echo '<div class="b">';
echo '<div class="img">' . $i++ . '. ' . user_visit_icon($com['comm_author'], $com['users_gender'], $com['visit_nowtime']) . '</div>';
echo '<b>' . users_anketa($com['comm_author']) . '</b>';
echo '<div class="right"> (' . get_date(strtotime($com['comm_date'])) . ')</div><br />';
echo nl2br(bb_code($com['comm_text'])) . '<br />';
if (is_admin()) {
echo '<input type="checkbox" name="del[]" value="' . $cid . '" />';
}
if (!empty($config['anonymity'])) {
echo '<span class="data">(' . $com['comm_ua'] . ', ' . $com['comm_ip'] . ')</span>';
}
echo '</div>';
}
echo show_pages(gen_uri('post', $id, RND));
if (is_admin()) {
echo '<div class="b">';
echo '<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
echo '<input type="submit" class="btns" value="Удалить выбранное" /></form><br /></div>';
echo <<<JSCRIPT
<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
var frm = document.post;
if(frm.master_box.checked == true){ frm.master_box.checked = false; }
else{ frm.master_box.checked = true; }
for (var i=0;i<frm.elements.length;i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='checkbox') {
if(frm.master_box.checked == true){ elmnt.checked=false; }
else{ elmnt.checked=true; }
}
}
}
-->
</script>
JSCRIPT;
}
}
if ($is_logged) {
$form = new cmsForm(gen_uri('post', $id, 'rnd=' . $_SESSION['token']), 'post');
$form->addTextarea('Напишите комментарий:', 'text', request('text'));
echo $form->Submit('Добавить', 'submit');
unset($form);
}
else {
show_login('Вы не авторизованы, для комментирования, необходимо');
}
echo '<div class="b">' . icon('return.png');
echo ' <a href="' . gen_uri('category', $blogs['cats_id'], RND) . '">Назад</a><br /></div>';
}
else {
$inSes->addMessage('Ошибка! Данной статьи не существует!');
gen_red('index');
}
}
else {
$inSes->addMessage('Ошибка! Данной статьи не существует!');
gen_red('index');
}
?>