function ts_fab_shortcode($atts) { extract(shortcode_atts(array('authorid' => '', 'tabs' => '', 'avatar' => ''), $atts)); if ($authorid) { $authorid = absint($authorid); } else { return; } // List of allowed tabs $default_tabs = ts_fab_default_tabs(); // default tabs $additional_tabs = array_keys(ts_fab_additional_tabs()); // additional tabs $allowed_tabs = array_merge($default_tabs, $additional_tabs); // all tabs if ($tabs) { $selected_tabs = explode(',', $tabs); foreach ($selected_tabs as $selected_tab) { // Remove empty spaces $selected_tab = str_replace(' ', '', $selected_tab); // If tab name is one of allowed tab names, add it to $show_tabs array if (in_array($selected_tab, $allowed_tabs)) { $show_tabs[] = $selected_tab; } } } // Check if photo needs to be above text if ('above' == $avatar) { $float_attr = 'above'; } else { $float_attr = 'floated'; } // If no tabs are passed, use the ones set in Tabs Settings in plugin settings page if (!isset($show_tabs)) { $show_tabs = array_keys(ts_fab_get_tabs_settings(), 1); } $a = rand(100, 999); $b = rand(100, 999); $c = rand(100, 999); return ts_fab_construct_fab('shortcode-' . $a . '-' . $b . '-' . $c, $authorid, $show_tabs, $float_attr); }
/** * Construct Fanciest Author Box * Used as helper function, to generate Fanciest Author Box before or after posts, as shortcode, widget or template tag * * @since 1.0 */ function ts_fab_construct_fab($context = '', $authorid = '', $show_tabs = array('bio', 'twitter', 'facebook', 'googleplus', 'linkedin', 'latest_posts', 'custom')) { if ($authorid == '') { global $authordata; $author = $authordata; } else { $author = get_userdata($authorid); } $options = ts_fab_get_tabs_settings(); $display_options = ts_fab_get_display_settings(); if (isset($display_options['tabs_style']) && $display_options['tabs_style'] == 'icons') { $tabs_class = 'ts-fab-icons-only'; } else { $tabs_class = 'ts-fab-icons-text'; } // Set custom tab title, based on whether users can override it if (isset($options['custom_tab_override']) && $options['custom_tab_override'] == 1) { if (get_user_meta($author->ID, 'ts_fab_custom_tab_title', true)) { $custom_title = get_user_meta($author->ID, 'ts_fab_custom_tab_title', true); } elseif ($options['custom_tab_title'] != '') { $custom_title = $options['custom_tab_title']; } } elseif (isset($options['custom_tab_title'])) { $custom_title = $options['custom_tab_title']; } $ts_fab = '<!-- Fanciest Author Box v' . FAB_VERSION . ' -->'; $ts_fab .= '<div id="ts-fab-' . $context . '" class="ts-fab-wrapper ' . $tabs_class . '">'; // Do not show tabs list if there's only one tab if (count($show_tabs) > 1) { // Construct tabs list $ts_fab .= '<ul class="ts-fab-list">'; foreach ($show_tabs as $show_tab) { // Check if it's a default tab if (in_array($show_tab, ts_fab_default_tabs())) { switch ($show_tab) { case 'bio': $ts_fab .= '<li class="ts-fab-bio-link"><a href="#ts-fab-bio-' . $context . '">' . __('Bio', 'ts-fab') . '</a></li>'; break; case 'twitter': // Check if Twitter tab needs to be shown and user has entered Twitter details if (in_array('twitter', $show_tabs) && get_user_meta($author->ID, 'ts_fab_twitter', true)) { $ts_fab .= '<li class="ts-fab-twitter-link"><a href="#ts-fab-twitter-' . $context . '">Twitter</a></li>'; } break; case 'googleplus': // Check if Google+ tab needs to be shown and user has entered Google+ details if (in_array('googleplus', $show_tabs) && get_user_meta($author->ID, 'ts_fab_googleplus', true)) { add_action('wp_print_footer_scripts', 'ts_fab_googleplus_head'); $ts_fab .= '<li class="ts-fab-googleplus-link"><a href="#ts-fab-googleplus-' . $context . '">Google+</a></li>'; } break; case 'facebook': // Check if Facebook tab needs to be shown and user has entered Facebook details if (in_array('facebook', $show_tabs) && get_user_meta($author->ID, 'ts_fab_facebook', true)) { $ts_fab .= '<li class="ts-fab-facebook-link"><a href="#ts-fab-facebook-' . $context . '">Facebook</a></li>'; } break; case 'linkedin': // Check if LinkedIn tab needs to be shown and user has entered LinkedIn details if (in_array('linkedin', $show_tabs) && get_user_meta($author->ID, 'ts_fab_linkedin', true)) { $ts_fab .= '<li class="ts-fab-linkedin-link"><a href="#ts-fab-linkedin-' . $context . '">LinkedIn</a></li>'; } break; case 'latest_posts': $ts_fab .= '<li class="ts-fab-latest-posts-link"><a href="#ts-fab-latest-posts-' . $context . '">' . __('Latest Posts', 'ts-fab') . '</a></li>'; break; case 'custom': if ($options['custom'] == 1) { if (in_array('custom', $show_tabs)) { if (isset($custom_title)) { $ts_fab .= '<li class="ts-fab-custom-link"><a href="#ts-fab-custom-' . $context . '">' . strip_tags(stripslashes($custom_title)) . '</a></li>'; } } } break; } // end switch // else it's an additional tab } else { // Tabs added by themes or other plugins $additional_tabs = ts_fab_additional_tabs(); // Check if there are any additional tabs if (!empty($additional_tabs)) { foreach ($additional_tabs as $additional_tab_key => $additional_tab_value) { // Check if checkbox for this tab is checked if (isset($options[$additional_tab_key]) && $show_tab == $additional_tab_key) { // Check tab conditional function to determine whether tab should be shown for this user if (isset($additional_tab_value['conditional_callback'])) { // Sets a flag based on what conditional function returns $conditional_function_output = $additional_tab_value['conditional_callback']($author->ID); } // end conditional function check // Show tab if conditional function doesn't return false if (isset($conditional_function_output) && !$conditional_function_output == false) { $ts_fab .= '<li class="ts-fab-' . $additional_tab_key . '-link ts-fab-additional-link"><a href="#ts-fab-' . $additional_tab_key . '-' . $context . '">' . strip_tags(stripslashes($additional_tab_value['name'])) . '</a></li>'; } // End conditional flag check } // end check if option is checked } // end foreach } // end if } } // end foreach $ts_fab .= '</ul>'; } // End if only one tab check // Construct individual tabs $ts_fab .= '<div class="ts-fab-tabs">'; foreach ($show_tabs as $show_tab) { // Check if it's a default tab if (in_array($show_tab, ts_fab_default_tabs())) { switch ($show_tab) { case 'bio': $ts_fab .= ts_fab_show_bio($context, $author->ID); break; case 'twitter': // Check if Twitter tab needs to be shown and user has entered Twitter details if (get_user_meta($author->ID, 'ts_fab_twitter', true)) { $ts_fab .= ts_fab_show_twitter($context, $author->ID); } break; case 'facebook': // Check if Facebook tab needs to be shown and user has entered Facebook details if (get_user_meta($author->ID, 'ts_fab_facebook', true)) { $ts_fab .= ts_fab_show_facebook($context, $author->ID); } break; case 'googleplus': // Check if Google+ tab needs to be shown and user has entered Google+ details if (get_user_meta($author->ID, 'ts_fab_googleplus', true)) { $ts_fab .= ts_fab_show_googleplus($context, $author->ID); } break; case 'linkedin': // Check if LinkedIn tab needs to be shown and user has entered LinkedIn details if (get_user_meta($author->ID, 'ts_fab_linkedin', true)) { $ts_fab .= ts_fab_show_linkedin($context, $author->ID); } break; case 'latest_posts': $ts_fab .= ts_fab_show_latest_posts($context, $author->ID); break; case 'custom': $ts_fab .= ts_fab_show_custom($context, $author->ID); break; } // end switch // else, it's an additional tab } else { // Tabs added by themes or other plugins $additional_tabs = ts_fab_additional_tabs(); // Check if there are any additional tabs if (!empty($additional_tabs)) { foreach ($additional_tabs as $additional_tab_key => $additional_tab_value) { if ($show_tab == $additional_tab_key) { // Check tab conditional function to determine whether tab should be shown for this user if (isset($additional_tab_value['conditional_callback'])) { // Sets a flag based on what conditional function returns $conditional_function_output = $additional_tab_value['conditional_callback']($author->ID); } // end conditional function check // Show tab if conditional function doesn't return false if (isset($conditional_function_output) && !$conditional_function_output == false) { $ts_fab .= ' <div class="ts-fab-tab ts-fab-additional-tab" id="ts-fab-' . $additional_tab_key . '-' . $context . '">'; // Additional tab callback function $ts_fab .= $additional_tab_value['callback'](); $ts_fab .= '</div>'; } // End conditional flag check } } // end foreach } // end if } } // end foreach $ts_fab .= ' </div> </div>'; return $ts_fab; }