Ignore:
Timestamp:
Oct 27, 2012, 12:59:31 PM (12 years ago)
Author:
mistic100
Message:

feature:2718 Add batch manager filters for photo dimensions, redisgn

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/batch_manager.php

    r18459 r18758  
    9494  if (isset($_POST['filter_dimension_use']))
    9595  {
    96     if ( $_POST['filter_dimension'] != 'format' and !preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $_POST['filter_dimension'] ]) )
    97     {
    98       array_push($page['errors'], l10n('Invalid dimension'));
    99     }
    100     else
    101     {
    102       $_SESSION['bulk_manager_filter']['dimension'] = $_POST['filter_dimension'];
    103       $_SESSION['bulk_manager_filter']['dimension_'. $_POST['filter_dimension'] ] = $_POST['filter_dimension_'. $_POST['filter_dimension'] ];
     96    foreach (array('min_width','max_width','min_height','max_height') as $type)
     97    {
     98      if ( preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $type ]) )
     99      {
     100        $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ];
     101      }
     102    }
     103  }
     104 
     105  if (isset($_POST['filter_ratio_use']))
     106  {
     107    foreach (array('min','max') as $type)
     108    {
     109      if ( preg_match('#^[0-9\.,]+$#', $_POST['filter_ratio_'. $type ]) )
     110      {
     111        $_SESSION['bulk_manager_filter']['ratio'][$type] = str_replace(',','.',$_POST['filter_ratio_'. $type ]);
     112      }
    104113    }
    105114  }
     
    341350}
    342351
    343 if (isset($_SESSION['bulk_manager_filter']['dimension']))
    344 {
    345   switch ($_SESSION['bulk_manager_filter']['dimension'])
    346   {
    347     case 'min_width':
    348       $where_clause = 'width >= '.$_SESSION['bulk_manager_filter']['dimension_min_width']; break;
    349     case 'max_width':
    350       $where_clause = 'width <= '.$_SESSION['bulk_manager_filter']['dimension_max_width']; break;
    351     case 'min_height':
    352       $where_clause = 'height >= '.$_SESSION['bulk_manager_filter']['dimension_min_height']; break;
    353     case 'max_height':
    354       $where_clause = 'height <= '.$_SESSION['bulk_manager_filter']['dimension_max_height']; break;
    355     case 'format':
    356     {
    357       switch ($_SESSION['bulk_manager_filter']['dimension_format'])
    358       {
    359         case 'portrait':
    360           $where_clause = 'width/height < 0.95'; break;
    361         case 'square':
    362           $where_clause = 'width/height >= 0.95 AND width/height <= 1.05'; break;
    363         case 'landscape':
    364           $where_clause = 'width/height > 1.05 AND width/height < 2.5'; break;
    365         case 'panorama':
    366           $where_clause = 'width/height >= 2.5'; break;
    367       }
    368       break;
    369     }
     352if (isset($_SESSION['bulk_manager_filter']['dimension']) or isset($_SESSION['bulk_manager_filter']['ratio']))
     353{
     354  $where_clauses = array();
     355  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_width']))
     356  {
     357    $where_clause[] = 'width >= '.$_SESSION['bulk_manager_filter']['dimension']['min_width'];
     358  }
     359  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_width']))
     360  {
     361    $where_clause[] = 'width <= '.$_SESSION['bulk_manager_filter']['dimension']['max_width'];
     362  }
     363  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_height']))
     364  {
     365    $where_clause[] = 'height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_height'];
     366  }
     367  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_height']))
     368  {
     369    $where_clause[] = 'height <= '.$_SESSION['bulk_manager_filter']['dimension']['max_height'];
     370  }
     371  if (isset($_SESSION['bulk_manager_filter']['ratio']['min']))
     372  {
     373    $where_clause[] = 'width/height >= '.$_SESSION['bulk_manager_filter']['ratio']['min'];
     374  }
     375  if (isset($_SESSION['bulk_manager_filter']['ratio']['max']))
     376  {
     377    $where_clause[] = 'width/height <= '.$_SESSION['bulk_manager_filter']['ratio']['max'];
    370378  }
    371379 
     
    373381SELECT id
    374382  FROM '.IMAGES_TABLE.'
    375   WHERE '.$where_clause.'
     383  WHERE '.implode(' AND ',$where_clause).'
    376384  '.$conf['order_by'];
    377385
Note: See TracChangeset for help on using the changeset viewer.