Файл: php-zona.ru/modules/news/comm.php
Строк: 105
<?php
//Обозначаем титл
$title='Комментарии';
//Инклюдим шапку
include_once($_SERVER["DOCUMENT_ROOT"].'/style/head.php');
//Фильруем переданный id
$_GET['id']=abs(intval($_GET['id']));
//Если записей в таблице news с колонкой id равной переданному id, то
if($db->query("SELECT * FROM `news` WHERE `id`='".$_GET['id']."'")->num_rows==0){
    //Выводим ошибку
    ?>
    <div class="error">
        Новости не существует!
    </div>
    <?
    //Инклюдим ноги
    include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
    //Завершаем выполнение скрипта
    exit();
}
//Если передан параметр ok, то
if(isset($_GET['ok'])){
    //Выводим собщенире об удачной операции
    ?>
    <div class="success">Комментарий успешно добавлен</div>
    <?
}
?>
<div class="title">Комментарии</div>
<?
//Создаем кейс
switch($_GET['act']){
    //По умлочанию
    default:
    //Создаем асоциативный массив новости
    $news = $db->query("SELECT * FROM `news` WHERE `id`='".$_GET['id']."'")->fetch_assoc();
    //Если была нажата кнопка добавить комментарий
    if(isset($_POST['ok'])){
        //Фильтруем данные с формы
        $_POST['comm']=guard($db->real_escape_string($_POST['comm']));
        if(empty($_POST['comm'])){
            $error = 'Введите текст комментария!';
        }elseif(mb_strlen($_POST['comm'])<2){
            $error = 'Текст комментария должен быть более двух символов!';
        }elseif(mb_strlen($_POST['comm'])>4000){
            $error = 'Текст комментария не должен быть более 4000 символов!';
        }
        if(isset($error)){
            ?>
            <div class="error"><?=$error?></div>
            <?
            include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
            exit();
        }
        //Добавляем в БД
        $db->query("INSERT INTO `news_comm` SET `id_news`='".$_GET['id']."', `id_us`='".$user['id']."', `text`='".$_POST['comm']."', `time`='".time()."'");
        //Перекидываем юзера на страницу 
        header('location:/news_comm/'.$_GET['id'].'?ok');
    }
    //Выводим новость
    ?>
    
    <div class="text">
        <b><?=$news['name']?></b><br/>
        <?=$news['text']?><br/>
        Автор: <?=nick($news['author'])?><br/>
        Новость создана: <?=times($news['time'])?>
    </div>
    
    <div class="title">Комментарии (<?=$db->query("SELECT * FROM `news_comm` WHERE `id_news`='".$_GET['id']."'")->num_rows?>)</div>
    
    <?
    if(isset($user['id'])){
    ?>
    
        <form action="" method="POST">
            <div class="text">
                <a href="/others/bb">BB-коды</a> <a href="/others/smile">Смайлы</a><br/>
                <textarea name="comm" placeholder="Введите комментарий..."></textarea><br/>
                <input type="submit" name="ok" value="Добавить">
            </div>
        </form>
    <?
    
    }else{
    
    ?>
        <div class="error">Добавлять комментарии могут только авторизованные пользователи</div>
    <?
    }
    
    $nav=new navig("SELECT * FROM `news_comm` WHERE `id_news`='".$_GET['id']."'");
    
    $comm=$db->query('SELECT * FROM `news_comm` WHERE `id_news`='.$_GET['id'].' ORDER BY `id` DESC LIMIT '.$nav->start.','.$nav->nstr);
    
    while($c=$comm->fetch_assoc()){
        ?>
        <div class="text">
            <?=nick($c['id_us'])?><br/>
            <?=times($c['time'])?><br/>
            <?=output($c['text'])?><br/>
            <?
            if(isset($user['id']) && $c['id_us']!=$user['id']){
                ?>
                <a href="?act=reply&cid=<?=$c['id']?>">[Отв.]</a>  
                <?    
            }
            if($user['level']>=1 or $c['id_us']==$user['id']){
                ?>
                <a href="/news_comm/<?=$_GET['id']?>?act=del&comm=<?=$c['id']?>">[Уд.]</a> <a href="/news_comm/<?=$_GET['id']?>?act=edit&comm=<?=$c['id']?>">[Ред.]</a>
                <?
            }
            ?>
        </div>
        <?
    }
    
    if($db->query("SELECT * FROM `news_comm` WHERE `id_news`='".$_GET['id']."'")->num_rows==0){
        ?>
        <div class="error">
            Комментариев нет!
        </div>
        <?
    }
?>
<div class="nvgstr">
<?
    $nav->panel();
    ?>
</div>
<?
    break;
    case 'del':
    
    $_GET['comm']=abs(intval($_GET['comm']));
    
    if($db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['comm']."'")->num_rows==0){
        $error='Комментария не существует!';
    }
    
    $comm = $db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['comm']."'")->fetch_assoc();
    if($user['level']<1 AND $comm['id_us']!=$user['id']){
        $error = 'Ошибка доступа!';
    }
    
    if(isset($error)){
        ?>
        <div class="error"><?=$error?></div>
        <?
        include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
        exit();
    }
    
    $db->query("DELETE FROM `news_comm` WHERE `id`='".$_GET['comm']."'");
    
    header('location:/news_comm/'.$_GET['id']);
    
    break;
    case 'edit':
    $_GET['comm']=abs(intval($_GET['comm']));
    
    if($db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['comm']."'")->num_rows==0){
        $error='Комментария не существует!';
    }
    
    $comm = $db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['comm']."'")->fetch_assoc();
    if($user['level']<1 AND $comm['id_us']!=$user['id']){
        $error = 'Ошибка доступа!';
    }
    
    if(isset($error)){
        ?>
        <div class="error"><?=$error?></div>
        <?
        include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
        exit();
    }
    
    if(isset($_POST['ok'])){
        $_POST['comm']=guard($db->real_escape_string($_POST['comm']));
        $db->query("UPDATE `news_comm` SET `text`='".$_POST['comm']."' WHERE `id`='".$_GET['comm']."'");
        ?>
        <div class="success">Комментарий успешно изменен</div>
        <?
    }
    
    $comm=$db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['comm']."'")->fetch_assoc();
    
    ?>
    <div class="text">
        <form action="" method="POST">
        <a href="/others/bb">BB-коды</a> <a href="/others/smile">Смайлы</a><br/>
        Текст комментария:<br/>
        <textarea name="comm"><?=$comm['text']?></textarea><br/>
        <input type="submit" name="ok" value="Изменить">
        </form>
    </div>
    <?
    
    break;
    
    case 'reply':
    $_GET['cid'] = abs(intval($_GET['cid']));
    if($db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['cid']."'")->num_rows==0){
        error('Коментария не существует!');
    }
    $comm = $db->query("SELECT * FROM `news_comm` WHERE `id`='".$_GET['cid']."'")->fetch_assoc();
    $nick = $db->query("SELECT * FROM `users` WHERE `id`='".$comm['id_us']."'")->fetch_assoc();
    if($nick['id']==$user['id']){
        error('Самому себе отвечать нельзя!');
    }
    if(isset($_POST['ok'])){
        $_POST['comm'] = guard($db->real_escape_string($_POST['comm']));
        if(empty($_POST['comm'])){
            error('Введите текст комментария!');
        }elseif(mb_strlen($_POST['comm'])<2 or mb_strlen($_POST['comm'])>4000){
            error('Комментарий должен быть не менее двух и не более 4000 символов!');
        }
        $db->query("INSERT INTO `news_comm` SET `id_news`='".$comm['id_news']."', `id_us`='".$user['id']."', `text`='".$_POST['comm']."', `time`='".time()."'");
        $db->query("INSERT INTO `notifications` SET `id_us`='".$nick['id']."', `time`='".time()."', `section`='news_comm', `sender`='".$user['id']."', `text`='ответил вам в комментариях к [url=http://".$_SERVER["HTTP_HOST"]."/news_comm/".$comm['id_news']."]новости[/url]'");
        header('location:/news_comm/'.$comm['id_news']);
    }
    ?>
    <div class="title">Ответ на комментарий</div>
    <div class="text">
        <a href="/others/bb">BB-коды</a> <a href="/others/smile">Смайлы</a><br/>
        <form action="" method="POST">
            <textarea name="comm"><?=$nick['nick']?>, </textarea><br/>
            <input type="submit" name="ok" value="Ответить">
        </form>
    </div>    
    <?
    break;
}
include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
?>