From b1cec7bf86b84296acc97ffed090bf1686964420 Mon Sep 17 00:00:00 2001 From: mistic100 Date: Thu, 4 Oct 2012 15:03:55 +0000 Subject: feature:2614 pagination on albums return to old fashioned way (one query in category_cats), restoring recent_cats feature and "menubar optimization", rename "starta" into "startcat" git-svn-id: http://piwigo.org/svn/trunk@18462 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/category_cats.inc.php | 58 +++++++++++++++++++++++++++++++++++-------- include/functions_url.inc.php | 6 ++--- include/section_init.inc.php | 47 +++-------------------------------- index.php | 23 ++++++----------- 4 files changed, 61 insertions(+), 73 deletions(-) diff --git a/include/category_cats.inc.php b/include/category_cats.inc.php index b09f4eaec..a3cc2468b 100644 --- a/include/category_cats.inc.php +++ b/include/category_cats.inc.php @@ -27,13 +27,6 @@ * */ -$selection = array_slice( - $page['categories'], - $page['starta'], - $conf['nb_categories_page'] - ); - -$selection = trigger_event('loc_index_categories_selection', $selection); // $user['forbidden_categories'] including with USER_CACHE_CATEGORIES_TABLE $query = ' @@ -48,8 +41,24 @@ SELECT FROM '.CATEGORIES_TABLE.' c INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ucc ON id = cat_id - AND user_id = '.$user['id'].' - WHERE c.id IN('.implode(',', $selection).')'; + AND user_id = '.$user['id']; + +if ('recent_cats' == $page['section']) +{ + $query.= ' + WHERE date_last >= '.pwg_db_get_recent_period_expression($user['recent_period']); +} +else +{ + $query.= ' + WHERE id_uppercat '.(!isset($page['category']) ? 'is NULL' : '= '.$page['category']['id']); +} + +$query.= ' + '.get_sql_condition_FandF( + array('visible_categories' => 'id'), + 'AND' + ); if ('recent_cats' != $page['section']) { @@ -60,13 +69,24 @@ if ('recent_cats' != $page['section']) $query.= ' ;'; -$result = pwg_query($query); +$categories_sql = hash_from_query($query, 'id'); + +$page['total_categories'] = count($categories_sql); + +$categories_sql = array_slice( + array_values($categories_sql), + $page['startcat'], + $conf['nb_categories_page'] + ); + +$categories_sql = trigger_event('loc_index_categories_selection', $categories_sql); + $categories = array(); $category_ids = array(); $image_ids = array(); $user_representative_updates_for = array(); -while ($row = pwg_db_fetch_assoc($result)) +foreach ($categories_sql as $row) { $row['is_child_date_last'] = @$row['max_date_last']>@$row['date_last']; @@ -374,6 +394,22 @@ if (count($categories) > 0) ) ); $template->assign_var_from_handle('CATEGORIES', 'index_category_thumbnails'); + + // navigation bar + $page['cats_navigation_bar'] = array(); + if ($page['total_categories'] > $conf['nb_categories_page']) + { + $page['cats_navigation_bar'] = create_navigation_bar( + duplicate_index_url(array(), array('startcat')), + $page['total_categories'], + $page['startcat'], + $conf['nb_categories_page'], + true, 'startcat' + ); + } + + $template->assign('cats_navbar', $page['cats_navigation_bar'] ); } + pwg_debug('end include/category_cats.inc.php'); ?> \ No newline at end of file diff --git a/include/functions_url.inc.php b/include/functions_url.inc.php index 7a3853e25..a7bb17dd3 100644 --- a/include/functions_url.inc.php +++ b/include/functions_url.inc.php @@ -458,7 +458,7 @@ function parse_section_url( $tokens, &$next_token) and strpos($tokens[$current_token], 'created-')!==0 and strpos($tokens[$current_token], 'posted-')!==0 and strpos($tokens[$next_token], 'start-')!==0 - and strpos($tokens[$next_token], 'starta-')!==0 + and strpos($tokens[$next_token], 'startcat-')!==0 and $tokens[$current_token] != 'flat') { if (empty($maybe_permalinks)) @@ -652,9 +652,9 @@ function parse_well_known_params_url($tokens, &$i) { $page['start'] = $matches[1]; } - elseif (preg_match('/^starta-(\d+)/', $tokens[$i], $matches)) + elseif (preg_match('/^startcat-(\d+)/', $tokens[$i], $matches)) { - $page['starta'] = $matches[1]; + $page['startcat'] = $matches[1]; } $i++; } diff --git a/include/section_init.inc.php b/include/section_init.inc.php index dc58b9a2e..138b16cec 100644 --- a/include/section_init.inc.php +++ b/include/section_init.inc.php @@ -41,11 +41,9 @@ // 'start' => 24 // ); -// exemple of dynamic nb_categories_page (%2 for nice display) -// $conf['nb_categories_page'] = 2*round($user['nb_image_page']/4); -$page['items'] = $page['categories'] = array(); -$page['start'] = $page['starta'] = 0; +$page['items'] = array(); +$page['start'] = $page['startcat'] = 0; // some ISPs set PATH_INFO to empty string or to SCRIPT_FILENAME while in the // default apache implementation it is not set @@ -254,7 +252,7 @@ if ('categories' == $page['section']) // GET IMAGES LIST if ( - $page['starta'] == 0 and + $page['startcat'] == 0 and (!isset($page['chronology_field'])) and ( (isset($page['category'])) or @@ -317,45 +315,6 @@ SELECT DISTINCT(image_id) $page['items'] = array_from_query($query, 'image_id'); } //otherwise the calendar will requery all subitems - - // GET CATEGORIES LIST - if ( script_basename()=='index' - and 0==$page['start'] - and !isset($page['flat']) - and !isset($page['chronology_field']) - and ('recent_cats'==$page['section'] or 'categories'==$page['section']) - and (!isset($page['category']['count_categories']) or $page['category']['count_categories']>0 ) - ) - { - $query = ' -SELECT c.id - FROM '.CATEGORIES_TABLE.' c - INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ucc - ON id = cat_id - AND user_id = '.$user['id']; - - if ('recent_cats' == $page['section']) - { - $query.= ' - WHERE date_last >= '.pwg_db_get_recent_period_expression($user['recent_period']); - } - else - { - $query.= ' - WHERE id_uppercat '.(!isset($page['category']) ? 'is NULL' : '= '.$page['category']['id']); - } - - $query.= ' - '.get_sql_condition_FandF( - array('visible_categories' => 'id'), - 'AND' - ); - - $query.= ' - ;'; - - $page['categories'] = array_from_query($query, 'id'); - } } // special sections else diff --git a/index.php b/index.php index 12797cc0b..3f1848504 100644 --- a/index.php +++ b/index.php @@ -83,20 +83,7 @@ if (count($page['items']) > $page['nb_image_page']) ); } -$page['cats_navigation_bar'] = array(); -if (count($page['categories']) > $conf['nb_categories_page']) -{ - $page['cats_navigation_bar'] = create_navigation_bar( - duplicate_index_url(array(), array('starta')), - count($page['categories']), - $page['starta'], - $conf['nb_categories_page'], - true, 'starta' - ); -} - -$template->assign( 'thumb_navbar', $page['navigation_bar'] ); -$template->assign( 'cats_navbar', $page['cats_navigation_bar'] ); +$template->assign('thumb_navbar', $page['navigation_bar'] ); // caddie filling :-) if (isset($_GET['caddie'])) @@ -298,10 +285,16 @@ if ( isset($page['category']['count_categories']) and $page['category']['count_c } //------------------------------------------------------ main part : thumbnails -if ( !empty($page['categories']) ) +if ( 0==$page['start'] + and !isset($page['flat']) + and !isset($page['chronology_field']) + and ('recent_cats'==$page['section'] or 'categories'==$page['section']) + and (!isset($page['category']['count_categories']) or $page['category']['count_categories']>0 ) +) { include(PHPWG_ROOT_PATH.'include/category_cats.inc.php'); } + if ( !empty($page['items']) ) { include(PHPWG_ROOT_PATH.'include/category_default.inc.php'); -- cgit v1.2.3