<?php
/**
* Photoalbums
*
* @package
* @author Platonov Kirill <[email protected]>
* @link http://twitter.com/platonov_kd
*/
/**
* Контроллер пользовательской части фотоальбомов
*/
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 .'&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'] .'&album_id='. $photo['album_id'] .'&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 .'&user_id='. $this->user_id .'&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'] .'&album_id='. $photo['album_id'] .'&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 .'&album_id='. $album_id .'&action=del&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 .'&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'] .'&album_id='. $photo['album_id'] .'&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 .'&album_id='. $album_id));
} else {
a_confirm('Подтверждаете удаление фотографии?', a_url('photo/edit_photos', 'user_id='. $this->user_id .'&album_id='. $album_id .'&photo_id='. $photo_id .'&action=del&confirm=ok'), a_url('photo/list_photos', 'user_id='. $this->user_id .'&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');
}
}
?>