View file mc-master/modules/photo/controllers/photo.php

File size: 33.55Kb
<?php

/**
 * MobileCMS
 *
 * Open source content management system for mobile sites
 *
 * @author MobileCMS Team <[email protected]>
 * @copyright Copyright (c) 2011-2019, MobileCMS Team
 * @link https://mobilecms.pro Official site
 * @license MIT license
 */

/**
 * Контроллер пользовательской части фотоальбомов
 */
class Photo_Controller extends Controller
{

    /**
     * Construct
     */
    public function __construct()
    {
        parent::__construct();

        # Получаем ID пользователя в зависимости от действия
        if (isset($_GET['action'])) {
            $this->user_id = intval($_GET['user_id']);
        } else {
            if (is_numeric($_GET['user_id']))
                $this->user_id = intval($_GET['user_id']);
            else
                $this->user_id = USER_ID;
        }

        # Получаем анкету пользователя
        if (!$this->profile = $this->db->get_row("SELECT * FROM #__users_profiles JOIN #__users USING(user_id) WHERE user_id = '" . $this->user_id . "' AND user_id != '-1'"))
            $this->user_id = FALSE;
    }

    /**
     * Метод по умолчанию
     */
    public function action_index()
    {
        $this->action_list_all_albums();
    }

    /**
     * Список фотоальбомов юзера
     */
    public function action_list_albums()
    {
        if ($this->user_id == 'FALSE')
            header('Location: /main/page_not_found.php');

        # Получение данных
        $result = $this->db->query("SELECT SQL_CALC_FOUND_ROWS #__photo_albums.*, #__users.status AS user_status
  	FROM #__photo_albums LEFT JOIN #__users USING(user_id)
  	WHERE user_id = '" . $this->user_id . "'
  	ORDER BY album_id DESC LIMIT $this->start, $this->per_page");

        $total = $this->db->get_one("SELECT FOUND_ROWS()");

        if (!class_exists('smiles'))
            a_import('modules/smiles/helpers/smiles');

        while ($album = $this->db->fetch_array($result)) {
            $album['about'] = main::bbcode($album['about']);
            $album['about'] = smiles::smiles_replace($album['about']);
            $album['about'] = nl2br($album['about']);
            $album['count'] = $this->db->get_one("SELECT COUNT(*) FROM #__photo WHERE album_id = '$album[album_id]'");

            $albums[] = $album;
        }

        # Пагинация
        $pg_conf['base_url'] = a_url('photo/list_albums', 'user_id=' . $this->user_id . '&amp;start=');
        $pg_conf['total_rows'] = $total;
        $pg_conf['per_page'] = $this->per_page;

        a_import('libraries/pagination');
        $pg = new CI_Pagination($pg_conf);

        $this->tpl->assign(array(
            'albums' => $albums,
            'total' => $total,
            'profile' => $this->profile,
            'user_id' => $this->user_id,
            'pagination' => $pg->create_links()
        ));

        $this->tpl->display('list_albums');
    }

    /**
     * Фотографии альбома
     */
    public function action_list_photos()
    {
        if ($this->user_id == 'FALSE')
            header('Location: /main/page_not_found.php');

        $album_id = intval($_GET['album_id']);

        if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
            a_error('Выбранный альбом не существует');

        # Получение данных
        $result = $this->db->query("SELECT SQL_CALC_FOUND_ROWS #__photo.*, #__users.status AS user_status
  	FROM #__photo LEFT JOIN #__users USING(user_id)
  	WHERE user_id = '" . $this->user_id . "' AND album_id = '$album_id' 
  	ORDER BY photo_id DESC LIMIT $this->start, $this->per_page");

        $total = $this->db->get_one("SELECT FOUND_ROWS()");

        if (!class_exists('smiles'))
            a_import('modules/smiles/helpers/smiles');

        while ($photo = $this->db->fetch_array($result)) {
            $photo['about'] = main::bbcode($photo['about']);
            $photo['about'] = smiles::smiles_replace($photo['about']);
            $photo['about'] = nl2br($photo['about']);
            list($width) = getimagesize(URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext']);
            $photo['image'] = '<a href="' . a_url('photo/view_photo', 'user_id=' . $photo['user_id'] . '&amp;album_id=' . $photo['album_id'] . '&amp;photo_id=' . $photo['photo_id']) . '"><img src="' . URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext'] . '" alt=""' . ($this->config['photo']['preview_widht'] != 0 && $width > $this->config['photo']['preview_widht'] ? ' width="' . $this->config['photo']['preview_widht'] . '"' : NULL) . ' /></a><br />';

            $photos[] = $photo;
        }

        # Пагинация
        $pg_conf['base_url'] = a_url('photo/list_photos', 'album_id=' . $album_id . '&amp;user_id=' . $this->user_id . '&amp;start=');
        $pg_conf['total_rows'] = $total;
        $pg_conf['per_page'] = $this->per_page;

        a_import('libraries/pagination');
        $pg = new CI_Pagination($pg_conf);

        $_config = $this->config['photo'];

        $this->tpl->assign(array(
            'album' => $this->album,
            'total' => $total,
            'config' => $_config,
            'profile' => $this->profile,
            'photos' => $photos,
            'user_id' => $this->user_id,
            'pagination' => $pg->create_links()
        ));

        $this->tpl->display('list_photos');
    }

    /**
     * Список всех фотографий
     */
    public function action_list_all_photos()
    {
        # Получение данных
        $result = $this->db->query("SELECT SQL_CALC_FOUND_ROWS #__photo.*, #__users.status AS user_status
  	FROM #__photo LEFT JOIN #__users USING(user_id)
  	ORDER BY album_id DESC LIMIT $this->start, $this->per_page");

        $total = $this->db->get_one("SELECT FOUND_ROWS()");

        if (!class_exists('smiles'))
            a_import('modules/smiles/helpers/smiles');

        while ($photo = $this->db->fetch_array($result)) {
            $photo['about'] = main::bbcode($photo['about']);
            $photo['about'] = smiles::smiles_replace($photo['about']);
            $photo['about'] = nl2br($photo['about']);
            $photo['username'] = $this->db->get_one("SELECT username FROM #__users WHERE user_id = '$photo[user_id]'");
            $photo['album_name'] = $this->db->get_one("SELECT name FROM #__photo_albums WHERE album_id = '$photo[album_id]'");
            list($width) = getimagesize(URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext']);
            $photo['image'] = '<a href="' . a_url('photo/view_photo', 'user_id=' . $photo['user_id'] . '&amp;album_id=' . $photo['album_id'] . '&amp;photo_id=' . $photo['photo_id']) . '"><img src="' . URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext'] . '" alt=""' . ($this->config['photo']['preview_widht'] != 0 && $width > $this->config['photo']['preview_widht'] ? ' width="' . $this->config['photo']['preview_widht'] . '"' : NULL) . ' /></a><br />';

            $photos[] = $photo;
        }

        # Пагинация
        $pg_conf['base_url'] = a_url('photo/list_all_photos', 'start=');
        $pg_conf['total_rows'] = $total;
        $pg_conf['per_page'] = $this->per_page;

        a_import('libraries/pagination');
        $pg = new CI_Pagination($pg_conf);

        $_config = $this->config['photo'];

        $this->tpl->assign(array(
            'photos' => $photos,
            'config' => $_config,
            'total' => $total,
            'pagination' => $pg->create_links()
        ));

        $this->tpl->display('list_all_photos');
    }

    /**
     * Список всех альбомов
     */
    public function action_list_all_albums()
    {
        # Получение данных
        $result = $this->db->query("SELECT SQL_CALC_FOUND_ROWS #__photo_albums.*, #__users.status AS user_status
  	FROM #__photo_albums LEFT JOIN #__users USING(user_id)
  	ORDER BY album_id DESC LIMIT $this->start, $this->per_page");

        $total = $this->db->get_one("SELECT FOUND_ROWS()");

        if (!class_exists('smiles'))
            a_import('modules/smiles/helpers/smiles');

        while ($album = $this->db->fetch_array($result)) {
            $album['about'] = main::bbcode($album['about']);
            $album['about'] = smiles::smiles_replace($album['about']);
            $album['about'] = nl2br($album['about']);
            $album['username'] = $this->db->get_one("SELECT username FROM #__users WHERE user_id = '$album[user_id]'");
            $album['count'] = $this->db->get_one("SELECT COUNT(*) FROM #__photo WHERE album_id = '$album[album_id]'");

            $albums[] = $album;
        }

        # Пагинация
        $pg_conf['base_url'] = a_url('photo/list_all_albums', 'start=');
        $pg_conf['total_rows'] = $total;
        $pg_conf['per_page'] = $this->per_page;

        a_import('libraries/pagination');
        $pg = new CI_Pagination($pg_conf);

        $this->tpl->assign(array(
            'albums' => $albums,
            'total' => $total,
            'pagination' => $pg->create_links()
        ));

        $this->tpl->display('list_all_albums');
    }

    /**
     * Управление альбомами
     */
    public function action_edit_albums()
    {
        if ($this->user_id == 'FALSE')
            header('Location: /main/page_not_found.php');

        switch ($_GET['action']) {
            case 'add':
                if ($this->user_id != USER_ID)
                    header('Location: /main/page_not_found.php');

                if (isset($_POST['submit'])) {
                    if (empty($_POST['name']))
                        $this->error .= 'Не введено название альбома<br />';

                    if (!empty($_POST['name']) && mb_strlen($_POST['name'], 'UTF-8') > 30)
                        $this->error .= 'Название альбома не должно быть длинее 30 символов<br />';

                    if (!empty($_POST['name']) && $this->db->get_one("SELECT album_id FROM #__photo_albums WHERE name = '" . a_safe($_POST['name']) . "' AND user_id = '" . $this->user_id . "'"))
                        $this->error .= 'Альбом с таким названием уже существует<br />';

                    if (!empty($_POST['about']) && mb_strlen($_POST['about'], 'UTF-8') > 3000)
                        $this->error .= 'Описание альбома не должно быть длинее 3000 символов<br />';

                    if (!$this->error) {
                        $this->db->query("INSERT INTO #__photo_albums SET
              user_id = '" . $this->user_id . "',
              name = '" . a_safe($_POST['name']) . "',
              about = '" . a_safe($_POST['about']) . "'
            ");

                        user::rating_update();

                        a_notice('Альбом успешно добавлен', URL . 'photo/list_albums/?user_id=' . $this->user_id);
                    }
                }

                $action = 'add';
                $title = 'Добавление альбома';

                $this->tpl->assign(array(
                    'error' => $this->error,
                    'action' => $action,
                    'user_id' => $this->user_id,
                    'title' => $title,
                ));

                $this->tpl->display('edit_albums');
                break;

            case 'edit':
                if (ACCESS_LEVEL >= 8 || $this->user_id == USER_ID) {
                    $album_id = intval($_GET['album_id']);

                    if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
                        a_error('Выбранный альбом не существует');

                    if (isset($_POST['submit'])) {
                        if (empty($_POST['name']))
                            $this->error = 'Не введено название альбома<br />';

                        if (!empty($_POST['name']) && mb_strlen($_POST['name'], 'UTF-8') > 30)
                            $this->error = 'Название альбома не должно быть длинее 30 символов<br />';

                        if (!empty($_POST['about']) && mb_strlen($_POST['about'], 'UTF-8') > 3000)
                            $this->error = 'Описание альбома не должно быть длинее 3000 символов<br />';

                        if (!$this->error) {
                            $this->db->query("UPDATE #__photo_albums SET
                user_id = '" . $this->user_id . "',
                name = '" . a_safe($_POST['name']) . "',
                about = '" . a_safe($_POST['about']) . "'
              WHERE album_id = '$album_id'
              ");

                            a_notice('Альбом успешно изменен', URL . 'photo/list_albums/?user_id=' . $this->user_id);
                        }
                    }

                    $action = 'edit';
                    $title = 'Изменение альбома';

                    $album['username'] = $this->db->get_one("SELECT username FROM #__users WHERE user_id = '$album[user_id]'");

                    $this->tpl->assign(array(
                        'error' => $this->error,
                        'album' => $this->album,
                        'action' => $action,
                        'title' => $title,
                        'user_id' => $this->user_id
                    ));

                    $this->tpl->display('edit_albums');
                } else {
                    a_error('У вас нет прав на выполнение этой операции!');
                }
                break;

            case 'del':
                if (ACCESS_LEVEL >= 8 || $this->user_id == USER_ID) {
                    $album_id = intval($_GET['album_id']);

                    if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
                        a_error("Выбран не существующий альбом!");

                    if (!empty($_GET['confirm'])) {
                        $this->db->query("DELETE FROM #__photo_albums WHERE album_id = '$album_id'");

                        user::rating_update(-1, $album['user_id']);

                        $photo_count = $this->db->query("SELECT * FROM #__photo JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "'");

                        while ($photo = mysql_fetch_assoc($photo_count)) {
                            $this->db->query("DELETE FROM #__photo WHERE photo_id = '$photo[photo_id]'");

                            @unlink(ROOT . 'files/photo/' . $photo['photo_id'] . '.png');
                            @unlink(ROOT . 'files/photo/' . $photo['photo_id'] . '.gif');
                            @unlink(ROOT . 'files/photo/' . $photo['photo_id'] . '.jpg');

                            user::rating_update(-1, $photo['user_id']);
                        }

                        a_notice('Альбом со всеми фотографиями удален', a_url('photo/list_albums', 'user_id=' . $this->user_id));
                    } else {
                        a_confirm('Подтверждаете удаление альбома?', a_url('photo/edit_albums', 'user_id=' . $this->user_id . '&amp;album_id=' . $album_id . '&amp;action=del&amp;confirm=ok'), a_url('photo/list_albums', 'user_id=' . $this->user_id));
                    }
                } else {
                    a_error('У вас нет прав для выполнения этой операции!');
                }
                break;

            default:
                header('Location: /main/page_not_found.php');
                break;
        }
    }

    /**
     * Управление фотографиями
     */
    public function action_edit_photos()
    {
        if ($this->user_id == 'FALSE')
            header('Location: /main/page_not_found.php');

        switch ($_GET['action']) {
            case 'add':
                if ($this->user_id != USER_ID)
                    header('Location: /main/page_not_found.php');

                $album_id = intval($_GET['album_id']);

                if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
                    a_error('Выбранный альбом не существует');

                if (isset($_POST['submit'])) {
                    if (empty($_POST['name']))
                        $this->error .= 'Не введено название фотографии<br />';

                    if (!empty($_POST['name']) && mb_strlen($_POST['name'], 'UTF-8') > 30)
                        $this->error .= 'Название фотографии не должно быть длинее 30 символов<br />';

                    if (!empty($_POST['name']) && $this->db->get_one("SELECT album_id FROM #__photo_albums WHERE name = '" . a_safe($_POST['name']) . "' AND user_id = '" . $this->user_id . "' AND album_id = '$album_id'"))
                        $this->error .= 'Фотография с таким названием уже существует<br />';

                    if (!empty($_POST['about']) && mb_strlen($_POST['about'], 'UTF-8') > 3000)
                        $this->error .= 'Описание фотографии не должно быть длинее 3000 символов<br />';

                    $file = array();

                    if (!empty($_FILES['file_upload']['tmp_name'])) {
                        # Транслит названий файла
                        $_FILES['file_upload']['tmp_name'] = main::detranslite($_FILES['file_upload']['tmp_name']);
                        $_FILES['file_upload']['name'] = main::detranslite($_FILES['file_upload']['name']);

                        $type = 'upload';
                        $file['real_name'] = $_FILES['file_upload']['name'];
                        $file['file_ext'] = array_pop(explode('.', $file['real_name']));
                        $file['filesize'] = filesize($_FILES['file_upload']['tmp_name']);

                        if (!strstr($_FILES['file_upload']['type'], 'image/'))
                            $this->error .= 'Неверный формат фотографии! Разрешены только gif, jpg и png<br />';
                    } else if (!empty($_POST['file_import']) && $_POST['file_import'] != 'http://') {
                        $type = 'import';
                        $file['real_name'] = main::detranslite(basename($_POST['file_import']));
                        $file['file_ext'] = array_pop(explode('.', $file['real_name']));
                        $file['filesize'] = main::get_filesize($_POST['file_import']);

                        if ($file['file_ext'] != 'jpg' && $file['file_ext'] != 'jpeg' && $file['file_ext'] != 'gif' && $file['file_ext'] != 'png')
                            $this->error .= 'Неверный формат фотографии! Разрешены только gif, jpg и png<br />';
                    } else
                        $this->error .= 'Укажите загружаемый файл!<br />';

                    if (isset($type) && ($file['filesize'] > $this->config['photo']['max_size'] * 1048576) || $file['filesize'] === false)
                        $this->error .= 'Размер загружаемого файла превышает допустимый размер (' . $this->config['photo']['max_size'] . ' Mb)<br />';

                    if (!$this->error) {
                        $this->db->query("INSERT INTO #__photo SET
              user_id = '" . $this->user_id . "',
              album_id = '" . $this->album['album_id'] . "',
              name = '" . a_safe($_POST['name']) . "',
              about = '" . a_safe($_POST['about']) . "',
              file_ext = '$file[file_ext]',
              time = UNIX_TIMESTAMP()
            ");

                        $file_id = $this->db->insert_id();

                        # Удаляем фото с тем же ID
                        @unlink(ROOT . 'files/photo/' . $file_id . '.png');
                        @unlink(ROOT . 'files/photo/' . $file_id . '.gif');
                        @unlink(ROOT . 'files/photo/' . $file_id . '.jpg');

                        if ($type == 'upload') {
                            $file_path = ROOT . 'files/photo/' . $file_id . '.' . $file['file_ext'];
                            copy($_FILES['file_upload']['tmp_name'], $file_path);
                        } else {
                            $file_path = ROOT . 'files/photo/' . $file_id . '.' . $file['file_ext'];
                            copy($_POST['file_import'], $file_path);
                        }

                        user::rating_update();

                        a_notice('Фотография успешно добавлена', URL . 'photo/list_photos/?user_id=' . $this->user_id . '&album_id=' . $this->album['album_id']);
                    }
                }

                $action = 'add';
                $title = 'Добавление фотографии';
                $_config = $this->config['photo'];

                $this->tpl->assign(array(
                    'error' => $this->error,
                    'config' => $_config,
                    'action' => $action,
                    'album' => $this->album,
                    'user_id' => $this->user_id,
                    'title' => $title,
                ));

                $this->tpl->display('edit_photos');
                break;

            case 'edit':
                if (ACCESS_LEVEL >= 8 || $this->user_id == USER_ID) {
                    $album_id = intval($_GET['album_id']);

                    if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
                        a_error('Выбранный альбом не существует');

                    $photo_id = intval($_GET['photo_id']);

                    if (!$this->photo = $this->db->get_row("SELECT * FROM #__photo JOIN #__users USING(user_id) WHERE photo_id = '" . $photo_id . "' AND user_id = '" . $this->user_id . "' AND album_id = '" . $this->album['album_id'] . "'"))
                        a_error('Выбранная фотография не существует');

                    if (isset($_POST['submit'])) {
                        if (empty($_POST['name']))
                            $this->error .= 'Не введено название фотографии<br />';

                        if (!empty($_POST['name']) && mb_strlen($_POST['name'], 'UTF-8') > 30)
                            $this->error .= 'Название фотографии не должно быть длинее 30 символов<br />';

                        if (!empty($_POST['name']) && $this->db->get_one("SELECT album_id FROM #__photo_albums WHERE name = '" . a_safe($_POST['name']) . "' AND user_id = '" . $this->user_id . "' AND album_id = '$album_id'"))
                            $this->error .= 'Фотография с таким названием уже существует<br />';

                        if (!empty($_POST['about']) && mb_strlen($_POST['about'], 'UTF-8') > 3000)
                            $this->error .= 'Описание фотографии не должно быть длинее 3000 символов<br />';

                        $file = array();

                        if (!empty($_FILES['file_upload']['tmp_name'])) {
                            # Транслит названий файла
                            $_FILES['file_upload']['tmp_name'] = main::detranslite($_FILES['file_upload']['tmp_name']);
                            $_FILES['file_upload']['name'] = main::detranslite($_FILES['file_upload']['name']);

                            $type = 'upload';
                            $file['real_name'] = $_FILES['file_upload']['name'];
                            $file['file_ext'] = array_pop(explode('.', $file['real_name']));
                            $file['filesize'] = filesize($_FILES['file_upload']['tmp_name']);

                            if (!strstr($_FILES['file_upload']['type'], 'image/'))
                                $this->error .= 'Неверный формат фотографии! Разрешены только gif, jpg и png<br />';
                        } else if (!empty($_POST['file_import']) && $_POST['file_import'] != 'http://') {
                            $type = 'import';
                            $file['real_name'] = main::detranslite(basename($_POST['file_import']));
                            $file['file_ext'] = array_pop(explode('.', $file['real_name']));
                            $file['filesize'] = main::get_filesize($_POST['file_import']);

                            if ($file['file_ext'] != 'jpg' && $file['file_ext'] != 'jpeg' && $file['file_ext'] != 'gif' && $file['file_ext'] != 'png')
                                $this->error .= 'Неверный формат фотографии! Разрешены только gif, jpg и png<br />';
                        }

                        if (isset($type) && ($file['filesize'] > $this->config['photo']['max_size'] * 1048576) || $file['filesize'] === false)
                            $this->error .= 'Размер загружаемого файла превышает допустимый размер (' . $this->config['photo']['max_size'] . ' Mb)<br />';

                        if (!$this->error) {
                            if (!isset($type))
                                $file = $this->photo;

                            $this->db->query("UPDATE #__photo SET
                user_id = '" . $this->user_id . "',
                album_id = '" . $this->album['album_id'] . "',
                name = '" . a_safe($_POST['name']) . "',
                about = '" . a_safe($_POST['about']) . "',
                file_ext = '$file[file_ext]',
                time = UNIX_TIMESTAMP()
              WHERE photo_id = '" . $this->photo['photo_id'] . "'
              ");

                            $file_id = $this->db->insert_id();

                            if (isset($type)) {
                                # Удаляем фото с тем же ID
                                @unlink(ROOT . 'files/photo/' . $file_id . '.png');
                                @unlink(ROOT . 'files/photo/' . $file_id . '.gif');
                                @unlink(ROOT . 'files/photo/' . $file_id . '.jpg');
                            }

                            if (isset($type) && $type == 'upload') {
                                $file_path = ROOT . 'files/photo/' . $file_id . '.' . $file['file_ext'];
                                copy($_FILES['file_upload']['tmp_name'], $file_path);
                            } else if (isset($type) && $type == 'import') {
                                $file_path = ROOT . 'files/photo/' . $file_id . '.' . $file['file_ext'];
                                copy($_POST['file_import'], $file_path);
                            }

                            user::rating_update();

                            a_notice('Фотография успешно изменена', URL . 'photo/list_photos/?user_id=' . $this->user_id . '&amp;album_id=' . $this->album['album_id']);
                        }
                    }

                    $photo = $this->photo;

                    list($width) = getimagesize(URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext']);
                    $photo['image'] = '<a href="' . a_url('photo/view_photo', 'user_id=' . $photo['user_id'] . '&amp;album_id=' . $photo['album_id'] . '&amp;photo_id=' . $photo['photo_id']) . '"><img src="' . URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext'] . '" alt=""' . ($this->config['photo']['max_widht'] != 0 && $width > $this->config['photo']['max_widht'] ? ' width="' . $this->config['photo']['max_widht'] . '"' : NULL) . ' /></a><br />';

                    $action = 'edit';
                    $title = 'Изменение фотографии';
                    $_config = $this->config['photo'];

                    $this->tpl->assign(array(
                        'error' => $this->error,
                        'config' => $_config,
                        'action' => $action,
                        'photo' => $photo,
                        'album' => $this->album,
                        'user_id' => $this->user_id,
                        'title' => $title,
                    ));

                    $this->tpl->display('edit_photos');
                } else {
                    a_error('У вас нет прав для выполнения этой операции!');
                }
                break;

            case 'del':
                if (ACCESS_LEVEL >= 8 || $this->user_id == USER_ID) {
                    $album_id = intval($_GET['album_id']);

                    if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
                        a_error("Выбран не существующий альбом!");

                    $photo_id = intval($_GET['photo_id']);

                    if (!$this->photo = $this->db->get_row("SELECT * FROM #__photo JOIN #__users USING(user_id) WHERE photo_id = '" . $photo_id . "' AND user_id = '" . $this->user_id . "' AND album_id = '" . $this->album['album_id'] . "'"))
                        a_error('Выбранная фотография не существует');

                    if (!empty($_GET['confirm'])) {
                        $this->db->query("DELETE FROM #__photo WHERE photo_id = '$photo_id'");

                        @unlink(ROOT . 'files/photo/' . $photo_id . '.png');
                        @unlink(ROOT . 'files/photo/' . $photo_id . '.gif');
                        @unlink(ROOT . 'files/photo/' . $photo_id . '.jpg');

                        user::rating_update(-1, $photo['user_id']);
                        a_notice('Фотография удалена', a_url('photo/list_photos', 'user_id=' . $this->user_id . '&amp;album_id=' . $album_id));
                    } else {
                        a_confirm('Подтверждаете удаление фотографии?', a_url('photo/edit_photos', 'user_id=' . $this->user_id . '&amp;album_id=' . $album_id . '&amp;photo_id=' . $photo_id . '&amp;action=del&amp;confirm=ok'), a_url('photo/list_photos', 'user_id=' . $this->user_id . '&amp;album_id=' . $album_id));
                    }
                } else {
                    a_error('У вас нет прав для выполнения этой операции!');
                }
                break;

            default:
                header('Location: /main/page_not_found.php');
                break;
        }
    }

    /**
     * Просмотр деталей фотографии
     */
    public function action_view_photo()
    {
        $album_id = intval($_GET['album_id']);

        if (!$this->album = $this->db->get_row("SELECT * FROM #__photo_albums JOIN #__users USING(user_id) WHERE album_id = '" . $album_id . "' AND user_id = '" . $this->user_id . "'"))
            a_error('Выбранный альбом не существует');

        $photo_id = intval($_GET['photo_id']);

        if (!$this->photo = $this->db->get_row("SELECT *,
		 	(SELECT username FROM #__users AS u WHERE u.user_id = photo.user_id) AS username,
		 	(SELECT COUNT(*) FROM #__comments_posts WHERE module = 'photo' AND item_id = photo.photo_id) comments
		 	FROM #__photo AS photo WHERE photo.photo_id = '" . $photo_id . "' AND photo.user_id = '" . $this->user_id . "' AND photo.album_id = '" . $album_id . "'"))
            a_error('Выбранная фотография не существует');

        $photo = $this->photo;

        list($width) = getimagesize(URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext']);
        $photo['image'] = '<a href="' . URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext'] . '"><img src="' . URL . 'files/photo/' . $photo['photo_id'] . '.' . $photo['file_ext'] . '" alt=""' . ($this->config['photo']['max_widht'] != 0 && $width > $this->config['photo']['max_widht'] ? ' width="' . $this->config['photo']['max_widht'] . '"' : NULL) . ' /></a><br />';

        $_config = $this->config['photo'];

        $this->tpl->assign(array(
            'album' => $this->album,
            'photo' => $photo,
            'profile' => $this->profile,
            'config' => $_config
        ));

        $this->tpl->display('view_photo');
    }

}

?>