You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1159 lines
36 KiB
1159 lines
36 KiB
9 years ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Класс работы с галереями
|
||
|
*
|
||
|
* @package AVE.cms
|
||
|
* @subpackage module_Gallery
|
||
|
* @filesource
|
||
|
*/
|
||
|
class Gallery
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* СВОЙСТВА
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Количество галерей в списке
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
var $_limit_galleries = 10;
|
||
|
|
||
|
/**
|
||
|
* Количество изображений при просмотре в админке
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
var $_admin_limit_images = 15;
|
||
|
|
||
|
/**
|
||
|
* Количество изображений по умолчанию при выводе галереи в публичной части
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
var $_default_limit_images = 15;
|
||
|
|
||
|
/**
|
||
|
* Разрешенные типы файлов
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
var $_allowed_type = array('.jpg','jpeg','.jpe','.gif','.png','.avi','.mov','.wmv','.wmf','.mp4');
|
||
|
|
||
|
/**
|
||
|
* Размер и тип формирования миниатюр
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
var $_size = '%1$s%2$ux%3$u';
|
||
|
|
||
|
/**
|
||
|
* Размер и тип формирования миниатюр в админке
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
var $admin_size = 'c100x100';
|
||
|
|
||
|
/**
|
||
|
* ВНЕШНИЕ МЕТОДЫ
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* ФУНКЦИИ ПУБЛИЧНОЙ ЧАСТИ
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Вывод галереи
|
||
|
*
|
||
|
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||
|
* @param int $gallery_id - идентификатор галереи
|
||
|
* @param int $lim - количество изображений на странице
|
||
|
* @param int $ext - признак вывода всех изображений галереи
|
||
|
*/
|
||
|
function galleryShow($tpl_dir, $gallery_id, $lim, $ext = 0)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template, $AVE_Core;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
|
||
|
$row_gs = $sql->FetchRow();
|
||
|
|
||
|
$limit = ($row_gs->gallery_image_on_page > 0)
|
||
|
? $row_gs->gallery_image_on_page
|
||
|
: $this->_default_limit_images;
|
||
|
$limit = empty($lim) ? $limit : $lim;
|
||
|
$limit = ($ext != 1) ? $limit : 10000;
|
||
|
$start = get_current_page() * $limit - $limit;
|
||
|
|
||
|
switch ($row_gs->gallery_orderby)
|
||
|
{
|
||
|
case 'position': $order_by = "image_position ASC"; break;
|
||
|
case 'titleasc': $order_by = "image_title ASC"; break;
|
||
|
case 'titledesc': $order_by = "image_title DESC"; break;
|
||
|
case 'dateasc': $order_by = "image_date ASC"; break;
|
||
|
default: $order_by = "image_date DESC"; break;
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT COUNT(*)
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE gallery_id = '" . $gallery_id . "' AND image_status = '1'
|
||
|
");
|
||
|
$num = $sql->GetCell();
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE gallery_id = '" . $gallery_id . "' AND image_status = '1'
|
||
|
ORDER BY " . $order_by . "
|
||
|
LIMIT " . $start . "," . $limit . "
|
||
|
");
|
||
|
|
||
|
$folder = trim(UPLOAD_GALLERY_DIR . '/' . $row_gs->gallery_folder, '/');
|
||
|
$size = sprintf($this->_size, $row_gs->gallery_thumb_method, $row_gs->gallery_thumb_width, $row_gs->gallery_thumb_height);
|
||
|
|
||
|
$search = array('[tag:gal:id]', '[tag:gal:folder]', '[tag:path]','[tag:gal:title]','[tag:gal:description]');
|
||
|
$replace = array($row_gs->id, ABS_PATH . $folder . '/', ABS_PATH,$row_gs->gallery_title,$row_gs->gallery_description);
|
||
|
$main_template = str_replace($search, $replace, $row_gs->gallery_script);
|
||
|
|
||
|
// Постраничная навигация
|
||
|
if ($num > $limit)
|
||
|
{
|
||
|
$page_nav = '<a class="page_nav" href="index.php?id=' . $AVE_Core->curentdoc->Id
|
||
|
. '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)
|
||
|
. ((isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage'])) ? '&artpage=' . $_REQUEST['artpage'] : '')
|
||
|
. ((isset($_REQUEST['apage']) && is_numeric($_REQUEST['apage'])) ? '&apage=' . $_REQUEST['apage'] : '')
|
||
|
. '&page={s}">{t}</a> ';
|
||
|
$page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, get_settings('navi_box'));
|
||
|
$page_nav = rewrite_link($page_nav);
|
||
|
$GLOBALS['page_id'][$_REQUEST['id']]['page']=($GLOBALS['page_id'][$_REQUEST['id']]['page']>ceil($num / $limit) ? $GLOBALS['page_id'][$_REQUEST['id']]['page'] : ceil($num / $limit));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$page_nav = '';
|
||
|
}
|
||
|
|
||
|
$rows = array();
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$row->image_filename = rawurlencode($row->image_filename);
|
||
|
$row->image_size = round(filesize(BASE_DIR . '/' . $folder . '/' . $row->image_filename) / 1024, 0);
|
||
|
array_push($rows, $row);
|
||
|
}
|
||
|
|
||
|
$images = '';
|
||
|
$i = 0;
|
||
|
$items_count = count($rows);
|
||
|
|
||
|
//
|
||
|
foreach ($rows as $row)
|
||
|
{
|
||
|
$i++;
|
||
|
$last_item = ($i==$items_count ? true : false);
|
||
|
$item_num = $i;
|
||
|
|
||
|
$search = array(
|
||
|
'[tag:img:id]',
|
||
|
'[tag:img:original]',
|
||
|
'[tag:img:thumbnail]',
|
||
|
'[tag:img:title]',
|
||
|
'[tag:img:description]',
|
||
|
'[tag:img:size]',
|
||
|
'[tag:gal:id]',
|
||
|
'[tag:gal:folder]',
|
||
|
'[tag:path]',
|
||
|
'[tag:link]',
|
||
|
'[tag:gal:title]'
|
||
|
);
|
||
|
$replace = array(
|
||
|
$row->id,
|
||
|
ABS_PATH . $folder . '/' . $row->image_filename,
|
||
|
make_thumbnail(array('link' => ABS_PATH . $folder . '/' . $row->image_filename, 'size' => $size)),
|
||
|
htmlspecialchars(empty($row->image_title) ? $AVE_Template->get_config_vars('NoTitle') : $row->image_title, ENT_QUOTES),
|
||
|
htmlspecialchars(empty($row->image_description) ? $AVE_Template->get_config_vars('NoDescr') : $row->image_description, ENT_QUOTES),
|
||
|
$row->image_size,
|
||
|
$row_gs->id,
|
||
|
ABS_PATH . $folder . '/',
|
||
|
ABS_PATH,
|
||
|
str_ireplace('"//"','"/"', str_ireplace('///', '/', rewrite_link($row->image_link))),
|
||
|
$row_gs->gallery_title
|
||
|
);
|
||
|
|
||
|
$image = str_replace($search, $replace, $row_gs->gallery_image_template);
|
||
|
$image = '<'.'?php $item_num='.var_export($item_num,1).'; $last_item='.var_export($last_item,1).'?'.'>'.$image;
|
||
|
$image = str_replace('[tag:if_first]', '<'.'?php if(isset($item_num) && ($item_num)===1) { ?'.'>', $image);
|
||
|
$image = str_replace('[tag:if_not_first]', '<'.'?php if(isset($item_num) && $item_num!==1) { ?'.'>', $image);
|
||
|
$image = str_replace('[tag:if_last]', '<'.'?php if(isset($last_item) && $last_item) { ?'.'>', $image);
|
||
|
$image = str_replace('[tag:if_not_last]', '<'.'?php if(isset($item_num) && !$last_item) { ?'.'>', $image);
|
||
|
$image = preg_replace('/\[tag:if_every:([0-9-]+)\]/u', '<'.'?php if(isset($item_num) && !('.$i.' % $1)){ '.'?'.'>', $image);
|
||
|
$image = preg_replace('/\[tag:if_not_every:([0-9-]+)\]/u', '<'.'?php if(isset($item_num) && ('.$i.' % $1)){ '.'?'.'>', $image);
|
||
|
$image = str_replace('[tag:/if]', '<'.'?php } ?'.'>', $image);
|
||
|
$image = str_replace('[tag:if:else]', '<'.'?php } else { ?'.'>', $image);
|
||
|
|
||
|
$images .= eval2var('?>' . $image . '<?');
|
||
|
|
||
|
}
|
||
|
$main_template = str_replace('[tag:gal:pages]', $page_nav, $main_template);
|
||
|
|
||
|
$return = str_replace('[tag:gal:content]', $images, $main_template);
|
||
|
$return = str_replace('[tag:path]', ABS_PATH, $return);
|
||
|
$return = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $return);
|
||
|
|
||
|
echo $return;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Вывод одиночного изображения
|
||
|
*
|
||
|
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||
|
* @param int $image_id - идентификатор изображения
|
||
|
*/
|
||
|
function galleryImageShow($tpl_dir, $image_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
image_filename,
|
||
|
image_file_ext,
|
||
|
image_title,
|
||
|
gallery_folder
|
||
|
FROM
|
||
|
" . PREFIX . "_module_gallery_images AS img
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_module_gallery AS gal
|
||
|
ON gal.id = gallery_id
|
||
|
WHERE
|
||
|
img.id = '" . $image_id . "'
|
||
|
");
|
||
|
$row = $sql->FetchRow();
|
||
|
|
||
|
$folder = trim(UPLOAD_GALLERY_DIR . '/' . $row->gallery_folder, '/');
|
||
|
// $thumb_dir = trim(THUMBNAIL_DIR . '/' . sprintf($this->_size, $row->gallery_thumb_width), '/');
|
||
|
$source = ABS_PATH . $folder . '/' . rawurlencode($row->image_filename);
|
||
|
|
||
|
switch ($this->_galleryFileTypeGet($row->image_file_ext))
|
||
|
{
|
||
|
case 'gif':
|
||
|
case 'jpg':
|
||
|
case 'png':
|
||
|
list($width, $height) = getimagesize(BASE_DIR . '/' . $folder . '/' . $row->image_filename);
|
||
|
$AVE_Template->assign('w', ($width < 350 ? 350 : ($width > 950 ? 950 : $width+8)));
|
||
|
$AVE_Template->assign('h', ($height < 350 ? 350 : ($height > 700 ? 700 : $height+85)));
|
||
|
$AVE_Template->assign('scrollbars', ($width > 950 || $height > 700 ? 1 : '') );
|
||
|
$AVE_Template->assign('source', $source);
|
||
|
$AVE_Template->assign('image_title', $row->image_title);
|
||
|
break;
|
||
|
|
||
|
case 'video':
|
||
|
$AVE_Template->assign('w', 350);
|
||
|
$AVE_Template->assign('notresizable', 1);
|
||
|
$AVE_Template->assign('h', 400);
|
||
|
$AVE_Template->assign('source', $source);
|
||
|
$AVE_Template->assign('mediatype', $this->_galleryMediaTypeGet($row->image_file_ext));
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
$AVE_Template->display($tpl_dir . 'image.tpl');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* ФУНКЦИИ АДМИНИСТРАТИВНОЙ ЧАСТИ
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Просмотр изображений галереи в админке
|
||
|
*
|
||
|
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||
|
* @param int $gallery_id - идентификатор галереи
|
||
|
*/
|
||
|
function galleryImageListShow($tpl_dir, $gallery_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
gallery_thumb_width,
|
||
|
gallery_thumb_height,
|
||
|
gallery_thumb_method,
|
||
|
gallery_title,
|
||
|
gallery_folder
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row_gs = $sql->FetchRow();
|
||
|
|
||
|
$folder = trim(UPLOAD_GALLERY_DIR . '/' . $row_gs->gallery_folder, '/');
|
||
|
$size = sprintf($this->_size, $row_gs->gallery_thumb_method, $row_gs->gallery_thumb_width, $row_gs->gallery_thumb_height);
|
||
|
|
||
|
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
|
||
|
{
|
||
|
if (isset($_POST['del']) && sizeof($_POST['del']) > 0)
|
||
|
{
|
||
|
while (list($image_id) = each($_POST['del']))
|
||
|
{
|
||
|
$file = BASE_DIR . '/' . $folder . '/' . $_POST['datei'][$image_id];
|
||
|
@unlink($file);
|
||
|
@unlink(make_thumbnail(array('link' => $file, 'size' => $size)));
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE id = '" . (int)$image_id . "'
|
||
|
");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
foreach ($_POST['gimg'] as $image_id)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_module_gallery_images
|
||
|
SET
|
||
|
image_title = '" . $_POST['image_title'][$image_id] . "',
|
||
|
image_description = '" . $_POST['image_description'][$image_id] . "',
|
||
|
image_position = '" . intval($_POST['image_position'][$image_id]) . "',
|
||
|
image_link = '" . $_POST['image_link'][$image_id] . "',
|
||
|
image_status = '" . ((empty($_POST['image_status'][$image_id]) || empty($_POST['image_status'][$image_id])) ? 0 : 1) . "'
|
||
|
WHERE
|
||
|
id = '" . (int)$image_id . "'
|
||
|
AND
|
||
|
gallery_id = '" . $gallery_id . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
header('Location:' . get_redirect_link('sub'));
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
$limit = $this->_admin_limit_images;
|
||
|
$start = get_current_page() * $limit - $limit;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT SQL_CALC_FOUND_ROWS *
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE gallery_id = '" . $gallery_id . "'
|
||
|
ORDER BY id DESC
|
||
|
LIMIT " . $start . "," . $limit . "
|
||
|
");
|
||
|
|
||
|
$sql_num = $AVE_DB->Query("SELECT FOUND_ROWS()");
|
||
|
$num = $sql_num->GetCell();
|
||
|
|
||
|
if (!$num)
|
||
|
{
|
||
|
header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=1');
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
$images = array();
|
||
|
while ($row = $sql->FetchAssocArray())
|
||
|
{
|
||
|
$row['image_type'] = $this->_galleryFileTypeGet($row['image_file_ext']);
|
||
|
$row['image_author'] = get_username_by_id($row['image_author_id']);
|
||
|
$row['image_size'] = @filesize(BASE_DIR . '/' . $folder . '/' . $row['image_filename']);
|
||
|
$row['image_size'] = @round($row['image_size'] / 1024, 2);
|
||
|
$row['image_filename'] = rawurlencode($row['image_filename']);
|
||
|
$row['original'] = ABS_PATH . $folder . '/' . $row['image_filename'];
|
||
|
$row['thumbnail'] = make_thumbnail(array('link' => $row['original'], 'size' => $size));
|
||
|
array_push($images, $row);
|
||
|
}
|
||
|
|
||
|
if ($num > $limit)
|
||
|
{
|
||
|
$page_nav = ' <a class="pnav" href="index.php?do=modules&action=modedit&mod=gallery&moduleaction=showimages&id=' . $gallery_id . '&page={s}">{t}</a> ';
|
||
|
$page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$page_nav = '';
|
||
|
}
|
||
|
$AVE_Template->assign('page_nav', $page_nav);
|
||
|
$AVE_Template->assign('gallery_title', $row_gs->gallery_title);
|
||
|
$AVE_Template->assign('gallery_thumb_width', $row_gs->gallery_thumb_width);
|
||
|
$AVE_Template->assign('images', $images);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gallery_image.tpl'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Загрузка изображений в галерею
|
||
|
*
|
||
|
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||
|
* @param int $gallery_id - идентификатор галереи
|
||
|
*/
|
||
|
function galleryImageUploadForm($tpl_dir, $gallery_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
gallery_watermark,
|
||
|
gallery_thumb_width,
|
||
|
gallery_title,
|
||
|
gallery_folder
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row = $sql->FetchRow();
|
||
|
|
||
|
$dst_dir = BASE_DIR . '/' . trim(UPLOAD_GALLERY_DIR . '/' . $row->gallery_folder, '/');
|
||
|
|
||
|
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
|
||
|
{
|
||
|
$images = array();
|
||
|
|
||
|
$path = ABS_PATH . trim(UPLOAD_GALLERY_DIR . '/' . $row->gallery_folder, '/');
|
||
|
@$size = sprintf($this->_size, $row_gs->gallery_thumb_method, $row_gs->gallery_thumb_width, $row_gs->gallery_thumb_height);
|
||
|
@$admin_size = sprintf($this->admin_size, $row_gs->gallery_thumb_method, $row_gs->gallery_thumb_width, $row_gs->gallery_thumb_height);
|
||
|
|
||
|
if (!empty($_REQUEST['fromfolder']) && $_REQUEST['fromfolder'] == 1)
|
||
|
{
|
||
|
$src_dir = BASE_DIR . '/' . UPLOAD_GALLERY_DIR . '/.temp/';
|
||
|
if (!file_exists($src_dir . '/') && !rmkdir($src_dir . '/', 0777))
|
||
|
{
|
||
|
header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=1');
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
$htaccess_file = $src_dir . '/' . '.htaccess';
|
||
|
if (!file_exists($htaccess_file))
|
||
|
{
|
||
|
$fp = @fopen($htaccess_file, 'w+');
|
||
|
if ($fp)
|
||
|
{
|
||
|
fputs($fp, 'Deny from all');
|
||
|
fclose($fp);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($handle = opendir($src_dir . '/'))
|
||
|
{
|
||
|
while (false !== ($file = readdir($handle)))
|
||
|
{
|
||
|
if ($file != '.' && $file != '..')
|
||
|
{
|
||
|
$image_title = substr($file, 0, -4);
|
||
|
$upload_file_ext = strtolower(substr($file, -4));
|
||
|
$upload_filename = prepare_fname($image_title) . $upload_file_ext;
|
||
|
|
||
|
while (file_exists($dst_dir . '/' . $upload_filename))
|
||
|
{
|
||
|
$upload_filename = $this->_galleryImageRename($upload_filename);
|
||
|
}
|
||
|
|
||
|
if (!empty($upload_filename) && in_array($upload_file_ext, $this->_allowed_type))
|
||
|
{
|
||
|
@copy($src_dir . '/' . $file, $dst_dir . '/' . $upload_filename);
|
||
|
@unlink($src_dir . '/' . $file);
|
||
|
|
||
|
$oldumask = umask(0);
|
||
|
@chmod($dst_dir . '/' . $upload_filename, 0777);
|
||
|
umask($oldumask);
|
||
|
|
||
|
if ($upload_file_ext != 'video')
|
||
|
{
|
||
|
$this->_galleryImageRebuild($dst_dir, $upload_filename, $row->gallery_watermark);
|
||
|
}
|
||
|
|
||
|
$images[] = make_thumbnail(array('link' => $path . '/' . $upload_filename, 'size' => $size));
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
INSERT
|
||
|
INTO " . PREFIX . "_module_gallery_images
|
||
|
SET
|
||
|
id = '',
|
||
|
gallery_id = '" . $gallery_id . "',
|
||
|
image_filename = '" . addslashes($upload_filename) . "',
|
||
|
image_author_id = '" . (int)$_SESSION['user_id'] . "',
|
||
|
image_title = '" . addslashes($image_title) . "',
|
||
|
image_file_ext = '" . addslashes($upload_file_ext) . "',
|
||
|
image_description = '',
|
||
|
image_date = '" . time() . "'
|
||
|
");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
closedir($handle);
|
||
|
}
|
||
|
}else if (!empty($_REQUEST['fromuploader']) && $_REQUEST['fromuploader'] == 1)
|
||
|
{
|
||
|
$src_dir = BASE_DIR . '/' . UPLOAD_GALLERY_DIR . '/.uploader/'.$_SESSION['user_id'];
|
||
|
if (!file_exists($src_dir . '/') && !rmkdir($src_dir . '/', 0777))
|
||
|
{
|
||
|
header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=1');
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
$htaccess_file = $src_dir . '/' . '.htaccess';
|
||
|
if (!file_exists($htaccess_file))
|
||
|
{
|
||
|
$fp = @fopen($htaccess_file, 'w+');
|
||
|
if ($fp)
|
||
|
{
|
||
|
fputs($fp, 'Deny from all');
|
||
|
fclose($fp);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($handle = opendir($src_dir . '/'))
|
||
|
{
|
||
|
while (false !== ($file = readdir($handle)))
|
||
|
{
|
||
|
if ($file != '.' && $file != '..')
|
||
|
{
|
||
|
$image_title = substr($file, 0, -4);
|
||
|
$upload_file_ext = strtolower(substr($file, -4));
|
||
|
$upload_filename = prepare_fname($image_title) . $upload_file_ext;
|
||
|
|
||
|
while (file_exists($dst_dir . '/' . $upload_filename))
|
||
|
{
|
||
|
$upload_filename = $this->_galleryImageRename($upload_filename);
|
||
|
}
|
||
|
|
||
|
if (!empty($upload_filename) && in_array($upload_file_ext, $this->_allowed_type))
|
||
|
{
|
||
|
@copy($src_dir . '/' . $file, $dst_dir . '/' . $upload_filename);
|
||
|
@unlink($src_dir . '/' . $file);
|
||
|
|
||
|
$oldumask = umask(0);
|
||
|
@chmod($dst_dir . '/' . $upload_filename, 0777);
|
||
|
umask($oldumask);
|
||
|
|
||
|
if ($upload_file_ext != 'video')
|
||
|
{
|
||
|
$this->_galleryImageRebuild($dst_dir, $upload_filename, $row->gallery_watermark);
|
||
|
}
|
||
|
|
||
|
//$images[] = make_thumbnail(array('link' => $path . '/' . $upload_filename, 'size' => $_size));
|
||
|
$images[] = make_thumbnail(array('size' => $admin_size, 'link' => $path . '/' . $upload_filename));
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
INSERT
|
||
|
INTO " . PREFIX . "_module_gallery_images
|
||
|
SET
|
||
|
id = '',
|
||
|
gallery_id = '" . $gallery_id . "',
|
||
|
image_filename = '" . addslashes($upload_filename) . "',
|
||
|
image_author_id = '" . (int)$_SESSION['user_id'] . "',
|
||
|
image_title = '" . addslashes($image_title) . "',
|
||
|
image_file_ext = '" . addslashes($upload_file_ext) . "',
|
||
|
image_description = '',
|
||
|
image_date = '" . time() . "'
|
||
|
");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
closedir($handle);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$count_files = sizeof(@$_FILES['file']['tmp_name']);
|
||
|
for ($i=0;$i<$count_files;$i++)
|
||
|
{
|
||
|
$upload_file_ext = strtolower(substr($_FILES['file']['name'][$i], -4));
|
||
|
$upload_filename = prepare_fname(substr($_FILES['file']['name'][$i], 0, -4)) . $upload_file_ext;
|
||
|
|
||
|
if (!empty($upload_filename))
|
||
|
{
|
||
|
while (file_exists($dst_dir . '/' . $upload_filename))
|
||
|
{
|
||
|
$upload_filename = $this->_galleryImageRename($upload_filename);
|
||
|
}
|
||
|
|
||
|
if (in_array($upload_file_ext, $this->_allowed_type) )
|
||
|
{
|
||
|
move_uploaded_file($_FILES['file']['tmp_name'][$i], $dst_dir . '/' . $upload_filename);
|
||
|
|
||
|
$oldumask = umask(0);
|
||
|
@chmod($dst_dir . '/' . $upload_filename, 0777);
|
||
|
umask($oldumask);
|
||
|
|
||
|
if ($upload_file_ext != 'video')
|
||
|
{
|
||
|
$this->_galleryImageRebuild($dst_dir, $upload_filename, $row->gallery_watermark);
|
||
|
}
|
||
|
|
||
|
//$images[] = make_thumbnail(array('link' => $path . '/' . $upload_filename, 'size' => $size));
|
||
|
$images[] = make_thumbnail(array('size' => $admin_size, 'link' => $path . '/' . $upload_filename));
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
INSERT
|
||
|
INTO " . PREFIX . "_module_gallery_images
|
||
|
SET
|
||
|
id = '',
|
||
|
gallery_id = '" . $gallery_id . "',
|
||
|
image_filename = '" . addslashes($upload_filename) . "',
|
||
|
image_author_id = '" . (int)$_SESSION['user_id'] . "',
|
||
|
image_title = '" . (isset($_POST['image_title'][$i]) ? $_POST['image_title'][$i] : '') . "',
|
||
|
image_file_ext = '" . addslashes($upload_file_ext) . "',
|
||
|
image_description = '" . (isset($_POST['image_description'][$i]) ? $_POST['image_description'][$i] : '') . "',
|
||
|
image_date = '" . time() . "'
|
||
|
");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
$AVE_Template->assign('gallery_title', $row->gallery_title);
|
||
|
$AVE_Template->assign('images', $images);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gallery_upload_form_finish.tpl'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (!is_writable($dst_dir . '/'))
|
||
|
{
|
||
|
$AVE_Template->assign('not_writeable', 1);
|
||
|
$AVE_Template->assign('upload_dir', '/' . trim(UPLOAD_GALLERY_DIR . '/' . $row->gallery_folder, '/') . '/');
|
||
|
}
|
||
|
$AVE_Template->assign('gallery_title', $row->gallery_title);
|
||
|
$AVE_Template->assign('allowed', $this->_allowed_type);
|
||
|
$AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=gallery&moduleaction=add&sub=save&id=' . $gallery_id);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gallery_upload_form.tpl'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Вывод списка галерей
|
||
|
*
|
||
|
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||
|
*/
|
||
|
function galleryListShow($tpl_dir)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if (!empty($_POST['create']))
|
||
|
{
|
||
|
foreach ($_POST['create'] as $gallery_id)
|
||
|
{
|
||
|
$this->_galleryImageMove((int)$gallery_id);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$limit = $this->_limit_galleries;
|
||
|
$start = get_current_page() * $limit - $limit;
|
||
|
$galleries = array();
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT SQL_CALC_FOUND_ROWS
|
||
|
gal.*,
|
||
|
COUNT(img.id) AS image_count
|
||
|
FROM
|
||
|
" . PREFIX . "_module_gallery AS gal
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_module_gallery_images AS img
|
||
|
ON img.gallery_id = gal.id
|
||
|
GROUP BY gal.id
|
||
|
ORDER BY gal.gallery_created DESC
|
||
|
LIMIT " . $start . "," . $limit . "
|
||
|
");
|
||
|
|
||
|
$sql_num = $AVE_DB->Query("SELECT FOUND_ROWS()");
|
||
|
$num = $sql_num->GetCell();
|
||
|
|
||
|
while($row = $sql->FetchAssocArray())
|
||
|
{
|
||
|
$row['username'] = get_username_by_id($row['gallery_author_id']);
|
||
|
array_push($galleries, $row);
|
||
|
}
|
||
|
|
||
|
if ($num > $limit)
|
||
|
{
|
||
|
$page_nav = "<li><a href=\"index.php?do=modules&action=modedit&mod=gallery&moduleaction=1&page={s}\">{t}</a></li>";
|
||
|
$page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$page_nav = '';
|
||
|
}
|
||
|
$AVE_Template->assign('page_nav', $page_nav);
|
||
|
|
||
|
if (!empty($_REQUEST['alert']))
|
||
|
{
|
||
|
$AVE_Template->assign('alert', htmlspecialchars(stripslashes($_REQUEST['alert'])));
|
||
|
}
|
||
|
$AVE_Template->assign('galleries', $galleries);
|
||
|
$AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=gallery&moduleaction=new&sub=save');
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gallery_list.tpl'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Создание галереи
|
||
|
*
|
||
|
*/
|
||
|
function galleryNew()
|
||
|
{
|
||
|
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
$cont = true;
|
||
|
$alert = '';
|
||
|
|
||
|
if (empty($_POST['gallery_title']))
|
||
|
{
|
||
|
$alert = '&alert=empty_gallery_title';
|
||
|
$cont = false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$gallery_folder = prepare_fname(stripslashes($_POST['gallery_folder']));
|
||
|
|
||
|
if (!empty($gallery_folder))
|
||
|
{
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE gallery_folder = '" . $gallery_folder . "'
|
||
|
");
|
||
|
$folder_exists = $sql->GetCell();
|
||
|
|
||
|
if ($folder_exists)
|
||
|
{
|
||
|
$alert = '&alert=folder_exists';
|
||
|
$cont = false;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($cont)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT
|
||
|
INTO " . PREFIX . "_module_gallery
|
||
|
SET
|
||
|
id = '',
|
||
|
gallery_folder = '" . $gallery_folder . "',
|
||
|
gallery_title = '" . $_POST['gallery_title'] . "',
|
||
|
gallery_description = '" . $_POST['gallery_description'] . "',
|
||
|
gallery_author_id = '" . (int)$_SESSION['user_id'] . "',
|
||
|
gallery_created = '" . time() . "'
|
||
|
");
|
||
|
|
||
|
if (!empty($gallery_folder))
|
||
|
{
|
||
|
$oldumask = umask(0);
|
||
|
@mkdir(BASE_DIR . '/' . UPLOAD_GALLERY_DIR . '/' . $gallery_folder . '/', 0777);
|
||
|
umask($oldumask);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=1' . $alert);
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Редактирование галереи
|
||
|
*
|
||
|
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||
|
* @param int $gallery_id - идентификатор галереи
|
||
|
*/
|
||
|
function galleryEdit($tpl_dir, $gallery_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
|
||
|
{
|
||
|
$old_dir = prepare_fname(stripslashes($_REQUEST['gallery_folder_old']));
|
||
|
$new_dir = prepare_fname(stripslashes($_REQUEST['gallery_folder']));
|
||
|
|
||
|
if ($_REQUEST['gallery_title'] == '')
|
||
|
{ // не указано имя галереи
|
||
|
$AVE_Template->assign('empty_gallery_title', 1);
|
||
|
$_REQUEST['gallery_title'] = $_REQUEST['gallery_title_old'];
|
||
|
}
|
||
|
|
||
|
if ($_REQUEST['thumb_width_old'] != $_REQUEST['gallery_thumb_width'])
|
||
|
{ // изменён размер миниатюр - удаляем миниатюры
|
||
|
$folder = BASE_DIR . '/' . trim(UPLOAD_GALLERY_DIR . '/' . $old_dir, '/');
|
||
|
|
||
|
if ($old_dir != '')
|
||
|
{
|
||
|
rrmdir($folder . '/' . THUMBNAIL_DIR);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT gallery_thumb_width,gallery_thumb_method,gallery_thumb_height
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row_gs = $sql->FetchRow();
|
||
|
|
||
|
$size = sprintf($this->_size, $row_gs->gallery_thumb_method, $row_gs->gallery_thumb_width, $row_gs->gallery_thumb_height);
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT image_filename
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE gallery_id = '" . $gallery_id . "'
|
||
|
");
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
@unlink(make_thumbnail(array('link' => $folder . '/' . $row->image_filename, 'size' => $size)));
|
||
|
}
|
||
|
|
||
|
@rmdir($folder . '/' . THUMBNAIL_DIR);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($old_dir != $new_dir)
|
||
|
{ // изменен путь к файлам галереи - перемещаем в новое место
|
||
|
$this->_galleryImageMove($gallery_id, $old_dir, $new_dir);
|
||
|
}
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_module_gallery
|
||
|
SET
|
||
|
gallery_title = '" . $_REQUEST['gallery_title'] . "',
|
||
|
gallery_description = '" . $_REQUEST['gallery_description'] . "',
|
||
|
gallery_thumb_width = '" . (int)$_REQUEST['gallery_thumb_width'] . "',
|
||
|
gallery_thumb_height = '" . (int)$_REQUEST['gallery_thumb_height'] . "',
|
||
|
gallery_thumb_method = '" . $_REQUEST['gallery_thumb_method'] . "',
|
||
|
gallery_image_on_line = '" . (int)$_REQUEST['gallery_image_on_line'] . "',
|
||
|
gallery_image_on_page = '" . (int)$_REQUEST['gallery_image_on_page'] . "',
|
||
|
gallery_watermark = '" . $_REQUEST['gallery_watermark'] . "',
|
||
|
gallery_folder = '" . $new_dir . "',
|
||
|
gallery_orderby = '" . $_REQUEST['gallery_orderby'] . "',
|
||
|
gallery_script = '" . $_REQUEST['gallery_script'] . "',
|
||
|
gallery_image_template = '" . $_REQUEST['gallery_image_template'] . "'
|
||
|
WHERE
|
||
|
id = '" . $gallery_id . "'
|
||
|
");
|
||
|
|
||
|
// header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=editgallery&id=' . $gallery_id);
|
||
|
header('Location:' . get_redirect_link('sub'));
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row = $sql->FetchAssocArray();
|
||
|
$blanc = 'templates/images/blanc.gif';
|
||
|
|
||
|
$AVE_Template->assign('blank', $blanc);
|
||
|
$AVE_Template->assign('gallery', $row);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gallery_edit.tpl'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Удаление галереи
|
||
|
*
|
||
|
* @param int $gallery_id - идентификатор галереи
|
||
|
*/
|
||
|
function galleryDelete($gallery_id)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
gallery_folder,
|
||
|
gallery_thumb_width
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row = $sql->fetchRow();
|
||
|
|
||
|
if ($row == false) return;
|
||
|
|
||
|
if (! empty($row->gallery_folder))
|
||
|
{
|
||
|
rrmdir(BASE_DIR . '/' . UPLOAD_GALLERY_DIR . '/' . $row->gallery_folder . '/');
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$size = sprintf($this->_size, $row->gallery_thumb_method, $row->gallery_thumb_width, $row->gallery_thumb_height);
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE gallery_id = '" . $gallery_id . "'
|
||
|
");
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$file = BASE_DIR . '/' . UPLOAD_GALLERY_DIR . '/' . $row->image_filename;
|
||
|
@unlink($file);
|
||
|
@unlink(make_thumbnail(array('link' => $file, 'size' => $size)));
|
||
|
}
|
||
|
}
|
||
|
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_gallery WHERE id = '" . $gallery_id . "'");
|
||
|
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_gallery_images WHERE gallery_id = '" . $gallery_id . "'");
|
||
|
|
||
|
header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=1');
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* ВНУТРЕННИЕ МЕТОДЫ
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* тип видео-файла по расширению
|
||
|
*
|
||
|
* @param string $ext
|
||
|
* @return string
|
||
|
*/
|
||
|
function _galleryMediaTypeGet($ext)
|
||
|
{
|
||
|
switch($ext)
|
||
|
{
|
||
|
case '.avi':
|
||
|
case '.wmv':
|
||
|
case '.wmf':
|
||
|
case '.mpg': $type = 'avi'; break;
|
||
|
case '.mov': $type = 'mov'; break;
|
||
|
}
|
||
|
|
||
|
return $type;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* тип файла по расширению
|
||
|
*
|
||
|
* @param string $ext
|
||
|
* @return string
|
||
|
*/
|
||
|
function _galleryFileTypeGet($ext)
|
||
|
{
|
||
|
switch($ext)
|
||
|
{
|
||
|
case '.avi':
|
||
|
case '.mov':
|
||
|
case '.wmv':
|
||
|
case '.wmf':
|
||
|
case '.mpg': $type = 'video'; break;
|
||
|
case '.jpg':
|
||
|
case 'jpeg':
|
||
|
case '.jpe': $type = 'jpg'; break;
|
||
|
case '.png': $type = 'png'; break;
|
||
|
case '.gif': $type = 'gif'; break;
|
||
|
}
|
||
|
|
||
|
return $type;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Формирование уникального имени файла
|
||
|
*
|
||
|
* @param string $file_name - имя файла
|
||
|
* @return string
|
||
|
*/
|
||
|
function _galleryImageRename($file_name)
|
||
|
{
|
||
|
mt_rand();
|
||
|
$pref = rand(1, 999);
|
||
|
|
||
|
return $pref . '_' . $file_name;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Изменение размеров и наложение водяного знака при загрузке изображений
|
||
|
*
|
||
|
* @param string $dst_dir - путь к папке для загрузки
|
||
|
* @param string $upload_filename - имя загружаемого файла
|
||
|
* @param string $watermark - водяной знак
|
||
|
*/
|
||
|
function _galleryImageRebuild($dst_dir, $upload_filename, $watermark = '')
|
||
|
{
|
||
|
global $Image_Toolbox;
|
||
|
|
||
|
if (!list($width, $height) = @getimagesize($dst_dir . '/' . $upload_filename)) return;
|
||
|
|
||
|
$need_resize = false;
|
||
|
$need_save = false;
|
||
|
|
||
|
if (isset($_REQUEST['shrink']) && is_numeric($_REQUEST['shrink']) && $_REQUEST['shrink'] < 100)
|
||
|
{
|
||
|
$width = round($width * $_REQUEST['shrink'] / 100);
|
||
|
$height = round($height * $_REQUEST['shrink'] / 100);
|
||
|
|
||
|
$need_resize = true;
|
||
|
}
|
||
|
|
||
|
if (isset($_REQUEST['maxsize']) && is_numeric($_REQUEST['maxsize']) && $_REQUEST['maxsize'] > 10
|
||
|
&& max(array($width, $height)) > $_REQUEST['maxsize'])
|
||
|
{
|
||
|
$width = ($width > $height) ? round($_REQUEST['maxsize']) : 0;
|
||
|
$height = ($width > $height) ? 0 : round($_REQUEST['maxsize']);
|
||
|
|
||
|
$need_resize = true;
|
||
|
}
|
||
|
|
||
|
$Image_Toolbox->newImage($dst_dir . '/' . $upload_filename);
|
||
|
|
||
|
// Изменяем размер
|
||
|
if ($need_resize)
|
||
|
{
|
||
|
$Image_Toolbox->newOutputSize((int)$width, (int)$height);
|
||
|
|
||
|
$need_save = true;
|
||
|
}
|
||
|
|
||
|
// Добавляем водяной знак
|
||
|
if (!empty($watermark))
|
||
|
{
|
||
|
if (is_file(BASE_DIR . '/' . $watermark))
|
||
|
{
|
||
|
$Image_Toolbox->addImage(BASE_DIR . '/' . $watermark);
|
||
|
$Image_Toolbox->blend('right -10', 'bottom -10', IMAGE_TOOLBOX_BLEND_COPY, 100);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$Image_Toolbox->addText($watermark, BASE_DIR . '/inc/fonts/ft16.ttf', 16, '#709536', 'right -10', 'bottom -10');
|
||
|
}
|
||
|
|
||
|
$need_save = true;
|
||
|
}
|
||
|
|
||
|
if ($need_save) $Image_Toolbox->save($dst_dir . '/' . $upload_filename);
|
||
|
|
||
|
$oldumask = umask(0);
|
||
|
chmod($dst_dir . '/' . $upload_filename, 0777);
|
||
|
umask($oldumask);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Перемещение изображений галереи
|
||
|
*
|
||
|
* @param int $gallery_id - идентификатор галереи
|
||
|
* @param string $src_dir - директория источник
|
||
|
* @param string $dst_dir - директория назначения
|
||
|
*/
|
||
|
function _galleryImageMove($gallery_id, $src_dir = '', $dst_dir = '')
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
gallery_title,
|
||
|
gallery_folder,
|
||
|
gallery_thumb_method,
|
||
|
gallery_thumb_width,
|
||
|
gallery_thumb_height
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row = $sql->FetchRow();
|
||
|
|
||
|
if ($row == false) return;
|
||
|
|
||
|
$size = sprintf($this->_size, $row->gallery_thumb_method, $row->gallery_thumb_width, $row->gallery_thumb_height);
|
||
|
|
||
|
if (empty($src_dir) && empty($dst_dir))
|
||
|
{
|
||
|
$src_dir = prepare_fname($row->gallery_folder);
|
||
|
$dst_dir = $row->gallery_title == '' ? 'gal_' . $gallery_id : prepare_fname($row->gallery_title);
|
||
|
}
|
||
|
$src_path = rtrim(BASE_DIR . '/' . trim(UPLOAD_GALLERY_DIR . '/' . $src_dir, '/')) . '/';
|
||
|
|
||
|
if (! file_exists($src_path . '/')) return;
|
||
|
|
||
|
$dst_path = rtrim(BASE_DIR . '/' . trim(UPLOAD_GALLERY_DIR . '/' . $dst_dir, '/')) . '/';
|
||
|
|
||
|
if ($src_dir != '')
|
||
|
{
|
||
|
if (rename($src_path, $dst_path))
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_module_gallery
|
||
|
SET gallery_folder = '" . addslashes($dst_dir) . "'
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (! file_exists($dst_path . '/') && ! mkdir($dst_path . '/', 0777)) return;
|
||
|
|
||
|
if (! is_writable($dst_path . '/')) return;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_module_gallery
|
||
|
SET gallery_folder = '" . addslashes($dst_dir) . "'
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT image_filename
|
||
|
FROM " . PREFIX . "_module_gallery_images
|
||
|
WHERE gallery_id = '" . $gallery_id . "'
|
||
|
");
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$file = $src_path . '/' . $row->image_filename;
|
||
|
@copy($file, $dst_path . '/' . $row->image_filename);
|
||
|
|
||
|
$oldumask = umask(0);
|
||
|
chmod($dst_path . '/' . $row->image_filename, 0777);
|
||
|
umask($oldumask);
|
||
|
|
||
|
@unlink($file);
|
||
|
@unlink(make_thumbnail(array('link' => $file, 'size' => $size)));
|
||
|
}
|
||
|
|
||
|
@rmdir($src_path . '/' . THUMBNAIL_DIR);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Метод, предназначенный для создания копии Галереи
|
||
|
*
|
||
|
* @param int $gallery_id идентификатор Галереи
|
||
|
*/
|
||
|
function galleryCopy($gallery_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
// Выполняем запрос к БД на получение информации о копиремой галереи
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_module_gallery
|
||
|
WHERE id = '" . $gallery_id . "'
|
||
|
");
|
||
|
$row = $sql->fetchRow();
|
||
|
|
||
|
if ($row === false) return;
|
||
|
|
||
|
$gallery_title = (empty($_REQUEST['gallery_title'])) ? '' . addslashes($row->gallery_title) . '' : $_REQUEST['gallery_title'];
|
||
|
|
||
|
// Выполняем запрос к БД на добавление новой галереи на основании полученных ранее данных
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_module_gallery
|
||
|
SET
|
||
|
gallery_title = '" . $gallery_title . "',
|
||
|
gallery_description = '" . $row->gallery_description . "',
|
||
|
gallery_author_id = '" . (int)$_SESSION['user_id'] . "',
|
||
|
gallery_created = '" . time() . "',
|
||
|
gallery_thumb_width = '" . $row->gallery_thumb_width . "',
|
||
|
gallery_thumb_height = '" . $row->gallery_thumb_height . "',
|
||
|
gallery_thumb_method = '" . $row->gallery_thumb_method . "',
|
||
|
gallery_image_on_line = '" . $row->gallery_image_on_line . "',
|
||
|
gallery_image_on_page = '" . $row->gallery_image_on_page . "',
|
||
|
gallery_watermark = '" . $row->gallery_watermark . "',
|
||
|
gallery_folder = '',
|
||
|
gallery_orderby = '" . addslashes($row->gallery_orderby) . "',
|
||
|
gallery_script = '" . addslashes($row->gallery_script) . "',
|
||
|
gallery_image_template = '" . addslashes($row->gallery_image_template) . "'
|
||
|
");
|
||
|
|
||
|
// Сохраняем системное сообщение в журнал
|
||
|
reportLog($AVE_Template->get_config_vars('GalleryReportCopy') . ' (' . $row->gallery_title . ')');
|
||
|
|
||
|
// Выполянем переход к списку галерей
|
||
|
header('Location:index.php?do=modules&action=modedit&mod=gallery&moduleaction=1&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
?>
|