From ef080278bf4d0e073daa5f6a6f6d3b8ae4c29d9c Mon Sep 17 00:00:00 2001 From: plegall Date: Fri, 25 Mar 2005 22:10:55 +0000 Subject: - new feature : caddie. The purpose is batch management, especially concerning elements to categories associations. This is the very first release, needs many improvements. - new function : array_from_query. Firstly used by "caddie" feature, it may be useful in many cases. git-svn-id: http://piwigo.org/svn/trunk@755 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/element_set_global.php | 241 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 admin/element_set_global.php (limited to 'admin') diff --git a/admin/element_set_global.php b/admin/element_set_global.php new file mode 100644 index 000000000..ffd8c10fe --- /dev/null +++ b/admin/element_set_global.php @@ -0,0 +1,241 @@ +'; +// print_r($_POST['selection']); +// echo ''; +// exit(); + + switch ($_POST['target']) + { + case 'all' : + { + $query = ' +SELECT element_id + FROM '.CADDIE_TABLE.' + WHERE user_id = '.$user['id'].' +;'; + $result = pwg_query($query); + while ($row = mysql_fetch_array($result)) + { + array_push($collection, $row['element_id']); + } + break; + } + case 'selection' : + { + $collection = $_POST['selection']; + break; + } + } + + if ($_POST['associate'] != 0) + { + $datas = array(); + + foreach ($collection as $item) + { + array_push($datas, + array('category_id'=>$_POST['associate'], + 'image_id'=>$item)); + } + + // TODO : inserting an existing PK will fail + mass_inserts(IMAGE_CATEGORY_TABLE, array('image_id', 'category_id'), $datas); + update_category(array($_POST['associate'])); + } + + if ($_POST['dissociate'] != 0) + { + // physical links must be broken, so we must first retrieve image_id + // which create virtual links with the category to "dissociate from". + $query = ' +SELECT id + FROM '.IMAGE_CATEGORY_TABLE.' INNER JOIN '.IMAGES_TABLE.' ON image_id = id + WHERE category_id = '.$_POST['dissociate'].' + AND category_id != storage_category_id + AND id IN ('.implode(',', $collection).') +;'; + $dissociables = array_from_query($query, 'id'); + + $query = ' +DELETE FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id = '.$_POST['dissociate'].' + AND image_id IN ('.implode(',', $dissociables).') +'; + pwg_query($query); + + update_category(array($_POST['dissociate'])); + } +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ +$template->set_filenames( + array('element_set_global' => 'admin/element_set_global.tpl')); + +$form_action = PHPWG_ROOT_PATH.'admin.php?page=element_set_global'; + +$template->assign_vars( + array( + 'L_SUBMIT'=>$lang['submit'], + + 'U_EMPTY_CADDIE'=>add_session_id($form_action.'&empty=1'), + + 'F_ACTION'=>add_session_id($form_action) + ) + ); +// +-----------------------------------------------------------------------+ +// | global mode form | +// +-----------------------------------------------------------------------+ + +// Virtualy associate a picture to a category +$blockname = 'associate_option'; + +$template->assign_block_vars( + $blockname, + array('SELECTED' => '', + 'VALUE'=> 0, + 'OPTION' => '------------' + )); + +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' +;'; +display_select_cat_wrapper($query, array(), $blockname, true); + +// Dissociate from a category : categories listed for dissociation can +// only represent virtual links. Links to physical categories can't be +// broken +$blockname = 'dissociate_option'; + +$template->assign_block_vars( + $blockname, + array('SELECTED' => '', + 'VALUE'=> 0, + 'OPTION' => '------------' + )); + +$query = ' +SELECT DISTINCT(category_id) AS id, c.name, uppercats, global_rank + FROM '.IMAGE_CATEGORY_TABLE.' AS ic, + '.CADDIE_TABLE.' AS caddie, + '.CATEGORIES_TABLE.' AS c, + '.IMAGES_TABLE.' AS i + WHERE ic.image_id = caddie.element_id + AND ic.category_id = c.id + AND ic.image_id = i.id + AND ic.category_id != i.storage_category_id + AND caddie.user_id = '.$user['id'].' +;'; +display_select_cat_wrapper($query, array(), $blockname, true); + +// +-----------------------------------------------------------------------+ +// | global mode thumbnails | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT element_id,path,tn_ext + FROM '.IMAGES_TABLE.' INNER JOIN '.CADDIE_TABLE.' ON id=element_id + WHERE user_id = '.$user['id'].' + '.$conf['order_by'].' +;'; +//echo '
'.$query.'
'; +$result = pwg_query($query); + +// template thumbnail initialization +if (mysql_num_rows($result) > 0) +{ + $template->assign_block_vars('thumbnails', array()); + // first line + $template->assign_block_vars('thumbnails.line', array()); + // current row displayed + $row_number = 0; +} + +while ($row = mysql_fetch_array($result)) +{ + $src = get_thumbnail_src($row['path'], @$row['tn_ext']); + + $template->assign_block_vars( + 'thumbnails.line.thumbnail', + array( + 'ID' => $row['element_id'], + 'SRC' => $src, + 'ALT' => 'TODO', + 'TITLE' => 'TODO' + ) + ); + + // create a new line ? + if (++$row_number == $user['nb_image_line']) + { + $template->assign_block_vars('thumbnails.line', array()); + $row_number = 0; + } +} + +//----------------------------------------------------------- sending html code +$template->assign_var_from_handle('ADMIN_CONTENT', 'element_set_global'); +?> -- cgit v1.2.3