fixes #2198 smarter way to deal with filesize bounds

This commit is contained in:
plegall 2024-08-02 17:47:45 +02:00
parent 6fb86d25bf
commit 8c4b3fb7db
3 changed files with 10 additions and 11 deletions

View file

@ -571,12 +571,14 @@ if (isset($_SESSION['bulk_manager_filter']['filesize']))
if (isset($_SESSION['bulk_manager_filter']['filesize']['min']))
{
$where_clause[] = 'filesize >= '.$_SESSION['bulk_manager_filter']['filesize']['min']*1024;
// to counter the effect of converting kB to mB and rounding, we need to go slightly lower for the minimum value
$where_clause[] = 'filesize >= '.($_SESSION['bulk_manager_filter']['filesize']['min'] - 0.1)*1024;
}
if (isset($_SESSION['bulk_manager_filter']['filesize']['max']))
{
$where_clause[] = 'filesize <= '.$_SESSION['bulk_manager_filter']['filesize']['max']*1024;
// to counter the effect of converting kB to mB and rounding, we need to go slightly higher for the maximum value
$where_clause[] = 'filesize <= '.($_SESSION['bulk_manager_filter']['filesize']['max'] + 0.1)*1024;
}
$query = '
@ -785,10 +787,6 @@ if (empty($filesizes))
$filesizes = array_unique($filesizes);
sort($filesizes);
// add 0.1MB to the last value, to make sure the heavier photo will be in
// the result
$filesizes[count($filesizes)-1]+= 0.1;
$filesize['list'] = implode(',', $filesizes);
$filesize['bounds'] = array(

View file

@ -416,7 +416,9 @@ SELECT
if (!empty($search['fields']['filesize_min']) && !empty($search['fields']['filesize_max']))
{
$clauses[] = 'filesize BETWEEN '.$search['fields']['filesize_min'].' AND '.$search['fields']['filesize_max'];
// because of conversion from kB to mB, approximation, then conversion back to kB,
// we need to slightly enlarge the range for search
$clauses[] = 'filesize BETWEEN '.($search['fields']['filesize_min']-100).' AND '.($search['fields']['filesize_max']+100);
}
if (!empty($search['fields']['height_min']) && !empty($search['fields']['height_max']))

View file

@ -532,10 +532,6 @@ SELECT
$filesizes = array_unique($filesizes);
sort($filesizes);
// add 0.1MB to the last value, to make sure the heaviest photo will be in
// the result
$filesizes[count($filesizes)-1]+= 0.1;
$filesize['list'] = implode(',', $filesizes);
$filesize['bounds'] = array(
@ -543,6 +539,9 @@ SELECT
'max' => sprintf('%.2f',end($filesizes)),
);
// warning: we will (hopefully) have smarter values for filters. The min/max of the
// current search won't always be the first/last values found. It's going to be a
// problem with this way to select selected values
$filesize['selected'] = array(
'min' => !empty($my_search['fields']['filesize_min']) ? sprintf('%.2f', $my_search['fields']['filesize_min']/1024) : sprintf('%.2f',$filesizes[0]),
'max' => !empty($my_search['fields']['filesize_max']) ? sprintf('%.2f', $my_search['fields']['filesize_max']/1024) : sprintf('%.2f',end($filesizes)),