'send_ical_appt' => True,
'assign_view' => True,
'assign_update' => True,
+ 'get_time_selection_form' => True,
);
function eq()
$this->default_att_num_quarters = 1;
$this->default_vis_num_years = 1;
$this->max_num_districts = 4;
+ $this->time_drop_down_lists = 1;
+ $this->time_drop_down_list_inc = 15;
+ $this->default_visit_appt_duration = 45;
+ $this->default_ppi_appt_duration = 30;
$this->max_presidency_members = 99;
$this->max_appointments = 32768;
// END LOCAL CONFIGURATION
// Hour & Minutes selection
$table_data.= "<td align=center>";
- $table_data.= '<select name=sched['.$presidency.']['.$appointment.'][hour]>';
- foreach(range(1,12) as $num) {
- if($hour == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
- $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
- }
- $table_data.= '</select>';
- $table_data.= ' : ';
- $table_data.= '<select name=sched['.$presidency.']['.$appointment.'][minute]>';
- foreach(range(0,3) as $num) {
- $num = $num * 15; if($num == 0) { $num = "00"; }
- if($minute == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
- $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
- }
- $table_data.= '</select>';
- $table_data.= '<select name=sched['.$presidency.']['.$appointment.'][pm]>';
- if($pm == 0) { $table_data.= '<option value=0 selected>am</option>'; $table_data.= '<option value=1>pm</option>'; }
- else { $table_data.= '<option value=0>am</option>'; $table_data.= '<option value=1 selected>pm</option>'; }
- $table_data.= '</select>';
+ $table_data .= $this->get_time_selection_form($hour, $minute, $pm, $presidency, $appointment);
$table_data.= "</td>";
// Elder drop down list (for PPIs)
// Time selection
$table_data.= "<td align=center>";
- $table_data.= '<select name=sched['.$presidency.']['.$appointment.'][hour]>';
- $table_data.= '<option value=""></option>';
- foreach(range(1,12) as $num) {
- $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
- }
- $table_data.= '</select>';
- $table_data.= ' : ';
- $table_data.= '<select name=sched['.$presidency.']['.$appointment.'][minute]>';
- $table_data.= '<option value=""></option>';
- foreach(range(0,3) as $num) {
- $num = $num * 15; if($num == 0) { $num = "00"; }
- $table_data.= '<option value='.$num.'>'.$num.'</option>';
- }
- $table_data.= '</select>';
- $table_data.= '<select name=sched['.$presidency.']['.$appointment.'][pm]>';
- $table_data.= '<option value=""></option>';
- $table_data.= '<option value=0>am</option>';
- $table_data.= '<option value=1>pm</option>';
- $table_data.= '</select>';
+ $table_data .= $this->get_time_selection_form(0, 0, 0, $presidency, $appointment);
$table_data.= "</td>";
// Elder drop down list
// Format the appointment time into an iCal UTC equivalent
$dtstamp = gmdate("Ymd"."\T"."His"."\Z");
$dtstart = gmdate("Ymd"."\T"."His"."\Z", mktime($hour,$minute,$seconds,$month,$day,$year));
+ $dtstartstr = date("l, F d, o g:i A", mktime($hour,$minute,$seconds,$month,$day,$year));
// Set the email address of the person making the appointment
$from = $GLOBALS['phpgw_info']['user']['fullname'] . "<" .
$phone = $this->db2->f('phone');
$appt_name = $elder_name . " Interview";
$location = "$interviewer"."'s home";
- $duration = 1800; // 30 minutes
+ $duration = $this->default_ppi_appt_duration * 60;
}
}
if($this->db3->next_record()) {
$location=$this->db3->f('address');
}
- $duration = 2700; // 45 minutes
+ $duration = $this->default_visit_appt_duration * 60;
}
}
$dtend = gmdate("Ymd"."\T"."His"."\Z", mktime($hour,$minute,$seconds+$duration,$month,$day,$year));
+ $dtendstr = date("g:i A", mktime($hour,$minute,$seconds+$duration,$month,$day,$year));
+ $date = $dtstartstr . "-" . $dtendstr;
$description = "$appt_name : $phone";
if(($uid == 0) && ($appt_name != "")) {
$action = "PUBLISH";
$this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
- $dtend, $location, $appt_name, $description, $uid);
+ $dtend, $date, $location, $appt_name, $description, $uid);
} else if(($uid != 0) && ($appt_name == "")) {
// Remove the calendar item for this appointment since it has already been sent
$action = "CANCEL";
$this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
- $dtend, $location, $appt_name, $description, $uid);
+ $dtend, $date, $location, $subject, $subject, $uid);
} else if($uid != 0) {
// Update the existing appointment since we have changed it
$subject = "Canceled: $appt_date $appt_time";
$action = "CANCEL";
$this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
- $dtend, $location, $appt_name, $description, $uid);
+ $dtend, $date, $location, $subject, $subject, $uid);
$uid = rand() . rand(); // Generate a random identifier for this appointment
$this->db->query("UPDATE eq_appointment set" .
$subject = "Updated: $appt_name";
$action = "PUBLISH";
$this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
- $dtend, $location, $appt_name, $description, $uid);
+ $dtend, $date, $location, $appt_name, $description, $uid);
}
}
return true;
}
- function send_ical_appt($action, $to, $from, $subject, $dtstamp, $dtstart, $dtend, $location, $summary, $description, $uid)
+ function send_ical_appt($action, $to, $from, $subject, $dtstamp, $dtstart, $dtend, $date, $location, $summary, $description, $uid)
{
- $headers = 'From: ' . "$from" . "\n" .
- 'Reply-To: ' . "$from" . "\n" .
- 'X-Mailer: PHP/' . phpversion() . "\n" .
- 'Content-Type: text/calendar;' . "\n" .
- 'Content-Transfer-Encoding: 7bit' . "\n";
-
- //$message = "phone: $phone date: $date time: $time";
- $message ="";
+ // Initialize our local variables
+ $boundary = "=MIME_APPOINTMENT_BOUNDARY";
+ $message = "";
+ $headers = "";
+
+ // Form the headers for the email message
+ $headers.="X-Mailer: PHP/" . phpversion() . "\n";
+ $headers.="Mime-Version: 1.0\n";
+ $headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
+ $headers.="Content-Disposition: inline\n";
+ $headers.="Reply-To: $from\n";
+ $headers.="From: $from\n";
+
+ // Print the plaintext version of the appointment
+ $message.="--$boundary\n";
+ $message.="Content-Type: text/plain; charset=us-ascii\n";
+ $message.="Content-Disposition: inline\n";
+ $message.="\n";
+ $message.="What: $description\n";
+ $message.="When: $date\n";
+ $message.="Where: $location\n";
+ $message.="\n";
+
+ // Print the .ics attachment version of the appointment
+ $message.="--$boundary\n";
+ $message.="Content-Type: text/calendar; charset=us-ascii\n";
+ $message.="Content-Disposition: attachment; filename=\"appointment.ics\"\n";
+ $message.="\n";
$message.="BEGIN:VCALENDAR" . "\n";
$message.="VERSION:2.0" . "\n";
$message.="PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN" . "\n";
$message.="CLASS:PUBLIC" . "\n";
$message.="END:VEVENT" . "\n";
$message.="END:VCALENDAR" . "\n";
-
+
+ // Complete the message
+ $message.="--$boundary\n";
+
+ // Send the message
mail($to, $subject, $message, $headers);
}
+
+ function get_time_selection_form($hour, $minute, $pm, $presidency, $appointment)
+ {
+ $form_data = "";
+ $blank = 0;
+
+ if($hour == 0) { $blank = 1; }
+
+ if($this->time_drop_down_lists == 1) {
+ // Create drop down lists to get the time
+ $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][hour]>';
+ if($blank == 1) { $form_data.= '<option value=""></option>'; }
+ foreach(range(1,12) as $num) {
+ if($hour == $num) { $selected = 'selected="selected"'; } else { $selected = ''; }
+ $form_data.= '<option value='.$num.' '.$selected.'>'.$num.'</option>';
+ }
+ $form_data.= '</select>';
+ $form_data.= ' : ';
+ $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][minute]>';
+ if($blank == 1) { $form_data.= '<option value=""></option>'; }
+ $num = 0;
+ while($num < 60) {
+ if($num < 10) { $num = "0" . "$num"; }
+ if($minute == $num) { $selected = 'selected="selected"'; } else { $selected = ''; }
+ if($blank == 1) { $selected = ""; }
+ $form_data.= '<option value='.$num.' '.$selected.'>'.$num.'</option>';
+ $num = $num + $this->time_drop_down_list_inc;
+ }
+ $form_data.= '</select>';
+ } else {
+ // Use free form text fields to get the time
+ if($blank == 1) { $hour = ""; $minute = ""; $ampm = ""; }
+ $form_data.= '<input type=text size=2 name=sched['.$presidency.']['.$appointment.'][hour] value='.$hour.'>';
+ $form_data.= ':';
+ $form_data.= '<input type=text size=2 name=sched['.$presidency.']['.$appointment.'][minute] value='.$minute.'>';
+ $form_data.= ' ';
+ }
+ // Always use a drop-down select form for am/pm
+ $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][pm]>';
+ if($blank == 0) {
+ if($pm == 0) { $form_data.= '<option value=0 selected>am</option>'; $form_data.= '<option value=1>pm</option>'; }
+ if($pm == 1) { $form_data.= '<option value=0>am</option>'; $form_data.= '<option value=1 selected>pm</option>'; }
+ } else {
+ $form_data.= '<option value=""></option>';
+ $form_data.= '<option value=0>am</option>';
+ $form_data.= '<option value=1>pm</option>';
+ }
+ $form_data.= '</select>';
+
+ return $form_data;
+ }
}
?>