Make sure all folders in the path are created - ie. if archive folder

is configured as Archive/YYYY/MM, create both Archive/YYYY and Archive/YYYY/MM.
pull/152/head
Aleksander Machniak 11 years ago
parent a222f5c045
commit d72a41dc8e

@ -110,19 +110,20 @@ class archive extends rcube_plugin
*/
function move_messages()
{
$rcmail = rcmail::get_instance();
$this->add_texts('localization');
$storage = $rcmail->get_storage();
$storage->set_folder(($current_mbox = rcube_utils::get_input_value('_mbox', RCUBE_INPUT_POST)));
$delimiter = $storage->get_hierarchy_delimiter();
$rcmail = rcmail::get_instance();
$storage = $rcmail->get_storage();
$delimiter = $storage->get_hierarchy_delimiter();
$archive_folder = $rcmail->config->get('archive_mbox');
$archive_type = $rcmail->config->get('archive_type', '');
$archive_type = $rcmail->config->get('archive_type', '');
$result = array('reload' => false, 'update' => false, 'errors' => array());
$storage->set_folder(($current_mbox = rcube_utils::get_input_value('_mbox', RCUBE_INPUT_POST)));
$result = array('reload' => false, 'update' => false, 'errors' => array());
$uids = explode(',', rcube_utils::get_input_value('_uid', RCUBE_INPUT_POST));
$folders = array();
$uids = explode(',', rcube_utils::get_input_value('_uid', RCUBE_INPUT_POST));
foreach ($uids as $uid) {
if (!$archive_folder || !($message = $rcmail->storage->get_message($uid))) {
continue;
@ -164,12 +165,24 @@ class archive extends rcube_plugin
}
// compose full folder path
$folder = $archive_folder . ($subfolder ? $delimiter . $subfolder : '');
$folder = $archive_folder . ($subfolder ? $delimiter . $subfolder : '');
// create archive subfolder if it doesn't yet exist
if (!$storage->folder_exists($folder, false)) {
if ($storage->create_folder($folder, true))
$result['reload'] = true;
// we'll create all folders in the path
if (!in_array($folder, $folders)) {
$list = $storage->list_folders('', $archive_folder . '*', 'mail', null, true);
$path = explode($delimiter, $folder);
for ($i=0; $i<count($path); $i++) {
$_folder = implode($delimiter, array_slice($path, 0, $i+1));
if (!in_array($_folder, $list)) {
if ($storage->create_folder($_folder, true)) {
$result['reload'] = true;
}
}
}
$folders[] = $folder;
}
// move message to target folder

@ -13,9 +13,9 @@
<email>roundcube@gmail.com</email>
<active>yes</active>
</lead>
<date>2013-01-20</date>
<date>2013-10-30</date>
<version>
<release>2.0</release>
<release>2.1</release>
<api>2.0</api>
</version>
<stability>

Loading…
Cancel
Save