diff --git a/admin/batch_manager.php b/admin/batch_manager.php
index fae54f4ba..5856c0586 100644
--- a/admin/batch_manager.php
+++ b/admin/batch_manager.php
@@ -71,6 +71,11 @@ if (isset($_POST['submitFilter']))
if (isset($_POST['filter_tags_use']))
{
$_SESSION['bulk_manager_filter']['tags'] = get_tag_ids($_POST['filter_tags'], false);
+
+ if (isset($_POST['tag_mode']) and in_array($_POST['tag_mode'], array('AND', 'OR')))
+ {
+ $_SESSION['bulk_manager_filter']['tag_mode'] = $_POST['tag_mode'];
+ }
}
if (isset($_POST['filter_level_use']))
@@ -297,16 +302,16 @@ SELECT id
if (!empty($_SESSION['bulk_manager_filter']['tags']))
{
- $query = '
-SELECT image_id
- FROM '.IMAGE_TAG_TABLE.
- 'WHERE tag_id IN('.implode(',',$_SESSION['bulk_manager_filter']['tags']).')
- GROUP BY image_id
- HAVING COUNT(tag_id)='.count($_SESSION['bulk_manager_filter']['tags']);
- array_push(
+ array_push(
$filter_sets,
- get_image_ids_for_tags($_SESSION['bulk_manager_filter']['tags'])
- );
+ get_image_ids_for_tags(
+ $_SESSION['bulk_manager_filter']['tags'],
+ $_SESSION['bulk_manager_filter']['tag_mode'],
+ null,
+ null,
+ false // we don't apply permissions in administration screens
+ )
+ );
}
$current_set = array_shift($filter_sets);
diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl
index 627156be4..d278bb7f4 100644
--- a/admin/themes/default/template/batch_manager_global.tpl
+++ b/admin/themes/default/template/batch_manager_global.tpl
@@ -483,16 +483,18 @@ jQuery(window).load(function() {
-
- [x]
-
- {'Tags'|@translate}
-
-
+
+ [x]
+
+ {'Tags'|@translate}
+
+
+
+
[x]
diff --git a/include/functions_tag.inc.php b/include/functions_tag.inc.php
index 9f93115fd..3bc6d0ff1 100644
--- a/include/functions_tag.inc.php
+++ b/include/functions_tag.inc.php
@@ -166,7 +166,7 @@ function add_level_to_tags($tags)
* @param string order_by - optionally overwrite default photo order
* @return array
*/
-function get_image_ids_for_tags($tag_ids, $mode='AND', $extra_images_where_sql='', $order_by='')
+function get_image_ids_for_tags($tag_ids, $mode='AND', $extra_images_where_sql='', $order_by='', $use_permissions=true)
{
global $conf;
if (empty($tag_ids))
@@ -175,22 +175,31 @@ function get_image_ids_for_tags($tag_ids, $mode='AND', $extra_images_where_sql='
}
$query = 'SELECT id
- FROM '.IMAGES_TABLE.' i
- INNER JOIN '.IMAGE_CATEGORY_TABLE.' ic ON id=ic.image_id
+ FROM '.IMAGES_TABLE.' i ';
+
+ if ($use_permissions)
+ {
+ $query.= '
+ INNER JOIN '.IMAGE_CATEGORY_TABLE.' ic ON id=ic.image_id';
+ }
+
+ $query.= '
INNER JOIN '.IMAGE_TAG_TABLE.' it ON id=it.image_id
- WHERE tag_id IN ('.implode(',', $tag_ids).')'
- .get_sql_condition_FandF
- (
- array
- (
- 'forbidden_categories' => 'category_id',
- 'visible_categories' => 'category_id',
- 'visible_images' => 'id'
+ WHERE tag_id IN ('.implode(',', $tag_ids).')';
+
+ if ($use_permissions)
+ {
+ $query.= get_sql_condition_FandF(
+ array(
+ 'forbidden_categories' => 'category_id',
+ 'visible_categories' => 'category_id',
+ 'visible_images' => 'id'
),
"\n AND"
- )
- .(empty($extra_images_where_sql) ? '' : " \nAND (".$extra_images_where_sql.')')
- .'
+ );
+ }
+
+ $query.= (empty($extra_images_where_sql) ? '' : " \nAND (".$extra_images_where_sql.')').'
GROUP BY id';
if ($mode=='AND' and count($tag_ids)>1)