View file modules/diary/images.php

File size: 10.83Kb
<?php

/* DCMS Special
 * Дата последнего редактирования 21.01.2016
 * Модифицировал densnet
 */

foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'user') as $inc) {
    require_once "../../sys/inc/$inc.php";
}

$limit = 6;
if (isset($_GET['id'])) {
    $q = $db->super_query("SELECT COUNT(*) as count FROM `diary` WHERE `id`='" . intval($_GET['id']) . "' LIMIT 1");
    if ($q['count'] != 0) {
        $diary = $db->get_row($db->query("SELECT * FROM `diary` WHERE `id`='" . intval($_GET['id']) . "' LIMIT 1"));
        $set['title'] = '' . $diary['name'] . ' - ' . lang('Изображения'); // заголовок страницы

        require_once H . 'sys/inc/thead.php';

        aut();

        $us = get_user($diary['id_user']);
        if (isset($user) && ($user['id'] == $us['id'] || $user['level'] > 2 && $user['level'] > $us['level'])) {

            if (isset($_GET['img'])) {
                $q = $db->super_query("SELECT COUNT(*) as count FROM `diary_images` WHERE `id`='" . intval($_GET['img']) . "' AND `id_diary`='$diary[id]' LIMIT 1");
                if ($q['count'] != 0) {
                    $img = intval($_GET['img']);
                    if (isset($_GET['pos']) && ($_GET['pos'] == 'up' || $_GET['pos'] == 'down')) {
                        $pos = $_GET['pos'];
                        $db->query("UPDATE `diary_images` SET `position`='$pos' WHERE `id`='$img' LIMIT 1");
                        $_SESSION['message'] = lang('Изменения сохранены');

                        header("Location: ?id=$diary[id]");
                        exit();
                    } elseif (isset($_GET['del'])) {
                        $ras = $db->get_row($db->query("SELECT `ras` FROM `diary_images` WHERE `id`='$img' LIMIT 1"));
                        @unlink(H . "modules/diary/images/48/$img.$ras");
                        @unlink(H . "modules/diary/images/128/$img.$ras");
                        @unlink(H . "modules/diary/images/640/$img.$ras");
                        @unlink(H . "modules/diary/images/$img.$ras");
                        $db->query("DELETE FROM `diary_images` WHERE `id`='" . intval($_GET['img']) . "' LIMIT 1");

                        $_SESSION['message'] = lang('Изображение успешно удалено');

                        header("Location: ?id=$diary[id]");
                        exit();
                    }
                }
            }

            $q = $db->super_query("SELECT COUNT(*) as count FROM `diary_images` WHERE `id_diary`='$diary[id]' LIMIT 1");

            if (isset($_FILES['file']) && $q['count'] < $limit) {
                if ($imgc = @imagecreatefromstring(file_get_contents($_FILES['file']['tmp_name']))) {
                    $file = esc(stripcslashes(htmlspecialchars($_FILES['file']['name'])));
                    $ras = strtolower(preg_replace('#^.*\.#', NULL, $file));
                    $img_x = imagesx($imgc);
                    $img_y = imagesy($imgc);

                    if (isset($_POST['position']) && ($_POST['position'] == 'up' || $_POST['position'] == 'down')) {
                        $position = $_POST['position'];
                    } else {
                        $err[] = lang('Ошибка позиции');
                    }
                    if ($img_x > $set['max_upload_foto_x'] || $img_y > $set['max_upload_foto_y']) {
                        $err[] = lang('Размер изображения превышает ограничения в') . ' ' . $set['max_upload_foto_x'] . '*' . $set['max_upload_foto_y'];
                    }

                    if (!isset($err)) {
                        $db->query("INSERT INTO `diary_images` (`id_diary`, `position`, `ras`) values ('$diary[id]', '$position', '$ras')");
                        $id_image = $db->insert_id();

                        if ($img_x == $img_y) {
                            $dstW = 48; // ширина
                            $dstH = 48; // высота 
                        } elseif ($img_x > $img_y) {
                            $prop = $img_x / $img_y;
                            $dstW = 48;
                            $dstH = ceil($dstW / $prop);
                        } else {
                            $prop = $img_y / $img_x;
                            $dstH = 48;
                            $dstW = ceil($dstH / $prop);
                        }

                        $screen = imagecreatetruecolor($dstW, $dstH);
                        imagecopyresampled($screen, $imgc, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);

                        imagejpeg($screen, H . "modules/diary/images/48/$id_image.$ras", 90);
                        @chmod(H . "modules/diary/images/48/$id_image.$ras", 0777);
                        imagedestroy($screen);

                        if ($img_x == $img_y) {
                            $dstW = 128; // ширина
                            $dstH = 128; // высота 
                        } elseif ($img_x > $img_y) {
                            $prop = $img_x / $img_y;
                            $dstW = 128;
                            $dstH = ceil($dstW / $prop);
                        } else {
                            $prop = $img_y / $img_x;
                            $dstH = 128;
                            $dstW = ceil($dstH / $prop);
                        }

                        $screen = imagecreatetruecolor($dstW, $dstH);
                        imagecopyresampled($screen, $imgc, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);

                        $screen = img_copyright($screen); // наложение копирайта
                        imagejpeg($screen, H . "modules/diary/images/128/$id_image.$ras", 90);
                        @chmod(H . "modules/diary/images/128/$id_image.$ras", 0777);
                        imagedestroy($screen);

                        if ($img_x > 640 || $img_y > 640) {
                            if ($img_x == $img_y) {
                                $dstW = 640; // ширина
                                $dstH = 640; // высота 
                            } elseif ($img_x > $img_y) {
                                $prop = $img_x / $img_y;
                                $dstW = 640;
                                $dstH = ceil($dstW / $prop);
                            } else {
                                $prop = $img_y / $img_x;
                                $dstH = 640;
                                $dstW = ceil($dstH / $prop);
                            }

                            $screen = imagecreatetruecolor($dstW, $dstH);
                            imagecopyresampled($screen, $imgc, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);

                            $screen = img_copyright($screen); // наложение копирайта
                            imagejpeg($screen, H . "modules/diary/images/640/$id_image.$ras", 90);
                            imagedestroy($screen);
                            $imgc = img_copyright($imgc); // наложение копирайта
                            imagejpeg($imgc, H . "modules/diary/images/$id_image.$ras", 90);
                            @chmod(H . "modules/diary/images/$id_image.$ras", 0777);
                        } else {
                            $imgc = img_copyright($imgc); // наложение копирайта

                            imagejpeg($imgc, H . "modules/diary/images/640/$id_image.$ras", 90);
                            imagejpeg($imgc, H . "modules/diary/images/$id_image.$ras", 90);
                            @chmod(H . "modules/diary/images/$id_image.$ras", 0777);
                        }

                        @chmod(H . "modules/diary/images/640/$id_image.$ras", 0777);



                        imagedestroy($imgc);

                        $_SESSION['message'] = lang('Изображение успешно добавлено');

                        header("Location: ?id=$diary[id]");
                        exit();
                    }
                } else {
                    $err = 'Выбранный Вами формат изображения не поддерживается';
                }
            }
            err();

            echo "<div class='list-group-item-null list-group-item-grey'>";
            echo lang('Лимит изображений') . ": $limit ";
            echo "</div>";

            $q = $db->query("SELECT * FROM `diary_images` WHERE `id_diary`='$diary[id]' ORDER BY `id` ASC");
            while ($image = $db->get_row($q)) {
                echo "<table class='list-group-item-null'><tr><td class='icon14'>";
                echo "<img src='images/48/$image[id].$image[ras]' />";
                echo "</td><td class='null'>";
                echo "<a href='?id=$diary[id]&amp;img=$image[id]&amp;del' style='float: right;' data-toggle='tooltip' data-placement='left' title='" . lang('Удалить') . "'><i class='fa fa-trash-o fa-fw'></i></a>";

                echo lang('Позиция') . ':<br/>';
                if ($image['position'] == 'up') {
                    echo "<b>" . lang('Вверху') . "</b>";
                } else {
                    echo "<a href='?id=$diary[id]&amp;img=$image[id]&amp;pos=up'>" . lang('Вверху') . "</a>";
                }
                echo ' | ';
                if ($image['position'] == 'down') {
                    echo "<b>" . lang('Внизу') . "</b>";
                } else {
                    echo "<a href='?id=$diary[id]&amp;img=$image[id]&amp;pos=down'>" . lang('Внизу') . "</a>";
                }

                echo "</td></tr></table>";
            }

            $q = $db->super_query("SELECT COUNT(*) as count FROM `diary_images` WHERE `id_diary`='$diary[id]' LIMIT 1");
            if ($q['count'] < $limit) {
                echo '<form class="list-group-item-null" enctype="multipart/form-data" action="?id=' . $diary['id'] . '" method="post">';
                $doc->File('file', 'Изображение');
                echo lang('Позиция');
                echo '<select name="position" class="form-control" style="width: 50%;">';
                echo '<option value="up">Сверху</option>';
                echo '<option value="down">Снизу</option>';
                echo '</select><br/>';

                $doc->Button('btn btn-primary btn-sm', null, 'upload', 'Выгрузить');
                echo '</form>';
            }
            $doc->Link('list-group-item-null', "/modules/diary/$diary[name]/", 'arrow-left', 'Назад');
        } else {
            header("Location:/diary/$diary[name]/");
        }
    }
} else {
    header("Location:index.php");
}
require_once H . 'sys/inc/tfoot.php';