diff options
author | plegall <plg@piwigo.org> | 2006-02-12 21:52:16 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2006-02-12 21:52:16 +0000 |
commit | dac7decfb5d01ff27797ba3ba39ea8af3766b89e (patch) | |
tree | 2191078267800600bc7c195f3626ee3436572990 /include/functions_category.inc.php | |
parent | 2dc2eb8630a286ac291605901d7384840a0202a9 (diff) |
improvement: $page['where'] string replaced by $page['items'].
$page['where'] was an SQL clause used to retrieve pictures in #images
table. $page['items'] is the list of picture ids of the current section.
improvement: function initialize_category replaced by dedicated included PHP
script include/section_init.inc.php. Code was refactored to improve
readibility and maintenability. $page['navigation_bar'] is now build in
category.php instead of initialize_category function. Function check_cat_id
was also replaced by a piece of code in the new file. The file to include to
display thumbnails from category.php is now set in section_init.inc.php
instead of calculated in category.php.
bug fix: the test for rel="up" link for standard HTML navigation links in
category menu was not working with non numeric categories, such as
"favorites".
improvement: function check_login_authorization removed because useless but
in profile.php.
git-svn-id: http://piwigo.org/svn/trunk@1036 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/functions_category.inc.php')
-rw-r--r-- | include/functions_category.inc.php | 388 |
1 files changed, 10 insertions, 378 deletions
diff --git a/include/functions_category.inc.php b/include/functions_category.inc.php index 351fa1007..30f91dd65 100644 --- a/include/functions_category.inc.php +++ b/include/functions_category.inc.php @@ -53,71 +53,6 @@ function check_restrictions($category_id) } } -/** - * Checks whether the argument is a right parameter category id - * - * The argument is a right parameter if corresponds to one of these : - * - * - is numeric and corresponds to a category in the database - * - equals 'fav' (for favorites) - * - equals 'search' (when the result of a search is displayed) - * - equals 'most_visited' - * - equals 'best_rated' - * - equals 'recent_pics' - * - equals 'recent_cats' - * - equals 'calendar' - * - equals 'list' - * - * The function fills the global var $page['cat'] and returns nothing - * - * @param mixed category id or special category name - * @return void - */ -function check_cat_id( $cat ) -{ - global $page; - - unset( $page['cat'] ); - if ( isset( $cat ) ) - { - if ( isset( $page['plain_structure'][$cat] ) ) - { - $page['cat'] = $cat; - } - else if ( is_numeric( $cat ) ) - { - $query = 'SELECT id'; - $query.= ' FROM '.CATEGORIES_TABLE.' WHERE id = '.$cat.';'; - $result = pwg_query( $query ); - if ( mysql_num_rows( $result ) != 0 ) - { - $page['cat'] = $cat; - } - } - if ( $cat == 'fav' - or $cat == 'most_visited' - or $cat == 'best_rated' - or $cat == 'recent_pics' - or $cat == 'recent_cats' - or $cat == 'calendar' ) - { - $page['cat'] = $cat; - } - if ($cat == 'search' - and isset($_GET['search']) - and is_numeric($_GET['search'])) - { - $page['cat'] = $cat; - } - if ($cat == 'list' - and isset($_GET['list']) - and preg_match('/^\d+(,\d+)*$/', $_GET['list'])) - { - $page['cat'] = 'list'; - } - } -} - function get_categories_menu() { global $page,$user; @@ -332,319 +267,6 @@ function get_category_preferred_image_orders() ); } - -// initialize_category initializes ;-) the variables in relation -// with category : -// 1. calculation of the number of pictures in the category -// 2. determination of the SQL query part to ask to find the right category -// $page['where'] is not the same if we are in -// - simple category -// - search result -// - favorites displaying -// - most visited pictures -// - best rated pictures -// - recent pictures -// - defined list (used for random) -// 3. determination of the title of the page -// 4. creation of the navigation bar -function initialize_category( $calling_page = 'category' ) -{ - pwg_debug( 'start initialize_category' ); - global $page,$lang,$user,$conf; - - if ( isset( $page['cat'] ) ) - { - // $page['nb_image_page'] is the number of picture to display on this page - // By default, it is the same as the $user['nb_image_page'] - $page['nb_image_page'] = $user['nb_image_page']; - // $url is used to create the navigation bar - $url = PHPWG_ROOT_PATH.'category.php?cat='.$page['cat']; - if ( isset($page['expand']) ) $url.= '&expand='.$page['expand']; - // simple category - if ( is_numeric( $page['cat'] ) ) - { - $result = get_cat_info( $page['cat'] ); - $page['comment'] = $result['comment']; - $page['cat_dir'] = $result['dir']; - $page['cat_name'] = $result['name']; - $page['cat_nb_images'] = $result['nb_images']; - $page['cat_site_id'] = $result['site_id']; - $page['cat_uploadable'] = $result['uploadable']; - $page['cat_commentable'] = $result['commentable']; - $page['cat_id_uppercat'] = $result['id_uppercat']; - $page['uppercats'] = $result['uppercats']; - $page['title'] = - get_cat_display_name($page['cat_name'], - '', - false); - $page['where'] = ' WHERE category_id = '.$page['cat']; - } - else - { - if ($page['cat'] == 'search' - or $page['cat'] == 'most_visited' - or $page['cat'] == 'recent_pics' - or $page['cat'] == 'recent_cats' - or $page['cat'] == 'best_rated' - or $page['cat'] == 'calendar' - or $page['cat'] == 'list') - { - // we must not show pictures of a forbidden category - if ( $user['forbidden_categories'] != '' ) - { - $forbidden = ' category_id NOT IN '; - $forbidden.= '('.$user['forbidden_categories'].')'; - } - } - // search result - if ( $page['cat'] == 'search' ) - { - $page['title'] = $lang['search_result']; - if ( $calling_page == 'picture' ) - { - $page['title'].= ' : <span style="font-style:italic;">'; - $page['title'].= $_GET['search']."</span>"; - } - - $page['where'] = 'WHERE '.get_sql_search_clause($_GET['search']); - - if (isset($forbidden)) - { - $page['where'].= "\n AND ".$forbidden; - } - - $query = ' -SELECT COUNT(DISTINCT(id)) AS nb_total_images - FROM '.IMAGES_TABLE.' - INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id - '.$page['where'].' -;'; - $url.= '&search='.$_GET['search']; - } - // favorites displaying - else if ( $page['cat'] == 'fav' ) - { - check_user_favorites(); - - $page['title'] = $lang['favorites']; - - $page['where'] = ', '.FAVORITES_TABLE.' AS fav'; - $page['where'].= ' WHERE user_id = '.$user['id']; - $page['where'].= ' AND fav.image_id = id'; - - $query = 'SELECT COUNT(*) AS nb_total_images'; - $query.= ' FROM '.FAVORITES_TABLE; - $query.= ' WHERE user_id = '.$user['id']; - $query.= ';'; - } - // pictures within the short period - else if ( $page['cat'] == 'recent_pics' ) - { - $page['title'] = $lang['recent_pics_cat']; - // We must find the date corresponding to : - // today - $conf['periode_courte'] - $date = time() - 60*60*24*$user['recent_period']; - $page['where'] = " WHERE date_available > '"; - $page['where'].= date( 'Y-m-d', $date )."'"; - if ( isset( $forbidden ) ) $page['where'].= ' AND '.$forbidden; - - $query = ' -SELECT COUNT(DISTINCT(id)) AS nb_total_images - FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic - ON id = ic.image_id - '.$page['where'].' -;'; - } - // categories containing recent pictures - else if ( $page['cat'] == 'recent_cats' ) - { - $page['title'] = $lang['recent_cats_cat']; - $page['cat_nb_images'] = 0; - } - // most visited pictures - else if ( $page['cat'] == 'most_visited' ) - { - $page['title'] = $conf['top_number'].' '.$lang['most_visited_cat']; - - $page['where'] = 'WHERE hit > 0'; - if (isset($forbidden)) - { - $page['where'] .= "\n".' AND '.$forbidden; - } - - $conf['order_by'] = ' ORDER BY hit DESC, file ASC'; - - // $page['cat_nb_images'] equals $conf['top_number'] unless there - // are less visited items - $query =' -SELECT COUNT(DISTINCT(id)) AS count - FROM '.IMAGES_TABLE.' - INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id - '.$page['where'].' -;'; - $row = mysql_fetch_array(pwg_query($query)); - if ($row['count'] < $conf['top_number']) - { - $page['cat_nb_images'] = $row['count']; - } - else - { - $page['cat_nb_images'] = $conf['top_number']; - } - unset($query); - - if ( isset( $page['start'] ) - and ($page['start']+$user['nb_image_page']>=$conf['top_number'])) - { - $page['nb_image_page'] = $conf['top_number'] - $page['start']; - } - } - else if ( $page['cat'] == 'calendar' ) - { - $page['cat_nb_images'] = 0; - $page['title'] = $lang['calendar']; - if (isset($_GET['year']) - and preg_match('/^\d+$/', $_GET['year'])) - { - $page['calendar_year'] = (int)$_GET['year']; - } - if (isset($_GET['month']) - and preg_match('/^(\d+)\.(\d{2})$/', $_GET['month'], $matches)) - { - $page['calendar_year'] = (int)$matches[1]; - $page['calendar_month'] = (int)$matches[2]; - } - if (isset($_GET['day']) - and preg_match('/^(\d+)\.(\d{2})\.(\d{2})$/', - $_GET['day'], - $matches)) - { - $page['calendar_year'] = (int)$matches[1]; - $page['calendar_month'] = (int)$matches[2]; - $page['calendar_day'] = (int)$matches[3]; - } - if (isset($page['calendar_year'])) - { - $page['title'] .= ' ('; - if (isset($page['calendar_day'])) - { - if ($page['calendar_year'] >= 1970) - { - $unixdate = mktime(0,0,0, - $page['calendar_month'], - $page['calendar_day'], - $page['calendar_year']); - $page['title'].= $lang['day'][date("w", $unixdate)]; - } - $page['title'].= ' '.$page['calendar_day'].', '; - } - if (isset($page['calendar_month'])) - { - $page['title'] .= $lang['month'][$page['calendar_month']].' '; - } - $page['title'] .= $page['calendar_year']; - $page['title'] .= ')'; - } - - $page['where'] = 'WHERE '.$conf['calendar_datefield'].' IS NOT NULL'; - if (isset($forbidden)) - { - $page['where'].= ' AND '.$forbidden; - } - } - else if ($page['cat'] == 'best_rated') - { - $page['title'] = $conf['top_number'].' '.$lang['best_rated_cat']; - - $page['where'] = ' WHERE average_rate IS NOT NULL'; - - if (isset($forbidden)) - { - $page['where'].= ' AND '.$forbidden; - } - - $conf['order_by'] = ' ORDER BY average_rate DESC, id ASC'; - - // $page['cat_nb_images'] equals $conf['top_number'] unless there - // are less rated items - $query =' -SELECT COUNT(DISTINCT(id)) AS count - FROM '.IMAGES_TABLE.' - INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id - '.$page['where'].' -;'; - $row = mysql_fetch_array(pwg_query($query)); - if ($row['count'] < $conf['top_number']) - { - $page['cat_nb_images'] = $row['count']; - } - else - { - $page['cat_nb_images'] = $conf['top_number']; - } - unset($query); - - - if (isset($page['start']) - and ($page['start']+$user['nb_image_page']>=$conf['top_number'])) - { - $page['nb_image_page'] = $conf['top_number'] - $page['start']; - } - } - else if ($page['cat'] == 'list') - { - $page['title'] = $lang['random_cat']; - - $page['where'] = 'WHERE 1=1'; - if (isset($forbidden)) - { - $page['where'].= ' AND '.$forbidden; - } - $page['where'].= ' AND image_id IN ('.$_GET['list'].')'; - $page['cat_nb_images'] = count(explode(',', $_GET['list'])); - - $url.= '&list='.$_GET['list']; - } - - if (isset($query)) - { - $result = pwg_query( $query ); - $row = mysql_fetch_array( $result ); - $page['cat_nb_images'] = $row['nb_total_images']; - } - } - if ( $calling_page == 'category' ) - { - $page['navigation_bar'] = - create_navigation_bar( $url, $page['cat_nb_images'], $page['start'], - $user['nb_image_page'], 'back' ); - } - - if ($page['cat'] != 'most_visited' and $page['cat'] != 'best_rated') - { - $available_image_orders = get_category_preferred_image_orders(); - - $order_idx=0; - if ( isset($_COOKIE['pwg_image_order']) ) - { - $order_idx = $_COOKIE['pwg_image_order']; - } - - if ( $order_idx > 0 ) - { - $order = $available_image_orders[$order_idx][1]; - $conf['order_by'] = str_replace('ORDER BY ', 'ORDER BY '.$order.',', - $conf['order_by'] ); - } - } - } - else - { - $page['title'] = $lang['no_category']; - } - pwg_debug( 'end initialize_category' ); -} - function display_select_categories($categories, $selecteds, $blockname, @@ -735,4 +357,14 @@ function global_rank_compare($a, $b) { return strnatcasecmp($a['global_rank'], $b['global_rank']); } + +function rank_compare($a, $b) +{ + if ($a['rank'] == $b['rank']) + { + return 0; + } + + return ($a['rank'] < $b['rank']) ? -1 : 1; +} ?> |