diff --git a/include/config_default.inc.php b/include/config_default.inc.php index 4d03c1ee6..cdc2c823a 100644 --- a/include/config_default.inc.php +++ b/include/config_default.inc.php @@ -850,6 +850,12 @@ $conf['batch_manager_images_per_page_unit'] = 5; // how many missing md5sum should Piwigo compute at once. $conf['checksum_compute_blocksize'] = 50; +// quicksearch engine: include all photos from sub-albums of any matching +// album. For example, if search is "bear", then we display photos from +// "bear/grizzly". When value changed, delete database cache files in +// _data/cache directory +$conf['quick_search_include_sub_albums'] = false; + // +-----------------------------------------------------------------------+ // | log | // +-----------------------------------------------------------------------+ diff --git a/include/functions_search.inc.php b/include/functions_search.inc.php index 379bb93e2..53700b4bc 100644 --- a/include/functions_search.inc.php +++ b/include/functions_search.inc.php @@ -1119,7 +1119,7 @@ SELECT image_id FROM '.IMAGE_TAG_TABLE.' function qsearch_get_categories(QExpression $expr, QResults $qsr) { - global $user; + global $user, $conf; $token_cat_ids = $qsr->cat_iids = array_fill(0, count($expr->stokens), array() ); $all_cats = array(); @@ -1171,6 +1171,18 @@ SELECT if (!empty($cat_ids)) { + if ($conf['quick_search_include_sub_albums']) + { + $query = ' +SELECT + id + FROM '.CATEGORIES_TABLE.' + INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ON id = cat_id and user_id = '.$user['id'].' + WHERE id IN ('.implode(',', get_subcat_ids($cat_ids)) .') +;'; + $cat_ids = query2array($query, null, 'id'); + } + $query = ' SELECT image_id FROM '.IMAGE_CATEGORY_TABLE.' WHERE category_id IN ('.implode(',',$cat_ids).')