View file modules/diary/diary.php

File size: 21.56Kb
<?php

/* DCMS Special
 * Дата последнего редактирования 21.01.2016
 * Модифицировал densnet
 */

foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'user') as $inc) {
    require_once "../../sys/inc/$inc.php";
}

if (isset($_GET['d'])) {
    $name = esc(urldecode($_GET['d']));
    if (mysql_result(mysql_query("SELECT COUNT(*) FROM `diary` WHERE `name`='$name' LIMIT 1"), 0) != 0) {
        $diary = mysql_fetch_assoc(mysql_query("SELECT * FROM `diary` WHERE `name`='$name' LIMIT 1"));
        $us = get_user($diary['id_user']);
        $set['title'] = '' . $diary['name'] . ' - ' . lang('Блог') . ' ' . $us['nick'] . ''; // заголовок страницы

        if ($diary['tags'] != NULL) {
            $set['meta_keywords'] = '' . $diary['tags'] . '';
        }
        $set['meta_description'] = '' . cut_text($diary['msg']) . '';

        require_once H . 'sys/inc/thead.php';

        aut();

        if (isset($_POST['save']) && isset($user)) {
            if (isset($_POST['msg']) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                $msg = esc(stripcslashes(htmlspecialchars($_POST['msg'])));

                if (utf8_strlen($msg) < 10) {
                    $err[] = lang('Слишком короткое содержание');
                }
                if (utf8_strlen($msg) > 10000) {
                    $err[] = lang('Слишком длинное содержание');
                }

                $mat = antimat($msg);

                if ($mat) {
                    $err[] = lang('В содержании обнаружен мат') . ': ' . $mat;
                }

                $msg = mysql_real_escape_string($msg);

                if (!isset($err)) {
                    $diary['msg'] = esc(stripcslashes(htmlspecialchars($_POST['msg'])));

                    mysql_query("UPDATE `diary` SET `msg`='$msg' WHERE `id`='$diary[id]' LIMIT 1");
                    $_SESSION['message'] = lang('Изменения сохранены');

                    header("Location: /modules/diary/$diary[name]/");
                    exit();
                }
            } elseif (isset($_POST['tags']) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                $tags = esc(stripcslashes(htmlspecialchars($_POST['tags'])));

                if (utf8_strlen($tags) < 2) {
                    $err[] = lang('Слишком короткие теги');
                }
                if (utf8_strlen($tags) > 256) {
                    $err[] = lang('Слишком длинные теги');
                }

                $mat = antimat($tags);

                if ($mat) {
                    $err[] = lang('В тегах обнаружен мат') . ': ' . $mat;
                }

                $tags = mysql_real_escape_string($tags);

                if (!isset($err)) {
                    $diary['tags'] = $tags;
                    mysql_query("UPDATE `diary` SET `tags`='$diary[tags]' WHERE `id`='$diary[id]' LIMIT 1");
                    $_SESSION['message'] = lang('Изменения сохранены');

                    header("Location: /modules/diary/$diary[name]/");
                    exit();
                }
            } elseif (isset($_POST['cat']) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
                if (mysql_result(mysql_query("SELECT COUNT(*) FROM `diary_cat` WHERE `id`='" . intval($_POST['cat']) . "' LIMIT 1"), 0) != 0) {
                    $diary['id_cat'] = intval($_POST['cat']);
                    mysql_query("UPDATE `diary` SET `id_cat`='" . intval($_POST['cat']) . "' WHERE `id`='$diary[id]' LIMIT 1");
                    $_SESSION['message'] = lang('Изменения сохранены');

                    header("Location: /modules/diary/$diary[name]/");
                    exit();
                } else {
                    $err[] = lang('Ошибка категории');
                }
            } elseif (isset($_POST['name']) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
                $name = $_POST['name'];

                if (utf8_strlen($name) < 3) {
                    $err[] = lang('Слишком короткое название');
                }
                if (utf8_strlen($name) > 100) {
                    $err[] = lang('Слишком длинное название');
                }

                $mat = antimat($name);

                if ($mat) {
                    $err[] = lang('В названии обнаружен мат') . ': ' . $mat;
                }
                $name = mysql_real_escape_string($name);

                if (mysql_result(mysql_query("SELECT COUNT(*) FROM `diary` WHERE `name`='$name' LIMIT 1"), 0) != 0) {
                    $err[] = lang('Блог с таким названием уже существует');
                }

                if (!isset($err)) {
                    $diary['name'] = $name;
                    mysql_query("UPDATE `diary` SET `name`='$diary[name]' WHERE `id`='$diary[id]' LIMIT 1");
                    $_SESSION['message'] = lang('Изменения сохранены');

                    header("Location: /modules/diary/$diary[name]/");
                    exit();
                }
            } elseif (isset($_POST['readers']) && ($_POST['readers'] == 0 || $_POST['readers'] == 1 || $_POST['readers'] == 2) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                $readers = intval($_POST['readers']);
                $diary['readers'] = $readers;
                mysql_query("UPDATE `diary` SET `readers`='$diary[readers]' WHERE `id`='$diary[id]' LIMIT 1");
                $_SESSION['message'] = lang('Изменения сохранены');

                header("Location: /modules/diary/$diary[name]/");
                exit();
            }
        }

        if (isset($user) && $us['id'] != $user['id'] && ($user['level'] > $us['level'] || ($diary['readers'] == 0 || $diary['readers'] == 1) || $diary['readers'] == 2 && mysql_result(mysql_query("SELECT COUNT(*) FROM `friends` WHERE (`user` = '$user[id]' AND `friends` = '$us[id]') OR (`user` = '$us[id]' AND `friends` = '$user[id]')"), 0) != 0)) {
            if (mysql_result(mysql_query("SELECT COUNT(*) FROM `diary_rating` WHERE `id_diary` = '$diary[id]' AND `id_user`='$user[id]' LIMIT 1"), 0) == 0 && isset($_GET['plus']) && ($_GET['plus'] == 1 || $_GET['plus'] == 2 || $_GET['plus'] == 3 || $_GET['plus'] == 4 || $_GET['plus'] == 5)) {
                $plus = intval($_GET['plus']);
                mysql_query("INSERT INTO `diary_rating` (`id_diary`, `id_user`, `rating`) values ('$diary[id]', '$user[id]', '$plus')");
                $diary['rating'] = intval(mysql_result(mysql_query("SELECT SUM(`rating`) FROM `diary_rating` WHERE `id_diary` = '$diary[id]'"), 0));
                mysql_query("UPDATE `diary` SET `rating`='$diary[rating]' WHERE `id`='$diary[id]' LIMIT 1");
                mysql_query("INSERT INTO `notification` (`id_user`, `id_kont`, `msg`, `time`) values('$user[id]', '$us[id]', '$SexOst отзыв +$plus к Блогу [url=/modules/diary/$diary[name]/]$diary[name][/url]', '$time')");
                $_SESSION['message'] = lang('Голос засчитан. Спасибо');

                header("Location: /modules/diary/$diary[name]/");
                exit();
            }
        }
        $cat = mysql_fetch_assoc(mysql_query("SELECT * FROM `diary_cat` WHERE `id`='$diary[id_cat]' LIMIT 1"));
        err();

        #Навигация
        echo "<div class='card-header'>";
        echo "<a href='/' data-toggle='tooltip' data-placement='right' title='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='/modules/diary/'>" . lang('Блоги') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='/modules/diary/?r=$cat[id]'>" . cutStr($cat['name'], 30) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo cutStr($diary['name'], 30);
        echo "</div>";

        if (isset($user) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
            if (isset($_GET['delete'])) {
                echo '<div class="list-group-item list-group-item-info">';
                echo lang('Вы уверены, что хотите удалить Блог') . '?<br />';
                echo '<a class="btn btn-success btn-sm" href="/modules/diary/?r=' . $diary['id_cat'] . '&del=' . $diary['id'] . '">Да</a> <a class="btn btn-secondary btn-sm" href="/modules/diary/' . $diary['name'] . '/" title="Нет, отменить удаление">Нет</a></div>';
            }
        }

        if (isset($_GET['edit']) && $_GET['edit'] == 'name' && isset($user) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
            echo "<form method='post' class='list-group-item' name='message' action='/modules/diary/$diary[name]/'>";
            $doc->Input('name', 'Название', 64, "$diary[name]");
            echo "<br />";
            $doc->Button('btn btn-success-outline btn-sm', 'save', 'save', 'Сохранить');
            $doc->Link('btn btn-secondary-outline btn-sm', "/modules/diary/$diary[name]/", null, 'Отмена');
            echo "</form>";
        } else {
            echo "<div class='list-group-item'><span style='float: right;'>";
            if (isset($user) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
                echo "<a href='?edit=name' class='hint--left' data-hint='" . lang('Редактировать название') . "'><i class='fa fa-edit fa-fw'></i></a>";
            }
            if (isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                echo "<a href='?delete' class='hint--left' data-hint='" . lang('Удалить блог') . "'><i class='fa fa-trash-o fa-fw'></i></a>";
            }
            echo "</span>";
            echo "<i class='fa fa-book fa-fw'></i> $diary[name] <br />";
            echo "</div>";
        }

        if (mysql_result(mysql_query("SELECT COUNT(*) FROM `diary_images` WHERE `id_diary`='$diary[id]' AND `position`='up' LIMIT 1"), 0) > 0) {
            echo '<div class="list-group-item">';
            $q = mysql_query("SELECT * FROM `diary_images` WHERE `id_diary`='$diary[id]' AND `position`='up' ORDER BY `id` ASC");
            while ($image = mysql_fetch_assoc($q)) {
                echo '<a href="/modules/diary/images/' . $image['id'] . '.' . $image['ras'] . '" title="Скачать оригинал">';
                if (IS_WEB) {
                    echo '<img src="/modules/diary/images/640/' . $image['id'] . '.' . $image['ras'] . '" style="width: 500px;" alt=""/></a> ';
                } else {
                    echo '<img src="/modules/diary/images/128/' . $image['id'] . '.' . $image['ras'] . '" alt=""/></a> ';
                }
            }
            echo'</div>';
        }
        if (isset($_GET['edit']) && $_GET['edit'] == 'msg' && isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
            echo "<form method='post' class='list-group-item' name='message' action='/modules/diary/$diary[name]/'>";

            $doc->Textarea('msg', 'Содержание', 10024, "$diary[msg]");
            echo '<br/>';
            $doc->Button('btn btn-success-outline btn-sm', 'save', 'save', 'Сохранить');
            $doc->Link('btn btn-secondary-outline btn-sm', "/modules/diary/$diary[name]/", null, 'Отмена');
            echo '</form>';
        } else {
            echo '<div class="list-group-item">';
            echo toOutput($diary['msg']) . ' ';
            if (isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                echo "<a href='?edit=msg' style='float: right;' class='hint--left' data-hint='" . lang('Редактировать содержание') . "'><i class='fa fa-edit fa-fw'></i></a>";
            }
            echo '</div>';
        }

        if (mysql_result(mysql_query("SELECT COUNT(*) FROM `diary_images` WHERE `id_diary`='$diary[id]' AND `position`='down' LIMIT 1"), 0) > 0) {
            echo '<div class="list-group-item">';
            $q2 = mysql_query("SELECT * FROM `diary_images` WHERE `id_diary`='$diary[id]' AND `position`='down' ORDER BY `id` ASC");
            while ($image2 = mysql_fetch_assoc($q2)) {
                echo '<a href="/modules/diary/images/' . $image2['id'] . '.' . $image2['ras'] . '" title="Скачать оригинал">';
                if (IS_WEB) {
                    echo '<img src="/modules/diary/images/640/' . $image2['id'] . '.' . $image2['ras'] . '" style="width: 500px;" alt=""/></a> ';
                } else {
                    echo '<img src="/modules/diary/images/128/' . $image2['id'] . '.' . $image2['ras'] . '" alt=""/></a> ';
                }
            }
            echo '</div>';
        }

        echo "<div class='list-group-item'>";
        echo "<small style='color: grey;float: right;'>" . date::times($diary['time']) . "</small>";
        echo user($us['id']);
        echo "<br />";

        if (isset($_GET['edit']) && $_GET['edit'] == 'cat' && isset($user) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
            echo "<form method='post' class='list-group-item' action='/modules/diary/$diary[name]/'>";
            echo "<select name='cat' class='form-control'>";
            $c = mysql_query("SELECT * FROM `diary_cat` ORDER BY `name` ASC");
            while ($cats = mysql_fetch_assoc($c)) {
                echo'<option value="' . $cats['id'] . '"' . ($diary['id_cat'] == $cats['id'] ? ' selected="selected"' : null) . '>' . $cats['name'] . '</option>';
            }
            echo '</select><br/>';

            $doc->Button('btn btn-success-outline btn-sm', 'save', 'save', 'Сохранить');
            $doc->Link('btn btn-secondary-outline btn-sm', "/modules/diary/$diary[name]/", null, 'Отмена');
            echo '</form>';
        } else {
            echo "<i class='fa fa-folder fa-fw'></i> " . lang('Категория') . ": <a href='/modules/diary/index.php?r=$cat[id]'>$cat[name]</a> ";
            if (isset($user) && $user['level'] > 2 && ($user['id'] == $us['id'] || $user['level'] > $us['level'])) {
                echo "<a href='?edit=cat' data-toggle='tooltip' data-placement='top' title='" . lang('Редактировать категорию') . "'><i class='fa fa-edit fa-fw'></i></a>";
            }
        }
        echo '<br/>';

        if (isset($_GET['edit']) && $_GET['edit'] == 'tags' && isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
            echo "<form method='post' class='list-group-item' name='message' action='/modules/diary/$diary[name]/'>";

            $doc->Input('tags', 'Метки', 128, "$diary[tags]");
            echo "<br />";
            $doc->Button('btn btn-success-outline btn-sm', 'save', 'save', 'Сохранить');
            $doc->Link('btn btn-secondary-outline btn-sm', "/modules/diary/$diary[name]/", null, 'Отмена');
            echo '</form>';
        } else {
            echo "<i class='fa fa-tags fa-fw'></i> " . lang('Метки') . ": ";
            if ($diary['tags'] != NULL) {
                $tagss = explode(',', $diary['tags']);
                for ($i = 0; $i < count($tagss); $i++) {
                    echo "<a href='/modules/diary/tags.php?tag=$tagss[$i]' data-toggle='tooltip' data-placement='top' title='Искать метку $tagss[$i]'>$tagss[$i]</a>, ";
                }
            } else {
                echo lang('нет меток');
            }
            if (isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                echo " <a href='?edit=tags' data-toggle='tooltip' data-placement='top' title='" . lang('Редактировать метки') . "'><i class='fa fa-edit fa-fw'></i></a>";
            }
        }

        if (isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
            echo "<br /><a href='/modules/diary/images.php?id=$diary[id]'><i class='fa fa-image fa-fw'></i> " . lang('Управление изображениями') . "</a>";
        }
        echo '</div>';

        if (isset($user) && $us['id'] == $user['id'] || isset($user) && $user['level'] > $us['level'] || ($diary['readers'] == 0 || $diary['readers'] == 1) || isset($user) && $diary['readers'] == 2 && mysql_result(mysql_query("SELECT COUNT(*) FROM `frends` WHERE (`user` = '$user[id]' AND `frend` = '$us[id]') OR (`user` = '$us[id]' AND `frend` = '$user[id]')"), 0) != 0) {
            if (isset($user) && $user['id'] != $us['id'] || !isset($user)) {
                mysql_query("UPDATE `diary` SET `viewings`='" . ($diary['viewings'] + 1) . "' WHERE `id`='$diary[id]' LIMIT 1");
            }

            if (isset($user) && $user['id'] != $us['id'] && mysql_result(mysql_query("SELECT COUNT(*) FROM `diary_rating` WHERE `id_diary` = '$diary[id]' AND `id_user`='$user[id]' LIMIT 1"), 0) == 0) {
                echo '<div class="list-group-item list-group-item-info"><center>';
                echo '<a href="/modules/diary/' . $diary['name'] . '/?plus=1" class="btn btn-secondary btn-sm" title="Повысить рейтинг Блога на 1">+1</a> ';
                echo '<a href="/modules/diary/' . $diary['name'] . '/?plus=2" class="btn btn-secondary btn-sm" title="Повысить рейтинг Блога на 2">+2</a> ';
                echo '<a href="/modules/diary/' . $diary['name'] . '/?plus=3" class="btn btn-secondary btn-sm" title="Повысить рейтинг Блога на 3">+3</a> ';
                echo '<a href="/modules/diary/' . $diary['name'] . '/?plus=4" class="btn btn-secondary btn-sm" title="Повысить рейтинг Блога на 4">+4</a> ';
                echo '<a href="/modules/diary/' . $diary['name'] . '/?plus=5" class="btn btn-secondary btn-sm" title="Повысить рейтинг Блога на 5">+5</a>';
                echo '</center></div>';
            }
        } else {
            echo '<div class="list-group-item list-group-item-info">';
            echo '<i class="fa fa-users fa-fw"> <b>' . lang('Блог пользователя могут читать только друзья') . '</b>';
            echo '</div>';
        }

        echo '<div class="list-group-item">';
        echo "<i class='fa fa-eye fa-fw'></i> " . lang('Просмотров') . ": $diary[viewings] | ";
        echo "<i class='fa fa-star fa-fw'></i> " . lang('Рейтинг') . ": $diary[rating]<br />";

        if (isset($_GET['edit']) && $_GET['edit'] == 'readers' && isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
            echo '<form method="post" class="list-group-item" action="/modules/diary/' . $diary['name'] . '/">';
            echo '<select name="readers" class="form-control">';
            echo '<option value="0"' . ($diary['readers'] == 0 ? ' selected="selected"' : null) . '>Читают и комментируют все</option>';
            echo '<option value="1"' . ($diary['readers'] == 1 ? ' selected="selected"' : null) . '>Читают все, комментируют друзья</option>';
            echo '<option value="2"' . ($diary['readers'] == 2 ? ' selected="selected"' : null) . '>Читают и комментируют друзья</option>';
            echo '</select><br/>';
            $doc->Button('btn btn-success-outline btn-sm', 'save', 'save', 'Сохранить');
            $doc->Link('btn btn-secondary-outline btn-sm', "/modules/diary/$diary[name]/", null, 'Отмена');
            echo '</form>';
        } else {
            echo lang('Читают') . ': ';
            if ($diary['readers'] == 0 || $diary['readers'] == 1) {
                echo '<b>' . lang('Все') . '</b>';
            } else {
                echo '<b>' . lang('Друзья') . '</b>';
            }
            echo' | ';
            echo lang('Комментируют') . ': ';
            if ($diary['readers'] == 0) {
                echo '<b>' . lang('Все') . '</b>';
            } else {
                echo '<b>' . lang('Друзья') . '</b>';
            }
            if (isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {
                echo " <a href='?edit=readers' data-toggle='tooltip' data-placement='top' title='" . lang('Редактировать приватность') . "'><i class='fa fa-edit fa-fw'></i></a>";
            }
            echo'<br/>';
        }
        echo'</div>';
        $count_komm = mysql_result(mysql_query("SELECT COUNT(*) FROM `diary_komm` WHERE `id_diary` = '$diary[id]'"), 0);

        echo "<a class='list-group-item' href='/modules/diary/komm.php?id=$diary[id]'><i class='fa fa-comments fa-fw'></i> " . lang('Комментарии') . " <span class='label label-default'>$count_komm</span></a>";
    } else {
        header("Location:index.php");
    }
} else {
    header("Location:index.php");
}
require_once H . 'sys/inc/tfoot.php';