laipower/wp-content/plugins/gp-premium/typography/functions/migration.php

360 lines
10 KiB
PHP
Raw Normal View History

2020-04-07 13:03:04 +00:00
<?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 );
}
}
}
}