fixes #2193 [search] add 5 new widgets

add ratings, ratios, filesize, width and height widgets
- in functions_search add clauses according to each new filter
- in ws_functions add new api parameters
- in index.php add queries to get data for filters
- in admin.lang add missing translations for filters
- in css add basic style to work for modus newspaper
- in js add script for new filters
- in tpl combine script + CSS for double slider & jquery Ui. Add slider conf, template for new widgets

TODO
- adapt css to different themes and skins
This commit is contained in:
HWFord
2024-07-25 16:11:07 +02:00
parent 08357f59eb
commit 6fe1d7db65
11 changed files with 1253 additions and 19 deletions
+54
View File
@@ -375,6 +375,60 @@ SELECT
$clauses[] = $local_clause;
}
if (!empty($search['fields']['ratios']))
{
foreach ($search['fields']['ratios'] as $r)
{
switch($r)
{
case 'portrait':
$clauses[] = '(FLOOR(width / height * 100) / 100) < 0.96';
break;
case'square':
$clauses[] = '(FLOOR(width / height * 100) / 100) BETWEEN 0.95 AND 1.06';
break;
case'landscape':
$clauses[] = '(FLOOR(width / height * 100) / 100) BETWEEN 1.05 AND 2.01';
break;
case'panorama':
$clauses[] = '(FLOOR(width / height * 100) / 100) > 2.01';
break;
}
}
}
if(!empty($search['fields']['ratings']))
{
foreach ($search['fields']['ratings'] as $r)
{
if (0 == $r)
{
$clauses[] = 'rating_score IS NULL';
}
else{
$clauses[] = 'rating_score BETWEEN '.(intval($r)-1).' AND '.$r;
}
}
}
if (!empty($search['fields']['filesize_min']) && !empty($search['fields']['filesize_max']))
{
$clauses[] = 'filesize BETWEEN '.$search['fields']['filesize_min'].' AND '.$search['fields']['filesize_max'];
}
if (!empty($search['fields']['height_min']) && !empty($search['fields']['height_max']))
{
$clauses[] = 'height BETWEEN '.$search['fields']['height_min'].' AND '.$search['fields']['height_max'];
}
if (!empty($search['fields']['width_min']) && !empty($search['fields']['width_max']))
{
$clauses[] = 'width BETWEEN '.$search['fields']['width_min'].' AND '.$search['fields']['width_max'];
}
// adds brackets around where clauses
$clauses = prepend_append_array_items($clauses, '(', ')');
+48
View File
@@ -841,6 +841,54 @@ function ws_images_filteredSearch_create($params, $service)
$search['fields']['date_posted'] = $params['date_posted'];
}
if (isset($params['ratios']))
{
foreach ($params['ratios'] as $ext)
{
if (!preg_match('/^[a-z0-9]+$/i', $ext))
{
return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid parameter ratios');
}
}
$search['fields']['ratios'] = $params['ratios'];
}
if (isset($params['ratings']))
{
$search['fields']['ratings'] = $params['ratings'];
}
if (isset($params['filesize_min']))
{
$search['fields']['filesize_min'] = $params['filesize_min'];
}
if (isset($params['filesize_max']))
{
$search['fields']['filesize_max'] = $params['filesize_max'];
}
if (isset($params['width_min']))
{
$search['fields']['width_min'] = $params['width_min'];
}
if (isset($params['width_max']))
{
$search['fields']['width_max'] = $params['width_max'];
}
if (isset($params['height_min']))
{
$search['fields']['height_min'] = $params['height_min'];
}
if (isset($params['height_max']))
{
$search['fields']['height_max'] = $params['height_max'];
}
list($search_uuid, $search_url) = save_search($search, $search_info['id'] ?? null);
return array(