/** * Draws an individual canvas given a specific location * id and app. The app isn't strictly necessary, but is * being kept for now for backwards compatability. * This method was private, but was made public to be accessed * by the shortcode static function in global_functions.php. * * @param string $id the location id for configuration * @param string $app the type of app * @param string $title the title of URL * @param string $link url * @param string $summary summary text for URL */ public static function canvas($id, $app, $title = NULL, $link = NULL, $summary = NULL) { global $post, $wp_query; $page_type = ShareaholicUtilities::page_type(); $is_list_page = $page_type == 'index' || $page_type == 'category'; $loop_start = did_action('loop_start'); $loop_end = did_action('loop_end'); $in_loop = $loop_start > $loop_end ? TRUE : FALSE; $link = trim($link); // Use the $post object to get the title, link, and summary only if the // title, link or summary is not provided AND one of the following is true: // - we are on a non list page // - we are in the wordpress loop if (trim($title) == NULL && (!$is_list_page || $in_loop)) { $title = htmlspecialchars($post->post_title, ENT_QUOTES); } if (trim($link) == NULL && (!$is_list_page || $in_loop)) { $link = get_permalink($post->ID); } if (trim($summary) == NULL && (!$is_list_page || $in_loop)) { $summary = htmlspecialchars(strip_tags(strip_shortcodes($post->post_excerpt)), ENT_QUOTES); $summary = ShareaholicUtilities::truncate_text($summary, 500); } $canvas = "<div class='shareaholic-canvas'\n data-app-id='{$id}'\n data-app='{$app}'\n data-title='{$title}'\n data-link='{$link}'\n data-summary='{$summary}'></div>"; return trim(preg_replace('/\\s+/', ' ', $canvas)); }