Файл: apwa/gallery/search.php
Строк: 499
<?php
/**
*
* @package phpBB Gallery
* @version $Id$
* @copyright (c) 2007 nickvergessen nickvergessen@gmx.de http://www.flying-bits.org
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* partially borrowed from phpBB3
* @author: phpBB Group
* @location: search.php
*/
/**
* @ignore
*/
define('IN_PHPBB', true);
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include('common.' . $phpEx);
include($phpbb_root_path . 'common.' . $phpEx);
phpbb_gallery::setup(array('mods/gallery', 'search'));
phpbb_gallery_url::_include('functions_display', 'phpbb');
// Define initial vars
//@todo: $mode = request_var('mode', '');
$search_id = request_var('search_id', '');
$start = request_var('start', 0);
$image_id = request_var('image_id', 0);
$submit = request_var('submit', false);
$keywords = utf8_normalize_nfc(request_var('keywords', '', true));
$add_keywords = utf8_normalize_nfc(request_var('add_keywords', '', true));
$username = request_var('username', '', true);
$user_id = request_var('user_id', 0);
$search_terms = request_var('terms', 'all');
$search_album = request_var('aid', array(0));
$search_child = request_var('sc', true);
$search_fields = request_var('sf', 'all');
$sort_days = request_var('st', 0);
$sort_key = request_var('sk', 't');
$sort_dir = request_var('sd', 'd');
// Is user able to search? Has search been disabled?
if (!$auth->acl_get('u_search') || !$config['load_search'])
{
$template->assign_var('S_NO_SEARCH', true);
trigger_error('NO_SEARCH');
}
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['SEARCH'],
'U_VIEW_FORUM' => phpbb_gallery_url::append_sid('search'),
));
// Define some vars
$images_per_page = phpbb_gallery_config::get('album_rows') * phpbb_gallery_config::get('album_columns');
$tot_unapproved = $image_counter = 0;
/**
* Build the sort options
*/
$limit_days = array(0 => $user->lang['ALL_IMAGES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('t' => $user->lang['TIME'], 'n' => $user->lang['IMAGE_NAME'], 'u' => $user->lang['SORT_USERNAME'], 'vc' => $user->lang['GALLERY_VIEWS']);
$sort_by_sql = array('t' => 'image_time', 'n' => 'image_name_clean', 'u' => 'image_username_clean', 'vc' => 'image_view_count');
if (phpbb_gallery_config::get('allow_rates'))
{
$sort_by_text['ra'] = $user->lang['RATING'];
$sort_by_sql['ra'] = (phpbb_gallery_contest::$mode == phpbb_gallery_contest::MODE_SUM) ? 'image_rate_points' : 'image_rate_avg';
$sort_by_text['r'] = $user->lang['RATES_COUNT'];
$sort_by_sql['r'] = 'image_rates';
}
if (phpbb_gallery_config::get('allow_comments'))
{
$sort_by_text['c'] = $user->lang['COMMENTS'];
$sort_by_sql['c'] = 'image_comments';
$sort_by_text['lc'] = $user->lang['NEW_COMMENT'];
$sort_by_sql['lc'] = 'image_last_comment';
}
$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
$sql_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
/**
* Search
*/
if ($keywords || $username || $user_id || $search_id || $submit)
{
// clear arrays
$id_ary = array();
// This is what our Search could so far
if ($user_id)
{
$search_id = 'usersearch';
}
// egosearch is an user search
if ($search_id == 'egosearch')
{
$user_id = $user->data['user_id'];
if ($user->data['user_id'] == ANONYMOUS)
{
login_box('', $user->lang['LOGIN_EXPLAIN_EGOSEARCH']);
}
}
// If we are looking for authors get their ids
$user_id_ary = array();
if ($username)
{
if ((strpos($username, '*') !== false) && (utf8_strlen(str_replace(array('*', '%'), '', $username)) < $config['min_search_author_chars']))
{
trigger_error(sprintf($user->lang['TOO_FEW_AUTHOR_CHARS'], $config['min_search_author_chars']));
}
$sql_where = (strpos($username, '*') !== false) ? ' username_clean ' . $db->sql_like_expression(str_replace('*', $db->any_char, utf8_clean_string($username))) : " username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
// Missing images and comments of guests/deleted users
$sql = 'SELECT user_id
FROM ' . USERS_TABLE . "
WHERE $sql_where
AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';
$result = $db->sql_query_limit($sql, 100);
while ($row = $db->sql_fetchrow($result))
{
$user_id_ary[] = (int) $row['user_id'];
}
$db->sql_freeresult($result);
$user_id_ary[] = (int) ANONYMOUS;
/**
* Allow Search for guests/deleted users
if (!sizeof($user_id_ary))
{
trigger_error('NO_SEARCH_RESULTS');
}
*/
}
// if we search in an existing search result just add the additional keywords. But we need to use "all search terms"-mode
// so we can keep the old keywords in their old mode, but add the new ones as required words
if ($add_keywords)
{
if ($search_terms == 'all')
{
$keywords .= ' ' . $add_keywords;
}
else
{
$search_terms = 'all';
$keywords = preg_replace('#s+#u', ' |', $keywords) . ' ' .$add_keywords;
}
}
$keywords_ary = ($keywords) ? explode(' ', $keywords) : array();
// pre-made searches
$sql = $field = $l_search_title = $search_results = '';
$total_match_count = 0;
$sql_limit = 0;
// Special searches: recent, random, toprated, ...
if ($search_id)
{
switch ($search_id)
{
case 'recent':
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['SEARCH_RECENT'],
'U_VIEW_FORUM' => phpbb_gallery_url::append_sid('search', 'search_id=' . $search_id),
));
$l_search_title = $user->lang['SEARCH_RECENT'];
$search_results = 'image';
$sql_order = 'image_id DESC';
$sql_limit = phpbb_gallery_constants::SEARCH_PAGES_NUMBER * $images_per_page;
$sql = 'SELECT image_id
FROM ' . GALLERY_IMAGES_TABLE . '
WHERE image_status <> ' . phpbb_gallery_image::STATUS_ORPHAN . '
AND ((' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('i_view'), false, true) . ' AND image_status <> ' . phpbb_gallery_image::STATUS_UNAPPROVED . ')
OR ' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('m_status'), false, true) . ')
ORDER BY ' . $sql_order;
break;
case 'random':
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['SEARCH_RANDOM'],
'U_VIEW_FORUM' => phpbb_gallery_url::append_sid('search', 'search_id=' . $search_id),
));
$l_search_title = $user->lang['SEARCH_RANDOM'];
$search_results = 'image';
switch ($db->sql_layer)
{
case 'postgres':
$sql_order = 'RANDOM()';
break;
case 'mssql':
case 'mssql_odbc':
$sql_order = 'NEWID()';
break;
default:
$sql_order = 'RAND()';
break;
}
$sql_limit = $images_per_page;
$sql = 'SELECT image_id
FROM ' . GALLERY_IMAGES_TABLE . '
WHERE image_status <> ' . phpbb_gallery_image::STATUS_ORPHAN . '
AND ((' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('i_view'), false, true) . ' AND image_status <> ' . phpbb_gallery_image::STATUS_UNAPPROVED . ')
OR ' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('m_status'), false, true) . ')
ORDER BY ' . $sql_order;
break;
case 'commented':
if (phpbb_gallery_config::get('allow_comments'))
{
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['SEARCH_RECENT_COMMENTS'],
'U_VIEW_FORUM' => phpbb_gallery_url::append_sid('search', 'search_id=' . $search_id),
));
$l_search_title = $user->lang['SEARCH_RECENT_COMMENTS'];
$search_results = 'comment';
$sql_order = 'c.comment_id DESC';
$sql_limit = phpbb_gallery_constants::SEARCH_PAGES_NUMBER * $images_per_page;
$sql_array = array(
'SELECT' => 'c.comment_id',
'FROM' => array(GALLERY_COMMENTS_TABLE => 'c'),
'LEFT_JOIN' => array(
array(
'FROM' => array(GALLERY_IMAGES_TABLE => 'i'),
'ON' => 'c.comment_image_id = i.image_id',
),
),
'WHERE' => '((' . $db->sql_in_set('i.image_album_id', phpbb_gallery::$auth->acl_album_ids('i_view'), false, true) . ' AND i.image_status <> ' . phpbb_gallery_image::STATUS_UNAPPROVED . ')
OR ' . $db->sql_in_set('i.image_album_id', phpbb_gallery::$auth->acl_album_ids('m_status'), false, true) . ')
AND ' . $db->sql_in_set('i.image_album_id', phpbb_gallery::$auth->acl_album_ids('c_read'), false, true),
'ORDER_BY' => $sql_order,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
}
break;
case 'toprated':
if (phpbb_gallery_config::get('allow_rates'))
{
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['SEARCH_TOPRATED'],
'U_VIEW_FORUM' => phpbb_gallery_url::append_sid('search', 'search_id=' . $search_id),
));
$l_search_title = $user->lang['SEARCH_TOPRATED'];
$search_results = 'image';
$sql_order = 'image_rate_avg DESC';
$sql_limit = phpbb_gallery_constants::SEARCH_PAGES_NUMBER * $images_per_page;
// We need to hide contest-images on this search_id, if the contest is still running!
$sql = 'SELECT image_id
FROM ' . GALLERY_IMAGES_TABLE . '
WHERE image_status <> ' . phpbb_gallery_image::STATUS_ORPHAN . '
AND image_rate_points <> 0
AND ((' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('i_view'), false, true) . ' AND image_status <> ' . phpbb_gallery_image::STATUS_UNAPPROVED . ' AND image_contest = ' . phpbb_gallery_image::NO_CONTEST . ')
OR ' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('m_status'), false, true) . ')
ORDER BY ' . $sql_order;
}
break;
case 'contests':
if (phpbb_gallery_config::get('allow_rates'))
{
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['SEARCH_CONTEST'],
'U_VIEW_FORUM' => phpbb_gallery_url::append_sid('search', 'search_id=' . $search_id),
));
$l_search_title = $user->lang['SEARCH_CONTEST'];
$search_results = 'image';
$sql_array = array(
'SELECT' => 'c.*, a.album_name',
'FROM' => array(GALLERY_CONTESTS_TABLE => 'c'),
'LEFT_JOIN' => array(
array(
'FROM' => array(GALLERY_ALBUMS_TABLE => 'a'),
'ON' => 'a.album_id = c.contest_album_id',
),
),
'WHERE' => $db->sql_in_set('c.contest_album_id', array_unique(array_merge(phpbb_gallery::$auth->acl_album_ids('i_view'), phpbb_gallery::$auth->acl_album_ids('m_status'))), false, true) . ' AND c.contest_marked = ' . phpbb_gallery_image::NO_CONTEST,
'ORDER_BY' => 'c.contest_start + c.contest_end DESC',
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query_limit($sql, phpbb_gallery_config::get('album_rows') * phpbb_gallery_constants::SEARCH_PAGES_NUMBER);
while ($row = $db->sql_fetchrow($result))
{
$id_ary[] = $row['contest_first'];
$id_ary[] = $row['contest_second'];
$id_ary[] = $row['contest_third'];
$contest_images[$row['contest_id']] = array(
'album_id' => $row['contest_album_id'],
'album_name' => $row['album_name'],
'images' => array($row['contest_first'], $row['contest_second'], $row['contest_third'])
);
}
$db->sql_freeresult($result);
// Clear $sql, so we do not execute it again.
$sql = '';
}
break;
case 'egosearch':
$user_id = $user->data['user_id'];
// no break
case 'usersearch':
// Get username for the search-title "Images of %s"
$sql = 'SELECT username
FROM ' . USERS_TABLE . '
WHERE user_id = ' . $user_id;
$result = $db->sql_query($sql);
$username = $db->sql_fetchfield('username');
$db->sql_freeresult($result);
$l_search_title = sprintf($user->lang['SEARCH_USER_IMAGES_OF'], $username);
$search_results = 'image';
$sql_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
// We need to hide contest-images on this search_id, if the contest is still running!
$sql = 'SELECT image_id
FROM ' . GALLERY_IMAGES_TABLE . '
WHERE image_status <> ' . phpbb_gallery_image::STATUS_ORPHAN . '
AND image_user_id = ' . $user_id . '
AND ((' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('i_view'), false, true) . ' AND image_status <> ' . phpbb_gallery_image::STATUS_UNAPPROVED . ' AND image_contest = ' . phpbb_gallery_image::NO_CONTEST . ')
OR ' . $db->sql_in_set('image_album_id', phpbb_gallery::$auth->acl_album_ids('m_status'), false, true) . ')
ORDER BY ' . $sql_order;
break;
}
}
// "Normal" search
else
{
$search_query = '';
$matches = array('i.image_name', 'i.image_desc');
if (!sizeof($keywords_ary) && !sizeof($user_id_ary))
{
trigger_error('NO_SEARCH_RESULTS');
}
foreach ($keywords_ary as $word)
{
$match_search_query = '';
foreach ($matches as $match)
{
$match_search_query .= (($match_search_query) ? ' OR ' : '') . 'LOWER('. $match . ') ';
$match_search_query .= $db->sql_like_expression(str_replace('*', $db->any_char, $db->any_char . strtolower($word) . $db->any_char));
}
$search_query .= ((!$search_query) ? '' : (($search_terms == 'all') ? ' AND ' : ' OR ')) . '(' . $match_search_query . ')';
}
$search_results = 'image';
$sql_limit = phpbb_gallery_constants::SEARCH_PAGES_NUMBER * $images_per_page;
$sql_match = 'i.image_name';
$sql_where_options = '';
$sql = 'SELECT i.image_id
FROM ' . GALLERY_IMAGES_TABLE . ' i
WHERE i.image_status <> ' . phpbb_gallery_image::STATUS_ORPHAN . '
AND ((' . $db->sql_in_set('i.image_album_id', phpbb_gallery::$auth->acl_album_ids('i_view'), false, true) . ' AND i.image_status <> ' . phpbb_gallery_image::STATUS_UNAPPROVED . ')
OR ' . $db->sql_in_set('i.image_album_id', phpbb_gallery::$auth->acl_album_ids('m_status'), false, true) . ')
' . (($search_query) ? 'AND (' . $search_query . ')' : '') . '
' . (($user_id_ary) ? ' AND ' . $db->sql_in_set('i.image_user_id', $user_id_ary) : '') . '
' . (($search_album) ? ' AND ' . $db->sql_in_set('i.image_album_id', $search_album) : '') . '
ORDER BY ' . $sql_order;
}
if ($sql)
{
if (!$sql_limit)
{
$result = $db->sql_query($sql);
}
else
{
$result = $db->sql_query_limit($sql, $sql_limit);
}
while ($row = $db->sql_fetchrow($result))
{
$id_ary[] = $row[$search_results . '_id'];
}
$db->sql_freeresult($result);
$total_match_count = sizeof($id_ary);
$id_ary = array_slice($id_ary, $start, $images_per_page);
}
$l_search_matches = ($total_match_count == 1) ? sprintf($user->lang['FOUND_SEARCH_MATCH'], $total_match_count) : sprintf($user->lang['FOUND_SEARCH_MATCHES'], $total_match_count);
// For some searches we need to print out the "no results" page directly to allow re-sorting/refining the search options.
if (!sizeof($id_ary))
{
trigger_error('NO_SEARCH_RESULTS');
}
$sql_where = '';
if (sizeof($id_ary))
{
$sql_where .= ($search_results == 'image') ? $db->sql_in_set('i.image_id', $id_ary) : $db->sql_in_set('c.comment_id', $id_ary);
}
// define some vars for urls
$hilit = explode(' ', preg_replace('#s+#u', ' ', str_replace(array('+', '-', '|', '(', ')', '"'), ' ', $keywords)));
$searchwords = implode(', ', $hilit);
$hilit = implode('|', $hilit);
// Do not allow *only* wildcard being used for hilight
$hilit = (strspn($hilit, '*') === strlen($hilit)) ? '' : $hilit;
$u_hilit = urlencode(htmlspecialchars_decode(str_replace('|', ' ', $hilit)));
$u_search_album = implode('&aid%5B%5D=', $search_album);
$u_search = phpbb_gallery_url::append_sid('search', $u_sort_param);
$u_search .= ($search_id) ? '&search_id=' . $search_id : '';
//@todo:
$u_search .= ($search_terms != 'all') ? '&terms=' . $search_terms : '';
$u_search .= ($u_hilit) ? '&keywords=' . urlencode(htmlspecialchars_decode($keywords)) : '';
$u_search .= ($username) ? '&username=' . urlencode(htmlspecialchars_decode($username)) : '';
$u_search .= ($user_id) ? '&user_id=' . $user_id : '';
$u_search .= ($u_search_album) ? '&aid%5B%5D=' . $u_search_album : '';
$u_search .= (!$search_child) ? '&sc=0' : '';
$u_search .= ($search_fields != 'all') ? '&sf=' . $search_fields : '';
$template->assign_vars(array(
'SEARCH_TITLE' => $l_search_title,
'SEARCH_MATCHES' => $l_search_matches,
'SEARCH_WORDS' => $searchwords,
//@todo: 'IGNORED_WORDS' => (sizeof($search->common_words)) ? implode(' ', $search->common_words) : '',
'PAGINATION' => generate_pagination($u_search, $total_match_count, $images_per_page, $start),
'PAGE_NUMBER' => on_page($total_match_count, $images_per_page, $start),
'TOTAL_MATCHES' => $total_match_count,
'SEARCH_IN_RESULTS' => ($search_id) ? false : true,
'S_SELECT_SORT_DIR' => $s_sort_dir,
'S_SELECT_SORT_KEY' => $s_sort_key,
'S_SELECT_SORT_DAYS' => $s_limit_days,
'S_SEARCH_ACTION' => $u_search,
'U_SEARCH_WORDS' => $u_search,
'SEARCH_IMAGES' => ($search_results == 'image') ? true : false,
'S_THUMBNAIL_SIZE' => phpbb_gallery_config::get('thumbnail_height') + 20 + ((phpbb_gallery_config::get('thumbnail_infoline')) ? phpbb_gallery_constants::THUMBNAIL_INFO_HEIGHT : 0),
));
if ($sql_where)
{
// Search results are images
if ($search_results == 'image')
{
$sql_array = array(
'SELECT' => 'i.*, a.album_name, a.album_status, a.album_user_id',
'FROM' => array(GALLERY_IMAGES_TABLE => 'i'),
'LEFT_JOIN' => array(
array(
'FROM' => array(GALLERY_ALBUMS_TABLE => 'a'),
'ON' => 'a.album_id = i.image_album_id',
),
),
'WHERE' => 'i.image_status <> ' . phpbb_gallery_image::STATUS_ORPHAN . ' AND ' . $sql_where,
'ORDER_BY' => $sql_order,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$rowset = array();
while ($row = $db->sql_fetchrow($result))
{
if ($search_id == 'contests')
{
$rowset[$row['image_id']] = $row;
}
else
{
$rowset[] = $row;
}
}
$db->sql_freeresult($result);
$columns_per_page = ($search_id == 'contests') ? phpbb_gallery_contest::NUM_IMAGES : phpbb_gallery_config::get('album_columns');
$init_block = true;
if ($search_id == 'contests')
{
foreach ($contest_images as $contest => $contest_data)
{
$num = 0;
$template->assign_block_vars('imageblock', array(
'U_BLOCK' => phpbb_gallery_url::append_sid('album', 'album_id=' . $contest_data['album_id'] . '&sk=ra&sd=d'),
'BLOCK_NAME' => sprintf($user->lang['CONTEST_WINNERS_OF'], $contest_data['album_name']),
'S_CONTEST_BLOCK' => true,
'S_COL_WIDTH' => '33%',
'S_COLS' => 3,
));
foreach ($contest_data['images'] as $contest_image)
{
if (($num % phpbb_gallery_contest::NUM_IMAGES) == 0)
{
$template->assign_block_vars('imageblock.imagerow', array());
}
if (!empty($rowset[$contest_image]))
{
phpbb_gallery_image::assign_block('imageblock.imagerow.image', $rowset[$contest_image], $rowset[$contest_image]['album_status'], phpbb_gallery_config::get('search_display'), $rowset[$contest_image]['album_user_id']);
$num++;
}
}
while (($num % phpbb_gallery_contest::NUM_IMAGES) > 0)
{
$template->assign_block_vars('imageblock.imagerow.no_image', array());
$num++;
}
}
}
else
{
for ($i = 0, $end = count($rowset); $i < $end; $i += $columns_per_page)
{
if ($init_block)
{
$template->assign_block_vars('imageblock', array(
'U_BLOCK' => $u_search,
'BLOCK_NAME' => ($l_search_title) ? $l_search_title : $l_search_matches,
'S_COL_WIDTH' => (100 / phpbb_gallery_config::get('album_columns')) . '%',
'S_COLS' => phpbb_gallery_config::get('album_columns'),
));
$init_block = false;
}
$template->assign_block_vars('imageblock.imagerow', array());
for ($j = $i, $end_columns = ($i + $columns_per_page); $j < $end_columns; $j++)
{
if ($j >= $end)
{
$template->assign_block_vars('imageblock.imagerow.noimage', array());
continue;
}
// Assign the image to the template-block
phpbb_gallery_image::assign_block('imageblock.imagerow.image', $rowset[$j], $rowset[$j]['album_status'], phpbb_gallery_config::get('search_display'), $rowset[$j]['album_user_id']);
}
}
}
}
// Search results are comments
else
{
$sql_array = array(
'SELECT' => 'c.*, i.*',
'FROM' => array(GALLERY_COMMENTS_TABLE => 'c'),
'LEFT_JOIN' => array(
array(
'FROM' => array(GALLERY_IMAGES_TABLE => 'i'),
'ON' => 'c.comment_image_id = i.image_id',
),
),
'WHERE' => $sql_where,
'ORDER_BY' => $sql_order,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
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('comment', "album_id=$album_id&image_id=$image_id&mode=delete&comment_id=" . $commentrow['comment_id']) : '',
'U_QUOTE' => (phpbb_gallery::$auth->acl_check('c_post', $album_id)) ? phpbb_gallery_url::append_sid('comment', "album_id=$album_id&image_id=$image_id&mode=add&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('comment', "album_id=$album_id&image_id=$image_id&mode=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'),
'QUOTE_IMG' => $user->img('icon_post_quote', 'QUOTE_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' /*'a_search'*/);
if (!$s_albums)
{
trigger_error('NO_SEARCH');
}
// Prevent undefined variable on build_hidden_fields()
$s_hidden_fields = array('e' => 0);
if (phpbb_gallery::$display_popup)
{
$s_hidden_fields['display'] = 'popup';
}
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), // We force no ?sid= appending by using 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,
));
page_header($user->lang['GALLERY'] . ' • ' . $user->lang['SEARCH'], false);
$template->set_filenames(array(
'body' => 'gallery/search_body.html')
);
page_footer();
?>