Remove category children if that option is chosen

This commit is contained in:
Nathan Gray 2011-02-04 17:29:24 +00:00
parent efc61a3243
commit 146ff34de1

View File

@ -783,14 +783,31 @@ class addressbook_so
*/ */
function delete_category($data) function delete_category($data)
{ {
// get all cats if you want to drop sub cats
$drop_subs = ($data['drop_subs'] && !$data['modify_subs']);
if($drop_subs)
{
$cats = new categories('', 'addressbook');
$cat_ids = $cats->return_all_children($data['cat_id']);
}
else
{
$cat_ids = array($data['cat_id']);
}
// Get addresses that use the category // Get addresses that use the category
$ids = $this->search(array('cat_id' => $data['cat_id']), array('contact_id', 'cat_id')); @set_time_limit( 0 );
$ids = array();
foreach($cat_ids as $cat_id)
{
$ids = $this->search(array('cat_id' => $cat_id), array('contact_id', 'cat_id'));
foreach($ids as &$info) foreach($ids as &$info)
{ {
$info['cat_id'] = implode(',',array_diff(explode(',',$info['cat_id']), array($data['cat_id']))); $info['cat_id'] = implode(',',array_diff(explode(',',$info['cat_id']), $cat_ids));
$this->save($info); $this->save($info);
} }
} }
}
/** /**
* return the backend, to be used for the given $contact_id * return the backend, to be used for the given $contact_id