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 // create new folder
else { 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; $this->last_error = kolab_storage::$last_error;
} }

View file

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

View file

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