$fbes_api_key, 'secret' => $fbes_api_secret, 'cookie' => true, )); $ret = array(); foreach ($fbes_api_uids as $key => $value) { if($value!='') { //https://developers.facebook.com/docs/reference/fql/event/ $fql = "SELECT eid, name, start_time, end_time, location, description FROM event WHERE eid IN ( SELECT eid FROM event_member WHERE uid = $value ) ORDER BY start_time desc"; $param = array( 'method' => 'fql.query', 'query' => $fql, 'callback' => '' ); $result = $facebook->api($param); foreach($result as $k => $v) $result[$k]['uid'] = $value; $ret = array_merge($ret, $result); } } return $ret; } function fbes_segments($url='') { $parsed_url = parse_url($url); $path = trim($parsed_url['path'],'/'); return explode('/',$path); } function fbes_send_events($events) { $query = new WP_Query(array( 'post_type'=>'tribe_events', 'posts_per_page'=>'-1' )); foreach($query->posts as $post) { if(!empty($post->to_ping)) { $segments = fbes_segments($post->to_ping); $eid = array_pop($segments); $eids[$eid] = $post->ID; } //if you're reading this and you want to delete all those duplicate events, uncomment this temporarially. Note, it will also delete all manually made events since June 13 //http://codex.wordpress.org/Version_3.4 - June 13, 2012 //depending on many duplicates you had, you might end up re-loading this script a bunch of times after it times out. Me, I had 14k duplicates. Had to run the script like 10 times. /* else { $post_date = trim(substr($post->post_date, 0, 10)); if($post->post_date > '2012-06-12') wp_delete_post($post->ID); } */ } //file_put_contents($_SERVER['DOCUMENT_ROOT'].'/fbevent.log', print_r(array(time(),$events,$eids),1)."\n".str_repeat('=',40)."\n", FILE_APPEND); foreach($events as $event) { $args['post_title'] = $event['name']; $offset = get_option('gmt_offset')*3600; $offsetStart = $event['start_time']+$offset; $offsetEnd = $event['end_time']+$offset; //don't update or insert events from the past. if($offsetEnd > time()) { $args['EventStartDate'] = date("m/d/Y", $offsetStart); $args['EventStartHour'] = date("H", $offsetStart); $args['EventStartMinute'] = date("i", $offsetStart); $args['EventEndDate'] = date("m/d/Y", $offsetEnd); $args['EventEndHour'] = date("H", $offsetEnd); $args['EventEndMinute'] = date("i", $offsetEnd); $args['post_content'] = $event['description']; $args['Venue']['Venue'] = $event['location']; $args['post_status'] = "Publish"; $args['post_type'] = "tribe_events"; //$args['to_ping'] = $event['eid']; //damn you, sanitize_trackback_urls in 3.4 $args['to_ping'] = 'https://www.facebook.com/events/'.$event['eid'].'/'; if($args['EventStartHour'] == '22' && $event['uid'] == '256763181050120') { //why are UT events 2 hours off??? $args['EventStartHour'] = '20'; $args['EventEndHour'] = '22'; $args['EventEndDate'] = date('m/d/Y',strtotime($args['EventEndDate'], '-1 day')); } $inserting = $post_id = false; if (!array_key_exists($event['eid'], $eids)) { //double check $already_exists = false; foreach($query->posts as $post) { if($post->to_ping == $args['to_ping'] || trim($post->pinged) == $args['to_ping']) { $already_exists = true; } } if(!$already_exists) { file_put_contents($_SERVER['DOCUMENT_ROOT'].'/fbevent.log', print_r(array(time(),'creating', $args, $eids, $query->posts),1)."\n".str_repeat('=',40)."\n", FILE_APPEND); $post_id = tribe_create_event($args); echo "
Inserting: ".$post_id; $inserting = true; } } if(!$inserting) { $post_id = $eids[$event['eid']]; tribe_update_event($post_id, $args); echo "
Updating: ".$eids[$event['eid']]; } if($post_id) update_metadata('post', $post_id, 'fb_event_obj', $event); //eid, name, start_time, end_time, location, description } reset($eids); } } function fbes_options_page() { $fbes_api_uids = array(); #Get option values $fbes_api_key = get_option('fbes_api_key'); $fbes_api_secret = get_option('fbes_api_secret'); $fbes_api_uid = get_option('fbes_api_uid'); $fbes_api_uids = get_option('fbes_api_uids'); $fbes_frequency = get_option('fbes_frequency'); #Get new updated option values, and save them if( !empty($_POST['update']) ) { $fbes_api_key = $_POST['fbes_api_key']; update_option('fbes_api_key', $fbes_api_key); $fbes_api_secret = $_POST['fbes_api_secret']; update_option('fbes_api_secret', $fbes_api_secret); $fbes_api_uid = $_POST['fbes_api_uid']; update_option('fbes_api_uid', $fbes_api_uid); $fbes_frequency = $_POST['fbes_frequency']; update_option('fbes_frequency', $fbes_frequency); $events = fbes_get_events($fbes_api_key, $fbes_api_secret, $fbes_api_uids); update_schedule($fbes_frequency); $msg = "Syncronization of Events from Facebook Complete."; ?>

$value) if($fbes_api_uids[$key] == $_GET['r']) unset($fbes_api_uids[$key]); update_option('fbes_api_uids', $fbes_api_uids); } ?>


Sync Facebook Events

'; echo ''; echo ''; echo ''; echo ''; echo '
Facebook App ID:
Facebook App Secret:
Update Fequency:'; echo '
Add Facebook Page UID:'; echo '
'; foreach ($fbes_api_uids as $value) { if($value!='') echo '  '.$value.'  remove
'; } echo '

'; ?>
Updaing all facebook events...

Events Calendar updated with current Facebook events.