Файл: CMS/core/admin/news.php
Строк: 206
<?php
if (!defined('CMS')) { die('Access Denied!'); }
if (is_admin(array(101, 102))) {
if (!empty($_POST['del'])) {
$del = intar($_POST['del']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$del = is_array($del) ? $del : array($del);
$del = implode(',', $del);
$db->query("DELETE FROM ?_news WHERE `news_id` IN (" . $del . ");");
$db->query("DELETE FROM ?_comments WHERE `comm_post` IN (" . $del . ") AND `comm_type` = 'news';");
$db->query("OPTIMIZE TABLE ?_news, ?_comments");
$inSes->addMessage('Выбранные новости успешно удалены!', 'ok');
}
else $inSes->addMessage( 'Ошибка! Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_GET['restatement'])) {
if (is_admin(array(101))) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("UPDATE ?_news SET `news_comments` = (SELECT COUNT(*) FROM ?_comments WHERE ?_news.`news_id` = ?_comments.`comm_post` AND `comm_type` = 'news');");
$inSes->addMessage('Комментарии успешно пересчитаны!', 'ok');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Пересчитывать сообщения могут только суперадмины!');
}
switch($mod):
default:
show_header('Управление новостями');
$onpage = !empty($config['post_num']) ? num($config['post_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage($total, "SELECT * FROM ?_news ORDER BY `news_id` DESC LIMIT ?d, ?d", $from, $onpage);
if (!empty($rows) && $total > 0) {
echo '<form action="?m=news&page=' . $page . '&rnd=' . $_SESSION['token'] . '" method="post" name="news">';
foreach($rows as $row) {
$nid = num($row['news_id']);
$icon = ($row['news_closed'] == 0) ? icon('document_plus.gif') . ' ' : icon('document_minus.gif') . ' ';
echo '<div class="b">';
echo '<a href="/news/' . gen_uri('news', $nid) . '">' . $row['news_title'] . '</a> ';
echo '(<small>' . get_date($row['news_time']) . '</small>)<br />';
echo format_text($row['news_text'], 0, $config['substr_text'], 'UTF-8') . '<br />';
echo 'Разместил: <b>' . users_anketa($row['news_author']) . '</b> / ';
echo '<a href="../news/' . gen_uri('comments', $nid) . '">Комментарии</a> (' . $row['news_comments'] . ')<br />';
echo '<input type="checkbox" name="del[]" value="' . $nid . '" /> ';
echo '<a href="?m=edit_news&id=' . $nid . '&page=' . $page . '">Редактировать</a><br />';
echo '</div>';
}
echo '<div class="b">';
echo '<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
echo '<input type="submit" class="btns" value="Удалить выбранное" /></div></form>';
echo show_pages('?');
echo '<div class="b">Всего новостей: <b>' . num($total) . '</b><br /></div>';
}
else {
show_error('Новостей еще нет!');
}
echo '<div class="b">' . icon('add.png') . ' <a href="?m=add_news">Добавить</a><br /></div>';
if (is_admin(array(101))) {
echo '<div class="b">' . icon('mail.png');
echo ' <a href="?m=news&restatement=1&rnd=' . $_SESSION['token'] . '">Пересчитать</a><br /></div>';
}
echo <<<JSCRIPT
<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
var frm = document.news;
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; }
}
}
//if(frm.master_box.checked == true){ frm.master_box.checked = false; }
//else{ frm.master_box.checked = true; }
}
-->
</script>
JSCRIPT;
break;
case 'edit_news':
$row = $db->selectRow( "SELECT * FROM ?_news WHERE `news_id` = ? LIMIT 1;", $id );
if (!empty($row)) {
if (!empty($_POST['submit'])) {
$title = !empty($_POST['title']) ? check($_POST['title']) : '';
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
$closed = !empty($_POST['closed']) ? 1 : 0;
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($title) >= 3 && cms_strlen($title) < 100) {
if (cms_strlen($text) >= 3 && cms_strlen($text) < 10000) {
$text = smiles($text);
$db->query("UPDATE ?_news SET `news_title` = ?, `news_text` = ?, `news_closed` = ?
WHERE `news_id` = ?", $title, $text, $closed, $id );
$inSes->addMessage('Новость успешно отредактирована!', 'ok');
redirect('?m=news&' . RND);
}
else $inSes->addMessage('Ошибка! Слишком длинный или короткий текст новости!');
}
else $inSes->addMessage('Ошибка! Слишком длинный или короткий заголовок новости!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Управление новостями');
$row['news_text'] = nosmiles($row['news_text']);
$row['news_text'] = str_replace(array('<br>','<br/>','<br />'), "n", $row['news_text']);
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm('?m=edit_news&id=' . $id . '&rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addText('Заголовок новости:', 'title', $row['news_title'], ' size="50"');
$form->addCode('Новость: <small>[<a href="?m=edit_news&id=' . $id . '&smiles=1">Смайлы</a>] ');
$form->addCode('[<a href="?m=edit_news&id=' . $id . '&code=1">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $row['news_text'], ' id="msg" style="width:98%;"');
$form->addCheckbox(array('', ' Закрыть комментарии'), 'closed', 1, $row['news_closed']);
echo $form->Submit('Изменить', 'submit');
unset($form);
echo '<div class="b"> ' . icon('return.png');
echo ' <a href="?m=news&page=' . $page . '">Вернуться</a><br /></div>';
}
else {
$inSes->addMessage('Ошибка! Выбранная новость не существует, возможно она была удалена!');
redirect('?m=news&' . RND);
}
break;
case 'add_news':
if (!empty($_POST['submit'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
$title = !empty($_POST['title']) ? check($_POST['title']) : '';
$closed = !empty($_POST['closed']) ? 1 : 0;
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen(trim($title)) >= 5 && cms_strlen($title) < 100) {
if (cms_strlen(trim($msg)) >= 5 && cms_strlen($msg) < 10000) {
$msg = smiles($msg);
$db->query("INSERT INTO ?_news (`news_title`, `news_text`, `news_author`, `news_time`, `news_comments`, `news_closed`)
VALUES (?, ?, ?, ?, ?, ?);", $title, $msg, $log, SITE_TIME, 0, $closed);
$inSes->addMessage( 'Новость успешно добавлена!', 'ok' );
redirect('?m=news&' . RND);
}
else $inSes->addMessage( 'Ошибка! Слишком длинный или короткий текст новости!');
}
else $inSes->addMessage( 'Ошибка! Слишком длинный или короткий заголовок новости!');
}
else $inSes->addMessage( 'Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Создание новости');
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm('?m=add_news&rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addText('Заголовок новости:', 'title', request('title'), ' size="50"');
$form->addCode(blink('*') . ' Новость: <small>[<a href="?m=add_news&smiles=1">Смайлы</a>] ');
$form->addCode('[<a href="?m=add_news&code=1">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', request('text'), ' id="msg" style="width:98%;"');
$form->addCheckbox(array('', ' Закрыть комментарии'), 'closed');
echo $form->Submit('Добавить', 'submit');
unset($form);
echo '<div class="b">' . icon('return.png') . ' <a href="?m=news&' . RND . '">Вернуться</a><br /></div>';
break;
endswitch;
echo '<div class="b">' . icon('return.png') . ' <a href="?' . RND . '">В админку</a><br /></div>';
show_footer();
}
else {
redirect('/?' . RND);
}
?>