diff options
author | plegall <plg@piwigo.org> | 2014-08-21 17:10:15 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2014-08-21 17:10:15 +0000 |
commit | 83ed6f8009cb99be29aeb17f848e76bb4d52ff8f (patch) | |
tree | d8adcbcdaaead909a2f1d828e705b01702f853e2 /admin/batch_manager.php | |
parent | b1c6c5624932e6204cf82ae9b5336167552f3fa5 (diff) |
feature 2791: batch manager, filter by filesize
git-svn-id: http://piwigo.org/svn/trunk@29238 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to '')
-rw-r--r-- | admin/batch_manager.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/admin/batch_manager.php b/admin/batch_manager.php index c34ee7406..e00364367 100644 --- a/admin/batch_manager.php +++ b/admin/batch_manager.php @@ -132,6 +132,17 @@ if (isset($_POST['submitFilter'])) } } + if (isset($_POST['filter_filesize_use'])) + { + foreach (array('min','max') as $type) + { + if ( preg_match('#^[0-9\.]+$#', $_POST['filter_filesize_'. $type ]) ) + { + $_SESSION['bulk_manager_filter']['filesize'][$type] = $_POST['filter_filesize_'. $type ]; + } + } + } + if (isset($_POST['filter_search_use'])) { $_SESSION['bulk_manager_filter']['search']['q'] = $_POST['q']; @@ -412,6 +423,29 @@ SELECT id $filter_sets[] = query2array($query, null, 'id'); } +if (isset($_SESSION['bulk_manager_filter']['filesize'])) +{ + $where_clauses = array(); + + if (isset($_SESSION['bulk_manager_filter']['filesize']['min'])) + { + $where_clause[] = 'filesize >= '.$_SESSION['bulk_manager_filter']['filesize']['min']*1024; + } + + if (isset($_SESSION['bulk_manager_filter']['filesize']['max'])) + { + $where_clause[] = 'filesize <= '.$_SESSION['bulk_manager_filter']['filesize']['max']*1024; + } + + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' + WHERE '.implode(' AND ',$where_clause).' + '.$conf['order_by']; + + $filter_sets[] = query2array($query, null, 'id'); +} + if (isset($_SESSION['bulk_manager_filter']['search'])) { include_once( PHPWG_ROOT_PATH .'include/functions_search.inc.php' ); @@ -579,6 +613,55 @@ foreach (array_keys($dimensions['bounds']) as $type) $template->assign('dimensions', $dimensions); +// +-----------------------------------------------------------------------+ +// | filesize | +// +-----------------------------------------------------------------------+ + +$filesizes = array(); + +$query = ' +SELECT + filesize + FROM '.IMAGES_TABLE.' + WHERE filesize IS NOT NULL + GROUP BY filesize +;'; +$result = pwg_query($query); + +while ($row = pwg_db_fetch_assoc($result)) +{ + $filesizes[] = sprintf('%.1f', $row['filesize']/1024); +} + +if (empty($filesizes)) +{ // arbitrary values, only used when no photos on the gallery + $filesizes = array(0, 1, 2, 5, 8, 15); +} + +$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( + 'min' => $filesizes[0], + 'max' => $filesizes[count($filesizes)-1], + ); + +// selected=bound if nothing selected +foreach (array_keys($filesize['bounds']) as $type) +{ + $filesize['selected'][$type] = isset($_SESSION['bulk_manager_filter']['filesize'][$type]) + ? $_SESSION['bulk_manager_filter']['filesize'][$type] + : $filesize['bounds'][$type] + ; +} + +$template->assign('filesize', $filesize); // +-----------------------------------------------------------------------+ // | open specific mode | |