aboutsummaryrefslogtreecommitdiffstats
path: root/admin
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 /admin
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
Diffstat (limited to 'admin')
-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
5 files changed, 339 insertions, 179 deletions
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 = '