Skip to content

Commit 5b81b38

Browse files
authored
Merge pull request #1623 from christer77/prevent-archiving-already-archived-messages
fix(frontend): prevent archiving already archived messages
2 parents 4e61573 + fc00902 commit 5b81b38

File tree

5 files changed

+27
-1
lines changed

5 files changed

+27
-1
lines changed

modules/core/hm-mailbox.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,13 @@ public function select_folder($folder) {
631631
return true;
632632
}
633633

634+
public function is_archive_folder($id, $user_config, $current_folder) {
635+
if ($this->is_imap()) {
636+
return is_imap_archive_folder($id, $user_config, $current_folder);
637+
}
638+
return false;
639+
}
640+
634641
public function get_config() {
635642
return $this->config;
636643
}

modules/imap/functions.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,3 +1651,17 @@ function save_sent_msg($handler, $imap_id, $mailbox, $imap_details, $msg, $msg_i
16511651
}
16521652
return [$uid, $sent_folder];
16531653
}}
1654+
1655+
if (!hm_exists('is_imap_archive_folder')) {
1656+
function is_imap_archive_folder($server_id, $user_config, $current_folder) {
1657+
$special_folders = $user_config->get('special_imap_folders', array());
1658+
1659+
if (isset($special_folders[$server_id]['archive'])) {
1660+
$archive_folder = $special_folders[$server_id]['archive'];
1661+
if (bin2hex($archive_folder) == $current_folder) {
1662+
return true;
1663+
}
1664+
}
1665+
1666+
return false;
1667+
}}

modules/imap/handler_modules.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1925,6 +1925,8 @@ public function process() {
19251925
$save_reply_text = true;
19261926
}
19271927
$msg_headers = $mailbox->get_message_headers(hex2bin($form['folder']), $form['imap_msg_uid']);
1928+
1929+
$this->out('is_archive_folder', $mailbox->is_archive_folder($form['imap_server_id'], $this->user_config, $form['folder']));
19281930
$this->out('folder_status', array('imap_'.$form['imap_server_id'].'_'.$form['folder'] => $mailbox->get_folder_state()));
19291931
$this->out('msg_struct', $msg_struct);
19301932
$this->out('list_headers', get_list_headers($msg_headers));

modules/imap/hm-imap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2667,5 +2667,6 @@ public function server_support_children_capability() {
26672667

26682668
return false;
26692669
}
2670+
26702671
}
26712672
}

modules/imap/output_modules.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,9 @@ protected function output() {
385385
$txt .= '<a class="delete_link hlink text-decoration-none btn btn-sm btn-outline-secondary" id="delete_message" href="#">'.$this->trans('Delete').'</a>';
386386
$txt .= '<div class="position-relative"><a class="hlink text-decoration-none btn btn-sm btn-outline-secondary dropdown-toggle" id="copy_message" href="#" data-bs-toggle="dropdown">'.$this->trans('Copy').'</a><div class="move_to_location dropdown-menu" data-bs-auto-close="outside"></div></div>';
387387
$txt .= '<div class="position-relative"><a class="hlink text-decoration-none btn btn-sm btn-outline-secondary dropdown-toggle" id="move_message" href="#" data-bs-toggle="dropdown">'.$this->trans('Move').'</a><div class="move_to_location dropdown-menu" data-bs-auto-close="outside"></div></div>';
388-
$txt .= '<a class="archive_link hlink text-decoration-none btn btn-sm btn-outline-secondary" id="archive_message" href="#">'.$this->trans('Archive').'</a>';
388+
if (!$this->get('is_archive_folder')) {
389+
$txt .= '<a class="archive_link hlink text-decoration-none btn btn-sm btn-outline-secondary" id="archive_message" href="#">'.$this->trans('Archive').'</a>';
390+
}
389391

390392
if($this->get('tags')){
391393
$txt .= tags_dropdown($this, $headers);

0 commit comments

Comments
 (0)