<?php
	/**
	 * generates an ical feed on init if url is correct
	 */
	function em_ical( $regenerate = false ){
		//add endpoints to events
		add_filter('template_redirect', 'em_ical_event');
		//check if this is a calendar request for all events
		$cal_file_request = preg_match('/events.ics$/', $_SERVER['REQUEST_URI']); //are we askig for the ics file directly but doesn't exist?
		if ( $cal_file_request || $regenerate ) {
			$calendar = em_ical_events();
			//let's create a cache file
			/*
			if( get_option('dbem_regenerate_ical') || !file_exists(ABSPATH . "/events.ics") ){
				$file = fopen( ABSPATH . "/events.ics", 'w');
				if($file){
					fwrite($file, $calendar, strlen($calendar));
					fclose($file);
					update_option('dbem_regenerate_ical',false);
				}
			}
			*/
			echo $calendar;	
			die ();
		}
	}
	add_action ( 'init', 'em_ical' );
	
	function em_ical_event(){
		global $post;
		if( is_single() && !empty($post) && $post->post_type == EM_POST_TYPE_EVENT && get_query_var('ical') ){
			global $EM_Event;
			$EM_Event = em_get_event($post->ID, 'post_id');
			ob_start();
			em_locate_template('templates/ical-event.php', true);
			echo preg_replace("/([^\r])\n/", "$1\r\n", ob_get_clean());
			exit();
		}
	}
	
	
	function em_ical_events(){
		ob_start();
		em_locate_template('templates/ical.php', true);
		return preg_replace("/([^\r])\n/", "$1\r\n", ob_get_clean());//get the contents to output and clean crlf issues
	}
	
	function em_update_ical($result){
		update_option('dbem_regenerate_ical',true);
		return $result;
	}
	add_filter('em_event_save','em_update_ical', 1, 1);
?>