aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrub <rub@piwigo.org>2006-12-10 22:48:32 +0000
committerrub <rub@piwigo.org>2006-12-10 22:48:32 +0000
commit222afe2caa357d6d31efdef87e2444d3e042880d (patch)
tree12386628081ccc334971eb7a8cf3456386e110d1
parent906d9bd7951a77356b9caa04073a7d1c02d44bef (diff)
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
-rw-r--r--include/category_cats.inc.php39
-rw-r--r--include/category_default.inc.php10
-rw-r--r--include/functions_category.inc.php20
-rwxr-xr-xinclude/menubar.inc.php37
-rw-r--r--index.php29
-rw-r--r--language/en_UK.iso-8859-1/common.lang.php2
-rw-r--r--language/fr_FR.iso-8859-1/common.lang.php4
-rw-r--r--template/yoga/icon/start_filter_mode.pngbin0 -> 1064 bytes
-rw-r--r--template/yoga/icon/stop_filter_mode.pngbin0 -> 1127 bytes
-rw-r--r--template/yoga/index.tpl7
10 files changed, 118 insertions, 30 deletions
diff --git a/include/category_cats.inc.php b/include/category_cats.inc.php
index 83f4b7209..36f19ca49 100644
--- a/include/category_cats.inc.php
+++ b/include/category_cats.inc.php
@@ -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
;';
diff --git a/include/category_default.inc.php b/include/category_default.inc.php
index b1f7bc46a..ae2dc4dce 100644
--- a/include/category_default.inc.php
+++ b/include/category_default.inc.php
@@ -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))
{
diff --git a/include/functions_category.inc.php b/include/functions_category.inc.php
index 706d9c401..8113064d6 100644
--- a/include/functions_category.inc.php
+++ b/include/functions_category.inc.php
@@ -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.= '
;';
diff --git a/include/menubar.inc.php b/include/menubar.inc.php
index b84d9f09e..79643ba26 100755
--- a/include/menubar.inc.php
+++ b/include/menubar.inc.php
@@ -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(
diff --git a/index.php b/index.php
index 050fdf40e..e6a184c5f 100644
--- a/index.php
+++ b/index.php
@@ -106,6 +106,35 @@ if (isset($page['cat_nb_images']) and $page['cat_nb_images'] > 0)
$template_title.= ' ['.$page['cat_nb_images'].']';
}
+if (isset($_GET['filter_mode']))
+{
+ $page['filter_mode'] = ($_GET['filter_mode'] == 'start');
+ pwg_set_session_var('filter_mode', $page['filter_mode']);
+}
+else
+{
+ $page['filter_mode'] = pwg_get_session_var('filter_mode', false);
+}
+
+if ($page['filter_mode'])
+{
+ $template->assign_block_vars(
+ 'stop_filter_mode',
+ array(
+ 'URL' => add_url_params(duplicate_index_url(array(), array('start')), array('filter_mode' => 'stop'))
+ )
+ );
+}
+else
+{
+ $template->assign_block_vars(
+ 'start_filter_mode',
+ array(
+ 'URL' => add_url_params(duplicate_index_url(array(), array('start')), array('filter_mode' => 'start'))
+ )
+ );
+}
+
if (!isset($page['chronology_field']))
{
$chronology_params =
diff --git a/language/en_UK.iso-8859-1/common.lang.php b/language/en_UK.iso-8859-1/common.lang.php
index d1f468e5b..3eb29ba29 100644
--- a/language/en_UK.iso-8859-1/common.lang.php
+++ b/language/en_UK.iso-8859-1/common.lang.php
@@ -490,6 +490,8 @@ $lang['maxheight'] = 'Maximum height of the pictures';
$lang['maxheight_error'] = 'Maximum height must be a number superior to 50';
$lang['maxwidth'] = 'Maximum width of the pictures';
$lang['maxwidth_error'] = 'Maximum width must be a number superior to 50';
+$lang['start_filter_mode_hint'] = 'displays only recent elements';
+$lang['stop_filter_mode_hint'] = 'return to display all elements';
$lang['mode_created_hint'] = 'displays a calendar by creation date';
$lang['mode_normal_hint'] = 'return to normal view mode';
$lang['mode_posted_hint'] = 'displays a calendar by date posted';
diff --git a/language/fr_FR.iso-8859-1/common.lang.php b/language/fr_FR.iso-8859-1/common.lang.php
index 8b12e8b2e..ced90e8ac 100644
--- a/language/fr_FR.iso-8859-1/common.lang.php
+++ b/language/fr_FR.iso-8859-1/common.lang.php
@@ -491,7 +491,9 @@ $lang['maxheight_error'] = 'La hauteur maximum des images doit être supérieure à
$lang['maxwidth'] = 'Largeur maximum des images';
$lang['maxwidth_error'] = 'La largeur des images doit être supérieure à 50';
$lang['mode_created_hint'] = 'afficher un calendrier par date de création';
-$lang['mode_normal_hint'] = 'retourne à la vue normale';
+$lang['start_filter_mode_hint'] = 'afficher que les éléments récents';
+$lang['stop_filter_mode_hint'] = 'retourner à l\'affichage de tous les éléments';
+$lang['mode_normal_hint'] = 'retourner à la vue normale';
$lang['mode_posted_hint'] = 'afficher un calendrier par date d\'ajout';
$lang['month'][10] = 'Octobre';
$lang['month'][11] = 'Novembre';
diff --git a/template/yoga/icon/start_filter_mode.png b/template/yoga/icon/start_filter_mode.png
new file mode 100644
index 000000000..3d81a4d2e
--- /dev/null
+++ b/template/yoga/icon/start_filter_mode.png
Binary files differ
diff --git a/template/yoga/icon/stop_filter_mode.png b/template/yoga/icon/stop_filter_mode.png
new file mode 100644
index 000000000..1ac3aa0e7
--- /dev/null
+++ b/template/yoga/icon/stop_filter_mode.png
Binary files differ
diff --git a/template/yoga/index.tpl b/template/yoga/index.tpl
index 0eb4baa8e..cb04162fe 100644
--- a/template/yoga/index.tpl
+++ b/template/yoga/index.tpl
@@ -27,6 +27,13 @@
<li><a href="{search_rules.URL}" style="border:none;" onclick="popuphelp(this.href); return false;" title="{lang:Search rules}"><img src="{pwg_root}{themeconf:icon_dir}/search_rules.png" class="button" alt="(?)"></a></li>
<!-- END search_rules -->
+ <!-- BEGIN start_filter_mode -->
+ <li><a href="{start_filter_mode.URL}" title="{lang:start_filter_mode_hint}"><img src="{pwg_root}{themeconf:icon_dir}/start_filter_mode.png" class="button" alt="{lang:start_filter_mode_hint}"></a></li>
+ <!-- END start_filter_mode -->
+ <!-- BEGIN stop_filter_mode -->
+ <li><a href="{stop_filter_mode.URL}" title="{lang:stop_filter_mode_hint}"><img src="{pwg_root}{themeconf:icon_dir}/stop_filter_mode.png" class="button" alt="{lang:stop_filter_mode_hint}"></a></li>
+ <!-- END stop_filter_mode -->
+
<!-- BEGIN mode_normal -->
<li><a href="{mode_normal.URL}" title="{lang:mode_normal_hint}"><img src="{pwg_root}{themeconf:icon_dir}/normal_mode.png" class="button" alt="{lang:mode_normal_hint}"></a></li>
<!-- END mode_normal -->