Просмотр файла modules/photo/controllers/photo.php

Размер файла: 29.67Kb
<?php
/**
 * MobileCMS
 *
 * Open source content management system for mobile sites
 *
 * @author MobileCMS Team <[email protected]>
 * @copyright Copyright (c) 2011, MobileCMS Team
 * @link http://mobilecms.ru Official site
 * @license http://opensource.org/licenses/gpl-license.php GNU Public 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 .'&amp;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');
  }       
}

?>