function message_tags_message_page_selected($tools) { if ($tools->get_setting('tags_disabled')) { return; } $tags = hm_new('tags', $tools); $mailbox = $tools->get_mailbox(); $uid = $tools->get_current_message_uid(); $tags->get_tags_for_message($uid); if (isset($_SESSION['tag_page_list']) && !empty($_SESSION['tag_page_list'])) { if (isset($tags->tag_map[$mailbox][$uid])) { $res = get_tag_msg_list($_SESSION['tag_page_list'], $tools, $tags); if (isset($res['header_data']) && !empty($res['header_data'])) { $tools->add_to_store('tag_header_list', $res['header_data']); } } } $tools->imap_select_mailbox($mailbox); }
function url_action_message_tags($tools, $get, $post) { if (!$tools->logged_in() || $tools->get_setting('tags_disabled')) { $tools->page_not_found(); return; } $tools->add_style('<link rel="stylesheet" type="text/css" href="?page=mailbox&theme=' . $tools->get_theme() . '&css=1" />'); $tools->add_inline_js(' function clear_rename_tag(tag) { document.getElementById("rename_"+tag).innerHTML = ""; return false; } function submit_tag_rename(tag) { if( window.event ) { e = window.event; } if( typeof( e.keyCode ) == "number" ) { e = e.keyCode; } else if( typeof( e.which ) == "number" ) { e = e.which; } else if( typeof( e.charCode ) == "number" ) { e = e.charCode; } if (e == 13) { var new_tag = document.getElementById("rename_fld").value; if (new_tag != tag) { document.getElementById("dest_name").value = new_tag; document.getElementById("src_name").value = tag; document.forms["rename_form"].submit(); } else { clear_rename_tag(tag); } } return false; } function rename_tag(tag) { document.getElementById("rename_"+tag).innerHTML = \'<input onkeyup="return submit_tag_rename(\\\'\'+tag+\'\\\')" onblur="return clear_rename_tag(\\\'\'+tag+\'\\\')" type="text" id="rename_fld" value="\'+tag+\'" />\'; document.getElementById("rename_fld").select(); return false; } function repair_tags(tag) { if (confirm("Attempting to correct tag data could result in some tags being lost. Continue?")) { document.getElementById("del_tag").value = "^repair^"; document.forms["del_form"].submit(); } return false; } function delete_all_tags(tag) { if (confirm("Are you sure you want to delete ALL your tags?")) { document.getElementById("del_tag").value = "^all^"; document.forms["del_form"].submit(); } return false; } function delete_tag(tag) { if (confirm("Are you sure you want to delete the \\""+tag+"\\" tag?")) { document.getElementById("del_tag").value = tag; document.forms["del_form"].submit(); } return false; } function remove_tag(tag) { var url = document.location.href; var pattern = new RegExp(/tag\\=(.+)/); var mymatch = pattern.exec(url); if (mymatch.length > 1) { var tags = mymatch[1].replace("%2B"+tag, "").replace("/%5E"+tag, "").replace(tag, ""); tags = tags.replace(/^(%2B|%5E)/, ""); if (tags) { document.location.href = "?page=message_tags&tag="+tags; } else { document.location.href = "?page=message_tags"; } } return false; } function add_tag_start() { var tag_type = document.getElementById("add_type"); if (tag_type) { if (tag_type.options[tag_type.selectedIndex].value == "or") { return add_tag_or(); } } return add_tag_and(); } function add_tag_or() { var new_tag = get_tag(); if (new_tag) { document.location.href = document.location.href+urlencode("^"+new_tag); } return false; } function add_tag_and() { var new_tag = get_tag(); if (new_tag) { document.location.href = document.location.href+urlencode("+"+new_tag); } return false; } function reset_tag_list() { document.location.href = "?page=message_tags"; } function get_tag() { var new_tag; var tag_list = document.getElementById("tag_list"); if (tag_list) { new_tag = tag_list.options[tag_list.selectedIndex].value; } return new_tag; } '); $tags = hm_new('tags', $tools); $tools->set_title('Message Tags'); $pd = array(); $pd['tag'] = false; $pd['header_data'] = array(); $pd['tag_list'] = $tags->tag_list; if (!$tools->logged_in()) { $tools->page_not_found(); } else { if (isset($_POST['del_tag']) && isset($tags->tag_list[$_POST['del_tag']])) { $tools->send_notice($tags->delete_tag($_POST['del_tag'])); $pd['tag_list'] = $tags->tag_list; } elseif (isset($_POST['del_tag']) && $_POST['del_tag'] == '^repair^') { $tags->repair(); $pd['tag_list'] = $tags->tag_list; $tools->send_notice('Tag information repaired'); } elseif (isset($_POST['del_tag']) && $_POST['del_tag'] == '^all^') { $tags->reset(); $pd['tag_list'] = array(); $tools->send_notice('All Tags Deleted'); } elseif (isset($_POST['src_name']) && isset($_POST['dest_name'])) { if (isset($tags->tag_list[$_POST['src_name']])) { if ($tags->valid_tag($_POST['dest_name'])) { $tools->send_notice($tags->rename_tag($_POST['src_name'], $_POST['dest_name'])); $pd['tag_list'] = $tags->tag_list; } else { $tools->send_notice('Invalid tag name'); } } } $tag_list = array(); $tag = false; $_SESSION['tag_page_list'] = array(); if (isset($_GET['tag'])) { if (isset($tags->tag_list[$_GET['tag']])) { $tag_list[0] = array($_GET['tag']); $tag = true; } elseif (strpos($_GET['tag'], '^') !== false || strpos($_GET['tag'], '+') !== false) { $group_id = 0; $bits = preg_split("/(\\^|\\+)/", $_GET['tag'], -1, PREG_SPLIT_DELIM_CAPTURE); $bucket = false; foreach ($bits as $i => $v) { if (!$bucket && isset($tags->tag_list[$v])) { $tag_list[$group_id][] = $v; $tag = true; } elseif ($bucket == 'and' && isset($tags->tag_list[$v])) { $tag_list[$group_id][] = $v; $tag = true; } elseif ($bucket == 'or' && isset($tags->tag_list[$v])) { $group_id++; $tag_list[$group_id][] = $v; $tag = true; } if ($v == '^') { $bucket = 'or'; } elseif ($v == '+') { $bucket = 'and'; } } } } if ($tag) { $_SESSION['tag_page_list'] = $tag_list; $pd['tag'] = true; $res = get_tag_msg_list($tag_list, $tools, $tags); if (isset($res['header_data'])) { $pd['header_data'] = $res['header_data']; } $pd['tag_dsp'] = $res['tag_dsp']; $pd['tags'] = $res['tags']; usort($pd['header_data'], 'sort_date'); } } return $pd; }