@@ -23,8 +23,8 @@ class Hm_Handler_add_tag_to_message extends Hm_Handler_Module {
2323 * Use IMAP to tag the selected message uid
2424 */
2525 public function process () {
26- list ($ success , $ form ) = $ this ->process_form (array ('tag_id ' , 'list_path ' ));
27- if (!$ success ) {
26+ list ($ success , $ form ) = $ this ->process_form (array ('tag_id ' , 'list_path ' , ' tag ' ));
27+ if (!$ success || ! isset ( $ form [ ' tag ' ]) || $ form [ ' tag ' ] != true ) {
2828 return ;
2929 }
3030
@@ -53,6 +53,45 @@ public function process() {
5353 }
5454}
5555
56+ /**
57+ * Remove tag/label from message
58+ * @subpackage imap/handler
59+ */
60+ class Hm_Handler_remove_tag_from_message extends Hm_Handler_Module {
61+ /**
62+ * Use IMAP to remove tag from the selected message uid
63+ */
64+ public function process () {
65+ list ($ success , $ form ) = $ this ->process_form (array ('tag_id ' , 'list_path ' , 'untag ' ));
66+ if (!$ success || !isset ($ form ['untag ' ]) || $ form ['untag ' ] != true ) {
67+ return ;
68+ }
69+
70+ $ untaged_messages = 0 ;
71+ $ ids = explode (', ' , $ form ['list_path ' ]);
72+ foreach ($ ids as $ msg_part ) {
73+ list ($ imap_server_id , $ msg_id , $ folder ) = explode ('_ ' , $ msg_part );
74+ $ folder = hex2bin ($ folder );
75+ $ untagged = Hm_Tags::removeMessage ($ msg_id , $ form ['tag_id ' ]);
76+ if ($ untagged ) {
77+ $ untaged_messages ++;
78+ }
79+ }
80+ $ this ->out ('untaged_messages ' , $ untaged_messages );
81+ $ type = 'success ' ;
82+ if ($ untaged_messages == count ($ ids )) {
83+ $ msg = 'Tag removed ' ;
84+ } elseif ($ untaged_messages > 0 ) {
85+ $ msg = 'Messages have been untaged ' ;
86+ $ type = 'warning ' ;
87+ } else {
88+ $ msg = 'ERRFailed to remove tag from selected messages ' ;
89+ $ type = 'danger ' ;
90+ }
91+ Hm_Msgs::add ($ msg , $ type );
92+ }
93+ }
94+
5695/**
5796 * @subpackage tags/handler
5897 */
0 commit comments