aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2005-03-25 22:10:55 +0000
committerplegall <plg@piwigo.org>2005-03-25 22:10:55 +0000
commitef080278bf4d0e073daa5f6a6f6d3b8ae4c29d9c (patch)
tree243d94d5b810325c43ea9e6998b7929319bc1e3e /admin
parent333d44c398e31dd7f24efbcf50d53c1ce2a754ba (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.php7
-rw-r--r--admin/element_set_global.php241
2 files changed, 248 insertions, 0 deletions
diff --git a/admin.php b/admin.php
index 78050490f..c744201a6 100644
--- a/admin.php
+++ b/admin.php
@@ -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.'&amp;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');
+?>