360 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			360 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| if ( ! function_exists( 'generate_typography_convert_values' ) ) {
 | |
| 	add_action( 'admin_init', 'generate_typography_convert_values' );
 | |
| 	/**
 | |
| 	 * Our font family values used to have all of the variants attached to them
 | |
| 	 * This function removes those and keeps your select font family
 | |
| 	 */
 | |
| 	function generate_typography_convert_values() {
 | |
| 		// Bail if we don't have our defaults
 | |
| 		if ( ! function_exists( 'generate_get_default_fonts' ) ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// If we've already ran this function, bail
 | |
| 		if ( 'true' == get_option( 'generate_update_premium_typography' ) ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Get all settings
 | |
| 		$generate_settings = wp_parse_args(
 | |
| 			get_option( 'generate_settings', array() ),
 | |
| 			generate_get_default_fonts()
 | |
| 		);
 | |
| 
 | |
| 		// Get our font family keys
 | |
| 		$font_settings = array(
 | |
| 			'font_body',
 | |
| 			'font_site_title',
 | |
| 			'font_site_tagline',
 | |
| 			'font_navigation',
 | |
| 			'font_widget_title',
 | |
| 			'font_heading_1',
 | |
| 			'font_heading_2',
 | |
| 			'font_heading_3'
 | |
| 		);
 | |
| 
 | |
| 		// Create our new empty array
 | |
| 		$new_settings = array();
 | |
| 
 | |
| 		// For each font family key
 | |
| 		foreach( $font_settings as $key ) {
 | |
| 
 | |
| 			// Get the value of each key
 | |
| 			$value = $generate_settings[$key];
 | |
| 
 | |
| 			// If our value has : in it and is not empty
 | |
| 			if ( strpos( $value, ':' ) !== false && ! empty( $value ) ) {
 | |
| 
 | |
| 				// Remove the : and anything past it
 | |
| 				$value = current( explode( ':', $value ) );
 | |
| 
 | |
| 				// Populate our new array with our new value
 | |
| 				$new_settings[ $key ] = $value;
 | |
| 
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		// If our new array isn't empty, update the options
 | |
| 		if ( ! empty( $new_settings ) ) {
 | |
| 			$generate_new_typography_settings = wp_parse_args( $new_settings, $generate_settings );
 | |
| 			update_option( 'generate_settings', $generate_new_typography_settings );
 | |
| 		}
 | |
| 
 | |
| 		// All done, set an option so we don't have to do this again
 | |
| 		update_option( 'generate_update_premium_typography', 'true' );
 | |
| 	}
 | |
| }
 | |
| 
 | |
| if ( ! function_exists( 'generate_typography_convert_secondary_nav_values' ) ) {
 | |
| 	add_action( 'admin_init', 'generate_typography_convert_secondary_nav_values' );
 | |
| 	/**
 | |
| 	 * Take the old secondary navigation font value and strip it of variants
 | |
| 	 * This should only run once.
 | |
| 	 *
 | |
| 	 * @since 1.3.0
 | |
| 	 */
 | |
| 	function generate_typography_convert_secondary_nav_values() {
 | |
| 		// Bail if Secondary Nav isn't active
 | |
| 		if ( ! function_exists( 'generate_secondary_nav_get_defaults' ) ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// If we've done this before, bail
 | |
| 		if ( 'true' == get_option( 'generate_update_secondary_typography' ) ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Get all settings
 | |
| 		$generate_secondary_nav_settings = wp_parse_args(
 | |
| 			get_option( 'generate_secondary_nav_settings', array() ),
 | |
| 			generate_secondary_nav_get_defaults()
 | |
| 		);
 | |
| 
 | |
| 		// Get our secondary nav font family setting
 | |
| 		$value = $generate_secondary_nav_settings[ 'font_secondary_navigation' ];
 | |
| 
 | |
| 		// Create a new, empty array
 | |
| 		$new_settings = array();
 | |
| 
 | |
| 		// If our value has : in it, and isn't empty
 | |
| 		if ( strpos( $value, ':' ) !== false && ! empty( $value ) ) {
 | |
| 
 | |
| 			// Remove the : and anything past it
 | |
| 			$value = current( explode( ':', $value ) );
 | |
| 
 | |
| 			// Populate our new array with our new, clean value
 | |
| 			$new_settings[ 'font_secondary_navigation' ] = $value;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		// Update our options if our new array isn't empty
 | |
| 		if ( ! empty( $new_settings ) ) {
 | |
| 			$generate_new_typography_settings = wp_parse_args( $new_settings, $generate_secondary_nav_settings );
 | |
| 			update_option( 'generate_secondary_nav_settings', $generate_new_typography_settings );
 | |
| 		}
 | |
| 
 | |
| 		// All done, set an option so we don't go through this again
 | |
| 		update_option( 'generate_update_secondary_typography','true' );
 | |
| 	}
 | |
| }
 | |
| 
 | |
| if ( ! function_exists( 'generate_add_to_font_customizer_list' ) ) {
 | |
| 	add_filter( 'generate_typography_customize_list', 'generate_add_to_font_customizer_list' );
 | |
| 	/**
 | |
| 	 * This function makes sure your selected typography option exists in the Customizer list
 | |
| 	 * The list gets updated from time to time, which means some fonts might be replaced by others.
 | |
| 	 *
 | |
| 	 * @since 1.3.40
 | |
| 	 */
 | |
| 	function generate_add_to_font_customizer_list( $fonts ) {
 | |
| 		// Bail if we don't have our defaults
 | |
| 		if ( ! function_exists( 'generate_get_default_fonts' ) ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		$generate_settings = wp_parse_args(
 | |
| 			get_option( 'generate_settings', array() ),
 | |
| 			generate_get_default_fonts()
 | |
| 		);
 | |
| 
 | |
| 		$font_settings = array(
 | |
| 			'font_body',
 | |
| 			'font_top_bar',
 | |
| 			'font_site_title',
 | |
| 			'font_site_tagline',
 | |
| 			'font_navigation',
 | |
| 			'font_widget_title',
 | |
| 			'font_buttons',
 | |
| 			'font_heading_1',
 | |
| 			'font_heading_2',
 | |
| 			'font_heading_3',
 | |
| 			'font_heading_4',
 | |
| 			'font_heading_5',
 | |
| 			'font_heading_6',
 | |
| 			'font_footer',
 | |
| 		);
 | |
| 
 | |
| 		$all_fonts = false; // We'll get this later if we need it.
 | |
| 		$select_fonts = generate_get_all_google_fonts( apply_filters( 'generate_number_of_fonts', 200 ) );
 | |
| 
 | |
| 		foreach ( $font_settings as $setting ) {
 | |
| 			// If we don't have a setting, keep going
 | |
| 			if ( ! isset( $generate_settings[ $setting ] ) ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			$id = strtolower( str_replace( ' ', '_', $generate_settings[ $setting ] ) );
 | |
| 
 | |
| 			if ( array_key_exists( $id, $select_fonts ) || in_array( $generate_settings[ $setting ], generate_typography_default_fonts() ) ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			$variants = get_theme_mod( $setting . '_variants', array() );
 | |
| 			$category = get_theme_mod( $setting . '_category' );
 | |
| 
 | |
| 			if ( ! empty( $variants ) && ! is_array( $variants ) ) {
 | |
| 				$variants = explode( ',', $variants );
 | |
| 			}
 | |
| 
 | |
| 			if ( ! $variants ) {
 | |
| 				if ( ! $all_fonts ) {
 | |
| 					$all_fonts = generate_get_all_google_fonts();
 | |
| 				}
 | |
| 
 | |
| 				if ( array_key_exists( $id, $all_fonts ) ) {
 | |
| 					$variants = $all_fonts[ $id ]['variants'];
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			if ( ! $category ) {
 | |
| 				if ( ! $all_fonts ) {
 | |
| 					$all_fonts = generate_get_all_google_fonts();
 | |
| 				}
 | |
| 
 | |
| 				if ( array_key_exists( $id, $all_fonts ) ) {
 | |
| 					$category = $all_fonts[ $id ]['category'];
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			$fonts[ $id ] = array(
 | |
| 				'name' => $generate_settings[ $setting ],
 | |
| 				'variants' => $variants,
 | |
| 				'category' => $category ? $category : 'sans-serif',
 | |
| 			);
 | |
| 		}
 | |
| 
 | |
| 		if ( function_exists( 'generate_secondary_nav_get_defaults' ) ) {
 | |
| 			$secondary_nav_settings = wp_parse_args(
 | |
| 				get_option( 'generate_secondary_nav_settings', array() ),
 | |
| 				generate_secondary_nav_get_defaults()
 | |
| 			);
 | |
| 
 | |
| 			$secondary_nav_id = strtolower( str_replace( ' ', '_', $secondary_nav_settings[ 'font_secondary_navigation' ] ) );
 | |
| 
 | |
| 			if ( ! array_key_exists( $secondary_nav_id, $select_fonts ) && ! in_array( $secondary_nav_settings[ 'font_secondary_navigation' ], generate_typography_default_fonts() ) ) {
 | |
| 				$variants = get_theme_mod( 'font_secondary_navigation_variants', array() );
 | |
| 				$category = get_theme_mod( 'font_secondary_navigation_category' );
 | |
| 
 | |
| 				if ( ! empty( $variants ) && ! is_array( $variants ) ) {
 | |
| 					$variants = explode( ',', $variants );
 | |
| 				}
 | |
| 
 | |
| 				if ( ! $variants ) {
 | |
| 					if ( ! $all_fonts ) {
 | |
| 						$all_fonts = generate_get_all_google_fonts();
 | |
| 					}
 | |
| 
 | |
| 					if ( array_key_exists( $secondary_nav_id, $all_fonts ) ) {
 | |
| 						$variants = $all_fonts[ $secondary_nav_id ]['variants'];
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 				if ( ! $category ) {
 | |
| 					if ( ! $all_fonts ) {
 | |
| 						$all_fonts = generate_get_all_google_fonts();
 | |
| 					}
 | |
| 
 | |
| 					if ( array_key_exists( $secondary_nav_id, $all_fonts ) ) {
 | |
| 						$category = $all_fonts[ $secondary_nav_id ]['category'];
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 				$fonts[ $secondary_nav_id ] = array(
 | |
| 					'name' => $secondary_nav_settings[ 'font_secondary_navigation' ],
 | |
| 					'variants' => $variants,
 | |
| 					'category' => $category ? $category : 'sans-serif',
 | |
| 				);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return $fonts;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| if ( ! function_exists( 'generate_typography_set_font_data' ) ) {
 | |
| 	add_action( 'admin_init', 'generate_typography_set_font_data' );
 | |
| 	/**
 | |
| 	 * This function will check to see if your category and variants are saved
 | |
| 	 * If not, it will set them for you, and won't run again
 | |
| 	 *
 | |
| 	 * @since 1.2.90
 | |
| 	 */
 | |
| 	function generate_typography_set_font_data() {
 | |
| 		// Bail if we don't have our defaults
 | |
| 		if ( ! function_exists( 'generate_get_default_fonts' ) ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Get our defaults
 | |
| 		$defaults = generate_get_default_fonts();
 | |
| 
 | |
| 		// Get our settings
 | |
| 		$generate_settings = wp_parse_args(
 | |
| 			get_option( 'generate_settings', array() ),
 | |
| 			generate_get_default_fonts()
 | |
| 		);
 | |
| 
 | |
| 		// We need to loop through these settings
 | |
| 		$font_settings = array(
 | |
| 			'font_body',
 | |
| 			'font_site_title',
 | |
| 			'font_site_tagline',
 | |
| 			'font_navigation',
 | |
| 			'font_widget_title',
 | |
| 			'font_heading_1',
 | |
| 			'font_heading_2',
 | |
| 			'font_heading_3'
 | |
| 		);
 | |
| 
 | |
| 		// Add secondary navigation to the array last if it exists
 | |
| 		if ( function_exists( 'generate_secondary_nav_get_defaults' ) ) {
 | |
| 			$font_settings[ 'font_secondary_navigation' ] = 'font_secondary_navigation';
 | |
| 		}
 | |
| 
 | |
| 		// Start looping
 | |
| 		foreach( $font_settings as $setting ) {
 | |
| 
 | |
| 			// Change our variables for the secondary navigation - this will run last
 | |
| 			if ( function_exists( 'generate_secondary_nav_get_defaults' ) && 'font_secondary_navigation' == $setting ) {
 | |
| 				$generate_settings = wp_parse_args(
 | |
| 					get_option( 'generate_secondary_nav_settings', array() ),
 | |
| 					generate_secondary_nav_get_defaults()
 | |
| 				);
 | |
| 				$defaults = generate_secondary_nav_get_defaults();
 | |
| 			}
 | |
| 
 | |
| 			// We don't need to do this if we're using the default font, as these values have defaults already
 | |
| 			if ( $defaults[ $setting ] == $generate_settings[ $setting ] ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			// Don't need to continue if we're using a system font or our default font
 | |
| 			if ( in_array( $generate_settings[ $setting ], generate_typography_default_fonts() ) || 'Open Sans' == $generate_settings[ $setting ] ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			// Don't continue if our category and variants are already set
 | |
| 			if ( get_theme_mod( $setting . '_category' ) && get_theme_mod( $setting . '_variants' ) ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			// Get all of our fonts
 | |
| 			$fonts = generate_get_all_google_fonts();
 | |
| 
 | |
| 			// Get the ID from our font
 | |
| 			$id = strtolower( str_replace( ' ', '_', $generate_settings[ $setting ] ) );
 | |
| 
 | |
| 			// If the ID doesn't exist within our fonts, we can bail
 | |
| 			if ( ! array_key_exists( $id, $fonts ) ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			// Let's grab our category to go with our font
 | |
| 			$category = ! empty( $fonts[$id]['category'] ) ? $fonts[$id]['category'] : '';
 | |
| 
 | |
| 			// Grab all of the variants associated with our font
 | |
| 			$variants = $fonts[$id]['variants'];
 | |
| 
 | |
| 			// Loop through our variants and put them into an array, then turn them into a comma separated list
 | |
| 			$output = array();
 | |
| 			if ( $variants ) {
 | |
| 				foreach ( $variants as $variant ) {
 | |
| 					$output[] = $variant;
 | |
| 				}
 | |
| 
 | |
| 				$variants = implode( ',', $output );
 | |
| 			}
 | |
| 
 | |
| 			// Set our theme mods with our new settings
 | |
| 			if ( '' !== $category ) {
 | |
| 				set_theme_mod( $setting . '_category', $category );
 | |
| 			}
 | |
| 
 | |
| 			if ( '' !== $variants ) {
 | |
| 				set_theme_mod( $setting . '_variants', $variants );
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |