bueltge
3/28/2011 - 2:15 PM

Submit Event in Frontend of Blog via Template in Theme for Plugin: EVENTS MANAGER EXTENDED

Submit Event in Frontend of Blog via Template in Theme for Plugin: EVENTS MANAGER EXTENDED

<?php
/*
Template Name: Submit Event
Author: Frank Bueltge
Author URI: http://bueltge.de/
*/

function add_errormessage_style() { ?>
	<style type="text/css">
		.errormessage { border: 3px solid red; padding: 5px; color: #000; } 
		.event_spam{ display:none; }
		.eventbox h4 { border-bottom: 1px solid #bbb; margin: 30px 0 15px 0; };
	</style>
<?php
}
add_action( 'wp_head', 'add_errormessage_style' );

function add_script2admin_footer() { ?>
	<script type="text/javascript">
	jQuery(document).ready( function($){
		$("#event_start_date, #event_end_date").datepicker({ dateFormat: 'yy-mm-dd' });
		$('#event_start_time, #event_end_time').timepicker({ hourText: 'Stunde', minuteText: 'Minute', amPmText: ['', ''] });
	});
	</script>
<?php
}
add_action( 'wp_footer', 'add_script2admin_footer', 20 );

// datepicker for event-date and correct format, include styles
wp_enqueue_script( 'jquery-ui-datepicker', get_bloginfo('stylesheet_directory') . '/js/jquery-ui-1.8.11.custom.min.js', array('jquery-ui-core') , 0.1, TRUE );
wp_enqueue_script( 'jquery-ui-datepicker-de', get_bloginfo('stylesheet_directory') . '/js/jquery.ui.datepicker-de.js', array('jquery-ui-datepicker') , 0.1, TRUE );
wp_enqueue_style( 'jquery-ui-datepicker', get_bloginfo('stylesheet_directory') . '/css/overcast/jquery-ui-1.8.11.custom.css' );
// timepicker for timestamp, includes styles
wp_enqueue_script( 'jquery-ui-timepicker', get_bloginfo('stylesheet_directory') . '/js/jquery.ui.timepicker.js', array('jquery-ui-core') , 0.1, TRUE );
wp_enqueue_style( 'jquery-ui-timepicker', get_bloginfo('stylesheet_directory') . '/css/jquery-ui-timepicker.css' );

$categories = eme_get_categories();
if ( $categories ) {
	$category_list = '';
	foreach ($categories as $this_category) {
		$category_list .= '<input type="radio" value="' . $this_category['category_id'] . '" name="event_category_id"/> ' . $this_category['category_name'] . '<br />';
	}
}

if( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty( $_POST['action'] ) && wp_verify_nonce( $_POST['new-event'], 'action_new_event' ) ) {
	
	$error = '';
	
	// all fields for event
	if ( isset($_POST['event_name']) && '' != $_POST['event_name'] ) { 
		$event_name = esc_attr( $_POST['event_name'] ); 
	} else {
		$error .= __('Bitte hinterlasse einen Eventnamen!') . '<br/>';
	}
	
	if ( isset($_POST['event_start_date']) && '' != $_POST['event_start_date'] ) { 
		$event_start_date = esc_attr( $_POST['event_start_date'] ); 
	} else { 
		$error .=  __('Bitte hinterlasse einen Event-Startzeit!') . '<br/>'; 
	}
	
	if ( isset($_POST['event_start_time']) && '' != $_POST['event_start_time'] ) { 
		$event_start_time = esc_attr( $_POST['event_start_time'] ) . '00'; 
	} else { 
		$event_start_time = '00:00:00'; 
	}
	
	if ( isset($_POST['event_end_date']) && '' != $_POST['event_end_date'] ) { 
		$event_end_date = esc_attr( $_POST['event_end_date'] ); 
	} else { 
		$event_end_date = $event_start_date; 
	}
	
	if ( isset($_POST['event_end_time']) && '' != $_POST['event_end_time'] ) { 
		$event_end_time = esc_attr( $_POST['event_end_time'] ) . ':00'; 
	} else { 
		$event_end_time = $event_start_time; 
	}
	
	if ( isset($_POST['description']) && '' != $_POST['description'] ) { 
		$description = esc_attr( $_POST['description'] ); 
	} else { 
		$error .= __('Bitte hinterlasse eine kurze Beschreibung') . '<br/>'; 
	}
	
	if ( isset($_POST['event_category_id']) && '' != $_POST['event_category_id'] ) { 
		$event_category_id = (int) esc_attr( $_POST['event_category_id'] ); 
	} else { 
		$event_category_id = NULL; 
	}
	
	if ( isset($_POST['event_contactperson_email_body']) && '' != $_POST['event_contactperson_email_body'] ) { 
		$event_contactperson_email_body = esc_attr( $_POST['event_contactperson_email_body'] );
		$description .= "\n" . __('E-Mail-Kontakt:') . ' ' . $event_contactperson_email_body;
	} else { 
		$error .= __('Bitte hinterlasse eine E-Mail Adresse zum Nachfragen!') . '<br/>';
	}
	
	if ( isset($_POST['event_url']) && '' != $_POST['event_url'] ) { 
		$event_url = esc_url( $_POST['event_url'] ); 
	} else { 
		$event_url = ''; 
	}
	if ( isset($_POST['event_spam']) && '' != $_POST['event_spam'] ) { 
		$error .= __('Das Feld Spamschutz muss leer sein, keinen Eintrag!') . '<br/>';
		$event_spam = esc_attr($_POST['event_spam']);
	} else {
		$event_spam = '';
	}
	
	// locations
	// pflichtfelder
	if ( isset($_POST['location_name']) && '' != $_POST['location_name'] ) { 
		$location_name = esc_attr( $_POST['location_name'] ); 
	} else { 
		$location_name = NULL; 
	}
	
	if ( isset($_POST['location_address']) && '' != $_POST['location_address'] ) { 
		$location_address = esc_attr( $_POST['location_address'] ); 
	} else { 
		$location_address = NULL; 
	}
	
	if ( isset($_POST['location_town']) && '' != $_POST['location_town'] ) { 
		$location_town = esc_attr( $_POST['location_town'] ); 
	} else { 
		$location_town = NULL; 
	}
	// optionale Felder
	if ( isset($_POST['location_description']) && '' != $_POST['location_description'] ) { 
		$location_description = esc_attr( $_POST['location_description'] ); 
	} else { 
		$location_description = NULL; 
	}
	$location_latitude = NULL;
	$location_longitude = NULL;
	
	if ( isset($location_name) && isset($location_address) && isset($location_town) ) {
		
		$location = array (
			'location_name' => $location_name,
			'location_address' => $location_address,
			'location_town' => $location_town,
			'location_latitude' => $location_latitude,
			'location_longitude' => $location_longitude,
			'location_description' => $location_description
		);
		// get locations
		$locations_table = $wpdb->prefix . LOCATIONS_TBNAME;
		$location_town = $location['location_town'];
		$location_address = $location['location_address'];
		$sql = "SELECT * FROM $locations_table WHERE 
			location_town = '$location_town' AND
			location_address = '$location_address'";
		$old_location = $wpdb->get_row($sql, ARRAY_A);
		
		if ( $old_location['location_id'] ) {
			$new_location = $old_location;
		} else {
			$new_location = eme_insert_location($location);
		}
		
	} else {
		$new_location['location_id'] = NULL;
	}
	
	if ( isset($event_name) && isset($event_start_date) && isset($event_end_date) 
		 && isset($description) && isset($event_contactperson_email_body) 
		 && $event_spam === '' ) {
		
		$event = array (
			"event_name" => $event_name,
			"event_status" => 5,
			"event_start_date" => $event_start_date,
			"event_end_date" => $event_end_date,
			"event_start_time" => $event_start_time,
			"event_end_time" => $event_end_time,
			"event_rsvp" => 0,
			"rsvp_number_days" => 0,
			"registration_requires_approval" => 0,
			"registration_wp_users_only" => 0,
			"event_seats" => 0,
			"event_contactperson_id" => '-1',
			"event_notes" => $description,
			'event_page_title_format' => '',
			'event_single_event_format' => '',
			'event_contactperson_email_body' => '',
			'event_respondent_email_body' => '',
			'event_url' => $event_url,
			'event_category_ids' => $event_category_id,
			'event_attributes' => 'a:0:{}',
			'location_id' => $new_location['location_id']
		);
		eme_db_insert_event($event);
		
		wp_redirect( esc_url( $_SERVER['HTTP_REFERER'] ) . '?evententry=true' ); // redirect to home page after submit
	}

} // end IF

if ( isset($_GET['evententry']) && $_GET['evententry'] == 'true' )
	$error = __('Der Eintrag liegt zur Prüfung vor. Vielen Dank!');

get_header();?>

	<?php if (have_posts()) { while (have_posts()) : the_post(); ?>
		<div class="post" id="post-<?php the_ID(); ?>">
			<h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
			<?php the_content(); 
			
			if ( $error )
				echo '<p class="errormessage">' . $error . '</p>'; ?>
		
			<div class="eventbox">
				
				<form id="new_post" name="new_post" method="post" action="">
					<h4>Eventdaten</h4>
					<p>
						<label for="title"><?php _e('&middot; Eventname <small>*(Pflichtfeld)</small>'); ?></label><br />
						<input type="text" id="event_name" value="" size="50" name="event_name" />
					</p>
					<p><?php _e('&middot; Start <small>*(Pflichtfeld)</small>'); ?><br />
						&emsp;<label for="event_start_date">Datum</label> 
						<input type="text" id="event_start_date" value="" size="10" name="event_start_date" /> 
						&emsp;&emsp; <label for="event_start_time">Zeit</label> 
						<input type="text" id="event_start_time" value="" size="10" name="event_start_time" />
					</p>
					<p>&middot; Ende<br />
						&emsp;<label for="event_end_date">Datum</label>
						<input type="text" id="event_end_date" value="" size="10" name="event_end_date" /> 
						&emsp;&emsp; <label for="event_end_time">Zeit</label> 
						<input type="text" id="event_end_time" value="" size="10" name="event_end_time" />
					</p>
					<p><label for="description"><?php _e('&middot; Beschreibung <small>*(Pflichtfeld)</small>'); ?></label><br />
						<textarea id="description" name="description" cols="50" rows="6"></textarea>
					</p>
					<?php if ( $category_list ) echo '<p>' . $category_list . '</p>'; ?>
					<p>
						<label for="event_contactperson_email_body"><?php _e('&middot; E-Mail Kontakt <small>*(Pflichtfeld)</small>'); ?></label><br />
						<input type="text" id="event_contactperson_email_body" value="" size="50" name="event_contactperson_email_body" />
					</p>
					<p>
						<label for="event_url"><?php _e('&middot; Website, weitere Informationen zum Event'); ?></label><br />
						<input type="text" id="event_url" value="" size="50" name="event_url" />
					</p>
					
					<h4>Veranstaltungsort</h4>
					<p><?php _e('Sie können gern den Veranstaltungsort mit angeben, die Daten sind optional.<br />Für die korrekte Zuordung sind diverse Felder Pflicht.'); ?></p>
					<p>
						<label for="location_name"><?php _e('&middot; Veranstaltungsort-Name <small>*(Pflichtfeld)</small>'); ?></label><br />
						<input type="text" id="location_name" value="" size="50" name="location_name" />
					</p>
					<p>
						<label for="location_town"><?php _e('&middot; Veranstaltungsort-Stadt <small>*(Pflichtfeld)</small>'); ?></label><br />
						<input type="text" id="location_town" value="" size="50" name="location_town" />
					</p>
					<p>
						<label for="location_address"><?php _e('&middot; Veranstaltungsort-Adresse <small>*(Pflichtfeld)</small>'); ?></label><br />
						<input type="text" id="location_address" value="" size="50" name="location_address" />
					</p>
					<p>
						<label for="location_description"><?php _e('&middot; Beschreibung'); ?></label><br />
						<textarea id="location_description" name="location_description" cols="50" rows="6"></textarea>
					</p>
					<p class="event_spam"><?php _e('Spamschutz:'); ?> <input type="text" id="event_spam" value="" size="50" name="event_spam" /></p>
					<p>
						<input type="submit" value="<?php _e('Event einsenden'); ?>" id="submit" name="submit" />
					</p>
					<input type="hidden" name="action" value="post" />
					<?php wp_nonce_field( 'action_new_event', 'new-event' ); ?>
				</form>
				
			</div>
		
			<?php wp_link_pages(); ?>
			<p class="info"><?php the_time('j.') ?><a href="<?php echo get_settings('home'); ?>/date/<?php the_time('Y') ?>/<?php the_time('m') ?>/" title="Alle Beitr&auml;ge in <?php the_time('F Y'); ?> ansehen" > <?php the_time('F Y'); ?></a> &middot; Author: <?php the_author_posts_link(); ?><br /><?php the_category(', '); the_tags(' &middot; ', ', ', ''); edit_post_link('Editieren',' &middot; ', ''); ?></p>
		</div>
		
	<?php endwhile;
	
	} else { ?>
		
		<p><?php _e('Nichts gefunden, was den Suchkriterien entspricht.'); ?></p>
	
	<?php } ?>

<?php get_footer(); ?>