Editing: helper-social-media.php
<?php ###################################################################### # social icon builder ###################################################################### if(!function_exists('avia_social_media_icons')) { function avia_social_media_icons($args = array(), $echo = true, $post_data = array()) { $icons = new avia_social_media_icons($args, $post_data); if($echo) { echo $icons->html(); } else { return $icons->html(); } } } if(!class_exists('avia_social_media_icons')) { class avia_social_media_icons { var $args; var $post_data; var $icons = array(); var $html = ""; var $counter = 1; /* * constructor * initialize the variables necessary for all social media links */ function __construct($args = array(), $post_data = array()) { $default_arguments = array('outside'=>'ul', 'inside'=>'li', 'class' => 'social_bookmarks', 'append' => ''); $this->args = array_merge($default_arguments, $args); $this->post_data = $post_data; $this->icons = apply_filters( 'avia_filter_social_icons', avia_get_option('social_icons') ); } /* * function build_icon * builds the html string for a single item, with a few options for special items like rss feeds */ function build_icon($icon) { global $avia_config; //special cases switch($icon['social_icon']) { case 'rss': if(empty($icon['social_icon_link'])) $icon['social_icon_link'] = get_bloginfo('rss2_url'); break; case 'twitter': case 'dribbble': case 'vimeo': case 'behance': if(strpos($icon['social_icon_link'], 'http') === false && !empty($icon['social_icon_link'])) { $icon['social_icon_link'] = "http://".$icon['social_icon'].".com/".$icon['social_icon_link']."/"; } break; } if(empty($icon['social_icon_link'])) $icon['social_icon_link'] = "#"; $blank = "target='_blank'"; //dont add target blank to relative urls or urls to the same dmoain if(strpos($icon['social_icon_link'], 'http') === false || strpos($icon['social_icon_link'], home_url()) === 0) $blank = ""; $html = ""; $html .= "<".$this->args['inside']." class='".$this->args['class']."_".$icon['social_icon']." av-social-link-".$icon['social_icon']." social_icon_".$this->counter."'>"; $html .= "<a {$blank} href='".$icon['social_icon_link']."' ".av_icon_string($icon['social_icon'])." title='".ucfirst($icon['social_icon'])."'><span class='avia_hidden_link_text'>".ucfirst($icon['social_icon'])."</span></a>"; $html .= "</".$this->args['inside'].">"; return $html; } /* * function html * builds the html, based on the available icons */ function html() { if(!empty($this->icons)) { $this->html = "<".$this->args['outside']." class='noLightbox ".$this->args['class']." icon_count_".count($this->icons)."'>"; foreach ($this->icons as $icon) { if(!empty($icon['social_icon'])) { $this->html .= $this->build_icon($icon); $this->counter ++; } } $this->html .= $this->args['append']; $this->html .= "</".$this->args['outside'].">"; } return $this->html; } } } ###################################################################### # share link builder ###################################################################### if(!class_exists('avia_social_share_links')) { class avia_social_share_links { var $args; var $options; var $links = array(); var $html = ""; var $title = ""; var $counter = 0; /* * constructor * initialize the variables necessary for all social media links */ function __construct($args = array(), $options = false, $title = false) { $default_arguments = array ( 'facebook' => array("encode"=>true, "encode_urls"=>false, "pattern" => "http://www.facebook.com/sharer.php?u=[permalink]&t=[title]"), 'twitter' => array("encode"=>true, "encode_urls"=>false, "pattern" => "https://twitter.com/share?text=[title]&url=[shortlink]"), 'gplus' => array("encode"=>true, "encode_urls"=>false, "pattern" => "https://plus.google.com/share?url=[permalink]" , 'label' => __("Share on Google+",'avia_framework')), 'pinterest' => array("encode"=>true, "encode_urls"=>true, "pattern" => "http://pinterest.com/pin/create/button/?url=[permalink]&description=[title]&media=[thumbnail]"), 'linkedin' => array("encode"=>true, "encode_urls"=>false, "pattern" => "http://linkedin.com/shareArticle?mini=true&title=[title]&url=[permalink]"), 'tumblr' => array("encode"=>true, "encode_urls"=>true, "pattern" => "http://www.tumblr.com/share/link?url=[permalink]&name=[title]&description=[excerpt]"), 'vk' => array("encode"=>true, "encode_urls"=>false, "pattern" => "http://vk.com/share.php?url=[permalink]"), 'reddit' => array("encode"=>true, "encode_urls"=>false, "pattern" => "http://reddit.com/submit?url=[permalink]&title=[title]"), 'mail' => array("encode"=>true, "encode_urls"=>false, "pattern" => "mailto:?subject=[title]&body=[permalink]", 'label' => __("Share by Mail",'avia_framework') ), ); $this->args = apply_filters( 'avia_social_share_link_arguments', array_merge($default_arguments, $args) ); if(empty($options)) $options = avia_get_option(); $this->options = $options; $this->title = $title !== false? $title : __("Share this entry",'avia_framework'); $this->build_share_links(); } /* * filter social icons that are disabled in the backend. everything that is left will be displayed. * that way the user can hook into the "avia_social_share_link_arguments" filter above and add new social icons without the need to add a new backend option */ function build_share_links() { $thumb = wp_get_attachment_image_src( get_post_thumbnail_id(), 'masonry' ); $replace['permalink'] = !isset($this->post_data['permalink']) ? get_permalink() : $this->post_data['permalink']; $replace['title'] = !isset($this->post_data['title']) ? get_the_title() : $this->post_data['title']; $replace['excerpt'] = !isset($this->post_data['excerpt']) ? get_the_excerpt() : $this->post_data['excerpt']; $replace['shortlink'] = !isset($this->post_data['shortlink']) ? wp_get_shortlink() : $this->post_data['shortlink']; $replace['thumbnail'] = is_array($thumb) && isset($thumb[0]) ? $thumb[0] : ""; $replace['thumbnail'] = !isset($this->post_data['thumbnail']) ? $replace['thumbnail'] : $this->post_data['thumbnail']; $replace = apply_filters('avia_social_share_link_replace_values', $replace); $charset = get_bloginfo('charset'); foreach($this->args as $key => $share) { $share_key = 'share_'.$key; $url = $share['pattern']; //if the backend option is disabled skip to the next link. in any other case generate the share link if(isset($this->options[$share_key]) && $this->options[$share_key] == 'disabled' ) continue; foreach($replace as $replace_key => $replace_value) { if(!empty($share['encode']) && $replace_key != 'shortlink' && $replace_key != 'permalink') $replace_value = rawurlencode(html_entity_decode($replace_value, ENT_QUOTES, $charset)); if(!empty($share['encode_urls']) && ($replace_key == 'shortlink' || $replace_key == 'permalink')) $replace_value = rawurlencode(html_entity_decode($replace_value, ENT_QUOTES, $charset)); $url = str_replace("[{$replace_key}]", $replace_value, $url); } $this->args[$key]['url'] = $url; $this->counter ++; } } /* * function html * builds the html, based on the available urls */ function html() { global $avia_config; if($this->counter == 0) return; $this->html .= "<div class='av-share-box'>"; if($this->title) { $this->html .= "<h5 class='av-share-link-description'>"; $this->html .= apply_filters('avia_social_share_title', $this->title , $this->args); $this->html .= "</h5>"; } $this->html .= "<ul class='av-share-box-list noLightbox'>"; foreach($this->args as $key => $share) { if(empty($share['url'])) continue; $icon = isset($share['icon']) ? $share['icon'] : $key; $name = isset($share['label'])? $share['label']: __("Share on",'avia_framework'). " " .ucfirst($key); $blank = strpos($share['url'], 'mailto') !== false ? "" : "target='_blank'"; $this->html .= "<li class='av-share-link av-social-link-{$key}' >"; $this->html .= "<a {$blank} href='".$share['url']."' ".av_icon_string($icon)." title='' data-avia-related-tooltip='{$name}'><span class='avia_hidden_link_text'>{$name}</span></a>"; $this->html .= "</li>"; } $this->html .= "</ul>"; $this->html .= "</div>"; return $this->html; } } } if(!function_exists('avia_social_share_links')) { function avia_social_share_links($args = array(), $options = false, $title = false, $echo = true) { $icons = new avia_social_share_links($args, $options, $title); if($echo) { echo $icons->html(); } else { return $icons->html(); } } }
Save
Back