Файл: CMS/comm/comm_files.php
Строк: 233
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$data = array();
$data = $db->selectRow("SELECT ?_comm_comm.*, ?_comm_category.*
                       FROM ?_comm_comm LEFT JOIN ?_comm_category 
                       ON ?_comm_comm.`comm_cats_id` = ?_comm_category.`cats_id` 
                       WHERE `comm_url` = ? LIMIT 1;", $soo);
if (empty($data) || !is_array($data)) {
    $inSes->addMessage('Ошибка! Сообщество не найдено или ссылка неверна!');
    gen_red('index', '', RND);
}
if (empty($data['comm_obmen'])) {
    $inSes->addMessage('Ошибка! Обменник не найден или ссылка неверна!');
    gen_red('index', '', RND);
}
$users      = array();
$arr_admins = @explode(',', $data['comm_admins']);
if ($is_logged) {
    $users = $db->selectRow("SELECT * FROM ?_comm_users WHERE `cu_comm` = ? AND `cu_user` = ? LIMIT 1;", $data['comm_id'], $log);
    if ($data['comm_user'] == $log || is_admin(array(101))) {
        $is_admin_soo = true;
        if (!empty($_POST['add_dir'])) {
            if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
                $name  = !empty($_POST['name'])  ? check($_POST['name'])  : '';
                $about = !empty($_POST['about']) ? check($_POST['about']) : '';
                $maxorder = (int) $db->selectCell("SELECT IFNULL(MAX(`cats_order`),0)+1 
                                                   FROM ?_comm_files_category WHERE `cats_comm` = ?;", $data['comm_id']);
                $last_id = (int) $db->query("INSERT INTO ?_comm_files_category SET `cats_comm` = ?, `cats_order` = ?, `cats_name` = ?, `cats_about` = ?, `cats_user` = ?", $data['comm_id'], $maxorder, $name, $about, $data['comm_user']);
                if ($last_id > 0) $inSes->addMessage('Папка успешно создана!', 'ok');
                else $inSes->addMessage('Ошибка! Не удалось добавить папку!');
                gen_red('files', '', RND);
            }
            else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
        }
        if (!empty($_POST['edit_dir'])) {
            if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
                $cat   = !empty($_POST['cat'])   ? num($_POST['cat'])     : 0;
                $name  = !empty($_POST['name'])  ? check($_POST['name'])  : '';
                $about = !empty($_POST['about']) ? check($_POST['about']) : '';
                $is_cat = (int) $db->selectCell("SELECT `cats_id` FROM ?_comm_files_category 
                                                 WHERE `cats_id` = ? AND `cats_comm` = ? LIMIT 1", $cat, $data['comm_id']);
                if ($is_cat > 0) {
                    $db->query("UPDATE ?_comm_files_category SET `cats_name` = ?, `cats_about` = ?
                                WHERE `cats_id` = ? AND `cats_comm` = ?", $name, $about, $cat, $data['comm_id']);
                    $inSes->addMessage('Категория успешно изменена!', 'ok');
                    gen_red('files', '', RND);
                }
                else $inSes->addMessage('Ошибка! Категория не найдена или у Вас нет прав для её именения!');
            }
            else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
        if (!empty($_GET['del_cat'])) {
            if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
                $is_cat = (int) $db->selectCell("SELECT `cats_id` FROM ?_comm_files_category 
                                                 WHERE `cats_id` = ? AND `cats_comm` = ? LIMIT 1", $id, $data['comm_id']);
                if ($is_cat > 0) {
                    $dels = $db->select("SELECT * FROM ?_comm_files
                                         WHERE `files_cats_id` = ? AND `files_comm` = ?", $is_cat, $data['comm_id']);
                    if (!empty($dels)) {
                        foreach($dels as $del) {
                            $db->query("DELETE FROM ?_comments WHERE `comm_post` = ? AND `comm_type` = 'soo_files';", $del['files_id']);
                        }
                    }
                    $db->query("DELETE FROM ?_comm_files 
                                WHERE `files_cats_id` = ? AND `files_comm` = ? LIMIT 1", $is_cat, $data['comm_id']);
                    $db->query("DELETE FROM ?_comm_files_category 
                                WHERE `cats_id` = ? AND `cats_comm` = ? LIMIT 1", $is_cat, $data['comm_id']);
                    $db->query("OPTIMIZE TABLE ?_comm_files, ?_comm_files_category, ?_comments;");
                    $inSes->addMessage('Категория успешно удалена!', 'ok');
                    gen_red('files', '', RND);
                }
                else $inSes->addMessage('Ошибка! Категория не найдена или у Вас нет прав для её именения!');
            }
            else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
    }
    if (in_array($log, $arr_admins) && $users['cu_admin'] == 1) {
        $is_moder_soo = true;
    }
}
if ($data['comm_status'] == 1 && empty($users)) {
    $inSes->addMessage('Файлы доступны только участникам сообщества!');
    gen_red('index', '', RND);
}
if (!empty($id)) {
    $cats = $db->selectRow("SELECT * FROM ?_comm_files_category WHERE `cats_id` = ? LIMIT 1;", $id);
    if (!empty($cats)) {
        show_header('Файлы - ' . $cats['cats_name'] . ' - ' . $data['comm_name']);
        $onpage = !empty($config['files_num']) ? num($config['files_num']) : 10;
        if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
        $rows = $db->selectPage( $total, "SELECT `c`.*, `d`.*
                                          FROM ?_comm_files `c`
                                          LEFT JOIN ?_downs `d`
                                          ON `c`.`files_downs` = `d`.`downs_id`
                                          WHERE `c`.`files_comm` = ? AND `c`.`files_cats_id` = ?
                                          ORDER BY `c`.`files_time` DESC 
                                          LIMIT ?d, ?d", $data['comm_id'], $cats['cats_id'], $from, $onpage );
        if (!empty($rows) && $total > 0) {
            foreach($rows as $row) {
                $filepath = ROOTPATH . DS . $config['files_folder'] . DS . $row['downs_id'] . DS . $row['downs_link'];
                $filesize = !empty($row['downs_link']) ? read_file($filepath) : 0;
                $file_ext = strtolower(substr(strrchr($row['downs_link'], '.'), 1));
                echo '<div class="b" style="min-height: ' . $config['preview_size'] . 'px;">';
                if (in_array($file_ext, array('jpg', 'jpeg', 'gif', 'png'))) {
                    echo '<div class="img">';
                    echo resize_screen($config['files_folder'] . DS . $row['downs_id'] . DS, $row['downs_link'], $config['preview_size'], $row['downs_title']);
                    echo '</div>';
                }
                else if (!empty($row['downs_screen'])) {
                    echo '<div class="img">';
                    echo resize_screen($config['files_folder'] . DS . $row['downs_id'] . DS, $row['downs_screen'], $config['preview_size'], $row['downs_title']);
                    echo '</div>';
                }
                else {
                    echo '<div class="img"><img src="/images/no_photos.png" align="center" alt="" /></div>';
                }
                $sex = ($row['downs_user_sex'] == 1) ? ' <span style="color:red;">(+18)</span>' : '';
                echo extensions($file_ext);
                echo '<b><a href="' . gen_uri('file', $row['files_id'], RND) . '">' . $row['downs_title'] . '</a></b>' . $sex;
                echo '<div class="right">(' . $filesize . ')</div>';
                echo '<br />';
                echo format_text($row['downs_text'],0,$config['substr_text'],'UTF-8') . '...<br />';
                echo '</div>';
            }
        }
        else show_error('К сожалению папка пока пуста :(');
        echo '<div class="b">' . icon('add.png');
        echo '<a href="' . gen_uri('add_file', $cats['cats_id'], RND) . '">Добавить файл</a></div>';
        echo '<div class="b">' . icon('return.png');
        echo '<a href="../' . gen_uri('index', '', RND) . '">Сообщества</a> | ';
        echo '<a href="../' . gen_uri('cats', $data['cats_id'], RND) . '">' . $data['cats_name'] . '</a> | ';
        echo '<a href="' . gen_uri('index', '', RND) . '">' . $data['comm_name'] . '</a> | ';
        echo '<a href="' . gen_uri('files', '', RND) . '">Файлы</a></div>';
    }
    else {
        $inSes->addNessage('Ошибка! Папка не найдена или ссылка неверна!');
        gen_red('files', '', RND);
    }
}
else {
    $sub_cats = false;
    show_header('Файлы - ' . $data['comm_name']);
    $subs = $db->select("SELECT * FROM ?_comm_files_category WHERE `cats_comm` = ?", $data['comm_id']);
    if (!empty($subs) && count($subs) > 0) {
        $sub_cats = true;
        foreach($subs as $sub) {
            echo '<div class="b">' . icon('folder.png', 'icons');
            echo '<a href="' . gen_uri('files', $sub['cats_id'], RND) . '">' . $sub['cats_name'] . '</a> (' . $sub['cats_count'] . ')';
            if ($is_admin_soo) {
                echo ' [<a href="' . gen_uri('files', '', 'edit_cat=' . $sub['cats_id'] . '#edit') . '">Ред.</a> | ';
                echo '[<a href="' . gen_uri('files', $sub['cats_id'], 'del_cat=1&rnd=' . $_SESSION['token']) . '">Уд.</a>]';
            }
            echo '</div>';
        }
    }
    $onpage = !empty($config['files_num']) ? num($config['files_num']) : 10;
    if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
    $rows = $db->selectPage( $total, "SELECT `c`.*, `d`.*
                                      FROM ?_comm_files `c`
                                      LEFT JOIN ?_downs `d`
                                      ON `c`.`files_downs` = `d`.`downs_id`
                                      WHERE `c`.`files_comm` = ? AND `c`.`files_cats_id` = '0'
                                      ORDER BY `c`.`files_time` DESC 
                                      LIMIT ?d, ?d", $data['comm_id'], $from, $onpage );
    if (!empty($rows) && $total > 0) {
        foreach($rows as $row) {
            $filepath = ROOTPATH . DS . $config['files_folder'] . DS . $row['downs_id'] . DS . $row['downs_link'];
            $filesize = !empty($row['downs_link']) ? read_file($filepath) : 0;
            $file_ext = strtolower(substr(strrchr($row['downs_link'], '.'), 1));
            echo '<div class="b" style="min-height: ' . $config['preview_size'] . 'px;">';
            if (in_array($file_ext, array('jpg', 'jpeg', 'gif', 'png'))) {
                echo '<div class="img">';
                echo resize_screen($config['files_folder'] . DS . $row['downs_id'] . DS, $row['downs_link'], $config['preview_size'], $row['downs_title']);
                echo '</div>';
            }
            else if (!empty($row['downs_screen'])) {
                echo '<div class="img">';
                echo resize_screen($config['files_folder'] . DS . $row['downs_id'] . DS, $row['downs_screen'], $config['preview_size'], $row['downs_title']);
                echo '</div>';
            }
            else {
                echo '<div class="img"><img src="/images/no_photos.png" align="center" alt="" /></div>';
            }
            $sex = ($row['downs_user_sex'] == 1) ? ' <span style="color:red;">(+18)</span>' : '';
            echo extensions($file_ext);
            echo '<b><a href="' . gen_uri('file', $row['files_id'], RND) . '">' . $row['downs_title'] . '</a></b>' . $sex;
            echo '<div class="right">(' . $filesize . ')</div>';
            echo '<br />';
            echo format_text($row['downs_text'],0,$config['substr_text'],'UTF-8') . '...<br />';
            echo '</div>';
        }
    }
    else if (!$sub_cats) {
        show_error('В сообществе ещё нет файлов!');
    }
    if ($is_admin_soo) {
        if (!empty($_GET['edit_cat'])) {
            $cat = $db->selectRow("SELECT * FROM ?_comm_files_category 
                                   WHERE `cats_id` = ? AND `cats_comm` = ? LIMIT 1", num($_GET['edit_cat']), $data['comm_id']);
            if (!empty($cat)) {
                $form = new cmsForm(gen_uri('files', '', 'rnd=' . $_SESSION['token']), 'post', ' id="edit"');
                $form->addText('Название:', 'name', $cat['cats_name']);
                $form->addTextarea('Описание (max 250):', 'about', $cat['cats_about']);
                $form->addHidden('cat', $cat['cats_id']);
                echo $form->Submit(array('Изменить','Отмена'), array('edit_dir','cancel'));
                unset($form);
            }
            else show_error('Ошибка! Папка не найдена!');
        }
        else if (!empty($_GET['add_dir'])) {
            $form = new cmsForm(gen_uri('files', '', 'rnd=' . $_SESSION['token']), 'post', ' id="add"');
            $form->addText('Название:', 'name', request('name'));
            $form->addTextarea('Описание (max 250):', 'about', request('about'));
            echo $form->Submit(array('Создать','Отмена'), array('add_dir','cancel'));
            unset($form);
        }
        else {
            echo '<div class="b">';
            echo icon('folder_add.png', 'icons');
            echo '<a href="' . gen_uri('files', $id, 'add_dir=1&' . RND . '#add') . '">Создать папку</a><br />';
            echo icon('folder_go.png', 'icons');
            echo '<a href="' . gen_uri('add_file', $id, RND) . '">Добавить файл</a><br />';
            echo '</div>';
        }
    }
    else {
        echo '<div class="b">' . icon('add.png');
        echo '<a href="' . gen_uri('add_file', $id, RND) . '">Добавить файл</a></div>';
    }
    echo '<div class="b">' . icon('return.png');
    echo '<a href="../' . gen_uri('index', '', RND) . '">Сообщества</a> | ';
    echo '<a href="../' . gen_uri('cats', $data['cats_id'], RND) . '">' . $data['cats_name'] . '</a> | ';
    echo '<a href="' . gen_uri('index', '', RND) . '">' . $data['comm_name'] . '</a></div>';
}
?>