diff options
Diffstat (limited to 'lib/kolab_sync_data.php')
-rw-r--r-- | lib/kolab_sync_data.php | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/lib/kolab_sync_data.php b/lib/kolab_sync_data.php index 59bff31..ba09dd9 100644 --- a/lib/kolab_sync_data.php +++ b/lib/kolab_sync_data.php @@ -377,13 +377,12 @@ abstract class kolab_sync_data implements Syncroton_Data_IData foreach ($folders as $folderid) { $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null) { - continue; + if (!$folder || !$folder->valid) { + throw new Syncroton_Exception_Status_ItemOperations(Syncroton_Exception_Status_ItemOperations::ITEM_SERVER_ERROR); } - $folder = $this->getFolderObject($foldername); - // Remove all entries $folder->delete_all(); @@ -392,13 +391,12 @@ abstract class kolab_sync_data implements Syncroton_Data_IData $list = $this->listFolders($folderid); foreach ($list as $folderid => $folder) { $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null) { - continue; + if (!$folder || !$folder->valid) { + throw new Syncroton_Exception_Status_ItemOperations(Syncroton_Exception_Status_ItemOperations::ITEM_SERVER_ERROR); } - $folder = $this->getFolderObject($foldername); - // Remove all entries $folder->delete_all(); } @@ -545,9 +543,10 @@ abstract class kolab_sync_data implements Syncroton_Data_IData foreach ($folders as $folder_id) { $foldername = $this->backend->folder_id2name($folder_id, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null || !($folder = $this->getFolderObject($foldername))) { - continue; + if (!$folder || !$folder->valid) { + throw new Syncroton_Exception_Status(Syncroton_Exception_Status::SERVER_ERROR); } $found++; @@ -911,14 +910,9 @@ abstract class kolab_sync_data implements Syncroton_Data_IData foreach ($folders as $folderid) { $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null) { - continue; - } - - $folder = $this->getFolderObject($foldername); - - if ($folder && ($object = $folder->get_object($entryid))) { + if ($folder && $folder->valid && ($object = $folder->get_object($entryid))) { $object['_folderid'] = $folderid; return $object; @@ -950,7 +944,7 @@ abstract class kolab_sync_data implements Syncroton_Data_IData $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); $folder = $this->getFolderObject($foldername); - if ($folder && $folder->save($data)) { + if ($folder && $folder->valid && $folder->save($data)) { if (!empty($tags)) { $this->setKolabTags($data['uid'], $tags); } @@ -975,7 +969,7 @@ abstract class kolab_sync_data implements Syncroton_Data_IData unset($data['categories']); } - if ($folder && $folder->save($data)) { + if ($folder && $folder->valid && $folder->save($data)) { if (isset($tags)) { $this->setKolabTags($data['uid'], $tags); } @@ -995,7 +989,7 @@ abstract class kolab_sync_data implements Syncroton_Data_IData if ($object) { $folder = $this->getFolderObject($object['_mailbox']); - if ($folder && $folder->delete($entryid)) { + if ($folder && $folder->valid && $folder->delete($entryid)) { if ($this->tag_categories) { $this->setKolabTags($object['uid'], null); } @@ -1078,12 +1072,12 @@ abstract class kolab_sync_data implements Syncroton_Data_IData */ protected function getFolderObject($name) { - if ($name === null) { + if ($name === null || $name === '') { return null; } if (!isset($this->folders[$name])) { - $this->folders[$name] = kolab_storage::get_folder($name); + $this->folders[$name] = kolab_storage::get_folder($name, $this->modelName); } return $this->folders[$name]; |