File: /home/awaldron/_domains/phlibrary.alanwaldron.com/get_eventkeeper.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
require_once("wp-load.php");
date_default_timezone_set('America/New_York');
$dst = !!date('I');
function htmlallentities($str){
$res = '';
$strlen = strlen($str);
for($i=0; $i<$strlen; $i++){
$byte = ord($str[$i]);
if($byte < 128) // 1-byte char
$res .= $str[$i];
elseif($byte < 192); // invalid utf8
elseif($byte < 224) // 2-byte char
$res .= '&#'.((63&$byte)*64 + (63&ord($str[++$i]))).';';
elseif($byte < 240) // 3-byte char
$res .= '&#'.((15&$byte)*4096 + (63&ord($str[++$i]))*64 + (63&ord($str[++$i]))).';';
elseif($byte < 248) // 4-byte char
$res .= '&#'.((15&$byte)*262144 + (63&ord($str[++$i]))*4096 + (63&ord($str[++$i]))*64 + (63&ord($str[++$i]))).';';
}
return $res;
}
function get_cat($title, $desc) {
$cat_id = 3;
if (preg_match('/(kids|toddler|children|baby|finnegan|santa|trunk or treat)/i', $title) === 1) {
$cat_id = 4;
}
else if (preg_match('/(kids|toddler|children|baby|finnegan|santa|trunk or treat)/i', $desc) === 1) {
$cat_id = 4;
}
else if (preg_match('/(teen|young adult)/i', $title) === 1) {
$cat_id = 11;
}
else if (preg_match('/(teen|young adult)/i', $desc) === 1) {
$cat_id = 11;
}
else if (preg_match('(conor)', $title) === 1) {
$cat_id = 1;
}
return $cat_id;
}
function create_event( $e, $db ) {
$ins = "INSERT INTO events (`title`,`location`,`address`,`event_cat_id`,`event_private`,`description`,`event_src`) VALUES (";
$ins .= "'".addslashes($e['title'])."', ";
$ins .= "'Penn Hills Library', ";
$ins .= "'1037 Stotler Rd, Penn Hills, PA 15235', ";
$ins .= "'".$e['cat_id']."', ";
$ins .= "'".$e['private']."', ";
$ins .= "'".addslashes($e['description'])."',";
$ins .= "'lib'";
$ins .= ")";
$db->query($ins);
return $db->get_var( "SELECT MAX(event_id) FROM events" );
}
function update_event( $e, $eid, $db ) {
$data = [
'event_cat_id' => $e['cat_id'],
'description' => $e['description']
];
$where = ['event_id' => $eid];
$result = $db->update('events', $data, $where);
return true;
}
function create_date( $eid, $e, $db ) {
$end = (!empty($e['end']) ? $e['end'] : strtotime('+1 hour', strtotime($e['start'])));
$data = [
'event_id' => $eid,
'start' => $e['start'],
'end' => $end,
'seats' => 0,
'attendance' => 0,
'ek_id' => $e['ekid']
];
$db->insert('event_date', $data);
return $db->get_var( "SELECT MAX(event_date_id) FROM event_date" );
}
error_reporting(E_ALL);
$handle = curl_init();
$url = 'http://www.eventkeeper.com/ekfeed/PENNHILLS_WEBSITE2.xml?v=1';
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);
$xml = simplexml_load_string($response);
$xml = $xml->channel->item;
$events = array();
$i = 0;
foreach($xml as $event) {
foreach($event as $k=>$v) {
if ($k==='title') {
$title = (string)$v;
$p1 = explode('--', $title);
$p2 = explode(' at ',$p1[1]);
$title = trim($p2[0]);
$events[$i]['title'] = $title;
} elseif ($k==='ekdate') {
$events[$i]['ekdate'] = (string)$v;
$events[$i]['start_time'] = strtotime($events[$i]['ekdate']) - ($dst ? 3600 : 0);
$events[$i]['start'] = date('Y-m-d H:i:s', $events[$i]['start_time']);
} elseif ($k==='description') {
$desc = (string)$v;
$desc = mb_convert_encoding( $desc, "HTML-ENTITIES", 'UTF-8' );
//$desc = htmlallentities($desc);
echo $desc;
$desc = str_replace('<p> </p>', '', $desc);
$desc = str_replace('Â', '', $desc);
$desc = str_replace('’', '\'', $desc);
$desc = str_replace('—', '—', $desc);
$desc = strip_tags($desc, '<p><a><br><u><i><img>');
$desc = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $desc);
$desc = str_replace('<img ', '<img style="float:right;max-width:200px;max-height:150px" ', $desc);
$res = preg_match_all('/<img[^>]+>/i',$desc, $images);
$desc = preg_replace('/<img[^>]+>/i', '$1', $desc);
$desc = preg_replace('/<span[^>]+>/i', '$1', $desc);
$desc = preg_replace('/<\/span>/i', '$1', $desc);
//$desc = preg_replace('/<a[^>]+>/i', '$1', $events[$i]['description']);
//$desc = preg_replace('/<\/a>/i', '$1', $events[$i]['description']);
$desc = $images[0][0] . $desc;
$desc = str_replace('Location:', '<b>LOCATION:</b>', $desc);
//$desc = str_replace('<a ', '<a target="_blank" ', $desc);
$events[$i]['description'] = $desc;
$events[$i]['private'] = (stristr($desc, 'private') ? 1 : 0);
} else if ($k==='link') {
$events[$i]['ekid'] = substr($v, strpos($v, "#") + 1);
$events[$i][$k] = (string)$v;
} else if ($k==='author') {
$author = (string)$v;
$email = preg_replace('/\(([^)]+)\)/i', '', $author);
$author = substr($v, strpos($v, "(") + 1, -1);
$events[$i]['description'] .= '<p><b>CONTACT:</b> ' . $author . ' - <a href="mailto:'.$email.'">' . $email . '</a></p>';
} else {
$events[$i][$k] = (string)$v;
}
$events[$i]['cat_id'] = get_cat( $events[$i]['title'], $events[$i]['description'] );
}
$i++;
}
//echo "<pre>";print_r($events);echo "</pre>";
global $wpdb;
$db = new wpdb(APPDB_USER,APPDB_PASSWORD,APPDB_NAME,APPDB_HOST);
// DELETE Future event dates
$del = $db->query("DELETE FROM event_date WHERE ek_id > 0 AND start > '".date('Y-m-d')." 00:00:00'");
foreach ($events as $e) {
// Check if Event Title Exists
$eid = $db->get_var( "SELECT event_id FROM events WHERE title='".addslashes($e['title'])."'" );
if (empty($eid)) {
$eid = create_event($e, $db);
} else {
update_event( $e, $eid, $db );
}
$did = create_date($eid, $e, $db);
// Check if event date already exists
// $did = $db->get_var( "SELECT event_date_id FROM event_date WHERE event_id=".$eid." AND ek_id='".$e['ekid']."'" );
// if (empty($did)) {
//
// }
// Update the event description
//$db->query("UPDATE events SET description='".$e['description']."' WHERE event_id=".$eid);
}
?>
</body>
</html>