aboutsummaryrefslogtreecommitdiffstats
path: root/include/section_init.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/section_init.inc.php')
-rw-r--r--include/section_init.inc.php171
1 files changed, 130 insertions, 41 deletions
diff --git a/include/section_init.inc.php b/include/section_init.inc.php
index 416d98849..d5bbce645 100644
--- a/include/section_init.inc.php
+++ b/include/section_init.inc.php
@@ -267,6 +267,12 @@ while (isset($tokens[$i]))
$page['start'] = $matches[1];
}
+ if (preg_match('/^flat_recent_cat-(\d+)/', $tokens[$i], $matches))
+ {
+ // indicate a special list of images
+ $page['flat_recent_cat'] = $matches[1];
+ }
+
if (preg_match('/^(posted|created)/', $tokens[$i] ))
{
$chronology_tokens = explode('-', $tokens[$i] );
@@ -325,59 +331,134 @@ if ('categories' == $page['section'])
$page = array_merge(
$page,
array(
- 'comment' => $result['comment'],
- 'cat_dir' => $result['dir'],
- 'cat_name' => $result['name'],
- 'cat_site_id' => $result['site_id'],
- 'cat_uploadable' => $result['uploadable'],
- 'cat_commentable' => $result['commentable'],
- 'cat_id_uppercat' => $result['id_uppercat'],
- 'uppercats' => $result['uppercats'],
-
- 'title' => get_cat_display_name($result['name'], '', false),
+ 'comment' => $result['comment'],
+ 'cat_dir' => $result['dir'],
+ 'cat_name' => $result['name'],
+ 'cat_site_id' => $result['site_id'],
+ 'cat_uploadable' => $result['uploadable'],
+ 'cat_commentable' => $result['commentable'],
+ 'cat_id_uppercat' => $result['id_uppercat'],
+ 'uppercats' => $result['uppercats'],
+ 'title' =>
+ get_cat_display_name($result['name'], '', false),
+ 'thumbnails_include' =>
+ (($result['nb_images'] > 0) or (isset($page['flat_recent_cat'])))
+ ? 'include/category_default.inc.php'
+ : 'include/category_cats.inc.php'
)
);
+ }
+ else
+ {
+ $page['title'] = $lang['no_category'];
+ $page['thumbnails_include'] =
+ (isset($page['flat_recent_cat']))
+ ? 'include/category_default.inc.php'
+ : 'include/category_cats.inc.php';
+ }
+
+ if (isset($page['flat_recent_cat']))
+ {
+ $page['title'] = $lang['recent_pics_cat'].' : '.$page['title'] ;
+ }
+
+ if
+ (
+ (!isset($page['chronology_field'])) and
+ (
+ (isset($page['category'])) or
+ (isset($page['flat_recent_cat']))
+ )
+ )
+ {
+ if ( !empty($result['image_order']) and !isset($page['super_order_by']) )
+ {
+ $conf[ 'order_by' ] = ' ORDER BY '.$result['image_order'];
+ }
- if (!isset($page['chronology_field']))
+ if (isset($page['flat_recent_cat']))
{
- if ( !empty($result['image_order']) and !isset($page['super_order_by']) )
+ // flat recent categories mode
+ $query = '
+SELECT
+ DISTINCT(ic.image_id)
+FROM '.IMAGES_TABLE.' AS i
+ INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON i.id = ic.image_id
+ INNER JOIN '.CATEGORIES_TABLE.' AS c ON ic.category_id = c.id
+WHERE
+ date_available > SUBDATE(
+ CURRENT_DATE,INTERVAL '.$page['flat_recent_cat'].' DAY)'.
+ (isset($page['category']) ? '
+ AND uppercats REGEXP \'(^|,)'.$page['category'].'(,|$)\'' : '' ).'
+'.get_sql_condition_FandF
+ (
+ array
+ (
+ 'forbidden_categories' => 'category_id',
+ 'visible_categories' => 'category_id',
+ 'visible_images' => 'image_id'
+ ),
+ 'AND'
+ ).'
+;';
+
+ $where_sql = array_from_query($query, 'image_id');
+ if (!empty($where_sql))
{
- $conf[ 'order_by' ] = ' ORDER BY '.$result['image_order'];
+ $where_sql = 'image_id in ('.implode(',', $where_sql).')';
}
+ }
+ else
+ {
+ // Normal mode
+ $where_sql = 'category_id = '.$page['category'];
+ }
+ if (!empty($where_sql))
+ {
+ // Main query
$query = '
SELECT image_id
FROM '.IMAGE_CATEGORY_TABLE.'
INNER JOIN '.IMAGES_TABLE.' ON id = image_id
- WHERE category_id = '.$page['category'].'
+ WHERE
+ '.$where_sql.'
+'.get_sql_condition_FandF
+ (
+ array
+ (
+ 'forbidden_categories' => 'category_id',
+ 'visible_categories' => 'category_id',
+ 'visible_images' => 'image_id'
+ ),
+ 'AND'
+ ).'
'.$conf['order_by'].'
;';
- $page['items'] = array_from_query($query, 'image_id');
- $page['thumbnails_include'] =
- $result['nb_images'] > 0
- ? 'include/category_default.inc.php'
- : 'include/category_cats.inc.php';
- } //otherwise the calendar will requery all subitems
- }
- else
- {
- $page['title'] = $lang['no_category'];
- $page['thumbnails_include'] = 'include/category_cats.inc.php';
- }
+ $page['items'] = array_from_query($query, 'image_id');
+ }
+ else
+ {
+ $page['items'] = array();
+ }
+ } //otherwise the calendar will requery all subitems
}
// special sections
else
{
- if (!empty($user['forbidden_categories']))
- {
- $forbidden =
- ' category_id NOT IN ('.$user['forbidden_categories'].')';
- }
- else
- {
- $forbidden = ' 1 = 1';
- }
+ $forbidden =
+ get_sql_condition_FandF
+ (
+ array
+ (
+ 'forbidden_categories' => 'category_id',
+ 'visible_categories' => 'category_id',
+ 'visible_images' => 'image_id'
+ ),
+ 'AND'
+ );
+
// +-----------------------------------------------------------------------+
// | tags section |
// +-----------------------------------------------------------------------+
@@ -400,7 +481,7 @@ else
SELECT image_id
FROM '.IMAGE_CATEGORY_TABLE.' INNER JOIN '.IMAGES_TABLE.' ON image_id=id
WHERE image_id IN ('.implode(',', $items).')
- AND '.$forbidden.
+ '.$forbidden.
$conf['order_by'].'
;';
$items = array_unique(
@@ -434,7 +515,7 @@ SELECT DISTINCT(id)
FROM '.IMAGES_TABLE.'
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
WHERE id IN ('.implode(',', $search_result['items']).')
- AND '.$forbidden.'
+ '.$forbidden.'
'.$conf['order_by'].'
;';
$page['items'] = array_from_query($query, 'id');
@@ -464,6 +545,14 @@ SELECT image_id
FROM '.FAVORITES_TABLE.'
INNER JOIN '.IMAGES_TABLE.' ON image_id = id
WHERE user_id = '.$user['id'].'
+'.get_sql_condition_FandF
+ (
+ array
+ (
+ 'visible_images' => 'image_id'
+ ),
+ 'AND'
+ ).'
'.$conf['order_by'].'
;';
@@ -487,7 +576,7 @@ SELECT DISTINCT(id)
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
WHERE date_available > \''.
date('Y-m-d', time() - 60*60*24*$user['recent_period']).'\'
- AND '.$forbidden.'
+ '.$forbidden.'
'.$conf['order_by'].'
;';
@@ -526,7 +615,7 @@ SELECT DISTINCT(id)
FROM '.IMAGES_TABLE.'
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
WHERE hit > 0
- AND '.$forbidden.'
+ '.$forbidden.'
'.$conf['order_by'].'
LIMIT 0, '.$conf['top_number'].'
;';
@@ -554,7 +643,7 @@ SELECT DISTINCT(id)
FROM '.IMAGES_TABLE.'
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
WHERE average_rate IS NOT NULL
- AND '.$forbidden.'
+ '.$forbidden.'
'.$conf['order_by'].'
LIMIT 0, '.$conf['top_number'].'
;';
@@ -578,7 +667,7 @@ SELECT DISTINCT(id)
FROM '.IMAGES_TABLE.'
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
WHERE image_id IN ('.implode(',', $page['list']).')
- AND '.$forbidden.'
+ '.$forbidden.'
'.$conf['order_by'].'
;';