function fix_this_comment($r, $num, $from, $messageid) { global $db; global $alloc_from_addresses2; if ($r["commentEmailUIDORIG"] != $num) { unset($projectID); if ($r["commentMaster"] == "task" && $r["commentMasterID"]) { $q = prepare("select projectID from task where taskID = %d", $r["commentMasterID"]); $db->query($q); $task_row = $db->row(); $projectID = $task_row["projectID"]; } // Try figure out and populate the commentCreatedUser/commentCreatedUserClientContactID fields list($from_address, $from_name) = parse_email_address($from); $person = new person(); $personID = $person->find_by_email($from_address); $personID or $personID = $person->find_by_name($from_name); $sql = array(); $sql[] = prepare("commentEmailUID = '%s'", trim($num)); if ($personID) { $sql[] = prepare("commentCreatedUser = %d", $personID); $sql[] = "commentCreatedUserClientContactID = NULL"; } else { $sql[] = "commentCreatedUser = NULL"; $cc = new clientContact(); $clientContactID = $cc->find_by_email($from_address, $projectID); $clientContactID or $clientContactID = $cc->find_by_name($from_name, $projectID); $clientContactID and $sql[] = prepare("commentCreatedUserClientContactID = %d", $clientContactID); } $sql[] = prepare("commentCreatedUserText = '%s'", trim($from)); $sql[] = prepare("commentEmailMessageID = '%s'", trim($messageid)); if (!in_array($from_address, $alloc_from_addresses2)) { // don't update items that are from alloc $q = prepare("UPDATE comment SET " . implode(",", $sql) . " WHERE commentID = %d", $r["commentID"]); $db->query($q); printorlog("FIXED: " . $q . " (old uid: " . $r["commentEmailUIDORIG"] . ")", "blue"); } } else { // Try figure out and populate the commentCreatedUser/commentCreatedUserClientContactID fields list($from_address, $from_name) = parse_email_address($from); if (!in_array($from_address, $alloc_from_addresses2)) { // don't update items that are from alloc $sql = array(); $sql[] = prepare("commentEmailUID = '%s'", trim($num)); $sql[] = prepare("commentEmailMessageID = '%s'", trim($messageid)); $q = prepare("UPDATE comment SET " . implode(",", $sql) . " WHERE commentID = %d", $r["commentID"]); $db->query($q); printorlog("GOOD: " . $q, "green"); } } }
// this will stream output flush(); $mail->set_msg($num); $mail->get_msg_header($num); $keys = $mail->get_hashes(); $mailbox = hash_to_entity($keys[0]); if (!$mailbox) { printorlog("\n"); printorlog("keys[0] not found. Trying keys[1]: "); $mailbox = hash_to_entity($keys[1]); if (!$mailbox) { printorlog("Failed: " . print_r($keys, 1)); continue; } } printorlog("\n"); printorlog("INBOX." . $mailbox); $mail->create_mailbox("INBOX/" . $mailbox); $mail->move_mail($num, "INBOX/" . $mailbox); if ($x % 100 == 0) { printorlog("\n"); printorlog("expunging at " . $x); $mail->expunge(); } } printorlog("\n"); printorlog("Done at " . $x); $mail->expunge(); $mail->close(); printorlog(date("Y-m-d H:i:s") . " DONE.");