diff options
-rw-r--r-- | include/category_cats.inc.php | 39 | ||||
-rw-r--r-- | include/category_default.inc.php | 10 | ||||
-rw-r--r-- | include/functions_category.inc.php | 20 | ||||
-rwxr-xr-x | include/menubar.inc.php | 37 | ||||
-rw-r--r-- | index.php | 29 | ||||
-rw-r--r-- | language/en_UK.iso-8859-1/common.lang.php | 2 | ||||
-rw-r--r-- | language/fr_FR.iso-8859-1/common.lang.php | 4 | ||||
-rw-r--r-- | template/yoga/icon/start_filter_mode.png | bin | 0 -> 1064 bytes | |||
-rw-r--r-- | template/yoga/icon/stop_filter_mode.png | bin | 0 -> 1127 bytes | |||
-rw-r--r-- | template/yoga/index.tpl | 7 |
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( @@ -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 Binary files differnew file mode 100644 index 000000000..3d81a4d2e --- /dev/null +++ b/template/yoga/icon/start_filter_mode.png diff --git a/template/yoga/icon/stop_filter_mode.png b/template/yoga/icon/stop_filter_mode.png Binary files differnew file mode 100644 index 000000000..1ac3aa0e7 --- /dev/null +++ b/template/yoga/icon/stop_filter_mode.png 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 --> |