Вход Регистрация
Файл: CMS/news/index.php
Строк: 381
<?php
define
('CMS',TRUE);
define('ROOT''../');
include(
'../core/inc.php');

$is_admin is_admin(array(101)) ? true false;

$id = !empty($_GET['id']) ? abs(intval($_GET['id'])) : 0;
$mod = !empty($_GET['m']) ? check($_GET['m']) : 'index';
$page = !empty($_GET['page']) ? abs(intval($_GET['page'])) : 0;
$onpage = !empty($config['news_num']) ? (int) $config['news_num'] : 10;

if (
$page 1$from = ($page 1) * $onpage; else $from 0;


if (!empty(
$mod) && $mod == 'hide') {

    if (empty(
$_COOKIE['hidenews'])) {

        
setcookie('hidenews'1time() + 3600 24 7'/''');
    }
    else {

        
setcookie('hidenews'''0'/''');
    } 

    
redirect$config['site_url'] . DS gen_uri('index'''RND) );
}
else if (!empty(
$id) && !empty($mod) && $mod == 'end') { // Переадресация на последнюю страницу

    
$row $db->selectRow("SELECT `news_id`, `news_comments` FROM ?_news WHERE `news_id` = ? LIMIT 1;"$id);

    if (!empty(
$row)) {

        
$end ceil$row['news_comments'] / $onpage ); 

        if (
$end 1$end 1;

        
gen_red('news'$row['news_id'], 'page=' $end '#down');
    }
    else {

        
$inSes->addMessage('Ошибка! Данной новости не существует!');

        
gen_red('index'''RND);
    }

}
else if (!empty(
$id) && !empty($mod) && $mod == 'viewcomm') { // Переход к сообщение

    
$cid = !empty($_GET['cid']) ? num($_GET['cid']) : 0

    
$count = (int) $db->selectCell("SELECT COUNT(*) FROM ?_comments 
                                    WHERE `comm_id` <= ? AND `comm_post` = ? AND `comm_type` = 'news' 
                                    ORDER BY `comm_date` ASC LIMIT 1;"
$cid$id);

    if (!empty(
$count)) {

        
$end ceil$count $onpage ); 

        if (
$end 1$end 1;

        
gen_red('comments'$id'page=' $end '#down');

    }
    else {

        
$inSes->addMessage('Ошибка! Комментарий к данной новости не существует!');

        
gen_red('index'''RND);
    }

}
else if (!empty(
$mod) && $mod == 'search') {

    
$q = !empty($_REQUEST['q']) ? (string) $_REQUEST['q'] : '';

    
$logic = !empty($_REQUEST['logic']) ? (string) $_REQUEST['logic'] : 'or';

    
$lang['OR']          = 'или';
    
$lang['AND']         = 'и';
    
$lang['SEARCH_WORD'] = '«%s»';
    
$error               '';

    if (!empty(
$_REQUEST['q'])) {

        if (!
in_array($logic, array('and''or'))) {

            
$logic 'or';
        }
        
$logic strtoupper$logic );

        
$q preg_replace('#[^a-zA-Zа-яА-Я0-9 -_@:;()+=.,&*!?<>#$"'/\]#siu', '', $q);
        
$q preg_replace('/s/u'' '$q);
        
$q preg_replace('/ {2,}/u'' '$q);
        
$q strip_tags($q);
        if (
get_magic_quotes_gpc()) {

            
$q stripslashes($q);
        }
        
$q trim$q );

        if ( 
$q == '' ) {

            
$inSes->addMessage('Произошла Ошибка! Вы не ввели запрос &quot;Что искать?&quot;');
            
gen_red('search'''RND);
        }
        else {

            
$q explode(' '$q);
            
array_splice($q3);
            
$escape_array = array(
                              
"x2a" => ""//*
                              
"x22" => ""//"
                              
"x2b" => ""//+
                              
"x2d" => ""//-
                              
"x7e" => ""//~
                              
"x28" => ""//(
                              
"x29" => ""//)
                              
"x3c" => ""//<
                              
"x3e" => ""  //>
                              
);

            for(
$i 0$query = array(); $i count$q ); $i++) {

                
$query[] = sprintf($lang['SEARCH_WORD'], check($q[$i]));
                
$q[$i]   = strtr($q[$i], $escape_array);
            }

            
$query implode(' ' $lang[$logic] . ' '$query);

            for(
$i 0$part_of_query ''$sep ''$i count$q ); $i++, $sep $logic) {

                
$part_of_query .= $sep " MATCH(`news_title`,`news_text`) AGAINST('" mysql_escape_string($q[$i]) . "*' IN BOOLEAN MODE) ";
            }

            
$onpage = !empty($config['news_num']) ? num($config['news_num']) : 10;

            if (
$page 1$from = ($page 1) * $onpage; else $from 0;

            
$rows $db->selectPage$total"SELECT * FROM ?_news
                                              WHERE " 
$part_of_query "
                                              ORDER BY `news_time` DESC
                                              LIMIT ?d, ?d"
$from$onpage);

            if (!empty(
$rows) && $total 0) {

                
$c $from 1;
                
$start = ($page 1) * $onpage;
                if (
$start 0$start 0
                if (
$start $total 1$start $total 1;
                
$stop $start $onpage;
                if (
$stop $total$stop $total;

                
$v[] = '<div class="b">';
                
$v[] = '- Всего найдено: <strong>' intval$total ) . '</strong><br />';
                
$v[] = '- Показаны результаты с <strong>' intval$start 1) . '</strong>';
                
$v[] = '  по <strong>' intval$stop ) . '</strong> место<br /></div>';

                foreach( 
$rows as $row ) {

                    
$icon = ($row['news_closed'] == 0) ? 'document_plus.gif' 'document_minus.gif';

                    
$v[] = '<div class="b">' icon($icon'icons');
                    
$v[] = '<a href="' gen_uri('news'$row['news_id']) . '"><b>' $row['news_title'] . '</b></a>';
                    
$v[] = '<small> (' get_date($row['news_time']) . ')</small><br />';
                    
$v[] = format_text($row['news_text']) . '<br />';
                    
$v[] = '- Разместил: ' users_anketa($row['news_author']) . '<br /></div>';
                }

                
show_header('Результаты поиска - ' $query);

                echo 
implode('',$v);

                
$_q  'q=' urlencode(implode(' '$q));
                
$_q .= '&amp;logic=' strtolower($logic);
                echo 
show_pages('search'$_q'p');
            }
            else {

                
show_header('Поиск по новостям');
                
show_error('По вашему запросу ' $query ' ни чего не найдено!');
            }
        }
    }
    else {

        
show_header('Поиск по новостям');
    }
    
$form = new cmsForm(gen_uri('search'''RND), 'post');
    
$form->addText('Ваш запрос:''q'request('q'));
    
$form->addRadio('''logic'strtolower($logic), array('and' => 'Все слова''or' => 'Любое из слов'));
    echo 
$form->Submit('Искать');
    unset(
$form);

}
else if (!empty(
$id) && !empty($mod) && $mod == 'add') { // Добавление комментариев

    
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';

    if (
$is_logged) {

        if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

            if (
cms_strlen(trim($msg)) >= && cms_strlen($msg) < 1000) {

                
$row $db->selectRow("SELECT * FROM ?_news WHERE `news_id` = ? LIMIT 1;"$id);

                if (!empty(
$row)) {

                    if (empty(
$row['news_closed'])) {

                        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` = 'news', `comm_date` = ?, `comm_ip` = ?, `comm_ua` = ?"$id$msg$log$date$ip$brow);

                                
//$db->query("DELETE FROM ?_commnews WHERE `commnews_news_id` = ? AND `commnews_time` < (SELECT MIN(`commnews_time`) FROM (SELECT `commnews_time` FROM ?_commnews WHERE `commnews_news_id` = ? ORDER BY `commnews_time` DESC LIMIT " . $config['maxkommnews'] . ") AS del);", $id, $id);

                                
$db->query("UPDATE ?_news SET `news_comments` = (`news_comments` + 1) WHERE `news_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');
                            }
                            else 
$inSes->addMessage('Антифлуд! Разрешается отправлять сообщения раз в ' flood_period() . ' секунд!');
                        }
                        else 
$inSes->addMessage('Карантин! Вы не можете писать в течении ' round($config['karantin'] / 3600) . ' часов!');
                    }
                    else 
$inSes->addMessage('Ошибка! Комментирование данной новости запрещено!');
                }
                else 
$inSes->addMessage('Ошибка! Выбранная вами новость не существует, возможно она была удалена!');
            }
            else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
        }
        else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
    }
    else 
$inSes->addMessage('Вы не авторизованы, чтобы добавить сообщение, необходимо');

    
gen_red('end'$id);

}
else if (!empty(
$mod) && $mod == 'del_comm') { // Удаление комментариев

    
$del = !empty($_POST['del']) ? intar($_POST['del']) : 0;

    if (
is_admin(array(101102103105))) {

        if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

            if (
$del 0) {

                
$del is_array($del) ? $del : array($del);

                
$del implode(','$del);

                
$db->query("DELETE FROM ?_comments WHERE `comm_id` IN(" $del ") AND `comm_type` = 'news'");

                
$db->query("UPDATE ?_news SET `news_comments` = (SELECT COUNT(1) FROM ?_comments 
                            WHERE ?_news.`news_id` = ?_comments.`comm_post` AND `comm_type` = 'news');"
);

                
$inSes->addMessage('Выбранные комментарии успешно удалены!''ok');
            }
            else 
$inSes->addMessage('Ошибка! Отстутствуют выбранные комментарии для удаления!');
         }
         else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
     }
     else 
$inSes->addMessage('Ошибка! Удалять сообщения могут только модераторы!');

     
gen_red('comments'''RND);

}
else if (!empty(
$mod) && $mod == 'comments') { // Список последних комментариев

    
show_header('Новости сайта - Список последних комментариев');

    
$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`, `n`.`news_title`, `n`.`news_comments`
                                      FROM ?_comments `c` LEFT JOIN ?_users `u`
                                      ON `c`.`comm_author` = `u`.`users_login`
                                      LEFT JOIN ?_users_visit `v`
                                      ON `c`.`comm_author` = `v`.`visit_user`
                                      LEFT JOIN ?_news `n`
                                      ON `c`.`comm_post` = `n`.`news_id`
                                      WHERE `c`.`comm_type` = 'news' 
                                      ORDER BY `c`.`comm_date` " 
$order 
                                      LIMIT ?d, ?d"
$from$onpage );

    echo 
'<div class="b"><span><b>Комментарии</b> (' num($total) . ')</span><br />';
    echo 
'Показывать новые: ';
    if (
$_SESSION[SP]['comm'] == 1) echo '<a href="' gen_uri('comments'$id'sort=2&amp;' RND) . '">вверху</a> | <b>внизу</b>';
    else echo 
'<b>вверху</b> | <a href="' gen_uri('comments'$id'sort=1&amp;' RND) . '">внизу</a>';    
    echo 
'</div>';

    if (!empty(
$coms) && $total 0) {

        
$is_admin is_admin(array(101102103105));

        if (
$is_admin) {

            echo 
'<form action="' gen_uri('del_comm''''rnd=' $_SESSION['token']) . '" method="post" name="comments">';
        }
        
$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('comments'RND'p');

        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></div>';

            echo <<<JSCRIPT

<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
    var frm = document.comments;
    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;
        }
    }
    else {

        
show_error('Комментарии не найдены!');
    }

else if (!empty(
$id) && !empty($mod) && $mod == 'news') { // Чтение новости

    
$row $db->selectRow("SELECT * FROM ?_news WHERE `news_id` = ? LIMIT 1;"$id);

    if (!empty(
$row)) {

        if (!empty(
$_POST['del'])) {

            
$del intar($_POST['del']);

            if (
is_admin(array(101102103105))) {

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    if (
$del 0) {

                        
$del is_array($del) ? $del : array($del);

                        
$del implode(','$del);

                        
$delcomments $db->query("DELETE FROM ?_comments
                                                   WHERE `comm_id` IN(" 
$del ") AND `comm_post` = ? AND `comm_type` = 'news'"$id);

                        
$db->query("UPDATE ?_news SET `news_comments` = (`news_comments` - ?) WHERE `news_id` = ?;"$delcomments$id);

                        
$inSes->addMessage('Выбранные комментарии успешно удалены!''ok');
                    }
                    else 
$inSes->addMessage('Ошибка! Отстутствуют выбранные комментарии для удаления!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }
            else 
$inSes->addMessage('Ошибка! Удалять сообщения могут только модераторы!');

            
gen_red('news'$idRND);
        }

        
show_header('Новости сайта - ' $row['news_title']);

        
?>
        <div class="b">
          <?=icon('post_new.png''icons')?>
          <b><?=$row['news_title']?></b><small> (<?=get_date($row['news_time'])?>)</small><br />
          <?=nl2br(bb_code($row['news_text']))?><br />
          - Разместил: <?=users_anketa($row['news_author'])?><br />
        </div>
        <?php

        $comm_type 
'news';
        
$comm_url 'news'
        
// Подключили комменты
        
include( MODULES_PATH 'comments.inc.php' );

        if (
$is_logged) {

            if (!empty(
$news['news_closed'])) {

                
show_error('Комментирование данной новости закрыто!');
            }
            else {

                if (!empty(
$_GET['code'])) include( MODULES_PATH 'code.inc.php' );
                else if (!empty(
$_GET['smiles'])) include( MODULES_PATH 'smiles.inc.php' );

                
$form = new cmsForm(gen_uri('add'$id'rnd=' $_SESSION['token']), 'post'' name="form"');
                
$form->addCode('Сообщение: <small>[<a href="' gen_uri($mod$id'smiles=1') . '">Смайлы</a>] ');
                
$form->addCode('[<a href="' gen_uri($mod$id'code=1') . '">ББ-коды</a>]</small><br />');
                
$form->addTextarea('''text'request('text'));
                echo 
$form->Submit('Добавить''submit');
                unset(
$form);
            }
        }
        else {

            
show_login('Вы не авторизованы, для комментирования, необходимо');
        }
    }
    else {

        
$inSes->addMessage('Ошибка! Выбранная вами новость не существует, возможно она была удалена!');

        
gen_red('index'''RND);
    }
}
else {

    
show_header('Новости сайта ' $config['site_name']);
    echo 
'<div class="b"><b>Новости</b> | ';
    echo 
'<a href="/journal/' gen_uri('index'''RND) . '">Журнал</a></div>';

    
$rows $db->selectPage($total"SELECT * FROM ?_news ORDER BY `news_id` DESC LIMIT ?d, ?d"$from$onpage);

    if (!empty(
$rows) && $total 0) {

        foreach(
$rows as $row) {

            
$icon = ($row['news_closed'] == 0) ? 'document_plus.gif' 'document_minus.gif';

            
?>
            <div class="b">
              <?=icon($icon'icons')?>
              <a title="<?=$row['news_title']?>" href="<?=gen_uri('news'$row['news_id'])?>"><b><?=$row['news_title']?></b></a>
              <small> (<?=get_date($row['news_time'])?>)</small><br />
              <?=format_text($row['news_text'])?><br />
              - Разместил: <?=users_anketa($row['news_author'])?><br />
            </div>
            <?php
        
}

        echo 
show_pages('index''''p');
    }
    else {

        
show_error('Новостей еще нет!');
    }

    echo 
'<div class="b">';
    echo 
icon('mail.png') . ' <a title="RSS подписка" href="rss.xml">RSS подписка</a><br />';
    echo 
icon('list.png') . ' <a href="' gen_uri('comments'''RND) . '">Комментарии</a><br />';

    if (
is_admin(array(101))) echo icon('add.png') . '<a href="' gen_admin('?m=add_news') . '">Добавить новость</a>';

    echo 
'</div>';
}

if (!empty(
$mod) && $mod != 'index') {

    echo 
'<div class="b">';
    echo 
icon('return.png') . ' <a title="К новостям" href="' gen_uri('index'''RND) . '">К новостям</a><br />';
    echo 
'</div>';
}
    
show_footer();

?>
Онлайн: 1
Реклама