Example #1
0
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);
}
Example #2
0
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&amp;theme=' . $tools->get_theme() . '&amp;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;
}