1164 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1164 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?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 . '/' . trim(UPLOAD_GALLERY_DIR, '/') . '/.temp/';
 | 
						||
 | 
						||
				if (! file_exists($src_dir) && ! mkdir($src_dir, 0777, true))
 | 
						||
				{
 | 
						||
					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 . '/') && ! mkdir($src_dir . '/', 0777, true))
 | 
						||
				{
 | 
						||
					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;
 | 
						||
		}
 | 
						||
 | 
						||
}
 | 
						||
 | 
						||
?>
 |