Ignore:
Timestamp:
Oct 10, 2013, 1:07:45 PM (11 years ago)
Author:
mistic100
Message:

feature 2969: Unified Batch Manager URL

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/batch_manager.php

    r23746 r24834  
    4444check_input_parameter('selection', $_POST, true, PATTERN_ID);
    4545
     46
    4647// +-----------------------------------------------------------------------+
    4748// |                      initialize current set                           |
    4849// +-----------------------------------------------------------------------+
    4950
     51// filters from form
    5052if (isset($_POST['submitFilter']))
    5153{
     
    110112  }
    111113}
    112 else if (isset($_GET['cat']))
    113 {
    114   if ('caddie' == $_GET['cat'])
    115   {
    116     $_SESSION['bulk_manager_filter'] = array(
    117       'prefilter' => 'caddie'
    118       );
    119   }
    120   else if ('recent' == $_GET['cat'])
    121   {
    122     $_SESSION['bulk_manager_filter'] = array(
    123       'prefilter' => 'last import'
    124       );
    125   }
    126   else if (is_numeric($_GET['cat']))
    127   {
    128     $_SESSION['bulk_manager_filter'] = array(
    129       'category' => $_GET['cat']
    130       );
    131   }
    132 }
    133 else if (isset($_GET['tag']))
    134 {
    135   if (is_numeric($_GET['tag']))
    136   {
    137     $_SESSION['bulk_manager_filter'] = array(
    138       'tags' => array($_GET['tag']),
    139       'tag_mode' => 'AND',
    140       );
    141   }
    142 }
    143 
    144 if (!isset($_SESSION['bulk_manager_filter']))
     114// filters from url
     115else if (isset($_GET['filter']))
     116{
     117  if (!is_array($_GET['filter']))
     118  {
     119    $_GET['filter'] = explode(',', $_GET['filter']);
     120  }
     121 
     122  $_SESSION['bulk_manager_filter'] = array();
     123 
     124  foreach ($_GET['filter'] as $filter)
     125  {
     126    list($type, $value) = explode('-', $filter);
     127   
     128    switch ($type)
     129    {
     130    case 'prefilter':
     131      $_SESSION['bulk_manager_filter']['prefilter'] = $value;
     132      break;
     133   
     134    case 'album':
     135      if (is_numeric($value))
     136      {
     137        $_SESSION['bulk_manager_filter']['category'] = $value;
     138      }
     139      break;
     140     
     141    case 'tag':
     142      if (is_numeric($value))
     143      {
     144        $_SESSION['bulk_manager_filter']['tags'] = array($value);
     145        $_SESSION['bulk_manager_filter']['tag_mode'] = 'AND';
     146      }
     147      break;
     148     
     149    case 'level':
     150      if (is_numeric($value) && in_array($value, $conf['available_permission_levels']))
     151      {
     152        $_SESSION['bulk_manager_filter']['level'] = $value;
     153      }
     154      break;
     155    }
     156  }
     157}
     158
     159if (empty($_SESSION['bulk_manager_filter']))
    145160{
    146161  $_SESSION['bulk_manager_filter'] = array(
     
    151166// echo '<pre>'; print_r($_SESSION['bulk_manager_filter']); echo '</pre>';
    152167
    153 // depending on the current filter (in session), we find the appropriate
    154 // photos
     168// depending on the current filter (in session), we find the appropriate photos
    155169$filter_sets = array();
    156170if (isset($_SESSION['bulk_manager_filter']['prefilter']))
    157171{
    158   if ('caddie' == $_SESSION['bulk_manager_filter']['prefilter'])
    159   {
     172  switch ($_SESSION['bulk_manager_filter']['prefilter'])
     173  {
     174  case 'caddie':
    160175    $query = '
    161176SELECT element_id
     
    167182      array_from_query($query, 'element_id')
    168183      );
    169   }
    170 
    171   if ('favorites' == $_SESSION['bulk_manager_filter']['prefilter'])
    172   {
     184   
     185    break;
     186
     187  case 'favorites':
    173188    $query = '
    174189SELECT image_id
     
    180195      array_from_query($query, 'image_id')
    181196      );
    182   }
    183 
    184   if ('last import'== $_SESSION['bulk_manager_filter']['prefilter'])
    185   {
     197   
     198    break;
     199
     200  case 'last_import':
    186201    $query = '
    187202SELECT MAX(date_available) AS date
     
    201216        );
    202217    }
    203   }
    204 
    205   if ('with no virtual album' == $_SESSION['bulk_manager_filter']['prefilter'])
    206   {
     218   
     219    break;
     220
     221  case 'no_virtual_album':
    207222    // we are searching elements not linked to any virtual category
    208223    $query = '
     
    232247      array_diff($all_elements, $linked_to_virtual)
    233248      );
    234   }
    235 
    236   if ('with no album' == $_SESSION['bulk_manager_filter']['prefilter'])
    237   {
     249   
     250    break;
     251
     252  case 'no_album':
    238253    $query = '
    239254SELECT
     
    247262      array_from_query($query, 'id')
    248263      );
    249   }
    250 
    251   if ('with no tag' == $_SESSION['bulk_manager_filter']['prefilter'])
    252   {
     264   
     265    break;
     266
     267  case 'no_tag':
    253268    $query = '
    254269SELECT
     
    262277      array_from_query($query, 'id')
    263278      );
    264   }
    265 
    266 
    267   if ('duplicates' == $_SESSION['bulk_manager_filter']['prefilter'])
    268   {
     279   
     280    break;
     281
     282
     283  case 'duplicates':
    269284    // we could use the group_concat MySQL function to retrieve the list of
    270285    // image_ids but it would not be compatible with PostgreSQL, so let's
    271286    // perform 2 queries instead. We hope there are not too many duplicates.
    272 
    273287    $query = '
    274288SELECT file
     
    289303      array_from_query($query, 'id')
    290304      );
    291   }
    292 
    293   if ('all photos' == $_SESSION['bulk_manager_filter']['prefilter'])
    294   {
     305   
     306    break;
     307
     308  case 'all_photos':
    295309    $query = '
    296310SELECT id
     
    299313
    300314    $filter_sets[] = array_from_query($query, 'id');
     315   
     316    break;
    301317  }
    302318
     
    404420$page['cat_elements_id'] = $current_set;
    405421
     422
    406423// +-----------------------------------------------------------------------+
    407424// |                       first element to display                        |
     
    424441}
    425442
     443
    426444// +-----------------------------------------------------------------------+
    427445// |                                 Tabs                                  |
     
    443461$tabsheet->assign();
    444462
     463
    445464// +-----------------------------------------------------------------------+
    446465// |                              tags                                     |
     
    452471;';
    453472$template->assign('tags', get_taglist($query, false));
     473
    454474
    455475// +-----------------------------------------------------------------------+
Note: See TracChangeset for help on using the changeset viewer.