From 8449be665719bf27b7745da639779d8015588b9b Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Thu, 20 Feb 2014 09:50:03 +0100 Subject: [PATCH] Move child tasks to new list if changed during edit --- plugins/tasklist/tasklist.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php index 53597d58..1eaacbd1 100644 --- a/plugins/tasklist/tasklist.php +++ b/plugins/tasklist/tasklist.php @@ -196,8 +196,21 @@ class tasklist extends rcube_plugin case 'edit': $rec = $this->prepare_task($rec); if ($success = $this->driver->edit_task($rec)) { - $refresh = $this->driver->get_task($rec); + $refresh[] = $this->driver->get_task($rec); $this->cleanup_task($rec); + + // move all childs if list assignment was changed + if (!empty($rec['_fromlist']) && !empty($rec['list']) && $rec['_fromlist'] != $rec['list']) { + foreach ($this->driver->get_childs(array('id' => $rec['id'], 'list' => $rec['_fromlist']), true) as $cid) { + $child = array('id' => $cid, 'list' => $rec['list'], '_fromlist' => $rec['_fromlist']); + if ($this->driver->move_task($child)) { + $r = $this->driver->get_task($child); + if ((bool)($filter & self::FILTER_MASK_COMPLETE) == ($r['complete'] == 1.0)) { + $refresh[] = $r; + } + } + } + } } break; @@ -210,7 +223,7 @@ class tasklist extends rcube_plugin $success = true; // move all childs, too - foreach ($this->driver->get_childs(array('id' => $rec['id'], 'list' => $rec['_fromlist'])) as $cid) { + foreach ($this->driver->get_childs(array('id' => $rec['id'], 'list' => $rec['_fromlist']), true) as $cid) { $child = $rec; $child['id'] = $cid; if ($this->driver->move_task($child)) {