Example #1
0
function delete_duplicate_messages($store, $entryid)
{
    global $total_deleted;
    $folder = mapi_msgstore_openentry($store, $entryid);
    if (!$folder) {
        print "Unable to open folder.";
        return false;
    }
    $table = mapi_folder_getcontentstable($folder);
    if (!$table) {
        print "Unable to open table.";
        return false;
    }
    $org_hash = null;
    $dup_messages = array();
    $dup_count = 0;
    $result = mapi_table_sort($table, array(PR_SUBJECT => TABLE_SORT_ASCEND));
    if ($result == false) {
        die("Could not sort table\n");
    }
    while (1) {
        // query messages from folders content table
        $rows = mapi_table_queryrows($table, array(PR_MESSAGE_SIZE, PR_CLIENT_SUBMIT_TIME, PR_BODY, PR_HTML, PR_ENTRYID, PR_SUBJECT), 0, 50);
        if (count($rows) == 0) {
            break;
        }
        // we got the messages
        foreach ($rows as $row) {
            // hash message body (plaintext + html + subject)
            $md5_subject = md5($row[PR_SUBJECT]);
            $md5_body = md5($row[PR_BODY]);
            $md5_html = md5($row[PR_HTML]);
            // concat hashes, just in case there are messages with
            // no HTML or plaintext content.
            $cur_hash = $md5_body . $md5_html . $md5_subject;
            // when we have accumulated enough messages, perform a burst delete
            if ($dup_count == 50) {
                echo " [i] Deleting {$dup_count} duplicates...";
                delete_messages($folder, $dup_messages);
                // reset the delete-queue
                $dup_messages = array();
                $dup_count = 0;
                $total_deleted += 100;
                echo "done.\n";
                echo "Deleted {$total_deleted} messages so far.\n\n";
            }
            // duplicate messages are adjacent, so we push the first message with
            // a distinct hash and mark all following messages with this hash
            // for deletion.
            if ($org_hash != $cur_hash) {
                $org_hash = $cur_hash;
            } else {
                $dup_messages[] = $row[PR_ENTRYID];
                $dup_count++;
                echo " [i] For {$org_hash} adding DUP {$md5_eid} to delete list\n";
            }
        }
    }
    // final cleanup
    $dup_count = count($dup_messages);
    if ($dup_count) {
        $total_deleted += $dup_count;
        echo " [i] Finally deleting {$dup_count} duplicates. \n";
        delete_messages($folder, $dup_messages);
        $dup_messages = array();
        echo "Deleted {$total_deleted} messages so far.\n\n";
    }
}
Example #2
0
$limit = 25;
$offset = ($page - 1) * $limit;
$delete = in('delete');
$message_sent_to = null;
// Sending mail section.
if ($message && $messenger) {
    if ($to_clan && $has_clan) {
        $message_sent_to = message_to_clan($message);
    } elseif (!!$target_id) {
        send_message($user_id, $target_id, $message);
        $message_sent_to = $to;
        // (
    }
}
if ($delete) {
    delete_messages();
}
$messages = get_messages($user_id, $limit, $offset);
$message_count = message_count();
$pages = ceil($message_count / $limit);
// Total pages.
//$current_page = floor(($message_count/$limit) - $limit); //
$nav = render_message_nav($page, $pages, $limit);
read_messages($user_id);
// mark messages as read for next viewing.
// TODO: Handle "send" and "deletion";
$message_list = '';
if (!empty($messages)) {
    foreach ($messages as $loop_message) {
        $loop_message['message'] = out($loop_message['message']);
        $message_list .= render_template('single_message.tpl', array('message' => $loop_message));
Example #3
0
                }
            }
            if (count($del) > 0) {
                $SQL = "Delete from " . $PHORUM['ForumTableName'] . "_attachments where id in (" . implode(",", $del) . ")";
                $q->query($DB, $SQL);
            }
        }
        $sSQL = "Update {$ForumTableName} set author='{$author}', email='{$email}', subject='{$subject}' where id={$id}";
        $q->query($DB, $sSQL);
        $sSQL = "Update " . $PHORUM['ForumTableName'] . "_bodies set body='{$body}' where id={$id}";
        $q->query($DB, $sSQL);
        header("Location: {$read_page}.{$ext}?f={$num}&i={$i}&t={$t}{$GetVars}");
        exit;
    case "delete":
        include "{$include_path}/delete_message.php";
        delete_messages($i);
        if ($i == $t) {
            header("Location: {$list_page}.{$ext}?f={$num}{$GetVars}");
        } else {
            header("Location: {$read_page}.{$ext}?f={$num}&i={$t}&t={$t}{$GetVars}");
        }
        exit;
        break;
}
if (!empty($i)) {
    $sSQL = "Select author, email, subject, body from " . $PHORUM['ForumTableName'] . " as t, " . $PHORUM['ForumTableName'] . "_bodies as b where t.id=b.id and t.id={$i}";
    $q->query($DB, $sSQL);
    $mtext = $q->getrow();
    if (substr($mtext["body"], 0, 6) == "<HTML>") {
        $mtext["body"] = ereg_replace("</*HTML>", "", $mtext["body"]);
        $html = 1;
Example #4
0
<?php

if (!defined("_COMMON_PHP")) {
    return;
}
require "{$include_path}/delete_message.php";
delete_messages($id);
QueMessage("Message(s) {$id} and all children were deleted!<br />");
Example #5
0
 public function delete_messages($checked_messages)
 {
     $this->open_stream();
     delete_messages($checked_messages);
 }