Вход Регистрация
Файл: 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(=> $user->lang['ALL_IMAGES'], => $user->lang['1_DAY'], => $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_charutf8_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($sql100);

        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'), falsetrue) . ' AND image_status <> ' phpbb_gallery_image::STATUS_UNAPPROVED ')
                            OR ' 
$db->sql_in_set('image_album_id'phpbb_gallery::$auth->acl_album_ids('m_status'), falsetrue) . ')
                    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'), falsetrue) . ' AND image_status <> ' phpbb_gallery_image::STATUS_UNAPPROVED ')
                            OR ' 
$db->sql_in_set('image_album_id'phpbb_gallery::$auth->acl_album_ids('m_status'), falsetrue) . ')
                    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'), falsetrue) . ' 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'), falsetrue) . ')
                        AND ' 
$db->sql_in_set('i.image_album_id'phpbb_gallery::$auth->acl_album_ids('c_read'), falsetrue),
                    
'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'), falsetrue) . ' 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'), falsetrue) . ')
                    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'))), falsetrue) . ' 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($sqlphpbb_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'), falsetrue) . ' 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'), falsetrue) . ')
                    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'), falsetrue) . ' 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'), falsetrue) . ')
                ' 
. (($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('+''-''|''('')''&quot;'), ' '$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('&amp;aid%5B%5D='$search_album);

    
$u_search phpbb_gallery_url::append_sid('search'$u_sort_param);
    
$u_search .= ($search_id) ? '&amp;search_id=' $search_id '';
    
//@todo: 
    
$u_search .= ($search_terms != 'all') ? '&amp;terms=' $search_terms '';
    
$u_search .= ($u_hilit) ? '&amp;keywords=' urlencode(htmlspecialchars_decode($keywords)) : '';
    
$u_search .= ($username) ? '&amp;username=' urlencode(htmlspecialchars_decode($username)) : '';
    
$u_search .= ($user_id) ? '&amp;user_id=' $user_id '';
    
$u_search .= ($u_search_album) ? '&amp;aid%5B%5D=' $u_search_album '';
    
$u_search .= (!$search_child) ? '&amp;sc=0' '';
    
$u_search .= ($search_fields != 'all') ? '&amp;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'] . '&amp;sk=ra&amp;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&amp;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&amp;image_id=$image_id&amp;mode=delete&amp;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&amp;image_id=$image_id&amp;mode=add&amp;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&amp;image_id=$image_id&amp;mode=edit&amp;comment_id=" $commentrow['comment_id']) : '',
                    
'U_INFO'        => ($auth->acl_get('a_')) ? phpbb_gallery_url::append_sid('mcp''mode=whois&amp;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(falsefalsefalse'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_param2);
        
$s_hidden_fields[$url_param[0]] = $url_param[1];
    }
}

$template->assign_vars(array(
    
'S_SEARCH_ACTION'        => phpbb_gallery_url::append_sid('search'falsetrue0), // 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'] . ' &bull; ' $user->lang['SEARCH'], false);

$template->set_filenames(array(
    
'body' => 'gallery/search_body.html')
);

page_footer();

?>
Онлайн: 0
Реклама