Here’s how to add events to Google Calendar directly from your phpmaker site.
Make sure you already have a DATETIME field named “Appointment”, and you have a text field named “EventName”
My code assumes an appointment duration of 1hr, but you can edit that.
in case you have a DATETIME field for both start and end of the event, you can use that too
- To the table (mine is called Appointments) containing tha DATETIME field, add a custom field named “AddToCalendar”
- Custom field expression should be: cast(‘’ as SIGNED) - this is effectively a dummy expression as we’ll be using Row_Rendered to add the actual code.
- Go to function Row_Rendered for your table, and insert this code:
$eventName=$this->EventName->CurrentValue; //customise this to suit the field name in your table
$studentid = ExecuteScalar("SELECT fk_StudentID FROM Students_Further_Study WHERE Students_Further_Study.id='".$this->fk_StudyID->CurrentValue."'");
$studentname = ExecuteScalar("SELECT V_Fullname FROM Students_Directory WHERE Students_Directory.id='".$studentid."'");
$caltype="1"; // 1 = Google, 2 = Outlook.com, 3 = Office365
switch($caltype){
case "1"; //Google
$calprefix = "https://www.google.com/calendar/render?action=TEMPLATE&dates=";
$calapptstart = $this->Appointment->CurrentValue;
$calapptend = strtotime($calapptstart) + 60*60;
$calstartend = date('Ymd\THis', strtotime($calapptstart))."/".date('Ymd\THis', $calapptend);
$studentname1 = preg_replace('/\s+/', '+', $studentname);
$calsuffix = "&text=Appointment+".$studentname1;
break;
case "2"; //Outlook
$calprefix = "https://outlook.live.com/calendar/0/deeplink/compose?enddt=";
$calapptstart = $this->Appointment->CurrentValue;
$calapptend = strtotime($calapptstart) + 60*60;
$calstartend = date('Y-m-d\TH:i', $calapptend)."&path=/calendar/action/compose&rru=addevent&startdt=".date('Y-m-d\TH:i', strtotime($calapptstart));
$studentname1 = preg_replace('/\s+/', '%20', $studentname);
$calsuffix = "&subject=Appointment%3A%20".$studentname1;
break;
case "3"; //Office365
$calprefix = "https://outlook.office.com/calendar/0/deeplink/compose?enddt=";
$calapptstart = $this->Appointment->CurrentValue;
$calapptend = strtotime($calapptstart) + 60*60;
$calstartend = date('Y-m-d\TH:i', $calapptend)."&path=/calendar/action/compose&rru=addevent&startdt=".date('Y-m-d\TH:i', strtotime($calapptstart));
$studentname1 = preg_replace('/\s+/', '%20', $studentname);
$calsuffix = "&subject=Appointment%3A%20".$studentname1;
break;
}
$AddtoCalLink = $calprefix.$calstartend.$calsuffix;
//display the calendar link and icon
$this->AddToCalendar->ViewValue = "<span class='fas fa-calendar-plus'></span> <a href='".$AddtoCalLink."' target='_blank'>Add to calendar</a>";
$this->AddToCalendar->TooltipValue = "Add to my Google Calendar";