/** * The class constructor. * * @var string the setting ID. * @var string theme_mod / option * @var array an array of arrays of the output arguments. * @var mixed a callable function. */ public static function css($setting = '', $type = 'theme_mod', $output = array(), $callback = '', $return_array = false) { // No need to proceed any further if we don't have the required arguments. if ('' == $setting || empty($output)) { return; } self::$settings = $setting; self::$type = $type; self::$output = Kirki_Field::sanitize_output(array('output' => $output)); self::$value = self::get_value(); self::$callback = $callback; return true === $return_array ? self::styles() : self::styles_parse(self::add_prefixes(self::styles())); }
/** * loop through all fields and create an array of style definitions */ public function loop_controls() { $fields = Kirki::$fields; $css = array(); // Early exit if no fields are found. if (empty($fields)) { return; } foreach ($fields as $field) { // Only continue if $field['output'] is set if (isset($field['output']) && 'background' != $field['type']) { $css = array_merge_recursive($css, Kirki_Output::css(Kirki_Field::sanitize_settings_raw($field), Kirki_Field::sanitize_type($field), Kirki_Field::sanitize_output($field), isset($field['output']['callback']) ? $field['output']['callback'] : '', true)); } } return Kirki_Output::styles_parse(Kirki_Output::add_prefixes($css)); }
public function test_sanitize_output() { $this->assertEquals('foo', Kirki_Field::sanitize_output(array('output' => 'foo'))); $this->assertEquals(array(array('element' => 'body > #main', 'property' => 'font-family', 'units' => '', 'media_query' => 'global', 'sanitize_callback' => null)), Kirki_Field::sanitize_output(array('output' => array('element' => 'body > #main', 'property' => 'font-family')))); $this->assertEquals(array(array('element' => 'body > #main', 'property' => 'font-size', 'units' => 'px !important', 'media_query' => '@media (min-width: 700px) and (orientation: landscape)', 'sanitize_callback' => null)), Kirki_Field::sanitize_output(array('output' => array(array('element' => 'body > #main', 'property' => 'font-size', 'units' => 'px !important', 'prefix' => '@media (min-width: 700px) and (orientation: landscape) {', 'suffix' => '}'))))); }
public function google_link() { // Get the array of fields $fields = Kirki::$fields; // Early exit if no fields are found. if (empty($fields)) { return; } $fonts = array(); foreach ($fields as $field) { // Sanitize the field's output & settings_raw items. $field['output'] = Kirki_Field::sanitize_output($field); $field['settings_raw'] = Kirki_Field::sanitize_settings_raw($field); // Make sure output is properly formatted if (isset($field['output']) && is_array($field['output'])) { foreach ($field['output'] as $output) { if (in_array($output['property'], array('font-family', 'font-weight', 'font-subset'))) { // The value of this control $value = Kirki::get_option($field['settings_raw']); if ('font-family' == $output['property']) { // Add the font-family to the array $fonts[]['font-family'] = $value; } else { if ('font-weight' == $output['property']) { // Add font-weight to the array $fonts[]['font-weight'] = $value; } else { if ('font-subset' == $output['property']) { // add font subsets to the array $fonts[]['subsets'] = $value; } } } } } } } foreach ($fonts as $font) { // Do we have font-families? if (isset($font['font-family'])) { $font_families = !isset($font_families) ? array() : $font_families; $font_families[] = $font['font-family']; if (Kirki_Toolkit::fonts()->is_google_font($font['font-family'])) { $has_google_font = true; } } // Do we have font-weights? if (isset($font['font-weight'])) { $font_weights = !isset($font_weights) ? array() : $font_weights; $font_weights[] = $font['font-weight']; } // Do we have font-subsets? if (isset($font['subsets'])) { $font_subsets = !isset($font_subsets) ? array() : $font_subsets; $font_subsets[] = $font['subsets']; } } // Make sure there are no empty values and define defaults. $font_families = !isset($font_families) || empty($font_families) ? false : $font_families; $font_weights = !isset($font_weights) || empty($font_weights) ? '400' : $font_weights; $font_subsets = !isset($font_subsets) || empty($font_subsets) ? 'all' : $font_subsets; if (!isset($has_google_font) || !$has_google_font) { $font_families = false; } // Return the font URL. return $font_families ? Kirki_Toolkit::fonts()->get_google_font_uri($font_families, $font_weights, $font_subsets) : false; }