
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
<?php
/**
 * Shortcode Twitter
 *
 * @link       https://codesupply.co
 * @since      1.0.0
 *
 * @package    Basic Twitter
 */

/**
 * Twitter Shortcode
 *
 * @param array  $atts      User defined attributes in shortcode tag.
 * @param string $content   Shorcode tag content.
 * @return string           Shortcode result HTML.
 */
function btw_twitter_shortcode( $atts, $content = '' ) {

	$cache_timeout = (int) apply_filters( 'btw_cache_timeout', 60 );

	$params = shortcode_atts( array(
		'title'                 => esc_html__( 'Basic Twitter', 'basic-twitter' ),
		'username'              => '',
		'number'                => 5,
		'template'              => 'default',
		'header'                => true,
		'button'                => true,
		'replies'               => false,
		'retweets'              => false,
		'cache_time'            => $cache_timeout,
		'consumer_key'          => get_option( 'csco_twitter_consumer_key' ),
		'consumer_secret'       => get_option( 'csco_twitter_consumer_secret' ),
		'access_token'          => get_option( 'csco_twitter_access_token' ),
		'access_token_secret'   => get_option( 'csco_twitter_access_token_secret' ),
	), $atts );

	$id = md5( wp_json_encode( $atts ) );

	ob_start();
	if ( empty( $params['consumer_key'] ) || empty( $params['consumer_key'] ) || empty( $params['access_token'] ) || empty( $params['access_token_secret'] ) ) :
		?>
			<div class="alert alert-warning">
				<?php
					/* translators: Twitter Settings Link. */
					echo wp_kses_post( sprintf( __( 'Unable to load twitter. Please fill in all required <a href="%s" target="_blank">Twitter Settings</a>.', 'basic-twitter' ), esc_url( admin_url( 'options-general.php?page=btw_settings' ) ) ) );
				?>
			</div>
		<?php
	else :

		// Check if transient already exists.
		$twitter = get_transient( 'btw_shortcode_' . $id );

		if ( ! empty( $twitter ) ) {

			// Fetch twitter from the transient.
			$twitter = maybe_unserialize( $twitter );

		} else {

			// Get Twitter via Twitter OAuth.
			$twitter = btw_get_twitter(
				$params['consumer_key'],
				$params['consumer_secret'],
				$params['access_token'],
				$params['access_token_secret'],
				array(
					'screen_name'     => $params['username'],
					'count'           => $params['number'],
					'include_rts'     => 'true' === $params['retweets'] ? 'true' : 'false',
					'exclude_replies' => 'true' === $params['replies'] ? 'false' : 'true',
				)
			);

			// Set a new transient if no errors returned.
			set_transient( 'btw_shortcode_' . $id, maybe_serialize( $twitter ), $params['cache_time'] * 60 );
		}

		// Check if errors have been returned.
		if ( ! empty( $twitter ) && isset( $twitter->errors ) ) {
			?>
				<div class="alert alert-warning">
					<?php echo wp_kses_post( $twitter->errors[0]->message ); ?>
				</div>
			<?php
		} elseif ( ! empty( $twitter ) && ! isset( $twitter->errors ) ) {

			// Check if there're valid twitter.
			if ( isset( $twitter ) && ! empty( $twitter ) && ! isset( $twitter->errors ) ) {
				btw_template_handler( $params['template'], $twitter, $params );
			}
		}
	endif;

	return ob_get_clean();
}
add_shortcode( 'basic_twitter', 'btw_twitter_shortcode' );

/**
 * Map Twitter Shortcode into the Basic Shortcodes Plugin
 */
if ( function_exists( 'bsc_register_shortcode' ) ) :

	$shortcode_map = array(
		'name'			=> 'twitter',
		'title'			=> esc_html__( 'Twitter', 'basic-twitter' ),
		'priority'		=> 100,
		'base'			=> 'basic_twitter',
		'autoregister'	=> false,
		'fields'		=> array(
			array(
				'type'		=> 'input',
				'name'		=> 'username',
				'label'		=> esc_html__( 'Username', 'basic-twitter' ),
			),
			array(
				'type'		=> 'input',
				'name'		=> 'number',
				'label'		=> esc_html__( 'Number of Tweets', 'basic-twitter' ),
				'default'	=> 5,
			),
			array(
				'type'		=> 'checkbox',
				'name'		=> 'header',
				'label'		=> esc_html__( 'Display header', 'basic-twitter' ),
				'default'	=> true,
			),
			array(
				'type'		=> 'checkbox',
				'name'		=> 'button',
				'label'		=> esc_html__( 'Display follow button', 'basic-twitter' ),
				'default'	=> true,
			),
			array(
				'type'		=> 'checkbox',
				'name'		=> 'replies',
				'label'		=> esc_html__( 'Include replies', 'basic-twitter' ),
				'default'	=> false,
			),
			array(
				'type'		=> 'checkbox',
				'name'		=> 'retweets',
				'label'		=> esc_html__( 'Include retweets', 'basic-twitter' ),
				'default'	=> false,
			),
		),
	);

	if ( btw_templates_check() ) {
		$shortcode_map['fields'][] = array(
			'type'		=> 'select',
			'name'		=> 'template',
			'label'		=> esc_html__( 'Template', 'basic-twitter' ),
			'default'	=> 'default',
			'options'	=> btw_get_templates_options(),
		);
	}

	bsc_register_shortcode( $shortcode_map );

endif;
