aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2005-04-16 16:56:32 +0000
committerplegall <plg@piwigo.org>2005-04-16 16:56:32 +0000
commitb63d91c59e084223d419b4861627673821d3b15b (patch)
treeadd112962d09483b6a7ced06cd74fba4fbb538c0
parent41e52d7a8a4086f92fe318c22ed69ef3e6a4047b (diff)
- elements batch management : element_set page becomes the frontend to
element_set_global and element_set_unit, infos_images (after a long time of use) become deprecated : the more powerful element_set is used instead. Consequently, batch management concerns caddie but also "normal categories". - refactoring code in admin.php to include the sub-file (clearer) - caddie : function fill_caddie replaces the code in category.php and can be used in admin/element_set.php - caddie : caddie table is added in delete_elements function git-svn-id: http://piwigo.org/svn/trunk@764 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin.php45
-rw-r--r--admin/cat_list.php2
-rw-r--r--admin/element_set.php193
-rw-r--r--admin/element_set_global.php178
-rw-r--r--admin/element_set_unit.php137
-rw-r--r--admin/include/functions.php8
-rw-r--r--category.php23
-rw-r--r--doc/ChangeLog15
-rw-r--r--include/functions.inc.php46
-rw-r--r--template/default/admin.tpl2
-rw-r--r--template/default/admin/element_set_global.tpl33
-rw-r--r--template/default/admin/element_set_unit.tpl2
12 files changed, 454 insertions, 230 deletions
diff --git a/admin.php b/admin.php
index b8427258f..185b4f885 100644
--- a/admin.php
+++ b/admin.php
@@ -149,18 +149,18 @@ switch ( $_GET['page'] )
$page_valide = true;
break;
}
- case 'element_set_global' :
- {
- $title = 'batch management';
- $page_valide = true;
- break;
- }
- case 'element_set_unit' :
+ case 'element_set' :
{
$title = 'batch management';
$page_valide = true;
break;
}
+// case 'element_set_unit' :
+// {
+// $title = 'batch management';
+// $page_valide = true;
+// break;
+// }
default:
$title = $lang['title_default']; break;
}
@@ -246,7 +246,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_CADDIE'=>add_session_id($link_start.'element_set&amp;cat=caddie'),
'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' ),
@@ -259,15 +259,34 @@ $template->assign_vars(array(
//--------------------------------------------------------------------- summary
$link_start = PHPWG_ROOT_PATH.'admin.php?page=';
//------------------------------------------------------------- content display
-if ( $page_valide )
+if ($page_valide)
{
- if ($_GET['page']=='comments') include ( PHPWG_ROOT_PATH.'comments.php');
- elseif ($_GET['page']=='profile') include ( PHPWG_ROOT_PATH.'profile.php');
- else include ( PHPWG_ROOT_PATH.'admin/'.$_GET['page'].'.php' );
+ switch ($_GET['page'])
+ {
+ case 'comments' :
+ {
+ include(PHPWG_ROOT_PATH.'comments.php');
+ break;
+ }
+ case 'profile' :
+ {
+ include(PHPWG_ROOT_PATH.'profile.php');
+ break;
+ }
+ default :
+ {
+ include(PHPWG_ROOT_PATH.'admin/'.$_GET['page'].'.php');
+ }
+ }
}
else
{
- $template->assign_vars(array ('ADMIN_CONTENT'=> '<div style="text-align:center">'.$lang['default_message'].'</div>') );
+ $template->assign_vars(
+ array(
+ 'ADMIN_CONTENT'
+ =>'<div style="text-align:center">'.$lang['default_message'].'</div>'
+ )
+ );
}
$template->parse('admin');
include(PHPWG_ROOT_PATH.'include/page_tail.php');
diff --git a/admin/cat_list.php b/admin/cat_list.php
index b5b4a6852..1706eaff8 100644
--- a/admin/cat_list.php
+++ b/admin/cat_list.php
@@ -451,7 +451,7 @@ foreach ($categories as $category)
'U_CAT_DELETE'=>add_session_id($self_url.'&amp;delete='.$category['id']),
'U_INFO_IMG'
- => add_session_id($base_url.'infos_images&amp;cat_id='.$category['id'])
+ => add_session_id($base_url.'element_set&amp;cat='.$category['id'])
));
if (!empty($category['dir']))
diff --git a/admin/element_set.php b/admin/element_set.php
new file mode 100644
index 000000000..e4e913b74
--- /dev/null
+++ b/admin/element_set.php
@@ -0,0 +1,193 @@
+<?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.
+ *
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+ die('Hacking attempt!');
+}
+include_once(PHPWG_ROOT_PATH.'admin/include/isadmin.inc.php');
+
+// +-----------------------------------------------------------------------+
+// | caddie management |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['submit_caddie']))
+{
+ if (isset($_POST['caddie_action']))
+ {
+ switch ($_POST['caddie_action'])
+ {
+ case 'empty_all' :
+ {
+ $query = '
+DELETE FROM '.CADDIE_TABLE.'
+ WHERE user_id = '.$user['id'].'
+;';
+ pwg_query($query);
+ break;
+ }
+ case 'empty_selected' :
+ {
+ if (isset($_POST['selection']) and count($_POST['selection']) > 0)
+ {
+ $query = '
+DELETE
+ FROM '.CADDIE_TABLE.'
+ WHERE element_id IN ('.implode(',', $_POST['selection']).')
+ AND user_id = '.$user['id'].'
+;';
+ pwg_query($query);
+ }
+ else
+ {
+ // TODO : add error
+ }
+ break;
+ }
+ case 'add_selected' :
+ {
+ if (isset($_POST['selection']) and count($_POST['selection']) > 0)
+ {
+ fill_caddie($_POST['selection']);
+ }
+ else
+ {
+ // TODO : add error
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ // TODO : add error
+ }
+}
+
+// +-----------------------------------------------------------------------+
+// | initialize info about category |
+// +-----------------------------------------------------------------------+
+
+// To element_set_(global|unit).php, we must provide the elements id of the
+// managed category in $page['cat_elements_id'] array.
+
+if (is_numeric($_GET['cat']))
+{
+ $cat_infos = get_cat_info($_GET['cat']);
+ $page['title'] = get_cat_display_name($cat_infos['name'], '', false);
+
+ $query = '
+SELECT image_id
+ FROM '.IMAGE_CATEGORY_TABLE.'
+ WHERE category_id = '.$_GET['cat'].'
+;';
+ $page['cat_elements_id'] = array_from_query($query, 'image_id');
+}
+else if ('caddie' == $_GET['cat'])
+{
+ $page['title'] = 'caddie';
+
+ $query = '
+SELECT element_id
+ FROM '.CADDIE_TABLE.'
+ WHERE user_id = '.$user['id'].'
+;';
+ $page['cat_elements_id'] = array_from_query($query, 'element_id');
+}
+else if ('not_linked' == $_GET['cat'])
+{
+ $page['title'] = 'elements not linked to any virtual categories';
+
+ // we are searching elements not linked to any virtual category
+ $query = '
+SELECT id
+ FROM '.CATEGORIES_TABLE.'
+ WHERE dir IS NULL
+;';
+ $virtual_categories = array_from_query($query, 'id');
+
+ $query = '
+SELECT DISTINCT(image_id)
+ FROM '.IMAGE_CATEGORY_TABLE.'
+;';
+ $all_elements = array_from_query($query, 'image_id');
+
+ $query = '
+SELECT DISTINCT(image_id)
+ FROM '.IMAGE_CATEGORY_TABLE.'
+ WHERE category_id IN ('.implode(',', $virtual_categories).')
+;';
+ $linked_to_virtual = array_from_query($query, 'image_id');
+
+ $page['cat_elements_id'] = array_diff($all_elements, $linked_to_virtual);
+}
+
+// +-----------------------------------------------------------------------+
+// | first element to display |
+// +-----------------------------------------------------------------------+
+
+// $page['start'] contains the number of the first element in its
+// category. For exampe, $page['start'] = 12 means we must show elements #12
+// and $page['nb_images'] next elements
+
+if (!isset($_GET['start'])
+ or !is_numeric($_GET['start'])
+ or $_GET['start'] < 0)
+{
+ $page['start'] = 0;
+}
+else
+{
+ $page['start'] = $_GET['start'];
+}
+
+// +-----------------------------------------------------------------------+
+// | open specific mode |
+// +-----------------------------------------------------------------------+
+
+$_GET['mode'] = !empty($_GET['mode']) ? $_GET['mode'] : 'global';
+
+switch ($_GET['mode'])
+{
+ case 'global' :
+ {
+ include(PHPWG_ROOT_PATH.'admin/element_set_global.php');
+ break;
+ }
+ case 'unit' :
+ {
+ include(PHPWG_ROOT_PATH.'admin/element_set_unit.php');
+ break;
+ }
+}
+?> \ No newline at end of file
diff --git a/admin/element_set_global.php b/admin/element_set_global.php
index cf95c1d1f..1c1315a0b 100644
--- a/admin/element_set_global.php
+++ b/admin/element_set_global.php
@@ -72,50 +72,6 @@ SELECT keywords
}
// +-----------------------------------------------------------------------+
-// | caddie management |
-// +-----------------------------------------------------------------------+
-if (isset($_POST['submit_caddie']))
-{
- if (isset($_POST['caddie_action']))
- {
- switch ($_POST['caddie_action'])
- {
- case 'empty_all' :
- {
- $query = '
-DELETE FROM '.CADDIE_TABLE.'
- WHERE user_id = '.$user['id'].'
-;';
- pwg_query($query);
- break;
- }
- case 'empty_selected' :
- {
- if (isset($_POST['selection']) and count($_POST['selection']) > 0)
- {
- $query = '
-DELETE
- FROM '.CADDIE_TABLE.'
- WHERE element_id IN ('.implode(',', $_POST['selection']).')
- AND user_id = '.$user['id'].'
-;';
- pwg_query($query);
- }
- else
- {
- // TODO : add error
- }
- break;
- }
- }
- }
- else
- {
- // TODO : add error
- }
-}
-
-// +-----------------------------------------------------------------------+
// | global mode form submission |
// +-----------------------------------------------------------------------+
$errors = array();
@@ -133,16 +89,7 @@ if (isset($_POST['submit']))
{
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']);
- }
+ $collection = $page['cat_elements_id'];
break;
}
case 'selection' :
@@ -181,7 +128,7 @@ SELECT image_id
if ($_POST['dissociate'] != 0)
{
- // physical links must be broken, so we must first retrieve image_id
+ // physical links must not be broken, so we must first retrieve image_id
// which create virtual links with the category to "dissociate from".
$query = '
SELECT id
@@ -320,14 +267,36 @@ $base_url = PHPWG_ROOT_PATH.'admin.php';
$template->assign_vars(
array(
+ 'CATEGORY_TITLE'=>$page['title'],
+
'L_SUBMIT'=>$lang['submit'],
- 'U_ELEMENTS_LINE'=>$base_url.get_query_string_diff(array('display')),
- 'U_UNIT_MODE'=>add_session_id($base_url.'?page=element_set_unit'),
+ 'U_COLS'=>$base_url.get_query_string_diff(array('cols')),
+ 'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')),
+
+ 'U_UNIT_MODE'
+ =>
+ $base_url
+ .get_query_string_diff(array('mode','display'))
+ .'&amp;mode=unit',
'F_ACTION'=>$base_url.get_query_string_diff(array()),
)
);
+
+// +-----------------------------------------------------------------------+
+// | caddie options |
+// +-----------------------------------------------------------------------+
+
+if ('caddie' == $_GET['cat'])
+{
+ $template->assign_block_vars('in_caddie', array());
+}
+else
+{
+ $template->assign_block_vars('not_in_caddie', array());
+}
+
// +-----------------------------------------------------------------------+
// | global mode form |
// +-----------------------------------------------------------------------+
@@ -360,19 +329,20 @@ $template->assign_block_vars(
'OPTION' => '------------'
));
-$query = '
+if (count($page['cat_elements_id']) > 0)
+{
+ $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
+ WHERE ic.image_id IN ('.implode(',', $page['cat_elements_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);
+ display_select_cat_wrapper($query, array(), $blockname, true);
+}
$blockname = 'remove_keyword_option';
@@ -382,12 +352,7 @@ $template->assign_block_vars(
'OPTION' => '------------'
));
-$query = '
-SELECT element_id
- FROM '.CADDIE_TABLE.'
- WHERE user_id = '.$user['id'].'
-;';
-$keywords = get_elements_keywords(array_from_query($query, 'element_id'));
+$keywords = get_elements_keywords($page['cat_elements_id']);
foreach ($keywords as $keyword)
{
@@ -427,46 +392,59 @@ $template->assign_vars(array('DATE_CREATION_YEAR_VALUE'=>$year));
// | global mode thumbnails |
// +-----------------------------------------------------------------------+
-$page['nb_image_line'] = !empty($_GET['display']) ? $_GET['display'] : 5;
+$page['cols'] = !empty($_GET['cols']) ? intval($_GET['cols']) : 5;
+$page['nb_images'] = !empty($_GET['display']) ? intval($_GET['display']) : 20;
-$query = '
-SELECT element_id,path,tn_ext
- FROM '.IMAGES_TABLE.' INNER JOIN '.CADDIE_TABLE.' ON id=element_id
- WHERE user_id = '.$user['id'].'
+if (count($page['cat_elements_id']) > 0)
+{
+ $nav_bar = create_navigation_bar(
+ $base_url.get_query_string_diff(array('start')),
+ count($page['cat_elements_id']),
+ $page['start'],
+ $page['nb_images'],
+ '');
+ $template->assign_vars(array('NAV_BAR' => $nav_bar));
+
+ $query = '
+SELECT id,path,tn_ext
+ FROM '.IMAGES_TABLE.'
+ WHERE id IN ('.implode(',', $page['cat_elements_id']).')
'.$conf['order_by'].'
+ LIMIT '.$page['start'].', '.$page['nb_images'].'
;';
-//echo '<pre>'.$query.'</pre>';
-$result = pwg_query($query);
+ //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;
-}
+ // 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 == $page['nb_image_line'])
+ 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['id'],
+ 'SRC' => $src,
+ 'ALT' => 'TODO',
+ 'TITLE' => 'TODO'
+ )
+ );
+
+ // create a new line ?
+ if (++$row_number == $page['cols'])
+ {
$template->assign_block_vars('thumbnails.line', array());
$row_number = 0;
+ }
}
}
diff --git a/admin/element_set_unit.php b/admin/element_set_unit.php
index 0006bf919..b72c370fe 100644
--- a/admin/element_set_unit.php
+++ b/admin/element_set_unit.php
@@ -99,36 +99,6 @@ SELECT id, date_creation
}
// +-----------------------------------------------------------------------+
-// | page information init |
-// +-----------------------------------------------------------------------+
-
-// $page['start'] contains the number of the first element in its
-// category. For exampe, $page['start'] = 12 means we must show elements #12
-// and $page['nb_images'] next elements
-if (!isset($_GET['start'])
- or !is_numeric($_GET['start'])
- or $_GET['start'] < 0)
-{
- $page['start'] = 0;
-}
-else
-{
- $page['start'] = $_GET['start'];
-}
-
-// $page['nb_images'] is the number of elements to show in the page
-$page['nb_images'] = !empty($_GET['display']) ? $_GET['display'] : 5;
-
-// $page['cat_nb_images'] is the total number of elements to show in the
-// category
-$query = '
-SELECT COUNT(*)
- FROM '.CADDIE_TABLE.'
- WHERE user_id = '.$user['id'].'
-;';
-list($page['cat_nb_images']) = mysql_fetch_row(pwg_query($query));
-
-// +-----------------------------------------------------------------------+
// | template init |
// +-----------------------------------------------------------------------+
@@ -141,14 +111,18 @@ $base_url = PHPWG_ROOT_PATH.'admin.php';
$template->assign_vars(
array(
+ 'CATEGORY_TITLE'=>$page['title'],
+
'L_SUBMIT'=>$lang['submit'],
'U_ELEMENTS_PAGE'
=>$base_url.get_query_string_diff(array('display','start')),
'U_GLOBAL_MODE'
-// =>$base_url.get_query_string_diff(array('mode','display','start')),
- =>add_session_id($base_url.'?page=element_set_global'),
+ =>
+ $base_url
+ .get_query_string_diff(array('mode','display'))
+ .'&amp;mode=global',
'F_ACTION'=>$base_url.get_query_string_diff(array()),
)
@@ -158,62 +132,69 @@ $template->assign_vars(
// | global mode thumbnails |
// +-----------------------------------------------------------------------+
-$element_ids = array();
+$page['nb_images'] = !empty($_GET['display']) ? intval($_GET['display']) : 5;
+
+
+if (count($page['cat_elements_id']) > 0)
+{
+ $nav_bar = create_navigation_bar(
+ $base_url.get_query_string_diff(array('start')),
+ count($page['cat_elements_id']),
+ $page['start'],
+ $page['nb_images'],
+ '');
+ $template->assign_vars(array('NAV_BAR' => $nav_bar));
+
+
+ $element_ids = array();
-$query = '
-SELECT element_id,path,tn_ext,name,date_creation,comment,keywords,author
- FROM '.IMAGES_TABLE.' INNER JOIN '.CADDIE_TABLE.' ON id=element_id
- WHERE user_id = '.$user['id'].'
+ $query = '
+SELECT id,path,tn_ext,name,date_creation,comment,keywords,author
+ FROM '.IMAGES_TABLE.'
+ WHERE id IN ('.implode(',', $page['cat_elements_id']).')
'.$conf['order_by'].'
LIMIT '.$page['start'].', '.$page['nb_images'].'
;';
-$result = pwg_query($query);
-
-while ($row = mysql_fetch_array($result))
-{
- // echo '<pre>'; print_r($row); echo '</pre>';
- array_push($element_ids, $row['element_id']);
-
- $src = get_thumbnail_src($row['path'], @$row['tn_ext']);
+ $result = pwg_query($query);
- // creation date
- if (!empty($row['date_creation']))
- {
- list($year,$month,$day) = explode('-', $row['date_creation']);
- }
- else
+ while ($row = mysql_fetch_array($result))
{
- list($year,$month,$day) = array('','','');
+ // echo '<pre>'; print_r($row); echo '</pre>';
+ array_push($element_ids, $row['id']);
+
+ $src = get_thumbnail_src($row['path'], @$row['tn_ext']);
+
+ // creation date
+ if (!empty($row['date_creation']))
+ {
+ list($year,$month,$day) = explode('-', $row['date_creation']);
+ }
+ else
+ {
+ list($year,$month,$day) = array('','','');
+ }
+
+ $template->assign_block_vars(
+ 'element',
+ array(
+ 'ID' => $row['id'],
+ 'FILENAME' => $row['path'],
+ 'TN_SRC' => $src,
+ 'NAME' => @$row['name'],
+ 'AUTHOR' => @$row['author'],
+ 'COMMENT' => @$row['comment'],
+ 'DATE_CREATION_YEAR' => $year,
+ 'KEYWORDS' => @$row['keywords']
+ )
+ );
+
+ get_day_list('element.date_creation_day', $day);
+ get_month_list('element.date_creation_month', $month);
}
- $template->assign_block_vars(
- 'element',
- array(
- 'ID' => $row['element_id'],
- 'FILENAME' => $row['path'],
- 'TN_SRC' => $src,
- 'NAME' => @$row['name'],
- 'AUTHOR' => @$row['author'],
- 'COMMENT' => @$row['comment'],
- 'DATE_CREATION_YEAR' => $year,
- 'KEYWORDS' => @$row['keywords']
- )
- );
-
- get_day_list('element.date_creation_day', $day);
- get_month_list('element.date_creation_month', $month);
+ $template->assign_vars(array('IDS_LIST' => implode(',', $element_ids)));
}
-$template->assign_vars(array('IDS_LIST' => implode(',', $element_ids)));
-
-$nav_bar = create_navigation_bar(
- $base_url.get_query_string_diff(array('start')),
- $page['cat_nb_images'],
- $page['start'],
- $page['nb_images'],
- '');
-$template->assign_vars(array('NAV_BAR' => $nav_bar));
-
// +-----------------------------------------------------------------------+
// | sending html code |
// +-----------------------------------------------------------------------+
diff --git a/admin/include/functions.php b/admin/include/functions.php
index 80f329469..a02ab962f 100644
--- a/admin/include/functions.php
+++ b/admin/include/functions.php
@@ -300,6 +300,14 @@ DELETE FROM '.RATE_TABLE.'
'.wordwrap(implode(', ', $ids), 80, "\n").')
;';
pwg_query($query);
+
+ // destruction of the rates associated to this element
+ $query = '
+DELETE FROM '.CADDIE_TABLE.'
+ WHERE element_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+ pwg_query($query);
// destruction of the image
$query = '
diff --git a/category.php b/category.php
index 5484804ee..592ca526b 100644
--- a/category.php
+++ b/category.php
@@ -78,8 +78,7 @@ initialize_category();
// caddie filling :-)
if (isset($_GET['caddie']))
{
- include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
- // You can't add in caddie elements that are already in !
+// include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
$query = '
SELECT DISTINCT(id)
@@ -87,25 +86,7 @@ SELECT DISTINCT(id)
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
'.$page['where'].'
;';
- $ids = array_from_query($query, 'id');
-
- $query = '
-SELECT element_id
- FROM '.CADDIE_TABLE.'
- WHERE user_id = '.$user['id'].'
-;';
- $in_caddie = array_from_query($query, 'element_id');
-
- $caddiables = array_diff($ids, $in_caddie);
-
- $datas = array();
-
- foreach ($caddiables as $caddiable)
- {
- array_push($datas, array('element_id' => $caddiable,
- 'user_id' => $user['id']));
- }
- mass_inserts(CADDIE_TABLE, array('element_id','user_id'), $datas);
+ fill_caddie(array_from_query($query, 'id'));
}
// creation of the array containing the cat ids to expand in the menu
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 45e9dd236..8ab5a347c 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,5 +1,20 @@
2005-04-16 Pierrick LE GALL <pierrick /at/ phpwebgallery {dot} net>
+ * elements batch management : element_set page becomes the
+ frontend to element_set_global and element_set_unit, infos_images
+ (after a long time of use) become deprecated : the more powerful
+ element_set is used instead. Consequently, batch management
+ concerns caddie but also "normal categories".
+
+ * refactoring code in admin.php to include the sub-file (clearer)
+
+ * caddie : function fill_caddie replaces the code in category.php
+ and can be used in admin/element_set.php
+
+ * caddie : caddie table is added in delete_elements function
+
+2005-04-16 Pierrick LE GALL <pierrick /at/ phpwebgallery {dot} net>
+
* elements batch management : in addition to global mode, a unit
mode is added : ability to manage a set of elements, element by
element. This screen is very close to the existing "infos_images"
diff --git a/include/functions.inc.php b/include/functions.inc.php
index d3fd3aee9..a9c48f33b 100644
--- a/include/functions.inc.php
+++ b/include/functions.inc.php
@@ -550,15 +550,8 @@ function get_query_string_diff($rejects = array())
{
if (!in_array($key, $rejects))
{
- if ($is_first)
- {
- $query_string.= '?';
- $is_first = false;
- }
- else
- {
- $query_string.= '&amp;';
- }
+ $query_string.= $is_first ? '?' : '&amp;';
+ $is_first = false;
$query_string.= $key.'='.$value;
}
}
@@ -695,4 +688,39 @@ function get_month_list($blockname, $selection)
'OPTION' => $lang['month'][$i]));
}
}
+
+/**
+ * fill the current user caddie with given elements, if not already in
+ * caddie
+ *
+ * @param array elements_id
+ */
+function fill_caddie($elements_id)
+{
+ global $user;
+
+ include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+ $query = '
+SELECT element_id
+ FROM '.CADDIE_TABLE.'
+ WHERE user_id = '.$user['id'].'
+;';
+ $in_caddie = array_from_query($query, 'element_id');
+
+ $caddiables = array_diff($elements_id, $in_caddie);
+
+ $datas = array();
+
+ foreach ($caddiables as $caddiable)
+ {
+ array_push($datas, array('element_id' => $caddiable,
+ 'user_id' => $user['id']));
+ }
+
+ if (count($caddiables) > 0)
+ {
+ mass_inserts(CADDIE_TABLE, array('element_id','user_id'), $datas);
+ }
+}
?>
diff --git a/template/default/admin.tpl b/template/default/admin.tpl
index 953e15f80..5c86bfdd7 100644
--- a/template/default/admin.tpl
+++ b/template/default/admin.tpl
@@ -49,7 +49,7 @@
<li><a class="adminMenu" href="{U_WAITING}">{L_WAITING}</a></li>
<li><a class="adminMenu" href="{U_THUMBNAILS}">{L_THUMBNAILS}</a></li>
<li><a class="adminMenu" href="{U_COMMENTS}">{L_COMMENTS}</a></li>
- <li><a class="adminMenu" href="{U_SET}">Caddie</a></li>
+ <li><a class="adminMenu" href="{U_CADDIE}">Caddie</a></li>
</ul>
</div>
<div class="titreMenu">{L_IDENTIFY}</div>
diff --git a/template/default/admin/element_set_global.tpl b/template/default/admin/element_set_global.tpl
index d3abb16ad..edaba7b87 100644
--- a/template/default/admin/element_set_global.tpl
+++ b/template/default/admin/element_set_global.tpl
@@ -1,3 +1,5 @@
+<div class="admin">{CATEGORY_TITLE}</div>
+
<p style="text-align:center;">
global mode
| <a href="{U_UNIT_MODE}">unit mode</a>
@@ -10,8 +12,16 @@
<legend>Caddie management</legend>
<ul style="list-style-type:none;">
+
+ <!-- BEGIN in_caddie -->
<li><input type="radio" name="caddie_action" value="empty_all" /> Empty caddie</li>
<li><input type="radio" name="caddie_action" value="empty_selected" /> Take selected elements out of caddie</li>
+ <!-- END in_caddie -->
+
+ <!-- BEGIN not_in_caddie -->
+ <li><input type="radio" name="caddie_action" value="add_selected" /> Add selected elements to caddie</li>
+ <!-- END not_in_caddie -->
+
</ul>
<p style="text-align:center;"><input type="submit" value="{L_SUBMIT}" name="submit_caddie" class="bouton" /></p>
@@ -23,13 +33,20 @@
<legend>Display options</legend>
<p>elements per line :
- <a href="{U_ELEMENTS_LINE}&amp;display=4">4</a>
- | <a href="{U_ELEMENTS_LINE}&amp;display=5">5</a>
- | <a href="{U_ELEMENTS_LINE}&amp;display=6">6</a>
- | <a href="{U_ELEMENTS_LINE}&amp;display=7">7</a>
- | <a href="{U_ELEMENTS_LINE}&amp;display=8">8</a>
- | <a href="{U_ELEMENTS_LINE}&amp;display=9">9</a>
- | <a href="{U_ELEMENTS_LINE}&amp;display=10">10</a>
+ <a href="{U_COLS}&amp;cols=4">4</a>
+ | <a href="{U_COLS}&amp;cols=5">5</a>
+ | <a href="{U_COLS}&amp;cols=6">6</a>
+ | <a href="{U_COLS}&amp;cols=7">7</a>
+ | <a href="{U_COLS}&amp;cols=8">8</a>
+ | <a href="{U_COLS}&amp;cols=9">9</a>
+ | <a href="{U_COLS}&amp;cols=10">10</a>
+ </p>
+
+ <p>elements per page :
+ <a href="{U_DISPLAY}&amp;display=20">20</a>
+ | <a href="{U_DISPLAY}&amp;display=50">50</a>
+ | <a href="{U_DISPLAY}&amp;display=100">100</a>
+ | <a href="{U_DISPLAY}&amp;display=all">all</a>
</p>
</fieldset>
@@ -140,6 +157,8 @@
<legend>Elements</legend>
+ <div class="navigationBar">{NAV_BAR}</div>
+
<!-- BEGIN thumbnails -->
<table valign="top" align="center" class="thumbnail">
<!-- BEGIN line -->
diff --git a/template/default/admin/element_set_unit.tpl b/template/default/admin/element_set_unit.tpl
index 28ada6196..48dac9046 100644
--- a/template/default/admin/element_set_unit.tpl
+++ b/template/default/admin/element_set_unit.tpl
@@ -1,3 +1,5 @@
+<div class="admin">{CATEGORY_TITLE}</div>
+
<p style="text-align:center;">
<a href="{U_GLOBAL_MODE}">global mode</a>
| unit mode