<?php

/**
* Блоги
 * @author Screamer
 * Управление записями и их просмотр
*/

defined ('_IN_JOHNCMS') or die('Restricted access');

if ((!$id && $mod != 'add') || ($mod && !$user_id)) {
    require ('../incfiles/head.php');
    echo functions::display_error('Неверные данные', '<a href="index.php">Назад</a>');
    require ('../incfiles/end.php');
    exit;
}

// Проверка записи на существование
if ( (mysql_result(mysql_query("SELECT COUNT(*) FROM `blogs` WHERE `id` = '" . $id . "'"), 0 ) == 0) && $mod != 'add') {

    require ('../incfiles/head.php');
    echo functions::display_error('Объект не найден', '<a href="index.php">Назад</a>');
    require ('../incfiles/end.php');
    exit;

}

switch ($mod) {

    /**
    * Добавление записи
    */

    case 'add':
        $textl = 'Блоги | Добавить запись';
        require ('../incfiles/head.php');

        echo '<div class="phdr"><a href="index.php">Блоги</a> | Добавление записи</div>';

        if (!empty($_POST)) {
            // Проверяем и добавляем данные

            $flood = functions::antiflood();
            if ($flood) {
                echo functions::display_error('Вы не можете так часто добавлять сообщения<br />Пожалуйста подождите' .
                                              $flood . ' сек.',
                                              '<a href="?act=post&amp;mod=add&amp;id=' . $id . '">Повторить</a>');
                require('../incfiles/end.php');
                exit;
            }

            if (empty($_POST['title']) || empty($_POST['text']) || empty($_POST['tags'])) {

                echo functions::display_error('Не все поля заполнены!',
                                              '<a href="?act=post&amp;mod=add&amp;id=' . $id . '">Попробовать еще раз</a>');
                require ('../incfiles/end.php');
                exit;

            }

            $error = array();
            $title = functions::check($_POST['title']);
            $text = mysql_real_escape_string(trim($_POST['text']));
            $tags = functions::check($_POST['tags']);

            if (mb_strlen($title) > 25 || mb_strlen($title) < 2)
                $error[] = 'Длина заголовка должна содержать от 2-х до 25-ти символов';
            if (mb_strlen($text) > $bset['post_len'])
                $error[] = 'Длина поста не должна превышать ' . $bset['post_len'] . ' символов';
            if (mb_strlen($tags) > 60)
                $error[] = 'Содержимое меток не должно превышать 60 символов';
            if (!empty($error)) {
                echo functions::display_error($error, '<a href="?act=post&amp;mod=add&amp;id=' . $id . '">Повторить</a>');
                require ('../incfiles/end.php');
                exit;
            }

            mysql_query("INSERT INTO `blogs` SET
                        `title` = '" . $title .  "',
                        `text` = '" . $text . "',
                        `tags` = '" . $tags . "',
                        `author_id` = '" . $user_id . "',
                        `author_name` = '" . $login . "',
                        `time` = '" . time() . "'
            ");

            $pid = mysql_insert_id();

            if (isset($_POST['addfile'])) {
                header('Location: ?act=addfile&id=' . $pid);
                exit;
            }
            echo '<div class="gmenu">Добавлено!&nbsp;<a href="?act=post&amp;id=' . $pid . '">Просмотр</a></div>';

        } else {
            // Форма добавления
            echo '<form action="?act=post&amp;mod=add&amp;id=' . $id . '" method="post" name="form">' .
                 '<p>Заголовок (max. 25)<br /><input type="text" name="title" maxlength="25" /></p>' .
                 '<p>Текст (max. ' . $bset['post_len'] . ')<br />' . bbcode::auto_bb('form', 'text') . '<textarea name="text"></textarea></p>' .
                 '<p>Метки (через запятую, max. 60 симв.)<br /><input type="text" name="tags" maxlength="60" size="40" /></p>' .
                 '<p>Прикрепить файл:&nbsp;<input type="checkbox" name="addfile" /></p>' .
                 '<p><input type="submit" value="Добавить" /></p></form>';

        }

        echo '<div class="phdr"><a href="?id=' . $id . '">Назад</a></div>';
        break;

    /**
    * Редактирование записи
    */

    case 'edit':
        $textl = 'Блоги | Редактирование записи';
        require ('../incfiles/head.php');

        echo '<div class="phdr"><a href="index.php">Блоги</a> | Редактирование записи</div>';
        $text = mysql_fetch_assoc(mysql_query("SELECT * FROM `blogs` WHERE `id` = '" . $id . "'"));
        $a_user = functions::get_user($text['author_id']);
        // Проверка доступа к редактированию
        if (($text['author_id'] != $user_id && $rights < 7) || ($a_user['rights'] > $rights && $rights < 7)) {
            echo functions::display_error('Доступ запрещен', '<a href="index.php">Назад</a>');
            require ('../incfiles/end.php');
            exit;
        }

        if (!empty($_POST)) {
            // Проверка и запись данных
            if (empty($_POST['title']) || empty($_POST['text']) || empty($_POST['tags'])) {

                echo functions::display_error('Не все поля заполнены!',
                                              '<a href="?act=post&amp;mod=add&amp;id=' . $id . '">Попробовать еще раз</a>');
                require ('../incfiles/end.php');
                exit;

            }

            $error = array();
            $title = functions::check($_POST['title']);
            $text = mysql_real_escape_string(trim($_POST['text']));
            $tags = functions::check($_POST['tags']);

            if (mb_strlen($title) > 25 || mb_strlen($title) < 2)
                $error[] = 'Длина заголовка должна содержать от 2-х до 25-ти символов';
            if (mb_strlen($text) > $bset['post_len'])
                $error[] = 'Длина поста не должна превышать ' . $bset['post_len'] . ' символов';
            if (mb_strlen($tags) > 60)
                $error[] = 'Содержимое меток не должно превышать 60 символов';
            if (!empty($error)) {
                echo functions::display_error($error, '<a href="?act=post&amp;mod=add&amp;id=' . $id . '">Повторить</a>');
                require ('../incfiles/end.php');
                exit;
            }

            mysql_query("UPDATE `blogs` SET
                        `title` = '" . $title .  "',
                        `text` = '" . $text . "',
                        `tags` = '" . $tags . "'
                        WHERE `id` = '" . $id . "'
            ");
            echo '<div class="menu">Изменено.&nbsp;<a href="?act=post&amp;id=' . $id . '">Просмотр</a></div>';
        } else {
            // Форма редактирования
            echo '<div class="menu"><form action="?act=post&amp;mod=edit&amp;id=' . $id . '" method="post" name="form">' .
                 '<p>Заголовок:&nbsp;(max. 25)<br />' .
                 '<input type="text" name="title" value="' . htmlentities($text['title'], ENT_QUOTES, 'UTF-8') .
                 '" maxlength="25" /></p>' .
                 '<p>Текст:(max. ' . $bset['post_len'] . ')<br />' . bbcode::auto_bb('form', 'text') .
                 '<textarea name="text">' . htmlentities($text['text'], ENT_QUOTES, 'UTF-8') . '</textarea></p>' .
                 '<p>Метки:&nbsp;(через запятую, max. 60 симв.)<br />' .
                 '<input type="text" name="tags" maxlength="60" size="40" value="' .
                 htmlentities($text['tags'], ENT_QUOTES, 'UTF-8') . '" /></p>' .
                 '<p><input type="submit" value="Сохранить" /></p></form></div>';

        }
        echo '<div class="phdr"><a href="?act=post&amp;id=' . $id . '">Назад</a></div>';
        break;

    /**
    * Удаление записи
    */

    case 'delete':

        $textl = 'Блоги | Удаление записи';
        require ('../incfiles/head.php');

        $text = mysql_fetch_assoc(mysql_query("SELECT `author_id` FROM `blogs` WHERE `id` = '" . $id . "'"));
        $a_user = functions::get_user($text['author_id']);
        // Проверка доступа
        if (($text['author_id'] != $user_id && $rights < 7) || ($a_user['rights'] > $rights && $rights < 7)) {

            echo functions::display_error('Доступ запрещен', '<a href="?act=post&amp;id=' . $id . '">Назад</a>');
            require ('../incfiles/end.php');
            exit;

        }

        echo '<div class="phdr"><a href="index.php">Блоги</a> | Удаление записи</div>';

        if (!empty($_POST)) {
            mysql_query("DELETE FROM `blogs_votes` WHERE `post_id` = '" . $id . "'");
            mysql_query("DELETE FROM `blogs` WHERE `id` = '" . $id . "'");
            echo '<div class="gmenu">Удалено. <a href="?id=' . $text['author_id'] . '">Продолжить</a></div>';

        } else {

            // Форма подтверждения
            echo '<div class="rmenu">Вы действительно хотите удалить эту запись?' .
                 '<form action="?act=post&amp;mod=delete&amp;id=' . $id . '" method="post">' .
                 '<input type="submit" name="submit" value="Удалить" /></form>' .
                 '<a href="?act=post&amp;id=' . $id . '">Отмена</a></div>';

        }

        echo '<div class="phdr"><a href="index.php">Назад</a></div>';

        break;

    /**
    * Просмотр записи
    */

    default:
        // Данные записи
        $text = mysql_fetch_assoc(mysql_query("SELECT * FROM `blogs` WHERE `id` = '" . $id . "'"));
        // Заголовок страницы
        $textl = strtr($text['title'], array('&quot;' => '',
                                             '&amp;' => '',
                                             '&lt;' => '',
                                             '&gt;' => '',
                                             '&#039;' => '',
                                             '&#92;' => ''));
        $textl = functions::checkout($textl);
        require ('../incfiles/head.php');

        /**
        * Счетчик прочтений
        */

        if ( !isset($_SESSION['blogs_view']) || ( isset($_SESSION['blogs_view']) && $_SESSION['blogs_view'] != $id ) ) {
            $_SESSION['blogs_view'] = $id;
            mysql_query("UPDATE `blogs` SET `views` = '" . (intval($text['views']) + 1) . "' WHERE `id` = '" . $id . "'");
        }

        echo '<div class="phdr"><a href="index.php?id=' . $text['author_id'] . '">' .
             $text['author_name'] . '</a> | ' . $text['title'] .
             '</div><div class="list1">' . functions::smileys(functions::checkout($text['text'], 1, 1)) .
             '</div><div class="list2"><small>' . functions::display_date($text['time']) .
             '<br />Метки:&nbsp;' . $text['tags'] .
             '<br />Прочтений:&nbsp;' . $text['views'] .
             '<br />Рейтинг:&nbsp;<a href="?act=vote&amp;id=' . $id .
             '&amp;voice=1"><img src="files/images/minus.png" alt="-" /></a>'  .
             '&nbsp;' . ($text['rate_p'] - $text['rate_m']) .
             '&nbsp;<a href="?act=vote&amp;id=' . $id .
             '&amp;voice=2"><img src="files/images/plus.png" alt="+" /></a>' .
             '<br />Комментарии:&nbsp;<a href="?act=comments&amp;post=' . $id . '">(' . $text['count_comm'].  ')</a>';

        /**
        * Прикрепленные файлы
        */

        $b_files = mysql_query("SELECT * FROM `blogs_files` WHERE `refid` = '" . $id . "'");
        if (mysql_num_rows($b_files)) {
            echo '<br />Прикрепленные файлы:<br />';
            while ($res_f = mysql_fetch_assoc($b_files)) {
                echo '<a href="files/posts/' . $res_f['filename'] . '">' . htmlentities($res_f['filename']) . '</a><br />';
            }
        }

        echo '</small></div><div class="phdr"><a href="?id=' . $text['author_id'] . '">Назад</a></div>';
        $a_user = functions::get_user($text['author_id']);
        if ($text['author_id'] == $user_id || ($a_user['rights'] < $rights && $rights >= 7)) {
            echo '<div class="func"><a href="?act=post&amp;mod=edit&amp;id=' . $id . '">Изменить</a><br />' .
                 '<a href="?act=post&amp;mod=delete&amp;id=' . $id . '">Удалить</a></div>';
        }

        break;
}
?>