aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormistic100 <mistic@piwigo.org>2012-10-04 15:03:55 +0000
committermistic100 <mistic@piwigo.org>2012-10-04 15:03:55 +0000
commitb1cec7bf86b84296acc97ffed090bf1686964420 (patch)
tree9525c06648ec2cc90a401efc06974a0b24198294
parentb5f020ee66b13bce8275a4d64faf8710c362a6d1 (diff)
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
-rw-r--r--include/category_cats.inc.php58
-rw-r--r--include/functions_url.inc.php6
-rw-r--r--include/section_init.inc.php47
-rw-r--r--index.php23
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');