From 718af4c3a92b7fc8b7150cae60f379b5afd7a80e Mon Sep 17 00:00:00 2001
From: Kyle Maurer <kyle@realbigmarketing.com>
Date: Tue, 4 Nov 2014 20:29:46 -0500
Subject: [PATCH] Making good progress on adding new fields for speakers.
 Fields are created and work. Somehow created a bug which prevents .org
 username from working. Also haven't gotten the links displaying in the
 shortcode output yet.

---
 plugins/wc-post-types/wc-post-types.php | 37 +++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/plugins/wc-post-types/wc-post-types.php b/plugins/wc-post-types/wc-post-types.php
index f06bf81..6b8aac7 100755
--- a/plugins/wc-post-types/wc-post-types.php
+++ b/plugins/wc-post-types/wc-post-types.php
@@ -256,6 +256,7 @@ class WordCamp_Post_Types_Plugin {
 		// Prepare the shortcode arguments
 		$attr = shortcode_atts( array(
 			'show_avatars' => true,
+			'show_links' => true,
 			'avatar_size' => 100,
 			'posts_per_page' => -1,
 			'orderby' => 'date',
@@ -352,6 +353,19 @@ class WordCamp_Post_Types_Plugin {
 							$speaker_classes[] = sanitize_html_class( 'wcorg-track-' . $track );
 						}
 					}
+
+					// Should we output links?
+					if ( $attr['show_links'] != false ) {
+						$website = get_post_meta( $post->ID, '_wcpt_speaker_website', true );
+						$website = ( $website != '' ? '<a href="' . $website . '">Website</a>' : '' );
+						$twitter  = get_post_meta( $post->ID, '_wcpt_speaker_twitter', true );
+						$twitter = ( $twitter != '' ? '<a href="' . $twitter . '">Twitter</a>' : '' );
+						$spacer = ( $website == '' || $twitter == '' ? '' : ' | ' );
+
+						$links = '<p>' . $website . $spacer . $twitter . '</p>';
+					} else {
+						$links = '';
+					}
 				?>
 
 				<!-- Organizers note: The id attribute is deprecated and only remains for backwards compatibility, please use the corresponding class to target individual speakers -->
@@ -368,6 +382,7 @@ class WordCamp_Post_Types_Plugin {
 					<div class="wcorg-speaker-description">
 						<?php echo ( $attr['show_avatars'] ) ? get_avatar( get_post_meta( get_the_ID(), '_wcb_speaker_email', true ), absint( $attr['avatar_size'] ) ) : ''; ?>
 						<?php the_content(); ?>
+						<?php echo $links; ?>
 					</div>
 				</div><!-- .wcorg-speaker -->
 
@@ -1232,6 +1247,8 @@ class WordCamp_Post_Types_Plugin {
 	function metabox_speaker_info() {
 		global $post;
 		$email = get_post_meta( $post->ID, '_wcb_speaker_email', true );
+		$twitter = get_post_meta( $post->ID, '_wcb_speaker_twitter', true );
+		$website = get_post_meta( $post->ID, '_wcb_speaker_website', true );
 
 		$wporg_username = '';
 		$user_id = get_post_meta( $post->ID, '_wcpt_user_id', true );
@@ -1249,6 +1266,14 @@ class WordCamp_Post_Types_Plugin {
 			<label for="wcpt-wporg-username"><?php _e( 'WordPress.org Username:', 'wordcamporg' ); ?></label>
 			<input type="text" class="widefat" id="wcpt-wporg-username" name="wcpt-wporg-username" value="<?php echo esc_attr( $wporg_username ); ?>" />
 		</p>
+		<p>
+			<label for="wcpt-twitter"><?php _e( 'Twitter URL:', 'wordcamporg' ); ?></label>
+			<input type="text" class="widefat" id="wcpt-twitter" name="wcpt-twitter" value="<?php echo esc_url( $twitter ); ?>" />
+		</p>
+		<p>
+			<label for="wcpt-website"><?php _e( 'Website:', 'wordcamporg' ); ?></label>
+			<input type="text" class="widefat" id="wcpt-website" name="wcpt-website" value="<?php echo esc_url( $website ); ?>" />
+		</p>
 		<?php
 	}
 
@@ -1400,6 +1425,8 @@ class WordCamp_Post_Types_Plugin {
 
 		if ( isset( $_POST['wcpt-meta-speaker-info'] ) && wp_verify_nonce( $_POST['wcpt-meta-speaker-info'], 'edit-speaker-info' ) ) {
 			$email = sanitize_text_field( $_POST['wcpt-gravatar-email'] );
+			$twitter = sanitize_text_field( $_POST['wcpt-twitter'] );
+			$website = sanitize_text_field( $_POST['wcpt-website'] );
 			$wporg_username = sanitize_text_field( $_POST['wcpt-wporg-username'] );
 			$wporg_user = $this->get_wporg_user( $wporg_username );
 
@@ -1408,6 +1435,16 @@ class WordCamp_Post_Types_Plugin {
 			elseif ( $email && is_email( $email ) )
 				update_post_meta( $post_id, '_wcb_speaker_email', $email );
 
+			if ( empty( $twitter ) )
+				delete_post_meta( $post_id, '_wcb_speaker_twitter' );
+			elseif ( $twitter )
+				update_post_meta( $post_id, '_wcb_speaker_twitter', $twitter );
+
+			if ( empty( $website ) )
+				delete_post_meta( $post_id, '_wcb_speaker_website' );
+			elseif ( $website )
+				update_post_meta( $post_id, '_wcb_speaker_website', $website );
+
 			if ( ! $wporg_user )
 				delete_post_meta( $post_id, '_wcpt_user_id' );
 			else
-- 
1.8.4.2

From 94e072893685b9a86ef87ec19c5fa60e1ac9fb45 Mon Sep 17 00:00:00 2001
From: Kyle Maurer <kyle@realbigmarketing.com>
Date: Tue, 4 Nov 2014 20:53:28 -0500
Subject: [PATCH] Discovered there was no bug in the .org username. Also got
 the links to website and Twitter to output in the speakers shortcode. I was
 just using the wrong meta field name. Also added strpos() to verify Twitter
 link is a Twitter link.

---
 plugins/wc-post-types/wc-post-types.php | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/plugins/wc-post-types/wc-post-types.php b/plugins/wc-post-types/wc-post-types.php
index 6b8aac7..4e98fea 100755
--- a/plugins/wc-post-types/wc-post-types.php
+++ b/plugins/wc-post-types/wc-post-types.php
@@ -356,13 +356,13 @@ class WordCamp_Post_Types_Plugin {
 
 					// Should we output links?
 					if ( $attr['show_links'] != false ) {
-						$website = get_post_meta( $post->ID, '_wcpt_speaker_website', true );
-						$website = ( $website != '' ? '<a href="' . $website . '">Website</a>' : '' );
-						$twitter  = get_post_meta( $post->ID, '_wcpt_speaker_twitter', true );
-						$twitter = ( $twitter != '' ? '<a href="' . $twitter . '">Twitter</a>' : '' );
+						$website = get_post_meta( $post->ID, '_wcb_speaker_website', true );
+						$website = ( $website ? '<a href="' . $website . '">Website</a>' : '' );
+						$twitter  = get_post_meta( $post->ID, '_wcb_speaker_twitter', true );
+						$twitter = ( $twitter ? '<a href="' . $twitter . '">Twitter</a>' : '' );
 						$spacer = ( $website == '' || $twitter == '' ? '' : ' | ' );
 
-						$links = '<p>' . $website . $spacer . $twitter . '</p>';
+						$links = '<p class="speaker-links">' . $website . $spacer . $twitter . '</p>';
 					} else {
 						$links = '';
 					}
@@ -1435,7 +1435,7 @@ class WordCamp_Post_Types_Plugin {
 			elseif ( $email && is_email( $email ) )
 				update_post_meta( $post_id, '_wcb_speaker_email', $email );
 
-			if ( empty( $twitter ) )
+			if ( empty( $twitter ) || strpos( $twitter, 'twitter.com/' ) == false )
 				delete_post_meta( $post_id, '_wcb_speaker_twitter' );
 			elseif ( $twitter )
 				update_post_meta( $post_id, '_wcb_speaker_twitter', $twitter );
-- 
1.8.4.2

