mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-07 01:03:31 +02:00
Feature Issue ID 0000601: Filter all public pages with only recent elements
It's a draft of the feature witch allows to show only recent elements. Development are not finished. Queries and special pages (best rates, tags, etc.) are not modified. Only main php files about images and categories are ok. Before to continue, I prefer to determinate a solution between modify cache implementation or hide counters. Go to http://forum.phpwebgallery.net/viewtopic.php?pid=50015#p50015 git-svn-id: http://piwigo.org/svn/trunk@1648 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -54,7 +54,14 @@ SELECT
|
||||
FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
|
||||
ON id = cat_id and user_id = '.$user['id'].'
|
||||
WHERE id_uppercat '.
|
||||
(!isset($page['category']) ? 'is NULL' : '= '.$page['category']).'
|
||||
(!isset($page['category']) ? 'is NULL' : '= '.$page['category']);
|
||||
if ($page['filter_mode'])
|
||||
{
|
||||
$query.= '
|
||||
AND max_date_last > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
|
||||
}
|
||||
$query.= '
|
||||
ORDER BY rank
|
||||
;';
|
||||
}
|
||||
@@ -77,9 +84,22 @@ while ($row = mysql_fetch_assoc($result))
|
||||
$query = '
|
||||
SELECT image_id
|
||||
FROM '.CATEGORIES_TABLE.' AS c INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic
|
||||
ON ic.category_id = c.id
|
||||
ON ic.category_id = c.id';
|
||||
if ($page['filter_mode'])
|
||||
{
|
||||
$query.= '
|
||||
INNER JOIN '.IMAGES_TABLE.' AS i on ic.image_id = i.id ';
|
||||
}
|
||||
$query.= '
|
||||
WHERE uppercats REGEXP \'(^|,)'.$row['id'].'(,|$)\'
|
||||
AND c.id NOT IN ('.$user['forbidden_categories'].')
|
||||
AND c.id NOT IN ('.$user['forbidden_categories'].')';
|
||||
if ($page['filter_mode'])
|
||||
{
|
||||
$query.= '
|
||||
AND i.date_available > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
|
||||
}
|
||||
$query.= '
|
||||
ORDER BY RAND()
|
||||
LIMIT 0,1
|
||||
;';
|
||||
@@ -93,10 +113,17 @@ SELECT image_id
|
||||
{ // searching a random representant among representant of sub-categories
|
||||
$query = '
|
||||
SELECT representative_picture_id
|
||||
FROM '.CATEGORIES_TABLE.'
|
||||
FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
|
||||
ON id = cat_id and user_id = '.$user['id'].'
|
||||
WHERE uppercats REGEXP \'(^|,)'.$row['id'].'(,|$)\'
|
||||
AND id NOT IN ('.$user['forbidden_categories'].')
|
||||
AND representative_picture_id IS NOT NULL
|
||||
AND representative_picture_id IS NOT NULL';
|
||||
if ($page['filter_mode'])
|
||||
{
|
||||
$query.= '
|
||||
AND max_date_last > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
|
||||
}
|
||||
$query.= '
|
||||
ORDER BY RAND()
|
||||
LIMIT 0,1
|
||||
;';
|
||||
|
||||
@@ -46,8 +46,14 @@ if (count($selection) > 0)
|
||||
$query = '
|
||||
SELECT *
|
||||
FROM '.IMAGES_TABLE.'
|
||||
WHERE id IN ('.implode(',', $selection).')
|
||||
;';
|
||||
WHERE id IN ('.implode(',', $selection).')';
|
||||
if ($page['filter_mode'])
|
||||
{
|
||||
$query.= '
|
||||
AND date_available > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
|
||||
}
|
||||
$query.= ';';
|
||||
$result = pwg_query($query);
|
||||
while ($row = mysql_fetch_assoc($result))
|
||||
{
|
||||
|
||||
@@ -67,15 +67,25 @@ SELECT ';
|
||||
$query.= '
|
||||
FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
|
||||
ON id = cat_id and user_id = '.$user['id'];
|
||||
if (!$user['expand'])
|
||||
if ($page['filter_mode'])
|
||||
{
|
||||
$query.= '
|
||||
WHERE (id_uppercat is NULL';
|
||||
if (isset($page['category']))
|
||||
where max_date_last > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Always expand when filter_mode is activated
|
||||
if (!$user['expand'])
|
||||
{
|
||||
$query.= ' OR id_uppercat IN ('.$page['uppercats'].')';
|
||||
$query.= '
|
||||
WHERE (id_uppercat is NULL';
|
||||
if (isset($page['category']))
|
||||
{
|
||||
$query.= ' OR id_uppercat IN ('.$page['uppercats'].')';
|
||||
}
|
||||
$query.= ')';
|
||||
}
|
||||
$query.= ')';
|
||||
}
|
||||
$query.= '
|
||||
;';
|
||||
|
||||
+21
-16
@@ -167,22 +167,27 @@ $template->assign_block_vars(
|
||||
'TITLE' => $lang['random_cat_hint'],
|
||||
'NAME' => $lang['random_cat']
|
||||
));
|
||||
// recent pics
|
||||
$template->assign_block_vars(
|
||||
'special_cat',
|
||||
array(
|
||||
'URL' => make_index_url(array('section' => 'recent_pics')),
|
||||
'TITLE' => $lang['recent_pics_cat_hint'],
|
||||
'NAME' => $lang['recent_pics_cat']
|
||||
));
|
||||
// recent cats
|
||||
$template->assign_block_vars(
|
||||
'special_cat',
|
||||
array(
|
||||
'URL' => make_index_url(array('section' => 'recent_cats')),
|
||||
'TITLE' => $lang['recent_cats_cat_hint'],
|
||||
'NAME' => $lang['recent_cats_cat']
|
||||
));
|
||||
|
||||
// Not recent menu when filter is activated
|
||||
if (!$page['filter_mode'])
|
||||
{
|
||||
// recent pics
|
||||
$template->assign_block_vars(
|
||||
'special_cat',
|
||||
array(
|
||||
'URL' => make_index_url(array('section' => 'recent_pics')),
|
||||
'TITLE' => $lang['recent_pics_cat_hint'],
|
||||
'NAME' => $lang['recent_pics_cat']
|
||||
));
|
||||
// recent cats
|
||||
$template->assign_block_vars(
|
||||
'special_cat',
|
||||
array(
|
||||
'URL' => make_index_url(array('section' => 'recent_cats')),
|
||||
'TITLE' => $lang['recent_cats_cat_hint'],
|
||||
'NAME' => $lang['recent_cats_cat']
|
||||
));
|
||||
}
|
||||
|
||||
// calendar
|
||||
$template->assign_block_vars(
|
||||
|
||||
Reference in New Issue
Block a user