db = EL_Db::get_instance();
$this->options = EL_Options::get_instance();
$this->init();
}
public function init() {
add_feed($this->options->get('el_feed_name'), array(&$this, 'print_eventlist_feed'));
if($this->options->get('el_head_feed_link')) {
add_action('wp_head', array(&$this, 'print_head_feed_link'));
}
}
public function print_head_feed_link() {
echo '';
}
public function print_eventlist_feed() {
header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true);
$events = $this->db->get_events($this->options->get('el_feed_upcoming_only') ? 'upcoming' : null);
// Print feeds
echo
'
'.get_bloginfo_rss('name').'
'.get_bloginfo_rss('url').'
'.$this->options->get('el_feed_description').'
'.mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false).'
'.get_option('rss_language').'
'.apply_filters('rss_update_period', 'hourly').'
'.apply_filters('rss_update_frequency', '1').'
'; do_action('rss2_head');
if(!empty($events)) {
foreach ($events as $event) {
echo '
-
'.esc_attr($this->format_date($event->start_date, $event->end_date).' - '.$event->title).'
'.mysql2date('D, d M Y H:i:s +0000', $event->start_date, false).'
'.esc_attr($this->format_date($event->start_date, $event->end_date).' '.
('' != $event->time ? $event->time : '').('' != $event->location ? ' - '.$event->location : '')).'
'.('' != $event->details ?
'format_date($event->start_date, $event->end_date).' '.
('' != $event->time ? $event->time : '').('' != $event->location ? ' - '.$event->location : '')).
$event->details.']]>' : '').'
';
}
}
echo '
';
}
public function eventlist_feed_url() {
if(get_option('permalink_structure')) {
$feed_link = get_bloginfo('url').'/feed/';
}
else {
$feed_link = get_bloginfo('url').'/?feed=';
}
return $feed_link.$this->options->get('el_feed_name');
}
public function update_feed_rewrite_status() {
$feeds = array_keys((array)get_option('rewrite_rules'), 'index.php?&feed=$matches[1]');
$feed_rewrite_status = (0 < count(preg_grep('@[(\|]'.$this->options->get('el_feed_name').'[\|)]@', $feeds))) ? true : false;
if('1' == $this->options->get('el_enable_feed') && !$feed_rewrite_status) {
// add eventlist feed to rewrite rules
flush_rewrite_rules(false);
}
elseif('1' != $this->options->get('el_enable_feed') && $feed_rewrite_status) {
// remove eventlist feed from rewrite rules
flush_rewrite_rules(false);
}
}
private function format_date($start_date, $end_date) {
$startArray = explode("-", $start_date);
$start_date = mktime(0,0,0,$startArray[1],$startArray[2],$startArray[0]);
$endArray = explode("-", $end_date);
$end_date = mktime(0,0,0,$endArray[1],$endArray[2],$endArray[0]);
$event_date = '';
if ($start_date == $end_date) {
if ($startArray[2] == "00") {
$start_date = mktime(0,0,0,$startArray[1],15,$startArray[0]);
$event_date .= date("F, Y", $start_date);
return $event_date;
}
$event_date .= date("M j, Y", $start_date);
return $event_date;
}
if ($startArray[0] == $endArray[0]) {
if ($startArray[1] == $endArray[1]) {
$event_date .= date("M j", $start_date) . "-" . date("j, Y", $end_date);
return $event_date;
}
$event_date .= date("M j", $start_date) . "-" . date("M j, Y", $end_date);
return $event_date;
}
$event_date .= date("M j, Y", $start_date) . "-" . date("M j, Y", $end_date);
return $event_date;
}
}
?>