????

Your IP : 216.73.216.174


Current Path : /home2/morganrand/www/wp-content/themes/wanderfuls-2/framework/classes/
Upload File :
Current File : /home2/morganrand/www/wp-content/themes/wanderfuls-2/framework/classes/sanitize-data.php

<?php
/**
 * Sanitize inputted data
 *
 * @package Wanderfuls WordPress Theme
 * @subpackage Framework
 */

class TB_Sanitize_Data {

	/**
	 * Parses data
	 *
	 * @since 2.0.0
	 */
	public function parse_data( $data, $type ) {
		$type = str_replace( '-', '_', $type );
		if ( method_exists( $this, $type ) ) {
			return $this->$type( $data );
		}
	}

	/**
	 * Pixels
	 *
	 * @since 2.0.0
	 */
	private function px( $data ) {
		if ( 'none' == $data ) {
			return '0';
		} else {
			return floatval( $data ) . 'px';
		}
	}

	/**
	 * Font Size
	 *
	 * @since 2.0.0
	 */
	private function font_size( $data ) {
		if ( strpos( $data, 'px' ) || strpos( $data, 'em' ) ) {
			$data = $data;
		} else {
			$data = intval( $data ) .'px';
		}
		if ( $data != '0px' && $data != '0em' ) {
			return $data;
		}
	}

	/**
	 * Font Weight
	 *
	 * @since 2.0.0
	 */
	private function font_weight( $data ) {
		if ( 'normal' == $data ) {
			$data = '400';
		} elseif ( 'semibold' == $data ) {
			$data = '600';
		} elseif ( 'bold' == $data ) {
			$data = '700';
		} elseif ( 'bolder' == $data ) {
			$data = '900';
		}
		return $data;
	}

	/**
	 * Hex Color
	 *
	 * @since 2.0.0
	 */
	private function hex_color( $data ) {
		if ( ! $data ) {
			return null;
		} elseif ( 'none' == $data ) {
			return 'transparent';
		} elseif ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $data ) ) {
			return $data;
		} else {
			return null;
		}
	}

	/**
	 * Border Radius
	 *
	 * @since 2.0.0
	 */
	private function border_radius( $data ) {
		if ( 'none' == $data ) {
			return '0';
		} elseif ( strpos( $data, 'px' ) ) {
			return $data;
		} elseif ( strpos( $data, '%' ) ) {
			if ( '50%' == $data ) {
				return $data;
			} else {
				return str_replace( '%', 'px', $data );
			}
		} else {
			return intval( $data ) .'px';
		}
	}

	/**
	 * Pixel or Percent
	 *
	 * @since 2.0.0
	 */
	private function px_pct( $data ) {
		if ( 'none' == $data || '0px' == $data ) {
			return '0';
		} elseif ( strpos( $data, '%' ) ) {
			return $data;
		} elseif ( $data = floatval( $data ) ) {
			return $data .'px';
		}
	}

	/**
	 * Opacity
	 *
	 * @since 2.0.0
	 */
	private function opacity( $data ) {
		if ( ! is_numeric( $data ) ) {
			return;
		} elseif ( '1' > $data ) {
			return $data;
		} else {
			return;
		}
	}

	/**
	 * Embed URL
	 *
	 * @since 2.0.0
	 */
	private function embed_url( $data ) {

		// First sanatize the URL
		$url = esc_url( $data );

		// Sanitize vimeo
		if ( $url && false !== strpos( $url, 'vimeo' ) ) {

			// Return if good
			if ( strpos( $url, 'player.vimeo' ) ) {
				return $url;
			}
			
			// Get the ID
			$video_id = str_replace( 'http://vimeo.com/', '', $url );
			if ( ! is_numeric( $video_id ) ) {
				$video_id = str_replace( 'https://vimeo.com/', '', $url );
			} elseif ( ! is_numeric( $video_id ) ) {
				$video_id = str_replace( 'http://www.vimeo.com/', '', $url );
			} elseif ( ! is_numeric( $video_id ) ) {
				$video_id = str_replace( 'https://www.vimeo.com/', '', $url );
			}

			// Return embed URL
			if ( is_numeric( $video_id ) ) {
				return esc_url( 'player.vimeo.com/video/'. $video_id );
			}

		}

		// Sanitize Youtube
		elseif ( $url && false !== strpos( $url, 'youtu' ) ) {

			// Return if already the embed url
			if ( strpos( $url, 'embed' ) ) {
				return $url;
			}

			// Convert url
			$url_string = parse_url( $url, PHP_URL_QUERY );
			parse_str( $url_string, $args );
			if ( ! empty ( $args['v'] ) ) {
				return esc_url( 'youtube.com/embed/' . $args['v'] );
			}

		}

	}
} // End Class

// Helper function runs the TB_Sanitize_Data class
function tb_sanitize_data( $data = '', $type = '' ) {
	if ( $data && $type ) {
		$class = new TB_Sanitize_Data();
		return $class->parse_data( $data, $type );
	}
}