diff options
author | plegall <plg@piwigo.org> | 2005-04-16 16:56:32 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2005-04-16 16:56:32 +0000 |
commit | b63d91c59e084223d419b4861627673821d3b15b (patch) | |
tree | add112962d09483b6a7ced06cd74fba4fbb538c0 /admin | |
parent | 41e52d7a8a4086f92fe318c22ed69ef3e6a4047b (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.php | 2 | ||||
-rw-r--r-- | admin/element_set.php | 193 | ||||
-rw-r--r-- | admin/element_set_global.php | 178 | ||||
-rw-r--r-- | admin/element_set_unit.php | 137 | ||||
-rw-r--r-- | admin/include/functions.php | 8 |
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.'&delete='.$category['id']), 'U_INFO_IMG' - => add_session_id($base_url.'infos_images&cat_id='.$category['id']) + => add_session_id($base_url.'element_set&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')) + .'&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')) + .'&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 = ' |