'', 'icon_colors' => '', 'box_colors' => '', ); /** * Initiate the class */ public function __construct() { add_filter( 'fusion_attr_social-icons-class-social-networks', array( $this, 'social_networks_attr' ) ); add_filter( 'fusion_attr_social-icons-class-icon', array( $this, 'icon_attr' ) ); } /** * Renders all soical icons not belonging to shortcodes * * @since 3.5.0 * @param array $args Holding all necessarry data for social icons * @return string The HTML mark up for social icons, incl. wrapping container */ public function render_social_icons( $args ) { global $smof_data; $this->args = $args; if( isset( $this->args['sharingbox'] ) && $this->args['sharingbox'] == 'yes' ) { $social_networks = $this->get_sharingbox_social_links_array( $this->args ); } elseif( isset( $this->args['authorpage'] ) && $this->args['authorpage'] == 'yes' ) { $social_networks = $this->get_authorpage_social_links_array( $this->args ); } else { $social_networks = $this->get_social_links_array(); } /*if( ! array_key_exists( 'custom', $smof_data['social_icon_ordering'] ) ) { $smof_data['social_icon_ordering']['custom'] = array(); }*/ //$social_networks = $this->order_array_like_array( $social_networks, $smof_data['social_icon_ordering']['custom'] ); // if( isset( $smof_data['social_sorter'] ) && $smof_data['social_sorter'] ) { $order = $smof_data['social_sorter']; $ordered_array = explode(',', $order); if( isset( $ordered_array ) && $ordered_array && is_array( $ordered_array ) ) { $social_networks_old = $social_networks; $social_networks = array(); foreach( $ordered_array as $key => $field_order ) { $field_order_number = str_replace( 'social_sorter_', '', $field_order ); $find_the_field = $smof_data['social_sorter_' . $field_order_number]; $field_name = str_replace( '_link', '', $smof_data['social_sorter_' . $field_order_number] ); if( $field_name == 'google' ) { $field_name = 'googleplus'; } elseif($field_name == 'email' ) { $field_name = 'mail'; } if( ! isset( $social_networks_old[$field_name] ) ) { continue; } $social_networks[$field_name] = $social_networks_old[$field_name]; } } } if( isset( $social_networks_old['custom'] ) && $social_networks_old['custom'] ) { $social_networks['custom'] = $social_networks_old['custom']; } $icon_colors = explode( '|', $this->args['icon_colors'] ); $num_of_icon_colors = count( $icon_colors ); $box_colors = explode( '|', $this->args['box_colors'] ); $num_of_box_colors = count( $box_colors ); $html = $icons = ''; for( $i = 0; $i < count( $social_networks ); $i++ ) { if( $num_of_icon_colors == 1 ) { $icon_colors[$i] = $icon_colors[0]; } if( $num_of_box_colors == 1 ) { $box_colors[$i] = $box_colors[0]; } } $i = 0; foreach( $social_networks as $network => $link ) { $custom = ''; if( $network == 'custom' ) { $custom = sprintf( '%s', $smof_data['custom_icon_image'], $smof_data['custom_icon_name'] ); $network = 'custom_' . $smof_data['custom_icon_name']; } $icon_options = array( 'social_network' => $network, 'social_link' => $link, ); if( isset( $icon_colors[$i] ) && $icon_colors[$i] ) { $icon_options['icon_color'] = $icon_colors[$i]; } else { $icon_options['icon_color'] = ''; } if( isset( $box_colors[$i] ) && $box_colors[$i] ) { $icon_options['box_color'] = $box_colors[$i]; } else { $icon_options['box_color'] = ''; } $icons .= sprintf( '%s', fusion_attr( 'social-icons-class-icon', $icon_options ), $custom ); $i++; } if( $icons ) { if( isset( $this->args['position'] ) && ( $this->args['position'] == 'header' || $this->args['position'] == 'footer' ) ) { $html = sprintf( '
%s
', fusion_attr( 'social-icons-class-social-networks' ), $icons ); } else { $html = sprintf( '
%s
', fusion_attr( 'social-icons-class-social-networks' ), $icons ); } } return $html; } function social_networks_attr() { $attr['class'] = 'fusion-social-networks'; if( $this->args['icon_boxed'] == 'Yes' ) { $attr['class'] .= ' boxed-icons'; } return $attr; } function icon_attr( $args ) { global $smof_data; $attr = array(); $attr['class'] = ''; $attr['style'] = ''; if( substr( $args['social_network'], 0, 7 ) === 'custom_' ) { $attr['class'] .= 'custom '; $tooltip = str_replace( 'custom_', '', $args['social_network'] ); $args['social_network'] = strtolower( $tooltip ); } else { $tooltip = ucfirst( $args['social_network'] ); } $attr['class'] .= sprintf( 'fusion-social-network-icon fusion-tooltip fusion-%s fusionicon-%s', $args['social_network'], $args['social_network'] ); $link = $args['social_link']; if( $this->args['linktarget'] ) { $attr['target'] = '_blank'; } if( $args['social_network'] == 'mail' ) { $link = 'mailto:' . str_replace( 'mailto:', '', $args['social_link'] ); $attr['target'] = '_self'; } $attr['href'] = $link; if( $smof_data['nofollow_social_links'] ) { $attr['rel'] = 'nofollow'; } if( $args['icon_color'] ) { $attr['style'] = sprintf( 'color:%s;', $args['icon_color'] ); } if( strtolower( $this->args['icon_boxed'] ) == 'yes' && $args['box_color'] ) { $attr['style'] .= sprintf( 'background-color:%s;border-color:%s;', $args['box_color'], $args['box_color'] ); } if( strtolower( $this->args['icon_boxed'] ) == 'yes' && $this->args['icon_boxed_radius'] || $this->args['icon_boxed_radius'] === '0' ) { if( $this->args['icon_boxed_radius'] == 'round' ) { $this->args['icon_boxed_radius'] = '50%'; } $attr['style'] .= sprintf( 'border-radius:%s;', $this->args['icon_boxed_radius'] ); } if( strtolower( $this->args['tooltip_placement'] ) != 'none' ) { $attr['data-placement'] = strtolower( $this->args['tooltip_placement'] ); if( $tooltip == 'Googleplus' ) { $tooltip = 'Google+'; } $attr['data-title'] = $tooltip; $attr['data-toggle'] = 'tooltip'; } $attr['title'] = $tooltip; return $attr; } /** * Sets up the array for social links that don't belong to sharing box. * * @since 3.5.0 * @return array The social links array containing the social media and links to them. */ function get_social_links_array() { global $smof_data; $social_links_array = array(); if( isset( $smof_data['facebook_link'] ) && $smof_data['facebook_link'] ) { $social_links_array['facebook'] = $smof_data['facebook_link']; } if( isset( $smof_data['twitter_link'] ) && $smof_data['twitter_link'] ) { $social_links_array['twitter'] = $smof_data['twitter_link']; } if( isset( $smof_data['linkedin_link'] ) && $smof_data['linkedin_link'] ) { $social_links_array['linkedin'] = $smof_data['linkedin_link']; } if( isset( $smof_data['dribbble_link'] ) && $smof_data['dribbble_link'] ) { $social_links_array['dribbble'] = $smof_data['dribbble_link']; } if( isset( $smof_data['rss_link'] ) && $smof_data['rss_link'] ) { $social_links_array['rss'] = $smof_data['rss_link']; } if( isset( $smof_data['youtube_link'] ) && $smof_data['youtube_link'] ) { $social_links_array['youtube'] = $smof_data['youtube_link']; } if( isset( $smof_data['instagram_link'] ) && $smof_data['instagram_link'] ) { $social_links_array['instagram'] = $smof_data['instagram_link']; } if( isset( $smof_data['pinterest_link'] ) && $smof_data['pinterest_link'] ) { $social_links_array['pinterest'] = $smof_data['pinterest_link']; } if( isset( $smof_data['flickr_link'] ) && $smof_data['flickr_link'] ) { $social_links_array['flickr'] = $smof_data['flickr_link']; } if( isset( $smof_data['vimeo_link'] ) && $smof_data['vimeo_link'] ) { $social_links_array['vimeo'] = $smof_data['vimeo_link']; } if( isset( $smof_data['tumblr_link'] ) && $smof_data['tumblr_link'] ) { $social_links_array['tumblr'] = $smof_data['tumblr_link']; } if( isset( $smof_data['google_link'] ) && $smof_data['google_link'] ) { $social_links_array['googleplus'] = $smof_data['google_link']; } if( isset( $smof_data['digg_link'] ) && $smof_data['digg_link'] ) { $social_links_array['digg'] = $smof_data['digg_link']; } if( isset( $smof_data['blogger_link'] ) && $smof_data['blogger_link'] ) { $social_links_array['blogger'] = $smof_data['blogger_link']; } if( isset( $smof_data['skype_link'] ) && $smof_data['skype_link'] ) { $social_links_array['skype'] = $smof_data['skype_link']; } if( isset( $smof_data['myspace_link'] ) && $smof_data['myspace_link'] ) { $social_links_array['myspace'] = $smof_data['myspace_link']; } if( isset( $smof_data['deviantart_link'] ) && $smof_data['deviantart_link'] ) { $social_links_array['deviantart'] = $smof_data['deviantart_link']; } if( isset( $smof_data['yahoo_link'] ) && $smof_data['yahoo_link'] ) { $social_links_array['yahoo'] = $smof_data['yahoo_link']; } if( isset( $smof_data['reddit_link'] ) && $smof_data['reddit_link'] ) { $social_links_array['reddit'] = $smof_data['reddit_link']; } if( isset( $smof_data['forrst_link'] ) && $smof_data['forrst_link'] ) { $social_links_array['forrst'] = $smof_data['forrst_link']; } if( isset( $smof_data['paypal_link'] ) && $smof_data['paypal_link'] ) { $social_links_array['paypal'] = $smof_data['paypal_link']; } if( isset( $smof_data['dropbox_link'] ) && $smof_data['dropbox_link'] ) { $social_links_array['dropbox'] = $smof_data['dropbox_link']; } if( isset( $smof_data['soundcloud_link'] ) && $smof_data['soundcloud_link'] ) { $social_links_array['soundcloud'] = $smof_data['soundcloud_link']; } if( isset( $smof_data['vk_link'] ) && $smof_data['vk_link'] ) { $social_links_array['vk'] = $smof_data['vk_link']; } if( isset( $smof_data['email_link'] ) && $smof_data['email_link'] ) { $social_links_array['mail'] = $smof_data['email_link']; } if( $smof_data['custom_icon_name'] && $smof_data['custom_icon_image'] && $smof_data['custom_icon_link'] ) { $social_links_array['custom'] = $smof_data['custom_icon_link']; } return $social_links_array; } /** * Set up the array for sharing box social networks. * * @since 3.5.0 * @param array $args Holding all necessarry data for social icons * @return array The social links array containing the social media and links to them. */ function get_sharingbox_social_links_array( $args ) { global $smof_data; $social_links_array = array(); if( $smof_data['sharing_facebook'] ) { $soical_link = 'http://www.facebook.com/sharer.php?m2w&s=100&p[url]=' . $args['link'] . '&p[images][0]=http://www.gravatar.com/avatar/2f8ec4a9ad7a39534f764d749e001046.png&p[title]=' . rawurlencode( $args['title'] ); $social_links_array['facebook'] = $soical_link; } if( $smof_data['sharing_twitter'] ) { $soical_link = 'https://twitter.com/share?text=' . rawurlencode( $args['title'] ) . '&url=' . rawurlencode( $args['link'] ); $social_links_array['twitter'] = $soical_link; } if( $smof_data['sharing_linkedin'] ) { $soical_link = 'http://linkedin.com/shareArticle?mini=true&url=' . $args['link'] . '&title=' . rawurlencode( $args['title'] ); $social_links_array['linkedin'] = $soical_link; } if( $smof_data['sharing_reddit'] ) { $soical_link = 'http://reddit.com/submit?url=' . $args['link'] . '&title=' . rawurlencode( $args['title'] ); $social_links_array['reddit'] = $soical_link; } if( $smof_data['sharing_tumblr'] ) { $soical_link = 'http://www.tumblr.com/share/link?url=' . rawurlencode( $args['link'] ) . '&name=' . rawurlencode( $args['title'] ) .'&description=' . rawurlencode( $args['description'] ); $social_links_array['tumblr'] = $soical_link; } if( $smof_data['sharing_google'] ) { $soical_link = 'https://plus.google.com/share?url=' . $args['link'] . '" onclick="javascript:window.open(this.href,\'\', \'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600\');return false;'; $social_links_array['googleplus'] = $soical_link; } if( $smof_data['sharing_pinterest'] ) { $soical_link = 'http://pinterest.com/pin/create/button/?url=' . urlencode( $args['link'] ) . '&description=' . rawurlencode( $args['description'] ) . '&media=' . rawurlencode( $args['pinterest_image'] ); $social_links_array['pinterest'] = $soical_link; } if( $smof_data['sharing_vk'] ) { $soical_link = sprintf( 'http://vkontakte.ru/share.php?url=%s&title=%s&description=%s', rawurlencode( $args['link'] ), rawurlencode( $args['title'] ), rawurlencode( $args['description'] ) ); $social_links_array['vk'] = $soical_link; } if( $smof_data['sharing_email'] ) { $soical_link = 'mailto:?subject=' . $args['title'] . '&body=' . $args['link']; $social_links_array['mail'] = $soical_link; } return $social_links_array; } /** * Set up the array for author page social networks. * * @since 3.5.0 * @param array $args Holding all necessarry data for social icons * @return array The social links array containing the social media and links to them. */ function get_authorpage_social_links_array( $args ) { global $smof_data; $social_links_array = array(); if( get_the_author_meta( 'author_facebook', $args['author_id'] ) ) { $social_links_array['facebook'] = get_the_author_meta( 'author_facebook', $args['author_id'] ); } if( get_the_author_meta( 'author_twitter', $args['author_id'] ) ) { $social_links_array['twitter'] = get_the_author_meta( 'author_twitter', $args['author_id'] ); } if( get_the_author_meta( 'author_linkedin', $args['author_id'] ) ) { $social_links_array['linkedin'] = get_the_author_meta( 'author_linkedin', $args['author_id'] ); } if( get_the_author_meta( 'author_dribble', $args['author_id'] ) ) { $social_links_array['dribbble'] = get_the_author_meta( 'author_dribble', $args['author_id'] ); } if( get_the_author_meta( 'author_gplus', $args['author_id'] ) ) { $social_links_array['googleplus'] = get_the_author_meta( 'author_gplus', $args['author_id'] ); } if( get_the_author_meta( 'email', $args['author_id'] ) ) { $social_links_array['mail'] = 'mailto:' . get_the_author_meta( 'email', $args['author_id'] ); } return $social_links_array; } /** * Reorder a given array by the indices of another given array. * * @since 3.5.0 * @param array $to_be_ordered The array that will be reordered. * @return array $order_like The array that gives the ordering structure for $to_be_ordered. */ function order_array_like_array( Array $to_be_ordered, Array $order_like ) { $ordered = array(); return $ordered; } } }