<?php
#
# inc_event_functions.html5
#

function event_title($event_title) {
	$wquotes = array('"',"'","′","`");
	$rquotes = array('',"'","'","'");
	$event_title = str_replace($wquotes,$rquotes,$event_title);
	
	return $event_title;
}

# produce start- and endtime from (CONTAO) taxonomy values
function event_starttime($esh,$esm) {
	if($esh.$esm <> '00') $starttime = sprintf('%02d',$esh-240) . ":" . sprintf('%02d',($esm-264)*5); else $starttime = '';   
	return $starttime;
}
function event_endtime($eeh,$eem) {
	if($eeh.$eem <> '00') $endtime = sprintf('%02d',$eeh-240) . ":" . sprintf('%02d',($eem-264)*5); else $endtime = '';   
	return $endtime;
}

# produce time period AND itemproperty
function event_period($esd,$esh,$esm,$eed,$eeh,$eem) {
	# event start date, event start hour, event start minute, event end date, event end hour, event end minute
	setlocale(LC_TIME, "de_DE");	
	$event_start = "<span class=\"detailed\">".strftime("%a, ",$esd)."</span>".date("d.m.Y", $esd);
	$itemprop_s = "<meta itemprop=\"startDate\" content=\"".date("Y-m-d", $esd);
	$event_end = "";
	if($esd < $eed or $eed == '') {
		# event lasts more than one day
		$event_end = " &ndash; "."<span class=\"detailed\">".strftime("%a, ",$eed)."</span>".date("d.m.Y", $eed);
		$itemprop_e = "<meta itemprop=\"endDate\" content=\"".date("Y-m-d", $eed);
		if($esh.$esm == '00') {
			# event has no start time (lasts hole days)
			$itemprop_s .= "\">";
			$itemprop_e .= "\">";
		}
		elseif($eeh.$eem == '00') {
			# event has start time only
			$event_start .= " (".event_starttime($esh,$esm).")";
			$itemprop_s .= "T".event_starttime($esh,$esm)."\">";
			$itemprop_e .= "\">";
		}
		else {
			# event has start and end time
			$event_start .= ", ".event_starttime($esh,$esm)."<span class=\"detailed\"> Uhr</span>";
			$event_end .= ", ".event_endtime($eeh,$eem)."<span class=\"detailed\"> Uhr</span>";
			$itemprop_s .= "T".event_starttime($esh,$esm)."\">";
			$itemprop_e .= "T".event_endtime($eeh,$eem)."\">";
		}
	}
	else {
		# event is on one day
		if($esh.$esm == '00') {
			# event has no start time (lasts a hole day)
			$itemprop_s .= "\">";
		}
		elseif($eeh.$eem == '00') {
			# event has start time only
			$event_start .= ", ".event_starttime($esh,$esm)."<span class=\"detailed\"> Uhr</span>";
			$itemprop_s .= "T".event_starttime($esh,$esm)."\">";
		}
		else {
			# event has start and end time
			$event_start .= ", ".event_starttime($esh,$esm);
			$itemprop_s .= "T".event_starttime($esh,$esm)."\">";
			$event_end = " &ndash; ".event_endtime($eeh,$eem)."<span class=\"detailed\"> Uhr</span>";
			$itemprop_e = "<meta itemprop=\"endDate\" content=\"".date("Y-m-d", $esd)."T".event_endtime($eeh,$eem)."\">";
		}
	} 
	$event_period = "<span class=\"event_start\">".$event_start."</span>";
	if ($event_end <> '') $event_period .= "<span class=\"event_end\">".$event_end."</span>";
	$event_period .= $itemprop_s.$itemprop_e;

	return $event_period;
}

# produce location AND itemproperty
function event_location($reg,$zip,$loc,$address,$suffix) {
	if($reg < 130) $ccode = "D ";
	elseif($reg < 140) $ccode = "A ";
	elseif($reg == 141) $ccode = "CH ";
	elseif($reg == 142) $ccode = "I ";
	else $ccode = "";

	$event_loc = "<span class=\"location\"><span itemprop=\"location\" itemscope itemtype=\"https://schema.org/PostalAddress\" class=\"eventort\">";
	$event_loc .= $ccode."<span itemprop=\"postalCode\">".$zip."</span> <span itemprop=\"addressLocality\">".$loc;
	if($address) $event_loc .= "<span class=\"address\">, " . $address."</span>"; # close span class address
	$event_loc .= "</span></span>"; # close span itemprop addressLocality and itemprop location  
	if($suffix) $event_loc .= "<span class=\"address_suffix\">, <em>".$suffix."</em></span>";
	$event_loc .= "</span>"; # close span class location 

	return $event_loc;
}

function event_type($cat) {
	switch($cat) {
		case 230: 
		$event_type = 'DanceEvent';
		break;
		case 231: 
		case 232: 
		case 233: 
		case 235: 
		$event_type = 'MusicEvent';
		break;
		case 234: $event_type = 'EducationEvent';
		break;
		case 236: $event_type = 'ChildrensEvent';
		break;
		case 237: $event_type = 'Event';
		break;
	}
	
	return $event_type;
}

function event_details($event_details) {
	# Alle Tags außer erlaubten entfernen
	$event_details = strip_tags($event_details,"<p><br><em><i><a><ul><li><sup>");
	# Alle style-Atrribute entfernen
	$event_details = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $event_details);
	# Alle aligns entfernen (z.B. align="center")
	$event_details = preg_replace('/(<[^>]+) align=".*?"/i', '$1', $event_details);
	# Alle leeren Tags entfernen (z.B. <p></p>) 
	$event_details = preg_replace('/<([^>]*) (.*)><\/\\1>/', '$1', $event_details);
	# Alle <p>[nbsp]</p> entfernen
	$event_details = preg_replace('/<p[^>]*>[\s|\xc2\xa0]*<\/p>/', '$1', $event_details);
	
	return $event_details; 
}

function event_organizer($event_organizer, $event_org_url) {
	$wquotes = array('"',"'","′","`");
	$rquotes = array('',"'","'","'");
  $event_organizer = str_replace($wquotes,$rquotes,$event_organizer);
	if($event_organizer AND $event_org_url) {
		if(parse_url($event_org_url, PHP_URL_SCHEME) === null) $event_org_url = "http://" . $event_org_url;
		$output = "<p>Veranstalter: <a href=\"".$event_org_url."\" target=\"_blank\">".$event_organizer."</a></p>\n";
		} 
	elseif($event_organizer) echo "<p>Veranstalter: ".$event_organizer."</p>\n";
	
	return $output;
}

function event_prize($event_fee0, $event_fee1,$event_fee_text) {
	if($event_fee0 OR $event_fee1 OR $event_fee_text) {
		$fee = "";
		$output = "<p>"; 
		if($event_fee0 OR $event_fee1) {
$output .= "(Eintritts-)Kosten: ";
			$fee = ", ";
			if($event_fee0 AND $event_fee1) $output .= str_replace(",00","",number_format($event_fee0,2,",","."))." €, ermäßigt ".str_replace(",00","",number_format($event_fee1,2,",","."))." €";
			elseif($event_fee0) $output .= str_replace(",00","",number_format($event_fee0,2,",","."))." €";
			else $output .= str_replace(",00","",number_format($event_fee1,2,",","."))." € (erm.)";
		} 
		if($event_fee_text) $output .= $fee.$event_fee_text;
	$output .= "</p>";
	} 

	return $output;
}

function event_contact($kontakt,$kontakt_email) {
	$output = "";
	if($kontakt_email) $output = " [{{email_open::".$kontakt_email."}}E-Mail</a>]";
	if($kontakt) $output = "<p>Kontakt/Info: ".$kontakt.$output."</p>";

	return $output;
}
function event_google_url($esd,$esh,$esm,$eed,$eeh,$eem,$title,$zip,$loc,$address,$details) {
	setlocale(LC_TIME, "de_DE");
	$google_url  = "https://www.google.com/calendar/event?action=TEMPLATE[&]hl=de[&]ctz=Europe%2FBerlin";
	# Google's event date is format "yyyymmddThhmmss/yyyymmddThhmmss"
	# resp. "yyyymmdd/yyyymmdd" for full-time events

	# initialize with startdate "yyyymmdd"
  $google_url .= "[&]dates=".date("Ymd", $esd);
	if($esd < $eed) {
		# event lasts more than one day
		if($esh.$esm == '00') {
			# event has no start time (lasts hole days)
			# Caution! Google's full time events are ending on next day!
			# for this add 90000 seconds (instead of 86500, to meet changes of daylight saving time)
			$google_url .= "%2F".date("Ymd", $eed+90000);
		}
		elseif($eeh.$eem == '00') {
			# event has start time only
			# Google ALWAYS needs start AND endtime in format hhmmss (be aware: event_starttime provides "hh:mm"!)
      $starttime = str_replace(":","",event_starttime($esh,$esm))."00"; #remove ":" and add "00" for seconds
      $google_url .= "T".$starttime."%2F".date("Ymd", $eed)."T".$starttime;
		}
		else {
			# event has start and end time
      $starttime = str_replace(":","",event_starttime($esh,$esm))."00"; #remove ":" and add "00" for seconds
      $endtime = str_replace(":","",event_endtime($eeh,$eem))."00"; #remove ":" and add "00" for seconds
			$google_url .= "T".$starttime."%2F".date("Ymd", $eed)."T".$endtime;
		}
	}
	else {
		# event is on one day
		if($esh.$esm == '00') {
			# event has no start time (lasts a hole day)
			# Caution! Google's full time events are ending on next day!
			# for this add 90000 seconds (instead of 86500, to meet changes of daylight saving time)
			$google_url .= "%2F".date("Ymd", $esd+90000);
		}
		elseif($eeh.$eem == '00') {
			# event has start time only
			# Google ALWAYS needs start AND endtime in format hhmmss (be aware: event_starttime provides "hh:mm"!)
      $starttime = str_replace(":","",event_starttime($esh,$esm))."00"; #remove ":" and add "00" for seconds
      $google_url .= "T".$starttime."%2F".date("Ymd", $esd)."T".$starttime;
		}
		else {
			# event has start and end time
      $starttime = str_replace(":","",event_starttime($esh,$esm))."00"; #remove ":" and add "00" for seconds
      $endtime = str_replace(":","",event_endtime($eeh,$eem))."00"; #remove ":" and add "00" for seconds
			$google_url .= "T".$starttime."%2F".date("Ymd", $esd)."T".$endtime;
		}
	} 
	# Google event title
	$google_url .= "[&]text=" . rawurlencode($title);
	# Google event location
	$google_url .= "[&]location=" . rawurlencode($zip . " " . $loc . ", " . $address);
	#Google event details (description)
	$google_url .= "[&]details=" . rawurlencode(strip_tags(preg_replace("/<img[^>]+\>/i", "(Bild) ", str_replace("<br>", "\n", $details))));

	return $google_url;
}

function event_email($title,$zip,$loc,$start,$details) {
	# generate URL to send event via email
	$mailer_url  = "event_mailer.html?title=" . rawurlencode($title) . "&location=" . rawurlencode($zip . " " . $loc) . "&startdate=" . date("d.m.Y", $start);
	# Prepare event description
	# change '<br>' and '</p>' to '\n' / remove all href-fragments and html-tags
	# after rawurlencode '\n' would be '%5Cn%20'. But we need just '%0A' (LineFeed without blank!)
	$search = array('</p>','<br>','http://','https://','mailto:');
	$replace = array('\n','\n','','','');
	$mailer_url .= "&details=" . str_replace('%0A%20','%0A',str_replace('%5Cn','%0A',rawurlencode(strip_tags(str_replace($search, $replace, $details)))));
	return $mailer_url;
}

# define function event_iconlinks
function event_iconlinks($id,$title,$details,$esd,$esh,$esm,$eed,$eeh,$eem,$geo_lat,$geo_lng,$zip,$loc,$address,$cat,$suche,$page,$active,$canceled,$nomember,$nomembert,$user_id,$authorid,$editor,$requestpage,$requestpage2) {
	# output of Iconlinks
	$output = "<div class=\"iconlinks noprint\">\n";
	# add event to google calendar
	$output .= "<a class=\"no_external_link external_link googlecal_add icon-calendar\" href=\"".event_google_url($esd,$esh,$esm,$eed,$eeh,$eem,$title,$zip,$loc,$address,$details)."\" target=\"_blank\" title=\"Veranstaltung in deinen Google-Kalender kopieren\"></a>\n";
	# Show eventlocation on map
	if($geo_lat AND $geo_lng) {
	$output .= "<a class=\"no_external_link mapmark icon-location-pin\" target=\"_blank\" href=\"Veranstaltungsort_auf_Karte.html?loc=".urlencode($zip." ".$loc)."&lat=".$geo_lat."&lng=".$geo_lng."&evcat=".$cat."\" title=\"Veranstaltungsort auf Landkarte anzeigen\"></a>\n";
	# Routing via google maps
	$output .= "<a class=\"no_external_link eventroute icon-directions\" href=\"http://maps.google.de/maps?daddr=".$geo_lat."+".$geo_lng."(".urlencode($zip.' '.$loc).")&hl=de&t=m&z=8\" target=\"_blank\" title=\"Route zum Veranstaltungsort planen\"></a>\n";
	}
	# print event
	$output .= "<a itemprop=\"url\" class=\"no_external_link external_link event_print icon-printer\" href=\"http://volxmusik.de/event_print/".$id.".html\" target=\"_blank\" title=\"Veranstaltung ausdrucken\"></a>\n";
	# share event via email
	$output .= "<a class=\"event_mailer".$nomember." icon-share\" href=\"".event_email($title,$zip,$loc,$start,$details)."\" target=\"_blank\" title=\"Veranstaltung per E-Mail teilen".$nomembert."\"></a>\n";
	
	# If user is author of event or event-editor, special actions are allowed
	if ($user_id <> '' and ($user_id == $authorid or $editor == 1)) {
	  $output .= "<a class=\"editlink icon-pencil\" href=\"event_edit/".$id.".html?reqpage=".$requestpage2."&search=".$suche."&page=".$page."\" title=\"Veranstaltung bearbeiten\"></a>\n";
		# if event is not canceled and active 
		if ($canceled == '') { 
			if ($active == 1) { 
				# set event to private
				$output .= "<a class=\"icon-control-pause red\" onclick='if(!confirm(\"Veranstaltung wirklich unveröffentlichen? \nBitte beachte: \n1. das Wiederveröffentlichen ist nur über &bdquo;Mein volXmusik.de&ldquo; möglich! \n2. Abgesagte Veranstaltungen bitte nicht unveröffentlichen, sondern absagen!\")) return false;' href=\"inactivate_event.html?reqpage=".$requestpage.".html&search=".$suche."&event_id=".$id."&title=".urlencode($title)."\" title=\"Veranstaltung unveröffentlichen\"></a>\n";
			}
			else {
				# set event to public 
				$output .= "<a class=\"icon-control-play green\" href=\"activate_event.html?reqpage=".$requestpage.".html&search=".$suche."&event_id=".$id."&title=".urlencode($title)."\" title=\"Veranstaltung veröffentlichen\"></a>\n";
			}
		# set event to canceled                        
		$output .= "<a class=\"icon-ban red\" onclick='if(!confirm(\"Veranstaltung wirklich absagen? \n(Die Veranstaltung wird mit dem Vermerk ABGESAGT gekennzeichnet.)\")) return false;' href=\"cancel_event.html?reqpage=".$requestpage.".html&search=".$suche."&event_id=".$id."&title=".urlencode($title)."\" title=\"Veranstaltung absagen\"></a>\n";
		}                                                
	}
	# else there will be a grey icon to show "for members only"
	else { 
	$output .= "<a class=\"editlink nomember icon-pencil\" title=\"keine Berechtigung zum Bearbeiten\"></a>\n";
	}
	$output .= "</div>\n";

	return $output;
}

# define function event_metatags
function event_metatags($id,$active,$reg,$cat,$authorid,$author,$updaterid,$updater,$timestamp,$editor) {
	$output = "<div class=\"meta tags\">\n";
	$output .= "<span class=\"icon-map\">".$reg."</span> <span class=\"icon-tag\">".$cat."</span> <span class=\"icon-calendar\">#".$id."</span>";
	if ($authorid) $link_2_author = " <span class=\"icon-user\"><a href=\"http://volxmusik.de/memberlist.html?show=".$authorid."\" title=\"Benutzerprofil von ".$author."\">".$author."</a></span>";
	if ($editor) {
		# event editors can see last updater and timestamp of last update
		$output .= "<span class=\"icon-event\">".str_replace(" ","[nbsp]",date("d.m.Y - H:i",$timestamp))."</span>".$link_2_author;
		if($authorid AND $authorid <> $updaterid) $output .= " <span class=\"icon-pencil\">".$updater."</span>";
	} 
	else { 
		$output .= "<span class=\"icon-event\">".str_replace(" ","[nbsp]",date("d.m.Y",$timestamp))."</span>".$link_2_author;
	} 
	if ($active == '') $output .= " <span class=\"icon-control-pause red\">nicht veröffentlicht</span>";
	$output .= "</div>\n";
	
	return $output;
}
#
# inc_event_functions.html5
#
?>