trAvis - MANAGER
Edit File: social-share.php
<?php namespace BaristaEdge\Modules\Shortcodes\SocialShare; use BaristaEdge\Modules\Shortcodes\Lib\ShortcodeInterface; class SocialShare implements ShortcodeInterface { private $base; private $socialNetworks; function __construct() { $this->base = 'edgtf_social_share'; $this->socialNetworks = array( 'facebook', 'twitter', 'google_plus', 'linkedin', 'tumblr', 'pinterest', 'vk' ); add_action('vc_before_init', array($this, 'vcMap')); } /** * Returns base for shortcode * @return string */ public function getBase() { return $this->base; } public function getSocialNetworks() { return $this->socialNetworks; } /** * Maps shortcode to Visual Composer. Hooked on vc_before_init */ public function vcMap() { vc_map(array( 'name' => esc_html__('Edge Social Share', 'baristawp'), 'base' => $this->getBase(), 'icon' => 'icon-wpb-social-share extended-custom-icon', 'category' => esc_html__('by EDGE', 'baristawp'), 'allowed_container_element' => 'vc_row', 'params' => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Extra class name', 'baristawp' ), 'param_name' => 'el_class', 'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'baristawp' ) ) ) )); } /** * Renders shortcodes HTML * * @param $atts array of shortcode params * @param $content string shortcode content * @return string */ public function render($atts, $content = null) { $args = array( 'type' => 'list', 'icon_type' => 'normal' ); //Shortcode Parameters $params = shortcode_atts($args, $atts); //Is social share enabled $params['enable_social_share'] = (barista_edge_options()->getOptionValue('enable_social_share') == 'yes') ? true : false; //Is social share enabled for post type $post_type = get_post_type(); $params['enabled'] = (barista_edge_options()->getOptionValue('enable_social_share_on_'.$post_type) == 'yes') ? true : false; //Social Networks Data $params['networks'] = $this->getSocialNetworksParams($params); $html = ''; if ($params['enable_social_share']) { if ($params['enabled']) { $html .= barista_edge_get_shortcode_module_template_part('templates/' . $params['type'], 'socialshare', '', $params); } } return $html; } /** * Get Social Networks data to display * @return array */ private function getSocialNetworksParams($params) { $networks = array(); $icons_type = $params['icon_type']; foreach ($this->socialNetworks as $net) { $html = ''; if (barista_edge_options()->getOptionValue('enable_'.$net.'_share') == 'yes') { $image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full'); $params = array( 'name' => $net ); $params['link'] = $this->getSocialNetworkShareLink($net, $image); $params['icon'] = $this->getSocialNetworkIcon($net, $icons_type); $params['custom_icon'] = (barista_edge_options()->getOptionValue($net.'_icon')) ? barista_edge_options()->getOptionValue($net.'_icon') : ''; $html = barista_edge_get_shortcode_module_template_part('templates/parts/network', 'socialshare', '', $params); } $networks[$net] = $html; } return $networks; } /** * Get share link for networks * * @param $net * @param $image * @return string */ private function getSocialNetworkShareLink($net, $image) { switch ($net) { case 'facebook': if(wp_is_mobile()) { $link = 'window.open(\'http://m.facebook.com/sharer.php?u=' . urlencode(get_permalink()) .'\');'; } else { $link = 'window.open(\'http://www.facebook.com/sharer.php?s=100&p[title]=' . urlencode(barista_edge_addslashes(get_the_title())) . '&p[url]=' . urlencode(get_permalink()) . '&p[images][0]=' . $image[0] . '&p[summary]=' . urlencode(barista_edge_addslashes(get_the_excerpt())) . '\', \'sharer\', \'toolbar=0,status=0,width=620,height=280\');'; } break; case 'twitter': $count_char = (isset($_SERVER['https'])) ? 23 : 22; $twitter_via = (barista_edge_options()->getOptionValue('twitter_via') !== '') ? ' via ' . barista_edge_options()->getOptionValue('twitter_via') . ' ' : ''; if(wp_is_mobile()) { $link = 'window.open(\'https://twitter.com/intent/tweet?text=' . urlencode(barista_edge_the_excerpt_max_charlength($count_char) . $twitter_via) . get_permalink() . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');'; } else { $link = 'window.open(\'http://twitter.com/home?status=' . urlencode(barista_edge_the_excerpt_max_charlength($count_char) . $twitter_via) . get_permalink() . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');'; } break; case 'google_plus': $link = 'popUp=window.open(\'https://plus.google.com/share?url=' . urlencode(get_permalink()) . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');popUp.focus();return false;'; break; case 'linkedin': $link = 'popUp=window.open(\'http://linkedin.com/shareArticle?mini=true&url=' . urlencode(get_permalink()) . '&title=' . urlencode(get_the_title()) . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');popUp.focus();return false;'; break; case 'tumblr': $link = 'popUp=window.open(\'http://www.tumblr.com/share/link?url=' . urlencode(get_permalink()) . '&name=' . urlencode(get_the_title()) . '&description=' . urlencode(get_the_excerpt()) . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');popUp.focus();return false;'; break; case 'pinterest': $link = 'popUp=window.open(\'http://pinterest.com/pin/create/button/?url=' . urlencode(get_permalink()) . '&description=' . barista_edge_addslashes(get_the_title()) . '&media=' . urlencode($image[0]) . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');popUp.focus();return false;'; break; case 'vk': $link = 'popUp=window.open(\'http://vkontakte.ru/share.php?url=' . urlencode(get_permalink()) . '&title=' . urlencode(get_the_title()) . '&description=' . urlencode(get_the_excerpt()) . '&image=' . urlencode($image[0]) . '\', \'popupwindow\', \'scrollbars=yes,width=800,height=400\');popUp.focus();return false;'; break; default: $link = ''; } return $link; } private function getSocialNetworkIcon($net, $type) { switch ($net) { case 'facebook': $icon = ( $type == 'circle' ) ? 'social_facebook_circle' : 'edgtf-icon-ico-moon icomoon-icon-facebook'; break; case 'twitter': $icon = ( $type == 'circle' ) ? 'social_twitter_circle' : 'edgtf-icon-ico-moon icomoon-icon-twitter'; break; case 'google_plus': $icon = ( $type == 'circle' ) ? 'social_googleplus_circle' : 'edgtf-icon-ico-moon icomoon-icon-google-plus'; break; case 'linkedin': $icon = ( $type == 'circle' ) ? 'social_linkedin_circle' : 'edgtf-icon-ico-moon icomoon-icon-linkedin2'; break; case 'tumblr': $icon = ( $type == 'circle' ) ? 'social_tumblr_circle' : 'edgtf-icon-ico-moon icomoon-icon-tumblr'; break; case 'pinterest': $icon = ( $type == 'circle' ) ? 'social_pinterest_circle' : 'edgtf-icon-ico-moon icomoon-icon-pinterest'; break; case 'vk': $icon = 'fa fa-vk'; break; default: $icon = ''; } return $icon; } }