while ($commentrow = $db->sql_fetchrow($result)) { $image_id = $commentrow['image_id']; $album_id = $commentrow['image_album_id']; $template->assign_block_vars('commentrow', array('U_COMMENT' => phpbb_gallery_url::append_sid('image_page', "album_id={$album_id}&image_id={$image_id}") . '#' . $commentrow['comment_id'], 'COMMENT_ID' => $commentrow['comment_id'], 'TIME' => $user->format_date($commentrow['comment_time']), 'TEXT' => generate_text_for_display($commentrow['comment'], $commentrow['comment_uid'], $commentrow['comment_bitfield'], 7), 'U_DELETE' => phpbb_gallery::$auth->acl_check('m_comments', $album_id) || phpbb_gallery::$auth->acl_check('c_delete', $album_id) && $commentrow['comment_user_id'] == $user->data['user_id'] && $user->data['is_registered'] ? phpbb_gallery_url::append_sid('posting', "album_id={$album_id}&image_id={$image_id}&mode=comment&submode=delete&comment_id=" . $commentrow['comment_id']) : '', 'U_EDIT' => phpbb_gallery::$auth->acl_check('m_comments', $album_id) || phpbb_gallery::$auth->acl_check('c_edit', $album_id) && $commentrow['comment_user_id'] == $user->data['user_id'] && $user->data['is_registered'] ? phpbb_gallery_url::append_sid('posting', "album_id={$album_id}&image_id={$image_id}&mode=comment&submode=edit&comment_id=" . $commentrow['comment_id']) : '', 'U_INFO' => $auth->acl_get('a_') ? phpbb_gallery_url::append_sid('mcp', 'mode=whois&ip=' . $commentrow['comment_user_ip']) : '', 'UC_THUMBNAIL' => phpbb_gallery_image::generate_link('thumbnail', phpbb_gallery_config::get('link_thumbnail'), $commentrow['image_id'], $commentrow['image_name'], $commentrow['image_album_id']), 'UC_IMAGE_NAME' => phpbb_gallery_image::generate_link('image_name', phpbb_gallery_config::get('link_image_name'), $commentrow['image_id'], $commentrow['image_name'], $commentrow['image_album_id']), 'IMAGE_AUTHOR' => get_username_string('full', $commentrow['image_user_id'], $commentrow['image_username'], $commentrow['image_user_colour']), 'IMAGE_TIME' => $user->format_date($commentrow['image_time']), 'POST_AUTHOR_FULL' => get_username_string('full', $commentrow['comment_user_id'], $commentrow['comment_username'], $commentrow['comment_user_colour']), 'POST_AUTHOR_COLOUR' => get_username_string('colour', $commentrow['comment_user_id'], $commentrow['comment_username'], $commentrow['comment_user_colour']), 'POST_AUTHOR' => get_username_string('username', $commentrow['comment_user_id'], $commentrow['comment_username'], $commentrow['comment_user_colour']), 'U_POST_AUTHOR' => get_username_string('profile', $commentrow['comment_user_id'], $commentrow['comment_username'], $commentrow['comment_user_colour']))); } $db->sql_freeresult($result); $template->assign_vars(array('DELETE_IMG' => $user->img('icon_post_delete', 'DELETE_COMMENT'), 'EDIT_IMG' => $user->img('icon_post_edit', 'EDIT_COMMENT'), 'INFO_IMG' => $user->img('icon_post_info', 'IP'), 'MINI_POST_IMG' => $user->img('icon_post_target_unread', 'COMMENT'), 'PROFILE_IMG' => $user->img('icon_user_profile', 'READ_PROFILE'))); } } unset($rowset); page_header($l_search_title ? $l_search_title : $user->lang['SEARCH']); $template->set_filenames(array('body' => 'gallery/search_results.html')); make_jumpbox(phpbb_gallery_url::append_sid('phpbb', 'viewforum')); page_footer(); } $s_albums = phpbb_gallery_album::get_albumbox(false, false, false, 'i_view'); if (!$s_albums) { trigger_error('NO_SEARCH'); } // Prevent undefined variable on build_hidden_fields() $s_hidden_fields = array('e' => 0); if ($_SID) { $s_hidden_fields['sid'] = $_SID; } if (!empty($_EXTRA_URL)) { foreach ($_EXTRA_URL as $url_param) { $url_param = explode('=', $url_param, 2); $s_hidden_fields[$url_param[0]] = $url_param[1]; } } $template->assign_vars(array('S_SEARCH_ACTION' => phpbb_gallery_url::append_sid('search', false, true, 0), 'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields), 'S_ALBUM_OPTIONS' => $s_albums, 'S_SELECT_SORT_DIR' => $s_sort_dir, 'S_SELECT_SORT_KEY' => $s_sort_key, 'S_SELECT_SORT_DAYS' => $s_limit_days, 'S_IN_SEARCH' => true));
function import() { global $db, $template, $user; $import_schema = request_var('import_schema', ''); $images = request_var('images', array(''), true); $submit = isset($_POST['submit']) ? true : (empty($images) ? false : true); if ($import_schema) { if (phpbb_gallery_url::_file_exists($import_schema, 'import', '')) { include phpbb_gallery_url::_return_file($import_schema, 'import', ''); // Replace the md5 with the ' again and remove the space at the end to prevent \' troubles $user_data['username'] = utf8_substr(str_replace("{{$import_schema}}", "'", $user_data['username']), 0, -1); $image_name = utf8_substr(str_replace("{{$import_schema}}", "'", $image_name), 0, -1); } else { global $phpEx; trigger_error(sprintf($user->lang['MISSING_IMPORT_SCHEMA'], $import_schema . '.' . $phpEx), E_USER_WARNING); } $images_loop = 0; foreach ($images as $image_src) { /** * Import the images */ $image_src = str_replace("{{$import_schema}}", "'", $image_src); $image_src_full = phpbb_gallery_url::path('import') . utf8_decode($image_src); if (file_exists($image_src_full)) { $filetype = getimagesize($image_src_full); $filetype_ext = ''; switch ($filetype['mime']) { case 'image/jpeg': case 'image/jpg': case 'image/pjpeg': $filetype_ext = '.jpg'; $read_function = 'imagecreatefromjpeg'; if (substr(strtolower($image_src), -4) != '.jpg' && substr(strtolower($image_src), -5) != '.jpeg') { trigger_error(sprintf($user->lang['FILETYPE_MIMETYPE_MISMATCH'], $image_src, $filetype['mime']), E_USER_WARNING); } break; case 'image/png': case 'image/x-png': $filetype_ext = '.png'; $read_function = 'imagecreatefrompng'; if (substr(strtolower($image_src), -4) != '.png') { trigger_error(sprintf($user->lang['FILETYPE_MIMETYPE_MISMATCH'], $image_src, $filetype['mime']), E_USER_WARNING); } break; case 'image/gif': case 'image/giff': $filetype_ext = '.gif'; $read_function = 'imagecreatefromgif'; if (substr(strtolower($image_src), -4) != '.gif') { trigger_error(sprintf($user->lang['FILETYPE_MIMETYPE_MISMATCH'], $image_src, $filetype['mime']), E_USER_WARNING); } break; default: trigger_error('NOT_ALLOWED_FILE_TYPE'); break; } $image_filename = md5(unique_id()) . $filetype_ext; if (!@move_uploaded_file($image_src_full, phpbb_gallery_url::path('upload') . $image_filename)) { if (!@copy($image_src_full, phpbb_gallery_url::path('upload') . $image_filename)) { $user->add_lang('posting'); trigger_error(sprintf($user->lang['GENERAL_UPLOAD_ERROR'], phpbb_gallery_url::path('upload') . $image_filename), E_USER_WARNING); } } @chmod(phpbb_gallery_url::path('upload') . $image_filename, 0777); // The source image is imported, so we delete it. @unlink($image_src_full); $sql_ary = array('image_filename' => $image_filename, 'image_thumbnail' => '', 'image_desc' => '', 'image_desc_uid' => '', 'image_desc_bitfield' => '', 'image_user_id' => $user_data['user_id'], 'image_username' => $user_data['username'], 'image_username_clean' => utf8_clean_string($user_data['username']), 'image_user_colour' => $user_data['user_colour'], 'image_user_ip' => $user->ip, 'image_time' => $start_time + $done_images, 'image_album_id' => $album_id, 'image_status' => phpbb_gallery_image::STATUS_APPROVED, 'image_exif_data' => ''); $image_tools = new phpbb_gallery_image_tools(); $image_tools->set_image_options(phpbb_gallery_config::get('max_filesize'), phpbb_gallery_config::get('max_height'), phpbb_gallery_config::get('max_width')); $image_tools->set_image_data(phpbb_gallery_url::path('upload') . $image_filename); // Read exif data from file $image_tools->read_exif_data(); $sql_ary['image_exif_data'] = $image_tools->exif_data_serialized; $sql_ary['image_has_exif'] = $image_tools->exif_data_exist; if ($filetype[0] > phpbb_gallery_config::get('max_width') || $filetype[1] > phpbb_gallery_config::get('max_height')) { /** * Resize overside images */ if (phpbb_gallery_config::get('allow_resize')) { $image_tools->resize_image(phpbb_gallery_config::get('max_width'), phpbb_gallery_config::get('max_height')); if ($image_tools->resized) { $image_tools->write_image(phpbb_gallery_url::path('upload') . $image_filename, phpbb_gallery_config::get('jpg_quality'), true); } } } if (!$image_tools->exif_data_force_db && $sql_ary['image_has_exif'] == phpbb_gallery_constants::EXIF_DBSAVED) { // Image was not resized, so we can pull the Exif from the image to save db-memory. $sql_ary['image_has_exif'] = phpbb_gallery_constants::EXIF_AVAILABLE; $sql_ary['image_exif_data'] = ''; } // Try to get real filesize from temporary folder (not always working) ;) $sql_ary['filesize_upload'] = @filesize(phpbb_gallery_url::path('upload') . $image_filename) ? @filesize(phpbb_gallery_url::path('upload') . $image_filename) : 0; if ($filename || $image_name == '') { $sql_ary['image_name'] = str_replace("_", " ", utf8_substr($image_src, 0, -4)); } else { $sql_ary['image_name'] = str_replace('{NUM}', $num_offset + $done_images, $image_name); } $sql_ary['image_name_clean'] = utf8_clean_string($sql_ary['image_name']); // Put the images into the database $db->sql_query('INSERT INTO ' . GALLERY_IMAGES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); $done_images++; } // Remove the image from the list unset($images[$images_loop]); $images_loop++; if ($images_loop == 10) { // We made 10 images, so we end for this turn break; } } if ($images_loop) { $image_user = new phpbb_gallery_user($db, $user_data['user_id'], false); $image_user->update_images($images_loop); phpbb_gallery_config::inc('num_images', $images_loop); $todo_images = $todo_images - $images_loop; } phpbb_gallery_album::update_info($album_id); if (!$todo_images) { unlink(phpbb_gallery_url::_return_file($import_schema, 'import', '')); trigger_error(sprintf($user->lang['IMPORT_FINISHED'], $done_images) . adm_back_link($this->u_action)); } else { // Write the new list $this->create_import_schema($import_schema, $album_id, $user_data, $start_time, $num_offset, $done_images, $todo_images, $image_name, $filename, $images); // Redirect $forward_url = $this->u_action . "&import_schema={$import_schema}"; meta_refresh(1, $forward_url); trigger_error(sprintf($user->lang['IMPORT_DEBUG_MES'], $done_images, $todo_images)); } } else { if ($submit) { if (!check_form_key('acp_gallery')) { trigger_error('FORM_INVALID', E_USER_WARNING); } if (!$images) { trigger_error('NO_FILE_SELECTED', E_USER_WARNING); } // Who is the uploader? $username = request_var('username', '', true); $user_id = 0; if ($username) { if (!function_exists('user_get_id_name')) { phpbb_gallery_url::_include('functions_user', 'phpbb'); } user_get_id_name($user_id, $username); } if (is_array($user_id)) { $user_id = $user_id[0]; } if (!$user_id) { $user_id = $user->data['user_id']; } $sql = 'SELECT username, user_colour, user_id FROM ' . USERS_TABLE . ' WHERE user_id = ' . $user_id; $result = $db->sql_query($sql); $user_row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$user_row) { trigger_error('HACKING_ATTEMPT', E_USER_WARNING); } // Where do we put them to? $album_id = request_var('album_id', 0); $sql = 'SELECT album_id, album_name FROM ' . GALLERY_ALBUMS_TABLE . ' WHERE album_id = ' . $album_id; $result = $db->sql_query($sql); $album_row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$album_row) { trigger_error('HACKING_ATTEMPT', E_USER_WARNING); } $start_time = time(); $import_schema = md5($start_time); $filename = request_var('filename', '') == 'filename' ? true : false; $image_name = request_var('image_name', '', true); $num_offset = request_var('image_num', 0); $this->create_import_schema($import_schema, $album_row['album_id'], $user_row, $start_time, $num_offset, 0, sizeof($images), $image_name, $filename, $images); $forward_url = $this->u_action . "&import_schema={$import_schema}"; meta_refresh(2, $forward_url); trigger_error('IMPORT_SCHEMA_CREATED'); } } $handle = opendir(phpbb_gallery_url::path('import')); $files = array(); while ($file = readdir($handle)) { if (!is_dir(phpbb_gallery_url::path('import') . $file) && (substr(strtolower($file), -4) == '.png' && phpbb_gallery_config::get('allow_png') || substr(strtolower($file), -4) == '.gif' && phpbb_gallery_config::get('allow_gif') || substr(strtolower($file), -4) == '.jpg' && phpbb_gallery_config::get('allow_jpg') || substr(strtolower($file), -5) == '.jpeg' && phpbb_gallery_config::get('allow_jpg'))) { $files[utf8_strtolower($file)] = $file; } } closedir($handle); // Sort the files by name again ksort($files); foreach ($files as $file) { $template->assign_block_vars('imagerow', array('FILE_NAME' => utf8_encode($file))); } $template->assign_vars(array('S_IMPORT_IMAGES' => true, 'ACP_GALLERY_TITLE' => $user->lang['ACP_IMPORT_ALBUMS'], 'ACP_GALLERY_TITLE_EXPLAIN' => $user->lang['ACP_IMPORT_ALBUMS_EXPLAIN'], 'L_IMPORT_DIR_EMPTY' => sprintf($user->lang['IMPORT_DIR_EMPTY'], phpbb_gallery_url::path('import')), 'S_ALBUM_IMPORT_ACTION' => $this->u_action, 'S_SELECT_IMPORT' => phpbb_gallery_album::get_albumbox(false, 'album_id', false, false, false, phpbb_gallery_album::PUBLIC_ALBUM, phpbb_gallery_album::TYPE_UPLOAD), 'U_FIND_USERNAME' => phpbb_gallery_url::append_sid('phpbb', 'memberlist', 'mode=searchuser&form=acp_gallery&field=username&select_single=true'))); }
$sql = 'SELECT image_id, image_name FROM ' . GALLERY_IMAGES_TABLE . ' WHERE image_album_id = ' . (int) $album_id . $image_approval_sql . "\n\t\tAND (({$sql_sort_by} = '" . $db->sql_escape($image_data[$sql_sort_by]) . "' AND image_id {$sql_previous_condition} {$image_id})\n\t\tOR {$sql_sort_by} {$sql_previous_condition} '" . $db->sql_escape($image_data[$sql_sort_by]) . "')\n\tORDER BY {$sql_sort_by} {$sql_previous_ordering}"; $result = $db->sql_query_limit($sql, 1); $previous_data = $db->sql_fetchrow($result); $db->sql_freeresult($result); $s_allowed_delete = $s_allowed_edit = $s_allowed_status = false; if ((phpbb_gallery::$auth->acl_check('m_', $album_id, $album_data['album_user_id']) || $image_data['image_user_id'] == $user->data['user_id']) && $user->data['user_id'] != ANONYMOUS) { $s_user_allowed = $image_data['image_user_id'] == $user->data['user_id'] && $album_data['album_status'] != phpbb_gallery_album::STATUS_LOCKED; $s_allowed_delete = phpbb_gallery::$auth->acl_check('i_delete', $album_id, $album_data['album_user_id']) && $s_user_allowed || phpbb_gallery::$auth->acl_check('m_delete', $album_id, $album_data['album_user_id']); $s_allowed_edit = phpbb_gallery::$auth->acl_check('i_edit', $album_id, $album_data['album_user_id']) && $s_user_allowed || phpbb_gallery::$auth->acl_check('m_edit', $album_id, $album_data['album_user_id']); $s_quick_mod = $s_allowed_delete || $s_allowed_edit || phpbb_gallery::$auth->acl_check('m_status', $album_id, $album_data['album_user_id']) || phpbb_gallery::$auth->acl_check('m_move', $album_id, $album_data['album_user_id']); $user->add_lang('mods/gallery_mcp'); $template->assign_vars(array('S_MOD_ACTION' => phpbb_gallery_url::append_sid('mcp', "album_id={$album_id}&image_id={$image_id}&quickmod=1", true, $user->session_id), 'S_QUICK_MOD' => $s_quick_mod, 'S_QM_MOVE' => phpbb_gallery::$auth->acl_check('m_move', $album_id, $album_data['album_user_id']), 'S_QM_EDIT' => $s_allowed_edit, 'S_QM_DELETE' => $s_allowed_delete, 'S_QM_REPORT' => phpbb_gallery::$auth->acl_check('m_report', $album_id, $album_data['album_user_id']), 'S_QM_STATUS' => phpbb_gallery::$auth->acl_check('m_status', $album_id, $album_data['album_user_id']), 'S_IMAGE_REPORTED' => $image_data['image_reported'], 'U_IMAGE_REPORTED' => $image_data['image_reported'] ? phpbb_gallery_url::append_sid('mcp', "mode=report_details&album_id={$album_id}&option_id=" . $image_data['image_reported']) : '', 'S_STATUS_APPROVED' => $image_data['image_status'] == phpbb_gallery_image::STATUS_APPROVED, 'S_STATUS_UNAPPROVED' => $image_data['image_status'] == phpbb_gallery_image::STATUS_UNAPPROVED, 'S_STATUS_LOCKED' => $image_data['image_status'] == phpbb_gallery_image::STATUS_LOCKED)); } $template->assign_vars(array('U_VIEW_ALBUM' => phpbb_gallery_url::append_sid("album.{$phpEx}", "album_id={$album_id}"), 'UC_PREVIOUS_IMAGE' => !empty($previous_data) && phpbb_gallery_config::get('disp_nextprev_thumbnail') ? generate_image_link('thumbnail', 'image_page', $previous_data['image_id'], $previous_data['image_name'], $album_id) : '', 'UC_PREVIOUS' => !empty($previous_data) ? phpbb_gallery_image::generate_link('image_name_unbold', 'image_page_prev', $previous_data['image_id'], $previous_data['image_name'], $album_id) : '', 'UC_IMAGE' => phpbb_gallery_image::generate_link('medium', phpbb_gallery_config::get('link_imagepage'), $image_id, $image_data['image_name'], $album_id, substr($image_data['image_filename'], 0 - 3) == 'gif' ? true : false, false), 'UC_NEXT_IMAGE' => !empty($next_data) && phpbb_gallery_config::get('disp_nextprev_thumbnail') ? generate_image_link('thumbnail', 'image_page', $next_data['image_id'], $next_data['image_name'], $album_id) : '', 'UC_NEXT' => !empty($next_data) ? phpbb_gallery_image::generate_link('image_name_unbold', 'image_page_next', $next_data['image_id'], $next_data['image_name'], $album_id) : '', 'EDIT_IMG' => $user->img('icon_post_edit', 'EDIT_IMAGE'), 'DELETE_IMG' => $user->img('icon_post_delete', 'DELETE_IMAGE'), 'REPORT_IMG' => $user->img('icon_post_report', 'REPORT_IMAGE'), 'STATUS_IMG' => $user->img('icon_post_info', 'STATUS_IMAGE'), 'U_DELETE' => $s_allowed_delete ? phpbb_gallery_url::append_sid('posting', "mode=image&submode=delete&album_id={$album_id}&image_id={$image_id}") : '', 'U_EDIT' => $s_allowed_edit ? phpbb_gallery_url::append_sid('posting', "mode=image&submode=edit&album_id={$album_id}&image_id={$image_id}") : '', 'U_REPORT' => phpbb_gallery::$auth->acl_check('i_report', $album_id, $album_data['album_user_id']) && $image_data['image_user_id'] != $user->data['user_id'] ? phpbb_gallery_url::append_sid('posting', "mode=image&submode=report&album_id={$album_id}&image_id={$image_id}") : '', 'U_STATUS' => $s_allowed_status ? phpbb_gallery_url::append_sid('mcp', "mode=queue_details&album_id={$album_id}&option_id={$image_id}") : '', 'CONTEST_RANK' => $image_data['image_contest_rank'] ? $user->lang['CONTEST_RESULT_' . $image_data['image_contest_rank']] : '', 'IMAGE_NAME' => $image_data['image_name'], 'IMAGE_DESC' => generate_text_for_display($image_data['image_desc'], $image_data['image_desc_uid'], $image_data['image_desc_bitfield'], 7), 'IMAGE_BBCODE' => '[album]' . $image_id . '[/album]', 'IMAGE_IMGURL_BBCODE' => phpbb_gallery_config::get('disp_image_url') ? '[url=' . phpbb_gallery_url::path('full') . "image.{$phpEx}?album_id={$album_id}&image_id={$image_id}" . '][img]' . generate_board_url(false) . '/' . phpbb_gallery_url::path('relative') . "image.{$phpEx}?album_id={$album_id}&image_id={$image_id}&mode=thumbnail" . '[/img][/url]' : '', 'IMAGE_URL' => phpbb_gallery_config::get('disp_image_url') ? phpbb_gallery_url::path('full') . "image.{$phpEx}?album_id={$album_id}&image_id={$image_id}" : '', 'IMAGE_TIME' => $user->format_date($image_data['image_time']), 'IMAGE_VIEW' => $image_data['image_view_count'], 'POSTER_IP' => $auth->acl_get('a_') ? $image_data['image_user_ip'] : '', 'U_POSTER_WHOIS' => $auth->acl_get('a_') ? phpbb_gallery_url::append_sid('mcp', 'mode=whois&ip=' . $image_data['image_user_ip']) : '', 'L_BOOKMARK_TOPIC' => $image_data['favorite_id'] ? $user->lang['UNFAVORITE_IMAGE'] : $user->lang['FAVORITE_IMAGE'], 'U_BOOKMARK_TOPIC' => $user->data['user_id'] != ANONYMOUS ? phpbb_gallery_url::append_sid('posting', "mode=image&submode=" . ($image_data['favorite_id'] ? 'un' : '') . "favorite&album_id={$album_id}&image_id={$image_id}") : '', 'L_WATCH_TOPIC' => $image_data['watch_id'] ? $user->lang['UNWATCH_IMAGE'] : $user->lang['WATCH_IMAGE'], 'U_WATCH_TOPIC' => $user->data['user_id'] != ANONYMOUS ? phpbb_gallery_url::append_sid('posting', "mode=image&submode=" . ($image_data['watch_id'] ? 'un' : '') . "watch&album_id={$album_id}&image_id={$image_id}") : '', 'S_WATCHING_TOPIC' => $image_data['watch_id'] ? true : false, 'S_ALBUM_ACTION' => phpbb_gallery_url::append_sid('image_page', "album_id={$album_id}&image_id={$image_id}"), 'U_RETURN_LINK' => phpbb_gallery_url::append_sid('album', "album_id={$album_id}"), 'S_RETURN_LINK' => $album_data['album_name'], 'S_JUMPBOX_ACTION' => phpbb_gallery_url::append_sid('album'), 'ALBUM_JUMPBOX' => phpbb_gallery_album::get_albumbox(false, '', $album_id))); /** * Exif-Data */ if (phpbb_gallery_config::get('disp_exifdata') && $image_data['image_has_exif'] != phpbb_gallery_exif::UNAVAILABLE && substr($image_data['image_filename'], -4) == '.jpg' && function_exists('exif_read_data') && (phpbb_gallery::$auth->acl_check('m_status', $album_id, $album_data['album_user_id']) || $image_data['image_contest'] != phpbb_gallery_image::IN_CONTEST)) { $exif = new phpbb_gallery_exif(phpbb_gallery_url::path('upload') . $image_data['image_filename'], $image_id); $exif->interpret($image_data['image_has_exif'], $image_data['image_exif_data']); if (!empty($exif->data["EXIF"])) { $exif->send_to_template(phpbb_gallery::$user->get_data('user_viewexif')); } unset($exif); } /** * Rating */ if (phpbb_gallery_config::get('allow_rates')) {
} // Is it a personal album, and does the user have permissions to create more? if ($album_data['album_user_id'] == $user->data['user_id']) { if (phpbb_gallery::$auth->acl_check('i_upload', phpbb_gallery_auth::OWN_ALBUM) && !phpbb_gallery::$auth->acl_check('album_unlimited', phpbb_gallery_auth::OWN_ALBUM)) { $sql = 'SELECT COUNT(album_id) albums FROM ' . GALLERY_ALBUMS_TABLE . ' WHERE album_user_id = ' . $user->data['user_id']; $result = $db->sql_query($sql); $albums = (int) $db->sql_fetchfield('albums'); $db->sql_freeresult($result); if ($albums < phpbb_gallery::$auth->acl_check('album_count', phpbb_gallery_auth::OWN_ALBUM)) { $allowed_create = true; } } elseif (phpbb_gallery::$auth->acl_check('album_unlimited', phpbb_gallery_auth::OWN_ALBUM)) { $allowed_create = true; } } } // End of "We have album_type so that there may be images ..." // Page is ready loaded, mark album as "read" phpbb_gallery_misc::markread('album', $album_id); $template->assign_vars(array('S_IN_ALBUM' => true, 'S_IS_POSTABLE' => $album_data['album_type'] != phpbb_gallery_album::TYPE_CAT ? true : false, 'S_IS_LOCKED' => $album_data['album_status'] == phpbb_gallery_album::STATUS_LOCKED ? true : false, 'UPLOAD_IMG' => $album_data['album_status'] == phpbb_gallery_album::STATUS_LOCKED ? $user->img('button_topic_locked', 'ALBUM_LOCKED') : $user->img('button_upload_image', 'UPLOAD_IMAGE'), 'S_MODE' => $album_data['album_type'], 'L_MODERATORS' => $l_moderator, 'MODERATORS' => $moderators_list, 'U_UPLOAD_IMAGE' => (!$album_data['album_user_id'] || $album_data['album_user_id'] == $user->data['user_id']) && ($user->data['user_id'] == ANONYMOUS || phpbb_gallery::$auth->acl_check('i_upload', $album_id, $album_data['album_user_id'])) ? phpbb_gallery_url::append_sid('posting', "mode=image&submode=upload&album_id={$album_id}") : '', 'U_CREATE_ALBUM' => $album_data['album_user_id'] == $user->data['user_id'] && $allowed_create ? phpbb_gallery_url::append_sid('phpbb', 'ucp', "i=gallery&mode=manage_albums&action=create&parent_id={$album_id}&redirect=album") : '', 'U_EDIT_ALBUM' => $album_data['album_user_id'] == $user->data['user_id'] ? phpbb_gallery_url::append_sid('phpbb', 'ucp', "i=gallery&mode=manage_albums&action=edit&album_id={$album_id}&redirect=album") : '', 'U_SLIDE_SHOW' => sizeof(phpbb_gallery_plugins::$plugins) && phpbb_gallery_plugins::$slideshow ? phpbb_gallery_url::append_sid('album', "album_id={$album_id}&mode=slide_show" . ($sort_key != phpbb_gallery_config::get('default_sort_key') ? "&sk={$sort_key}" : '') . ($sort_dir != phpbb_gallery_config::get('default_sort_dir') ? "&sd={$sort_dir}" : '')) : '', 'S_DISPLAY_SEARCHBOX' => $auth->acl_get('u_search') && $config['load_search'] ? true : false, 'S_SEARCHBOX_ACTION' => phpbb_gallery_url::append_sid('search', 'aid[]=' . $album_id), 'S_THUMBNAIL_SIZE' => phpbb_gallery_config::get('thumbnail_height') + 20 + (phpbb_gallery_config::get('thumbnail_infoline') ? phpbb_gallery_constants::THUMBNAIL_INFO_HEIGHT : 0), 'S_COLS' => phpbb_gallery_config::get('album_columns'), 'S_COL_WIDTH' => 100 / phpbb_gallery_config::get('album_columns') . '%', 'S_JUMPBOX_ACTION' => phpbb_gallery_url::append_sid('album'), 'S_ALBUM_ACTION' => phpbb_gallery_url::append_sid('album', "album_id={$album_id}"), 'S_SELECT_SORT_DIR' => $s_sort_dir, 'S_SELECT_SORT_KEY' => $s_sort_key, 'ALBUM_JUMPBOX' => phpbb_gallery_album::get_albumbox(false, '', $album_id), 'U_RETURN_LINK' => phpbb_gallery_url::append_sid('index'), 'S_RETURN_LINK' => $user->lang['GALLERY'], 'PAGINATION' => generate_pagination(phpbb_gallery_url::append_sid('album', "album_id={$album_id}&sk={$sort_key}&sd={$sort_dir}&st={$sort_days}"), $image_counter, $images_per_page, $start), 'TOTAL_IMAGES' => $image_counter == 1 ? $user->lang['IMAGE_#'] : sprintf($user->lang['IMAGES_#'], $image_counter), 'PAGE_NUMBER' => on_page($image_counter, $images_per_page, $start), 'L_WATCH_TOPIC' => $album_data['watch_id'] ? $user->lang['UNWATCH_ALBUM'] : $user->lang['WATCH_ALBUM'], 'U_WATCH_TOPIC' => $album_data['album_type'] != phpbb_gallery_album::TYPE_CAT && $user->data['user_id'] != ANONYMOUS ? phpbb_gallery_url::append_sid('posting', "mode=album&submode=" . ($album_data['watch_id'] ? 'unwatch' : 'watch') . "&album_id={$album_id}") : '', 'S_WATCHING_TOPIC' => $album_data['watch_id'] ? true : false)); if (version_compare($config['version'], '3.0.5', '>')) { page_header($user->lang['VIEW_ALBUM'] . ' - ' . $album_data['album_name'], true, $album_id, 'album'); } else { // Backwards compatible cheat_phpbb_31975(); page_header($user->lang['VIEW_ALBUM'] . ' - ' . $album_data['album_name']); } $template->set_filenames(array('body' => 'gallery/album_body.html')); page_footer();
function main($id, $mode) { global $cache, $db, $user, $auth, $template; phpbb_gallery::init(); $manage_albums = new phpbb_gallery_album_manage(request_var('user_id', 0), request_var('parent_id', 0), $this->u_action); $user->add_lang(array('mods/gallery_acp', 'mods/gallery')); $this->tpl_name = 'gallery_albums'; $this->page_title = 'ACP_GALLERY_MANAGE_ALBUMS'; $form_key = 'acp_gallery_albums'; add_form_key($form_key); $action = request_var('action', ''); $update = isset($_POST['update']) ? true : false; $album_id = request_var('a', 0); $this->parent_id = request_var('parent_id', 0); $album_data = $errors = array(); if ($update && !check_form_key($form_key)) { $update = false; $errors[] = $user->lang['FORM_INVALID']; } // Major routines if ($update) { switch ($action) { case 'delete': $action_subalbums = request_var('action_subalbums', ''); $subalbums_to_id = request_var('subalbums_to_id', 0); $action_images = request_var('action_images', ''); $images_to_id = request_var('images_to_id', 0); $errors = $manage_albums->delete_album($album_id, $action_images, $action_subalbums, $images_to_id, $subalbums_to_id); if (sizeof($errors)) { break; } $cache->destroy('sql', GALLERY_ALBUMS_TABLE); trigger_error($user->lang['ALBUM_DELETED'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id)); break; case 'edit': $album_data = array('album_id' => $album_id); // No break; here // No break; here case 'add': $album_data += array('parent_id' => request_var('album_parent_id', $this->parent_id), 'album_type' => request_var('album_type', phpbb_gallery_album::TYPE_UPLOAD), 'type_action' => request_var('type_action', ''), 'album_status' => request_var('album_status', phpbb_gallery_album::STATUS_OPEN), 'album_parents' => '', 'album_name' => utf8_normalize_nfc(request_var('album_name', '', true)), 'album_desc' => utf8_normalize_nfc(request_var('album_desc', '', true)), 'album_desc_uid' => '', 'album_desc_options' => 7, 'album_desc_bitfield' => '', 'album_image' => request_var('album_image', ''), 'album_watermark' => request_var('album_watermark', false), 'album_sort_key' => request_var('album_sort_key', ''), 'album_sort_dir' => request_var('album_sort_dir', ''), 'display_subalbum_list' => request_var('display_subalbum_list', false), 'display_on_index' => request_var('display_on_index', false), 'display_in_rrc' => request_var('display_in_rrc', false)); // Categories are not able to be locked... if ($album_data['album_type'] == phpbb_gallery_album::TYPE_CAT) { $album_data['album_status'] = phpbb_gallery_album::STATUS_OPEN; } // Contests need contest_data, freaky... :-O $contest_data = array('contest_start' => request_var('contest_start', ''), 'contest_rating' => request_var('contest_rating', ''), 'contest_end' => request_var('contest_end', '')); // Get data for album description if specified if ($album_data['album_desc']) { generate_text_for_storage($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_bitfield'], $album_data['album_desc_options'], request_var('desc_parse_bbcode', false), request_var('desc_parse_urls', false), request_var('desc_parse_smilies', false)); } $errors = $manage_albums->update_album_data($album_data, $contest_data); if (!sizeof($errors)) { $album_perm_from = request_var('album_perm_from', 0); // Copy permissions? You do not need permissions for that in the gallery if ($album_perm_from && $album_perm_from != $album_data['album_id']) { // If we edit a album delete current permissions first if ($action == 'edit') { $sql = 'DELETE FROM ' . GALLERY_PERMISSIONS_TABLE . ' WHERE perm_album_id = ' . $album_data['album_id']; $db->sql_query($sql); $sql = 'DELETE FROM ' . GALLERY_MODSCACHE_TABLE . ' WHERE album_id = ' . $album_data['album_id']; $db->sql_query($sql); } $sql = 'SELECT * FROM ' . GALLERY_PERMISSIONS_TABLE . ' WHERE perm_album_id = ' . $album_perm_from; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $perm_data[] = array('perm_role_id' => $row['perm_role_id'], 'perm_album_id' => $album_data['album_id'], 'perm_user_id' => $row['perm_user_id'], 'perm_group_id' => $row['perm_group_id'], 'perm_system' => $row['perm_system']); } $db->sql_freeresult($result); $modscache_ary = array(); $sql = 'SELECT * FROM ' . GALLERY_MODSCACHE_TABLE . ' WHERE album_id = ' . $album_perm_from; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $modscache_ary[] = array('album_id' => $album_data['album_id'], 'user_id' => $row['user_id'], 'username' => $row['username'], 'group_id' => $row['group_id'], 'group_name' => $row['group_name'], 'display_on_index' => $row['display_on_index']); } $db->sql_freeresult($result); $db->sql_multi_insert(GALLERY_PERMISSIONS_TABLE, $perm_data); $db->sql_multi_insert(GALLERY_MODSCACHE_TABLE, $modscache_ary); } $cache->destroy('sql', GALLERY_ALBUMS_TABLE); $cache->destroy('sql', GALLERY_MODSCACHE_TABLE); $cache->destroy('sql', GALLERY_PERMISSIONS_TABLE); $cache->destroy('_albums'); phpbb_gallery_auth::set_user_permissions('all', ''); $acl_url = '&mode=manage&action=v_mask&album_id[]=' . $album_data['album_id']; $message = $action == 'add' ? $user->lang['ALBUM_CREATED'] : $user->lang['ALBUM_UPDATED']; $message .= '<br /><br />' . sprintf($user->lang['REDIRECT_ACL'], '<a href="' . phpbb_gallery_url::append_sid('admin', 'index', 'i=gallery_permissions' . $acl_url) . '">', '</a>'); // Redirect directly to permission settings screen if ($action == 'add' && !$album_perm_from) { meta_refresh(5, phpbb_gallery_url::append_sid('admin', 'index', 'i=gallery_permissions' . $acl_url)); } trigger_error($message . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id)); } break; } } switch ($action) { case 'move_up': case 'move_down': if (!$album_id) { trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); } $sql = 'SELECT * FROM ' . GALLERY_ALBUMS_TABLE . "\n\t\t\t\t\tWHERE album_id = {$album_id}"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$row) { trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); } $move_album_name = $manage_albums->move_album_by($row, $action, 1); if ($move_album_name !== false) { add_log('admin', 'LOG_ALBUM_' . strtoupper($action), $row['album_name'], $move_album_name); $cache->destroy('sql', GALLERY_ALBUMS_TABLE); } break; case 'sync': case 'sync_album': if (!$album_id) { trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); } $sql = 'SELECT album_name, album_type FROM ' . GALLERY_ALBUMS_TABLE . "\n\t\t\t\t\tWHERE album_id = {$album_id}"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$row) { trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); } phpbb_gallery_album::update_info($album_id); add_log('admin', 'LOG_ALBUM_SYNC', $row['album_name']); $template->assign_var('L_ALBUM_RESYNCED', sprintf($user->lang['ALBUM_RESYNCED'], $row['album_name'])); break; case 'add': case 'edit': // Show form to create/modify a album if ($action == 'edit') { $this->page_title = 'EDIT_ALBUM'; $row = phpbb_gallery_album::get_info($album_id); $old_album_type = $row['album_type']; if (!$update) { $album_data = $row; } else { $album_data['left_id'] = $row['left_id']; $album_data['right_id'] = $row['right_id']; } if ($row['album_type'] == phpbb_gallery_album::TYPE_CONTEST) { $contest_data = $this->get_contest_info('album', $album_id); } else { // Default values, 3 days later rate and 7 for the end of the contest $contest_data = array('contest_start' => time(), 'contest_rating' => 3 * 86400, 'contest_end' => 7 * 86400); } // Make sure no direct child albums are able to be selected as parents. $exclude_albums = array(); foreach (phpbb_gallery_album::get_branch(phpbb_gallery_album::PUBLIC_ALBUM, $album_id, 'children') as $row) { $exclude_albums[] = $row['album_id']; } $parents_list = phpbb_gallery_album::get_albumbox(true, '', $album_data['parent_id'], false, $exclude_albums); /* $album_data['album_password_confirm'] = $album_data['album_password']; */ } else { $this->page_title = 'CREATE_ALBUM'; $album_id = $this->parent_id; $parents_list = phpbb_gallery_album::get_albumbox(true, '', $this->parent_id); // Fill album data with default values if (!$update) { $album_data = array('parent_id' => $this->parent_id, 'album_type' => phpbb_gallery_album::TYPE_UPLOAD, 'album_status' => phpbb_gallery_album::STATUS_OPEN, 'album_name' => utf8_normalize_nfc(request_var('album_name', '', true)), 'album_desc' => '', 'album_image' => '', 'album_watermark' => true, 'album_sort_key' => '', 'album_sort_dir' => '', 'display_subalbum_list' => true, 'display_on_index' => true, 'display_in_rrc' => true); // Default values, 3 days later rate and 7 for the end of the contest $contest_data = array('contest_start' => time(), 'contest_rating' => 3 * 86400, 'contest_end' => 7 * 86400); } } $album_desc_data = array('text' => $album_data['album_desc'], 'allow_bbcode' => true, 'allow_smilies' => true, 'allow_urls' => true); // Parse desciption if specified if ($album_data['album_desc']) { if (!isset($album_data['album_desc_uid'])) { // Before we are able to display the preview and plane text, we need to parse our request_var()'d value... $album_data['album_desc_uid'] = ''; $album_data['album_desc_bitfield'] = ''; $album_data['album_desc_options'] = 0; generate_text_for_storage($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_bitfield'], $album_data['album_desc_options'], request_var('desc_allow_bbcode', false), request_var('desc_allow_urls', false), request_var('desc_allow_smilies', false)); } // decode... $album_desc_data = generate_text_for_edit($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_options']); } $album_type_options = ''; $album_type_ary = array(phpbb_gallery_album::TYPE_CAT => 'CAT', phpbb_gallery_album::TYPE_UPLOAD => 'UPLOAD', phpbb_gallery_album::TYPE_CONTEST => 'CONTEST'); foreach ($album_type_ary as $value => $lang) { $album_type_options .= '<option value="' . $value . '"' . ($value == $album_data['album_type'] ? ' selected="selected"' : '') . '>' . $user->lang['ALBUM_TYPE_' . $lang] . '</option>'; } $album_sort_key_options = ''; $album_sort_key_options .= '<option' . (!in_array($album_data['album_sort_key'], array('t', 'n', 'vc', 'u', 'ra', 'r', 'c', 'lc')) ? ' selected="selected"' : '') . " value=''>" . $user->lang['SORT_DEFAULT'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 't' ? ' selected="selected"' : '') . " value='t'>" . $user->lang['TIME'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'n' ? ' selected="selected"' : '') . " value='n'>" . $user->lang['IMAGE_NAME'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'vc' ? ' selected="selected"' : '') . " value='vc'>" . $user->lang['VIEWS'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'u' ? ' selected="selected"' : '') . " value='u'>" . $user->lang['USERNAME'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'ra' ? ' selected="selected"' : '') . " value='ra'>" . $user->lang['RATING'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'r' ? ' selected="selected"' : '') . " value='r'>" . $user->lang['RATES_COUNT'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'c' ? ' selected="selected"' : '') . " value='c'>" . $user->lang['COMMENTS'] . '</option>'; $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'lc' ? ' selected="selected"' : '') . " value='lc'>" . $user->lang['NEW_COMMENT'] . '</option>'; $album_sort_dir_options = ''; $album_sort_dir_options .= '<option' . ($album_data['album_sort_dir'] != 'd' && $album_data['album_sort_dir'] != 'a' ? ' selected="selected"' : '') . " value=''>" . $user->lang['SORT_DEFAULT'] . '</option>'; $album_sort_dir_options .= '<option' . ($album_data['album_sort_dir'] == 'd' ? ' selected="selected"' : '') . " value='d'>" . $user->lang['SORT_DESCENDING'] . '</option>'; $album_sort_dir_options .= '<option' . ($album_data['album_sort_dir'] == 'a' ? ' selected="selected"' : '') . " value='a'>" . $user->lang['SORT_ASCENDING'] . '</option>'; $statuslist = '<option value="' . phpbb_gallery_album::STATUS_OPEN . '"' . ($album_data['album_status'] == phpbb_gallery_album::STATUS_OPEN ? ' selected="selected"' : '') . '>' . $user->lang['UNLOCKED'] . '</option><option value="' . phpbb_gallery_album::STATUS_LOCKED . '"' . ($album_data['album_status'] == phpbb_gallery_album::STATUS_LOCKED ? ' selected="selected"' : '') . '>' . $user->lang['LOCKED'] . '</option>'; $sql = 'SELECT album_id FROM ' . GALLERY_ALBUMS_TABLE . ' WHERE album_type = ' . phpbb_gallery_album::TYPE_UPLOAD . ' AND album_user_id = ' . phpbb_gallery_album::PUBLIC_ALBUM . "\n\t\t\t\t\t\tAND album_id <> {$album_id}"; $result = $db->sql_query_limit($sql, 1); $uploadable_album_exists = false; if ($db->sql_fetchrow($result)) { $uploadable_album_exists = true; } $db->sql_freeresult($result); // Subalbum move options if ($action == 'edit' && in_array($album_data['album_type'], array(phpbb_gallery_album::TYPE_UPLOAD, phpbb_gallery_album::TYPE_CONTEST))) { $subalbums_id = array(); $subalbums = phpbb_gallery_album::get_branch(phpbb_gallery_album::PUBLIC_ALBUM, $album_id, 'children'); foreach ($subalbums as $row) { $subalbums_id[] = $row['album_id']; } $albums_list = phpbb_gallery_album::get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id); if ($uploadable_album_exists) { $template->assign_vars(array('S_MOVE_ALBUM_OPTIONS' => phpbb_gallery_album::get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id, phpbb_gallery_album::PUBLIC_ALBUM, phpbb_gallery_album::TYPE_UPLOAD))); } $template->assign_vars(array('S_HAS_SUBALBUMS' => $album_data['right_id'] - $album_data['left_id'] > 1 ? true : false, 'S_ALBUMS_LIST' => $albums_list)); } elseif ($uploadable_album_exists) { $template->assign_vars(array('S_MOVE_ALBUM_OPTIONS' => phpbb_gallery_album::get_albumbox(true, '', $album_data['parent_id'], false, $album_id, 0, phpbb_gallery_album::TYPE_UPLOAD))); } /* if (strlen($album_data['album_password']) == 32) { $errors[] = $user->lang['ALBUM_PASSWORD_OLD']; } */ $template->assign_vars(array('S_EDIT_ALBUM' => true, 'S_ERROR' => sizeof($errors) ? true : false, 'S_PARENT_ID' => $this->parent_id, 'S_ALBUM_PARENT_ID' => $album_data['parent_id'], 'S_ADD_ACTION' => $action == 'add' ? true : false, 'U_BACK' => $this->u_action . '&parent_id=' . $this->parent_id, 'U_EDIT_ACTION' => $this->u_action . "&parent_id={$this->parent_id}&action={$action}&a={$album_id}", 'L_COPY_PERMISSIONS_EXPLAIN' => $user->lang['COPY_PERMISSIONS_' . strtoupper($action) . '_EXPLAIN'], 'L_TITLE' => $user->lang[$this->page_title], 'ERROR_MSG' => sizeof($errors) ? implode('<br />', $errors) : '', 'ALBUM_NAME' => $album_data['album_name'], 'ALBUM_IMAGE' => $album_data['album_image'], 'ALBUM_IMAGE_SRC' => $album_data['album_image'] ? phpbb_gallery_url::path('phpbb') . $album_data['album_image'] : '', 'ALBUM_DESC' => $album_desc_data['text'], 'S_DESC_BBCODE_CHECKED' => $album_desc_data['allow_bbcode'] ? true : false, 'S_DESC_SMILIES_CHECKED' => $album_desc_data['allow_smilies'] ? true : false, 'S_DESC_URLS_CHECKED' => $album_desc_data['allow_urls'] ? true : false, 'S_ALBUM_TYPE_OPTIONS' => $album_type_options, 'S_STATUS_OPTIONS' => $statuslist, 'S_PARENT_OPTIONS' => $parents_list, 'S_ALBUM_OPTIONS' => phpbb_gallery_album::get_albumbox(true, '', $action == 'add' ? $album_data['parent_id'] : false, false, $action == 'edit' ? $album_data['album_id'] : false), 'S_ALBUM_ORIG_UPLOAD' => isset($old_album_type) && $old_album_type == phpbb_gallery_album::TYPE_UPLOAD ? true : false, 'S_ALBUM_ORIG_CAT' => isset($old_album_type) && $old_album_type == phpbb_gallery_album::TYPE_CAT ? true : false, 'S_ALBUM_ORIG_CONTEST' => isset($old_album_type) && $old_album_type == phpbb_gallery_album::TYPE_CONTEST ? true : false, 'S_ALBUM_UPLOAD' => $album_data['album_type'] == phpbb_gallery_album::TYPE_UPLOAD ? true : false, 'S_ALBUM_CAT' => $album_data['album_type'] == phpbb_gallery_album::TYPE_CAT ? true : false, 'S_ALBUM_CONTEST' => $album_data['album_type'] == phpbb_gallery_album::TYPE_CONTEST ? true : false, 'ALBUM_UPLOAD' => phpbb_gallery_album::TYPE_UPLOAD, 'ALBUM_CAT' => phpbb_gallery_album::TYPE_CAT, 'ALBUM_CONTEST' => phpbb_gallery_album::TYPE_CONTEST, 'S_CAN_COPY_PERMISSIONS' => true, 'S_ALBUM_WATERMARK' => $album_data['album_watermark'] ? true : false, 'ALBUM_SORT_KEY_OPTIONS' => $album_sort_key_options, 'ALBUM_SORT_DIR_OPTIONS' => $album_sort_dir_options, 'S_DISPLAY_SUBALBUM_LIST' => $album_data['display_subalbum_list'] ? true : false, 'S_DISPLAY_ON_INDEX' => $album_data['display_on_index'] ? true : false, 'S_DISPLAY_IN_RRC' => $album_data['display_in_rrc'] ? true : false, 'S_CONTEST_START' => $user->format_date($contest_data['contest_start'], 'Y-m-d H:i'), 'CONTEST_RATING' => $user->format_date($contest_data['contest_start'] + $contest_data['contest_rating'], 'Y-m-d H:i'), 'CONTEST_END' => $user->format_date($contest_data['contest_start'] + $contest_data['contest_end'], 'Y-m-d H:i'))); return; break; case 'delete': if (!$album_id) { trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); } $album_data = phpbb_gallery_album::get_info($album_id); $subalbums_id = array(); $subalbums = phpbb_gallery_album::get_branch(phpbb_gallery_album::PUBLIC_ALBUM, $album_id, 'children'); foreach ($subalbums as $row) { $subalbums_id[] = $row['album_id']; } $albums_list = phpbb_gallery_album::get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id); $sql = 'SELECT album_id FROM ' . GALLERY_ALBUMS_TABLE . ' WHERE album_type = ' . phpbb_gallery_album::TYPE_UPLOAD . "\n\t\t\t\t\t\tAND album_id <> {$album_id}\n\t\t\t\t\t\tAND album_user_id = " . phpbb_gallery_album::PUBLIC_ALBUM; $result = $db->sql_query_limit($sql, 1); if ($db->sql_fetchrow($result)) { $template->assign_vars(array('S_MOVE_ALBUM_OPTIONS' => phpbb_gallery_album::get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id, phpbb_gallery_album::PUBLIC_ALBUM, phpbb_gallery_album::TYPE_UPLOAD))); } $db->sql_freeresult($result); $parent_id = $this->parent_id == $album_id ? 0 : $this->parent_id; $template->assign_vars(array('S_DELETE_ALBUM' => true, 'U_ACTION' => $this->u_action . "&parent_id={$parent_id}&action=delete&a=" . $album_id, 'U_BACK' => $this->u_action . '&parent_id=' . $this->parent_id, 'ALBUM_NAME' => $album_data['album_name'], 'S_ALBUM_POST' => in_array($album_data['album_type'], array(phpbb_gallery_album::TYPE_UPLOAD, phpbb_gallery_album::TYPE_CONTEST)) ? true : false, 'S_HAS_SUBALBUMS' => $album_data['right_id'] - $album_data['left_id'] > 1 ? true : false, 'S_ALBUMS_LIST' => $albums_list, 'S_ERROR' => sizeof($errors) ? true : false, 'ERROR_MSG' => sizeof($errors) ? implode('<br />', $errors) : '')); return; break; } // Default management page if (!$this->parent_id) { $navigation = $user->lang['GALLERY_INDEX']; } else { $navigation = '<a href="' . $this->u_action . '">' . $user->lang['GALLERY_INDEX'] . '</a>'; $albums_nav = phpbb_gallery_album::get_branch(phpbb_gallery_album::PUBLIC_ALBUM, $this->parent_id, 'parents', 'descending'); foreach ($albums_nav as $row) { if ($row['album_id'] == $this->parent_id) { $navigation .= ' -> ' . $row['album_name']; } else { $navigation .= ' -> <a href="' . $this->u_action . '&parent_id=' . $row['album_id'] . '">' . $row['album_name'] . '</a>'; } } } // Jumpbox $album_box = phpbb_gallery_album::get_albumbox(true, '', $this->parent_id, false, false); if ($action == 'sync' || $action == 'sync_album') { $template->assign_var('S_RESYNCED', true); } $sql = 'SELECT * FROM ' . GALLERY_ALBUMS_TABLE . "\n\t\t\tWHERE parent_id = {$this->parent_id}\n\t\t\t\tAND album_user_id = " . phpbb_gallery_album::PUBLIC_ALBUM . ' ORDER BY left_id'; $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) { do { $album_type = $row['album_type']; if ($row['album_status'] == phpbb_gallery_album::STATUS_LOCKED) { $folder_image = '<img src="images/icon_folder_lock.gif" alt="' . $user->lang['LOCKED'] . '" />'; } else { $folder_image = $row['left_id'] + 1 != $row['right_id'] ? '<img src="images/icon_subfolder.gif" alt="' . $user->lang['SUBALBUM'] . '" />' : '<img src="images/icon_folder.gif" alt="' . $user->lang['FOLDER'] . '" />'; } $url = $this->u_action . "&parent_id={$this->parent_id}&a={$row['album_id']}"; $template->assign_block_vars('albums', array('FOLDER_IMAGE' => $folder_image, 'ALBUM_IMAGE' => $row['album_image'] ? '<img src="' . phpbb_gallery_url::path('phpbb') . $row['album_image'] . '" alt="" />' : '', 'ALBUM_IMAGE_SRC' => $row['album_image'] ? phpbb_gallery_url::path('phpbb') . $row['album_image'] : '', 'ALBUM_NAME' => $row['album_name'], 'ALBUM_DESCRIPTION' => generate_text_for_display($row['album_desc'], $row['album_desc_uid'], $row['album_desc_bitfield'], $row['album_desc_options']), 'ALBUM_IMAGES' => $row['album_images'], 'S_ALBUM_POST' => $album_type != phpbb_gallery_album::TYPE_CAT ? true : false, 'U_ALBUM' => $this->u_action . '&parent_id=' . $row['album_id'], 'U_MOVE_UP' => $url . '&action=move_up', 'U_MOVE_DOWN' => $url . '&action=move_down', 'U_EDIT' => $url . '&action=edit', 'U_DELETE' => $url . '&action=delete', 'U_SYNC' => $url . '&action=sync')); } while ($row = $db->sql_fetchrow($result)); } else { if ($this->parent_id) { $row = get_album_info($this->parent_id); $url = $this->u_action . '&parent_id=' . $this->parent_id . '&a=' . $row['album_id']; $template->assign_vars(array('S_NO_ALBUMS' => true, 'U_EDIT' => $url . '&action=edit', 'U_DELETE' => $url . '&action=delete', 'U_SYNC' => $url . '&action=sync')); } } $db->sql_freeresult($result); $template->assign_vars(array('ERROR_MSG' => sizeof($errors) ? implode('<br />', $errors) : '', 'NAVIGATION' => $navigation, 'ALBUM_BOX' => $album_box, 'U_SEL_ACTION' => $this->u_action, 'U_ACTION' => $this->u_action . '&parent_id=' . $this->parent_id, 'U_PROGRESS_BAR' => $this->u_action . '&action=progress_bar', 'UA_PROGRESS_BAR' => addslashes($this->u_action . '&action=progress_bar'))); }
function edit_album() { global $cache, $db, $template, $user; phpbb_gallery_url::_include(array('bbcode', 'message_parser'), 'phpbb'); $album_id = request_var('album_id', 0); phpbb_gallery_album::check_user($album_id); $submit = isset($_POST['submit']) ? true : false; $redirect = request_var('redirect', ''); if (!$submit) { $album_data = phpbb_gallery_album::get_info($album_id); $album_desc_data = generate_text_for_edit($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_options']); $parents_list = phpbb_gallery_album::get_albumbox(false, '', $album_data['parent_id'], false, $album_id, $user->data['user_id']); $template->assign_vars(array('S_EDIT_SUBALBUM' => true, 'S_PERSONAL_ALBUM' => $album_id == phpbb_gallery::$user->get_data('personal_album_id') ? true : false, 'L_TITLE' => $user->lang['EDIT_SUBALBUM'], 'L_TITLE_EXPLAIN' => $user->lang['EDIT_SUBALBUM_EXP'], 'S_ALBUM_ACTION' => $this->u_action . '&action=edit&album_id=' . $album_id . ($redirect != '' ? '&redirect=album' : ''), 'S_PARENT_OPTIONS' => '<option value="' . phpbb_gallery::$user->get_data('personal_album_id') . '">' . $user->lang['NO_PARENT_ALBUM'] . '</option>' . $parents_list, 'ALBUM_NAME' => $album_data['album_name'], 'ALBUM_DESC' => $album_desc_data['text'], 'ALBUM_TYPE' => $album_data['album_type'], 'S_DESC_BBCODE_CHECKED' => $album_desc_data['allow_bbcode'] ? true : false, 'S_DESC_SMILIES_CHECKED' => $album_desc_data['allow_smilies'] ? true : false, 'S_DESC_URLS_CHECKED' => $album_desc_data['allow_urls'] ? true : false, 'S_MODE' => 'edit')); } else { // Is it salty ? if (!check_form_key('ucp_gallery')) { trigger_error('FORM_INVALID'); } $album_data = array('album_name' => $album_id == phpbb_gallery::$user->get_data('personal_album_id') ? $user->data['username'] : request_var('album_name', '', true), 'parent_id' => request_var('parent_id', $album_id == phpbb_gallery::$user->get_data('personal_album_id') ? 0 : phpbb_gallery::$user->get_data('personal_album_id')), 'album_parents' => '', 'album_type' => phpbb_gallery_album::TYPE_UPLOAD, 'album_desc_options' => 7, 'album_desc' => utf8_normalize_nfc(request_var('album_desc', '', true))); generate_text_for_storage($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_bitfield'], $album_data['album_desc_options'], request_var('desc_parse_bbcode', false), request_var('desc_parse_urls', false), request_var('desc_parse_smilies', false)); $row = phpbb_gallery_album::get_info($album_id); // If the parent is different, the left_id and right_id have changed. if ($row['parent_id'] != $album_data['parent_id']) { // How many do we have to move and how far. $moving_ids = $row['right_id'] - $row['left_id'] + 1; $sql = 'SELECT MAX(right_id) right_id FROM ' . GALLERY_ALBUMS_TABLE . ' WHERE album_user_id = ' . $row['album_user_id']; $result = $db->sql_query($sql); $moving_distance = $db->sql_fetchfield('right_id') - $row['left_id'] + 1; $db->sql_freeresult($result); $stop_updating = $moving_distance + $row['left_id']; // Update the moving albums... move them to the end. $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET right_id = right_id + ' . $moving_distance . ', left_id = left_id + ' . $moving_distance . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND left_id >= ' . $row['left_id'] . ' AND right_id <= ' . $row['right_id']; $db->sql_query($sql); $new['left_id'] = $row['left_id'] + $moving_distance; $new['right_id'] = $row['right_id'] + $moving_distance; // Close the gap, we produced through moving. if ($album_data['parent_id'] == 0) { $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET left_id = left_id - ' . $moving_ids . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND left_id >= ' . $row['left_id']; $db->sql_query($sql); $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET right_id = right_id - ' . $moving_ids . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND right_id >= ' . $row['left_id']; $db->sql_query($sql); } else { $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET left_id = left_id - ' . $moving_ids . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND left_id >= ' . $row['left_id'] . ' AND right_id <= ' . $stop_updating; $db->sql_query($sql); $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET right_id = right_id - ' . $moving_ids . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND right_id >= ' . $row['left_id'] . ' AND right_id <= ' . $stop_updating; $db->sql_query($sql); // Create new gap, therefore we need parent_information. $parent = get_album_info($album_data['parent_id']); $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET left_id = left_id + ' . $moving_ids . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND left_id >= ' . $parent['right_id'] . ' AND right_id <= ' . $stop_updating; $db->sql_query($sql); $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET right_id = right_id + ' . $moving_ids . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND right_id >= ' . $parent['right_id'] . ' AND right_id <= ' . $stop_updating; $db->sql_query($sql); // Move the albums to the suggested gap. $parent['right_id'] = $parent['right_id'] + $moving_ids; $move_back = $new['right_id'] - $parent['right_id'] + 1; $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET left_id = left_id - ' . $move_back . ', right_id = right_id - ' . $move_back . ' WHERE album_user_id = ' . $row['album_user_id'] . ' AND left_id >= ' . $stop_updating; $db->sql_query($sql); } } // The album name has changed, clear the parents list of all albums. if ($row['album_name'] != $album_data['album_name']) { $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . "\n\t\t\t\t\tSET album_parents = ''"; $db->sql_query($sql); } $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $album_data) . ' WHERE album_id = ' . (int) $album_id; $db->sql_query($sql); $cache->destroy('sql', GALLERY_ALBUMS_TABLE); $cache->destroy('_albums'); trigger_error($user->lang['EDITED_SUBALBUM'] . '<br /><br /> <a href="' . ($redirect ? phpbb_gallery_url::append_sid('album', "album_id={$album_id}") : phpbb_gallery_url::append_sid('phpbb', 'ucp', 'i=gallery&mode=manage_albums&action=manage&parent_id=' . ($album_data['parent_id'] ? $album_data['parent_id'] : phpbb_gallery::$user->get_data('personal_album_id')))) . '">' . $user->lang['BACK_TO_PREV'] . '</a>'); } }
$sql = 'UPDATE ' . GALLERY_IMAGES_TABLE . ' SET image_album_id = ' . $moving_target . ', image_contest = ' . phpbb_gallery_image::NO_CONTEST . ' WHERE ' . $db->sql_in_set('image_id', $image_id_ary); $db->sql_query($sql); } $sql = 'UPDATE ' . GALLERY_REPORTS_TABLE . ' SET report_album_id = ' . $moving_target . ' WHERE ' . $db->sql_in_set('report_image_id', $image_id_ary); $db->sql_query($sql); foreach ($image_id_ary as $image) { add_log('gallery', $moving_target, $image, 'LOG_GALLERY_MOVED', $album_data['album_name'], $target_data['album_name']); } $success = true; } else { $category_select = phpbb_gallery_album::get_albumbox(false, 'moving_target', $album_id, 'i_upload', $album_id); $template->assign_vars(array('S_MOVING_IMAGES' => true, 'S_ALBUM_SELECT' => $category_select, 'S_HIDDEN_FIELDS' => $s_hidden_fields)); } break; case 'images_unapprove': if (confirm_box(true)) { phpbb_gallery_image::handle_counter($image_id_ary, false); $sql = 'UPDATE ' . GALLERY_IMAGES_TABLE . ' SET image_status = ' . phpbb_gallery_image::STATUS_UNAPPROVED . ' WHERE ' . $db->sql_in_set('image_id', $image_id_ary); $db->sql_query($sql); $sql = 'SELECT image_id, image_name FROM ' . GALLERY_IMAGES_TABLE . ' WHERE ' . $db->sql_in_set('image_id', $image_id_ary); $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) {
/** * Handles copying permissions from one album to others */ function copy_album_permissions() { global $cache, $db, $template, $user; $submit = isset($_POST['submit']) ? true : false; if ($submit) { $src = request_var('src_album_id', 0); $dest = request_var('dest_album_ids', array(0)); $sql = 'SELECT album_id FROM ' . GALLERY_ALBUMS_TABLE . ' WHERE album_id = ' . $src; $result = $db->sql_query($sql); $src = (int) $db->sql_fetchfield('album_id'); $db->sql_freeresult($result); if (!$src) { trigger_error($user->lang['SELECTED_ALBUM_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING); } if (!sizeof($dest)) { trigger_error($user->lang['SELECTED_ALBUM_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING); } if (confirm_box(true)) { $sql = 'SELECT * FROM ' . GALLERY_PERMISSIONS_TABLE . ' WHERE perm_album_id = ' . $src; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { foreach ($dest as $album_id) { $perm_data[] = array('perm_role_id' => $row['perm_role_id'], 'perm_album_id' => $album_id, 'perm_user_id' => $row['perm_user_id'], 'perm_group_id' => $row['perm_group_id'], 'perm_system' => $row['perm_system']); } } $db->sql_freeresult($result); $modscache_ary = array(); $sql = 'SELECT * FROM ' . GALLERY_MODSCACHE_TABLE . ' WHERE album_id = ' . $src; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { foreach ($dest as $album_id) { $modscache_ary[] = array('album_id' => $album_id, 'user_id' => $row['user_id'], 'username' => $row['username'], 'group_id' => $row['group_id'], 'group_name' => $row['group_name'], 'display_on_index' => $row['display_on_index']); } } $db->sql_freeresult($result); $sql = 'DELETE FROM ' . GALLERY_PERMISSIONS_TABLE . ' WHERE ' . $db->sql_in_set('perm_album_id', $dest); $db->sql_query($sql); $sql = 'DELETE FROM ' . GALLERY_MODSCACHE_TABLE . ' WHERE ' . $db->sql_in_set('album_id', $dest); $db->sql_query($sql); $db->sql_multi_insert(GALLERY_PERMISSIONS_TABLE, $perm_data); $db->sql_multi_insert(GALLERY_MODSCACHE_TABLE, $modscache_ary); $cache->destroy('sql', GALLERY_MODSCACHE_TABLE); $cache->destroy('sql', GALLERY_PERMISSIONS_TABLE); phpbb_gallery_auth::set_user_permissions('all', ''); trigger_error($user->lang['COPY_PERMISSIONS_SUCCESSFUL'] . adm_back_link($this->u_action)); } else { $s_hidden_fields = array('submit' => $submit, 'src_album_id' => $src, 'dest_album_ids' => $dest); $s_hidden_fields = build_hidden_fields($s_hidden_fields); confirm_box(false, $user->lang['COPY_PERMISSIONS_CONFIRM'], $s_hidden_fields); } } $template->assign_vars(array('S_ALBUM_OPTIONS' => phpbb_gallery_album::get_albumbox(true, ''), 'S_COPY_PERMISSIONS' => true)); }