Improved folder_create() method

This commit is contained in:
Aleksander Machniak 2012-05-17 15:57:23 +02:00
parent d91fe84617
commit cb61bf76a1
3 changed files with 18 additions and 13 deletions

View file

@ -307,7 +307,7 @@ class kolab_driver extends calendar_driver
}
// create new folder
else {
if (!($result = kolab_storage::folder_create($folder, 'event', false)))
if (!($result = kolab_storage::folder_create($folder, 'event')))
$this->last_error = kolab_storage::$last_error;
}

View file

@ -497,7 +497,7 @@ class kolab_addressbook extends rcube_plugin
$folder = $plugin['name'];
if (!$plugin['abort']) {
$result = kolab_storage::folder_create($folder, 'contact', false);
$result = kolab_storage::folder_create($folder, 'contact');
}
else {
$result = $plugin['result'];

View file

@ -173,25 +173,30 @@ class kolab_storage
/**
* Creates IMAP folder
*
* @param string $name Folder name (UTF7-IMAP)
* @param string $type Folder type
* @param bool $default True if older is default (for specified type)
* @param string $name Folder name (UTF7-IMAP)
* @param string $type Folder type
* @param bool $subscribed Sets folder subscription
*
* @return bool True on success, false on failure
*/
public static function folder_create($name, $type=null, $default=false)
public static function folder_create($name, $type = null, $subscribed = false)
{
self::setup();
if (self::$imap->create_folder($name)) {
if ($saved = self::$imap->create_folder($name, $subscribed)) {
// set metadata for folder type
$ctype = $type . ($default ? '.default' : '');
$saved = self::$imap->set_metadata($name, array(self::CTYPE_KEY => $ctype));
if ($type) {
$saved = self::$imap->set_metadata($name, array(self::CTYPE_KEY => $type));
if ($saved)
return true;
else // revert if metadata could not be set
self::$imap->delete_folder($name);
// revert if metadata could not be set
if (!$saved) {
self::$imap->delete_folder($name);
}
}
}
if ($saved) {
return true;
}
self::$last_error = self::$imap->get_error_str();