File: /home/awaldron/_phpassport/api.pennhillspassport.com/v1/cron_events.php
<?php
//**********************************************************************************************************//
// Method: GET
// Endpoint: events/library
function get_v1_events_library( $args, $body, $uid, $admin_level, $db ) {
$handle = curl_init();
$url = 'https://pennhills.librarycalendar.com/events/feed/json';
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($handle);
curl_close($handle);
$events = json_decode($response, true);
$i = 0;
$u = 0;
//pp($events); exit;
foreach($events as $ev) {
$eventId = 0;
// Find Event by Title
$dbEvent = qRow( $db, "SELECT * FROM events WHERE title='".addslashes($ev['title'])."'");
// Find Event Date by External Id
$dbEventDate = qRow( $db, "SELECT * FROM event_dates WHERE ext_id='".$ev['id']."'");
// FORMAT THE DESCRIPTION
$description = '';
if (!empty($ev['description'])) $description .= $ev['description'];
if (!empty($ev['program_description'])) $description .= '<p>'.reset($ev['program_description']).'</p>';
if (!empty($ev['room'])) $description .= '<p><b>Room:</b> '.reset($ev['room']).'</p>';
$description .= '<p>';
if (!empty($ev['contact_name'])) $description .= 'Contact '.$ev['contact_name'];
if (!empty($ev['contact_email'])) $description .= ' at <a href="mailto:'.$ev['contact_email'].'">'.$ev['contact_email'].'</a>';
if (!empty($ev['contact_phone'])) $description .= ' or call <a href="tel:'.$ev['contact_phone'].'">'.formatPhoneNumber($ev['contact_phone']).'</a>';
$description .= '</p>';
$start_date = timestamp_to_gmt($ev['start_date']);
$end_date = timestamp_to_gmt($ev['end_date']);
// If Event not found, create it
if ($dbEvent === false) {
$ins = "INSERT INTO events (`title`, `description`, `url`, `user_id`, `channel_id`, `approved`) VALUES (";
$ins .= "'".addslashes($ev['title'])."', ";
$ins .= "'".addslashes(empty($description) ? '' : $description)."', ";
$ins .= "'".$ev['url']."', ";
$ins .= "1009, 3, 1 )";
$db->query( $ins );
$eventId = qVal( $db, "SELECT MAX(id) FROM events");
} else {
$eventId = $dbEvent['id'];
}
// INSERT THE EVENT DATE
if ($dbEventDate === false) {
$ins = "INSERT INTO event_dates (`event_id`, `description`, `date_start`, `date_end`, `ext_id`, `user_id`, `location_id`, `all_day`) VALUES (";
$ins .= "'".$eventId."', ";
$ins .= "'".addslashes(empty($description) ? '' : $description)."', ";
$ins .= "'".$start_date."', ";
$ins .= "'".$end_date."', ";
$ins .= "'".$ev['id']."', ";
$ins .= "1009, 1, 0 )";
$db->query( $ins );
$i++;
}
// OR UPDATE THE EVENT DATE
else {
$upd = "UPDATE event_dates SET ";
$upd .= "date_start='".$start_date."', date_end='".$end_date."', ";
$upd .= "description='".addslashes(empty($description) ? '' : $description)."' ";
$upd .= "WHERE ext_id='".$ev['id']."'";
//pp($ev);
//echo $upd."\n\n";
$db->query( $upd );
$last_upd = $upd;
$u++;
}
}
response(200, ['success' => true, 'inserts' => $i, 'updates' => $u, 'lastrun'=> date('m/d/Y H:i:s'), 'last_update'=>$last_upd ]);
}
//**********************************************************************************************************//
// Method: GET
// Endpoint: events/phathletics
function get_v1_events_phathletics( $args, $body, $uid, $admin_level, $db )
{
$events = getSchoolEvents( 354 );
$i = 0;
$u = 0;
//pp($events); exit;
foreach($events as $ev) {
$eventId = 0;
if ($ev['SUMMARY'] == 'First Day of School') continue;
$parts = explode('@', $ev['UID']);
$ev_date_id = 'phsd-'.$parts[0];
// Find Event by Title
$dbEvent = qRow( $db, "SELECT * FROM events WHERE title='".addslashes($ev['SUMMARY'])."'");
// Find Event Date by External Id
$dbEventDate = qRow( $db, "SELECT * FROM event_dates WHERE ext_id='".$ev_date_id."'");
$dtstart = !empty($ev['DTSTART;VALUE=DATE']) ? $ev['DTSTART;VALUE=DATE']."T120000Z" : $ev['DTSTART'];
$allday = !empty($ev['DTSTART;VALUE=DATE']) ? 1 : 0;
$start_date = convert_timestamp_format($dtstart);
$end_date = convert_timestamp_format( !empty($ev['DTEND']) ? $ev['DTEND'] : $dtstart );
if (!empty($ev['LOCATION'])) {
$location = qVal( $db, "SELECT id FROM locations WHERE name='".$ev['LOCATION']."'" );
} else {
$location = 12;
}
// If Event not found, create it
if ($dbEvent === false) {
$ins = "INSERT INTO events (`title`, `description`, `url`, `user_id`, `channel_id`, `approved`) VALUES (";
$ins .= "'".addslashes($ev['SUMMARY'])."', ";
$ins .= "'".addslashes(empty($ev['DESCRIPTION']) ? '' : $ev['DESCRIPTION'])."', ";
$ins .= "'', ";
$ins .= "1001, 7, 1 )";
$db->query( $ins );
$lastquery = $ins;
$eventId = qVal( $db, "SELECT MAX(id) FROM events");
} else {
$eventId = $dbEvent['id'];
}
// INSERT THE EVENT DATE
if ($dbEventDate === false) {
$ins = "INSERT INTO event_dates (`event_id`, `description`, `date_start`, `date_end`, `ext_id`, `user_id`, `location_id`, `all_day`) VALUES (";
$ins .= "'".$eventId."', ";
$ins .= "'".addslashes(empty($ev['DESCRIPTION']) ? '' : $ev['DESCRIPTION'])."', ";
$ins .= "'".$start_date."', ";
$ins .= "'".$end_date."', ";
$ins .= "'".$ev_date_id."', ";
$ins .= "1001, ".$location.", ".$allday." )";
$db->query( $ins );
$lastquery = $ins;
$i++;
}
// OR UPDATE THE EVENT DATE
else {
$upd = "UPDATE event_dates SET ";
$upd .= "date_start='".$start_date."', date_end='".$end_date."', all_day='".$allday."', ";
$upd .= "description='".addslashes(empty($ev['DESCRIPTION']) ? '' : $ev['DESCRIPTION'])."' ";
$upd .= "WHERE ext_id='".$ev_date_id."'";
$db->query( $upd );
$lastquery = $upd;
$u++;
}
}
response(200, ['success' => true, 'inserts' => $i, 'updates' => $u, 'lastrun'=> date('m/d/Y H:i:s') ]);
}
//**********************************************************************************************************//
// Method: GET
// Endpoint: events/phsd
function get_v1_events_phsd( $args, $body, $uid, $admin_level, $db )
{
$evIds = [ 349, 353, 351, 361, 352, 359, 366 ];
$events = [];
foreach ($evIds as $evId) {
$tmp_ev = getSchoolEvents( $evId );
if (count($tmp_ev) > 0) {
$events = array_merge( $events, $tmp_ev );
}
}
$i = 0;
$u = 0;
//pp($events); exit;
foreach($events as $ev) {
$eventId = 0;
$parts = explode('@', $ev['UID']);
$ev_date_id = 'phsd-'.$parts[0];
if ($ev['SUMMARY'] == 'First Day of School') continue;
// Find Event by Title
$dbEvent = qRow( $db, "SELECT * FROM events WHERE title='".addslashes($ev['SUMMARY'])."'");
// Find Event Date by External Id
$dbEventDate = qRow( $db, "SELECT * FROM event_dates WHERE ext_id='".$ev_date_id."'");
$dtstart = !empty($ev['DTSTART;VALUE=DATE']) ? $ev['DTSTART;VALUE=DATE']."T120000Z" : $ev['DTSTART'];
$allday = !empty($ev['DTSTART;VALUE=DATE']) ? 1 : 0;
$start_date = convert_timestamp_format($dtstart);
$end_date = convert_timestamp_format( !empty($ev['DTEND']) ? $ev['DTEND'] : $dtstart );
if (empty($ev['LOCATION'])) {
$location = 12;
} else if (stristr($ev['LOCATION'], 'elementary')) {
$location = 9;
} else if (stristr($ev['LOCATION'], 'middle')) {
$location = 5;
} else if (stristr($ev['LOCATION'], 'high')) {
$location = 12;
}
// If Event not found, create it
if ($dbEvent === false) {
$ins = "INSERT INTO events (`title`, `description`, `url`, `user_id`, `channel_id`, `approved`) VALUES (";
$ins .= "'".addslashes($ev['SUMMARY'])."', ";
$ins .= "'".addslashes(empty($ev['DESCRIPTION']) ? '' : $ev['DESCRIPTION'])."', ";
$ins .= "'', ";
$ins .= "1001, 6, 1 )";
$db->query( $ins );
$eventId = qVal( $db, "SELECT MAX(id) FROM events");
} else {
$eventId = $dbEvent['id'];
}
// INSERT THE EVENT DATE
if ($dbEventDate === false) {
$ins = "INSERT INTO event_dates (`event_id`, `description`, `date_start`, `date_end`, `ext_id`, `user_id`, `location_id`, `all_day`) VALUES (";
$ins .= "'".$eventId."', ";
$ins .= "'".addslashes(empty($ev['DESCRIPTION']) ? '' : $ev['DESCRIPTION'])."', ";
$ins .= "'".$start_date."', ";
$ins .= "'".$end_date."', ";
$ins .= "'".$ev_date_id."', ";
$ins .= "1001, ".$location.", ".$allday." )";
$db->query( $ins );
$i++;
}
// OR UPDATE THE EVENT DATE
else {
$upd = "UPDATE event_dates SET ";
$upd .= "date_start='".$start_date."', date_end='".$end_date."', all_day='".$allday."', ";
$upd .= "description='".addslashes(empty($ev['DESCRIPTION']) ? '' : $ev['DESCRIPTION'])."' ";
$upd .= "WHERE ext_id='".$ev_date_id."'";
$db->query( $upd );
$u++;
}
}
response(200, ['success' => true, 'inserts' => $i, 'updates' => $u, 'lastrun'=> date('m/d/Y H:i:s'), 'events'=>$events ]);
}
//**********************************************************************************************************//
// Method: GET
// Endpoint: events/steelgoat
function get_v1_events_steelgoat( $args, $body, $uid, $admin_level, $db )
{
$i = 0;
$u = 0;
for ($p=0; $p < 10; $p++) {
$handle = curl_init();
$url = 'https://steelgoatmarket.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/events&date='.date('Y-m-d').'&dates='.steelGoatDateRange().'&page='.$p;
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($handle);
curl_close($handle);
$events = json_decode($response, true);
$events = $events['data']['events'];
// pp($events);
// exit;
foreach($events as $ev) {
$eventId = 0;
// Find Event by Title
$dbEvent = qRow( $db, "SELECT * FROM events WHERE title='".addslashes($ev['name'])."'");
// FORMAT THE DESCRIPTION
$find = array('<h1>','<h2>','<h3>','</h1>','</h2>','</h3>','<p></p>','<p><br></p>','<p><br/></p>');
$repl = array('<b>','<b>','<b>','</b>','</b>','</b>','','','');
$description = '';
if (!empty($ev['description'])) $description = $ev['description'];
$description = strip_tags($description,'<p><b><a><strong><u><br><h1><h2><h3><ul><li>');
$description = str_replace($find,$repl,$description);
$description = removeAttributes( $description );
$description .= '<p><b>Please visit <a href="https://steelgoatmarket.com/sgmevents/">steelgoatmarket.com</a> for registration information.</b></p>';
// If Event not found, create it
if ($dbEvent === false) {
$ins = "INSERT INTO events (`title`, `description`, `url`, `user_id`, `channel_id`, `approved`) VALUES (";
$ins .= "'".addslashes($ev['name'])."', ";
$ins .= "'".addslashes(empty($description) ? '' : $description)."', ";
$ins .= "'', ";
$ins .= "1001, 18, 1 )";
$db->query( $ins );
$eventId = qVal( $db, "SELECT MAX(id) FROM events");
}
else {
$eventId = $dbEvent['id'];
$upd = "UPDATE events SET ";
$upd .= "title='" . addslashes($ev['name']) . "', ";
$upd .= "description='" . addslashes(empty($description) ? '' : $description) . "' ";
$upd .= "WHERE id='" . $eventId . "'";
$db->query($upd);
$last_upd = $upd;
}
// Manage Event Dates
foreach ($ev['periods'] as $per) {
// Check if event date exists
$edId = 'steelgoat-'.$per['id'];
$dbEventDate = qVal( $db, "SELECT ext_id FROM event_dates WHERE ext_id='".$edId."'");
$start_date = timestamp_to_gmt($per['periodStart'], false);
$end_date = timestamp_to_gmt($per['periodEnd'], false);
if ($dbEventDate === false) {
$ins = "INSERT INTO event_dates (`event_id`, `description`, `date_start`, `date_end`, `ext_id`, `user_id`, `location_id`, `all_day`) VALUES (";
$ins .= "'" . $eventId . "', ";
$ins .= "'" . addslashes(empty($description) ? '' : $description) . "', ";
$ins .= "'" . $start_date . "', ";
$ins .= "'" . $end_date . "', ";
$ins .= "'" . $edId . "', ";
$ins .= "1001, 10, 0 )";
$db->query($ins);
$last_upd = $ins;
$i++;
}
else {
$upd = "UPDATE event_dates SET ";
$upd .= "date_start='" . $start_date . "', date_end='" . $end_date . "', ";
$upd .= "description='" . addslashes(empty($description) ? '' : $description) . "' ";
$upd .= "WHERE ext_id='" . $edId . "'";
$db->query($upd);
$last_upd = $upd;
$u++;
}
}
}
$p++;
}
response(200, ['success' => true, 'inserts' => $i, 'updates' => $u, 'lastrun'=> date('m/d/Y H:i:s') ]);
}
//**********************************************************************************************************//
// Method: GET
// Endpoint: events/savvy
function get_v1_events_savvy( $args, $body, $uid, $admin_level, $db )
{
$i = 0;
$u = 0;
$url = 'https://savvycitizenapp.com/community/140';
$event_array = savvy_format( $url );
// print_r($event_array); exit;
$earliest_date = savvy_dates($event_array[0]);
$earliest_date = $earliest_date['start'];
// DELETE ANY DATES AFTER EARLY DATE
$db->query("DELETE FROM event_dates
WHERE event_id IN (
SELECT ed.event_id
FROM event_dates AS ed
LEFT JOIN events AS e ON ed.event_id = e.id
WHERE ed.date_start >= '".$earliest_date."' AND e.channel_id = 4
)");
foreach ($event_array as $ev) {
// Find Event by Title
$dbEvent = qRow( $db, "SELECT * FROM events WHERE title='".addslashes($ev['title'])."'");
$description = savvy_description(trim($ev['url']));
$savvy_dates = savvy_dates($ev);
$ev['title'] = str_replace("&", "&", $ev['title']);
// If Event not found, create it
if ($dbEvent === false) {
$ins = "INSERT INTO events (`title`, `description`, `url`, `user_id`, `channel_id`, `approved`) VALUES (";
$ins .= "'".addslashes($ev['title'])."', ";
$ins .= "'".addslashes($description)."', ";
$ins .= "'', ";
$ins .= "1001, 4, 1 )";
$db->query( $ins );
//echo 'INS EVENT: '.$ins."<br/>";
$eventId = qVal( $db, "SELECT MAX(id) FROM events");
}
else {
$eventId = $dbEvent['id'];
$upd = "UPDATE events SET ";
$upd .= "title='" . addslashes($ev['title']) . "' ";
//$upd .= "description='".addslashes($description)."' ";
$upd .= "WHERE id='" . $eventId . "'";
$db->query($upd);
//echo 'UPD EVENT: '.$upd."<br/>";
$last_upd = $upd;
}
// INSERT THE NEW DATE:
$ins = "INSERT INTO event_dates (`event_id`, `description`, `date_start`, `date_end`, `ext_id`, `user_id`, `location_id`, `all_day`) VALUES (";
$ins .= "'" . $eventId . "', ";
$ins .= "'".addslashes($description)."', ";
$ins .= "'" . $savvy_dates['start'] . "', ";
$ins .= "'" . $savvy_dates['end'] . "', ";
$ins .= "'" . trim($ev['url']) . "', ";
$ins .= "1001, 11, " . $savvy_dates['allday'] . " )";
$db->query($ins);
//echo 'INS EDATE: '.$ins."<br/>";
$last_upd = $ins;
$i++;
}
response(200, ['success' => true, 'inserts' => $i, 'updates' => $u, 'lastrun'=> date('m/d/Y H:i:s') ]);
}
//**********************************************************************************************************//
// Method: GET
// Endpoint: events/today
function get_v1_events_today( $args, $body, $uid, $admin_level, $db ) {
$d = getDayStartAndEnd();
$res = qSet( $db, "SELECT e.id AS evId, e.title AS evTitle, e.url AS evURL,
c.id AS chId, c.name AS chName, c.slug AS chSlug, c.avatar AS chAvatar, c.color_light AS chColorLight,
c.color_dark AS chColorDark, COUNT(ed.event_id) AS num_dates
FROM events AS e
LEFT JOIN event_dates AS ed ON e.id = ed.event_id
LEFT JOIN channels AS c ON e.channel_id = c.id
LEFT JOIN users AS u ON u.user_id = e.user_id
WHERE e.approved = 1
AND e.hidden = 0
AND LOWER(e.title) NOT LIKE '%cancelled%'
AND ed.date_start >= '".$d['start']."'
AND ed.date_end <= '".$d['end']."'
AND e.channel_id <> 14
GROUP BY e.id
ORDER BY e.title ASC");
response(200, ['success' => true, 'start' => $d['start'], 'end' => $d['end'], 'results' => $res ]);
}