View file mpanel/blog.php

File size: 26.55Kb
<?php
#-----------------------------------------------------#
#          ********* ROTORCMS *********               #
#              Made by  :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#        для его дальнейшего распространения          #
#-----------------------------------------------------#	
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/' . $config['themes'] . '/index.php');

if (isset($_GET['act'])) {
  $act = check($_GET['act']);
} else {
  $act = 'index';
} 
if (isset($_GET['id'])) {
  $id = abs(intval($_GET['id']));
} else {
  $id = 0;
} 
if (isset($_GET['cid'])) {
  $cid = abs(intval($_GET['cid']));
} else {
  $cid = 0;
} 
if (isset($_GET['start'])) {
  $start = abs(intval($_GET['start']));
} else {
  $start = 0;
} 

if (is_admin(array(101, 102, 103, 105))) {
  show_title('menu.png', 'Управление блогами');
  $config['newtitle'] = 'Управление блогами';

  switch ($act):
  # ###########################################################################################
  # #                                    Главная страница                                    ##
  # ###########################################################################################
  case 'index':

    $queryblog = DB :: $dbh -> query("SELECT * FROM `catsblog` ORDER BY `cats_order` ASC;");
    $blogs = $queryblog -> fetchAll();

    if (count($blogs) > 0) {
      foreach($blogs as $data) {
        echo '<img src="../images/img/dir.gif" alt="image" /> ';
        echo '<b>' . $data['cats_order'] . '. <a href="blog.php?act=blog&amp;cid=' . $data['cats_id'] . '&amp;' . SID . '">' . $data['cats_name'] . '</a></b> (' . $data['cats_count'] . ')<br />';

        if (is_admin(array(101))) {
          echo '<a href="blog.php?act=editcats&amp;cid=' . $data['cats_id'] . '&amp;' . SID . '">Редактировать</a> / ';
          echo '<a href="blog.php?act=prodelcats&amp;cid=' . $data['cats_id'] . '&amp;' . SID . '">Удалить</a>';
        } 
        echo '<br />';
      } 
    } else {
      show_error('Разделы блогов еще не созданы!');
    } 

    if (is_admin(array(101))) {
      echo '<br /><div class="form">';
      echo '<form action="blog.php?act=addcats&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
      echo '<b>Заголовок:</b><br />';
      echo '<input type="text" name="name" maxlength="50" />';
      echo '<input type="submit" value="Создать раздел" /></form></div><br />';

      echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?act=restatement&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Пересчитать</a><br />';
    } 
    break;
  # ###########################################################################################
  # #                                    Пересчет счетчиков                                  ##
  # ###########################################################################################
  case 'restatement':

    $uid = check($_GET['uid']);

    if (is_admin(array(101))) {
      if ($uid == $_SESSION['token']) {
        DB :: $dbh -> query("UPDATE `catsblog` SET `cats_count`=(SELECT count(*) FROM `blogs` WHERE `catsblog`.`cats_id`=`blogs`.`blogs_cats_id`);");
        DB :: $dbh -> query("UPDATE `blogs` SET `blogs_comments`=(SELECT count(*) FROM `commblog` WHERE `blogs`.`blogs_id`=`commblog`.`commblog_blog`);");

        $_SESSION['note'] = 'Все данные успешно пересчитаны!';
        header ("Location: blog.php?" . SID);
        exit;
      } else {
        show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
      } 
    } else {
      show_error('Ошибка! Пересчитывать сообщения могут только суперадмины!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                    Добавление разделов                                 ##
  # ###########################################################################################
  case 'addcats':

    $uid = check($_GET['uid']);
    $name = check($_POST['name']);

    if (is_admin(array(101))) {
      if ($uid == $_SESSION['token']) {
        if (utf_strlen($name) >= 3 && utf_strlen($name) < 50) {
          $maxorder = DB :: $dbh -> querySingle("SELECT IFNULL(MAX(`cats_order`),0)+1 FROM `catsblog`;");
          DB :: $dbh -> query("INSERT INTO `catsblog` (`cats_order`, `cats_name`) VALUES (?, ?);", array($maxorder, $name));

          $_SESSION['note'] = 'Новый раздел успешно добавлен!';
          header ("Location: blog.php?" . SID);
          exit;
        } else {
          show_error('Ошибка! Слишком длинное или короткое название раздела!');
        } 
      } else {
        show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
      } 
    } else {
      show_error('Ошибка! Добавлять разделы могут только суперадмины!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                          Подготовка к редактированию разделов                          ##
  # ###########################################################################################
  case 'editcats':

    if (is_admin(array(101))) {
      $queryblog = DB :: $dbh -> query("SELECT * FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
      $blogs = $queryblog -> fetch();

      if (!empty($blogs)) {
        echo '<b><big>Редактирование</big></b><br /><br />';

        echo '<div class="form">';
        echo '<form action="blog.php?act=changecats&amp;cid=' . $cid . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
        echo 'Заголовок:<br />';
        echo '<input type="text" name="name" maxlength="50" value="' . $blogs['cats_name'] . '" /><br />';
        echo 'Положение:<br />';
        echo '<input type="text" name="order" maxlength="2" value="' . $blogs['cats_order'] . '" /><br /><br />';

        echo '<input type="submit" value="Изменить" /></form></div><br />';
      } else {
        show_error('Ошибка! Данного раздела не существует!');
      } 
    } else {
      show_error('Ошибка! Изменять разделы могут только суперадмины!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                 Редактирование разделов                                ##
  # ###########################################################################################
  case 'changecats':

    $uid = check($_GET['uid']);
    $name = check($_POST['name']);
    $order = abs(intval($_POST['order']));

    if (is_admin(array(101))) {
      if ($uid == $_SESSION['token']) {
        if (utf_strlen($name) >= 3 && utf_strlen($name) < 50) {
          $queryblog = DB :: $dbh -> query("SELECT * FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
          $blogs = $queryblog -> fetch();

          if (!empty($blogs)) {
            DB :: $dbh -> query("UPDATE `catsblog` SET `cats_order`=?, `cats_name`=? WHERE `cats_id`=?;", array($order, $name, $cid));

            $_SESSION['note'] = 'Раздел успешно отредактирован!';
            header ("Location: blog.php?" . SID);
            exit;
          } else {
            show_error('Ошибка! Данного раздела не существует!');
          } 
        } else {
          show_error('Ошибка! Слишком длинное или короткое название раздела!');
        } 
      } else {
        show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
      } 
    } else {
      show_error('Ошибка! Изменять разделы могут только суперадмины!');
    } 

    echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?act=editcats&amp;cid=' . $cid . '&amp;' . SID . '">Вернуться</a><br />';
    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?' . SID . '">Категории</a><br />';
    break;
  # ###########################################################################################
  # #                                  Подтвержение удаления                                 ##
  # ###########################################################################################
  case 'prodelcats':

    if (is_admin(array(101))) {
      $queryblog = DB :: $dbh -> query("SELECT * FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
      $blogs = $queryblog -> fetch();

      if (!empty($blogs)) {
        echo 'Вы уверены что хотите удалить раздел <b>' . $blogs['cats_name'] . '</b> в блогах?<br />';
        echo '<img src="../images/img/error.gif" alt="image" /> <b><a href="blog.php?act=delcats&amp;cid=' . $cid . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Да, уверен!</a></b><br /><br />';
      } else {
        show_error('Ошибка! Данного раздела не существует!');
      } 
    } else {
      show_error('Ошибка! Удалять разделы могут только суперадмины!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                    Удаление раздела                                    ##
  # ###########################################################################################
  case 'delcats':

    $uid = check($_GET['uid']);

    if (is_admin(array(101)) && $log == $config['nickname']) {
      if ($uid == $_SESSION['token']) {
        $queryblog = DB :: $dbh -> query("SELECT * FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
        $blogs = $queryblog -> fetch();

        if (!empty($blogs)) {
          DB :: $dbh -> query("DELETE FROM `commblog` WHERE `commblog_cats`=?;", array($cid));
          DB :: $dbh -> query("DELETE FROM `blogs` WHERE `blogs_cats_id`=?;", array($cid));
          DB :: $dbh -> query("DELETE FROM `catsblog` WHERE `cats_id`=?;", array($cid));

          $_SESSION['note'] = 'Раздел успешно удален!';
          header ("Location: blog.php?" . SID);
          exit;
        } else {
          show_error('Ошибка! Данного раздела не существует!');
        } 
      } else {
        show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
      } 
    } else {
      show_error('Ошибка! Удалять разделы могут только суперадмины!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                       Просмотр статей                                  ##
  # ###########################################################################################
  case 'blog':

    $querycats = DB :: $dbh -> query("SELECT * FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
    $cats = $querycats -> fetch();

    if (!empty($cats)) {
      $config['newtitle'] = $cats['cats_name'];

      echo '<img src="../images/img/open_dir.gif" alt="image" /> <b>' . $cats['cats_name'] . '</b> (Файлов: ' . $cats['cats_count'] . ')';
      echo ' (<a href="../blog/blog.php?cid=' . $cid . '&amp;start=' . $start . '&amp;' . SID . '">Обзор</a>)';
      echo '<hr />';

      $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `blogs` WHERE `blogs_cats_id`=?;", array($cid));

      if ($total > 0) {
        if ($start >= $total) {
          $start = 0;
        } 

        $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_cats_id`=? ORDER BY `blogs_time` DESC LIMIT " . $start . ", " . $config['blogpost'] . ";", array($cid));

        echo '<form action="blog.php?act=delblog&amp;cid=' . $cid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';

        while ($data = $queryblog -> fetch()) {
          if ($data['blogs_rating'] > 0) {
            $data['blogs_rating'] = '<span style="color:#00aa00">+' . $data['blogs_rating'] . '</span>';
          } 
          if ($data['blogs_rating'] < 0) {
            $data['blogs_rating'] = '<span style="color:#ff0000">' . $data['blogs_rating'] . '</span>';
          } 

          echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> ';
          echo '<b><a href="../blog/blog.php?act=view&amp;id=' . $data['blogs_id'] . '&amp;' . SID . '">' . $data['blogs_title'] . '</a></b> (' . $data['blogs_rating'] . ')<br />';

          echo '<input type="checkbox" name="del[]" value="' . $data['blogs_id'] . '" /> ';

          echo '<a href="blog.php?act=editblog&amp;cid=' . $cid . '&amp;id=' . $data['blogs_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Редактировать</a> / ';
          echo '<a href="blog.php?act=moveblog&amp;cid=' . $cid . '&amp;id=' . $data['blogs_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Переместить</a></div>';

          echo '<div>Автор: <a href="../pages/anketa.php?uz=' . $data['blogs_user'] . '&amp;' . SID . '">' . nickname($data['blogs_user']) . '</a> (' . date_fixed($data['blogs_time']) . ')<br />';
          echo 'Просмотров: ' . $data['blogs_read'] . '<br />';
          echo '<a href="../blog/blog.php?act=comments&amp;id=' . $data['blogs_id'] . '&amp;' . SID . '">Комментарии</a> (' . $data['blogs_comments'] . ')<br />';
          echo '</div>';
        } 

        echo '<br /><input type="submit" value="Удалить выбранное" /></form>';

        page_strnavigation('blog.php?act=blog&amp;cid=' . $cid . '&amp;', $config['blogpost'], $start, $total);
      } else {
        show_error('В данном разделе еще нет статей!');
      } 
    } else {
      show_error('Ошибка! Данного раздела не существует!');
    } 

    echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?' . SID . '">Категории</a><br />';
    break;
  # ###########################################################################################
  # #                            Подготовка к редактированию статьи                          ##
  # ###########################################################################################
  case 'editblog':

    $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
    $blogs = $queryblog -> fetch();

    if (!empty($blogs)) {
      $blogs['blogs_text'] = nosmiles($blogs['blogs_text']);
      $blogs['blogs_text'] = yes_br($blogs['blogs_text']);

      echo '<b><big>Редактирование</big></b><br /><br />';

      echo '<div class="form" id="form">';
      echo '<form action="blog.php?act=addeditblog&amp;cid=' . $cid . '&amp;id=' . $id . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';

      echo 'Заголовок:<br />';
      echo '<input type="text" name="title" size="50" maxlength="50" value="' . $blogs['blogs_title'] . '" /><br />';
      echo 'Текст:<br />';
      echo '<textarea cols="25" rows="15" name="text">' . $blogs['blogs_text'] . '</textarea><br />';

      if (!empty($udata['users_bbpanel'])) {
        quickpaste('text');
        quickcode();
        quicksmiles();
      } 

      echo 'Автор:<br />';
      echo '<input type="text" name="user" maxlength="20" value="' . $blogs['blogs_user'] . '" /><br />';
      echo 'Метки:<br />';
      echo '<input type="text" name="tags" size="50" maxlength="100" value="' . $blogs['blogs_tags'] . '" /><br />';

      echo '<input type="submit" value="Изменить" /></form></div><br />';
    } else {
      show_error('Ошибка! Данной статьи не существует!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=blog&amp;cid=' . $cid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
    echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?' . SID . '">Категории</a><br />';
    break;
  # ###########################################################################################
  # #                                  Редактирование статьи                                ##
  # ###########################################################################################
  case 'addeditblog':

    $uid = check($_GET['uid']);
    $title = check($_POST['title']);
    $text = check($_POST['text']);
    $user = check($_POST['user']);
    $tags = check($_POST['tags']);

    if ($uid == $_SESSION['token']) {
      if (utf_strlen($title) >= 5 && utf_strlen($title) <= 50) {
        if (utf_strlen($text) >= 100 && utf_strlen($text) <= $config['maxblogpost']) {
          if (utf_strlen($tags) >= 2 && utf_strlen($tags) <= 50) {
            if (preg_match('|^[a-z0-9\-]+$|i', $user)) {
              $queryblog = DB :: $dbh -> querySingle("SELECT `blogs_id` FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
              if (!empty($queryblog)) {
                $text = no_br($text);
                $text = smiles($text);

                DB :: $dbh -> query("UPDATE `blogs` SET `blogs_title`=?, `blogs_text`=?, `blogs_user`=?, `blogs_tags`=? WHERE `blogs_id`=?;", array($title, $text, $user, $tags, $id));

                $_SESSION['note'] = 'Статья успешно отредактирована!';
                header ("Location: blog.php?act=blog&cid=$cid&start=$start&" . SID);
                exit;
              } else {
                show_error('Ошибка! Данной статьи не существует!');
              } 
            } else {
              show_error('Ошибка! Недопустимые символы в логине! Разрешены только знаки латинского алфавита и цифры!');
            } 
          } else {
            show_error('Ошибка! Слишком длинные или короткие метки статьи (от 2 до 50 символов)!');
          } 
        } else {
          show_error('Ошибка! Слишком длинный или короткий текст статьи (от 100 до ' . $config['maxblogpost'] . ' символов)!');
        } 
      } else {
        show_error('Ошибка! Слишком длинный или короткий заголовок (от 5 до 50 символов)!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=editblog&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
    echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?act=blog&amp;cid=' . $cid . '&amp;start=' . $start . '&amp;' . SID . '">В раздел</a><br />';
    break;
  # ###########################################################################################
  # #                               Подготовка к перемещению статьи                          ##
  # ###########################################################################################
  case 'moveblog':

    $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
    $blogs = $queryblog -> fetch();

    if (!empty($blogs)) {
      echo '<img src="../images/img/zip.gif" alt="image" /> <b>' . $blogs['blogs_title'] . '</b><br /><br />';

      $querycats = DB :: $dbh -> query("SELECT `cats_id`, `cats_name` FROM `catsblog` ORDER BY `cats_order` ASC;");
      $cats = $querycats -> fetchAll();

      if (count($cats) > 0) {
        echo '<div class="form">';
        echo '<form action="blog.php?act=addmoveblog&amp;cid=' . $blogs['blogs_cats_id'] . '&amp;id=' . $id . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';

        echo 'Выберите раздел для перемещения:<br />';
        echo '<select name="section">';
        echo '<option value="0">Список разделов</option>';

        foreach ($cats as $data) {
          if ($blogs['blogs_cats_id'] != $data['cats_id']) {
            echo '<option value="' . $data['cats_id'] . '">' . $data['cats_name'] . '</option>';
          } 
        } 

        echo '</select>';
        echo '<input type="submit" value="Переместить" /></form></div><br />';
      } else {
        show_error('Ошибка! Разделы блогов еще не созданы!');
      } 
    } else {
      show_error('Ошибка! Данной статьи не существует!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=blog&amp;cid=' . $cid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                    Перемещение статьи                                  ##
  # ###########################################################################################
  case 'addmoveblog':

    $uid = check($_GET['uid']);
    $section = abs(intval($_POST['section']));

    if ($uid == $_SESSION['token']) {
      $querycats = DB :: $dbh -> querySingle("SELECT `cats_id` FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($section));
      if (!empty($querycats)) {
        $queryblog = DB :: $dbh -> querySingle("SELECT `blogs_id` FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
        if (!empty($queryblog)) {
          DB :: $dbh -> query("UPDATE `blogs` SET `blogs_cats_id`=? WHERE `blogs_id`=?;", array($section, $id));
          DB :: $dbh -> query("UPDATE `commblog` SET `commblog_cats`=? WHERE `commblog_blog`=?;", array($section, $id));
          // Обновление счетчиков
          DB :: $dbh -> query("UPDATE `catsblog` SET `cats_count`=`cats_count`+1 WHERE `cats_id`=?", array($section));
          DB :: $dbh -> query("UPDATE `catsblog` SET `cats_count`=`cats_count`-1 WHERE `cats_id`=?", array($cid));

          $_SESSION['note'] = 'Статья успешно перемещена!';
          header ("Location: blog.php?act=blog&cid=$section&" . SID);
          exit;
        } else {
          show_error('Ошибка! Статьи для перемещения не существует!');
        } 
      } else {
        show_error('Ошибка! Выбранного раздела не существует!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=moveblog&amp;cid=' . $cid . '&amp;id=' . $id . '&amp;' . SID . '">Вернуться</a><br />';
    echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?act=blog&amp;cid=' . $cid . '&amp;' . SID . '">К блогам</a><br />';
    break;
  # ###########################################################################################
  # #                                     Удаление статей                                    ##
  # ###########################################################################################
  case 'delblog':

    $uid = check($_GET['uid']);
    if (isset($_POST['del'])) {
      $del = intar($_POST['del']);
    } else {
      $del = 0;
    } 

    if ($uid == $_SESSION['token']) {
      if ($del > 0) {
        $del = implode(',', $del);

        DB :: $dbh -> query("DELETE FROM `commblog` WHERE `commblog_blog` IN (" . $del . ");");
        $delblogs = DB :: $dbh -> exec("DELETE FROM `blogs` WHERE `blogs_id` IN (" . $del . ");");
        // Обновление счетчиков
        DB :: $dbh -> query("UPDATE `catsblog` SET `cats_count`=`cats_count`-? WHERE `cats_id`=?", array($delblogs, $cid));

        $_SESSION['note'] = 'Выбранные статьи успешно удалены!';
        header ("Location: blog.php?act=blog&cid=$cid&start=$start&" . SID);
        exit;
      } else {
        show_error('Ошибка! Отсутствуют выбранные статьи для удаления!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=blog&amp;cid=' . $cid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
    break;

  default:
    header("location: blog.php?" . SID);
    exit;
    endswitch;

    echo '<img src="../images/img/panel.gif" alt="image" /> <a href="index.php?' . SID . '">В админку</a><br />';
    echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a>';
  } else {
  header ('Location: ' . BASEDIR . 'index.php?' . SID);
  exit;
} 

include_once ('../themes/' . $config['themes'] . '/foot.php');

?>