Просмотр файла mpanel/files.php

Размер файла: 22.86Kb
<?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['start'])) {
    $start = abs(intval($_GET['start']));
} else {
    $start = 0;
} 
if (isset($_GET['file'])) {
    $file = check($_GET['file']);
} else {
    $file = '';
} 

if (is_admin(array(101)) && $log == $config['nickname']) {
    show_title('menu.png', 'Редактирование страниц');
    $config['newtitle'] = 'Редактирование страниц';

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

        $arrfiles = array();
        $globfiles = glob(DATADIR . "main/*.dat");
        foreach ($globfiles as $filename) {
            $arrfiles[] = basename($filename);
        } 

        $total = count($arrfiles);

        if ($total > 0) {
            if ($start < 0 || $start > $total) {
                $start = 0;
            } 
            if ($total < $start + $config['editfiles']) {
                $end = $total;
            } else {
                $end = $start + $config['editfiles'];
            } 
            for ($i = $start; $i < $end; $i++) {
                $filename = str_replace('.dat', '', $arrfiles[$i]);
                $size = formatsize(filesize(DATADIR . "main/$arrfiles[$i]"));
                $strok = count(file(DATADIR . "main/$arrfiles[$i]"));

                if ($arrfiles[$i] == 'index.dat') {
                    echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> ';
                    echo '<b><a href="../index.php?' . SID . '"><span style="color:#ff0000">' . $arrfiles[$i] . '</span></a></b> (' . $size . ')<br />';
                    echo '<a href="files.php?act=edit&amp;file=' . $arrfiles[$i] . '&amp;' . SID . '">Редактировать</a> | ';
                    echo '<a href="files.php?act=obzor&amp;file=' . $arrfiles[$i] . '&amp;' . SID . '">Просмотр</a></div>';
                    echo '<div>Кол. строк: ' . $strok . '<br />';
                    echo 'Изменен: ' . date_fixed(filemtime(DATADIR . "main/$arrfiles[$i]")) . '</div>';
                } else {
                    echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> ';
                    echo '<b><a href="../pages/index.php?act=' . $filename . '&amp;' . SID . '">' . $arrfiles[$i] . '</a></b> (' . $size . ')<br />';
                    echo '<a href="files.php?act=edit&amp;file=' . $arrfiles[$i] . '&amp;' . SID . '">Редактировать</a> | ';
                    echo '<a href="files.php?act=obzor&amp;file=' . $arrfiles[$i] . '&amp;' . SID . '">Просмотр</a> | ';
                    echo '<a href="files.php?act=poddel&amp;file=' . $arrfiles[$i] . '&amp;' . SID . '">Удалить</a></div>';
                    echo '<div>Кол. строк: ' . $strok . '<br />';
                    echo 'Изменен: ' . date_fixed(filemtime(DATADIR . "main/$arrfiles[$i]")) . '</div>';
                } 
            } 

            page_strnavigation('files.php?', $config['editfiles'], $start, $total);

            echo 'Всего файлов: <b>' . (int)$total . '</b><br /><br />';
        } else {
            show_error('Файлов еще нет!');
        } 

        echo'<img src="../images/img/files.gif" alt="image" /> <a href="files.php?act=new&amp;' . SID . '">Создать</a><br />';
        echo'<img src="../images/img/faq.gif" alt="image" /> <a href="files.php?act=faq&amp;' . SID . '">Помощь</a><br />';
        break;
    # ###########################################################################################
    # #                                      Обзор файла                                       ##
    # ###########################################################################################
    case 'obzor':

        if (preg_match('|^[a-z0-9_\.\-]+$|i', $file)) {
            if (file_exists(DATADIR . "main/$file")) {
                echo '<b>Просмотр файла ' . $file . '</b><br />';

                $opis = file_get_contents(DATADIR . "main/$file");
                $count = count(file(DATADIR . "main/$file"));

                echo 'Строк: ' . (int)$count . '<br /><br />';

                echo highlight_code(check($opis)) . '<br /><br />';

                echo '<img src="../images/img/edit.gif" alt="image" /> <a href="files.php?act=edit&amp;file=' . $file . '&amp;' . SID . '">Редактировать</a><br />';
                echo '<img src="../images/img/error.gif" alt="image" /> <a href="files.php?act=poddel&amp;file=' . $file . '&amp;' . SID . '">Удалить</a><br />';
            } else {
                show_error('Ошибка! Данного файла не существует!');
            } 
        } else {
            show_error('Ошибка! Недопустимое название страницы!');
        } 

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

        if (preg_match('|^[a-z0-9_\.\-]+$|i', $file)) {
            if (file_exists(DATADIR . "main/$file")) {
                if (is_writeable(DATADIR . "main/$file")) {
                    $mainfile = file_get_contents(DATADIR . "main/$file");
                    $filename = str_replace(".dat", "", $file);
                    $mainfile = str_replace('&amp;', '&', $mainfile);

                    echo '<div class="form" id="form">';
                    echo '<b>Редактирование файла ' . $file . '</b><br />';

                    echo '<form action="files.php?act=editfile&amp;file=' . $file . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';

                    echo '<textarea cols="90" rows="20" name="msg">' . check($mainfile) . '</textarea><br />';
                    // ------------------------- Функция вывода админских тегов ------------------------//
                    function quicktags() {
                        echo 'Быстрые теги <br />';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;a href=&quot;&quot;&gt;\', \'&lt;/a&gt;\');"><img src="' . BASEDIR . 'images/editor/a.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;img src=&quot;\', \'&quot; alt=&quot;image&quot; /&gt;\');"><img src="' . BASEDIR . 'images/editor/img.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;br /&gt;\', \'\');"><img src="' . BASEDIR . 'images/editor/br.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;hr /&gt;\', \'\');"><img src="' . BASEDIR . 'images/editor/hr.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;b&gt;\', \'&lt;/b&gt;\');"><img src="' . BASEDIR . 'images/editor/b.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;big&gt;\', \'&lt;/big&gt;\');"><img src="' . BASEDIR . 'images/editor/big.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;small&gt;\', \'&lt;/small&gt;\');"><img src="' . BASEDIR . 'images/editor/small.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;i&gt;\', \'&lt;/i&gt;\');"><img src="' . BASEDIR . 'images/editor/i.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;u&gt;\', \'&lt;/u&gt;\');"><img src="' . BASEDIR . 'images/editor/u.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;div style=&quot;text-align:left&quot;&gt;\', \'&lt;/div&gt;\');"><img src="' . BASEDIR . 'images/editor/left.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;div style=&quot;text-align:center&quot;&gt;\', \'&lt;/div&gt;\');"><img src="' . BASEDIR . 'images/editor/center.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;div style=&quot;text-align:right&quot;&gt;\', \'&lt;/div&gt;\');"><img src="' . BASEDIR . 'images/editor/right.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;span style=&quot;color:#ff0000&quot;&gt;\', \'&lt;/span&gt;\');"><img src="' . BASEDIR . 'images/editor/red.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;span style=&quot;color:#00ff00&quot;&gt;\', \'&lt;/span&gt;\');"><img src="' . BASEDIR . 'images/editor/green.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;span style=&quot;color:#0000ff&quot;&gt;\', \'&lt;/span&gt;\');"><img src="' . BASEDIR . 'images/editor/blue.gif" alt="image" /></a>';
                        echo '<a href="#form" onclick="javascript:tag(\'&lt;span style=&quot;color:#ffff00&quot;&gt;\', \'&lt;/span&gt;\');"><img src="' . BASEDIR . 'images/editor/yellow.gif" alt="image" /></a>';
                        echo '<br />';
                    } 

                    quickpaste('msg');
                    quicktags();

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

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="files.php?' . SID . '">Вернуться</a><br />';
        echo '<img src="../images/img/online.gif" alt="image" /> <a href="../pages/index.php?act=' . $filename . '&amp;' . SID . '">Просмотр</a><br />';
        break;
    # ###########################################################################################
    # #                                  Редактирование файла                                  ##
    # ###########################################################################################
    case 'editfile':

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

        if ($uid == $_SESSION['token']) {
            if (!empty($msg)) {
                if (preg_match('|^[a-z0-9_\.\-]+$|i', $file)) {
                    if (file_exists(DATADIR . 'main/' . $file)) {
                        $msg = str_replace('&', '&amp;', $msg);

                        $fp = fopen(DATADIR . 'main/' . $file, "a+");
                        flock ($fp, LOCK_EX);
                        ftruncate($fp, 0);
                        fputs ($fp, $msg);
                        fflush($fp);
                        flock ($fp, LOCK_UN);
                        fclose($fp);

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

        echo '<br /><img src="../images/img/back.gif" alt="image" /> <a href="files.php?act=edit&amp;file=' . $file . '&amp;' . SID . '">Вернуться</a>';
        break;
    # ###########################################################################################
    # #                                       Помощь                                           ##
    # ###########################################################################################
    case 'faq':

        echo '<b>Сокрашенные коды RotorCMS</b><br /><br />';

        echo '<img src="../images/editor/a.gif" alt="image" /> - Тег служит для создания гипертекста (ссылок). Гипертекст позволяет осуществлять мгновенный переход от одного фрагмента текста к другому.<br />';
        echo '<img src="../images/editor/img.gif" alt="image" /> - Тег служит для внедрения графики на страницы. alt - Выводит текст к картинке. Полезно, если браузер не отображает графику на странице.<br />';
        echo '<img src="../images/editor/br.gif" alt="image" /> - Тег служит для перевода текста на следующую строку<br />';
        echo '<img src="../images/editor/hr.gif" alt="image" /> - Тег добавляет в HTML документ горизонтальную линию. Перед и после линии помещается пустая строка<br />';
        echo '<img src="../images/editor/b.gif" alt="image" /> - Тег создает жирный текст<br />';
        echo '<img src="../images/editor/big.gif" alt="image" /> - Тег выводит более крупный текст<br />';
        echo '<img src="../images/editor/small.gif" alt="image" /> - Тег выводит более мелкий текст<br />';
        echo '<img src="../images/editor/i.gif" alt="image" /> - Тег создает наклонный текст<br />';
        echo '<img src="../images/editor/u.gif" alt="image" /> - Тег указывает, что текст должен быть подчеркнут<br />';
        echo '<img src="../images/editor/right.gif" alt="image" /> - Тег создает новый блок. Текст выровнен по правому краю<br />';
        echo '<img src="../images/editor/center.gif" alt="image" /> - Тег создает новый блок. Текст выровнен по центру<br />';
        echo '<img src="../images/editor/left.gif" alt="image" /> - Тег создает новый блок. Текст выровнен по левому краю<br />';

        echo '<img src="../images/editor/red.gif" alt="image" /> - Тег изменяет цвет текста на красный<br />';
        echo '<img src="../images/editor/green.gif" alt="image" /> - Тег изменяет цвет текста на зеленый<br />';
        echo '<img src="../images/editor/blue.gif" alt="image" /> - Тег изменяет цвет текста на синий<br />';
        echo '<img src="../images/editor/yellow.gif" alt="image" /> - Тег изменяет цвет текста на желтый<br /><br />';

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

        echo '<b>Создание нового файла</b><br /><br />';

        if (is_writeable(DATADIR . "main")) {
            echo '<div class="form"><form action="files.php?act=addnew&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
            echo 'Название файла:<br />';
            echo '<input type="text" name="newfile" maxlength="20" /><br /><br />';
            echo '<input value="Создать файл" type="submit" /></form></div>';
            echo '<br />Разрешены латинские символы и цифры, а также знаки дефис и нижнее подчеркивание<br /><br />';
        } else {
            show_error('Директория недоступна для создания файлов!');
        } 

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

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

        if ($uid == $_SESSION['token']) {
            if (preg_match('|^[a-z0-9_\-]+$|i', $newfile)) {
                if (!file_exists(DATADIR . 'main/' . $newfile . '.dat')) {
                    $fp = fopen(DATADIR . 'main/' . $newfile . '.dat', "a+");
                    flock ($fp, LOCK_EX);
                    fputs ($fp, '');
                    fflush($fp);
                    flock ($fp, LOCK_UN);
                    fclose($fp);
                    chmod(DATADIR . 'main/' . $newfile . '.dat', 0666);

                    $_SESSION['note'] = 'Новый файл успешно создан!';
                    header ('Location: files.php?act=edit&file=' . $newfile . '.dat&' . SID);
                    exit;
                } else {
                    show_error('Ошибка! Файл с данным названием уже существует!');
                } 
            } else {
                show_error('Ошибка! Недопустимое название файла!');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

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

        if (preg_match('|^[a-z0-9_\.\-]+$|i', $file)) {
            if (file_exists(DATADIR . "main/$file")) {
                echo 'Вы подтверждаете что хотите удалить файл <b>' . $file . '</b><br />';
                echo '<img src="../images/img/error.gif" alt="image" /> <b><a href="files.php?act=del&amp;file=' . $file . '&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="files.php?' . SID . '">Вернуться</a><br />';
        break;
    # ###########################################################################################
    # #                                     Удаление файла                                     ##
    # ###########################################################################################
    case 'del':

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

        if ($uid == $_SESSION['token']) {
            if (preg_match('|^[a-z0-9_\.\-]+$|i', $file)) {
                if (file_exists(DATADIR . "main/$file")) {
                    if ($file != 'index.dat') {
                        if (unlink (DATADIR . "main/$file")) {
                            $_SESSION['note'] = 'Файл успешно удален!';
                            header ("Location: files.php?" . SID);
                            exit;
                        } else {
                            show_error('Ошибка! Не удалось удалить файл!');
                        } 
                    } else {
                        show_error('Ошибка! Запрещено удалять главный файл!');
                    } 
                } else {
                    show_error('Ошибка! Данного файла не существует!');
                } 
            } else {
                show_error('Ошибка! Недопустимое название страницы!');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

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

    default:
        header("location: files.php?" . SID);
        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');

?>