Файл: CMS/comm/comm_file.php
Строк: 306
<?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_soo = true;
$is_moder_soo = true;
}
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);
}
$prs = parse_url($_SERVER['REQUEST_URI']);
$row = array();
$row = $db->selectRow("SELECT `f`.*, `d`.*, `c`.*, `u`.`users_gender`,
(SELECT COUNT(1) FROM ?_users_bookmarks WHERE `book_path` = ?) AS `bookmarks`
FROM ?_comm_files `f`
LEFT JOIN ?_downs `d` ON `f`.`files_downs` = `d`.`downs_id`
LEFT JOIN ?_comm_files_category `c` ON `f`.`files_cats_id` = `c`.`cats_id`
LEFT JOIN ?_users `u` ON `d`.`downs_user` = `u`.`users_login`
WHERE `f`.`files_comm` = ?
AND `f`.`files_id` = ?", $prs['path'], $data['comm_id'], $id);
if (empty($row) || !is_array($row)) {
$inSes->addMessage('Ошибка! Файл не найден или ссылка неверна!');
gen_red('files', '', RND);
}
# Действия создателя сообщества
if ($is_admin_soo) {
if (!empty($_POST['move_file'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$new_cat = !empty($_POST['new_cat']) ? num($_POST['new_cat']) : 0;
if ($new_cat > 0) {
$is_cat = (int) $db->selectCell("SELECT `cats_id` FROM ?_comm_files_category
WHERE `cats_comm` = ? AND `cats_id` = ?", $data['comm_id'], $new_cat);
if ($is_cat > 0) {
$db->query("UPDATE ?_comm_files SET `files_cats_id` = ?
WHERE `files_comm` = ? AND `files_id` = ?", $new_cat, $data['comm_id'], $id);
$db->query("UPDATE ?_comm_files_category SET `cats_count` = (SELECT COUNT(*) FROM ?_comm_files WHERE ?_comm_files_category.`cats_id` = ?_comm_files.`files_cats_id` AND ?_comm_files.`files_comm` = ?);", $data['comm_id']);
$inSes->addMessage('Файл успешно перемещён!', 'ok');
gen_red('files', $new_cat, RND);
}
else $inSes->addMessage('Ошибка! Запрашиваемая категория не найдена!');
}
else {
$db->query("UPDATE ?_comm_files SET `files_cats_id` = '0'
WHERE `files_comm` = ? AND `files_id` = ?", $data['comm_id'], $id);
$db->query("UPDATE ?_comm_files_category SET `cats_count` = (SELECT COUNT(*) FROM ?_comm_files WHERE ?_comm_files_category.`cats_id` = ?_comm_files.`files_cats_id` AND ?_comm_files.`files_comm` = ?);", $data['comm_id']);
$inSes->addMessage('Файл успешно перемещён!', 'ok');
gen_red('files', '', RND);
}
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_GET['del_file'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("DELETE FROM ?_comm_files WHERE `files_comm` = ? AND `files_id` = ?", $data['comm_id'], $id);
$db->query("UPDATE ?_comm_files_category SET `cats_count` = (SELECT COUNT(*) FROM ?_comm_files WHERE ?_comm_files_category.`cats_id` = ?_comm_files.`files_cats_id` AND ?_comm_files.`files_comm` = ?);", $data['comm_id']);
$inSes->addMessage('Файл успешно удалён!', 'ok');
gen_red('files', '', RND);
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
}
# Удаление комментов
if ($is_moder_soo) {
if (!empty($_POST['del'])) {
$del = intar($_POST['del']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (!empty($del)) {
$del = is_array($del) ? $del : array($del);
$del = implode(',', $del);
$db->query("DELETE FROM ?_comments WHERE `comm_id` IN(" . $del . ") AND `comm_type` = 'soo_files' AND `comm_post` = ?", $id);
$db->query("OPTIMIZE TABLE ?_comments;");
$inSes->addMessage('Выбранные комментарии успешно удалены!', 'ok');
}
else $inSes->addMessage('Ошибка! Отстутствуют выбранные комментарии для удаления!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
gen_red('file', $id, RND);
}
}
# Добавление комментария
if (!empty($_POST['submit'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
if ($is_logged) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen(trim($msg)) >= 5 && cms_strlen($msg) < 1000) {
if (is_quarantine($log)) {
if (is_flood($log)) {
$msg = antimat($msg);
$msg = smiles($msg);
$date = date('Y-m-d H:i:s', SITE_TIME);
$db->query("INSERT INTO ?_comments SET `comm_post` = ?, `comm_text` = ?, `comm_author` = ?, `comm_type` = 'soo_files', `comm_date` = ?, `comm_ip` = ?, `comm_ua` = ?", $id, $msg, $log, $date, $ip, $brow);
//$db->query("UPDATE ?_downs SET `downs_comments` = (`downs_comments` + 1) WHERE `downs_id` = ?;", $id);
$db->query("UPDATE ?_users SET `users_allcomments` = (`users_allcomments` + 1), `users_point` = (`users_point` + ?), `users_money` = (`users_money` + ?) WHERE `users_login` = ?", $config['comm_add_point'], $config['comm_add_money'], $log);
$inSes->addMessage('Ваш комментарий успешно добавлен!', 'ok');
gen_red('file', $id, RND);
}
else $inSes->addMessage('Антифлуд! Разрешается добавлять комментарии раз в ' . flood_period() . ' секунд!');
}
else $inSes->addMessage('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
}
else $inSes->addMessage('Ошибка! Слишком длинный или короткий комментарий!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Комментировать могут только зарегистрированные пользователи сайта!');
}
show_header($row['downs_title'], $row['downs_text'], $row['downs_text']);
if (!empty($row['downs_user_sex'])) echo show_xxx_form($row['cats_id']);
$filepath = ROOTPATH . DS . $config['files_folder'] . DS . $row['downs_id'] . DS;
$is_java = false; $jad_url = '';
if (!is_file($filepath . $row['downs_link'])) {
show_error('Ошибка! Файл не найден или ссылка неверна!');
}
else {
$file_url = $config['site_url'] . DS . $config['files_folder'] . DS . $row['downs_id'] . DS . $row['downs_link'];
$filesize = read_file($filepath . $row['downs_link']);
$file_ext = strtolower(substr(strrchr($row['downs_link'], '.'), 1));
if (in_array($file_ext, array('jpg', 'jpeg', 'gif', 'png'))) {
echo '<div class="b"><a href="' . $file_url . '">';
echo resize_screen($config['files_folder'] . DS . $row['downs_id'] . DS, $row['downs_link'], $config['preview_size'], $row['downs_title']) . '</a><br /></div>';
}
else if ($file_ext == 'flv' || $file_ext == 'mp4') {
echo video_player($file_url);
}
else {
if (!empty($row['downs_screen'])) {
echo '<div class="b" style="min-height: ' . $config['preview_size'] . ';"><table><tr><td>';
echo '<div class="img"><a href="' . DS . $config['files_folder'] . DS . $row['downs_id'] . DS . $row['downs_screen'] . '">';
echo resize_screen($config['files_folder'] . DS . $row['downs_id'] . DS, $row['downs_screen'], $config['preview_size'], $row['downs_title']) . '</a></div></td>';
}
else {
echo '<div class="b" style="min-height: ' . $config['preview_size'] . ';"><table><tr><td>';
echo '<div class="img"><img src="/images/no_photos.png" align="center" alt="" /></div></td>';
}
echo '</tr></table></div>';
if ($file_ext == 'jar') {
$is_java = (bool) get_jad($filepath . $row['downs_link'], $config['site_url'] . $file_url);
$jad_url = $config['site_url'] . str_ireplace('.jar', '.jad', $file_url);
}
}
if (!empty($row['downs_text'])) echo '<div class="b">' . nl2br(bb_code($row['downs_text']));
else echo '<div class="b">Описание к файлу не найдено!';
echo '<br /></div>';
if (!empty($config['allow_downs_nav'])) {
echo '<div class="c">';
$next = $db->selectRow("SELECT `downs_id` FROM ?_downs
WHERE `downs_user` = ? AND `downs_id` > ? ORDER BY `downs_id` LIMIT 1", $uz, $row['downs_id']);
$prev = $db->selectRow("SELECT `downs_id` FROM ?_downs
WHERE `downs_user` = ? AND `downs_id` < ? ORDER BY `downs_id` DESC LIMIT 1", $uz, $row['downs_id']);
if (!empty($prev['downs_id'])) {
echo '<a href="' . gen_uri('file', $prev['downs_id'], RND) . '"><< Назад</a>';
}
else echo '<< Назад';
echo ' | ';
if (!empty($next['downs_id'])) {
echo '<a href="' . gen_uri('file', $next['downs_id'], RND) . '">Далее >></a>';
}
else echo 'Далее >>';
echo '</div>';
}
if ($file_ext == 'mp3') {
$TaggingFormat = 'UTF-8';
require_once( ENGINE . '/getid3/getid3.php' );
$getID3 = new getID3; $v = array();
$getID3->setOption(array('encoding'=>$TaggingFormat));
$info = $getID3->analyze($filepath . $row['downs_link']);
if (!empty($info['tags']['id3v1']['title'][0]) || !empty($info['tags']['id3v2']['title'][0])) {
$v[] = !empty($info['tags']['id3v1']['title'][0]) ? '- Название: ' . check($info['tags']['id3v1']['title'][0]) :
'- Название: ' . check($info['tags']['id3v2']['title'][0]);
}
if (!empty($info['tags']['id3v1']['artist'][0]) || !empty($info['tags']['id3v2']['artist'][0])) {
$v[] = !empty($info['tags']['id3v1']['artist'][0]) ? '- Исполнитель: ' . check($info['tags']['id3v1']['artist'][0]) :
'- Исполнитель: ' . check($info['tags']['id3v2']['artist'][0]);
}
if (!empty($info['tags']['id3v1']['album'][0]) || !empty($info['tags']['id3v2']['album'][0])) {
$v[] = !empty($info['tags']['id3v1']['album'][0]) ? '- Альбом: ' . check($info['tags']['id3v1']['album'][0]) :
'- Альбом: ' . check($info['tags']['id3v2']['album'][0]);
}
if (!empty($info['tags']['id3v1']['year'][0]) || !empty($info['tags']['id3v2']['year'][0])) {
$v[] = !empty($info['tags']['id3v1']['year'][0]) ? '- Год: ' . check($info['tags']['id3v1']['year'][0]) :
'- Год: ' . check($info['tags']['id3v2']['year'][0]);
}
if (!empty($info['tags']['id3v1']['genre'][0]) || !empty($info['tags']['id3v2']['genre'][0])) {
$v[] = !empty($info['tags']['id3v1']['genre'][0]) ? '- Жандр: ' . check($info['tags']['id3v1']['genre'][0]) :
'- Жандр: ' . check($info['tags']['id3v2']['genre'][0]);
}
$v[] = !empty($info['bitrate']) ? '- Битрейт: ' . substr($info['bitrate'],0,3) : '-';
$v[] = !empty($info['playtime_string']) ? '- Длина: ' . $info['playtime_string'] : '-';
if (count($v) > 0) echo '<div class="b"><b>Инфа о треке</b><br />' . implode('<br />',$v) . '</div>';
echo mp3_player($file_url);
}
echo '<div class="b">';
echo icon('dload.png', 'icons');
echo '<a href="/load/' . gen_uri('download', $row['downs_id'], RND) . '">Скачать</a> (' . $filesize . ')<br />';
if ($is_java && $jad_url) {
echo icon('dload.png', 'icons');
echo '<a href="' . $jad_url . '">Скачать jad-файл</a><br />';
}
else if ($file_ext == 'txt') {
echo icon('post_new.png', 'icons');
echo '<a href="' . gen_uri('read', $id, RND) . '">Читать онлайн</a><br />';
}
echo '</div>';
echo '<div class="b">';
echo '<b>Закачек:</b> ' . num($row['downs_load']) . '<br />';
echo 'Файл добавлен обитателем: ' . user_visit_icon($row['downs_user'], $row['users_gender']);
echo ' ' . users_anketa($row['downs_user']) . ' (' . get_date($row['downs_time']) . ')<br />';
if (!empty($row['cats_id']) && !empty($row['cats_name'])) {
echo 'В папку: ' . icon('folder.png', 'icons');
echo '<a href="' . gen_uri('files', $row['cats_id'], RND) . '">' . $row['cats_name'] . '</a></div>';
}
else {
echo icon('folder.png', 'icons');
echo '<a href="' . gen_uri('files', '', RND) . '">Файлы сообщества</a></div>';
}
if ($is_admin_soo) {
if (!empty($_GET['move'])) {
$arr_cat = array();
$arr_cats = $db->select("SELECT * FROM ?_comm_files_category WHERE `cats_comm` = ?", $data['comm_id']);
$arr_cat[0] = 'Корневая';
if (!empty($arr_cats)) {
foreach($arr_cats as $cat) {
$arr_cat[$cat['cats_id']] = $cat['cats_name'];
}
}
if (!empty($arr_cat[$row['files_cats_id']])) unset($arr_cat[$row['files_cats_id']]);
$form = new cmsForm(gen_uri('file', $id, 'rnd=' . $_SESSION['token']), 'post', ' id="move"');
$form->addSelect('<b>Выберите папку:</b>', 'new_cat', '', $arr_cat);
echo $form->Submit(array('Переместить','Отмена'), array('move_file','cancel'));
unset($form);
}
else {
echo '<div class="b">';
echo ' [<a href="' . gen_uri('file', $id, 'move=1&' . RND . '#move') . '">Переместить</a> | ';
echo ' [<a href="' . gen_uri('file', $id, 'del_file=1&rnd=' . $_SESSION['token']) . '">Удалить</a>]</div>';
}
}
echo show_bookmarks($row['downs_title'], '', $row['bookmarks']);
echo '<div class="b">' . icon('email_send.png', 'icons');
echo '<a href="' . gen_uri('send_link', $row['downs_id'], RND) . '">Отправить другу</a><br />';
echo '</div>';
$comm_type = 'soo_files';
$comm_url = 'file';
// Подключили комменты
include( dirname(__FILE__) . '/comm_comments.php' );
if ($is_logged) {
$form = new cmsForm(gen_uri('file', $row['files_id'], 'rnd=' . $_SESSION['token']), 'post');
$form->addTextarea('Напишите комментарий:', 'text', request('text'));
echo $form->Submit('Добавить', 'submit');
unset($form);
}
else {
show_login('Вы не авторизованы, для комментирования, необходимо');
}
}
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>';
if (!empty($row['cats_id']) && !empty($row['cats_name'])) {
echo ' | <a href="' . gen_uri('files', $id, 'cat=' . $row['cats_id'] . '&' . RND) . '">' . $row['cats_name'] . '</a>';
}
echo '</div>';
?>