View file down/get_file.php

File size: 9.85Kb
<?php

require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');

include_once ('core/fun.php');

$id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : '';
$file = DB::run()->queryFetch("SELECT * FROM downloads_files WHERE id= ?", array ($id));
$act = isset($_GET['act']) ? check($_GET['act']) : '';

switch ($act):

    default :
        if ($file['id']) {
            $config['newtitle'] = $file['title'];
            $config['description'] = strip_str($file['description']);

            $did = DB::run()->queryFetch("SELECT `id`, `name` FROM `downloads_category` WHERE `id` = ? LIMIT 1;", array ($file['category']));
            echo '<div class="b"><a href="index.php?id=' . $did['id'] . '">' . $did['name'] . '</a> / <b>' . $file['title'] . '</b> (' . formatsize($file['size']) . ')</div>';
            echo '<hr />';

            $ext = getExtension($file['file']);

            if (in_array($ext, array ('mp3'))) {
                echo '<hr />';
                echo mp3info(BASEDIR . '/' . $file['path_to_file'] . $file['file']);
                echo' <b>Онлайн прослушка:</b><br/>
                        <object type="application/x-shockwave-flash" data="' . $config['home'] . '/down/core/player.swf?mp3=' . $config['home'] . '/' . htmlspecialchars($file['path_to_file'] . $file['file']) . '" width="200" height="25">
                        <param name="wmode" value="transparent" />
                        <param name="movie" value="' . $config['home'] . '/down/core/player.swf?mp3=' . $config['home'] . '/' . htmlspecialchars($file['path_to_file'] . $file['file']) . '" />
                        </object>';

                echo '<hr />';
            }

            if (in_array($ext, array ('3gp', 'avi', 'mp4', 'flv'))) {
                echo '<object type="application/x-shockwave-flash" data="' . $config['home'] . '/down/core/uflvplayer_500x375.swf" height="188" width="250">
                        <param name="bgcolor" value="#DFE6EF" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="movie" value="' . $config['home'] . '/down/core/uflvplayer_500x375.swf"/>
                        <param name="FlashVars" value="way=' . $config['home'] . '/' . htmlspecialchars($file['path_to_file'] . $file['file']) . '&amp;swf=' . $config['home'] . '/down/core/uflvplayer_500x375.swf&amp;skin=white&amp;volume=70"/></object>';
            }

            if (in_array($ext, array ('jpg', 'jpeg', 'gif', 'png'))) {
                echo resize_image($file['path_to_file'], $file['file'], 300, $file['title']);
                echo '<br />';
            }


            echo '<br />' . bb_code($file['description']) . '<br /><br />';

            echo 'Добавлено: ' . profile($file['author']) . ' (' . date_fixed($file['date']) . ')';
            if (is_admin(array (101, 102))) {
                echo ' (<a href="?act=edit&amp;id=' . $file['id'] . '">Редактировать</a> / <a href="?act=del&amp;id=' . $file['id'] . '">Удалить</a>)';
            }
            echo '<hr />';
            if (is_user()) {
                echo '<img src="/images/img/download.gif" alt="image" /> <b><a href="get_file.php?act=load&amp;id=' . $file['id'] . '">Скачать</a></b>  (' . formatsize($file['size']) . ')<br />';
            } else {
                echo '<div class="form">';
                echo '<form action="get_file.php?act=load&amp;id=' . $file['id'] . '" method="post">';
                echo 'Проверочный код:<br /> ';
                echo '<img src="/gallery/protect.php" alt="" /><br />';
                echo '<input name="provkod" size="6" maxlength="6" />';
                echo '<input type="submit" value="Скачать" /></form>';
                echo '<em>Чтобы не вводить код при каждом скачивании, советуем <a href="/pages/registration.php">зарегистрироваться</a></em></div><br />';
            }

            //TODO: попилить
            //    echo '<div class="b">Похожие файлы</div>';
            //    $sql_result = DB::run()->query("SELECT id, title, description, date  FROM downloads_files WHERE MATCH title, description AGAINST (? IN BOOLEAN MODE) AND id != ? LIMIT 5", array ($file['title'], $id));
            //
            //    while ($related = $sql_result->fetch()) {
            //        echo '<a href="get_file.php?id=' . $related['id'] . '">' . check($related['title']) . '</a>';
            //    }
            //      echo 'Похожих файлов не найдено.';
        } else {
            show_error('Ошибка! Запрашиваемого файла несуществует.');
        }
        break;

    case 'edit':
        if (is_admin(array (101, 102))) {
            $file = DB::run()->queryFetch("SELECT * FROM downloads_files WHERE id= ?", array ($id));
            if ($file['id']) {
                if (isset($_POST['submit']) && !empty($_GET['token'])) {
                    $token = check($_GET['token']);
                    $name = check($_POST['name']);
                    $description = check($_POST['description']);
                    if ($token == $_SESSION['token']) {
                        if (utf_strlen($name) >= 5 && utf_strlen($name) <= 50) {
                            if (utf_strlen($description) <= 5000) {
                                $description = no_br($description);
                                DB::run()->query("UPDATE `downloads_files` SET `title` = ?, `description` = ? WHERE `id` = ?", array ($name, $description, $file['id']));

                                $_SESSION['note'] = 'Файл успешно изменен!';
                                redirect("get_file.php?id=" . $file['id']);
                            } else {
                                show_error('Ошибка! Слишком длинный или короткий текст описания (от 10 до 5000 символов)!');
                            }
                        } else {
                            show_error('Ошибка! Слишком длинное или короткое название (от 5 до 50 символов)!');
                        }
                    } else {
                        show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
                    }
                }

                echo '<div class="form">';
                echo '<form action="?act=edit&amp;id=' . $file['id'] . '&amp;token=' . $_SESSION['token'] . '" method="post" enctype="multipart/form-data">';
                echo 'Название файла:*:<br />';
                echo '<input type="text" name="name" size="50" maxlength="50" value="' . $file['title'] . '" /><br />';
                //echo 'Файл (' . $config['allowextload'] . '):<br /><input type="file" name="loadfile" /><br />';
                echo 'Описание*:<br />';
                echo '<textarea cols="65" rows="5" name="description">' . $file['description'] . '</textarea><br />';
                echo '<input value="Редактировать" type="submit" name="submit"/></form></div><br />';
            } else {
                show_error('Ошибка! Запрашиваемого файла несуществует.');
            }
        } else {
            show_error('Ошибка! Добавлять разделы могут только суперадмины!');
        }
        break;

    case 'del':
        if (is_admin(array (101, 102))) {
            $file = DB::run()->queryFetch("SELECT * FROM downloads_files WHERE id= ?", array ($id));
            if ($file['id']) {
                removeDir(BASEDIR . '/' . $file['path_to_file']);

                // Удаление файла из БД
                DB::run()->query("DELETE FROM downloads_files WHERE id =?", array ($file['id']));
                $_SESSION['note'] = 'Файл успешно удален';
                redirect("index.php?id=" . $file['category']);
            } else {
                show_error('Ошибка! Запрашиваемого файла несуществует.');
            }
        } else {
            show_error('Ошибка! Добавлять разделы могут только суперадмины!');
        }
        break;

    case 'load':
        $file = DB::run()->queryFetch("SELECT * FROM downloads_files WHERE id= ?", array ($id));
        if ($file['id']) {
            $provkod = check(strtolower($_POST['provkod']));
            $id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : 0;
            if (is_user() || $provkod == $_SESSION['protect']) {
                if (file_exists(BASEDIR . '/' . $file['path_to_file'] . $file['file'])) {
                    DB::run()->query("UPDATE downloads_files SET count_loads = count_loads +1 WHERE id= ? ", array ($id));
                    header('location: /' . $file['path_to_file'] . $file['file']);
                    exit;
                } else {
                    show_error('Ошибка! Файла для скачивания не существует!');
                }
            } else {
                show_error('Ошибка! Проверочное число не совпало с данными на картинке!');
            }

            echo '<img src="/images/img/back.gif" alt="image" /> <a href="get_file.php?id=' . abs(intval($_GET['id'])) . '">Вернуться</a><br />';
        } else {
            show_error('Ошибка! Запрашиваемого файла несуществует.');
        }
        break;
endswitch;
include_once ('../themes/footer.php');