예제 #1
0
 private function get_current_user($sessID)
 {
     $sess = new session($sessID);
     if ($sess->Started()) {
         $person = new person();
         $person->load_current_user($sess->Get("personID"));
         // update session_started, which affects session lifetime
         $sess->Save();
         return $person;
     }
 }
예제 #2
0
 function add_comment_from_email($email_receive, $entity)
 {
     $current_user =& singleton("current_user");
     $commentID = comment::add_comment($entity->classname, $entity->get_id(), $email_receive->get_converted_encoding());
     $commentID or alloc_error("Unable to create an alloc comment (" . $entity->classname . ":" . $entity->get_id() . ") from email.");
     $comment = new comment();
     $comment->set_id($commentID);
     $comment->select();
     $comment->set_value("commentEmailUID", $email_receive->msg_uid);
     $comment->set_value("commentEmailMessageID", $email_receive->mail_headers["message-id"]);
     $comment->rename_email_attachment_dir($email_receive->dir);
     // Try figure out and populate the commentCreatedUser/commentCreatedUserClientContactID fields
     list($from_address, $from_name) = parse_email_address($email_receive->mail_headers["from"]);
     list($personID, $clientContactID, $from_name) = comment::get_person_and_client($from_address, $from_name, $entity->get_project_id());
     $personID and $comment->set_value('commentCreatedUser', $personID);
     $clientContactID and $comment->set_value('commentCreatedUserClientContactID', $clientContactID);
     $comment->set_value("commentCreatedUserText", $email_receive->mail_headers["from"]);
     $comment->set_value("commentEmailMessageID", $email_receive->mail_headers["message-id"]);
     $comment->updateSearchIndexLater = true;
     $comment->skip_modified_fields = true;
     $comment->save();
     if ($email_receive->mimebits) {
         comment::update_mime_parts($comment->get_id(), $email_receive->mimebits);
     }
     // CYBER-ONLY: Re-open task, if comment has been made by an external party.
     if (config::for_cyber() && !$comment->get_value('commentCreatedUser')) {
         $e = $entity->get_parent_object();
         if ($e->classname == "task" && substr($e->get_value("taskStatus"), 0, 4) != "open") {
             $tmp = $current_user;
             $current_user = new person();
             $personID = $e->get_value("managerID") or $personID = $e->get_value("personID") or $personID = $e->get_value("creatorID");
             $current_user->load_current_user($personID);
             // fake identity
             singleton("current_user", $current_user);
             $e->set_value("taskStatus", "open_inprogress");
             $e->save();
             $current_user = $tmp;
         }
     }
     return $comment;
 }
예제 #3
0
<?php

$q = prepare("SELECT * FROM person");
$db = new db_alloc();
$db->query($q);
while ($row = $db->row()) {
    $current_user = new person();
    $current_user->load_current_user($row["personID"]);
    if (sprintf("%d", $current_user->prefs["tasksGraphPlotHome"]) > 0) {
        $current_user->prefs["showCalendarHome"] = 1;
    }
    if (sprintf("%d", $current_user->prefs["projectListNum"]) > 0) {
        $current_user->prefs["showProjectHome"] = 1;
    }
    if ($current_user->prefs["receiveOwnTaskComments"] == 'no') {
        $current_user->prefs["receiveOwnTaskComments"] = 0;
    } else {
        $current_user->prefs["receiveOwnTaskComments"] = 1;
    }
    if ($current_user->prefs["showFilters"] == "no") {
        $current_user->prefs["showFilters"] = 0;
    } else {
        $current_user->prefs["showFilters"] = 1;
    }
    if ($current_user->prefs["dailyTaskEmail"] != "yes") {
        $current_user->prefs["dailyTaskEmail"] = 0;
    } else {
        $current_user->prefs["dailyTaskEmail"] = 1;
    }
    if ($current_user->prefs["topTasksStatus"]) {
        $current_user->prefs["showTaskListHome"] = 1;
예제 #4
0
$query = prepare("SELECT *\n                    FROM reminder\n                   WHERE reminderActive = 1\n                     AND reminderAdvNoticeSent = 0\n                     AND NOW() > \n                         CASE\n                           WHEN reminderAdvNoticeInterval = 'Minute' THEN DATE_SUB(reminderTime, INTERVAL reminderAdvNoticeValue MINUTE)\n                           WHEN reminderAdvNoticeInterval = 'Hour'   THEN DATE_SUB(reminderTime, INTERVAL reminderAdvNoticeValue HOUR)\n                           WHEN reminderAdvNoticeInterval = 'Day'    THEN DATE_SUB(reminderTime, INTERVAL reminderAdvNoticeValue DAY)\n                           WHEN reminderAdvNoticeInterval = 'Week'   THEN DATE_SUB(reminderTime, INTERVAL reminderAdvNoticeValue WEEK)\n                           WHEN reminderAdvNoticeInterval = 'No'     THEN NULL\n                         END\n                 ");
$db->query($query);
while ($db->next_record()) {
    $reminder = new reminder();
    $reminder->read_db_record($db);
    //echo "<br>Adv: ".$reminder->get_id();
    $current_user = new person();
    $current_user->load_current_user($db->f('reminderCreatedUser'));
    singleton("current_user", $current_user);
    if (!$reminder->is_alive()) {
        $reminder->deactivate();
    } else {
        $reminder->mail_advnotice();
    }
}
// do reminders
$query = prepare("SELECT *\n                    FROM reminder\n                   WHERE reminderActive = 1\n                     AND (reminderTime IS NULL OR NOW() > reminderTime)\n                 ");
$db->query($query);
while ($db->next_record()) {
    $reminder = new reminder();
    $reminder->read_db_record($db);
    //echo "<br>Rem: ".$reminder->get_id();
    $current_user = new person();
    $current_user->load_current_user($db->f('reminderCreatedUser'));
    singleton("current_user", $current_user);
    if (!$reminder->is_alive()) {
        $reminder->deactivate();
    } else {
        $reminder->mail_reminder();
    }
}
예제 #5
0
 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();
     }
 }
예제 #6
0
define("NO_AUTH", true);
require_once "../alloc.php";
singleton("errors_fatal", true);
singleton("errors_format", "text");
singleton("errors_logged", true);
singleton("errors_thrown", true);
singleton("errors_haltdb", false);
#$today = $_REQUEST["today"] or $today = date("Y-m-d");
$q = prepare("SELECT invoiceRepeatDate.invoiceRepeatID\n                   , invoiceRepeatDate.invoiceDate\n                   , invoiceRepeat.invoiceID AS templateInvoiceID\n                   , invoiceRepeat.personID AS currentUser\n                   , invoiceRepeat.message\n                   , invoice.invoiceID\n                FROM invoiceRepeatDate\n           LEFT JOIN invoiceRepeat ON invoiceRepeatDate.invoiceRepeatID = invoiceRepeat.invoiceRepeatID\n           LEFT JOIN invoice ON invoice.invoiceRepeatID = invoiceRepeatDate.invoiceRepeatID\n                 AND invoice.invoiceRepeatDate = invoiceRepeatDate.invoiceDate\n               WHERE invoice.invoiceID IS NULL\n                 AND invoiceRepeatDate.invoiceDate <= '%s'", $today);
$orig_current_user =& singleton("current_user");
$db = new db_alloc();
$id = $db->query($q);
while ($row = $db->row($id)) {
    if ($row["currentUser"]) {
        $current_user = new person();
        $current_user->load_current_user($row["currentUser"]);
        singleton("current_user", $current_user);
    }
    #echo "<br>Checking row: ".print_r($row,1);
    $invoice = new invoice();
    $invoice->set_id($row["templateInvoiceID"]);
    $invoice->select();
    $i = new invoice();
    $i->set_value("invoiceRepeatID", $row["invoiceRepeatID"]);
    $i->set_value("invoiceRepeatDate", $row["invoiceDate"]);
    $i->set_value("invoiceNum", invoice::get_next_invoiceNum());
    $i->set_value("clientID", $invoice->get_value("clientID"));
    $i->set_value("projectID", $invoice->get_value("projectID"));
    $i->set_value("invoiceName", $invoice->get_value("invoiceName"));
    $i->set_value("invoiceStatus", "edit");
    $i->set_value("invoiceDateTo", $row["invoiceDate"]);