コード例 #1
0
ファイル: patch-00179-alla.php プロジェクト: cjbayliss/alloc
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");
        }
    }
}
コード例 #2
0
ファイル: comment.inc.php プロジェクト: cjbayliss/alloc
 function get_person_and_client($from_address, $from_name, $projectID = null)
 {
     $current_user =& singleton("current_user");
     $person = new person();
     $personID = $person->find_by_email($from_address);
     $personID or $personID = $person->find_by_name($from_name);
     if (!$personID) {
         $cc = new clientContact();
         $clientContactID = $cc->find_by_email($from_address);
         $clientContactID or $clientContactID = $cc->find_by_name($from_name, $projectID);
     }
     // If we don't have a $from_name, but we do have a personID or clientContactID, get proper $from_name
     if (!$from_name) {
         if ($personID) {
             $from_name = person::get_fullname($personID);
         } else {
             if ($clientContactID) {
                 $cc = new clientContact();
                 $cc->set_id($clientContactID);
                 $cc->select();
                 $from_name = $cc->get_value("clientContactName");
             } else {
                 $from_name = $from_address;
             }
         }
     }
     return array($personID, $clientContactID, $from_name);
 }
コード例 #3
0
ファイル: inbox.inc.php プロジェクト: cjbayliss/alloc
 function attach_email_to_existing_task($req = array())
 {
     global $TPL;
     $info = inbox::get_mail_info();
     $current_user =& singleton("current_user");
     $orig_current_user =& $current_user;
     $req["taskID"] = sprintf("%d", $req["taskID"]);
     $task = new task();
     $task->set_id($req["taskID"]);
     if ($task->select()) {
         $email_receive = new email_receive($info);
         $email_receive->open_mailbox($info["folder"]);
         $email_receive->set_msg($req["id"]);
         $email_receive->get_msg_header();
         $email_receive->save_email();
         $c = comment::add_comment_from_email($email_receive, $task);
         $commentID = $c->get_id();
         $commentID and $TPL["message_good_no_esc"][] = "Created comment " . $commentID . " on task " . $task->get_task_link(array("prefixTaskID" => true));
         // Possibly change the identity of current_user
         list($from_address, $from_name) = parse_email_address($email_receive->mail_headers["from"]);
         $person = new person();
         $personID = $person->find_by_email($from_address);
         $personID or $personID = $person->find_by_name($from_name);
         if ($personID) {
             $current_user = new person();
             $current_user->load_current_user($personID);
             singleton("current_user", $current_user);
         }
         // swap back to normal user
         $current_user =& $orig_current_user;
         singleton("current_user", $current_user);
         // manually add task manager and assignee to ip list
         $extraips = array();
         if ($task->get_value("personID")) {
             $p = new person($task->get_value("personID"));
             if ($p->get_value("emailAddress")) {
                 $extraips[$p->get_value("emailAddress")]["name"] = $p->get_name();
                 $extraips[$p->get_value("emailAddress")]["role"] = "assignee";
                 $extraips[$p->get_value("emailAddress")]["personID"] = $task->get_value("personID");
                 $extraips[$p->get_value("emailAddress")]["selected"] = 1;
             }
         }
         if ($task->get_value("managerID")) {
             $p = new person($task->get_value("managerID"));
             if ($p->get_value("emailAddress")) {
                 $extraips[$p->get_value("emailAddress")]["name"] = $p->get_name();
                 $extraips[$p->get_value("emailAddress")]["role"] = "manager";
                 $extraips[$p->get_value("emailAddress")]["personID"] = $task->get_value("managerID");
                 $extraips[$p->get_value("emailAddress")]["selected"] = 1;
             }
         }
         // add all the other interested parties
         $ips = interestedParty::get_interested_parties("task", $req["taskID"], $extraips);
         foreach ((array) $ips as $k => $inf) {
             $inf["entity"] = "comment";
             $inf["entityID"] = $commentID;
             $inf["email"] and $inf["emailAddress"] = $inf["email"];
             if ($req["emailto"] == "internal" && !$inf["external"] && !$inf["clientContactID"]) {
                 $id = interestedParty::add_interested_party($inf);
                 $recipients[] = $inf["name"] . " " . add_brackets($k);
             } else {
                 if ($req["emailto"] == "default") {
                     $id = interestedParty::add_interested_party($inf);
                     $recipients[] = $inf["name"] . " " . add_brackets($k);
                 }
             }
         }
         $recipients and $recipients = implode(", ", (array) $recipients);
         $recipients and $TPL["message_good"][] = "Sent email to " . $recipients;
         // Re-email the comment out
         comment::send_comment($commentID, array("interested"), $email_receive);
         // File email away in the task's mail folder
         $mailbox = "INBOX/task" . $task->get_id();
         $email_receive->create_mailbox($mailbox) and $TPL["message_good"][] = "Created mailbox: " . $mailbox;
         $email_receive->move_mail($req["id"], $mailbox) and $TPL["message_good"][] = "Moved email " . $req["id"] . " to " . $mailbox;
         $email_receive->close();
     }
 }