HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
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('&Acirc;', '', $desc);
            $desc = str_replace('&acirc;&#128;&#153;', '\'', $desc);
            $desc = str_replace('&acirc;&#128;&#148;', '&mdash;', $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>