aboutsummaryrefslogtreecommitdiffstats
path: root/include/filter.inc.php
diff options
context:
space:
mode:
authorrub <rub@piwigo.org>2006-12-21 21:38:20 +0000
committerrub <rub@piwigo.org>2006-12-21 21:38:20 +0000
commitcab8f98c4ab88a0ad05f2359099c883675319084 (patch)
treea8224615d63c1330fd8744e3abd5195eb5763476 /include/filter.inc.php
parenta7ce26153185c274a08fb52b07402c8afba6f128 (diff)
Feature Issue ID 0000601: Filter all public pages with only recent elements
It's a finalized version. Obsolete code of draft are removed. You can filter categories and images with recent date period on your screen selection. In the future, filter could be easy done on other type data (plugin?) You can flat categories and sub-categories with a recent date period of your choice. Next, perhaps, a panel to choice recent date for the 2 features. On draft, there have problem with MySql 5, be careful! Css problem not resolved: - Menu "Categories" is bad centered - Icon on dark too on the top git-svn-id: http://piwigo.org/svn/trunk@1677 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/filter.inc.php')
-rw-r--r--include/filter.inc.php117
1 files changed, 117 insertions, 0 deletions
diff --git a/include/filter.inc.php b/include/filter.inc.php
new file mode 100644
index 000000000..3a1279f94
--- /dev/null
+++ b/include/filter.inc.php
@@ -0,0 +1,117 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery |
+// | Copyright (C) 2006-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | branch : BSF (Best So Far)
+// | file : $Id: filter.inc.php 1651 2006-12-13 00:05:16Z rub $
+// | last update : $Date: 2006-12-13 01:05:16 +0100 (mer., 13 déc. 2006) $
+// | last modifier : $Author: rub $
+// | revision : $Revision: 1651 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// global variable for filter
+$filter = array();
+
+// $filter['enabled']: Filter is enabled
+// $filter['categories']: Computed data of filtered categories
+// $filter['visible_categories']: List of visible categories (count(visible) < count(forbidden) more often)
+// $filter['visible_images']: List of visible images
+
+
+$filter['enabled'] =
+ (in_array(basename($_SERVER['SCRIPT_FILENAME']), $conf['filter_pages'])) and
+ (
+ (isset($_GET['filter']) and ($_GET['filter'] == 'start')) or
+ pwg_get_session_var('filter_enabled', false)
+ );
+
+if (in_array(basename($_SERVER['SCRIPT_FILENAME']), $conf['filter_pages']))
+{
+ if (isset($_GET['filter']))
+ {
+ $filter['enabled'] = ($_GET['filter'] == 'start');
+ }
+ else
+ {
+ $filter['enabled'] = pwg_get_session_var('filter_enabled', false);
+ }
+}
+else
+{
+ $filter['enabled'] = false;
+}
+
+if ($filter['enabled'])
+{
+ if (
+ // New filter
+ !pwg_get_session_var('filter_enabled', false) or
+ // Cache data updated
+ $user['need_update_done'] or
+ // Date, period, user are changed
+ (pwg_get_session_var('filter_check_key', '') != get_filter_check_key())
+ )
+ {
+ // Need to compute dats
+ $filter['check_key'] = get_filter_check_key();
+ $filter['categories'] = get_computed_categories($user['id'], $user['forbidden_categories'], true, $user['recent_period']);
+ $filter['visible_categories'] = implode(',', array_keys($filter['categories']));
+
+ $query ='
+SELECT
+ distinct image_id
+FROM '.
+ IMAGE_CATEGORY_TABLE.' INNER JOIN '.IMAGES_TABLE.' ON image_id = id
+WHERE ';
+ if (!empty($filter['visible_categories']))
+ {
+ $query.= '
+ category_id IN ('.$filter['visible_categories'].') and';
+ }
+ $query.= '
+ date_available > SUBDATE(
+ CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
+
+ $filter['visible_images'] = implode(',', array_from_query($query, 'image_id'));
+ }
+ else
+ {
+ // Read only data
+ $filter['check_key'] = pwg_get_session_var('filter_check_key', '');
+ $filter['categories'] = unserialize(pwg_get_session_var('filter_categories', serialize(array())));
+ $filter['visible_categories'] = pwg_get_session_var('filter_visible_categories', '');
+ $filter['visible_images'] = pwg_get_session_var('filter_visible_images', '');
+ }
+
+ $header_notes[] = l10n_dec($lang['note_filter_day'], $lang['note_filter_days'], $user['recent_period']);
+}
+else
+{
+ $filter['check_key'] = '';
+ $filter['categories'] = array();
+ $filter['visible_categories'] = '';
+ $filter['visible_images'] = '';
+}
+
+pwg_set_session_var('filter_enabled', $filter['enabled']);
+pwg_set_session_var('filter_check_key', $filter['check_key']);
+pwg_set_session_var('filter_categories', serialize($filter['categories']));
+pwg_set_session_var('filter_visible_categories', $filter['visible_categories']);
+pwg_set_session_var('filter_visible_images', $filter['visible_images']);
+
+?>