diff options
author | plegall <plg@piwigo.org> | 2005-03-25 22:10:55 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2005-03-25 22:10:55 +0000 |
commit | ef080278bf4d0e073daa5f6a6f6d3b8ae4c29d9c (patch) | |
tree | 243d94d5b810325c43ea9e6998b7929319bc1e3e /admin | |
parent | 333d44c398e31dd7f24efbcf50d53c1ce2a754ba (diff) |
- 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
Diffstat (limited to '')
-rw-r--r-- | admin.php | 7 | ||||
-rw-r--r-- | admin/element_set_global.php | 241 |
2 files changed, 248 insertions, 0 deletions
@@ -149,6 +149,12 @@ switch ( $_GET['page'] ) $page_valide = true; break; } + case 'element_set_global' : + { + $title = 'batch management'; + $page_valide = true; + break; + } default: $title = $lang['title_default']; break; } @@ -234,6 +240,7 @@ $template->assign_vars(array( 'U_CAT_UPDATE'=>add_session_id($link_start.'update'), 'U_WAITING'=>add_session_id($link_start.'waiting' ), 'U_COMMENTS'=>add_session_id($link_start.'comments' ), + 'U_SET'=>add_session_id($link_start.'element_set_global'), 'U_THUMBNAILS'=>add_session_id($link_start.'thumbnail' ), 'U_USERS'=>add_session_id($link_start.'profile' ), 'U_GROUPS'=>add_session_id($link_start.'group_list' ), 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 @@ +<?php +// +-----------------------------------------------------------------------+ +// | PhpWebGallery - a PHP based picture gallery | +// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net | +// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net | +// +-----------------------------------------------------------------------+ +// | branch : BSF (Best So Far) +// | file : $RCSfile$ +// | last update : $Date$ +// | last modifier : $Author$ +// | revision : $Revision$ +// +-----------------------------------------------------------------------+ +// | This program is free software; you can redistribute it and/or modify | +// | it under the terms of the GNU General Public License as published by | +// | the Free Software Foundation | +// | | +// | This program is distributed in the hope that it will be useful, but | +// | WITHOUT ANY WARRANTY; without even the implied warranty of | +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | +// | General Public License for more details. | +// | | +// | You should have received a copy of the GNU General Public License | +// | along with this program; if not, write to the Free Software | +// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | +// | USA. | +// +-----------------------------------------------------------------------+ + +/** + * Management of elements set. Elements can belong to a category or to the + * user caddie. + * + */ + +$user['nb_image_line'] = 6; // temporary + +if (!defined('PHPWG_ROOT_PATH')) +{ + die('Hacking attempt!'); +} +include_once(PHPWG_ROOT_PATH.'admin/include/isadmin.inc.php'); + +// +-----------------------------------------------------------------------+ +// | empty caddie | +// +-----------------------------------------------------------------------+ +if (isset($_GET['empty'])) +{ + $query = ' +DELETE FROM '.CADDIE_TABLE.' + WHERE user_id = '.$user['id'].' +;'; + pwg_query($query); +} + +// +-----------------------------------------------------------------------+ +// | global mode form submission | +// +-----------------------------------------------------------------------+ +$errors = array(); + +if (isset($_POST['submit'])) +{ + $collection = array(); + +// echo '<pre>'; +// print_r($_POST['selection']); +// echo '</pre>'; +// 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 '<pre>'.$query.'</pre>'; +$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'); +?> |