print_styles = $print_styles;
$this->print_extra_output = $print_extra_output;
//check if stylesheet exists...
$safe_name = avia_backend_safe_string($avia_superobject->base_data['prefix']);
if( get_option('avia_stylesheet_exists'.$safe_name) == 'true' ) $this->print_styles = false;
$this->get_style_wizard_additions($avia_superobject->option_page_data);
if($addaction)
{
add_action('wp_head',array(&$this, 'create_styles'),5);
add_action('wp_head',array(&$this, 'print_extra_output'),5);
add_action('wp_head',array(&$this, 'print_styles'),1000);
add_action('wp_footer',array(&$this, 'print_footer'),1000);
}
}
public function __destruct()
{
unset($this->print_styles);
unset($this->print_extra_output);
}
// gather styling wizard elements so the rules can be converted as well
function get_style_wizard_additions($option_page_data)
{
foreach($option_page_data as $data)
{
if($data['type'] == 'styling_wizard')
{
$this->stylewizardIDs[] = $data['id'];
$this->stylewizard = array_merge($this->stylewizard, $data['elements']);
}
}
}
function create_styles()
{
global $avia_config;
if(!isset($avia_config['font_stack'])) $avia_config['font_stack'] = "";
if(!isset($avia_config['style'])) return;
$avia_config['style'] = apply_filters('avia_style_filter',$avia_config['style']);
$this->rules = $avia_config['style'];
//default styling rules
if(is_array($this->rules))
{
foreach($this->rules as $rule)
{
$rule['value'] = str_replace('{{AVIA_BASE_URL}}', AVIA_BASE_URL, $rule['value']);
$rule['value'] = preg_replace('/(http|https):\/\//', '//', $rule['value']);
//check if a executing method was passed, if not simply put the string together based on the key and value array
if(isset($rule['key']) && method_exists($this, $rule['key']) && $rule['value'] != "")
{
$this->output .= $this->{$rule['key']}($rule)."\n";
}
else if($rule['value'] != "")
{
$this->output .= $rule['elements']."{\n".$rule['key'].":".$rule['value'].";\n}\n\n";
}
}
}
//css wizard styling rules
$this->create_wizard_styles();
//output inline css in head section or return the style code
if( !empty($this->output) )
{
if( !empty($this->print_styles) )
{
}
else
{
$return = $this->output;
}
}
if(!empty($return)) return $return;
}
function create_wizard_styles()
{
if(empty($this->stylewizardIDs)) return;
global $avia_config;
foreach($this->stylewizardIDs as $id)
{
$options = avia_get_option($id);
if(empty($options)) continue;
foreach($options as $style)
{
if(empty($this->stylewizard[$style['id']]['selector'])) continue;
//first of all we need to build the selector string
$selectorArray = $this->stylewizard[$style['id']]['selector'];
$sectionCheck = $this->stylewizard[$style['id']]['sections'];
foreach($selectorArray as $selector => $ruleset)
{
$temp_selector = "";
$rules = "";
$sectionActive = strpos($selector, '[sections]') !== false ? true : false;
//hover check
if(isset($style['hover_active']) && $style['hover_active'] != 'disabled')
{
$selector = str_replace("[hover]", ":hover", $selector);
}
else
{
$selector = str_replace("[hover]", "", $selector);
}
//if sections are enabled make sure that the selector string gets generated for each section
if($sectionActive && $sectionCheck && isset($avia_config['color_sets']))
{
//check if all color sections are selected. if so we dont need to loop several times but only once
$all_sets_selected = true;
$color_sets_to_iterate = $avia_config['color_sets'];
foreach($avia_config['color_sets'] as $key => $name)
{
if( empty($style[$key]) || (isset($style[$key]) && $style[$key] == 'disabled'))
{
$all_sets_selected = false;
}
}
if($all_sets_selected)
{
$color_sets_to_iterate = array('all_colors' => '');
}
foreach($color_sets_to_iterate as $key => $name)
{
if( (isset($style[$key]) && $style[$key] != 'disabled' ) || $key == 'all_colors')
{
if(!empty($temp_selector)) $temp_selector .= ", ";
$temp_selector .= str_replace("[sections]", ".".$key, $selector);
}
}
if(empty($temp_selector)) continue;
}
//apply modified rules to the selector
if(!empty($temp_selector)) $selector = $temp_selector;
//we got the selector stored in $selector, now we need to generate the rules
foreach($style as $key => $value)
{
if($value != "" && $value != "true" && $value != "disabled" && $key != "id")
{
if( is_array( $ruleset ) )
{
foreach($ruleset as $rule_key => $rule_val)
{
//if the $rule_val is an array we only apply the rules if the user selected value is the same as the first rule_val entry
if(is_array($rule_val))
{
if($rule_val[0] !== $value)
{
continue;
}
else
{
$rule_val = $rule_val[1];
}
}
if($rule_key == $key )
{
if(str_replace('_','-',$rule_key) == "font-family")
{
$font = explode(':',($value));
$value = $font[0];
}
$rules .= str_replace("%{$key}%", $value, $rule_val);
}
}
}
else
{
$key = str_replace('_','-',$key);
switch($key)
{
case "font-family":
$font = explode(':',($value));
$font_family = $font[0];
$font_size = isset($font[1]) ? $font[1] : "";
$this->add_google_font($font_family, $font_size);
$rules .= "font-family:'{$font_family}', 'Helvetica Neue', Helvetica, Arial, sans-serif;"; break;
default: $rules .= "{$key}:{$value};"; break;
}
}
}
}
if(!empty($rules))
{
$this->output .= $selector.'{'.$rules.'}';
}
}
}
}
}
function print_styles()
{
if(empty($this->print_styles)) return;
echo "\n\n";
echo "\n";
echo "\n\n\n";
}
function print_extra_output()
{
if($this->print_extra_output)
{
$this->link_google_font();
echo $this->extra_output;
}
}
function print_footer()
{
if(!empty($this->footer))
{
echo $this->footer;
}
}
function cufon($rule)
{
if(empty($this->footer)) $this->footer = "";
$rule_split = explode('__',$rule['value']);
if(!isset($rule_split[1])) $rule_split[1] = 1;
$this->footer .= "\n\n";
$this->footer .= "\n";
$this->footer .= "\n";
$this->footer .= "\n";
}
function google_webfont($rule)
{
global $avia_config;
//check if the font has a weight applied to it and extract it. eg: "Yanone Kaffeesatz:200"
$font_weight = "";
$get_google_font = true;
if(strpos($rule['value'], ":") !== false)
{
$data = explode(':',$rule['value']);
$rule['value'] = $data[0];
$font_weight = $data[1];
}
$rule_split = explode('__',$rule['value']);
if(!isset($rule_split[1])) $rule_split[1] = 1;
if(strpos($rule_split[0], 'websave') !== false)
{
$rule_split = explode(',',$rule_split[0]);
$rule_split = strtolower(" ".$rule_split[0]);
$rule_split = str_replace('"','',$rule_split);
$rule_split = str_replace("'",'',$rule_split);
$rule_split = str_replace("-websave",'',$rule_split);
$avia_config['font_stack'] .= $rule_split.'-websave';
$rule_split = array(str_replace( "-", " " , $rule_split ), 1);
$get_google_font = false;
}
if($get_google_font)
{
$this->add_google_font($rule_split[0], $font_weight);
if(!empty($font_weight) && strpos($font_weight,',') === false) { $font_weight = "font-weight:".$font_weight.";";} else { $font_weight = ""; }
}
$this->output .= $rule['elements']."{font-family:'".$rule_split[0]."', 'HelveticaNeue', 'Helvetica Neue', Helvetica, Arial, sans-serif;".$font_weight."}";
if($rule_split[1] !== 1 && $rule_split[1]) $this->output .= $rule['elements']."{font-size:".$rule_split[1]."em;}";
$avia_config['font_stack'] .= " ".strtolower( str_replace( " ", "_" , $rule_split[0] ))." ";
}
//add the font to the query string
function add_google_font($font_family, $font_weight = "")
{
if(!in_array($font_family.$font_weight, $this->used_fonts))
{
$this->used_fonts[] = $font_family.$font_weight;
if(!empty($this->google_fontlist)) $this->google_fontlist .= "%7C";
if(!empty($font_weight)) $font_weight = ":".$font_weight;
$this->google_fontlist .= str_replace(' ','+',$font_family).$font_weight;
}
}
//write the link tag with the $this->google_fontlist
function link_google_font()
{
if(empty($this->google_fontlist)) return;
$this->extra_output .= "\n\n";
$this->extra_output .= "google_fontlist)."' type='text/css' media='all'/> \n";
return $this->extra_output;
}
function direct_input($rule)
{
return $rule['value'];
}
function backgroundImage($rule)
{
return $rule['elements']."{\nbackground-image:url(".$rule['value'].");\n}\n\n";
}
}
}