diff --git a/admin/inc/class.bocategories.inc.php b/admin/inc/class.bocategories.inc.php
index 9c956a04ed..24219b1219 100644
--- a/admin/inc/class.bocategories.inc.php
+++ b/admin/inc/class.bocategories.inc.php
@@ -125,9 +125,9 @@
function exists($data)
{
- $data['type'] = $data['type'] ? $data['type'] : '';
- $data['cat_id'] = $data['cat_id'] ? $data['cat_id'] : '';
- return $this->cats->exists($data['type'],$data['cat_name'],$data['cat_id']);
+ //$data['type'] = $data['type'] ? $data['type'] : '';
+ //$data['cat_id'] = $data['cat_id'] ? $data['cat_id'] : '';
+ return $this->cats->exists($data);
}
function formatted_list($data)
diff --git a/admin/inc/class.uicategories.inc.php b/admin/inc/class.uicategories.inc.php
index 2df591a082..e54540c427 100644
--- a/admin/inc/class.uicategories.inc.php
+++ b/admin/inc/class.uicategories.inc.php
@@ -427,81 +427,84 @@
if ($GLOBALS['HTTP_POST_VARS']['confirm'])
{
- if ($GLOBALS['HTTP_POST_VARS']['modify_subs'])
+ switch ($GLOBALS['HTTP_POST_VARS']['subs'])
{
- $this->bo->delete($this->cat_id,False,True);
+ case 'move':
+ $this->bo->delete($this->cat_id,False,True);
+ Header('Location: ' . $GLOBALS['phpgw']->link('/index.php',$link_data));
+ break;
+ case 'drop':
+ $this->bo->delete($this->cat_id,True);
+ Header('Location: ' . $GLOBALS['phpgw']->link('/index.php',$link_data));
+ break;
+ default:
+ $error_msg = lang('Please choose one of the methods to handle the subcategories');
+ //$this->bo->delete($this->cat_id);
+ break;
}
- elseif ($GLOBALS['HTTP_POST_VARS']['drop_subs'])
- {
- $this->bo->delete($this->cat_id,True);
- }
- else
- {
- $this->bo->delete($this->cat_id);
- }
- Header('Location: ' . $GLOBALS['phpgw']->link('/index.php',$link_data));
+ }
+
+ $GLOBALS['phpgw']->template->set_file(array('category_delete' => 'delete_cat.tpl'));
+
+ $GLOBALS['phpgw']->template->set_var('error_msg',$error_msg);
+ $nolink = $GLOBALS['phpgw']->link('/index.php',$link_data);
+
+ $apps_cats = $this->bo->exists(array
+ (
+ 'type' => 'noapp',
+ 'cat_name' => '',
+ 'cat_id' => $this->cat_id
+ ));
+
+ $GLOBALS['phpgw']->common->phpgw_header();
+ $GLOBALS['phpgw']->template->set_var('hidden_vars','');
+
+ if ($apps_cats)
+ {
+ $GLOBALS['phpgw']->template->set_var('messages',lang('This category is currently being used by applications as a parent category') . '
'
+ . lang('You will need to remove the subcategories before you can delete this category'));
+
+ $GLOBALS['phpgw']->template->set_var('lang_subs','');
+ $GLOBALS['phpgw']->template->set_var('subs','');
+ $GLOBALS['phpgw']->template->set_var('nolink',$nolink);
+ $GLOBALS['phpgw']->template->set_var('deletehandle','');
+ $GLOBALS['phpgw']->template->set_var('donehandle','');
+ $GLOBALS['phpgw']->template->pfp('out','category_delete');
+ $GLOBALS['phpgw']->template->pfp('donehandle','done');
}
else
{
- $GLOBALS['phpgw']->template->set_file(array('category_delete' => 'delete_cat.tpl'));
+ $GLOBALS['phpgw']->template->set_var('messages',lang('Are you sure you want to delete this category ?'));
- $nolink = $GLOBALS['phpgw']->link('/index.php',$link_data);
-
- $apps_cats = $this->bo->exists(array
+ $exists = $this->bo->exists(array
(
'type' => 'subs',
'cat_name' => '',
'cat_id' => $this->cat_id
));
- $GLOBALS['phpgw']->common->phpgw_header();
-
- $hidden_vars = '' . "\n";
- $GLOBALS['phpgw']->template->set_var('hidden_vars',$hidden_vars);
-
- /*if ($apps_cats)
+ if ($exists)
{
- $GLOBALS['phpgw']->template->set_var('messages',lang('This category is currently being used by applications as a parent category') . '
'
- . lang('You will need to remove the subcategories before you can delete this category'));
+ $sub_select = '' . lang('Do you want to move all global subcategories one level down ?') . '
';
+ $sub_select .= '' . lang('Do you want to delete all global subcategories ?');
+ $GLOBALS['phpgw']->template->set_var('sub_select',$sub_select);
- $GLOBALS['phpgw']->template->set_var('lang_subs','');
- $GLOBALS['phpgw']->template->set_var('subs','');
- $GLOBALS['phpgw']->template->set_var('nolink',$nolink);
- $GLOBALS['phpgw']->template->set_var('deletehandle','');
- $GLOBALS['phpgw']->template->set_var('donehandle','');
- $GLOBALS['phpgw']->template->pfp('out','category_delete');
- $GLOBALS['phpgw']->template->pfp('donehandle','done');
- }
- else
- {*/
- $GLOBALS['phpgw']->template->set_var('messages',lang('Are you sure you want to delete this category ?'));
-
- $exists = $this->bo->exists(array
- (
- 'type' => 'subs',
- 'cat_name' => '',
- 'cat_id' => $this->cat_id
- ));
-
- if ($exists)
- {
- $GLOBALS['phpgw']->template->set_var('lang_drop_subs',lang('Do you also want to delete all global subcategories ?'));
+ /* $GLOBALS['phpgw']->template->set_var('lang_drop_subs',lang('Do you also want to delete all global subcategories ?'));
$GLOBALS['phpgw']->template->set_var('drop_subs','');
$GLOBALS['phpgw']->template->set_var('lang_modify_subs',lang('Do you want to move all global subcategories one level down ?'));
- $GLOBALS['phpgw']->template->set_var('subs','');
- }
+ $GLOBALS['phpgw']->template->set_var('subs',''); */
+ }
- $GLOBALS['phpgw']->template->set_var('nolink',$nolink);
- $GLOBALS['phpgw']->template->set_var('lang_no',lang('No'));
+ $GLOBALS['phpgw']->template->set_var('nolink',$nolink);
+ $GLOBALS['phpgw']->template->set_var('lang_no',lang('No'));
- $link_data['menuaction'] = 'admin.uicategories.delete';
- $link_data['cat_id'] = $this->cat_id;
- $GLOBALS['phpgw']->template->set_var('action_url',$GLOBALS['phpgw']->link('/index.php',$link_data));
- $GLOBALS['phpgw']->template->set_var('lang_yes',lang('Yes'));
+ $link_data['menuaction'] = 'admin.uicategories.delete';
+ $link_data['cat_id'] = $this->cat_id;
+ $GLOBALS['phpgw']->template->set_var('action_url',$GLOBALS['phpgw']->link('/index.php',$link_data));
+ $GLOBALS['phpgw']->template->set_var('lang_yes',lang('Yes'));
- $GLOBALS['phpgw']->template->fp('phpgw_body','category_delete');
- //}
+ $GLOBALS['phpgw']->template->fp('phpgw_body','category_delete');
}
}
}
diff --git a/phpgwapi/inc/class.categories.inc.php b/phpgwapi/inc/class.categories.inc.php
index 091414592f..c1548d803d 100644
--- a/phpgwapi/inc/class.categories.inc.php
+++ b/phpgwapi/inc/class.categories.inc.php
@@ -4,8 +4,8 @@
* This file written by Joseph Engo *
* and Bettina Gille [ceb@phpgroupware.org] *
* Category manager *
- * Copyright (C) 2000,2001,2002 Joseph Engo *
- * -------------------------------------------------------------------------*
+ * Copyright (C) 2000 - 2002 Joseph Engo *
+ * ------------------------------------------------------------------------ *
* This library is part of the phpGroupWare API *
* http://www.phpgroupware.org/api *
* ------------------------------------------------------------------------ *
@@ -70,10 +70,11 @@
{
switch ($type)
{
- case 'subs': $s = " AND cat_parent != '0'"; break;
- case 'mains': $s = " AND cat_parent = '0'"; break;
- case 'appandmains': $s = " AND cat_appname='" . $this->app_name . "' AND cat_parent ='0'"; break;
- case 'appandsubs': $s = " AND cat_appname='" . $this->app_name . "' AND cat_parent !='0'"; break;
+ case 'subs': $s = " AND cat_parent != '0'"; break;
+ case 'mains': $s = " AND cat_parent = '0'"; break;
+ case 'appandmains': $s = " AND cat_appname='" . $this->app_name . "' AND cat_parent ='0'"; break;
+ case 'appandsubs': $s = " AND cat_appname='" . $this->app_name . "' AND cat_parent !='0'"; break;
+ case 'noapp': $s = " AND cat_appname != '" . $this->app_name . "'"; break;
default: return False;
}
return $s;
@@ -536,8 +537,8 @@
{
if ($cats[$i]['level'] == 1)
{
- $this->db->query('UPDATE phpgw_categories set cat_level=0, cat_parent=0, cat_main=' . $cats[$i]['id']
- . ' WHERE cat_id=' . $cats[$i]['id'],__LINE__,__FILE__);
+ $this->db->query("UPDATE phpgw_categories set cat_level=0, cat_parent=0, cat_main='" . intval($cats[$i]['id'])
+ . " WHERE cat_id='" . intval($cats[$i]['id']) . "' AND cat_appname='" . $this->app_name . "'",__LINE__,__FILE__);
$new_main = $cats[$i]['id'];
}
else
@@ -552,8 +553,8 @@
$update_parent = ',cat_parent=' . $new_parent;
}
- $this->db->query('UPDATE phpgw_categories set cat_level=' . ($cats[$i]['level']-1) . $update_main . $update_parent
- . ' WHERE cat_id=' . $cats[$i]['id'],__LINE__,__FILE__);
+ $this->db->query("UPDATE phpgw_categories set cat_level='" . ($cats[$i]['level']-1) . "'" . $update_main . $update_parent
+ . " WHERE cat_id='" . intval($cats[$i]['id']) . "' AND cat_appname='" . $this->app_name . "'",__LINE__,__FILE__);
}
}
}
@@ -662,6 +663,16 @@
*/
function exists($type,$cat_name = '',$cat_id = '')
{
+ if(is_array($type))
+ {
+ $temp_type = $type['type'];
+ $cat_name = $type['cat_name'] ? $type['cat_name'] : '';
+ $cat_id = $type['cat_id'] ? $type['cat_id'] : '';
+ settype($type,'string');
+ $type = $temp_type;
+ unset($temp_type);
+ }
+
$filter = $this->filter($type);
if ($cat_name)