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
This commit is contained in:
parent
b5f020ee66
commit
b1cec7bf86
4 changed files with 61 additions and 73 deletions
|
@ -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');
|
||||
?>
|
|
@ -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++;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
23
index.php
23
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');
|
||||
|
|
Loading…
Reference in a new issue