/**
 * This function will notify the regional education office of updates / deletes to affected apartment events.
 *
 * @param string $action
 * @param int $event_id
 * @return bool $success
 */
function notify_regional_education($action, $event_id)
{
    global $db, $AGENT_CONTACTS, $event_info, $ENTRADA_USER;
    $query = "\tSELECT * FROM `" . CLERKSHIP_DATABASE . "`.`events` AS a\n\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`regions` AS b\n\t\t\t\tON a.`region_id` = b.`region_id`\n\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`event_contacts` AS c\n\t\t\t\tON a.`event_id` = c.`event_id`\n\t\t\t\tWHERE a.`event_id` = " . $db->qstr($event_id);
    $result = $db->GetRow($query);
    if ($result) {
        /**
         * Don't process this if the event has already ended as there's not need for notifications.
         */
        if ($result["event_finish"] > time()) {
            $whole_name = get_account_data("firstlast", $result["etype_id"]);
            $query = "\tSELECT a.`inhabiting_start`, a.`inhabiting_finish`, b.`apartment_title`\n\t\t\t\t\t\t\t\tFROM `" . CLERKSHIP_DATABASE . "`.`apartment_schedule` AS a\n\t\t\t\t\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`apartments` AS b\n\t\t\t\t\t\t\t\tON b.`apartment_id` = a.`apartment_id`\n\t\t\t\t\t\t\t\tWHERE a.`event_id` = " . $db->qstr($event_id);
            $apartments = $db->GetAll($query);
            if ($apartments) {
                switch ($action) {
                    case "deleted":
                        $message = "Attention " . $AGENT_CONTACTS["agent-regionaled"]["name"] . ",\n\n";
                        $message .= $_SESSION["details"]["firstname"] . " " . $_SESSION["details"]["lastname"] . " has removed an event from " . $whole_name . "'s ";
                        $message .= "clerkship schedule, to which you had previously assigned housing. Due to the removal of this event from the system, ";
                        $message .= "the housing associated with it has also been removed.\n\n";
                        $message .= "Information For Reference:\n\n";
                        $message .= "Event Information:\n";
                        $message .= "Event Title:\t" . html_decode($result["event_title"]) . "\n";
                        $message .= "Region:\t\t" . $result["region_name"] . "\n";
                        $message .= "Start Date:\t" . date(DEFAULT_DATE_FORMAT, $result["event_start"]) . "\n";
                        $message .= "Finish Date:\t" . date(DEFAULT_DATE_FORMAT, $result["event_finish"]) . "\n\n";
                        if ($apartments && ($assigned_apartments = @count($apartments))) {
                            $message .= "Apartment" . ($assigned_apartments != 1 ? "s" : "") . " " . $whole_name . " was removed from:\n";
                            foreach ($apartments as $apartment) {
                                $message .= "Apartment Title:\t" . $apartment["apartment_title"] . "\n";
                                $message .= "Inhabiting Start:\t" . date(DEFAULT_DATE_FORMAT, $apartment["inhabiting_start"]) . "\n";
                                $message .= "Inhabiting Finish:\t" . date(DEFAULT_DATE_FORMAT, $apartment["inhabiting_finish"]) . "\n\n";
                            }
                        }
                        $message .= "=======================================================\n\n";
                        $message .= "Deletion Date:\t" . date("r", time()) . "\n";
                        $message .= "Deleted By:\t" . $_SESSION["details"]["firstname"] . " " . $_SESSION["details"]["lastname"] . " (" . $ENTRADA_USER->getID() . ")\n";
                        break;
                    case "change-critical":
                        $message = "Attention " . $AGENT_CONTACTS["agent-regionaled"]["name"] . ",\n\n";
                        $message .= $_SESSION["details"]["firstname"] . " " . $_SESSION["details"]["lastname"] . " has updated an event in " . $whole_name . "'s ";
                        $message .= "clerkship schedule, to which you had previously assigned housing. This update involves a change to the region or the ";
                        $message .= "dates that the event took place in. Due to this critical change taking place, the housing for this event for this ";
                        $message .= "student has been removed.\n\n";
                        if ($result["manage_apartments"]) {
                            $message .= "Please log into the clerkship system and re-assign housing to this student for this event.\n\n";
                        } else {
                            $message .= "Since this event no longer is taking place in a region which is managed by Regional Education, \n";
                            $message .= "no further action is required on your part in the system.\n\n";
                        }
                        $message .= "Information For Reference:\n\n";
                        $message .= "OLD Event Information:\n";
                        $message .= "Event Title:\t" . $event_info["event_title"] . "\n";
                        $message .= "Region:\t\t" . get_region_name($event_info["region_id"]) . "\n";
                        $message .= "Start Date:\t" . date(DEFAULT_DATE_FORMAT, $event_info["event_start"]) . "\n";
                        $message .= "Finish Date:\t" . date(DEFAULT_DATE_FORMAT, $event_info["event_finish"]) . "\n\n";
                        $message .= "NEW Event Information:\n";
                        $message .= "Event Title:\t" . html_decode($result["event_title"]) . "\n";
                        $message .= "Region:\t\t" . $result["region_name"] . "\n";
                        $message .= "Start Date:\t" . date(DEFAULT_DATE_FORMAT, $result["event_start"]) . "\n";
                        $message .= "Finish Date:\t" . date(DEFAULT_DATE_FORMAT, $result["event_finish"]) . "\n\n";
                        if ($apartments && ($assigned_apartments = @count($apartments))) {
                            $message .= "Apartment" . ($assigned_apartments != 1 ? "s" : "") . " " . $whole_name . " was removed from:\n";
                            foreach ($apartments as $apartment) {
                                $message .= "Apartment Title:\t" . $apartment["apartment_title"] . "\n";
                                $message .= "Inhabiting Start:\t" . date(DEFAULT_DATE_FORMAT, $apartment["inhabiting_start"]) . "\n";
                                $message .= "Inhabiting Finish:\t" . date(DEFAULT_DATE_FORMAT, $apartment["inhabiting_finish"]) . "\n\n";
                            }
                        }
                        $message .= "=======================================================\n\n";
                        $message .= "Deletion Date:\t" . date("r", time()) . "\n";
                        $message .= "Deleted By:\t" . $_SESSION["details"]["firstname"] . " " . $_SESSION["details"]["lastname"] . " (" . $ENTRADA_USER->getID() . ")\n";
                        break;
                    case "change-non-critical":
                    case "updated":
                    default:
                        $message = "Attention " . $AGENT_CONTACTS["agent-regionaled"]["name"] . ",\n\n";
                        $message .= $_SESSION["details"]["firstname"] . " " . $_SESSION["details"]["lastname"] . " has updated an event in " . $whole_name . "'s ";
                        $message .= "clerkship schedule, to which you had previously assigned housing.\n\n";
                        $message .= "Important:\n";
                        $message .= "This update does not affect the date or region of this event, as such this change is considered non-critical ";
                        $message .= "and no action is required on your part.\n\n";
                        $message .= "Information For Reference:\n\n";
                        $message .= "OLD Event Information:\n";
                        $message .= "Event Title:\t" . $event_info["event_title"] . "\n";
                        $message .= "Region:\t\t" . get_region_name($event_info["region_id"]) . "\n";
                        $message .= "Start Date:\t" . date(DEFAULT_DATE_FORMAT, $event_info["event_start"]) . "\n";
                        $message .= "Finish Date:\t" . date(DEFAULT_DATE_FORMAT, $event_info["event_finish"]) . "\n\n";
                        $message .= "NEW Event Information:\n";
                        $message .= "Event Title:\t" . html_decode($result["event_title"]) . "\n";
                        $message .= "Region:\t\t" . $result["region_name"] . "\n";
                        $message .= "Start Date:\t" . date(DEFAULT_DATE_FORMAT, $result["event_start"]) . "\n";
                        $message .= "Finish Date:\t" . date(DEFAULT_DATE_FORMAT, $result["event_finish"]) . "\n\n";
                        if ($apartments && ($assigned_apartments = @count($apartments))) {
                            $message .= "Apartment" . ($assigned_apartments != 1 ? "s" : "") . " " . $whole_name . " is assigned to:\n";
                            foreach ($apartments as $apartment) {
                                $message .= "Apartment Title:\t" . $apartment["apartment_title"] . "\n";
                                $message .= "Inhabiting Start:\t" . date(DEFAULT_DATE_FORMAT, $apartment["inhabiting_start"]) . "\n";
                                $message .= "Inhabiting Finish:\t" . date(DEFAULT_DATE_FORMAT, $apartment["inhabiting_finish"]) . "\n\n";
                            }
                        }
                        $message .= "=======================================================\n\n";
                        $message .= "Updated Date:\t" . date("r", time()) . "\n";
                        $message .= "Update By:\t" . $_SESSION["details"]["firstname"] . " " . $_SESSION["details"]["lastname"] . " (" . $ENTRADA_USER->getID() . ")\n";
                        break;
                }
                $mail = new Zend_Mail();
                $mail->addHeader("X-Originating-IP", $_SERVER["REMOTE_ADDR"]);
                $mail->addHeader("X-Section", "Clerkship Notify System", true);
                $mail->clearFrom();
                $mail->clearSubject();
                $mail->setFrom($AGENT_CONTACTS["agent-notifications"]["email"], APPLICATION_NAME . ' Clerkship System');
                $mail->setSubject("MEdTech Clerkship System - " . ucwords($action) . " Event");
                $mail->setBodyText($message);
                $mail->clearRecipients();
                $mail->addTo($AGENT_CONTACTS["agent-regionaled"]["email"], $AGENT_CONTACTS["agent-regionaled"]["name"]);
                $sent = true;
                try {
                    $mail->send();
                    application_log("success", "An event change notification has been sent to regional education to notify them of the changes to the event [" . $event_info["event_id"] . "] which will affect the apartment schedule.");
                    return true;
                } catch (Exception $e) {
                    system_log_data("error", "Unable to send " . $action . " notification to regional education. Zend_mail said: " . $e->getMessage());
                    return false;
                }
            } else {
                return true;
            }
        } else {
            // No need to notify Regional Education because the event is already over, just return true.
            return true;
        }
    } else {
        system_log_data("error", "The notify_regional_education() function returned false with no results from the database query. Database said: " . $db->ErrorMsg());
        return false;
    }
}
Example #2
0
                     $PROCESSED["event_status"] = $_POST["event_status"];
                 }
             }
             if (!$ERROR) {
                 $PROCESSED["modified_last"] = time();
                 $PROCESSED["modified_by"] = $ENTRADA_USER->getID();
                 if (!$db->AutoExecute("`" . CLERKSHIP_DATABASE . "`.`events`", $PROCESSED, "UPDATE", "`event_id` = " . $db->qstr($EVENT_ID))) {
                     $ERROR++;
                     $ERRORSTR[] = "Failed to update this event in the database. Please contact a system administrator if this problem persists.";
                     application_log("error", "Error while editing clerkship event into database. Database server said: " . $db->ErrorMsg());
                     $STEP = 1;
                 }
                 //Delete apartment schedule info for this student if the location has changed.
                 if ($PROCESSED["region_id"] != $event_info["region_id"] || $event_info["event_start"] != $PROCESSED["event_start"] || $event_info["event_finish"] != $PROCESSED["event_finish"]) {
                     if (!notify_regional_education("change-critical", $EVENT_ID)) {
                         system_log_data("error", "Unable to notify the regional education office that event_id [" . $EVENT_ID . "] endured a critical change.");
                     }
                     if (!$db->Execute("DELETE FROM `" . CLERKSHIP_DATABASE . "`.`apartment_schedule` WHERE `event_id` = " . $db->qstr($EVENT_ID))) {
                         application_log("error", "There was an issue while trying to remove the apartment schedule information for event [" . $EVENT_ID . "]. Database said: " . $db->ErrorMsg());
                     }
                 }
             } else {
                 $STEP = 1;
             }
         }
         break;
     default:
         // No error checking for step 1.
         break;
 }
 // PAGE DISPLAY
 /**
  * This function sends an email out to the user referenced by the notification_user record,
  * and returns whether sending the email was successful or not.
  * @return bool
  */
 public function send()
 {
     global $db, $AGENT_CONTACTS;
     require_once "Models/utility/TemplateMailer.class.php";
     $query = "SELECT a.`proxy_id`, b.`firstname`, b.`lastname`, b.`email`, a.`content_type`, a.`record_id`, a.`record_proxy_id` FROM `notification_users` AS a\n\t\t\t\t\tJOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n\t\t\t\t\tON a.`proxy_id` = b.`id`\n\t\t\t\t\tWHERE a.`nuser_id` = " . $db->qstr($this->nuser_id);
     $user = $db->GetRow($query);
     if ($user) {
         $template = new Template();
         $template->loadString($this->notification_body);
         $mail = new TemplateMailer(new Zend_Mail());
         $mail->addHeader("X-Section", APPLICATION_NAME . " Notifications System", true);
         $from = array("email" => $AGENT_CONTACTS["agent-notifications"]["email"], "firstname" => APPLICATION_NAME . " Notification System", "lastname" => "");
         $to = array("email" => $user["email"], "firstname" => $user["firstname"], "lastname" => $user["lastname"]);
         try {
             $mail->send($template, $to, $from, DEFAULT_LANGUAGE);
             if ($this->setSentStatus(true)) {
                 application_log("success", "A [" . $user["content_type"] . "] notification has been sent to a user [" . $user["proxy_id"] . "] successfully.");
                 return true;
             }
         } catch (Zend_Mail_Transport_Exception $e) {
             system_log_data("error", "Unable to send [" . $user["content_type"] . "] notification to user [" . $user["proxy_id"] . "]. Template Mailer said: " . $e->getMessage());
         }
     }
     return false;
 }
Example #4
0
					</tr>
				</tbody>
				</table>
				<?php 
                    break;
            }
        } else {
            $query = "\tSELECT * FROM `" . CLERKSHIP_DATABASE . "`.`events`, `" . CLERKSHIP_DATABASE . "`.`event_contacts`\n\t\t\t\t\t\tWHERE `" . CLERKSHIP_DATABASE . "`.`events`.`event_id` = " . $db->qstr($EVENT_ID) . "\n\t\t\t\t\t\tAND `" . CLERKSHIP_DATABASE . "`.`events`.`event_id` = `" . CLERKSHIP_DATABASE . "`.`event_contacts`.`event_id`";
            if ($event_info = $db->GetRow($query)) {
                $PROCESSED = $event_info;
                $BREADCRUMB[] = array("url" => ENTRADA_URL . "/admin/clerkship/electives?" . replace_query(array("section" => "edit")), "title" => "Deleting Elective");
                $header_output = "<h1>Removing Core Rotation</h1>\n";
                switch ($STEP) {
                    case 2:
                        if (!notify_regional_education("deleted", $EVENT_ID)) {
                            system_log_data("error", "Unable to notify the regional education office that event_id [" . $EVENT_ID . "] was deleted.");
                        }
                        $query = "DELETE FROM `" . CLERKSHIP_DATABASE . "`.`events` WHERE `event_id`=" . $db->qstr($EVENT_ID);
                        if ($db->Execute($query)) {
                            $query = "DELETE FROM `" . CLERKSHIP_DATABASE . "`.`electives` WHERE `event_id`=" . $db->qstr($EVENT_ID);
                            if ($db->Execute($query)) {
                                $query = "DELETE FROM `" . CLERKSHIP_DATABASE . "`.`event_contacts` WHERE `event_id`=" . $db->qstr($EVENT_ID);
                                if ($db->Execute($query)) {
                                    if (!$db->Execute("DELETE FROM `" . CLERKSHIP_DATABASE . "`.`apartment_schedule` WHERE `event_id` = " . $db->qstr($EVENT_ID))) {
                                        application_log("error", "There was an issue while trying to remove the apartment schedule information for event [" . $EVENT_ID . "]. Database said: " . $db->ErrorMsg());
                                    }
                                    $url = ENTRADA_URL . "/admin/clerkship/";
                                    $msg = " You will now be redirected to the clerkship index; this will happen <strong>automatically</strong> in 5 seconds or <a href=\"" . $url . "\" style=\"font-weight: bold\">click here</a> to continue.";
                                    $SUCCESS++;
                                    $SUCCESSSTR[] = "You have successfully removed <strong>" . html_encode($PROCESSED["geo_location"]) . "</strong> core rotation from the system.<br /><br />" . $msg;
                                    $ONLOAD[] = "setTimeout('window.location=\\'" . $url . "\\'', 5000)";