google_font_queue[] = $font; } function get_google_font_queue_parsed() { $font_string = ""; $numItems = count($this->google_font_queue); $i = 0; foreach ($this->google_font_queue as $font) { $font_string .= str_replace(' ', '+', $font); if (++$i != $numItems) { $font_string .= "|"; } } return $font_string; } function is_google_font($font) { return ($font == "") ? false : !(in_array($font, self::$cfonts_list)); } function get_cfonts() { $cfonts = array(); foreach (self::$cfonts_list as $font) { $cfonts[] = array( 'name' => $font, 'subsets' => array() ); } return apply_filters('bmatters_font_customizer_cfonts', $cfonts); } function get_gfonts($what = null) { global $wp_filesystem; //checks if transient exists or has expired if (false == get_transient('bmatters_gfonts')) { $gfont_raw = $wp_filesystem->get_contents(get_template_directory() . "/assets/fonts/webfonts.json"); error_log($gfont_raw); if ($gfont_raw === false) { $gfont_raw = wp_remote_fopen(dirname(dirname(__FILE__)) . "/../../assets/fonts/webfonts.json"); } $gfonts_decoded = json_decode($gfont_raw, true); set_transient('bmatters_gfonts', $gfonts_decoded, 60 * 60 * 24 * 30); } else { $gfonts_decoded = get_transient('bmatters_gfonts'); } $gfonts = array(); $subsets = array(); $subsets['all-subsets'] = sprintf('%1$s ( %2$s %3$s )', __('All subsets', 'beautymatters'), count($gfonts_decoded['items']) + count($this->get_cfonts()), __('fonts', 'beautymatters')); $gfonts[] = array(); foreach ($gfonts_decoded['items'] as $font) { $gfonts_variants = array(); foreach ($font['variants'] as $variant) { $name = str_replace(' ', '+', $font['family']); $gfonts_variants[] = array( 'name' => $name . ':' . $variant, 'subsets' => $font['subsets'] ); } //generates subset list : subset => font number foreach ($font['subsets'] as $sub) { $subsets[$sub] = isset($subsets[$sub]) ? $subsets[$sub] + 1 : 1; } $gfonts[] = array("name" => $font['family'], 'parsed' => $gfonts_variants); } //finalizes the subset array foreach ($subsets as $subset => $font_number) { if ('all-subsets' == $subset) continue; $subsets[$subset] = sprintf('%1$s ( %2$s %3$s )', $subset, $font_number, __('fonts', 'beautymatters') ); } return ('subsets' == $what) ? apply_filters('bmatters_font_customizer_gfonts_subsets ', $subsets) : apply_filters('bmatters_font_customizer_gfonts', $gfonts); } function get_font_list() { return array_merge($this->get_cfonts(), $this->get_gfonts('font')); } }