<?php

/*-----------------------------------------------------------------------------------

	Plugin Name: Themient: Social Icons
	Description: This widget shows social icons.
	Version: 1.0.0

-----------------------------------------------------------------------------------*/

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

class elif_social_icons_widget extends WP_Widget {

	protected $defaults;
	protected $sizes;
	protected $profiles;

	function __construct() {

		$this->defaults = array(
			'title'			=> '',
			'new_tab'		=> 0,
			'size'			=> 32,
			'facebook'		=> '',
			'twitter'		=> '',			
			'gplus'			=> '',	
			'youtube'		=> '',		
			'rss'			=> '',			
			'pinterest'		=> '',
			'linkedin'		=> '',
			'email'			=> '',
			'stumbleupon'	=> '',			
			'reddit'		=> '',			
			'tumblr'		=> '',			
			'instagram'		=> '',			
			'vimeo'			=> '',
			'foursquare'	=> '',	
			'soundcloud'	=> '',		
			'github'		=> '',			
			'flickr'		=> '',							
			'skype'			=> '',			
			'behance'		=> '',
			'dribbble'		=> '',
			'dropbox'		=> '',
            
			'amazon'		=> '',
			'apple'		    => '',
			'snapchat'		=> '',
			'bitbucket'		=> '',
			'stack-overflow'=> '',
			'stack-exchange'=> '',
			'slack'		    => '',
			'codepen'		=> '',
			'digg'		    => '',
			'deviantart'    => '',
			'paypal'		=> '',
			'btc'		    => '',
			'odnoklassniki' => '',
			'vk'     		=> '',
			'whatsapp'		=> '',
			'weixin'		=> '',
			'vine'   		=> '',
			'weibo'  		=> '',
			'yelp'   		=> '',
			'lastfm'		=> '',
			'steam'  		=> '',
			'twitch'		=> '',
		);

		$this->sizes = array( '32' );

		$this->profiles = array(
			'facebook' => array(
				'label'	  => __( 'Facebook URI', 'elif-lite' ),
				'pattern' => '<li class="social-facebook"><a title="Facebook" href="%s" %s><i class="fa fa-facebook"></i></a></li>',
			),
			'twitter' => array(
				'label'	  => __( 'Twitter URI', 'elif-lite' ),
				'pattern' => '<li class="social-twitter"><a title="Twitter" href="%s" %s><i class="fa fa-twitter"></i></a></li>',
			),
			'gplus' => array(
				'label'	  => __( 'Google+ URI', 'elif-lite' ),
				'pattern' => '<li class="social-gplus"><a title="Google+" href="%s" %s><i class="fa fa-google-plus"></i></a></li>',
			),
			'youtube' => array(
				'label'	  => __( 'YouTube URI', 'elif-lite' ),
				'pattern' => '<li class="social-youtube"><a title="YouTube" href="%s" %s><i class="fa fa-youtube"></i></a></li>',
			),			
			'rss' => array(
				'label'	  => __( 'RSS URI', 'elif-lite' ),
				'pattern' => '<li class="social-rss"><a title="RSS" href="%s" %s><i class="fa fa-rss"></i></a></li>',
			),
			'pinterest' => array(
				'label'	  => __( 'Pinterest URI', 'elif-lite' ),
				'pattern' => '<li class="social-pinterest"><a title="Pinterest" href="%s" %s><i class="fa fa-pinterest"></i></a></li>',
			),			
			'linkedin' => array(
				'label'	  => __( 'Linkedin URI', 'elif-lite' ),
				'pattern' => '<li class="social-linkedin"><a title="LinkedIn" href="%s" %s><i class="fa fa-linkedin"></i></a></li>',
			),
			'email' => array(
				'label'	  => __( 'Email URI', 'elif-lite' ),
				'pattern' => '<li class="social-email"><a title="Email" href="%s" %s><i class="fa fa-envelope"></i></a></li>',
			),
			'stumbleupon' => array(
				'label'	  => __( 'StumbleUpon URI', 'elif-lite' ),
				'pattern' => '<li class="social-stumbleupon"><a title="StumbleUpon" href="%s" %s><i class="fa fa-stumbleupon"></i></a></li>',
			),
			'reddit' => array(
				'label'	  => __( 'Reddit URI', 'elif-lite' ),
				'pattern' => '<li class="social-reddit"><a title="Reddit" href="%s" %s><i class="fa fa-reddit"></i></a></li>',
			),			
			'tumblr' => array(
				'label'	  => __( 'Tumblr URI', 'elif-lite' ),
				'pattern' => '<li class="social-tumblr"><a title="Tumblr" href="%s" %s><i class="fa fa-tumblr"></i></a></li>',
			),			
			'instagram' => array(
				'label'	  => __( 'Instagram URI', 'elif-lite' ),
				'pattern' => '<li class="social-instagram"><a title="Instagram" href="%s" %s><i class="fa fa-instagram"></i></a></li>',
			),			
			'vimeo' => array(
				'label'	  => __( 'Vimeo URI', 'elif-lite' ),
				'pattern' => '<li class="social-vimeo"><a title="Vimeo" href="%s" %s><i class="fa fa-vimeo"></i></a></li>',
			),
			'foursquare' => array(
				'label'	  => __( 'FourSquare URI', 'elif-lite' ),
				'pattern' => '<li class="social-foursquare"><a title="FourSquare" href="%s" %s><i class="fa fa-foursquare"></i></a></li>',
			),	
			'soundcloud' => array(
				'label'	  => __( 'Soundcloud URI', 'elif-lite' ),
				'pattern' => '<li class="social-soundcloud"><a title="Soundcloud" href="%s" %s><i class="fa fa-soundcloud"></i></a></li>',
			),						
			'github' => array(
				'label'	  => __( 'GitHub URI', 'elif-lite' ),
				'pattern' => '<li class="social-github"><a title="GitHub" href="%s" %s><i class="fa fa-github"></i></a></li>',
			),
			'flickr' => array(
				'label'	  => __( 'Flickr URI', 'elif-lite' ),
				'pattern' => '<li class="social-flickr"><a title="Flickr" href="%s" %s><i class="fa fa-flickr"></i></a></li>',
			),			
			'skype' => array(
				'label'	  => __( 'Skype URI', 'elif-lite' ),
				'pattern' => '<li class="social-skype"><a title="Skype" href="%s" %s><i class="fa fa-skype"></i></a></li>',
			),						
					
			'behance' => array(
				'label'	  => __( 'Behance URI', 'elif-lite' ),
				'pattern' => '<li class="social-behance"><a title="Behance" href="%s" %s><i class="fa fa-behance"></i></a></li>',
			),
			'dribbble' => array(
				'label'	  => __( 'Dribbble URI', 'elif-lite' ),
				'pattern' => '<li class="social-dribbble"><a title="Dribbble" href="%s" %s><i class="fa fa-dribbble"></i></a></li>',
			),
			'dropbox' => array(
				'label'	  => __( 'Dropbox URI', 'elif-lite' ),
				'pattern' => '<li class="social-dropbox"><a title="Dropbox" href="%s" %s><i class="fa fa-dropbox"></i></a></li>',
			),
			'amazon' => array(
				'label'	  => __( 'Amazon URI', 'elif-lite' ),
				'pattern' => '<li class="social-amazon"><a title="Amazon" href="%s" %s><i class="fa fa-amazon"></i></a></li>',
			),
			'apple' => array(
				'label'	  => __( 'Apple URI', 'elif-lite' ),
				'pattern' => '<li class="social-apple"><a title="Apple" href="%s" %s><i class="fa fa-apple"></i></a></li>',
			),
			'snapchat' => array(
				'label'	  => __( 'Snapchat URI', 'elif-lite' ),
				'pattern' => '<li class="social-snapchat"><a title="Snapchat" href="%s" %s><i class="fa fa-snapchat"></i></a></li>',
			),
			'bitbucket' => array(
				'label'	  => __( 'Bitbucket URI', 'elif-lite' ),
				'pattern' => '<li class="social-bitbucket"><a title="Bitbucket" href="%s" %s><i class="fa fa-bitbucket"></i></a></li>',
			),
			'stack-overflow' => array(
				'label'	  => __( 'Stack Overflow URI', 'elif-lite' ),
				'pattern' => '<li class="social-stack-overflow"><a title="Stack Overflow" href="%s" %s><i class="fa fa-stack-overflow"></i></a></li>',
			),
			'stack-exchange' => array(
				'label'	  => __( 'Stack Exchange URI', 'elif-lite' ),
				'pattern' => '<li class="social-stack-exchange"><a title="Stack Exchange" href="%s" %s><i class="fa fa-stack-exchange"></i></a></li>',
			),
			'slack' => array(
				'label'	  => __( 'Slack URI', 'elif-lite' ),
				'pattern' => '<li class="social-slack"><a title="Slack" href="%s" %s><i class="fa fa-slack"></i></a></li>',
			),
			'codepen' => array(
				'label'	  => __( 'CodePen URI', 'elif-lite' ),
				'pattern' => '<li class="social-codepen"><a title="CodePen" href="%s" %s><i class="fa fa-codepen"></i></a></li>',
			),
			'digg' => array(
				'label'	  => __( 'Digg URI', 'elif-lite' ),
				'pattern' => '<li class="social-digg"><a title="Digg" href="%s" %s><i class="fa fa-digg"></i></a></li>',
			),
			'deviantart' => array(
				'label'	  => __( 'Deviantart URI', 'elif-lite' ),
				'pattern' => '<li class="social-"><a title="Deviantart" href="%s" %s><i class="fa fa-deviantart"></i></a></li>',
			),
			'paypal' => array(
				'label'	  => __( 'PayPal URI', 'elif-lite' ),
				'pattern' => '<li class="social-paypal"><a title="PayPal" href="%s" %s><i class="fa fa-paypal"></i></a></li>',
			),
			'btc' => array(
				'label'	  => __( 'Bitcoin URI', 'elif-lite' ),
				'pattern' => '<li class="social-btc"><a title="Bitcoin" href="%s" %s><i class="fa fa-btc"></i></a></li>',
			),
			'odnoklassniki' => array(
				'label'	  => __( 'Odnoklassniki URI', 'elif-lite' ),
				'pattern' => '<li class="social-odnoklassniki"><a title="Odnoklassniki" href="%s" %s><i class="fa fa-odnoklassniki"></i></a></li>',
			),
			'vk' => array(
				'label'	  => __( 'Vk URI', 'elif-lite' ),
				'pattern' => '<li class="social-vk"><a title="Vk" href="%s" %s><i class="fa fa-vk"></i></a></li>',
			),
			'whatsapp' => array(
				'label'	  => __( 'Whatsapp URI', 'elif-lite' ),
				'pattern' => '<li class="social-whatsapp"><a title="Whatsapp" href="%s" %s><i class="fa fa-whatsapp"></i></a></li>',
			),
			'weixin' => array(
				'label'	  => __( 'Weixin URI', 'elif-lite' ),
				'pattern' => '<li class="social-weixin"><a title="Weixin" href="%s" %s><i class="fa fa-weixin"></i></a></li>',
			),
			'vine' => array(
				'label'	  => __( 'Vine URI', 'elif-lite' ),
				'pattern' => '<li class="social-vine"><a title="Vine" href="%s" %s><i class="fa fa-vine"></i></a></li>',
			),
			'weibo' => array(
				'label'	  => __( 'Weibo URI', 'elif-lite' ),
				'pattern' => '<li class="social-weibo"><a title="Weibo" href="%s" %s><i class="fa fa-weibo"></i></a></li>',
			),
			'yelp' => array(
				'label'	  => __( 'Yelp URI', 'elif-lite' ),
				'pattern' => '<li class="social-yelp"><a title="Yelp" href="%s" %s><i class="fa fa-yelp"></i></a></li>',
			),
			'lastfm' => array(
				'label'	  => __( 'lastFM URI', 'elif-lite' ),
				'pattern' => '<li class="social-lastfm"><a title="LastFM" href="%s" %s><i class="fa fa-lastfm"></i></a></li>',
			),
			'steam' => array(
				'label'	  => __( 'Steam URI', 'elif-lite' ),
				'pattern' => '<li class="social-steam"><a title="Steam" href="%s" %s><i class="fa fa-steam"></i></a></li>',
			),
			'twitch' => array(
				'label'	  => __( 'Twitch URI', 'elif-lite' ),
				'pattern' => '<li class="social-twitch"><a title="Twitch" href="%s" %s><i class="fa fa-twitch"></i></a></li>',
			),
		);  

		$widget_ops = array(
			'classname'	 => 'elif_social_icons_widget',
			'description' => __( 'Show social icons.', 'elif-lite' ),
		);
		$control_ops = array(
			'id_base' => 'social-icons',
			#'width'   => 505,
			#'height'  => 350,
		);

		parent::__construct ( 'social-icons', __( 'Themient: Social Icons', 'elif-lite' ), $widget_ops, $control_ops );

	}

	function form( $instance ) {

		/** Merge with defaults */
		$instance = wp_parse_args( (array) $instance, $this->defaults );
		?>

		<p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'elif-lite' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $instance['title'] ); ?>" /></p>

		<p><label><input id="<?php echo $this->get_field_id( 'new_tab' ); ?>" type="checkbox" name="<?php echo $this->get_field_name( 'new_tab' ); ?>" value="1" <?php checked( 1, $instance['new_tab'] ); ?>/> <?php esc_html_e( 'Open links in a new tab?', 'elif-lite' ); ?></label></p>

		<hr style="background: #ccc; border: 0; height: 1px; margin: 20px 0;" />

		<?php
		foreach ( (array) $this->profiles as $profile => $data ) {

			printf( '<p><label for="%s">%s:</label>', esc_attr( $this->get_field_id( $profile ) ), esc_attr( $data['label'] ) );
			printf( '<input type="text" id="%s" class="widefat" name="%s" value="%s" /></p>', esc_attr( $this->get_field_id( $profile ) ), esc_attr( $this->get_field_name( $profile ) ), esc_url( $instance[$profile] ) );

		}

	}

	function update( $newinstance, $oldinstance ) {

		foreach ( $newinstance as $key => $value ) {

			/** Sanitize Profile URIs */
			if ( array_key_exists( $key, (array) $this->profiles ) ) {
				$newinstance[$key] = esc_url( $newinstance[$key] );
			}

		}

		return $newinstance;
	}

	function widget( $args, $instance ) {

		extract( $args );

		/** Merge with defaults */
		$instance = wp_parse_args( (array) $instance, $this->defaults );
		echo $before_widget;

			if ( ! empty( $instance['title'] ) )
				echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title;

			$output = '';

			$new_tab = $instance['new_tab'] ? 'target="_blank"' : '';

			foreach ( (array) $this->profiles as $profile => $data ) {
				if ( ! empty( $instance[$profile] ) )
					$output .= sprintf( $data['pattern'], esc_url( $instance[$profile] ), $new_tab );
			}

			if ( $output )
				printf( '<div class="widget-container social-icons"><ul class="%s">%s</ul></div>', '', $output );

		echo $after_widget;
	}
	
}
add_action( 'widgets_init', create_function( '', 'register_widget( "elif_social_icons_widget" );' ) );