Exemple #1
0
 if ($_POST["reminder_save"] || $_POST["reminder_update"]) {
     $recipient_keys = $_POST["reminder_recipient"];
     // make 24 hour with 12am = 0 -> 11am = 11 -> 12pm = 12 -> 11pm = 23
     if ($_POST["reminder_hour"] == 12) {
         $_POST["reminder_hour"] = 0;
     }
     if ($_POST["reminder_meridian"] == "pm") {
         $_POST["reminder_hour"] += 12;
     }
     $reminder = new reminder();
     if (isset($_POST["reminder_update"])) {
         $reminder->set_id($_POST["reminder_id"]);
         $reminder->select();
         if ($reminder->get_value("reminderHash")) {
             $token = new token();
             $token->set_hash($reminder->get_value("reminderHash"), false);
             if ($token->get_value("tokenActionID") == 3) {
                 $reminder->set_value("reminderTime", "");
                 $no = true;
             }
         }
     }
     $reminder->set_value('reminderType', $parentType);
     $reminder->set_value('reminderLinkID', $parentID);
     $reminder->set_value('reminderModifiedUser', $current_user->get_id());
     $reminder->set_modified_time();
     $no or $reminder->set_value('reminderTime', $_POST["reminder_date"] . " " . $_POST["reminder_hour"] . ":" . $_POST["reminder_minute"] . ":00");
     $reminder->set_value('reminderHash', $_POST["reminderHash"]);
     if (!$_POST["reminder_recuring_value"]) {
         $reminder->set_value('reminderRecuringInterval', 'No');
         $reminder->set_value('reminderRecuringValue', '0');
Exemple #2
0
 function add_comment_via_email($commands, $email_receive)
 {
     // If there's Key in the email, then add a comment with the contents of the email.
     $token = new token();
     if ($commands["key"] && $token->set_hash($commands["key"])) {
         $db = new db_alloc();
         $comment = $token->get_value("tokenEntity");
         $commentID = $token->get_value("tokenEntityID");
         list($entity, $method) = $token->execute();
         if (is_object($entity) && $method == "add_comment_from_email") {
             $c = comment::add_comment_from_email($email_receive, $entity);
             if (is_object($c) && $c->get_id()) {
                 $quiet = interestedParty::adjust_by_email_subject($email_receive, $entity);
                 if ($commands["ip"]) {
                     $rtn = interestedParty::add_remove_ips($commands["ip"], $entity->classname, $entity->get_id(), $entity->get_project_id());
                 }
                 if (!$quiet) {
                     comment::send_comment($c->get_id(), array("interested"), $email_receive);
                 }
             }
         }
         // Bad or missing key, then error
     } else {
         if ($email_receive) {
             alloc_error("Bad or missing key. Unable to process email.");
         }
     }
     return array($status, $message);
 }
 function archive($mailbox = null)
 {
     $keys = $this->get_hashes();
     $token = new token();
     if ($keys && is_array($keys) && $token->set_hash($keys[0])) {
         if ($token->get_value("tokenEntity") == "comment") {
             $db = new db_alloc();
             $row = $db->qr("SELECT commentMaster,commentMasterID \n                          FROM comment\n                         WHERE commentID = %d", $token->get_value("tokenEntityID"));
             $m = $row["commentMaster"];
             $mID = $row["commentMasterID"];
             $mailbox = "INBOX/" . $m . $mID;
         } else {
             $m = $token->get_value("tokenEntity");
             $mID = $token->get_value("tokenEntityID");
             $mailbox = "INBOX/" . $m . $mID;
         }
     }
     $mailbox or $mailbox = "INBOX";
     // Some IMAP servers like dot-separated mail folders, some like slash-separated
     if ($mailbox) {
         $this->create_mailbox($mailbox);
         if ($this->msg_uid) {
             $this->move_mail($this->msg_uid, $mailbox);
         } else {
             if ($this->msg_text) {
                 $this->append($mailbox, $this->msg_text);
             }
         }
     }
 }
Exemple #4
0
 function mail_reminder()
 {
     // check for a reminder.reminderHash that links off to a token.tokenHash
     // this lets us trigger reminders on complex actions, for example create
     // a reminder that sends when a task status changes from pending to open
     // Note this->reminderTime is going to always be null for the token that
     // link to task->moved_from_pending_to_open().
     // Whereas the task->reopen_pending_task() will have a reminderTime set.
     $ok = true;
     if ($this->get_value("reminderHash")) {
         $token = new token();
         if ($token->set_hash($this->get_value("reminderHash"))) {
             list($entity, $method) = $token->execute();
             if (is_object($entity) && $entity->get_id()) {
                 if (!$entity->{$method}()) {
                     $token->decrement_tokenUsed();
                     // next time, gadget
                     $ok = false;
                 }
             }
         }
     }
     if ($ok) {
         $recipients = $this->get_all_recipients();
         # Reminders can be clients, tasks, projects or "general" - comment threads don't exist for general
         if ($this->get_value('reminderType') != 'general') {
             # Nowhere to put the subject?
             $commentID = comment::add_comment($this->get_value('reminderType'), $this->get_value('reminderLinkID'), $this->get_value('reminderContent'), $this->get_value('reminderType'), $this->get_value('reminderLinkID'));
             # Repackage the recipients to become IPs of the new comment
             $ips = array();
             foreach ((array) $recipients as $id => $person) {
                 $ip = array();
                 $ip['name'] = $person['name'];
                 $ip['addIP'] = true;
                 $ip['addContact'] = false;
                 $ip['internal'] = true;
                 $ips[$person['emailAddress']] = $ip;
             }
             comment::add_interested_parties($commentID, false, $ips);
             # email_receive false or true? false for now... maybe true is better?
             comment::send_comment($commentID, array("interested"));
         } else {
             foreach ((array) $recipients as $person) {
                 if ($person['emailAddress']) {
                     $email = sprintf("%s %s <%s>", $person['firstName'], $person['surname'], $person['emailAddress']);
                     $subject = $this->get_value('reminderSubject');
                     $content = $this->get_value('reminderContent');
                     $e = new email_send($email, $subject, $content, "reminder");
                     $e->send();
                 }
             }
         }
         // Update reminder (reminderTime can be blank for task->moved_from_pending_to_open)
         if ($this->get_value('reminderRecuringInterval') == "No") {
             $this->deactivate();
         } else {
             if ($this->get_value('reminderRecuringValue') != 0) {
                 $interval = $this->get_value('reminderRecuringValue');
                 $intervalUnit = $this->get_value('reminderRecuringInterval');
                 $newtime = $this->get_next_reminder_time(strtotime($this->get_value('reminderTime')), $interval, $intervalUnit);
                 $this->set_value('reminderTime', date("Y-m-d H:i:s", $newtime));
                 $this->set_value('reminderAdvNoticeSent', 0);
                 $this->save();
             }
         }
     }
 }