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 = '{t} '; $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 . '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 'jpeg': 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 = ' {t} '; $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 = mb_substr($file, 0, mb_strrpos($file, '.')); $upload_file_ext = strtolower(mb_substr($file, mb_strrpos($file, '.') + 0)); $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 = mb_substr($file, 0, mb_strrpos($file, '.')); $upload_file_ext = strtolower(mb_substr($file, mb_strrpos($file, '.') + 0)); $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_file_ext = strtolower(mb_substr($_FILES['file']['name'][$i], mb_strrpos($_FILES['file']['name'][$i], '.') + 0)); //$upload_filename = prepare_fname(substr($_FILES['file']['name'][$i], 0, -4)) . $upload_file_ext; $upload_filename = prepare_fname(mb_substr($_FILES['file']['name'][$i], 0, mb_strrpos($_FILES['file']['name'][$i], '.'))) . $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 = "
  • {t}
  • "; $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; } } ?>