MP_Settings

Class MP_Settings


Source Source

File: mortgage-platform/Inc/Base/MP_Settings.php

class MP_Settings {


	/**
	 * Fields of Tab "General Settings".
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array {
	 *  Plugin settings fields.
	 *      @type array enable_cookie Enable cookies
	 *      @type array remove_data Delete data when removing the plugin
	 * }
	 */
	public function set_fields() {
		$general_fields = array(
			array(
				'id'       => 'enable_cookie',
				'title'    => __( 'Enable cookies', 'mortgage_platform' ),
				'callback' => array( $this, 'checkbox' ),
				'args'     => array(
					'option_name' => 'mortgage_platform',
					'label_for'   => 'enable_cookie',
					'placeholder' => '',
					'default'     => '',
					'description' => __( 'Enable cookies', 'mortgage_platform' ),
				),
			),
			array(
				'id'       => 'remove_data',
				'title'    => __( 'Delete data when removing the plugin', 'mortgage_platform' ),
				'callback' => array( $this, 'checkbox' ),
				'args'     => array(
					'option_name' => 'mortgage_platform',
					'label_for'   => 'remove_data',
					'placeholder' => '',
					'default'     => '',
					'description' => __( 'Delete data when removing the plugin', 'mortgage_platform' ),
				),
			),

		);

		return $general_fields;

	}


	/**
	 * Register general settings.
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function register_general_settings() {

		$general_fields = $this->set_fields();

		$this->register_setting_fields(
			$general_fields,
			'',
			__( 'General Settings', 'mortgage_platform' ),
			array( $this, 'page_title' )
		);

		add_filter( MortgagePlatform::$prefix . 'menu', array( $this, 'filter_menu' ), 5 );
		add_action( MortgagePlatform::$prefix . 'menu_settings', array( $this, 'filter_settings' ) );
	}


	/**
	 * Register fields.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $fields
	 * @param string $name slug-name to identify the section
	 * @param string $title_link formatted title of the section
	 * @param callable $callback function that echos out any content at the top of the section (between heading and fields)
	 */
	protected function register_setting_fields( array $fields, $name, $title_link, callable $callback ) {

		if ( '' !== $name ) {

			register_setting(
				MortgagePlatform::$prefix . 'settings_' . $name,
				MortgagePlatform::$prefix . $name,
				''
			);

			$name = MortgagePlatform::$prefix . $name;

		} else {

			register_setting(
				MortgagePlatform::$prefix . 'settings',
				MortgagePlatform::$domain,
				''
			);

			$name = MortgagePlatform::$domain;
		}

		add_settings_section(
			$name,
			$title_link,
			$callback,
			$name
		);

		$this->add_settings_field( $fields, $name );

	}


	/**
	 * Add Settings fields.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $setting_fields settings fields
	 * @param string $name slug-name
	 */
	protected function add_settings_field( array $setting_fields, $name ) {

		foreach ( $setting_fields as $field ) {

			add_settings_field(
				$field['id'],
				$field['title'],
				$field['callback'],
				$name,
				$name,
				$field['args']
			);
		}
	}

	/**
	 * Set title for leads section.
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function page_title() {
		echo '';
	}


	/**
	 * Filter Settings Menu.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param string $list list of settings menu
	 *
	 * @return string list of settings menu
	 */
	public function filter_menu( $list ) {

		if ( ! isset( $_GET['tab'] ) ) {
			$list .= '<li class="active"><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '" >' . esc_html__( 'General Settings', 'mortgage_platform' ) . '</a></li>';
		} else {
			$list .= '<li ><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '" >' . esc_html__( 'General Settings', 'mortgage_platform' ) . '</a></li>';
		}

		return $list;

	}


	/**
	 * Add Setting Fields.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @global $pagenow
	 */
	public function filter_settings() {

		global $pagenow;
		if ( ! isset( $_GET['tab'] ) ) {
			?>
			<div class="mp-settings__content tab-pane general">
				<form action="options.php" method="POST">
					<?php
					settings_fields( MortgagePlatform::$prefix . 'settings' );
					do_settings_sections( MortgagePlatform::$domain );
					submit_button();
					?>
				</form>
			</div>
			<?php
		}

	}


	/**
	 * Callback input function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function input( $args ) {

		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$placeholder = $args['placeholder'];
		$default     = $args['default'];
		$description = $args['description'];
		$value       = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;

		echo '<input style="width: 100%; padding: 5px 10px" type="text" class="regular-text" id="' . esc_attr( $name ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" value="' . esc_attr( $value ) . '" placeholder="' . esc_attr( $placeholder ) . '" >';
		echo '<p>' . esc_html($description)  . '</p>';
	}


	/**
	 * Callback textarea function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function textarea( $args ) {

		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$default     = $args['default'];
		$value       = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
		$placeholder = $args['placeholder'];
		$description = $args['description'];

		echo '<textarea  style="width: 100%; padding: 10px" id="' . esc_attr( $name ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" placeholder="' . esc_attr( $placeholder ) . '" cols="37" rows="15">' . esc_attr( $value ) . '</textarea>';
		echo '<p>' . esc_attr( $description ) . '</p>';
	}


	/**
	 * Callback color function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function color( $args ) {

		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$default     = $args['default'];
		$value       = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
		$description = $args['description'];

		echo '<input  id="' . esc_attr( $name ) . '" type="text" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" class="color-field" value="' . esc_attr( $value ) . '" />';
		echo '<p>' . esc_attr( $description ) . '</p>';

	}


	/**
	 * Callback fonts function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function fonts( $args ) {
		$google_fonts = $this->get_google_fonts();
		$name         = $args['label_for'];
		$option_name  = $args['option_name'];
		$input        = get_option( $option_name );
		$default      = $args['default'];
		$value        = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
		$description  = $args['description'];

		echo '<select style="float:left;margin-right:30px; width: 50%;" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" id="' . esc_attr( $name ) . '">';
		foreach ( $google_fonts as $key => $font ) {
			$selected = '';
			if ( '' !== $value ) {
				if ( $value === $key ) {
					$selected = ' selected="selected"';
				}
			}
			echo '<option ' . esc_attr( $selected ) . ' value="' . esc_attr( $key ) . '">' . esc_attr( $font ) . '</option>';
		}

		echo '</select>';
		echo '<p id="font-example" style="font-size:30px; line-height:1;margin:0;padding:0; font-family:'.$google_fonts[$value].'">' . esc_attr( $google_fonts[$value] ) . '</p>';


		echo '<p>' . esc_attr( $description ) . '</p>';
	}


	/**
	 * Callback editor function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function editor( $args ) {
		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$default     = $args['default'];
		$value       = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
		//$description = $args['description'];

		$editor_settings = array(
			'wpautop'          => 0,
			'media_buttons'    => 0,
			'textarea_rows'    => 30,
			'teeny'            => 0,
			'dfw'              => 0,
			'tinymce'          => 1,
			'quicktags'        => 1,
			'drag_drop_upload' => false,
		);
		wp_editor( $value, $name, $editor_settings );
	}

	/**
	 * Callback checkbox function
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function checkbox( $args ) {

		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$description = $args['description'];
		$checked     = isset( $input[ $name ] ) ? $input[ $name ] : false;

		echo '<div class="ui-toggle">';
		echo '<input type="checkbox" id="' . esc_attr( $name ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" value="1" class="" ' . ( esc_attr( $checked ) ? 'checked' : '' ) . '>';
		echo '<label for="' . esc_attr( $name ) . '"><div></div></label>';
		echo '</div>';
		echo '<p>' . esc_attr( $description ) . '</p>';
	}

	/**
	 * Callback select function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function select( $args ) {
		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$default     = $args['default'];
		$value       = isset( $input[ $name ] ) ? $input[ $name ] : $default;
		$description = $args['description'];

		echo '<select style="width: 50%;" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" id="' . esc_attr( $name ) . '">';

		foreach ( $args['options'] as $key => $option ) {
			$selected = '';
			if ( '' !== $value ) {
				if ( $value === $key ) {
					$selected = ' selected="selected"';
				}
			}
			echo '<option' . esc_attr( $selected ) . ' value="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</option>';
		}
		echo '</select>';
		echo '<p>' . esc_attr( $description ) . '</p>';
	}


	/**
	 * Callback upload function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function upload( $args ) {
		$attachment_url = $args['label_for'];
		$attachment_id  = $args['attachment_id'];
		$option_name    = $args['option_name'];
		$input          = get_option( $option_name );
		$value_url      = isset( $input[ $attachment_url ] ) ? $input[ $attachment_url ] : '';
		$value_id       = isset( $input[ $attachment_id ] ) ? $input[ $attachment_id ] : '';
		$description    = $args['description'];

		echo '<button id="upload_now" class="button button-primary custom_media_upload">' . esc_html__( 'Upload', 'mortgage_platform' ) . '</button> ';
		echo '<button class="button button-primary logo_clear">' . esc_html__( 'Clear Image', 'mortgage_platform' ) . '</button> ';
		echo '<img class="' . esc_attr( MortgagePlatform::$prefix ) . 'logo_image" style="display:none; width: 150px; height: auto;" src="' . esc_url( $value_url ) . '" />';
		echo '<input class="custom_media_url" type="text" style="display:none;" id="' . esc_attr( $attachment_url ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $attachment_url ) . ']" value="' . esc_url( $value_url ) . '">';
		echo '<input class="custom_media_id" type="text" style="display:none;" id="' . esc_attr( $attachment_id ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $attachment_id ) . ']" value="' . esc_attr( $value_id ) . '">';
		echo '<p>' . esc_attr( $description ) . '</p>';
	}

	/**
	 * Callback button function.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array $args array of arguments
	 */
	public function button( $args ) {
		$name        = $args['label_for'];
		$option_name = $args['option_name'];
		$input       = get_option( $option_name );
		$description = $args['description'];
		$default     = $args['default'];
		$value       = isset( $input[ $name ] ) ? $input[ $name ] : $default;

		echo '<button id="' . esc_attr( $name ) . '" class="button">' . esc_attr( $value ) . '</button>';
		echo '<p>' . esc_attr( $description ) . '</p>';

	}


	/**
	 * Get google fonts.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array list of google fonts
	 */
	public function get_google_fonts() {
		$google_fonts = array(
			'default'                        => 'Default Font of Theme',
			'ABeeZee'                        => 'ABeeZee',
			'Abel'                           => 'Abel',
			'Abhaya+Libre'                   => 'Abhaya Libre',
			'Abril+Fatface'                  => 'Abril Fatface',
			'Aclonica'                       => 'Aclonica',
			'Acme'                           => 'Acme',
			'Actor'                          => 'Actor',
			'Adamina'                        => 'Adamina',
			'Advent+Pro'                     => 'Advent Pro',
			'Aguafina+Script'                => 'Aguafina Script',
			'Akronim'                        => 'Akronim',
			'Aladin'                         => 'Aladin',
			'Aldrich'                        => 'Aldrich',
			'Alef'                           => 'Alef',
			'Alegreya'                       => 'Alegreya',
			'Alegreya+SC'                    => 'Alegreya SC',
			'Alegreya+Sans'                  => 'Alegreya Sans',
			'Alegreya+Sans SC'               => 'Alegreya Sans SC',
			'Aleo'                           => 'Aleo',
			'Alex+Brush'                     => 'Alex Brush',
			'Alfa+Slab One'                  => 'Alfa Slab One',
			'Alice'                          => 'Alice',
			'Alike'                          => 'Alike',
			'Alike+Angular'                  => 'Alike Angular',
			'Allan'                          => 'Allan',
			'Allerta'                        => 'Allerta',
			'Allerta+Stencil'                => 'Allerta Stencil',
			'Allura'                         => 'Allura',
			'Almendra'                       => 'Almendra',
			'Almendra+Display'               => 'Almendra Display',
			'Almendra+SC'                    => 'Almendra SC',
			'Amarante'                       => 'Amarante',
			'Amaranth'                       => 'Amaranth',
			'Amatic+SC'                      => 'Amatic SC',
			'Amethysta'                      => 'Amethysta',
			'Amiko'                          => 'Amiko',
			'Amiri'                          => 'Amiri',
			'Amita'                          => 'Amita',
			'Anaheim'                        => 'Anaheim',
			'Andada'                         => 'Andada',
			'Andika'                         => 'Andika',
			'Angkor'                         => 'Angkor',
			'Annie+Use Your Telescope'       => 'Annie Use Your Telescope',
			'Anonymous+Pro'                  => 'Anonymous Pro',
			'Antic'                          => 'Antic',
			'Antic+Didone'                   => 'Antic Didone',
			'Antic+Slab'                     => 'Antic Slab',
			'Anton'                          => 'Anton',
			'Arapey'                         => 'Arapey',
			'Arbutus'                        => 'Arbutus',
			'Arbutus+Slab'                   => 'Arbutus Slab',
			'Architects+Daughter'            => 'Architects Daughter',
			'Archivo'                        => 'Archivo',
			'Archivo+Black'                  => 'Archivo Black',
			'Archivo+Narrow'                 => 'Archivo Narrow',
			'Aref+Ruqaa'                     => 'Aref Ruqaa',
			'Arima+Madurai'                  => 'Arima Madurai',
			'Arimo'                          => 'Arimo',
			'Arizonia'                       => 'Arizonia',
			'Armata'                         => 'Armata',
			'Arsenal'                        => 'Arsenal',
			'Artifika'                       => 'Artifika',
			'Arvo'                           => 'Arvo',
			'Arya'                           => 'Arya',
			'Asap'                           => 'Asap',
			'Asap+Condensed'                 => 'Asap Condensed',
			'Asar'                           => 'Asar',
			'Asset'                          => 'Asset',
			'Assistant'                      => 'Assistant',
			'Astloch'                        => 'Astloch',
			'Asul'                           => 'Asul',
			'Athiti'                         => 'Athiti',
			'Atma'                           => 'Atma',
			'Atomic+Age'                     => 'Atomic Age',
			'Aubrey'                         => 'Aubrey',
			'Audiowide'                      => 'Audiowide',
			'Autour+One'                     => 'Autour One',
			'Average'                        => 'Average',
			'Average+Sans'                   => 'Average Sans',
			'Averia+Gruesa Libre'            => 'Averia Gruesa Libre',
			'Averia+Libre'                   => 'Averia Libre',
			'Averia+Sans Libre'              => 'Averia Sans Libre',
			'Averia+Serif Libre'             => 'Averia Serif Libre',
			'B612'                           => 'B612',
			'B612+Mono'                      => 'B612 Mono',
			'Bad+Script'                     => 'Bad Script',
			'Bahiana'                        => 'Bahiana',
			'Bahianita'                      => 'Bahianita',
			'Bai+Jamjuree'                   => 'Bai Jamjuree',
			'Baloo'                          => 'Baloo',
			'Baloo+Bhai'                     => 'Baloo Bhai',
			'Baloo+Bhaijaan'                 => 'Baloo Bhaijaan',
			'Baloo+Bhaina'                   => 'Baloo Bhaina',
			'Baloo+Chettan'                  => 'Baloo Chettan',
			'Baloo+Da'                       => 'Baloo Da',
			'Baloo+Paaji'                    => 'Baloo Paaji',
			'Baloo+Tamma'                    => 'Baloo Tamma',
			'Baloo+Tammudu'                  => 'Baloo Tammudu',
			'Baloo+Thambi'                   => 'Baloo Thambi',
			'Balthazar'                      => 'Balthazar',
			'Bangers'                        => 'Bangers',
			'Barlow'                         => 'Barlow',
			'Barlow+Condensed'               => 'Barlow Condensed',
			'Barlow+Semi Condensed'          => 'Barlow Semi Condensed',
			'Barriecito'                     => 'Barriecito',
			'Barrio'                         => 'Barrio',
			'Basic'                          => 'Basic',
			'Battambang'                     => 'Battambang',
			'Baumans'                        => 'Baumans',
			'Bayon'                          => 'Bayon',
			'Belgrano'                       => 'Belgrano',
			'Bellefair'                      => 'Bellefair',
			'Belleza'                        => 'Belleza',
			'BenchNine'                      => 'BenchNine',
			'Bentham'                        => 'Bentham',
			'Berkshire+Swash'                => 'Berkshire Swash',
			'Beth+Ellen'                     => 'Beth Ellen',
			'Bevan'                          => 'Bevan',
			'Bigelow+Rules'                  => 'Bigelow Rules',
			'Bigshot+One'                    => 'Bigshot One',
			'Bilbo'                          => 'Bilbo',
			'Bilbo+Swash Caps'               => 'Bilbo Swash Caps',
			'BioRhyme'                       => 'BioRhyme',
			'BioRhyme+Expanded'              => 'BioRhyme Expanded',
			'Biryani'                        => 'Biryani',
			'Bitter'                         => 'Bitter',
			'Black+And White Picture'        => 'Black And White Picture',
			'Black+Han Sans'                 => 'Black Han Sans',
			'Black+Ops One'                  => 'Black Ops One',
			'Blinker'                        => 'Blinker',
			'Bokor'                          => 'Bokor',
			'Bonbon'                         => 'Bonbon',
			'Boogaloo'                       => 'Boogaloo',
			'Bowlby+One'                     => 'Bowlby One',
			'Bowlby+One SC'                  => 'Bowlby One SC',
			'Brawler'                        => 'Brawler',
			'Bree+Serif'                     => 'Bree Serif',
			'Bubblegum+Sans'                 => 'Bubblegum Sans',
			'Bubbler+One'                    => 'Bubbler One',
			'Buda'                           => 'Buda',
			'Buenard'                        => 'Buenard',
			'Bungee'                         => 'Bungee',
			'Bungee+Hairline'                => 'Bungee Hairline',
			'Bungee+Inline'                  => 'Bungee Inline',
			'Bungee+Outline'                 => 'Bungee Outline',
			'Bungee+Shade'                   => 'Bungee Shade',
			'Butcherman'                     => 'Butcherman',
			'Butterfly+Kids'                 => 'Butterfly Kids',
			'Cabin'                          => 'Cabin',
			'Cabin+Condensed'                => 'Cabin Condensed',
			'Cabin+Sketch'                   => 'Cabin Sketch',
			'Caesar+Dressing'                => 'Caesar Dressing',
			'Cagliostro'                     => 'Cagliostro',
			'Cairo'                          => 'Cairo',
			'Calligraffitti'                 => 'Calligraffitti',
			'Cambay'                         => 'Cambay',
			'Cambo'                          => 'Cambo',
			'Candal'                         => 'Candal',
			'Cantarell'                      => 'Cantarell',
			'Cantata+One'                    => 'Cantata One',
			'Cantora+One'                    => 'Cantora One',
			'Capriola'                       => 'Capriola',
			'Cardo'                          => 'Cardo',
			'Carme'                          => 'Carme',
			'Carrois+Gothic'                 => 'Carrois Gothic',
			'Carrois+Gothic SC'              => 'Carrois Gothic SC',
			'Carter+One'                     => 'Carter One',
			'Catamaran'                      => 'Catamaran',
			'Caudex'                         => 'Caudex',
			'Caveat'                         => 'Caveat',
			'Caveat+Brush'                   => 'Caveat Brush',
			'Cedarville+Cursive'             => 'Cedarville Cursive',
			'Ceviche+One'                    => 'Ceviche One',
			'Chakra+Petch'                   => 'Chakra Petch',
			'Changa'                         => 'Changa',
			'Changa+One'                     => 'Changa One',
			'Chango'                         => 'Chango',
			'Charm'                          => 'Charm',
			'Charmonman'                     => 'Charmonman',
			'Chathura'                       => 'Chathura',
			'Chau+Philomene One'             => 'Chau Philomene One',
			'Chela+One'                      => 'Chela One',
			'Chelsea+Market'                 => 'Chelsea Market',
			'Chenla'                         => 'Chenla',
			'Cherry+Cream Soda'              => 'Cherry Cream Soda',
			'Cherry+Swash'                   => 'Cherry Swash',
			'Chewy'                          => 'Chewy',
			'Chicle'                         => 'Chicle',
			'Chivo'                          => 'Chivo',
			'Chonburi'                       => 'Chonburi',
			'Cinzel'                         => 'Cinzel',
			'Cinzel+Decorative'              => 'Cinzel Decorative',
			'Clicker+Script'                 => 'Clicker Script',
			'Coda'                           => 'Coda',
			'Coda+Caption'                   => 'Coda Caption',
			'Codystar'                       => 'Codystar',
			'Coiny'                          => 'Coiny',
			'Combo'                          => 'Combo',
			'Comfortaa'                      => 'Comfortaa',
			'Coming+Soon'                    => 'Coming Soon',
			'Concert+One'                    => 'Concert One',
			'Condiment'                      => 'Condiment',
			'Content'                        => 'Content',
			'Contrail+One'                   => 'Contrail One',
			'Convergence'                    => 'Convergence',
			'Cookie'                         => 'Cookie',
			'Copse'                          => 'Copse',
			'Corben'                         => 'Corben',
			'Cormorant'                      => 'Cormorant',
			'Cormorant+Garamond'             => 'Cormorant Garamond',
			'Cormorant+Infant'               => 'Cormorant Infant',
			'Cormorant+SC'                   => 'Cormorant SC',
			'Cormorant+Unicase'              => 'Cormorant Unicase',
			'Cormorant+Upright'              => 'Cormorant Upright',
			'Courgette'                      => 'Courgette',
			'Cousine'                        => 'Cousine',
			'Coustard'                       => 'Coustard',
			'Covered+By Your Grace'          => 'Covered By Your Grace',
			'Crafty+Girls'                   => 'Crafty Girls',
			'Creepster'                      => 'Creepster',
			'Crete+Round'                    => 'Crete Round',
			'Crimson+Pro'                    => 'Crimson Pro',
			'Crimson+Text'                   => 'Crimson Text',
			'Croissant+One'                  => 'Croissant One',
			'Crushed'                        => 'Crushed',
			'Cuprum'                         => 'Cuprum',
			'Cute+Font'                      => 'Cute Font',
			'Cutive'                         => 'Cutive',
			'Cutive+Mono'                    => 'Cutive Mono',
			'DM+Sans'                        => 'DM Sans',
			'DM+Serif Display'               => 'DM Serif Display',
			'DM+Serif Text'                  => 'DM Serif Text',
			'Damion'                         => 'Damion',
			'Dancing+Script'                 => 'Dancing Script',
			'Dangrek'                        => 'Dangrek',
			'Darker+Grotesque'               => 'Darker Grotesque',
			'David+Libre'                    => 'David Libre',
			'Dawning+of a New Day'           => 'Dawning of a New Day',
			'Days+One'                       => 'Days One',
			'Dekko'                          => 'Dekko',
			'Delius'                         => 'Delius',
			'Delius+Swash Caps'              => 'Delius Swash Caps',
			'Delius+Unicase'                 => 'Delius Unicase',
			'Della+Respira'                  => 'Della Respira',
			'Denk+One'                       => 'Denk One',
			'Devonshire'                     => 'Devonshire',
			'Dhurjati'                       => 'Dhurjati',
			'Didact+Gothic'                  => 'Didact Gothic',
			'Diplomata'                      => 'Diplomata',
			'Diplomata+SC'                   => 'Diplomata SC',
			'Do+Hyeon'                       => 'Do Hyeon',
			'Dokdo'                          => 'Dokdo',
			'Domine'                         => 'Domine',
			'Donegal+One'                    => 'Donegal One',
			'Doppio+One'                     => 'Doppio One',
			'Dorsa'                          => 'Dorsa',
			'Dosis'                          => 'Dosis',
			'Dr+Sugiyama'                    => 'Dr Sugiyama',
			'Duru+Sans'                      => 'Duru Sans',
			'Dynalight'                      => 'Dynalight',
			'EB+Garamond'                    => 'EB Garamond',
			'Eagle+Lake'                     => 'Eagle Lake',
			'East+Sea Dokdo'                 => 'East Sea Dokdo',
			'Eater'                          => 'Eater',
			'Economica'                      => 'Economica',
			'Eczar'                          => 'Eczar',
			'El+Messiri'                     => 'El Messiri',
			'Electrolize'                    => 'Electrolize',
			'Elsie'                          => 'Elsie',
			'Elsie+Swash Caps'               => 'Elsie Swash Caps',
			'Emblema+One'                    => 'Emblema One',
			'Emilys+Candy'                   => 'Emilys Candy',
			'Encode+Sans'                    => 'Encode Sans',
			'Encode+Sans Condensed'          => 'Encode Sans Condensed',
			'Encode+Sans Expanded'           => 'Encode Sans Expanded',
			'Encode+Sans Semi Condensed'     => 'Encode Sans Semi Condensed',
			'Encode+Sans Semi Expanded'      => 'Encode Sans Semi Expanded',
			'Engagement'                     => 'Engagement',
			'Englebert'                      => 'Englebert',
			'Enriqueta'                      => 'Enriqueta',
			'Erica+One'                      => 'Erica One',
			'Esteban'                        => 'Esteban',
			'Euphoria+Script'                => 'Euphoria Script',
			'Ewert'                          => 'Ewert',
			'Exo'                            => 'Exo',
			'Exo+2'                          => 'Exo 2',
			'Expletus+Sans'                  => 'Expletus Sans',
			'Fahkwang'                       => 'Fahkwang',
			'Fanwood+Text'                   => 'Fanwood Text',
			'Farro'                          => 'Farro',
			'Farsan'                         => 'Farsan',
			'Fascinate'                      => 'Fascinate',
			'Fascinate+Inline'               => 'Fascinate Inline',
			'Faster+One'                     => 'Faster One',
			'Fasthand'                       => 'Fasthand',
			'Fauna+One'                      => 'Fauna One',
			'Faustina'                       => 'Faustina',
			'Federant'                       => 'Federant',
			'Federo'                         => 'Federo',
			'Felipa'                         => 'Felipa',
			'Fenix'                          => 'Fenix',
			'Finger+Paint'                   => 'Finger Paint',
			'Fira+Code'                      => 'Fira Code',
			'Fira+Mono'                      => 'Fira Mono',
			'Fira+Sans'                      => 'Fira Sans',
			'Fira+Sans Condensed'            => 'Fira Sans Condensed',
			'Fira+Sans Extra Condensed'      => 'Fira Sans Extra Condensed',
			'Fjalla+One'                     => 'Fjalla One',
			'Fjord+One'                      => 'Fjord One',
			'Flamenco'                       => 'Flamenco',
			'Flavors'                        => 'Flavors',
			'Fondamento'                     => 'Fondamento',
			'Fontdiner+Swanky'               => 'Fontdiner Swanky',
			'Forum'                          => 'Forum',
			'Francois+One'                   => 'Francois One',
			'Frank+Ruhl Libre'               => 'Frank Ruhl Libre',
			'Freckle+Face'                   => 'Freckle Face',
			'Fredericka+the Great'           => 'Fredericka the Great',
			'Fredoka+One'                    => 'Fredoka One',
			'Freehand'                       => 'Freehand',
			'Fresca'                         => 'Fresca',
			'Frijole'                        => 'Frijole',
			'Fruktur'                        => 'Fruktur',
			'Fugaz+One'                      => 'Fugaz One',
			'GFS+Didot'                      => 'GFS Didot',
			'GFS+Neohellenic'                => 'GFS Neohellenic',
			'Gabriela'                       => 'Gabriela',
			'Gaegu'                          => 'Gaegu',
			'Gafata'                         => 'Gafata',
			'Galada'                         => 'Galada',
			'Galdeano'                       => 'Galdeano',
			'Galindo'                        => 'Galindo',
			'Gamja+Flower'                   => 'Gamja Flower',
			'Gentium+Basic'                  => 'Gentium Basic',
			'Gentium+Book Basic'             => 'Gentium Book Basic',
			'Geo'                            => 'Geo',
			'Geostar'                        => 'Geostar',
			'Geostar+Fill'                   => 'Geostar Fill',
			'Germania+One'                   => 'Germania One',
			'Gidugu'                         => 'Gidugu',
			'Gilda+Display'                  => 'Gilda Display',
			'Give+You Glory'                 => 'Give You Glory',
			'Glass+Antiqua'                  => 'Glass Antiqua',
			'Glegoo'                         => 'Glegoo',
			'Gloria+Hallelujah'              => 'Gloria Hallelujah',
			'Goblin+One'                     => 'Goblin One',
			'Gochi+Hand'                     => 'Gochi Hand',
			'Gorditas'                       => 'Gorditas',
			'Gothic+A1'                      => 'Gothic A1',
			'Goudy+Bookletter 1911'          => 'Goudy Bookletter 1911',
			'Graduate'                       => 'Graduate',
			'Grand+Hotel'                    => 'Grand Hotel',
			'Gravitas+One'                   => 'Gravitas One',
			'Great+Vibes'                    => 'Great Vibes',
			'Grenze'                         => 'Grenze',
			'Griffy'                         => 'Griffy',
			'Gruppo'                         => 'Gruppo',
			'Gudea'                          => 'Gudea',
			'Gugi'                           => 'Gugi',
			'Gurajada'                       => 'Gurajada',
			'Habibi'                         => 'Habibi',
			'Halant'                         => 'Halant',
			'Hammersmith+One'                => 'Hammersmith One',
			'Hanalei'                        => 'Hanalei',
			'Hanalei+Fill'                   => 'Hanalei Fill',
			'Handlee'                        => 'Handlee',
			'Hanuman'                        => 'Hanuman',
			'Happy+Monkey'                   => 'Happy Monkey',
			'Harmattan'                      => 'Harmattan',
			'Headland+One'                   => 'Headland One',
			'Heebo'                          => 'Heebo',
			'Henny+Penny'                    => 'Henny Penny',
			'Herr+Von Muellerhoff'           => 'Herr Von Muellerhoff',
			'Hi+Melody'                      => 'Hi Melody',
			'Hind'                           => 'Hind',
			'Hind+Guntur'                    => 'Hind Guntur',
			'Hind+Madurai'                   => 'Hind Madurai',
			'Hind+Siliguri'                  => 'Hind Siliguri',
			'Hind+Vadodara'                  => 'Hind Vadodara',
			'Holtwood+One SC'                => 'Holtwood One SC',
			'Homemade+Apple'                 => 'Homemade Apple',
			'Homenaje'                       => 'Homenaje',
			'IBM+Plex Mono'                  => 'IBM Plex Mono',
			'IBM+Plex Sans'                  => 'IBM Plex Sans',
			'IBM+Plex Sans Condensed'        => 'IBM Plex Sans Condensed',
			'IBM+Plex Serif'                 => 'IBM Plex Serif',
			'IM+Fell DW Pica'                => 'IM Fell DW Pica',
			'IM+Fell DW Pica SC'             => 'IM Fell DW Pica SC',
			'IM+Fell Double Pica'            => 'IM Fell Double Pica',
			'IM+Fell Double Pica SC'         => 'IM Fell Double Pica SC',
			'IM+Fell English'                => 'IM Fell English',
			'IM+Fell English SC'             => 'IM Fell English SC',
			'IM+Fell French Canon'           => 'IM Fell French Canon',
			'IM+Fell French Canon SC'        => 'IM Fell French Canon SC',
			'IM+Fell Great Primer'           => 'IM Fell Great Primer',
			'IM+Fell Great Primer SC'        => 'IM Fell Great Primer SC',
			'Iceberg'                        => 'Iceberg',
			'Iceland'                        => 'Iceland',
			'Imprima'                        => 'Imprima',
			'Inconsolata'                    => 'Inconsolata',
			'Inder'                          => 'Inder',
			'Indie+Flower'                   => 'Indie Flower',
			'Inika'                          => 'Inika',
			'Inknut+Antiqua'                 => 'Inknut Antiqua',
			'Irish+Grover'                   => 'Irish Grover',
			'Istok+Web'                      => 'Istok Web',
			'Italiana'                       => 'Italiana',
			'Italianno'                      => 'Italianno',
			'Itim'                           => 'Itim',
			'Jacques+Francois'               => 'Jacques Francois',
			'Jacques+Francois Shadow'        => 'Jacques Francois Shadow',
			'Jaldi'                          => 'Jaldi',
			'Jim+Nightshade'                 => 'Jim Nightshade',
			'Jockey+One'                     => 'Jockey One',
			'Jolly+Lodger'                   => 'Jolly Lodger',
			'Jomhuria'                       => 'Jomhuria',
			'Josefin+Sans'                   => 'Josefin Sans',
			'Josefin+Slab'                   => 'Josefin Slab',
			'Joti+One'                       => 'Joti One',
			'Jua'                            => 'Jua',
			'Judson'                         => 'Judson',
			'Julee'                          => 'Julee',
			'Julius+Sans One'                => 'Julius Sans One',
			'Junge'                          => 'Junge',
			'Jura'                           => 'Jura',
			'Just+Another Hand'              => 'Just Another Hand',
			'Just+Me Again Down Here'        => 'Just Me Again Down Here',
			'K2D'                            => 'K2D',
			'Kadwa'                          => 'Kadwa',
			'Kalam'                          => 'Kalam',
			'Kameron'                        => 'Kameron',
			'Kanit'                          => 'Kanit',
			'Kantumruy'                      => 'Kantumruy',
			'Karla'                          => 'Karla',
			'Karma'                          => 'Karma',
			'Katibeh'                        => 'Katibeh',
			'Kaushan+Script'                 => 'Kaushan Script',
			'Kavivanar'                      => 'Kavivanar',
			'Kavoon'                         => 'Kavoon',
			'Kdam+Thmor'                     => 'Kdam Thmor',
			'Keania+One'                     => 'Keania One',
			'Kelly+Slab'                     => 'Kelly Slab',
			'Kenia'                          => 'Kenia',
			'Khand'                          => 'Khand',
			'Khmer'                          => 'Khmer',
			'Khula'                          => 'Khula',
			'Kirang+Haerang'                 => 'Kirang Haerang',
			'Kite+One'                       => 'Kite One',
			'Knewave'                        => 'Knewave',
			'KoHo'                           => 'KoHo',
			'Kodchasan'                      => 'Kodchasan',
			'Kosugi'                         => 'Kosugi',
			'Kosugi+Maru'                    => 'Kosugi Maru',
			'Kotta+One'                      => 'Kotta One',
			'Koulen'                         => 'Koulen',
			'Kranky'                         => 'Kranky',
			'Kreon'                          => 'Kreon',
			'Kristi'                         => 'Kristi',
			'Krona+One'                      => 'Krona One',
			'Krub'                           => 'Krub',
			'Kumar+One'                      => 'Kumar One',
			'Kumar+One Outline'              => 'Kumar One Outline',
			'Kurale'                         => 'Kurale',
			'La+Belle Aurore'                => 'La Belle Aurore',
			'Lacquer'                        => 'Lacquer',
			'Laila'                          => 'Laila',
			'Lakki+Reddy'                    => 'Lakki Reddy',
			'Lalezar'                        => 'Lalezar',
			'Lancelot'                       => 'Lancelot',
			'Lateef'                         => 'Lateef',
			'Lato'                           => 'Lato',
			'League+Script'                  => 'League Script',
			'Leckerli+One'                   => 'Leckerli One',
			'Ledger'                         => 'Ledger',
			'Lekton'                         => 'Lekton',
			'Lemon'                          => 'Lemon',
			'Lemonada'                       => 'Lemonada',
			'Libre+Barcode 128'              => 'Libre Barcode 128',
			'Libre+Barcode 128 Text'         => 'Libre Barcode 128 Text',
			'Libre+Barcode 39'               => 'Libre Barcode 39',
			'Libre+Barcode 39 Extended'      => 'Libre Barcode 39 Extended',
			'Libre+Barcode 39 Extended Text' => 'Libre Barcode 39 Extended Text',
			'Libre+Barcode 39 Text'          => 'Libre Barcode 39 Text',
			'Libre+Baskerville'              => 'Libre Baskerville',
			'Libre+Caslon Display'           => 'Libre Caslon Display',
			'Libre+Caslon Text'              => 'Libre Caslon Text',
			'Libre+Franklin'                 => 'Libre Franklin',
			'Life+Savers'                    => 'Life Savers',
			'Lilita+One'                     => 'Lilita One',
			'Lily+Script One'                => 'Lily Script One',
			'Limelight'                      => 'Limelight',
			'Linden+Hill'                    => 'Linden Hill',
			'Literata'                       => 'Literata',
			'Liu+Jian Mao Cao'               => 'Liu Jian Mao Cao',
			'Lobster'                        => 'Lobster',
			'Lobster+Two'                    => 'Lobster Two',
			'Londrina+Outline'               => 'Londrina Outline',
			'Londrina+Shadow'                => 'Londrina Shadow',
			'Londrina+Sketch'                => 'Londrina Sketch',
			'Londrina+Solid'                 => 'Londrina Solid',
			'Long+Cang'                      => 'Long Cang',
			'Lora'                           => 'Lora',
			'Love+Ya Like A Sister'          => 'Love Ya Like A Sister',
			'Loved+by the King'              => 'Loved by the King',
			'Lovers+Quarrel'                 => 'Lovers Quarrel',
			'Luckiest+Guy'                   => 'Luckiest Guy',
			'Lusitana'                       => 'Lusitana',
			'Lustria'                        => 'Lustria',
			'M+PLUS 1p'                      => 'M PLUS 1p',
			'M+PLUS Rounded 1c'              => 'M PLUS Rounded 1c',
			'Ma+Shan Zheng'                  => 'Ma Shan Zheng',
			'Macondo'                        => 'Macondo',
			'Macondo+Swash Caps'             => 'Macondo Swash Caps',
			'Mada'                           => 'Mada',
			'Magra'                          => 'Magra',
			'Maiden+Orange'                  => 'Maiden Orange',
			'Maitree'                        => 'Maitree',
			'Major+Mono Display'             => 'Major Mono Display',
			'Mako'                           => 'Mako',
			'Mali'                           => 'Mali',
			'Mallanna'                       => 'Mallanna',
			'Mandali'                        => 'Mandali',
			'Manuale'                        => 'Manuale',
			'Marcellus'                      => 'Marcellus',
			'Marcellus+SC'                   => 'Marcellus SC',
			'Marck+Script'                   => 'Marck Script',
			'Margarine'                      => 'Margarine',
			'Markazi+Text'                   => 'Markazi Text',
			'Marko+One'                      => 'Marko One',
			'Marmelad'                       => 'Marmelad',
			'Martel'                         => 'Martel',
			'Martel+Sans'                    => 'Martel Sans',
			'Marvel'                         => 'Marvel',
			'Mate'                           => 'Mate',
			'Mate+SC'                        => 'Mate SC',
			'Maven+Pro'                      => 'Maven Pro',
			'McLaren'                        => 'McLaren',
			'Meddon'                         => 'Meddon',
			'MedievalSharp'                  => 'MedievalSharp',
			'Medula+One'                     => 'Medula One',
			'Meera+Inimai'                   => 'Meera Inimai',
			'Megrim'                         => 'Megrim',
			'Meie+Script'                    => 'Meie Script',
			'Merienda'                       => 'Merienda',
			'Merienda+One'                   => 'Merienda One',
			'Merriweather'                   => 'Merriweather',
			'Merriweather+Sans'              => 'Merriweather Sans',
			'Metal'                          => 'Metal',
			'Metal+Mania'                    => 'Metal Mania',
			'Metamorphous'                   => 'Metamorphous',
			'Metrophobic'                    => 'Metrophobic',
			'Michroma'                       => 'Michroma',
			'Milonga'                        => 'Milonga',
			'Miltonian'                      => 'Miltonian',
			'Miltonian+Tattoo'               => 'Miltonian Tattoo',
			'Mina'                           => 'Mina',
			'Miniver'                        => 'Miniver',
			'Miriam+Libre'                   => 'Miriam Libre',
			'Mirza'                          => 'Mirza',
			'Miss+Fajardose'                 => 'Miss Fajardose',
			'Mitr'                           => 'Mitr',
			'Modak'                          => 'Modak',
			'Modern+Antiqua'                 => 'Modern Antiqua',
			'Mogra'                          => 'Mogra',
			'Molengo'                        => 'Molengo',
			'Molle'                          => 'Molle',
			'Monda'                          => 'Monda',
			'Monofett'                       => 'Monofett',
			'Monoton'                        => 'Monoton',
			'Monsieur+La Doulaise'           => 'Monsieur La Doulaise',
			'Montaga'                        => 'Montaga',
			'Montez'                         => 'Montez',
			'Montserrat'                     => 'Montserrat',
			'Montserrat+Alternates'          => 'Montserrat Alternates',
			'Montserrat+Subrayada'           => 'Montserrat Subrayada',
			'Moul'                           => 'Moul',
			'Moulpali'                       => 'Moulpali',
			'Mountains+of Christmas'         => 'Mountains of Christmas',
			'Mouse+Memoirs'                  => 'Mouse Memoirs',
			'Mr+Bedfort'                     => 'Mr Bedfort',
			'Mr+Dafoe'                       => 'Mr Dafoe',
			'Mr+De Haviland'                 => 'Mr De Haviland',
			'Mrs+Saint Delafield'            => 'Mrs Saint Delafield',
			'Mrs+Sheppards'                  => 'Mrs Sheppards',
			'Mukta'                          => 'Mukta',
			'Mukta+Mahee'                    => 'Mukta Mahee',
			'Mukta+Malar'                    => 'Mukta Malar',
			'Mukta+Vaani'                    => 'Mukta Vaani',
			'Muli'                           => 'Muli',
			'Mystery+Quest'                  => 'Mystery Quest',
			'NTR'                            => 'NTR',
			'Nanum+Brush Script'             => 'Nanum Brush Script',
			'Nanum+Gothic'                   => 'Nanum Gothic',
			'Nanum+Gothic Coding'            => 'Nanum Gothic Coding',
			'Nanum+Myeongjo'                 => 'Nanum Myeongjo',
			'Nanum+Pen Script'               => 'Nanum Pen Script',
			'Neucha'                         => 'Neucha',
			'Neuton'                         => 'Neuton',
			'New+Rocker'                     => 'New Rocker',
			'News+Cycle'                     => 'News Cycle',
			'Niconne'                        => 'Niconne',
			'Niramit'                        => 'Niramit',
			'Nixie+One'                      => 'Nixie One',
			'Nobile'                         => 'Nobile',
			'Nokora'                         => 'Nokora',
			'Norican'                        => 'Norican',
			'Nosifer'                        => 'Nosifer',
			'Notable'                        => 'Notable',
			'Nothing+You Could Do'           => 'Nothing You Could Do',
			'Noticia+Text'                   => 'Noticia Text',
			'Noto+Sans'                      => 'Noto Sans',
			'Noto+Sans HK'                   => 'Noto Sans HK',
			'Noto+Sans JP'                   => 'Noto Sans JP',
			'Noto+Sans KR'                   => 'Noto Sans KR',
			'Noto+Sans SC'                   => 'Noto Sans SC',
			'Noto+Sans TC'                   => 'Noto Sans TC',
			'Noto+Serif'                     => 'Noto Serif',
			'Noto+Serif JP'                  => 'Noto Serif JP',
			'Noto+Serif KR'                  => 'Noto Serif KR',
			'Noto+Serif SC'                  => 'Noto Serif SC',
			'Noto+Serif TC'                  => 'Noto Serif TC',
			'Nova+Cut'                       => 'Nova Cut',
			'Nova+Flat'                      => 'Nova Flat',
			'Nova+Mono'                      => 'Nova Mono',
			'Nova+Oval'                      => 'Nova Oval',
			'Nova+Round'                     => 'Nova Round',
			'Nova+Script'                    => 'Nova Script',
			'Nova+Slim'                      => 'Nova Slim',
			'Nova+Square'                    => 'Nova Square',
			'Numans'                         => 'Numans',
			'Nunito'                         => 'Nunito',
			'Nunito+Sans'                    => 'Nunito Sans',
			'Odor+Mean Chey'                 => 'Odor Mean Chey',
			'Offside'                        => 'Offside',
			'Old+Standard TT'                => 'Old Standard TT',
			'Oldenburg'                      => 'Oldenburg',
			'Oleo+Script'                    => 'Oleo Script',
			'Oleo+Script Swash Caps'         => 'Oleo Script Swash Caps',
			'Open+Sans'                      => 'Open Sans',
			'Open+Sans Condensed'            => 'Open Sans Condensed',
			'Oranienbaum'                    => 'Oranienbaum',
			'Orbitron'                       => 'Orbitron',
			'Oregano'                        => 'Oregano',
			'Orienta'                        => 'Orienta',
			'Original+Surfer'                => 'Original Surfer',
			'Oswald'                         => 'Oswald',
			'Over+the Rainbow'               => 'Over the Rainbow',
			'Overlock'                       => 'Overlock',
			'Overlock+SC'                    => 'Overlock SC',
			'Overpass'                       => 'Overpass',
			'Overpass+Mono'                  => 'Overpass Mono',
			'Ovo'                            => 'Ovo',
			'Oxygen'                         => 'Oxygen',
			'Oxygen+Mono'                    => 'Oxygen Mono',
			'PT+Mono'                        => 'PT Mono',
			'PT+Sans'                        => 'PT Sans',
			'PT+Sans Caption'                => 'PT Sans Caption',
			'PT+Sans Narrow'                 => 'PT Sans Narrow',
			'PT+Serif'                       => 'PT Serif',
			'PT+Serif Caption'               => 'PT Serif Caption',
			'Pacifico'                       => 'Pacifico',
			'Padauk'                         => 'Padauk',
			'Palanquin'                      => 'Palanquin',
			'Palanquin+Dark'                 => 'Palanquin Dark',
			'Pangolin'                       => 'Pangolin',
			'Paprika'                        => 'Paprika',
			'Parisienne'                     => 'Parisienne',
			'Passero+One'                    => 'Passero One',
			'Passion+One'                    => 'Passion One',
			'Pathway+Gothic One'             => 'Pathway Gothic One',
			'Patrick+Hand'                   => 'Patrick Hand',
			'Patrick+Hand SC'                => 'Patrick Hand SC',
			'Pattaya'                        => 'Pattaya',
			'Patua+One'                      => 'Patua One',
			'Pavanam'                        => 'Pavanam',
			'Paytone+One'                    => 'Paytone One',
			'Peddana'                        => 'Peddana',
			'Peralta'                        => 'Peralta',
			'Permanent+Marker'               => 'Permanent Marker',
			'Petit+Formal Script'            => 'Petit Formal Script',
			'Petrona'                        => 'Petrona',
			'Philosopher'                    => 'Philosopher',
			'Piedra'                         => 'Piedra',
			'Pinyon+Script'                  => 'Pinyon Script',
			'Pirata+One'                     => 'Pirata One',
			'Plaster'                        => 'Plaster',
			'Play'                           => 'Play',
			'Playball'                       => 'Playball',
			'Playfair+Display'               => 'Playfair Display',
			'Playfair+Display SC'            => 'Playfair Display SC',
			'Podkova'                        => 'Podkova',
			'Poiret+One'                     => 'Poiret One',
			'Poller+One'                     => 'Poller One',
			'Poly'                           => 'Poly',
			'Pompiere'                       => 'Pompiere',
			'Pontano+Sans'                   => 'Pontano Sans',
			'Poor+Story'                     => 'Poor Story',
			'Poppins'                        => 'Poppins',
			'Port+Lligat Sans'               => 'Port Lligat Sans',
			'Port+Lligat Slab'               => 'Port Lligat Slab',
			'Pragati+Narrow'                 => 'Pragati Narrow',
			'Prata'                          => 'Prata',
			'Preahvihear'                    => 'Preahvihear',
			'Press+Start 2P'                 => 'Press Start 2P',
			'Pridi'                          => 'Pridi',
			'Princess+Sofia'                 => 'Princess Sofia',
			'Prociono'                       => 'Prociono',
			'Prompt'                         => 'Prompt',
			'Prosto+One'                     => 'Prosto One',
			'Proza+Libre'                    => 'Proza Libre',
			'Puritan'                        => 'Puritan',
			'Purple+Purse'                   => 'Purple Purse',
			'Quando'                         => 'Quando',
			'Quantico'                       => 'Quantico',
			'Quattrocento'                   => 'Quattrocento',
			'Quattrocento+Sans'              => 'Quattrocento Sans',
			'Questrial'                      => 'Questrial',
			'Quicksand'                      => 'Quicksand',
			'Quintessential'                 => 'Quintessential',
			'Qwigley'                        => 'Qwigley',
			'Racing+Sans One'                => 'Racing Sans One',
			'Radley'                         => 'Radley',
			'Rajdhani'                       => 'Rajdhani',
			'Rakkas'                         => 'Rakkas',
			'Raleway'                        => 'Raleway',
			'Raleway+Dots'                   => 'Raleway Dots',
			'Ramabhadra'                     => 'Ramabhadra',
			'Ramaraja'                       => 'Ramaraja',
			'Rambla'                         => 'Rambla',
			'Rammetto+One'                   => 'Rammetto One',
			'Ranchers'                       => 'Ranchers',
			'Rancho'                         => 'Rancho',
			'Ranga'                          => 'Ranga',
			'Rasa'                           => 'Rasa',
			'Rationale'                      => 'Rationale',
			'Ravi+Prakash'                   => 'Ravi Prakash',
			'Red+Hat Display'                => 'Red Hat Display',
			'Red+Hat Text'                   => 'Red Hat Text',
			'Redressed'                      => 'Redressed',
			'Reem+Kufi'                      => 'Reem Kufi',
			'Reenie+Beanie'                  => 'Reenie Beanie',
			'Revalia'                        => 'Revalia',
			'Rhodium+Libre'                  => 'Rhodium Libre',
			'Ribeye'                         => 'Ribeye',
			'Ribeye+Marrow'                  => 'Ribeye Marrow',
			'Righteous'                      => 'Righteous',
			'Risque'                         => 'Risque',
			'Roboto'                         => 'Roboto',
			'Roboto+Condensed'               => 'Roboto Condensed',
			'Roboto+Mono'                    => 'Roboto Mono',
			'Roboto+Slab'                    => 'Roboto Slab',
			'Rochester'                      => 'Rochester',
			'Rock+Salt'                      => 'Rock Salt',
			'Rokkitt'                        => 'Rokkitt',
			'Romanesco'                      => 'Romanesco',
			'Ropa+Sans'                      => 'Ropa Sans',
			'Rosario'                        => 'Rosario',
			'Rosarivo'                       => 'Rosarivo',
			'Rouge+Script'                   => 'Rouge Script',
			'Rozha+One'                      => 'Rozha One',
			'Rubik'                          => 'Rubik',
			'Rubik+Mono One'                 => 'Rubik Mono One',
			'Ruda'                           => 'Ruda',
			'Rufina'                         => 'Rufina',
			'Ruge+Boogie'                    => 'Ruge Boogie',
			'Ruluko'                         => 'Ruluko',
			'Rum+Raisin'                     => 'Rum Raisin',
			'Ruslan+Display'                 => 'Ruslan Display',
			'Russo+One'                      => 'Russo One',
			'Ruthie'                         => 'Ruthie',
			'Rye'                            => 'Rye',
			'Sacramento'                     => 'Sacramento',
			'Sahitya'                        => 'Sahitya',
			'Sail'                           => 'Sail',
			'Saira'                          => 'Saira',
			'Saira+Condensed'                => 'Saira Condensed',
			'Saira+Extra Condensed'          => 'Saira Extra Condensed',
			'Saira+Semi Condensed'           => 'Saira Semi Condensed',
			'Saira+Stencil One'              => 'Saira Stencil One',
			'Salsa'                          => 'Salsa',
			'Sanchez'                        => 'Sanchez',
			'Sancreek'                       => 'Sancreek',
			'Sansita'                        => 'Sansita',
			'Sarabun'                        => 'Sarabun',
			'Sarala'                         => 'Sarala',
			'Sarina'                         => 'Sarina',
			'Sarpanch'                       => 'Sarpanch',
			'Satisfy'                        => 'Satisfy',
			'Sawarabi+Gothic'                => 'Sawarabi Gothic',
			'Sawarabi+Mincho'                => 'Sawarabi Mincho',
			'Scada'                          => 'Scada',
			'Scheherazade'                   => 'Scheherazade',
			'Schoolbell'                     => 'Schoolbell',
			'Scope+One'                      => 'Scope One',
			'Seaweed+Script'                 => 'Seaweed Script',
			'Secular+One'                    => 'Secular One',
			'Sedgwick+Ave'                   => 'Sedgwick Ave',
			'Sedgwick+Ave Display'           => 'Sedgwick Ave Display',
			'Sevillana'                      => 'Sevillana',
			'Seymour+One'                    => 'Seymour One',
			'Shadows+Into Light'             => 'Shadows Into Light',
			'Shadows+Into Light Two'         => 'Shadows Into Light Two',
			'Shanti'                         => 'Shanti',
			'Share'                          => 'Share',
			'Share+Tech'                     => 'Share Tech',
			'Share+Tech Mono'                => 'Share Tech Mono',
			'Shojumaru'                      => 'Shojumaru',
			'Short+Stack'                    => 'Short Stack',
			'Shrikhand'                      => 'Shrikhand',
			'Siemreap'                       => 'Siemreap',
			'Sigmar+One'                     => 'Sigmar One',
			'Signika'                        => 'Signika',
			'Signika+Negative'               => 'Signika Negative',
			'Simonetta'                      => 'Simonetta',
			'Single+Day'                     => 'Single Day',
			'Sintony'                        => 'Sintony',
			'Sirin+Stencil'                  => 'Sirin Stencil',
			'Six+Caps'                       => 'Six Caps',
			'Skranji'                        => 'Skranji',
			'Slabo+13px'                     => 'Slabo 13px',
			'Slabo+27px'                     => 'Slabo 27px',
			'Slackey'                        => 'Slackey',
			'Smokum'                         => 'Smokum',
			'Smythe'                         => 'Smythe',
			'Sniglet'                        => 'Sniglet',
			'Snippet'                        => 'Snippet',
			'Snowburst+One'                  => 'Snowburst One',
			'Sofadi+One'                     => 'Sofadi One',
			'Sofia'                          => 'Sofia',
			'Song+Myung'                     => 'Song Myung',
			'Sonsie+One'                     => 'Sonsie One',
			'Sorts+Mill Goudy'               => 'Sorts Mill Goudy',
			'Source+Code Pro'                => 'Source Code Pro',
			'Source+Sans Pro'                => 'Source Sans Pro',
			'Source+Serif Pro'               => 'Source Serif Pro',
			'Space+Mono'                     => 'Space Mono',
			'Special+Elite'                  => 'Special Elite',
			'Spectral'                       => 'Spectral',
			'Spectral+SC'                    => 'Spectral SC',
			'Spicy+Rice'                     => 'Spicy Rice',
			'Spinnaker'                      => 'Spinnaker',
			'Spirax'                         => 'Spirax',
			'Squada+One'                     => 'Squada One',
			'Sree+Krushnadevaraya'           => 'Sree Krushnadevaraya',
			'Sriracha'                       => 'Sriracha',
			'Srisakdi'                       => 'Srisakdi',
			'Staatliches'                    => 'Staatliches',
			'Stalemate'                      => 'Stalemate',
			'Stalinist+One'                  => 'Stalinist One',
			'Stardos+Stencil'                => 'Stardos Stencil',
			'Stint+Ultra Condensed'          => 'Stint Ultra Condensed',
			'Stint+Ultra Expanded'           => 'Stint Ultra Expanded',
			'Stoke'                          => 'Stoke',
			'Strait'                         => 'Strait',
			'Stylish'                        => 'Stylish',
			'Sue+Ellen Francisco'            => 'Sue Ellen Francisco',
			'Suez+One'                       => 'Suez One',
			'Sumana'                         => 'Sumana',
			'Sunflower'                      => 'Sunflower',
			'Sunshiney'                      => 'Sunshiney',
			'Supermercado+One'               => 'Supermercado One',
			'Sura'                           => 'Sura',
			'Suranna'                        => 'Suranna',
			'Suravaram'                      => 'Suravaram',
			'Suwannaphum'                    => 'Suwannaphum',
			'Swanky+and Moo Moo'             => 'Swanky and Moo Moo',
			'Syncopate'                      => 'Syncopate',
			'Tajawal'                        => 'Tajawal',
			'Tangerine'                      => 'Tangerine',
			'Taprom'                         => 'Taprom',
			'Tauri'                          => 'Tauri',
			'Taviraj'                        => 'Taviraj',
			'Teko'                           => 'Teko',
			'Telex'                          => 'Telex',
			'Tenali+Ramakrishna'             => 'Tenali Ramakrishna',
			'Tenor+Sans'                     => 'Tenor Sans',
			'Text+Me One'                    => 'Text Me One',
			'Thasadith'                      => 'Thasadith',
			'The+Girl Next Door'             => 'The Girl Next Door',
			'Tienne'                         => 'Tienne',
			'Tillana'                        => 'Tillana',
			'Timmana'                        => 'Timmana',
			'Tinos'                          => 'Tinos',
			'Titan+One'                      => 'Titan One',
			'Titillium+Web'                  => 'Titillium Web',
			'Trade+Winds'                    => 'Trade Winds',
			'Trirong'                        => 'Trirong',
			'Trocchi'                        => 'Trocchi',
			'Trochut'                        => 'Trochut',
			'Trykker'                        => 'Trykker',
			'Tulpen+One'                     => 'Tulpen One',
			'Ubuntu'                         => 'Ubuntu',
			'Ubuntu+Condensed'               => 'Ubuntu Condensed',
			'Ubuntu+Mono'                    => 'Ubuntu Mono',
			'Ultra'                          => 'Ultra',
			'Uncial+Antiqua'                 => 'Uncial Antiqua',
			'Underdog'                       => 'Underdog',
			'Unica+One'                      => 'Unica One',
			'UnifrakturCook'                 => 'UnifrakturCook',
			'UnifrakturMaguntia'             => 'UnifrakturMaguntia',
			'Unkempt'                        => 'Unkempt',
			'Unlock'                         => 'Unlock',
			'Unna'                           => 'Unna',
			'VT323'                          => 'VT323',
			'Vampiro+One'                    => 'Vampiro One',
			'Varela'                         => 'Varela',
			'Varela+Round'                   => 'Varela Round',
			'Vast+Shadow'                    => 'Vast Shadow',
			'Vesper+Libre'                   => 'Vesper Libre',
			'Vibur'                          => 'Vibur',
			'Vidaloka'                       => 'Vidaloka',
			'Viga'                           => 'Viga',
			'Voces'                          => 'Voces',
			'Volkhov'                        => 'Volkhov',
			'Vollkorn'                       => 'Vollkorn',
			'Vollkorn+SC'                    => 'Vollkorn SC',
			'Voltaire'                       => 'Voltaire',
			'Waiting+for the Sunrise'        => 'Waiting for the Sunrise',
			'Wallpoet'                       => 'Wallpoet',
			'Walter+Turncoat'                => 'Walter Turncoat',
			'Warnes'                         => 'Warnes',
			'Wellfleet'                      => 'Wellfleet',
			'Wendy+One'                      => 'Wendy One',
			'Wire+One'                       => 'Wire One',
			'Work+Sans'                      => 'Work Sans',
			'Yanone+Kaffeesatz'              => 'Yanone Kaffeesatz',
			'Yantramanav'                    => 'Yantramanav',
			'Yatra+One'                      => 'Yatra One',
			'Yellowtail'                     => 'Yellowtail',
			'Yeon+Sung'                      => 'Yeon Sung',
			'Yeseva+One'                     => 'Yeseva One',
			'Yesteryear'                     => 'Yesteryear',
			'Yrsa'                           => 'Yrsa',
			'ZCOOL+KuaiLe'                   => 'ZCOOL KuaiLe',
			'ZCOOL+QingKe HuangYou'          => 'ZCOOL QingKe HuangYou',
			'ZCOOL+XiaoWei'                  => 'ZCOOL XiaoWei',
			'Zeyada'                         => 'Zeyada',
			'Zhi+Mang Xing'                  => 'Zhi Mang Xing',
			'Zilla+Slab'                     => 'Zilla Slab',
			'Zilla+Slab Highlight'           => 'Zilla Slab Highlight',
		);

		return $google_fonts;
	}


	/**
	 * Adjust Brightness.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param string $hex color hex
	 * @param int $steps steps should be between -255 and 255. Negative = darker, positive = lighter
	 *
	 * @return string
	 */
	public static function adjust_brightness( $hex, $steps ) {
		// Steps should be between -255 and 255. Negative = darker, positive = lighter
		$steps = max( - 255, min( 255, $steps ) );

		// Normalize into a six character long hex string
		$hex = str_replace( '#', '', $hex );
		if ( strlen( $hex ) === 3 ) {
			$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
		}

		// Split into three parts: R, G and B
		$color_parts = str_split( $hex, 2 );
		$return      = '#';

		foreach ( $color_parts as $color ) {
			$color   = hexdec( $color ); // Convert to decimal
			$color   = max( 0, min( 255, $color + $steps ) ); // Adjust color
			$return .= str_pad( dechex( $color ), 2, '0', STR_PAD_LEFT ); // Make two char hex code
		}

		return $return;
	}



	/**
	 * Check is isset data.
	 * @since  1.0.0
	 * @access public
	 * @static
	 *
	 * @param string|array|mixed $data               data.
	 * @param int|string|bool|callback $is_not_isset resulf if not isset.  Default ''.
	 *
	 * @return mixed
	 */
	public static function is_isset( $data, $is_not_isset = '' ) {

		if ( isset( $data ) ) {
			return $data;
		}

		return $is_not_isset;

	}


	/**
	 * Check is isset and not empty data.
	 * @since  1.0.0
	 * @access public
	 * @static
	 *
	 * @param string|array|mixed $data               data.
	 * @param int|string|bool|callback $is_not_isset resulf if not isset. Default ''.
	 *
	 * @return mixed
	 */
	public static function check_data( $data, $is_not_isset = '' ) {

		if ( isset( $data ) && ! empty( $data ) ) {
			return $data;
		}

		return $is_not_isset;

	}


	/**
	 * Create CSV file from array.
	 *
	 * @access public
     * @static
	 * @since 1.0.0
	 *
	 * @param array $array array of leads
	 * @param string $filename file name
	 *
	 * @return null|string
	 */
	public static function create_csv( array &$array, $filename = '' ) {

	    self::download_send_headers($filename);

		if ( count( $array ) == 0 ) {
			return null;
		}
		ob_start();
		$df = fopen( "php://output", 'w' );
		fputcsv($df, array_keys(reset($array)));
		foreach ( $array as $row ) {
			fputcsv( $df, $row );
		}
		fclose( $df );

		return ob_get_clean();
	}

	/**
	 * Prepare headers for export csv file.
	 *
	 * @access private
     * @static
	 * @since 1.0.0
	 *
	 * @param string $filename csv file name
	 */
	private static function download_send_headers( $filename ) {
		// disable caching
		$now = gmdate( "D, d M Y H:i:s" );
		header( "Expires: Tue, 03 Jul 2001 06:00:00 GMT" );
		header( "Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate" );
		header( "Last-Modified: {$now} GMT" );

		// force download
		header( "Content-Type: application/force-download" );
		header( "Content-Type: application/octet-stream" );
		header( "Content-Type: application/download" );

		// disposition / encoding on response body
		header( "Content-Disposition: attachment;filename={$filename}" );
		header( "Content-Transfer-Encoding: binary" );
	}

}

Top ↑

Methods Methods


Top ↑

Changelog Changelog

Changelog
Version Description
1.0.0 Introduced.