aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 -->