Просмотр файла modules/album/includes/comments.php

Размер файла: 4.29Kb
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

defined('_IN_JOHNCMS') || die('Error: restricted access');

/**
 * @var PDO $db
 * @var Johncms\System\Users\User $user
 * @var Johncms\System\Legacy\Tools $tools
 */

// Проверяем наличие комментируемого объекта
$req_obj = $db->query("SELECT * FROM `cms_album_files` WHERE `id` = '${img}'");

if ($req_obj->rowCount()) {
    $res_obj = $req_obj->fetch();

    // Получаем данные владельца Альбома
    $owner = $db->query('SELECT * FROM `users` WHERE `id` = ' . $res_obj['user_id'])->fetch();

    if (! $owner) {
        echo $view->render(
            'system::pages/result',
            [
                'title'    => $title,
                'type'     => 'alert-danger',
                'message'  => __('User does not exists'),
                'back_url' => './list?user=' . $owner['id'],
            ]
        );
        exit;
    }

    // Показываем выбранную картинку
    unset($_SESSION['ref']);
    $res_a = $db->query('SELECT * FROM `cms_album_cat` WHERE `id` = ' . $res_obj['album_id'])->fetch();

    $nav_chain->add(htmlspecialchars($res_a['name']));

    if (($res_a['access'] === 1 && $owner['id'] !== $user->id && $user->rights < 7) || ($res_a['access'] === 2 && $user->rights < 7 && (! isset($_SESSION['ap']) || $_SESSION['ap'] !== $res_a['password']) && $owner['id'] !== $user->id)) {
        // Если доступ закрыт
        echo $view->render(
            'system::pages/result',
            [
                'title'    => $title,
                'type'     => 'alert-danger',
                'message'  => __('Access forbidden'),
                'back_url' => './list?user=' . $owner['id'],
            ]
        );
        exit;
    }

    // Параметры комментариев
    $arg = [
        'comments_table' => 'cms_album_comments', // Таблица с комментариями
        'object_table'   => 'cms_album_files',    // Таблица комментируемых объектов
        'script'         => './comments?',      // Имя скрипта (с параметрами вызова)
        'sub_id_name'    => 'img',                // Имя идентификатора комментируемого объекта
        'sub_id'         => $img,                 // Идентификатор комментируемого объекта
        'owner'          => $owner['id'],         // Владелец объекта
        'owner_delete'   => true,                 // Возможность владельцу удалять комментарий
        'owner_reply'    => true,                 // Возможность владельцу отвечать на комментарий
        'owner_edit'     => false,                // Возможность владельцу редактировать комментарий
        'title'          => __('Comments'),       // Название раздела
        'context_top'    => '',         // Выводится вверху списка
        'context_bottom' => '',                   // Выводится внизу списка
        'back_url'       => './show?al=' . $res_obj['album_id'] . '&user=' . $owner['id'],                   // Выводится внизу списка
    ];

    // Ставим метку прочтения
    if ($user->id === $owner['id'] && $res_obj['unread_comments']) {
        $db->exec("UPDATE `cms_album_files` SET `unread_comments` = '0' WHERE `id` = '${img}' LIMIT 1");
    }

    // Показываем комментарии
    $comm = new Johncms\Comments($arg);

    // Обрабатываем метки непрочитанных комментариев
    if ($comm->added && $user->id !== $owner['id']) {
        $db->exec("UPDATE `cms_album_files` SET `unread_comments` = '1' WHERE `id` = '${img}' LIMIT 1");
    }
} else {
    echo $view->render(
        'system::pages/result',
        [
            'title'   => $title,
            'type'    => 'alert-danger',
            'message' => __('Wrong data'),
        ]
    );
}