function display_cff($atts) { //Style options $options = get_option('cff_style_settings'); //Create the types string to set as shortcode default if ($options['cff_show_links_type']) { $type_string .= 'links,'; } if ($options['cff_show_event_type']) { $type_string .= 'events,'; } if ($options['cff_show_video_type']) { $type_string .= 'videos,'; } if ($options['cff_show_photos_type']) { $type_string .= 'photos,'; } if ($options['cff_show_status_type']) { $type_string .= 'statuses,'; } //Create the types string to set as shortcode default if ($options['cff_show_text']) { $include_string .= 'text,'; } if ($options['cff_show_desc']) { $include_string .= 'desc,'; } if ($options['cff_show_shared_links']) { $include_string .= 'sharedlinks,'; } if ($options['cff_show_date']) { $include_string .= 'date,'; } if ($options['cff_show_media']) { $include_string .= 'media,'; } if ($options['cff_show_event_title']) { $include_string .= 'eventtitle,'; } if ($options['cff_show_event_details']) { $include_string .= 'eventdetails,'; } if ($options['cff_show_meta']) { $include_string .= 'social,'; } if ($options['cff_show_link']) { $include_string .= 'link,'; } if ($options['cff_show_like_box']) { $include_string .= 'likebox,'; } //Pass in shortcode attrbutes $atts = shortcode_atts(array('id' => get_option('cff_page_id'), 'num' => get_option('cff_num_show'), 'limit' => get_option('cff_post_limit'), 'others' => get_option('cff_show_others'), 'cachetime' => get_option('cff_cache_time'), 'cacheunit' => get_option('cff_cache_time_unit'), 'locale' => get_option('cff_locale'), 'width' => $options['cff_feed_width'], 'height' => $options['cff_feed_height'], 'padding' => $options['cff_feed_padding'], 'bgcolor' => $options['cff_bg_color'], 'showauthor' => $options['cff_show_author'], 'class' => $options['cff_class'], 'layout' => $options['cff_preset_layout'], 'type' => $type_string, 'include' => $include_string, 'seemoretext' => $options['cff_see_more_text'], 'seelesstext' => $options['cff_see_less_text'], 'textformat' => $options['cff_title_format'], 'textsize' => $options['cff_title_size'], 'textweight' => $options['cff_title_weight'], 'textcolor' => $options['cff_title_color'], 'textlink' => $options['cff_title_link'], 'descsize' => $options['cff_body_size'], 'descweight' => $options['cff_body_weight'], 'desccolor' => $options['cff_body_color'], 'eventtitleformat' => $options['cff_event_title_format'], 'eventtitlesize' => $options['cff_event_title_size'], 'eventtitleweight' => $options['cff_event_title_weight'], 'eventtitlecolor' => $options['cff_event_title_color'], 'eventtitlelink' => $options['cff_event_title_link'], 'eventdatesize' => $options['cff_event_date_size'], 'eventdateweight' => $options['cff_event_date_weight'], 'eventdatecolor' => $options['cff_event_date_color'], 'eventdatepos' => $options['cff_event_date_position'], 'eventdateformat' => $options['cff_event_date_formatting'], 'eventdatecustom' => $options['cff_event_date_custom'], 'eventdetailssize' => $options['cff_event_details_size'], 'eventdetailsweight' => $options['cff_event_details_weight'], 'eventdetailscolor' => $options['cff_event_details_color'], 'datepos' => $options['cff_date_position'], 'datesize' => $options['cff_date_size'], 'dateweight' => $options['cff_date_weight'], 'datecolor' => $options['cff_date_color'], 'dateformat' => $options['cff_date_formatting'], 'datecustom' => $options['cff_date_custom'], 'linksize' => $options['cff_link_size'], 'linkweight' => $options['cff_link_weight'], 'linkcolor' => $options['cff_link_color'], 'facebooklinktext' => $options['cff_facebook_link_text'], 'viewlinktext' => $options['cff_view_link_text'], 'linktotimeline' => $options['cff_link_to_timeline'], 'iconstyle' => $options['cff_icon_style'], 'socialtextcolor' => $options['cff_meta_text_color'], 'socialbgcolor' => $options['cff_meta_bg_color'], 'textlength' => get_option('cff_title_length'), 'desclength' => get_option('cff_body_length'), 'likeboxpos' => $options['cff_like_box_position'], 'likeboxoutside' => $options['cff_like_box_outside'], 'likeboxcolor' => $options['cff_likebox_bg_color'], 'likeboxwidth' => $options['cff_likebox_width'], 'likeboxfaces' => $options['cff_like_box_faces'], 'videoheight' => $options['cff_video_height'], 'videoaction' => $options['cff_video_action'], 'sepcolor' => $options['cff_sep_color'], 'sepsize' => $options['cff_sep_size']), $atts); /********** GENERAL **********/ $cff_feed_width = $atts['width']; $cff_feed_height = $atts['height']; $cff_feed_padding = $atts['padding']; $cff_bg_color = $atts['bgcolor']; $cff_show_author = $atts['showauthor']; $cff_cache_time = $atts['cachetime']; $cff_locale = $atts['locale']; if (empty($cff_locale) || !isset($cff_locale) || $cff_locale == '') { $cff_locale = 'en_US'; } if (!isset($cff_cache_time)) { $cff_cache_time = 0; } $cff_cache_time_unit = $atts['cacheunit']; $cff_class = $atts['class']; //Compile feed styles $cff_feed_styles = 'style="'; if (!empty($cff_feed_width)) { $cff_feed_styles .= 'width:' . $cff_feed_width . '; '; } if (!empty($cff_feed_height)) { $cff_feed_styles .= 'height:' . $cff_feed_height . '; '; } if (!empty($cff_feed_padding)) { $cff_feed_styles .= 'padding:' . $cff_feed_padding . '; '; } if (!empty($cff_bg_color)) { $cff_feed_styles .= 'background-color:#' . $cff_bg_color . '; '; } $cff_feed_styles .= '"'; //Like box $cff_like_box_position = $atts['likeboxpos']; $cff_like_box_outside = $atts['likeboxoutside']; //Open links in new window? $cff_open_links = $options['cff_open_links']; $target = 'target="_blank"'; if ($cff_open_links) { $target = 'target="_blank"'; } /********** POST TYPES **********/ $cff_types = $atts['type']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode $cff_show_links_type = true; $cff_show_event_type = true; $cff_show_video_type = true; $cff_show_photos_type = true; $cff_show_status_type = true; $cff_events_only = false; //Are we showing ONLY events? if ($cff_show_event_type && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_photos_type && !$cff_show_status_type) { $cff_events_only = true; } /********** LAYOUT **********/ $cff_includes = $atts['include']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode if (stripos($cff_includes, 'text') !== false) { $cff_show_text = true; } if (stripos($cff_includes, 'desc') !== false) { $cff_show_desc = true; } if (stripos($cff_includes, 'sharedlink') !== false) { $cff_show_shared_links = true; } if (stripos($cff_includes, 'date') !== false) { $cff_show_date = true; } if (stripos($cff_includes, 'media') !== false) { $cff_show_media = true; } if (stripos($cff_includes, 'eventtitle') !== false) { $cff_show_event_title = true; } if (stripos($cff_includes, 'eventdetail') !== false) { $cff_show_event_details = true; } if (stripos($cff_includes, 'social') !== false) { $cff_show_meta = true; } if (stripos($cff_includes, ',link') !== false) { $cff_show_link = true; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_includes, 'like') !== false) { $cff_show_like_box = true; } $cff_preset_layout = 'thumb'; /********** META **********/ $cff_icon_style = $atts['iconstyle']; $cff_meta_text_color = $atts['socialtextcolor']; $cff_meta_bg_color = $atts['socialbgcolor']; $cff_meta_styles = 'style="'; if (!empty($cff_meta_text_color)) { $cff_meta_styles .= 'color:#' . $cff_meta_text_color . ';'; } if (!empty($cff_meta_bg_color)) { $cff_meta_styles .= 'background-color:#' . $cff_meta_bg_color . ';'; } $cff_meta_styles .= '"'; $cff_nocomments_text = $options['cff_nocomments_text']; $cff_hide_comments = $options['cff_hide_comments']; if (!isset($cff_nocomments_text) || empty($cff_nocomments_text)) { $cff_hide_comments = true; } /********** TYPOGRAPHY **********/ //See More text $cff_see_more_text = $atts['seemoretext']; $cff_see_less_text = $atts['seelesstext']; //See Less text //Title $cff_title_format = $atts['textformat']; if (empty($cff_title_format)) { $cff_title_format = 'p'; } $cff_title_size = $atts['textsize']; $cff_title_weight = $atts['textweight']; $cff_title_color = $atts['textcolor']; $cff_title_styles = 'style="'; if (!empty($cff_title_size) && $cff_title_size != 'inherit') { $cff_title_styles .= 'font-size:' . $cff_title_size . 'px; '; } if (!empty($cff_title_weight) && $cff_title_weight != 'inherit') { $cff_title_styles .= 'font-weight:' . $cff_title_weight . '; '; } if (!empty($cff_title_color)) { $cff_title_styles .= 'color:#' . $cff_title_color . ';'; } $cff_title_styles .= '"'; $cff_title_link = $atts['textlink']; //Description $cff_body_size = $atts['descsize']; $cff_body_weight = $atts['descweight']; $cff_body_color = $atts['desccolor']; $cff_body_styles = 'style="'; if (!empty($cff_body_size) && $cff_body_size != 'inherit') { $cff_body_styles .= 'font-size:' . $cff_body_size . 'px; '; } if (!empty($cff_body_weight) && $cff_body_weight != 'inherit') { $cff_body_styles .= 'font-weight:' . $cff_body_weight . '; '; } if (!empty($cff_body_color)) { $cff_body_styles .= 'color:#' . $cff_body_color . ';'; } $cff_body_styles .= '"'; //Event Title $cff_event_title_format = $atts['eventtitleformat']; if (empty($cff_event_title_format)) { $cff_event_title_format = 'p'; } $cff_event_title_size = $atts['eventtitlesize']; $cff_event_title_weight = $atts['eventtitleweight']; $cff_event_title_color = $atts['eventtitlecolor']; $cff_event_title_styles = 'style="'; if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit') { $cff_event_title_styles .= 'font-size:' . $cff_event_title_size . 'px; '; } if (!empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit') { $cff_event_title_styles .= 'font-weight:' . $cff_event_title_weight . '; '; } if (!empty($cff_event_title_color)) { $cff_event_title_styles .= 'color:#' . $cff_event_title_color . ';'; } $cff_event_title_styles .= '"'; $cff_event_title_link = $atts['eventtitlelink']; //Event Date $cff_event_date_size = $atts['eventdatesize']; $cff_event_date_weight = $atts['eventdateweight']; $cff_event_date_color = $atts['eventdatecolor']; $cff_event_date_position = $atts['eventdatepos']; $cff_event_date_formatting = $atts['eventdateformat']; $cff_event_date_custom = $atts['eventdatecustom']; $cff_event_date_styles = 'style="'; if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit') { $cff_event_date_styles .= 'font-size:' . $cff_event_date_size . 'px; '; } if (!empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit') { $cff_event_date_styles .= 'font-weight:' . $cff_event_date_weight . '; '; } if (!empty($cff_event_date_color)) { $cff_event_date_styles .= 'color:#' . $cff_event_date_color . ';'; } $cff_event_date_styles .= '"'; //Event Details $cff_event_details_size = $atts['eventdetailssize']; $cff_event_details_weight = $atts['eventdetailsweight']; $cff_event_details_color = $atts['eventdetailscolor']; $cff_event_details_styles = 'style="'; if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit') { $cff_event_details_styles .= 'font-size:' . $cff_event_details_size . 'px; '; } if (!empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit') { $cff_event_details_styles .= 'font-weight:' . $cff_event_details_weight . '; '; } if (!empty($cff_event_details_color)) { $cff_event_details_styles .= 'color:#' . $cff_event_details_color . ';'; } $cff_event_details_styles .= '"'; //Date $cff_date_position = $atts['datepos']; if (!isset($cff_date_position)) { $cff_date_position = 'above'; } $cff_date_size = $atts['datesize']; $cff_date_weight = $atts['dateweight']; $cff_date_color = $atts['datecolor']; $cff_date_styles = 'style="'; if (!empty($cff_date_size) && $cff_date_size != 'inherit') { $cff_date_styles .= 'font-size:' . $cff_date_size . 'px; '; } if (!empty($cff_date_weight) && $cff_date_weight != 'inherit') { $cff_date_styles .= 'font-weight:' . $cff_date_weight . '; '; } if (!empty($cff_date_color)) { $cff_date_styles .= 'color:#' . $cff_date_color . ';'; } $cff_date_styles .= '"'; $cff_date_before = $options['cff_date_before']; $cff_date_after = $options['cff_date_after']; //Link to Facebook $cff_link_size = $atts['linksize']; $cff_link_weight = $atts['linkweight']; $cff_link_color = $atts['linkcolor']; $cff_link_styles = 'style="'; if (!empty($cff_link_size) && $cff_link_size != 'inherit') { $cff_link_styles .= 'font-size:' . $cff_link_size . 'px; '; } if (!empty($cff_link_weight) && $cff_link_weight != 'inherit') { $cff_link_styles .= 'font-weight:' . $cff_link_weight . '; '; } if (!empty($cff_link_color)) { $cff_link_styles .= 'color:#' . $cff_link_color . ';'; } $cff_link_styles .= '"'; $cff_facebook_link_text = $atts['facebooklinktext']; $cff_view_link_text = $atts['viewlinktext']; $cff_link_to_timeline = $atts['linktotimeline']; /********** MISC **********/ //Like Box styles $cff_likebox_bg_color = $atts['likeboxcolor']; $cff_likebox_styles = 'style="'; if (!empty($cff_likebox_bg_color)) { $cff_likebox_styles .= 'background-color:#' . $cff_likebox_bg_color . '; margin-left: 0; '; } $cff_likebox_styles .= '"'; //Video //Dimensions $cff_video_width = 640; $cff_video_height = $atts['videoheight']; if ($cff_thumb_layout) { if (empty($cff_video_height)) { $cff_video_height = 100; } } else { if ($cff_half_layout) { if (empty($cff_video_height)) { $cff_video_height = 180; } } else { if (empty($cff_video_height)) { $cff_video_height = 360; } } } //Action $cff_video_action = $atts['videoaction']; //Separating Line $cff_sep_color = $atts['sepcolor']; if (empty($cff_sep_color)) { $cff_sep_color = 'ddd'; } $cff_sep_size = $atts['sepsize']; if (empty($cff_sep_size)) { $cff_sep_size = 0; } //CFF item styles $cff_item_styles = 'style="'; $cff_item_styles .= 'border-bottom: ' . $cff_sep_size . 'px solid #' . $cff_sep_color . '; '; $cff_item_styles .= '"'; //Text limits $title_limit = $atts['textlength']; if (!isset($title_limit)) { $title_limit = 9999; } $body_limit = $atts['desclength']; //Assign the Access Token and Page ID variables $access_token = get_option('cff_access_token'); $page_id = $atts['id']; //Get show posts attribute. If not set then default to 25 $show_posts = $atts['num']; if (empty($show_posts)) { $show_posts = 25; } if ($show_posts == 0 || $show_posts == undefined) { $show_posts = 25; } //Check whether the Access Token is present and valid if ($access_token == '') { echo 'Please enter a valid Access Token. You can do this in the Custom Facebook Feed plugin settings.<br /><br />'; return false; } //Check whether a Page ID has been defined if ($page_id == '') { echo "Please enter the Page ID of the Facebook feed you'd like to display. You can do this in either the Custom Facebook Feed plugin settings or in the shortcode itself. For example [custom_facebook_feed id=<b>YOUR_PAGE_ID</b>].<br /><br />"; return false; } //Use posts? or feed? $show_others = $atts['others']; $graph_query = 'posts'; if ($show_others == 'on' || $show_others == 'true' || $show_others == true) { $graph_query = 'feed'; } $cff_post_limit = $atts['limit']; //Calculate the cache time in seconds if ($cff_cache_time_unit == 'minutes') { $cff_cache_time_unit = 60; } if ($cff_cache_time_unit == 'hours') { $cff_cache_time_unit = 60 * 60; } if ($cff_cache_time_unit == 'days') { $cff_cache_time_unit = 60 * 60 * 24; } $cache_seconds = $cff_cache_time * $cff_cache_time_unit; //Get like box vars $cff_likebox_width = $atts['likeboxwidth']; if (!isset($cff_likebox_width) || empty($cff_likebox_width) || $cff_likebox_width == '') { $cff_likebox_width = 300; } $cff_like_box_faces = $atts['likeboxfaces']; if (!isset($cff_like_box_faces) || empty($cff_like_box_faces)) { $cff_like_box_faces = 'false'; } //Set like box variable $like_box = '<div class="cff-likebox'; if ($cff_like_box_outside) { $like_box .= ' cff-outside'; } $like_box .= $cff_like_box_position == 'top' ? ' cff-top' : ' cff-bottom'; $like_box .= '"' . $cff_likebox_styles . '><script src="http://connect.facebook.net/' . $cff_locale . '/all.js#xfbml=1"></script><fb:like-box href="http://www.facebook.com/' . $page_id . '" width="' . $cff_likebox_width . '" show_faces="' . $cff_like_box_faces . '" stream="false" header="false"></fb:like-box></div>'; //***START FEED*** $content = ''; //Add like box to the outside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && $cff_like_box_outside) { $content .= $like_box; } //Create CFF container HTML $content .= '<div id="cff" rel="' . $title_limit . '" class="'; if (!empty($cff_class)) { $content .= $cff_class . ' '; } if (!empty($cff_feed_height)) { $content .= 'cff-fixed-height '; } if ($cff_thumb_layout) { $content .= 'cff-thumb-layout '; } // if ( $cff_media_medium ) $content .= 'medium-image '; if ($cff_half_layout) { $content .= 'cff-half-layout '; } $content .= '" ' . $cff_feed_styles . '>'; //Add like box to the inside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && !$cff_like_box_outside) { $content .= $like_box; } //Limit var $i = 0; //ALL POSTS if (!$cff_events_only) { $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '/' . $graph_query . '?access_token=' . $access_token . '&limit=' . $cff_post_limit . '&locale=' . $cff_locale; //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_' . $graph_query . '_json_' . $page_id; if (false === ($posts_json = get_transient($transient_name)) || $posts_json === null) { //Get the contents of the Facebook page $posts_json = cff_fetchUrl($cff_posts_json_url); //Cache the JSON set_transient($transient_name, $posts_json, $cache_seconds); } else { $posts_json = get_transient($transient_name); } } else { $posts_json = cff_fetchUrl($cff_posts_json_url); } //Interpret data with JSON $FBdata = json_decode($posts_json); //***STARTS POSTS LOOP*** foreach ($FBdata->data as $news) { //Explode News and Page ID's into 2 values $PostID = explode("_", $news->id); //Check the post type $cff_post_type = $news->type; if ($cff_post_type == 'link') { $story = $news->story; //Check whether it's an event $created_event = 'created an event.'; $shared_event = 'shared an event.'; $created_event = stripos($story, $created_event); $shared_event = stripos($story, $shared_event); if ($created_event || $shared_event) { $cff_post_type = 'event'; } } //Should we show this post or not? $cff_show_post = false; switch ($cff_post_type) { case 'link': if ($cff_show_links_type) { $cff_show_post = true; } break; case 'event': if ($cff_show_event_type) { $cff_show_post = true; } break; case 'video': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'swf': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'photo': if ($cff_show_photos_type) { $cff_show_post = true; } break; case 'offer': $cff_show_post = true; break; case 'status': //Check whether it's a status (author comment or like) if ($cff_show_status_type && !empty($news->message)) { $cff_show_post = true; } break; } //Is it a duplicate post? if ($prev_post_message == $news->message && $prev_post_link == $news->link && $prev_post_description == $news->description) { $cff_show_post = false; } //Check post type and display post if selected if ($cff_show_post) { //If it isn't then create the post //Only create posts for the amount of posts specified if ($i == $show_posts) { break; } $i++; //********************************// //***COMPILE SECTION VARIABLES***// //********************************// //Set the post link //$link = $news->link; $link = ''; //Is it a shared album? $shared_album_string = 'shared an album:'; $shared_album = stripos($news->story, $shared_album_string); if ($shared_album) { $link = str_replace('photo.php?', 'media/set/?', $link); } //If there's no link provided then link to either the Facebook page or the individual status if (empty($link)) { if ($cff_link_to_timeline == true) { //Link to page $link = 'http://facebook.com/' . $page_id; } else { //Link to status $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } } //POST AUTHOR $cff_author = '<a class="cff-author" href="http://facebook.com/' . $news->from->id . '" ' . $target . ' title="' . $news->from->name . ' on Facebook">'; $cff_author .= '<img src="http://graph.facebook.com/' . $news->from->id . '/picture">'; $cff_author .= '<p>' . $news->from->name . '</p>'; $cff_author .= '</a>'; //POST TEXT $cff_post_text = '<' . $cff_title_format . ' class="cff-post-text" ' . $cff_title_styles . '>'; $cff_post_text .= '<span class="cff-text">'; //if ($cff_title_link) $cff_post_text .= '<a class="cff-post-text-link" href="'.$link.'" '.$target.'>'; if (!empty($news->story)) { $post_text = $news->story; } if (!empty($news->message)) { $post_text = $news->message; } //Use the name if neither the story or message are available, or if the post type is an offer if (!empty($news->name) && empty($news->story) && empty($news->message) || $cff_post_type == 'offer') { $post_text = $news->name; } //If the text is wrapped in a link then don't hyperlink any text within $post_text = cff_trim_post($post_text); if ($cff_title_link) { //Wrap links in a span so we can break the text if it's too long $cff_post_text .= cff_wrap_span($post_text) . ' '; } else { $cff_post_text .= cff_make_clickable($post_text) . ' '; } //if ($cff_title_link) $cff_post_text .= '</a>'; $cff_post_text .= '</span>'; //'See More' link $cff_post_text .= '<span class="cff-expand">... <a href="#"><span class="cff-more">' . $cff_see_more_text . '</span><span class="cff-less">' . $cff_see_less_text . '</span></a></span>'; $cff_post_text .= '</' . $cff_title_format . '>'; //DESCRIPTION $cff_description = ''; //Use the description if it's available and the post type isn't set to offer (offer description isn't useful) if (!empty($news->description) && $cff_post_type != 'offer') { $description_text = $news->description; if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_make_clickable($description_text) . '</span></p>'; } //LINK $cff_shared_link = ''; //Display shared link if ($news->type == 'link') { //Display link name and description if (!empty($news->description)) { $cff_shared_link .= '<p class="cff-text-link '; $cff_shared_link .= 'cff-no-image'; $cff_shared_link .= '"><a href="' . $link . '" ' . $target . '>' . '<b>' . $news->name . '</b></a></p>'; } } //DATE $cff_date_formatting = $atts['dateformat']; $cff_date_custom = $atts['datecustom']; $cff_date = '<p class="cff-date" ' . $cff_date_styles . '>' . $cff_date_before . ' ' . cff_getdate(strtotime($news->created_time), $cff_date_formatting, $cff_date_custom) . ' ' . $cff_date_after . '</p>'; //EVENT $cff_event = ''; if ($cff_show_event_title || $cff_show_event_details) { //Check for media if ($cff_post_type == 'event') { //Get the event object $eventID = $PostID[1]; if ($shared_event) { //Get the event id from the event URL. eg: http://www.facebook.com/events/123451234512345/ $event_url = parse_url($link); $url_parts = explode('/', $event_url['path']); //Get the id from the parts $eventID = $url_parts[count($url_parts) - 2]; } //Get the contents of the event using the WP HTTP API $event_json = cff_fetchUrl('https://graph.facebook.com/' . $eventID . '?access_token=' . $access_token); //Interpret data with JSON $event_object = json_decode($event_json); //Event date $event_time = $event_object->start_time; //If timezone migration is enabled then remove last 5 characters if (strlen($event_time) == 24) { $event_time = substr($event_time, 0, -5); } if (!empty($event_time)) { $cff_event_date = '<p class="cff-date" ' . $cff_event_date_styles . '>' . cff_eventdate(strtotime($event_time), $cff_event_date_formatting, $cff_event_date_custom) . '</p>'; } //EVENT //Display the event details $cff_event .= '<div class="cff-details">'; //show event date above title if ($cff_event_date_position == 'above') { $cff_event .= $cff_event_date; } //Show event title if ($cff_show_event_title && !empty($event_object->name)) { if ($cff_event_title_link) { $cff_event .= '<a href="' . $link . '">'; } $cff_event .= '<' . $cff_event_title_format . ' ' . $cff_event_title_styles . '>' . $event_object->name . '</' . $cff_event_title_format . '>'; if ($cff_event_title_link) { $cff_event .= '</a>'; } } //show event date below title if ($cff_event_date_position !== 'above') { $cff_event .= $cff_event_date; } //Show event details if ($cff_show_event_details) { //Location if (!empty($event_object->location)) { $cff_event .= '<p class="cff-where" ' . $cff_event_details_styles . '>' . $event_object->location . '</p>'; } //Description if (!empty($event_object->description)) { $description = $event_object->description; if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $description = substr($description, 0, $body_limit) . '...'; } } $cff_event .= '<p class="cff-info" ' . $cff_event_details_styles . '>' . cff_make_clickable($description) . '</p>'; } } $cff_event .= '</div>'; } } //Display the link to the Facebook post or external link $cff_link = ''; //Default link $cff_viewpost_class = 'cff-viewpost-facebook'; if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $link_text = $cff_facebook_link_text; if (!empty($news->link)) { //Check whether it links to facebook or somewhere else $facebook_str = 'facebook.com'; if (stripos($link, $facebook_str) == false) { if ($cff_view_link_text == '') { $cff_view_link_text = 'View Link'; } $link_text = $cff_view_link_text; } $cff_viewpost_class = 'cff-viewpost-link'; } if ($cff_post_type == 'offer') { $link_text = 'View Offer'; } $cff_link = '<a class="' . $cff_viewpost_class . ' overlay" href="' . $link . '" title="' . $link_text . '" ' . $target . ' ' . $cff_link_styles . '><div class="bug">' . $link_text . '</div></a>'; //Compile the meta and link if included if ($cff_show_meta) { $cff_meta_total .= $cff_meta; } if ($cff_show_link) { $cff_meta_total .= $cff_link; } $cff_meta_total .= '</div>'; $cff_comments = ''; //Compile comments if meta is included if ($cff_show_meta) { $cff_meta_total .= $cff_comments; } //**************************// //***CREATE THE POST HTML***// //**************************// //Start the container $content .= '<div class="cff-item '; if ($cff_post_type == 'link') { $content .= 'cff-link-item'; } if ($cff_post_type == 'event') { $content .= 'cff-timeline-event'; } if ($cff_post_type == 'photo') { $content .= 'cff-photo-post'; } if ($cff_post_type == 'video') { $content .= 'cff-video-post'; } if ($cff_post_type == 'swf') { $content .= 'cff-swf-post'; } if ($cff_post_type == 'status') { $content .= 'cff-status-post'; } if ($cff_post_type == 'offer') { $content .= 'cff-offer-post'; } $content .= '" id="' . $news->id . '" ' . $cff_item_styles . '>'; //add our icon $content .= '<div class="social-bug"><div class="hex">⬢<i class="fa fa-facebook"></i></div></div>'; //add a wrapper $content .= '<div class="cff-wrap">'; //DATE ABOVE if ($cff_show_date && $cff_date_position == 'above') { $content .= $cff_date; } //POST AUTHOR if ($cff_show_author) { $content .= $cff_author; } //POST TEXT if ($cff_show_text) { $content .= $cff_post_text; } //DESCRIPTION if ($cff_show_desc) { $content .= $cff_description; } //LINK if ($cff_show_shared_links) { $content .= $cff_shared_link; } //DATE BELOW if ($cff_show_date && $cff_date_position == 'below') { $content .= $cff_date; } //EVENT if ($cff_show_event_title || $cff_show_event_details) { $content .= $cff_event; } //close the wrapper $content .= '</div>'; //add the overlay //VIEW ON FACEBOOK LINK if ($cff_show_link) { $content .= $cff_link; } //End the post item // $content .= '</div><div class="cff-clear"></div>'; $content .= '</div>'; } // End post type check $prev_post_message = $news->message; $prev_post_link = $news->link; $prev_post_description = $news->description; } // End the loop } // End ALL POSTS //Load more posts // $content .= '<button class="loadmore">Load More Posts</button>'; //Add the Like Box inside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && !$cff_like_box_outside) { $content .= $like_box; } //End the feed //$content .= '</div><div class="cff-clear"></div>'; $content .= '</div>'; //Add the Like Box outside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && $cff_like_box_outside) { $content .= $like_box; } //Return our feed HTML to display return $content; }
function display_cff($atts, $content = null) { //Which extensions are active? include_once ABSPATH . 'wp-admin/includes/plugin.php'; $cff_ext_options = get_option('cff_extensions_status'); //Set extensions in extensions plugin all to false by default $cff_ext_multifeed_active_check = false; $cff_ext_date_range_active_check = false; $cff_ext_featured_post_active_check = false; $cff_ext_album_active_check = false; if (WPW_SL_ITEM_NAME == 'Custom Facebook Feed WordPress Plugin Smash') { //Set page variables if (isset($cff_ext_options['cff_extensions_multifeed_active'])) { $cff_ext_multifeed_active_check = $cff_ext_options['cff_extensions_multifeed_active']; } if (isset($cff_ext_options['cff_extensions_date_range_active'])) { $cff_ext_date_range_active_check = $cff_ext_options['cff_extensions_date_range_active']; } if (isset($cff_ext_options['cff_extensions_featured_post_active'])) { $cff_ext_featured_post_active_check = $cff_ext_options['cff_extensions_featured_post_active']; } if (isset($cff_ext_options['cff_extensions_album_active'])) { $cff_ext_album_active_check = $cff_ext_options['cff_extensions_album_active']; } } is_plugin_active('cff-multifeed/cff-multifeed.php') || $cff_ext_multifeed_active_check ? $cff_ext_multifeed_active = true : ($cff_ext_multifeed_active = false); is_plugin_active('cff-date-range/cff-date-range.php') || $cff_ext_date_range_active_check ? $cff_ext_date_active = true : ($cff_ext_date_active = false); is_plugin_active('cff-featured-post/cff-featured-post.php') || $cff_ext_featured_post_active_check ? $cff_featured_post_active = true : ($cff_featured_post_active = false); is_plugin_active('cff-album/cff-album.php') || $cff_ext_album_active_check ? $cff_album_active = true : ($cff_album_active = false); //Style options $options = get_option('cff_style_settings'); //Create the types string to set as shortcode default $type_string = ''; if ($options['cff_show_links_type']) { $type_string .= 'links,'; } if ($options['cff_show_event_type']) { $type_string .= 'events,'; } if ($options['cff_show_video_type']) { $type_string .= 'videos,'; } if ($options['cff_show_photos_type']) { $type_string .= 'photos,'; } if ($options['cff_show_albums_type']) { $type_string .= 'albums,'; } //If the album option hasn't been set yet in the $options array (ie. plugin has been updated but the option hasn't been saved) then set albums to display by default if (!array_key_exists('cff_show_albums_type', $options)) { $type_string .= 'albums,'; } if ($options['cff_show_status_type']) { $type_string .= 'statuses,'; } //Create the includes string to set as shortcode default $include_string = ''; if ($options['cff_show_author']) { $include_string .= 'author,'; } if ($options['cff_show_text']) { $include_string .= 'text,'; } if ($options['cff_show_desc']) { $include_string .= 'desc,'; } if ($options['cff_show_shared_links']) { $include_string .= 'sharedlinks,'; } if ($options['cff_show_date']) { $include_string .= 'date,'; } if ($options['cff_show_media']) { $include_string .= 'media,'; } if ($options['cff_show_event_title']) { $include_string .= 'eventtitle,'; } if ($options['cff_show_event_details']) { $include_string .= 'eventdetails,'; } if ($options['cff_show_meta']) { $include_string .= 'social,'; } if ($options['cff_show_link']) { $include_string .= 'link,'; } if ($options['cff_show_like_box']) { $include_string .= 'likebox,'; } //Pass in shortcode attrbutes $atts = shortcode_atts(array('accesstoken' => get_option('cff_access_token'), 'id' => get_option('cff_page_id'), 'pagetype' => get_option('cff_page_type'), 'num' => get_option('cff_num_show'), 'limit' => get_option('cff_post_limit'), 'others' => '', 'showpostsby' => get_option('cff_show_others'), 'cachetime' => get_option('cff_cache_time'), 'cacheunit' => get_option('cff_cache_time_unit'), 'locale' => get_option('cff_locale'), 'ajax' => get_option('cff_ajax'), 'offset' => '', 'width' => isset($options['cff_feed_width']) ? $options['cff_feed_width'] : '', 'height' => isset($options['cff_feed_height']) ? $options['cff_feed_height'] : '', 'padding' => isset($options['cff_feed_padding']) ? $options['cff_feed_padding'] : '', 'bgcolor' => isset($options['cff_bg_color']) ? $options['cff_bg_color'] : '', 'showauthor' => '', 'showauthornew' => isset($options['cff_show_author']) ? $options['cff_show_author'] : '', 'class' => isset($options['cff_class']) ? $options['cff_class'] : '', 'type' => $type_string, 'eventsource' => isset($options['cff_events_source']) ? $options['cff_events_source'] : '', 'eventoffset' => isset($options['cff_event_offset']) ? $options['cff_event_offset'] : '', 'eventimage' => isset($options['cff_event_image_size']) ? $options['cff_event_image_size'] : '', 'pastevents' => 'false', 'albumsource' => isset($options['cff_albums_source']) ? $options['cff_albums_source'] : '', 'showalbumtitle' => isset($options['cff_show_album_title']) ? $options['cff_show_album_title'] : '', 'showalbumnum' => isset($options['cff_show_album_number']) ? $options['cff_show_album_number'] : '', 'albumcols' => isset($options['cff_album_cols']) ? $options['cff_album_cols'] : '', 'photosource' => isset($options['cff_photos_source']) ? $options['cff_photos_source'] : '', 'photocols' => isset($options['cff_photos_cols']) ? $options['cff_photos_cols'] : '', 'videosource' => isset($options['cff_videos_source']) ? $options['cff_videos_source'] : '', 'showvideoname' => isset($options['cff_show_video_name']) ? $options['cff_show_video_name'] : '', 'showvideodesc' => isset($options['cff_show_video_desc']) ? $options['cff_show_video_desc'] : '', 'videocols' => isset($options['cff_video_cols']) ? $options['cff_video_cols'] : '', 'filter' => isset($options['cff_filter_string']) ? $options['cff_filter_string'] : '', 'exfilter' => isset($options['cff_exclude_string']) ? $options['cff_exclude_string'] : '', 'layout' => isset($options['cff_preset_layout']) ? $options['cff_preset_layout'] : '', 'enablenarrow' => isset($options['cff_enable_narrow']) ? $options['cff_enable_narrow'] : '', 'mediaposition' => isset($options['cff_media_position']) ? $options['cff_media_position'] : '', 'disablelightbox' => isset($options['cff_disable_lightbox']) ? $options['cff_disable_lightbox'] : '', 'include' => $include_string, 'exclude' => '', 'postbgcolor' => isset($options['cff_post_bg_color']) ? $options['cff_post_bg_color'] : '', 'postcorners' => isset($options['cff_post_rounded']) ? $options['cff_post_rounded'] : '', 'textformat' => isset($options['cff_title_format']) ? $options['cff_title_format'] : '', 'textsize' => isset($options['cff_title_size']) ? $options['cff_title_size'] : '', 'textweight' => isset($options['cff_title_weight']) ? $options['cff_title_weight'] : '', 'textcolor' => isset($options['cff_title_color']) ? $options['cff_title_color'] : '', 'textlinkcolor' => isset($options['cff_posttext_link_color']) ? $options['cff_posttext_link_color'] : '', 'textlink' => isset($options['cff_title_link']) ? $options['cff_title_link'] : '', 'posttags' => isset($options['cff_post_tags']) ? $options['cff_post_tags'] : '', 'linkhashtags' => isset($options['cff_link_hashtags']) ? $options['cff_link_hashtags'] : '', 'authorsize' => isset($options['cff_author_size']) ? $options['cff_author_size'] : '', 'authorcolor' => isset($options['cff_author_color']) ? $options['cff_author_color'] : '', 'descsize' => isset($options['cff_body_size']) ? $options['cff_body_size'] : '', 'descweight' => isset($options['cff_body_weight']) ? $options['cff_body_weight'] : '', 'desccolor' => isset($options['cff_body_color']) ? $options['cff_body_color'] : '', 'linktitleformat' => isset($options['cff_link_title_format']) ? $options['cff_link_title_format'] : '', 'fulllinkimages' => isset($options['cff_full_link_images']) ? $options['cff_full_link_images'] : '', 'linktitlesize' => isset($options['cff_link_title_size']) ? $options['cff_link_title_size'] : '', 'linktitlecolor' => isset($options['cff_link_title_color']) ? $options['cff_link_title_color'] : '', 'linkurlcolor' => isset($options['cff_link_url_color']) ? $options['cff_link_url_color'] : '', 'linkbgcolor' => isset($options['cff_link_bg_color']) ? $options['cff_link_bg_color'] : '', 'linkbordercolor' => isset($options['cff_link_border_color']) ? $options['cff_link_border_color'] : '', 'disablelinkbox' => isset($options['cff_disable_link_box']) ? $options['cff_disable_link_box'] : '', 'eventtitleformat' => isset($options['cff_event_title_format']) ? $options['cff_event_title_format'] : '', 'eventtitlesize' => isset($options['cff_event_title_size']) ? $options['cff_event_title_size'] : '', 'eventtitleweight' => isset($options['cff_event_title_weight']) ? $options['cff_event_title_weight'] : '', 'eventtitlecolor' => isset($options['cff_event_title_color']) ? $options['cff_event_title_color'] : '', 'eventtitlelink' => isset($options['cff_event_title_link']) ? $options['cff_event_title_link'] : '', 'eventdatesize' => isset($options['cff_event_date_size']) ? $options['cff_event_date_size'] : '', 'eventdateweight' => isset($options['cff_event_date_weight']) ? $options['cff_event_date_weight'] : '', 'eventdatecolor' => isset($options['cff_event_date_color']) ? $options['cff_event_date_color'] : '', 'eventdatepos' => isset($options['cff_event_date_position']) ? $options['cff_event_date_position'] : '', 'eventdateformat' => isset($options['cff_event_date_formatting']) ? $options['cff_event_date_formatting'] : '', 'eventdatecustom' => isset($options['cff_event_date_custom']) ? $options['cff_event_date_custom'] : '', 'eventdetailssize' => isset($options['cff_event_details_size']) ? $options['cff_event_details_size'] : '', 'eventdetailsweight' => isset($options['cff_event_details_weight']) ? $options['cff_event_details_weight'] : '', 'eventdetailscolor' => isset($options['cff_event_details_color']) ? $options['cff_event_details_color'] : '', 'eventlinkcolor' => isset($options['cff_event_link_color']) ? $options['cff_event_link_color'] : '', 'datepos' => isset($options['cff_date_position']) ? $options['cff_date_position'] : '', 'datesize' => isset($options['cff_date_size']) ? $options['cff_date_size'] : '', 'dateweight' => isset($options['cff_date_weight']) ? $options['cff_date_weight'] : '', 'datecolor' => isset($options['cff_date_color']) ? $options['cff_date_color'] : '', 'dateformat' => isset($options['cff_date_formatting']) ? $options['cff_date_formatting'] : '', 'datecustom' => isset($options['cff_date_custom']) ? $options['cff_date_custom'] : '', 'timezone' => isset($options['cff_timezone']) ? $options['cff_timezone'] : 'America/Chicago', 'linksize' => isset($options['cff_link_size']) ? $options['cff_link_size'] : '', 'linkweight' => isset($options['cff_link_weight']) ? $options['cff_link_weight'] : '', 'linkcolor' => isset($options['cff_link_color']) ? $options['cff_link_color'] : '', 'viewlinktext' => isset($options['cff_view_link_text']) ? $options['cff_view_link_text'] : '', 'linktotimeline' => isset($options['cff_link_to_timeline']) ? $options['cff_link_to_timeline'] : '', 'iconstyle' => isset($options['cff_icon_style']) ? $options['cff_icon_style'] : '', 'socialtextcolor' => isset($options['cff_meta_text_color']) ? $options['cff_meta_text_color'] : '', 'socialbgcolor' => isset($options['cff_meta_bg_color']) ? $options['cff_meta_bg_color'] : '', 'sociallinkcolor' => isset($options['cff_meta_link_color']) ? $options['cff_meta_link_color'] : '', 'expandcomments' => isset($options['cff_expand_comments']) ? $options['cff_expand_comments'] : '', 'commentsnum' => isset($options['cff_comments_num']) ? $options['cff_comments_num'] : '', 'hidecommentimages' => isset($options['cff_hide_comment_avatars']) ? $options['cff_hide_comment_avatars'] : '', 'textlength' => get_option('cff_title_length'), 'desclength' => get_option('cff_body_length'), 'likeboxpos' => isset($options['cff_like_box_position']) ? $options['cff_like_box_position'] : '', 'likeboxoutside' => isset($options['cff_like_box_outside']) ? $options['cff_like_box_outside'] : '', 'likeboxcolor' => isset($options['cff_likebox_bg_color']) ? $options['cff_likebox_bg_color'] : '', 'likeboxtextcolor' => isset($options['cff_like_box_text_color']) ? $options['cff_like_box_text_color'] : '', 'likeboxwidth' => isset($options['cff_likebox_width']) ? $options['cff_likebox_width'] : '', 'likeboxheight' => isset($options['cff_likebox_height']) ? $options['cff_likebox_height'] : '', 'likeboxfaces' => isset($options['cff_like_box_faces']) ? $options['cff_like_box_faces'] : '', 'likeboxborder' => isset($options['cff_like_box_border']) ? $options['cff_like_box_border'] : '', 'likeboxcover' => isset($options['cff_like_box_cover']) ? $options['cff_like_box_cover'] : '', 'likeboxsmallheader' => isset($options['cff_like_box_small_header']) ? $options['cff_like_box_small_header'] : '', 'likeboxhidebtn' => isset($options['cff_like_box_hide_cta']) ? $options['cff_like_box_hide_cta'] : '', 'credit' => isset($options['cff_show_credit']) ? $options['cff_show_credit'] : '', 'nofollow' => 'true', 'showheader' => isset($options['cff_show_header']) ? $options['cff_show_header'] : '', 'headeroutside' => isset($options['cff_header_outside']) ? $options['cff_header_outside'] : '', 'headertext' => isset($options['cff_header_text']) ? $options['cff_header_text'] : '', 'headerbg' => isset($options['cff_header_bg_color']) ? $options['cff_header_bg_color'] : '', 'headerpadding' => isset($options['cff_header_padding']) ? $options['cff_header_padding'] : '', 'headertextsize' => isset($options['cff_header_text_size']) ? $options['cff_header_text_size'] : '', 'headertextweight' => isset($options['cff_header_text_weight']) ? $options['cff_header_text_weight'] : '', 'headertextcolor' => isset($options['cff_header_text_color']) ? $options['cff_header_text_color'] : '', 'headericon' => isset($options['cff_header_icon']) ? $options['cff_header_icon'] : '', 'headericoncolor' => isset($options['cff_header_icon_color']) ? $options['cff_header_icon_color'] : '', 'headericonsize' => isset($options['cff_header_icon_size']) ? $options['cff_header_icon_size'] : '', 'videoheight' => isset($options['cff_video_height']) ? $options['cff_video_height'] : '', 'videoaction' => isset($options['cff_video_action']) ? $options['cff_video_action'] : '', 'sepcolor' => isset($options['cff_sep_color']) ? $options['cff_sep_color'] : '', 'sepsize' => isset($options['cff_sep_size']) ? $options['cff_sep_size'] : '', 'seemoretext' => isset($options['cff_see_more_text']) ? stripslashes(esc_attr($options['cff_see_more_text'])) : '', 'seelesstext' => isset($options['cff_see_less_text']) ? stripslashes(esc_attr($options['cff_see_less_text'])) : '', 'photostext' => isset($options['cff_translate_photos_text']) ? stripslashes(esc_attr($options['cff_translate_photos_text'])) : '', 'facebooklinktext' => isset($options['cff_facebook_link_text']) ? stripslashes(esc_attr($options['cff_facebook_link_text'])) : '', 'sharelinktext' => isset($options['cff_facebook_share_text']) ? stripslashes(esc_attr($options['cff_facebook_share_text'])) : '', 'showfacebooklink' => isset($options['cff_show_facebook_link']) ? $options['cff_show_facebook_link'] : '', 'showsharelink' => isset($options['cff_show_facebook_share']) ? $options['cff_show_facebook_share'] : '', 'maptext' => isset($options['cff_map_text']) ? stripslashes(esc_attr($options['cff_map_text'])) : '', 'previouscommentstext' => isset($options['cff_translate_view_previous_comments_text']) ? stripslashes(esc_attr($options['cff_translate_view_previous_comments_text'])) : '', 'commentonfacebooktext' => isset($options['cff_translate_comment_on_facebook_text']) ? stripslashes(esc_attr($options['cff_translate_comment_on_facebook_text'])) : '', 'likesthistext' => isset($options['cff_translate_likes_this_text']) ? stripslashes(esc_attr($options['cff_translate_likes_this_text'])) : '', 'likethistext' => isset($options['cff_translate_like_this_text']) ? stripslashes(esc_attr($options['cff_translate_like_this_text'])) : '', 'andtext' => isset($options['cff_translate_and_text']) ? stripslashes(esc_attr($options['cff_translate_and_text'])) : '', 'othertext' => isset($options['cff_translate_other_text']) ? stripslashes(esc_attr($options['cff_translate_other_text'])) : '', 'otherstext' => isset($options['cff_translate_others_text']) ? stripslashes(esc_attr($options['cff_translate_others_text'])) : '', 'noeventstext' => isset($options['cff_no_events_text']) ? stripslashes(esc_attr($options['cff_no_events_text'])) : '', 'from' => get_option('cff_date_from'), 'until' => get_option('cff_date_until'), 'featuredpost' => get_option('cff_featured_post_id'), 'album' => '', 'lightbox' => get_option('cff_lightbox')), $atts); /********** GENERAL **********/ $cff_page_type = $atts['pagetype']; $cff_is_group = false; if ($cff_page_type == 'group') { $cff_is_group = true; } $cff_feed_width = $atts['width']; if (is_numeric(substr($cff_feed_width, -1, 1))) { $cff_feed_width = $cff_feed_width . 'px'; } $cff_feed_height = $atts['height']; if (is_numeric(substr($cff_feed_height, -1, 1))) { $cff_feed_height = $cff_feed_height . 'px'; } $cff_feed_padding = $atts['padding']; if (is_numeric(substr($cff_feed_padding, -1, 1))) { $cff_feed_padding = $cff_feed_padding . 'px'; } $cff_bg_color = $atts['bgcolor']; $cff_show_author = $atts['showauthornew']; $cff_cache_time = $atts['cachetime']; $cff_locale = $atts['locale']; if (empty($cff_locale) || !isset($cff_locale) || $cff_locale == '') { $cff_locale = 'en_US'; } $cff_cache_time_unit = $atts['cacheunit']; //Don't allow cache time to be zero - set to 1 minute instead to minimize API requests if (!isset($cff_cache_time) || $cff_cache_time == '0') { $cff_cache_time = 1; $cff_cache_time_unit = 'minutes'; } if ($cff_cache_time == 'none') { $cff_cache_time = 0; } $cff_class = $atts['class']; //Compile feed styles $cff_feed_styles = ''; if (!empty($cff_feed_width) || !empty($cff_feed_height) || !empty($cff_feed_padding) || !empty($cff_bg_color) && $cff_bg_color != '#') { $cff_feed_styles .= 'style="'; } if (!empty($cff_feed_width)) { $cff_feed_styles .= 'width:' . $cff_feed_width . '; '; } if (!empty($cff_feed_height)) { $cff_feed_styles .= 'height:' . $cff_feed_height . '; '; } if (!empty($cff_feed_padding)) { $cff_feed_styles .= 'padding:' . $cff_feed_padding . '; '; } if (!empty($cff_bg_color) && $cff_bg_color != '#') { $cff_feed_styles .= 'background-color:#' . str_replace('#', '', $cff_bg_color) . '; '; } if (!empty($cff_feed_width) || !empty($cff_feed_height) || !empty($cff_feed_padding) || !empty($cff_bg_color) && $cff_bg_color != '#') { $cff_feed_styles .= '"'; } //Like box $cff_like_box_position = $atts['likeboxpos']; $cff_like_box_outside = $atts['likeboxoutside']; //Open links in new window? $target = 'target="_blank"'; /********** POST TYPES **********/ $cff_types = $atts['type']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode $cff_show_links_type = false; $cff_show_event_type = false; $cff_show_video_type = false; $cff_show_photos_type = false; $cff_show_status_type = false; $cff_show_albums_type = false; if (stripos($cff_types, 'link') !== false) { $cff_show_links_type = true; } if (stripos($cff_types, 'event') !== false) { $cff_show_event_type = true; } if (stripos($cff_types, 'video') !== false) { $cff_show_video_type = true; } if (stripos($cff_types, 'photo') !== false) { $cff_show_photos_type = true; } if (stripos($cff_types, 'album') !== false) { $cff_show_albums_type = true; } if (stripos($cff_types, 'status') !== false) { $cff_show_status_type = true; } //Only events $cff_events_source = $atts['eventsource']; if (empty($cff_events_source) || !isset($cff_events_source)) { $cff_events_source = 'eventspage'; } $cff_event_offset = $atts['eventoffset']; if (empty($cff_event_offset) || !isset($cff_event_offset)) { $cff_event_offset = '6'; } $cff_events_only = false; if ($cff_show_event_type && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_photos_type && !$cff_show_status_type && !$cff_show_albums_type) { $cff_events_only = true; } //ALBUMS ONLY $cff_albums_source = $atts['albumsource']; $cff_show_album_title = $atts['showalbumtitle']; $cff_show_album_title == 'on' || $cff_show_album_title == 'true' || $cff_show_album_title == true ? $cff_show_album_title = true : ($cff_show_album_title = false); if ($atts['showalbumtitle'] == 'false') { $cff_show_album_title = false; } $cff_show_album_number = $atts['showalbumnum']; $cff_show_album_number == 'on' || $cff_show_album_number == 'true' || $cff_show_album_number == true ? $cff_show_album_number = true : ($cff_show_album_number = false); if ($atts['showalbumnum'] == 'false') { $cff_show_album_number = false; } $cff_album_cols = $atts['albumcols']; $cff_albums_only = false; if ($cff_show_albums_type && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_photos_type && !$cff_show_status_type && !$cff_show_event_type) { $cff_albums_only = true; } //PHOTOS ONLY $cff_photos_source = $atts['photosource']; isset($atts['photocols']) ? $cff_photos_cols = $atts['photocols'] : ($cff_photos_cols = '1'); $cff_photos_only = false; if ($cff_show_photos_type && $cff_photos_source == 'photospage' && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_event_type && !$cff_show_status_type && !$cff_show_albums_type) { $cff_photos_only = true; } if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $cff_photos_only = false; } //VIDEOS ONLY $cff_videos_source = $atts['videosource']; $cff_show_video_name = $atts['showvideoname']; $cff_show_video_name == 'on' || $cff_show_video_name == 'true' || $cff_show_video_name == true ? $cff_show_video_name = true : ($cff_show_video_name = false); if ($atts['showvideoname'] == 'false') { $cff_show_video_name = false; } $cff_show_video_desc = $atts['showvideodesc']; $cff_show_video_desc == 'on' || $cff_show_video_desc == 'true' || $cff_show_video_desc == true ? $cff_show_video_desc = true : ($cff_show_video_desc = false); if ($atts['showvideodesc'] == 'false') { $cff_show_video_desc = false; } $cff_video_cols = $atts['videocols']; $cff_videos_only = false; if ($cff_show_video_type && $cff_videos_source == 'videospage' && !$cff_show_albums_type && !$cff_show_links_type && !$cff_show_photos_type && !$cff_show_status_type && !$cff_show_event_type) { $cff_videos_only = true; } if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $cff_videos_only = false; } /********** LAYOUT **********/ //Include string $cff_includes = $atts['include']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode $cff_show_author = false; $cff_show_text = false; $cff_show_desc = false; $cff_show_shared_links = false; $cff_show_date = false; $cff_show_media = false; $cff_show_event_title = false; $cff_show_event_details = false; $cff_show_meta = false; $cff_show_link = false; $cff_show_like_box = false; if (stripos($cff_includes, 'author') !== false) { $cff_show_author = true; } if (stripos($cff_includes, 'text') !== false) { $cff_show_text = true; } if (stripos($cff_includes, 'desc') !== false) { $cff_show_desc = true; } if (stripos($cff_includes, 'sharedlink') !== false) { $cff_show_shared_links = true; } if (stripos($cff_includes, 'date') !== false) { $cff_show_date = true; } if (stripos($cff_includes, 'media') !== false) { $cff_show_media = true; } if (stripos($cff_includes, 'eventtitle') !== false) { $cff_show_event_title = true; } if (stripos($cff_includes, 'eventdetail') !== false) { $cff_show_event_details = true; } if (stripos($cff_includes, 'social') !== false) { $cff_show_meta = true; } if (stripos($cff_includes, ',link') !== false) { $cff_show_link = true; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_includes, 'like') !== false) { $cff_show_like_box = true; } //Exclude string $cff_excludes = $atts['exclude']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode if (stripos($cff_excludes, 'author') !== false) { $cff_show_author = false; } if (stripos($cff_excludes, 'text') !== false) { $cff_show_text = false; } if (stripos($cff_excludes, 'desc') !== false) { $cff_show_desc = false; } if (stripos($cff_excludes, 'sharedlink') !== false) { $cff_show_shared_links = false; } if (stripos($cff_excludes, 'date') !== false) { $cff_show_date = false; } if (stripos($cff_excludes, 'media') !== false) { $cff_show_media = false; } if (stripos($cff_excludes, 'eventtitle') !== false) { $cff_show_event_title = false; } if (stripos($cff_excludes, 'eventdetail') !== false) { $cff_show_event_details = false; } if (stripos($cff_excludes, 'social') !== false) { $cff_show_meta = false; } if (stripos($cff_excludes, ',link') !== false) { $cff_show_link = false; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_excludes, 'like') !== false) { $cff_show_like_box = false; } $cff_preset_layout = $atts['layout']; //Default is thumbnail layout $cff_thumb_layout = false; $cff_half_layout = false; $cff_full_layout = true; if (($cff_preset_layout == 'thumb' || empty($cff_preset_layout)) && $cff_show_media) { $cff_thumb_layout = true; } else { if ($cff_preset_layout == 'half' && $cff_show_media) { $cff_half_layout = true; } else { $cff_full_layout = true; } } //Get the media position $cff_media_position = $atts['mediaposition']; if ($cff_thumb_layout || $cff_half_layout) { $cff_media_position = 'below'; } //If the old shortcode option 'showauthor' is being used then apply it $cff_show_author_old = $atts['showauthor']; if ($cff_show_author_old == 'false') { $cff_show_author = false; } if ($cff_show_author_old == 'true') { $cff_show_author = true; } //LIGHTBOX $cff_disable_lightbox = $atts['disablelightbox']; $cff_disable_lightbox == 'on' || $cff_disable_lightbox == 'true' || $cff_disable_lightbox == true ? $cff_disable_lightbox = true : ($cff_disable_lightbox = false); if ($atts['disablelightbox'] == 'false') { $cff_disable_lightbox = false; } /********** META **********/ $cff_icon_style = 'cff-' . $atts['iconstyle']; $cff_meta_text_color = $atts['socialtextcolor']; $cff_meta_bg_color = $atts['socialbgcolor']; $cff_expand_comments = $atts['expandcomments']; if ($cff_expand_comments == 'false') { $cff_expand_comments = false; } !isset($atts['commentsnum']) ? $cff_comments_num = '4' : ($cff_comments_num = $atts['commentsnum']); $cff_hide_comment_avatars = $atts['hidecommentimages']; if ($cff_hide_comment_avatars == 'false') { $cff_hide_comment_avatars = false; } $cff_meta_styles = ''; if (!empty($cff_meta_text_color) || !empty($cff_meta_bg_color) && $cff_meta_bg_color !== '#') { $cff_meta_styles = 'style="'; } if (!empty($cff_meta_text_color)) { $cff_meta_styles .= 'color:#' . str_replace('#', '', $cff_meta_text_color) . ';'; } if (!empty($cff_meta_bg_color) && $cff_meta_bg_color !== '#') { $cff_meta_styles .= 'background-color:#' . str_replace('#', '', $cff_meta_bg_color) . ';'; } if (!empty($cff_meta_text_color) || !empty($cff_meta_bg_color) && $cff_meta_bg_color !== '#') { $cff_meta_styles .= '"'; } $cff_meta_link_color = 'style="color:#' . str_replace('#', '', $atts['sociallinkcolor']) . ';"'; // $cff_nocomments_text = $options[ 'cff_nocomments_text' ]; // $cff_hide_comments = $options[ 'cff_hide_comments' ]; // if (!isset($cff_nocomments_text) || empty($cff_nocomments_text)) $cff_hide_comments = true; /********** TYPOGRAPHY **********/ //See More text $cff_see_more_text = $atts['seemoretext']; $cff_see_less_text = $atts['seelesstext']; //See Less text //Title $cff_title_format = $atts['textformat']; if (empty($cff_title_format)) { $cff_title_format = 'p'; } $cff_title_size = $atts['textsize']; $cff_title_weight = $atts['textweight']; $cff_title_color = $atts['textcolor']; $cff_title_styles = ''; if (!empty($cff_title_size) && $cff_title_size != 'inherit' || !empty($cff_title_weight) && $cff_title_weight != 'inherit' || !empty($cff_title_color) && $cff_title_color !== '#') { $cff_title_styles = 'style="'; } if (!empty($cff_title_size) && $cff_title_size != 'inherit') { $cff_title_styles .= 'font-size:' . $cff_title_size . 'px; '; } if (!empty($cff_title_weight) && $cff_title_weight != 'inherit') { $cff_title_styles .= 'font-weight:' . $cff_title_weight . '; '; } if (!empty($cff_title_color) && $cff_title_color !== '#') { $cff_title_styles .= 'color:#' . str_replace('#', '', $cff_title_color) . ';'; } if (!empty($cff_title_size) && $cff_title_size != 'inherit' || !empty($cff_title_weight) && $cff_title_weight != 'inherit' || !empty($cff_title_color) && $cff_title_color !== '#') { $cff_title_styles .= '"'; } $cff_title_link = $atts['textlink']; //Text link color $cff_posttext_link_color = str_replace('#', '', $atts['textlinkcolor']); $cff_title_link == 'on' || $cff_title_link == 'true' || $cff_title_link == true ? $cff_title_link = true : ($cff_title_link = false); if ($atts['textlink'] == 'false') { $cff_title_link = false; } //Author $cff_author_size = $atts['authorsize']; $cff_author_color = $atts['authorcolor']; $cff_author_styles = ''; if (!empty($cff_author_size) && $cff_author_size != 'inherit' || !empty($cff_author_color) && $cff_author_color !== '#') { $cff_author_styles = 'style="'; } if (!empty($cff_author_size) && $cff_author_size != 'inherit') { $cff_author_styles .= 'font-size:' . $cff_author_size . 'px; '; } if (!empty($cff_author_color) && $cff_author_color !== '#') { $cff_author_styles .= 'color:#' . str_replace('#', '', $cff_author_color) . ';'; } if (!empty($cff_author_size) && $cff_author_size != 'inherit' || !empty($cff_author_color) && $cff_author_color !== '#') { $cff_author_styles .= '"'; } //Description $cff_body_size = $atts['descsize']; $cff_body_weight = $atts['descweight']; $cff_body_color = $atts['desccolor']; $cff_body_styles = ''; if (!empty($cff_body_size) && $cff_body_size != 'inherit' || !empty($cff_body_weight) && $cff_body_weight != 'inherit' || !empty($cff_body_color) && $cff_body_color !== '#') { $cff_body_styles = 'style="'; } if (!empty($cff_body_size) && $cff_body_size != 'inherit') { $cff_body_styles .= 'font-size:' . $cff_body_size . 'px; '; } if (!empty($cff_body_weight) && $cff_body_weight != 'inherit') { $cff_body_styles .= 'font-weight:' . $cff_body_weight . '; '; } if (!empty($cff_body_color) && $cff_body_color !== '#') { $cff_body_styles .= 'color:#' . str_replace('#', '', $cff_body_color) . ';'; } if (!empty($cff_body_size) && $cff_body_size != 'inherit' || !empty($cff_body_weight) && $cff_body_weight != 'inherit' || !empty($cff_body_color) && $cff_body_color !== '#') { $cff_body_styles .= '"'; } //Shared link title $cff_link_title_format = $atts['linktitleformat']; if (empty($cff_link_title_format)) { $cff_link_title_format = 'p'; } $cff_link_title_size = $atts['linktitlesize']; $cff_link_title_color = str_replace('#', '', $atts['linktitlecolor']); $cff_link_url_color = $atts['linkurlcolor']; $cff_link_title_styles = ''; if (!empty($cff_link_title_size) && $cff_link_title_size != 'inherit') { $cff_link_title_styles = 'style="font-size:' . $cff_link_title_size . 'px;"'; } //Shared link box $cff_link_bg_color = $atts['linkbgcolor']; $cff_link_border_color = $atts['linkbordercolor']; $cff_disable_link_box = $atts['disablelinkbox']; $cff_disable_link_box == 'true' || $cff_disable_link_box == 'on' ? $cff_disable_link_box = true : ($cff_disable_link_box = false); $cff_full_link_images = $atts['fulllinkimages']; $cff_full_link_images == 'true' || $cff_full_link_images == 'on' ? $cff_full_link_images = true : ($cff_full_link_images = false); $cff_link_box_styles = ''; if (!empty($cff_link_border_color) || !empty($cff_link_bg_color) && $cff_link_bg_color !== '#') { $cff_link_box_styles = 'style="'; } if (!empty($cff_link_border_color)) { $cff_link_box_styles .= 'border: 1px solid #' . str_replace('#', '', $cff_link_border_color) . '; '; } if (!empty($cff_link_bg_color) && $cff_link_bg_color !== '#') { $cff_link_box_styles .= 'background-color: #' . str_replace('#', '', $cff_link_bg_color) . ';'; } if (!empty($cff_link_border_color) || !empty($cff_link_bg_color) && $cff_link_bg_color !== '#') { $cff_link_box_styles .= '"'; } //Event Title $cff_event_title_format = $atts['eventtitleformat']; if (empty($cff_event_title_format)) { $cff_event_title_format = 'p'; } $cff_event_title_size = $atts['eventtitlesize']; $cff_event_title_weight = $atts['eventtitleweight']; $cff_event_title_color = $atts['eventtitlecolor']; $cff_event_title_styles = ''; if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit' || !empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit' || !empty($cff_event_title_color) && $cff_event_title_color !== '#') { $cff_event_title_styles = 'style="'; } if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit') { $cff_event_title_styles .= 'font-size:' . $cff_event_title_size . 'px; '; } if (!empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit') { $cff_event_title_styles .= 'font-weight:' . $cff_event_title_weight . '; '; } if (!empty($cff_event_title_color) && $cff_event_title_color !== '#') { $cff_event_title_styles .= 'color:#' . str_replace('#', '', $cff_event_title_color) . ';'; } if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit' || !empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit' || !empty($cff_event_title_color) && $cff_event_title_color !== '#') { $cff_event_title_styles .= '"'; } $cff_event_title_link = $atts['eventtitlelink']; $cff_event_title_link == 'on' || $cff_event_title_link == 'true' || $cff_event_title_link == true ? $cff_event_title_link = true : ($cff_event_title_link = false); if ($atts['eventtitlelink'] == 'false') { $cff_event_title_link = false; } //Event Date $cff_event_date_size = $atts['eventdatesize']; $cff_event_date_weight = $atts['eventdateweight']; $cff_event_date_color = $atts['eventdatecolor']; $cff_event_date_position = $atts['eventdatepos']; $cff_event_date_formatting = $atts['eventdateformat']; $cff_event_date_custom = $atts['eventdatecustom']; $cff_event_date_styles = ''; if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit' || !empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit' || !empty($cff_event_date_color) && $cff_event_date_color !== '#') { $cff_event_date_styles = 'style="'; } if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit') { $cff_event_date_styles .= 'font-size:' . $cff_event_date_size . 'px; '; } if (!empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit') { $cff_event_date_styles .= 'font-weight:' . $cff_event_date_weight . '; '; } if (!empty($cff_event_date_color) && $cff_event_date_color !== '#') { $cff_event_date_styles .= 'color:#' . str_replace('#', '', $cff_event_date_color) . ';'; } if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit' || !empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit' || !empty($cff_event_date_color) && $cff_event_date_color !== '#') { $cff_event_date_styles .= '"'; } //Event Details $cff_event_details_size = $atts['eventdetailssize']; $cff_event_details_weight = $atts['eventdetailsweight']; $cff_event_details_color = $atts['eventdetailscolor']; $cff_event_link_color = str_replace('#', '', $atts['eventlinkcolor']); $cff_event_details_styles = ''; if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit' || !empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit' || !empty($cff_event_details_color) && $cff_event_details_color !== '#') { $cff_event_details_styles = 'style="'; } if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit') { $cff_event_details_styles .= 'font-size:' . $cff_event_details_size . 'px; '; } if (!empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit') { $cff_event_details_styles .= 'font-weight:' . $cff_event_details_weight . '; '; } if (!empty($cff_event_details_color) && $cff_event_details_color !== '#') { $cff_event_details_styles .= 'color:#' . str_replace('#', '', $cff_event_details_color) . ';'; } if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit' || !empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit' || !empty($cff_event_details_color) && $cff_event_details_color !== '#') { $cff_event_details_styles .= '"'; } //No Upcoming Events text $cff_no_events_text = $atts['noeventstext']; if (!isset($cff_no_events_text) || empty($cff_no_events_text)) { $cff_no_events_text = 'No upcoming events'; } //Date $cff_date_position = $atts['datepos']; if (!isset($cff_date_position)) { $cff_date_position = 'below'; } $cff_date_size = $atts['datesize']; $cff_date_weight = $atts['dateweight']; $cff_date_color = $atts['datecolor']; $cff_date_styles = ''; if (!empty($cff_date_size) && $cff_date_size != 'inherit' || !empty($cff_date_weight) && $cff_date_weight != 'inherit' || !empty($cff_date_color) && $cff_date_color !== '#') { $cff_date_styles = 'style="'; } if (!empty($cff_date_size) && $cff_date_size != 'inherit') { $cff_date_styles .= 'font-size:' . $cff_date_size . 'px; '; } if (!empty($cff_date_weight) && $cff_date_weight != 'inherit') { $cff_date_styles .= 'font-weight:' . $cff_date_weight . '; '; } if (!empty($cff_date_color) && $cff_date_color !== '#') { $cff_date_styles .= 'color:#' . str_replace('#', '', $cff_date_color) . ';'; } if (!empty($cff_date_size) && $cff_date_size != 'inherit' || !empty($cff_date_weight) && $cff_date_weight != 'inherit' || !empty($cff_date_color) && $cff_date_color !== '#') { $cff_date_styles .= '"'; } $cff_date_before = isset($options['cff_date_before']) ? stripslashes(esc_attr($options['cff_date_before'])) : ''; $cff_date_after = isset($options['cff_date_after']) ? stripslashes(esc_attr($options['cff_date_after'])) : ''; //Set user's timezone based on setting $cff_timezone = $atts['timezone']; $cff_orig_timezone = date_default_timezone_get(); date_default_timezone_set($cff_timezone); //Link to Facebook $cff_link_size = $atts['linksize']; $cff_link_weight = $atts['linkweight']; $cff_link_color = $atts['linkcolor']; $cff_link_styles = ''; if (!empty($cff_link_size) && $cff_link_size != 'inherit' || !empty($cff_link_weight) && $cff_link_weight != 'inherit' || !empty($cff_link_color) && $cff_link_color !== '#') { $cff_link_styles = 'style="'; } if (!empty($cff_link_size) && $cff_link_size != 'inherit') { $cff_link_styles .= 'font-size:' . $cff_link_size . 'px; '; } if (!empty($cff_link_weight) && $cff_link_weight != 'inherit') { $cff_link_styles .= 'font-weight:' . $cff_link_weight . '; '; } if (!empty($cff_link_color) && $cff_link_color !== '#') { $cff_link_styles .= 'color:#' . str_replace('#', '', $cff_link_color) . ';'; } if (!empty($cff_link_size) && $cff_link_size != 'inherit' || !empty($cff_link_weight) && $cff_link_weight != 'inherit' || !empty($cff_link_color) && $cff_link_color !== '#') { $cff_link_styles .= '"'; } $cff_facebook_link_text = $atts['facebooklinktext']; $cff_facebook_share_text = $atts['sharelinktext']; if ($cff_facebook_share_text == '') { $cff_facebook_share_text = 'Share'; } //Show Facebook link $cff_show_facebook_link = $atts['showfacebooklink']; $cff_show_facebook_link == 'on' || $cff_show_facebook_link == 'true' || $cff_show_facebook_link == true ? $cff_show_facebook_link = true : ($cff_show_facebook_link = false); if ($atts['showfacebooklink'] === 'false') { $cff_show_facebook_link = false; } //Show Share link $cff_show_facebook_share = $atts['showsharelink']; $cff_show_facebook_share == 'on' || $cff_show_facebook_share == 'true' || $cff_show_facebook_share == true ? $cff_show_facebook_share = true : ($cff_show_facebook_share = false); if ($atts['showsharelink'] === 'false') { $cff_show_facebook_share = false; } $cff_view_link_text = $atts['viewlinktext']; $cff_link_to_timeline = $atts['linktotimeline']; /********** MISC **********/ //Like Box styles $cff_likebox_bg_color = $atts['likeboxcolor']; $cff_like_box_text_color = $atts['likeboxtextcolor']; $cff_like_box_colorscheme = 'light'; if ($cff_like_box_text_color == 'white') { $cff_like_box_colorscheme = 'dark'; } $cff_likebox_width = $atts['likeboxwidth']; if (is_numeric(substr($cff_likebox_width, -1, 1))) { $cff_likebox_width = $cff_likebox_width . 'px'; } $cff_likebox_height = $atts['likeboxheight']; $cff_likebox_height = preg_replace('/px$/', '', $cff_likebox_height); if (!isset($cff_likebox_width) || empty($cff_likebox_width) || $cff_likebox_width == '') { $cff_likebox_width = '100%'; } $cff_like_box_faces = $atts['likeboxfaces']; if (!isset($cff_like_box_faces) || empty($cff_like_box_faces)) { $cff_like_box_faces = 'false'; } $cff_like_box_border = $atts['likeboxborder']; if ($cff_like_box_border) { $cff_like_box_border = 'true'; } else { $cff_like_box_border = 'false'; } $cff_like_box_cover = $atts['likeboxcover']; if ($cff_like_box_cover) { $cff_like_box_cover = 'false'; } else { $cff_like_box_cover = 'true'; } $cff_like_box_small_header = $atts['likeboxsmallheader']; if ($cff_like_box_small_header) { $cff_like_box_small_header = 'true'; } else { $cff_like_box_small_header = 'false'; } $cff_like_box_hide_cta = $atts['likeboxhidebtn']; if ($cff_like_box_hide_cta) { $cff_like_box_hide_cta = 'true'; } else { $cff_like_box_hide_cta = 'false'; } //Compile Like box styles $cff_likebox_styles = 'style="width: ' . $cff_likebox_width . ';'; if (!empty($cff_likebox_bg_color)) { $cff_likebox_styles .= ' background-color:#' . str_replace('#', '', $cff_likebox_bg_color) . ';'; } //Set the left margin on the like box based on how it's being displayed if (!empty($cff_likebox_bg_color) && $cff_likebox_bg_color != '#' || ($cff_like_box_faces == 'true' || $cff_like_box_faces == 'on')) { $cff_likebox_styles .= ' margin-left: 0px;'; } $cff_likebox_styles .= '"'; //Get feed header settings $cff_header_bg_color = $atts['headerbg']; $cff_header_padding = $atts['headerpadding']; if (is_numeric(substr($cff_header_padding, -1, 1))) { $cff_header_padding = $cff_header_padding . 'px'; } $cff_header_text_size = $atts['headertextsize']; $cff_header_text_weight = $atts['headertextweight']; $cff_header_text_color = $atts['headertextcolor']; //Compile feed header styles $cff_header_styles = ''; if (!empty($cff_header_bg_color) && $cff_header_bg_color !== '#' || !empty($cff_header_padding) || !empty($cff_header_text_size) && $cff_header_text_size != 'inherit' || !empty($cff_header_text_weight) && $cff_header_text_weight != 'inherit' || !empty($cff_header_text_color) && $cff_header_text_color !== '#') { $cff_header_styles = 'style="'; } if (!empty($cff_header_bg_color) && $cff_header_bg_color !== '#') { $cff_header_styles .= 'background-color: #' . str_replace('#', '', $cff_header_bg_color) . '; '; } if (!empty($cff_header_padding)) { $cff_header_styles .= 'padding: ' . $cff_header_padding . '; '; } if (!empty($cff_header_text_size) && $cff_header_text_size != 'inherit') { $cff_header_styles .= 'font-size: ' . $cff_header_text_size . 'px; '; } if (!empty($cff_header_text_weight) && $cff_header_text_weight != 'inherit') { $cff_header_styles .= 'font-weight: ' . $cff_header_text_weight . '; '; } if (!empty($cff_header_text_color) && $cff_header_text_color !== '#') { $cff_header_styles .= 'color: #' . str_replace('#', '', $cff_header_text_color) . '; '; } if (!empty($cff_header_bg_color) && $cff_header_bg_color !== '#' || !empty($cff_header_padding) || !empty($cff_header_text_size) && $cff_header_text_size != 'inherit' || !empty($cff_header_text_weight) && $cff_header_text_weight != 'inherit' || !empty($cff_header_text_color) && $cff_header_text_color !== '#') { $cff_header_styles .= '"'; } //Photos translate text $cff_translate_photos_text = $atts['photostext']; if (!isset($cff_translate_photos_text) || empty($cff_translate_photos_text)) { $cff_translate_photos_text = 'photos'; } //Video //Dimensions $cff_video_height = $atts['videoheight']; //Action $cff_video_action = $atts['videoaction']; //Separating Line $cff_sep_color = $atts['sepcolor']; if (empty($cff_sep_color)) { $cff_sep_color = 'ddd'; } $cff_sep_size = $atts['sepsize']; //If empty then set a 0px border if (empty($cff_sep_size) || $cff_sep_size == '') { $cff_sep_size = 0; //Need to set a color otherwise the CSS is invalid $cff_sep_color = 'fff'; } $cff_post_bg_color = str_replace('#', '', $atts['postbgcolor']); $cff_post_rounded = $atts['postcorners']; $cff_post_bg_color !== '#' && $cff_post_bg_color !== '' ? $cff_post_bg_color_check = true : ($cff_post_bg_color_check = false); $cff_sep_color !== '#' && $cff_sep_color !== '' ? $cff_sep_color_check = true : ($cff_sep_color_check = false); //CFF item styles $cff_item_styles = ''; if ($cff_sep_color_check || $cff_post_bg_color_check) { $cff_item_styles = 'style="'; if ($cff_sep_color_check && !$cff_post_bg_color_check) { $cff_item_styles .= 'border-bottom: ' . $cff_sep_size . 'px solid #' . str_replace('#', '', $cff_sep_color) . '; '; } if ($cff_post_bg_color_check) { $cff_item_styles .= 'background-color: #' . $cff_post_bg_color . '; '; } if (isset($cff_post_rounded) && $cff_post_rounded !== '0') { $cff_item_styles .= '-webkit-border-radius: ' . $cff_post_rounded . 'px; -moz-border-radius: ' . $cff_post_rounded . 'px; border-radius: ' . $cff_post_rounded . 'px; '; } $cff_item_styles .= '"'; } //Text limits $title_limit = $atts['textlength']; if (!isset($title_limit)) { $title_limit = 9999; } $body_limit = $atts['desclength']; //Assign the Access Token and Page ID variables $access_token = trim($atts['accesstoken']); $page_id = trim($atts['id']); //If user pastes their full URL into the Page ID field then strip it out $cff_facebook_string = 'facebook.com'; stripos($page_id, $cff_facebook_string) !== false ? $cff_page_id_url_check = true : ($cff_page_id_url_check = false); if ($cff_page_id_url_check === true) { //Remove trailing slash if exists $page_id = preg_replace('{/$}', '', $page_id); //Get last part of url $page_id = substr($page_id, strrpos($page_id, '/') + 1); } //If the Page ID contains a query string at the end then remove it if (stripos($page_id, '?') !== false) { $page_id = substr($page_id, 0, strrpos($page_id, '?')); } //Get show posts attribute. If not set then default to 25 $show_posts = $atts['num']; if (empty($show_posts)) { $show_posts = 25; } if ($show_posts == 0 || $show_posts == 'undefined') { $show_posts = 25; } //If the 'Enter my own Access Token' box is unchecked then don't use the user's access token, even if there's one in the field get_option('cff_show_access_token') ? $cff_show_access_token = true : ($cff_show_access_token = false); //Regular tokens $access_token_array = array('416662301842014|Iy7oi0_vW3k6zQBj4x7jKfaBw8w', '351136301748729|qMn9Wtl3Kq5Fphtcxv3F_XiTF2U', '896835057039463|T79vzdXFpPLHYAayPhMU-1_i1JI', '388805814640108|gcuuC0CxitPh8n-jdSZzMUjDEDA', '840211402734532|cg7gK3DbncTd4asqkWRZlWpME8g'); //FQL tokens $access_token_array_fql = array('300694180076642|-cozSG1L4topnAqQOwaIEpy4Ufk', '439271626171835|-V79s0TIUVsjj_5lgc6ydVvaFZ8', '188877464498533|gObD45qMCG-uE9WGVt3-djx-6Sw', '636437039752698|Tt-zXlDy-Nu4CCkNteGfcUe65ow', '1448491852049169|eUTjw_pIVoPzC1R1pxVQhmtFqQ0'); //If Access Token is blank or 'Use own Access Token' setting is unchecked then default to a regular token if ($access_token == '' || !$cff_show_access_token) { $access_token = $access_token_array[rand(0, 4)]; } //If displaying events only, photos only or featured post then use an FQL token if ($cff_events_only && !$cff_is_group || $cff_photos_only || $cff_featured_post_active && !empty($atts['featuredpost'])) { $access_token = $access_token_array_fql[rand(0, 4)]; } //Check whether a Page ID has been defined if ($page_id == '') { echo "Please enter the Page ID of the Facebook feed you'd like to display. You can do this in either the Custom Facebook Feed plugin settings or in the shortcode itself. For example [custom-facebook-feed id=YOUR_PAGE_ID_HERE].<br /><br />"; return false; } //Is it SSL? $cff_ssl = ''; if (is_ssl()) { $cff_ssl = '&return_ssl_resources=true'; } //Use posts? or feed? $show_others = $atts['others']; $show_posts_by = $atts['showpostsby']; $graph_query = 'posts'; $cff_show_only_others = false; //If 'others' shortcode option is used then it overrides any other option if ($show_others) { //Show posts by everyone if ($show_others == 'on' || $show_others == 'true' || $show_others == true || $cff_is_group) { $graph_query = 'feed'; } //Only show posts by me if ($show_others == 'false') { $graph_query = 'posts'; } } else { //Else use the settings page option or the 'showpostsby' shortcode option //Only show posts by me if ($show_posts_by == 'me') { $graph_query = 'posts'; } //Show posts by everyone if ($show_posts_by == 'others' || $cff_is_group) { $graph_query = 'feed'; } //Show posts ONLY by others if ($show_posts_by == 'onlyothers' && !$cff_is_group) { $graph_query = 'feed'; $cff_show_only_others = true; } } //If the limit isn't set then set it to be 5 more than the number of posts defined if (isset($atts['limit']) && $atts['limit'] !== '') { $cff_post_limit = $atts['limit']; } else { $cff_post_limit = intval(intval($show_posts) + 7); } //Calculate the cache time in seconds if ($cff_cache_time_unit == 'minutes') { $cff_cache_time_unit = 60; } if ($cff_cache_time_unit == 'hours') { $cff_cache_time_unit = 60 * 60; } if ($cff_cache_time_unit == 'days') { $cff_cache_time_unit = 60 * 60 * 24; } $cache_seconds = $cff_cache_time * $cff_cache_time_unit; //Set like box variable //If there are more than one page id then use the first one isset($options['cff_app_id']) ? $cff_app_id = $options['cff_app_id'] : ($cff_app_id = ''); isset($cff_app_id) && !empty($cff_app_id) ? $cff_like_box_params = '&appId=' . $cff_app_id : ($cff_like_box_params = ''); $like_box_page_id = explode(",", str_replace(' ', '', $page_id)); $like_box = '<div class="cff-likebox'; if ($cff_like_box_outside) { $like_box .= ' cff-outside'; } $like_box .= $cff_like_box_position == 'top' ? ' cff-top' : ' cff-bottom'; // $like_box .= '" ' . $cff_likebox_styles . '><script src="https://connect.facebook.net/' . $cff_locale . '/all.js#xfbml=1'.$cff_like_box_params.'"></script><fb:like-box href="http://www.facebook.com/' . $like_box_page_id[0] . '" show_faces="'.$cff_like_box_faces.'" stream="false" header="false" colorscheme="'. $cff_like_box_colorscheme .'" show_border="'. $cff_like_box_border .'" data-height="'.$cff_likebox_height.'"></fb:like-box><div id="fb-root"></div></div>'; $like_box .= '" ><script src="https://connect.facebook.net/' . $cff_locale . '/all.js#xfbml=1' . $cff_like_box_params . '"></script><div class="fb-page" data-href="https://www.facebook.com/' . $like_box_page_id[0] . '" data-width="' . $cff_likebox_width . '" data-hide-cover="' . $cff_like_box_cover . '" data-show-facepile="' . $cff_like_box_faces . '" data-small-header="' . $cff_like_box_small_header . '" data-hide-cta="' . $cff_like_box_hide_cta . '" data-show-posts="false" data-adapt-container-width="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/' . $like_box_page_id[0] . '"><a href="https://www.facebook.com/' . $like_box_page_id[0] . '">' . $cff_facebook_link_text . '</a></blockquote></div></div><div id="fb-root"></div></div>'; //Don't show like box if it's a group if ($cff_is_group) { $like_box = ''; } //Feed header $cff_show_header = $atts['showheader']; $cff_show_header == 'true' || $cff_show_header == 'on' ? $cff_show_header = true : ($cff_show_header = false); $cff_header_outside = $atts['headeroutside']; $cff_header_outside == 'true' || $cff_header_outside == 'on' ? $cff_header_outside = true : ($cff_header_outside = false); $cff_header_text = $atts['headertext']; $cff_header_icon = $atts['headericon']; $cff_header_icon_color = $atts['headericoncolor']; $cff_header_icon_size = $atts['headericonsize']; $cff_header = '<h3 class="cff-header'; if ($cff_header_outside) { $cff_header .= ' cff-outside'; } $cff_header .= '" ' . $cff_header_styles . '>'; $cff_header .= '<i class="fa fa-' . $cff_header_icon . '"'; if (!empty($cff_header_icon_color) || !empty($cff_header_icon_size)) { $cff_header .= ' style="'; } if (!empty($cff_header_icon_color)) { $cff_header .= 'color: #' . str_replace('#', '', $cff_header_icon_color) . ';'; } if (!empty($cff_header_icon_size)) { $cff_header .= ' font-size: ' . $cff_header_icon_size . 'px;'; } if (!empty($cff_header_icon_color) || !empty($cff_header_icon_size)) { $cff_header .= '"'; } $cff_header .= '></i>'; $cff_header .= '<span class="cff-header-text" style="height: ' . $cff_header_icon_size . 'px;">' . $cff_header_text . '</span>'; $cff_header .= '</h3>'; //Misc Settings $cff_nofollow = $atts['nofollow']; $cff_nofollow == 'on' || $cff_nofollow == 'true' || $cff_nofollow == true ? $cff_nofollow = true : ($cff_nofollow = false); if ($atts['nofollow'] == 'false') { $cff_nofollow = false; } $cff_nofollow ? $cff_nofollow = ' rel="nofollow"' : ($cff_nofollow = ''); //Narrow styles $cff_enable_narrow = $atts['enablenarrow']; $cff_enable_narrow == 'true' || $cff_enable_narrow == 'on' ? $cff_enable_narrow = true : ($cff_enable_narrow = false); //If the number of posts is set to zero then don't show any and set limit to one if (($atts['num'] == '0' || $atts['num'] == 0) && $atts['num'] !== '') { $show_posts = 0; $cff_post_limit = 1; } //***START FEED*** $cff_content = ''; //Add the page header to the outside of the top of feed if ($cff_show_header && $cff_header_outside) { $cff_content .= $cff_header; } //Add like box to the outside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && $cff_like_box_outside) { $cff_content .= $like_box; } //Create CFF container HTML $cff_content .= '<div class="cff-wrapper">'; $cff_content .= '<div id="cff" '; if (!empty($title_limit)) { $cff_content .= 'data-char="' . $title_limit . '" '; } $cff_content .= 'class="'; if (!empty($cff_class)) { $cff_content .= $cff_class . ' '; } if (!empty($cff_feed_height)) { $cff_content .= 'cff-fixed-height '; } if ($cff_thumb_layout) { $cff_content .= 'cff-thumb-layout '; } if ($cff_half_layout) { $cff_content .= 'cff-half-layout '; } if (!$cff_enable_narrow) { $cff_content .= 'cff-disable-narrow'; } //Lightbox extension if ($cff_disable_lightbox && ($atts['lightbox'] == 'true' || $atts['lightbox'] == 'on')) { $cff_content .= ' cff-lightbox'; } if (!$cff_disable_lightbox) { $cff_content .= ' cff-lb'; } $cff_content .= '" ' . $cff_feed_styles; $cff_content .= ' data-fb-text="' . $cff_facebook_link_text . '"'; $cff_content .= '>'; //Add the page header to the inside of the top of feed if ($cff_show_header && !$cff_header_outside) { $cff_content .= $cff_header; } //Add like box to the inside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && !$cff_like_box_outside) { $cff_content .= $like_box; } //Limit var $i = 0; //Multifeed extension $cff_ext_multifeed_active ? $page_ids = cff_multifeed_ids($page_id) : ($page_ids = array($page_id)); //Define array for post items $cff_posts_array = array(); //LOOP THROUGH PAGE IDs foreach ($page_ids as $page_id) { //EVENTS ONLY if ($cff_events_only && $cff_events_source == 'eventspage') { //Get the user's ID $get_page_info = cff_fetchUrl('https://graph.facebook.com/' . $page_id . '?fields=name,id&access_token=' . $access_token); $page_info = json_decode($get_page_info); //Get user ID $u_id = $page_info->id; //Add 6 hours to the current time. This means events will still be shown for 6 hours after their start time has passed. $cff_event_offset_time = '-' . $cff_event_offset . ' hours'; $curtimeplus = strtotime($cff_event_offset_time, time()); //Start time string $cff_start_time_string = "start_time>=" . $curtimeplus; //Date range extension if ($cff_ext_date_active && (!empty($atts['from']) || !empty($atts['until']))) { !empty($atts['from']) ? $cff_date_from = strtotime($atts['from']) : ($cff_date_from = $curtimeplus); !empty($atts['until']) ? $cff_date_until = strtotime($atts['until']) : ($cff_date_until = $curtimeplus); $cff_start_time_string = cff_ext_date_events($cff_date_from, $cff_date_until); } //Set the query URL $fql = "SELECT%20eid,name,attending_count,pic_big,pic_cover,start_time,end_time,timezone,venue,location,description,ticket_uri%20FROM%20event%20WHERE%20eid%20IN%20(SELECT%20eid%20FROM%20event_member%20WHERE%20uid='" . $u_id . "')%20AND%20" . $cff_start_time_string . "%20ORDER%20BY%20start_time%20&access_token=" . $access_token . '&format=json-strings' . $cff_ssl; //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $fql = cff_featured_event_id(trim($atts['featuredpost']), $access_token); } // Get any existing copy of our transient data $cff_events_json_url = "https://graph.facebook.com/fql?q=" . $fql; //Past events $atts['pastevents'] !== 'false' ? $cff_past_events = true : ($cff_past_events = false); //Get past events. Limit must be set high to get all past events and be able to show the newest ones first if ($cff_past_events) { $cff_events_json_url = 'https://graph.facebook.com/' . $u_id . '/events?fields=name,id,description,start_time,end_time,timezone,location,venue,ticket_uri,cover&limit=200&until=' . date('Y-m-d') . '&access_token=' . $access_token; } if ($cff_is_group) { $cff_events_json_url = 'https://graph.facebook.com/' . $page_id . '/events?fields=name,id,description,start_time,end_time,timezone,location,venue,ticket_uri,cover&limit=200&since=' . date('Y-m-d') . '&access_token=' . $access_token; } //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $fql = cff_featured_event_id(trim($atts['featuredpost']), $access_token); } if ($cff_cache_time != 0) { $transient_name = 'cff_events_json_' . $page_id . '_' . strtotime($atts['from']) . strtotime($atts['until']) . $atts['featuredpost'] . $cff_past_events . $cff_page_type; if (false === ($events_json = get_transient($transient_name)) || $events_json === null) { //Get the contents of the events page $events_json = cff_fetchUrl($cff_events_json_url); //Cache the JSON set_transient($transient_name, $events_json, $cache_seconds); } else { $events_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($events_json == false) { $events_json = cff_fetchUrl($cff_events_json_url); } } } else { $events_json = cff_fetchUrl($cff_events_json_url); } //Interpret data with JSON //Convert eid integer to a string otherwise json_decode returns it as a float $events_json = preg_replace('/"eid":(\\d+)/', '"eid":"$1"', $events_json); $events_json = preg_replace('/"id":(\\d+)/', '"id":"$1"', $events_json); $event_data = json_decode($events_json); //EVENTS LOOP foreach ($event_data->data as $event) { //Only create posts for the amount of posts specified // if ( $i == $show_posts ) break; $i++; //Past events if ($cff_past_events || $cff_is_group) { isset($event->id) ? $id = $event->id : ($id = ''); } else { isset($event->eid) ? $id = $event->eid : ($id = ''); } isset($event->name) ? $event_name = $event->name : ($event_name = ''); isset($event->attending_count) ? $attending_count = $event->attending_count : ($attending_count = ''); //Picture source if ($cff_past_events || $cff_is_group) { isset($event->cover) ? $pic_big = $event->cover->source : ($pic_big = plugins_url('/img/event-image.png', __FILE__)); } else { $atts['eventimage'] == 'cropped' ? $crop_event_pic = true : ($crop_event_pic = false); isset($event->pic_cover) && !$crop_event_pic ? $pic_big = $event->pic_cover->source : ($pic_big = $event->pic_big); } isset($event->start_time) ? $start_time = $event->start_time : ($start_time = ''); isset($event->end_time) ? $end_time = $event->end_time : ($end_time = ''); isset($event->timezone) ? $timezone = $event->timezone : ($timezone = ''); //Venue isset($event->venue->latitude) ? $venue_latitude = $event->venue->latitude : ($venue_latitude = ''); isset($event->venue->longitude) ? $venue_longitude = $event->venue->longitude : ($venue_longitude = ''); isset($event->venue->city) ? $venue_city = $event->venue->city : ($venue_city = ''); isset($event->venue->state) ? $venue_state = $event->venue->state : ($venue_state = ''); isset($event->venue->country) ? $venue_country = $event->venue->country : ($venue_country = ''); isset($event->venue->id) ? $venue_id = $event->venue->id : ($venue_id = ''); $venue_link = 'https://facebook.com/' . $venue_id; isset($event->venue->street) ? $venue_street = $event->venue->street : ($venue_street = ''); isset($event->venue->zip) ? $venue_zip = $event->venue->zip : ($venue_zip = ''); isset($event->location) ? $location = $event->location : ($location = ''); isset($event->description) ? $description = $event->description : ($description = ''); $event_link = 'https://facebook.com/events/' . $id; isset($event->ticket_uri) ? $ticket_uri = $event->ticket_uri : ($ticket_uri = ''); //Event date $event_time = $start_time; //If timezone migration is enabled then remove last 5 characters if (strlen($event_time) == 24) { $event_time = substr($event_time, 0, -5); } if (!empty($start_time)) { $cff_event_date = '<p class="cff-date" ' . $cff_event_date_styles . '><span class="cff-start-date">' . cff_eventdate(strtotime($event_time), $cff_event_date_formatting, $cff_event_date_custom) . '</span>'; } if (isset($event->end_time)) { $cff_event_date .= ' - <span class="cff-end-date">' . cff_eventdate(strtotime($end_time), $cff_event_date_formatting, $cff_event_date_custom) . '</span>'; } $cff_event_date .= '</p>'; //Event title $cff_event_title = ''; if ($cff_event_title_link) { $cff_event_title .= '<a href="' . $event_link . '" ' . $target . $cff_nofollow . '>'; } $cff_event_title .= '<' . $cff_event_title_format . ' ' . $cff_event_title_styles . '>' . $event_name . '</' . $cff_event_title_format . '>'; if ($cff_event_title_link) { $cff_event_title .= '</a>'; } //***************************// //***CREATE THE EVENT HTML***// //***************************// $cff_post_item = '<div class="cff-item cff-event author-' . cff_to_slug($page_id); if ($cff_post_bg_color_check) { $cff_post_item .= ' cff-box'; } $cff_post_item .= '" id="cff_' . $id . '" ' . $cff_item_styles . '>'; //Picture if ($cff_show_media) { $cff_post_item .= '<a title="' . $cff_facebook_link_text . '" class="cff-photo" href="' . $event_link . '" ' . $target . $cff_nofollow . '><img src="' . $pic_big . '" /></a>'; } //Start text wrapper if ($cff_thumb_layout || $cff_half_layout) { $cff_post_item .= '<div class="cff-details">'; } //show event date above title if ($cff_show_date && $cff_event_date_position == 'above') { $cff_post_item .= $cff_event_date; } //Show event title if ($cff_show_event_title && !empty($event_name)) { $cff_post_item .= $cff_event_title; } //show event date below title if ($cff_show_date && $cff_event_date_position !== 'above') { $cff_post_item .= $cff_event_date; } //Show event details if ($cff_show_event_details) { if (!empty($location)) { $cff_post_item .= '<p class="cff-location" ' . $cff_event_details_styles . '>'; } if (!empty($venue_id)) { $cff_post_item .= '<a href="' . $venue_link . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_event_link_color . ';">'; } if (!empty($location)) { $cff_post_item .= '<b>' . $location . '</b>'; } if (!empty($venue_id)) { $cff_post_item .= '</a>'; } if (!empty($venue_street)) { $cff_post_item .= '<br />' . $venue_street; } if (!empty($venue_city)) { $cff_post_item .= '<br />' . $venue_city . ', ' . $venue_state . ' ' . $venue_zip; } $cff_map_text = $atts['maptext']; if (!empty($venue_latitude)) { $cff_post_item .= ' <a href="https://maps.google.com/maps?q=' . $venue_latitude . ',+' . $venue_longitude . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_event_link_color . ';">' . $cff_map_text . '</a>'; } if (!empty($location)) { $cff_post_item .= '</p>'; } if (!empty($description)) { $cff_post_item .= '<p class="cff-desc" '; //Set the char limit on the element if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $cff_post_item .= 'data-char="' . $body_limit . '" '; } } $cff_post_item .= $cff_event_details_styles . '><span class="cff-desc-text">' . cff_autolink($description, $link_color = $cff_event_link_color) . '</span>'; //Add the See More and See Less links if needed if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $cff_post_item .= '<span class="cff-expand">... <a href="#" style="color: #' . $cff_posttext_link_color . '"><span class="cff-more">' . $cff_see_more_text . '</span><span class="cff-less">' . $cff_see_less_text . '</span></a></span>'; } } $cff_post_item .= '</p>'; } } //End details if ($cff_thumb_layout || $cff_half_layout) { $cff_post_item .= '</div>'; } $cff_post_item .= '<div class="cff-meta-wrap">'; $cff_post_item .= '<div class="cff-post-links">'; //Social media sharing URLs $cff_share_facebook = 'https://www.facebook.com/sharer/sharer.php?u=' . urlencode($event_link); $cff_share_twitter = 'https://twitter.com/intent/tweet?text=' . urlencode($event_link); $cff_share_google = 'https://plus.google.com/share?url=' . urlencode($event_link); $cff_share_linkedin = 'https://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($event_link) . '&title=' . rawurlencode(strip_tags($cff_event_title) . ' - ' . strip_tags($cff_event_date)); $cff_share_email = 'mailto:?subject=Facebook&body=' . urlencode($event_link) . '%20-%20' . rawurlencode(strip_tags($cff_event_title) . ' - ' . strip_tags($cff_event_date)); //View on Facebook link if ($cff_show_facebook_link) { $cff_post_item .= '<a class="cff-viewpost" href="' . $event_link . '" ' . $target . $cff_nofollow . ' ' . $cff_link_styles . '>' . $cff_facebook_link_text . '</a>'; } //Share link if ($cff_show_facebook_share) { $cff_post_item .= '<div class="cff-share-container">'; if ($cff_show_facebook_link) { $cff_post_item .= '<span class="cff-dot" ' . $cff_link_styles . '>·</span>'; } $cff_post_item .= '<a class="cff-share-link" href="javascript:void(0);" title="' . $cff_facebook_share_text . '" ' . $cff_link_styles . '>' . $cff_facebook_share_text . '</a>'; $cff_post_item .= "<p class='cff-share-tooltip'><a href='" . $cff_share_facebook . "' target='_blank' class='cff-facebook-icon'><i class='fa fa-facebook-square'></i></a><a href='" . $cff_share_twitter . "' target='_blank' class='cff-twitter-icon'><i class='fa fa-twitter'></i></a><a href='" . $cff_share_google . "' target='_blank' class='cff-google-icon'><i class='fa fa-google-plus'></i></a><a href='" . $cff_share_linkedin . "' target='_blank' class='cff-linkedin-icon'><i class='fa fa-linkedin'></i></a><a href='" . $cff_share_email . "' target='_blank' class='cff-email-icon'><i class='fa fa-envelope'></i></a><i class='fa fa-play fa-rotate-90'></i></p></div>"; } $cff_post_item .= '</div>'; $cff_post_item .= '</div></div><div class="cff-clear"></div>'; //Get the filter string $cff_filter_string = $atts['filter']; //Create a string from the event title, location and address to use in the filter check below $cff_event_address_string = $cff_event_title . $location . $venue_street . $venue_city . $venue_state . $venue_zip; $cff_show_post = true; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_address = true; $string_in_desc = true; if (cff_stripos_arr($cff_event_address_string, $cff_filter_strings_array) === false) { $string_in_address = false; } if (cff_stripos_arr($description, $cff_filter_strings_array) === false) { $string_in_desc = false; } if ($string_in_address == false && $string_in_desc == false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_address = false; $string_in_desc = false; if (cff_stripos_arr($cff_event_address_string, $cff_exclude_strings_array) !== false) { $string_in_address = true; } if (cff_stripos_arr($description, $cff_exclude_strings_array) !== false) { $string_in_desc = true; } if ($string_in_address == true || $string_in_desc == true) { $cff_show_post = false; } } //Offset. If the post index ($i) is less than the offset then don't show the post if (intval($i) < intval($atts['offset'])) { $cff_show_post = false; $i++; } //Change the seconds value of the event_time unix value so that if more than 1 event has the same start time then it doesn't get replaced in the posts array $event_time_unix = strtotime($event_time); $event_time = substr($event_time_unix, 0, -1) . rand(1, 9); //PUSH TO ARRAY if the post should be shown if ($cff_show_post !== false) { $cff_posts_array = cff_array_push_assoc($cff_posts_array, $event_time, $cff_post_item); } } // End the loop //Sort all of the events by all page IDs to show the most recent upcoming events first if (!$cff_past_events) { ksort($cff_posts_array); } //If there are no upcoming events then display a message if (!$cff_past_events && empty($cff_posts_array)) { $cff_posts_array = cff_array_push_assoc($cff_posts_array, 1, '<p class="cff-no-events">' . $cff_no_events_text . '</p>'); } // if($cff_past_events) usort($cff_posts_array, 'sortByOrder'); if ($cff_past_events) { krsort($cff_posts_array); } } //End EVENTS ONLY //ALL POSTS if (!$cff_events_only || $cff_events_only && $cff_events_source == 'timeline') { //Create date range using the Date Range extension $cff_ext_date_active ? $cff_date_range = cff_ext_date(strtotime($atts['from']), strtotime($atts['until'])) : ($cff_date_range = ''); $cff_posts_json_url = 'https://graph.facebook.com/v2.3/' . $page_id . '/' . $graph_query . '?fields=id,from,message,message_tags,story,story_tags,picture,full_picture,link,source,name,caption,description,type,status_type,object_id,created_time,attachments{subattachments},shares,likes{id,name},comments{attachment,id,from,message,message_tags,created_time,like_count}&access_token=' . $access_token . '&limit=' . $cff_post_limit . '&locale=' . $cff_locale . $cff_ssl . $cff_date_range; //VIDEOS ONLY if ($cff_videos_only) { $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '?fields=videos{source,name,description,embed_html,format{picture}}&access_token=' . $access_token . '&locale=' . $cff_locale; } //PHOTOS ONLY if ($cff_photos_only) { //Get the user's ID $get_page_info = cff_fetchUrl('https://graph.facebook.com/' . $page_id . '?fields=name,id&access_token=' . $access_token); $page_info = json_decode($get_page_info); //Get user ID $u_id = $page_info->id; //PHOTOS ONLY if ($cff_is_group) { //For groups $cff_posts_json_url = "https://graph.facebook.com/fql?q=SELECT%20pid,created,src_big,link,caption%20FROM%20photo%20WHERE%20pid%20IN%20(SELECT%20pid%20FROM%20photo_tag%20WHERE%20subject='" . $u_id . "')%20OR%20pid%20IN%20(SELECT%20pid%20FROM%20photo%20WHERE%20aid%20IN%20(SELECT%20aid%20FROM%20album%20WHERE%20owner='" . $u_id . "'%20AND%20type!='profile'))%20LIMIT%20" . $cff_post_limit . "%20&access_token=" . $access_token; } else { //For pages $cff_posts_json_url = "https://graph.facebook.com/fql?q=SELECT%20pid,created,src_big,link,caption%20FROM%20photo%20WHERE%20pid%20IN%20(SELECT%20pid%20FROM%20photo%20WHERE%20owner='" . $u_id . "')%20LIMIT%20" . $cff_post_limit . "%20&access_token=" . $access_token; } } //ALBUMS ONLY if ($cff_albums_only && $cff_albums_source == 'photospage') { $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '/albums?access_token=' . $access_token . '&limit=' . $cff_post_limit . '&locale=' . $cff_locale; } //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $cff_posts_json_url = cff_featured_post_id(trim($atts['featuredpost']), $access_token); } //ALBUM EMBED $cff_album_id = $atts['album']; if ($cff_album_active && !empty($cff_album_id)) { //Get the JSON back from the Album extension $cff_album_json_url = cff_album_id(trim($cff_album_id), $access_token, $cff_post_limit); //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_album_json_' . $cff_album_id; if (false === ($album_json = get_transient($transient_name)) || $album_json === null) { //Get the contents of the Facebook page $album_json = cff_fetchUrl($cff_album_json_url); //Cache the JSON set_transient($transient_name, $album_json, $cache_seconds); } else { $album_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($album_json == false) { $album_json = cff_fetchUrl($cff_album_json_url); } } } else { $album_json = cff_fetchUrl($cff_album_json_url); } } //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_' . $page_id . '_' . strtotime($atts['from']) . strtotime($atts['until']) . $atts['featuredpost'] . $cff_albums_only . $cff_albums_source . $cff_photos_only . $cff_videos_only . $cff_post_limit . $show_posts_by; if (false === ($posts_json = get_transient($transient_name)) || $posts_json === null) { //Get the contents of the Facebook page $posts_json = cff_fetchUrl($cff_posts_json_url); //Check whether any data is returned from the API. If it isn't then don't cache the error response and instead keep checking the API on every page load until data is returned. $FBdata = json_decode($posts_json); if (!empty($FBdata->data)) { //Cache the JSON set_transient($transient_name, $posts_json, $cache_seconds); } } else { $posts_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($posts_json == false) { $posts_json = cff_fetchUrl($cff_posts_json_url); } } } else { $posts_json = cff_fetchUrl($cff_posts_json_url); } if ($cff_show_only_others) { //Get the numeric ID of the page so can compare it to the author of each post $page_object = cff_fetchUrl('https://graph.facebook.com/' . $page_id . '?fields=name,id&access_token=' . $access_token); $page_object = json_decode($page_object); $numeric_page_id = $page_object->id; } //Interpret data with JSON $FBdata = json_decode($posts_json); //If there's no data then show a pretty error message if (empty($FBdata->data) && empty($FBdata->videos) && (!$cff_featured_post_active || empty($atts['featuredpost'])) && !$cff_ext_multifeed_active) { $cff_content .= '<div class="cff-error-msg"><p>Unable to display Facebook posts.<br/><a href="javascript:void(0);" id="cff-show-error" onclick="cffShowError()">Show error</a>'; $cff_content .= '<script type="text/javascript">function cffShowError() { document.getElementById("cff-error-reason").style.display = "block"; document.getElementById("cff-show-error").style.display = "none"; }</script>'; $cff_content .= '</p><div id="cff-error-reason">'; if (isset($FBdata->error->message)) { $cff_content .= 'Error: ' . $FBdata->error->message; } if (isset($FBdata->error->type)) { $cff_content .= '<br />Type: ' . $FBdata->error->type; } if (isset($FBdata->error->code)) { $cff_content .= '<br />Code: ' . $FBdata->error->code; } if (isset($FBdata->error->error_subcode)) { $cff_content .= '<br />Subcode: ' . $FBdata->error->error_subcode; } if (isset($FBdata->error_msg)) { $cff_content .= 'Error: ' . $FBdata->error_msg; } if (isset($FBdata->error_code)) { $cff_content .= '<br />Code: ' . $FBdata->error_code; } if ($FBdata == null) { $cff_content .= 'Error: Server configuration issue'; } if (empty($FBdata->error) && empty($FBdata->error_msg) && $FBdata !== null) { $cff_content .= 'Error: No posts available for this Facebook ID'; } $cff_content .= '<br />Please refer to our <a href="https://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank">Error Message Reference</a>.'; $cff_content .= '</div></div>'; //End .cff-error-msg and #cff-error-reason $cff_content .= '</div></div>'; //End #cff and .cff-wrapper return $cff_content; } //ALBUM EMBED if ($cff_album_active && !empty($cff_album_id)) { $FBdata = json_decode($album_json); } //***STARTS POSTS LOOP*** $fbdata_string = ''; //If the Featured Post extension is active then adjust the loop as there is no 'data' if ($cff_featured_post_active && !empty($atts['featuredpost'])) { if (isset($FBdata) && !empty($FBdata)) { $fbdata_string = $FBdata; } } else { if ($cff_videos_only && isset($FBdata->videos)) { //Videos only $fbdata_string = $FBdata->videos->data; } else { //All other posts if (isset($FBdata->data)) { $fbdata_string = $FBdata->data; } } } foreach ($fbdata_string as $news) { if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $news = $FBdata; } $cff_post_item = ''; //Explode News and Page ID's into 2 values $PostID = ''; if (isset($news->id)) { $cff_post_id = $news->id; $PostID = explode("_", $cff_post_id); } if (isset($PostID[0])) { $orig_post_id = $PostID[0]; } if (isset($PostID[1])) { $orig_post_id .= '_' . $PostID[1]; } //Check the post type isset($news->type) ? $cff_post_type = $news->type : ($cff_post_type = ''); if ($cff_post_type == 'link') { isset($news->story) ? $story = $news->story : ($story = ''); //Check whether it's an event $event_link_check = "facebook.com/events/"; //Make sure URL doesn't include 'permalink' as that indicates someone else sharing a post from within an event (eg: https://www.facebook.com/events/617323338414282/permalink/617324268414189/) and the event ID is then not retrieved properly from the event URL as it's formatted like so: facebook.com/events/EVENT_ID/permalink/POST_ID $event_link_check = stripos($news->link, $event_link_check); $event_link_check_2 = stripos($news->link, "permalink/"); if ($event_link_check && !$event_link_check_2) { $cff_post_type = 'event'; } } //Set the post link isset($news->link) ? $link = htmlspecialchars($news->link) : ($link = ''); //If there's no link provided then link to the individual post if (empty($news->link)) { //Link to individual post if (isset($PostID[1])) { $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } } //If it's an event then check whether the URL contains facebook.com if (isset($news->link)) { if (stripos($news->link, "events/") && $cff_post_type == 'event') { //Facebook changed the event link from absolute to relative, and so if the link isn't absolute then add facebook.com to front stripos($link, 'facebook.com') ? $link = $link : ($link = 'https://facebook.com' . $link); } } //Is it an album? $cff_album = false; $num_photos = 0; //The album check has to be done this way as checking for attachments/subattachments doesn't work as the posts which have the wrong posts IDs (the album ID instead of the post ID - see Facebook bug report) don't have any post attachments in the API even though they do on Facebook. if (isset($news->status_type)) { if ($news->status_type == 'added_photos') { //Check 'story' to see whether it contains a number isset($news->story) ? $str = $news->story : ($str = ''); //Only matches number with a space after them preg_match('!\\d+ !', $str, $matches); isset($matches[0]) ? $num_photos = $matches[0] : ($num_photos = 0); //If the story contains a number... if ($num_photos > 1) { //... and the link is to an album then it most likely has photo attachments $albumLinkArr1 = explode('photos/a.', $link); $albumLinkArr2 = explode('.', $albumLinkArr1[1]); //If it has an album link then set the post type to be album if (isset($albumLinkArr1[1])) { $cff_album = true; //If the post has subattachments then don't change the post ID to the album ID. If it doesn't then change it to the album ID so that we can at least show the photos from the album if (!isset($news->attachments)) { //Change the Post ID to be to the post about adding photos to the album $cff_post_id = $PostID[0] . '_' . $albumLinkArr2[0]; } //Link to the album instead of the photo $album_link = str_replace('photo.php?', 'media/set/?', $link); $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; //If the album link is a new format then link it to the post $album_link_check = 'media/set/?'; if (stripos($album_link, $album_link_check) !== true) { $album_link = $link; } } } } } //Should we show this post or not? $cff_show_post = false; switch ($cff_post_type) { case 'link': if ($cff_show_links_type) { $cff_show_post = true; } break; case 'event': if ($cff_show_event_type) { $cff_show_post = true; } break; case 'video': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'swf': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'photo': if ($cff_show_photos_type && !$cff_album) { $cff_show_post = true; } if ($cff_show_albums_type && $cff_album) { $cff_show_post = true; } break; case 'offer': //Show offer posts if links are shown if ($cff_show_links_type) { $cff_show_post = true; } break; case 'music': //Show music posts if statuses are shown if ($cff_show_status_type) { $cff_show_post = true; } break; case 'status': //Check whether it's a status (author comment or like) if ($cff_show_status_type && !empty($news->message)) { $cff_show_post = true; } break; } //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { //Always show the post if using the Featured Post extension $cff_show_post = true; if ($cff_show_links_type) { $cff_post_type = 'link'; } if ($cff_show_event_type) { $cff_post_type = 'event'; } if ($cff_show_video_type) { $cff_post_type = 'video'; } if ($cff_show_photos_type) { $cff_post_type = 'photo'; } if ($cff_show_albums_type) { $cff_post_type = 'album'; } if ($cff_show_status_type) { $cff_post_type = 'status'; } //If it's a status then use full-width layout by default if ($cff_post_type == 'status') { $cff_thumb_layout = false; $cff_half_layout = false; } } //ONLY show posts by others if ($cff_show_only_others) { //If the post author's ID is the same as the page ID then don't show the post if ($numeric_page_id == $news->from->id) { $cff_show_post = false; } } //Only show posts containing specified string //Get post text $post_text = ''; if (!empty($news->story)) { $post_text = $news->story; } if (!empty($news->message)) { $post_text = $news->message; } if (!empty($news->name) && empty($news->story) && empty($news->message)) { $post_text = $news->name; } //Get description text if (isset($news->description)) { $description_text = $news->description; } else { isset($news->caption) ? $description_text = $news->caption : ($description_text = ''); } //Get the filter string $cff_filter_string = $atts['filter']; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = true; $string_in_desc = true; if (cff_stripos_arr($post_text, $cff_filter_strings_array) === false) { $string_in_post_text = false; } if (cff_stripos_arr($description_text, $cff_filter_strings_array) === false) { $string_in_desc = false; } if ($string_in_post_text == false && $string_in_desc == false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = false; $string_in_desc = false; if (cff_stripos_arr($post_text, $cff_exclude_strings_array) !== false) { $string_in_post_text = true; } if (cff_stripos_arr($description_text, $cff_exclude_strings_array) !== false) { $string_in_desc = true; } if ($string_in_post_text == true || $string_in_desc == true) { $cff_show_post = false; } } //Is it a duplicate post? if (!isset($prev_post_message)) { $prev_post_message = ''; } if (!isset($prev_post_link)) { $prev_post_link = ''; } if (!isset($prev_post_description)) { $prev_post_description = ''; } isset($news->message) ? $pm = $news->message : ($pm = ''); isset($news->link) ? $pl = $news->link : ($pl = ''); isset($news->description) ? $pd = $news->description : ($pd = ''); if ($prev_post_message == $pm && $prev_post_link == $pl && $prev_post_description == $pd) { $cff_show_post = false; } //ALBUMS ONLY if ($cff_albums_only && $cff_albums_source == 'photospage') { $cff_show_post = true; } //ALBUM EMBED if ($cff_album_active && !empty($cff_album_id)) { $cff_show_post = true; } //PHOTOS ONLY if ($cff_photos_only) { $cff_show_post = true; } //VIDEOS ONLY if ($cff_videos_only) { $cff_show_post = true; } //Check post type and display post if selected if ($cff_show_post) { //If it isn't then create the post $cff_offset_show_post = true; //Offset. If the post index ($i) is less than the offset then don't show the post if (intval($i) < intval($atts['offset'])) { $cff_offset_show_post = false; $i++; } //If there's an offset then show the post until it's set to false above. This has been moved here so that the offset works correctly when only displaying specific post types, as previously it only worked accurately when all posts were shown if ($cff_offset_show_post) { if (!$cff_ext_multifeed_active) { //Only create posts for the amount of posts specified if (intval($atts['offset']) > 0) { //If offset is being used then stop after showing the number of posts + the offset if ($i == intval($show_posts) + intval($atts['offset'])) { break; } } else { //Else just stop after the number of posts to be displayed is reached, unless it's albums only or photos only if ($cff_albums_only && $cff_albums_source == 'photospage' || $cff_photos_only && empty($cff_album_id) || $cff_videos_only) { //Keep going } else { if ($i == $show_posts) { break; } } } } $i++; //********************************// //***COMPILE SECTION VARIABLES***// //********************************// //Change image size based on layout if (!empty($news->picture) && !empty($news->object_id)) { $object_id = $news->object_id; $picture = 'https://graph.facebook.com/' . $object_id . '/picture?type=normal&width=9999&height=9999'; } //DATE $cff_date_formatting = $atts['dateformat']; $cff_date_custom = $atts['datecustom']; isset($news->created_time) ? $post_time = $news->created_time : ($post_time = ''); $cff_date = '<p class="cff-date" ' . $cff_date_styles . '>' . $cff_date_before . ' ' . cff_getdate(strtotime($post_time), $cff_date_formatting, $cff_date_custom) . ' ' . $cff_date_after; $cff_date .= '</p>'; //Only run if NOT only showing photos from the photos page, or albums, or an album embed if (!$cff_photos_only && !$cff_videos_only && !($cff_albums_only && $cff_albums_source == 'photospage') && empty($cff_album_id)) { //POST AUTHOR $cff_author = '<div class="cff-author">'; //Author text $cff_author .= '<a href="https://facebook.com/' . $news->from->id . '" ' . $target . $cff_nofollow . ' title="' . $news->from->name . ' on Facebook" ' . $cff_author_styles . '><div class="cff-author-text">'; if ($cff_show_date && $cff_date_position !== 'above' && $cff_date_position !== 'below') { $cff_author .= '<p class="cff-page-name cff-author-date">' . $news->from->name . '</p>'; $cff_author .= $cff_date; } else { $cff_author .= '<span class="cff-page-name">' . $news->from->name . '</span>'; } $cff_author .= '</div>'; //Author image //Set the author image as a variable. If it already exists then don't query the api for it again. $cff_author_img_var = '$cff_author_img_' . $news->from->id; if (!isset(${$cff_author_img_var})) { ${$cff_author_img_var} = 'https://graph.facebook.com/' . $news->from->id . '/picture?type=square'; } $cff_author .= '<div class="cff-author-img"><img src="' . ${$cff_author_img_var} . '" title="' . $news->from->name . '" alt="' . $news->from->name . '" width=40 height=40></div>'; $cff_author .= '</a></div>'; //End .cff-author //POST TEXT $cff_post_text = '<' . $cff_title_format . ' class="cff-post-text" ' . $cff_title_styles . '>'; //Get the actual post text //Which content should we use? $post_text = ''; $cff_post_text_type = ''; $cff_story_raw = ''; $cff_message_raw = ''; $cff_name_raw = ''; $text_tags = ''; $post_text_story = ''; $post_text_message = ''; //MESSAGE TAGS $cff_post_tags = $atts['posttags']; //If the post tags option doesn't exist yet (ie. on plugin update) then set them as true if (!array_key_exists('cff_post_tags', $options)) { $cff_post_tags = true; } //Use the story if (!empty($news->story)) { $cff_story_raw = $news->story; $post_text_story .= htmlspecialchars($cff_story_raw); $cff_post_text_type = 'story'; //Add message and story tags if there are any and the post text is the message or the story if ($cff_post_tags && isset($news->story_tags) && !$cff_title_link) { $text_tags = $news->story_tags; //Does the Post Text contain any html tags? - the & symbol is the best indicator of this $cff_html_check_array = array('<', '’', '“', '"', '&', '>>'); //always use the text replace method if (cff_stripos_arr($post_text_story, $cff_html_check_array) !== false) { //Loop through the tags foreach ($text_tags as $message_tag) { $tag_name = $message_tag[0]->name; $tag_link = '<a href="http://facebook.com/' . $message_tag[0]->id . '">' . $message_tag[0]->name . '</a>'; $post_text_story = str_replace($tag_name, $tag_link, $post_text_story); } } else { //If it doesn't contain HTMl tags then use the offset to replace message tags $message_tags_arr = array(); $tag = 0; foreach ($text_tags as $message_tag) { $tag++; isset($message_tag[0]->type) ? $tag_type = $message_tag[0]->type : ($tag_type = ''); if ($tag_type == 'event' || count($message_tag) > 1) { //Don't use the story tag in this case otherwise it changes '__ created an event' to '__ created an Name Of Event' } else { $message_tags_arr = cff_array_push_assoc($message_tags_arr, $tag, array('id' => $message_tag[0]->id, 'name' => $message_tag[0]->name, 'type' => isset($message_tag[0]->type) ? $message_tag[0]->type : '', 'offset' => $message_tag[0]->offset, 'length' => $message_tag[0]->length)); } } for ($tag = count($message_tags_arr); $tag >= 1; $tag--) { //If the name is blank (aka the story tag doesn't work properly) then don't use it if ($message_tags_arr[$tag]['name'] !== '') { if ($message_tags_arr[$tag]['type'] == 'event') { //Don't use the story tag in this case otherwise it changes '__ created an event' to '__ created an Name Of Event' } else { $b = '<a href="http://facebook.com/' . $message_tags_arr[$tag]['id'] . '">' . $message_tags_arr[$tag]['name'] . '</a>'; $c = $message_tags_arr[$tag]['offset']; $d = $message_tags_arr[$tag]['length']; $post_text_story = cff_mb_substr_replace($post_text_story, $b, $c, $d); } } } } // end if/else } //END MESSAGE TAGS } //Use the message if (!empty($news->message)) { $cff_message_raw = $news->message; $post_text_message = htmlspecialchars($cff_message_raw); $cff_post_text_type = 'message'; //Add message and story tags if there are any and the post text is the message or the story if ($cff_post_tags && isset($news->message_tags) && !$cff_title_link) { $text_tags = $news->message_tags; //Does the Post Text contain any html tags? - the & symbol is the best indicator of this $cff_html_check_array = array('<', '’', '“', '"', '&', '>>'); //always use the text replace method if (cff_stripos_arr($post_text_message, $cff_html_check_array) !== false) { //Loop through the tags foreach ($text_tags as $message_tag) { $tag_name = $message_tag[0]->name; $tag_link = '<a href="http://facebook.com/' . $message_tag[0]->id . '">' . $message_tag[0]->name . '</a>'; $post_text_message = str_replace($tag_name, $tag_link, $post_text_message); } } else { //If it doesn't contain HTMl tags then use the offset to replace message tags $message_tags_arr = array(); $tag = 0; foreach ($text_tags as $message_tag) { $tag++; $message_tags_arr = cff_array_push_assoc($message_tags_arr, $tag, array('id' => $message_tag[0]->id, 'name' => $message_tag[0]->name, 'type' => isset($message_tag[0]->type) ? $message_tag[0]->type : '', 'offset' => $message_tag[0]->offset, 'length' => $message_tag[0]->length)); } for ($tag = count($message_tags_arr); $tag >= 1; $tag--) { //If the name is blank (aka the story tag doesn't work properly) then don't use it if ($message_tags_arr[$tag]['name'] !== '') { $b = '<a href="http://facebook.com/' . $message_tags_arr[$tag]['id'] . '">' . $message_tags_arr[$tag]['name'] . '</a>'; $c = $message_tags_arr[$tag]['offset']; $d = $message_tags_arr[$tag]['length']; $post_text_message = cff_mb_substr_replace($post_text_message, $b, $c, $d); } } } // end if/else } //END MESSAGE TAGS } //Add the story and message together $post_text = '<span class="cff-story">' . $post_text_story; if (!empty($post_text_story) && !empty($post_text_message)) { $post_text .= "<br /><br />"; } $post_text .= '</span>'; //Check to see whether it's an embedded video so that we can show the name above the post text if necessary $cff_soundcloud = false; $cff_is_video_embed = false; if ($news->type == 'video') { $url = $news->source; //Embeddable video strings $youtube = 'youtube'; $youtu = 'youtu'; $vimeo = 'vimeo'; $youtubeembed = 'youtube.com/embed'; $soundcloud = 'player.soundcloud.com'; $swf = '.swf'; //Check whether it's a youtube video $youtube = stripos($url, $youtube); $youtu = stripos($url, $youtu); $youtubeembed = stripos($url, $youtubeembed); //Check whether it's a SoundCloud embed $soundcloudembed = stripos($url, $soundcloud); //Check whether it's a youtube video if ($youtube || $youtu || $youtubeembed || stripos($url, $vimeo) !== false) { $cff_is_video_embed = true; } //If it's soundcloud then add it into the shared link box at the bottom of the post if ($soundcloudembed) { $cff_soundcloud = true; } //If the name exists and it's a non-embedded video then show the name at the top of the post text if (isset($news->name) && !$cff_is_video_embed) { if (empty($post_text_message)) { $post_text .= "<br /><br />"; } if (!$cff_title_link) { $post_text .= '<a href="' . $link . '" ' . $target . $cff_nofollow . ' style="color: #' . $cff_posttext_link_color . '">'; } $post_text .= htmlspecialchars($news->name); if (!$cff_title_link) { $post_text .= '</a>'; } $post_text .= '<br />'; } } //Add the message $post_text .= $post_text_message; //Use the name if (!empty($news->name) && empty($news->story) && empty($news->message)) { $cff_name_raw = $news->name; $post_text = htmlspecialchars($cff_name_raw); $cff_post_text_type = 'name'; } // if ($cff_album) { // if (!empty($news->name)) { // $post_text .= htmlspecialchars($news->name); // $cff_post_text_type = 'name'; // } // // if (!empty($news->message) && empty($news->name)) { // if (!empty($news->message)) { // $post_text .= htmlspecialchars($news->message); // $cff_post_text_type = 'message'; // } // // if ($num_photos > 1) $post_text .= ' (' . trim($num_photos) . ' '.$cff_translate_photos_text.')'; // } //OFFER TEXT if ($cff_post_type == 'offer') { isset($news->story) ? $post_text = htmlspecialchars($news->story) . '<br /><br />' : ($post_text = ''); $post_text .= htmlspecialchars($news->name); $cff_post_text_type = 'story'; } //Start HTML for post text $cff_post_text .= '<span class="cff-text" data-color="' . $cff_posttext_link_color . '">'; if ($cff_title_link) { $cff_post_text .= '<a class="cff-post-text-link" ' . $cff_title_styles . ' href="' . $link . '" ' . $target . $cff_nofollow . '>'; } //Replace line breaks in text (needed for IE8) $post_text = preg_replace("/\r\n|\r|\n/", '<br/>', $post_text); //If the text is wrapped in a link then don't hyperlink any text within if ($cff_title_link) { //Wrap links in a span so we can break the text if it's too long $cff_post_text .= cff_wrap_span($post_text) . ' '; } else { //Don't use htmlspecialchars for post_text as it's added above so that it doesn't mess up the message_tag offsets $cff_post_text .= cff_autolink($post_text) . ' '; } if ($cff_title_link) { $cff_post_text .= '</a>'; } $cff_post_text .= '</span>'; //'See More' link $cff_post_text .= '<span class="cff-expand">... <a href="#" style="color: #' . $cff_posttext_link_color . '"><span class="cff-more">' . $cff_see_more_text . '</span><span class="cff-less">' . $cff_see_less_text . '</span></a></span>'; $cff_post_text .= '</' . $cff_title_format . '>'; // $cff_post_text .= '</div>'; //DESCRIPTION $cff_description = ''; if (!empty($news->description) || !empty($news->caption)) { $description_text = ''; if (!empty($news->description)) { $description_text = $news->description; } else { $description_text = $news->caption; } //If the description is the same as the post text then don't show it if ($description_text == $cff_story_raw || $description_text == $cff_message_raw || $description_text == $cff_name_raw) { $cff_description = ''; } else { //Truncate desc if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } //Add links and create HTML $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_autolink(htmlspecialchars($description_text), $link_color = $cff_posttext_link_color) . ' </span></p>'; } if ($cff_post_type == 'event') { $cff_description = ''; } } //LINK $cff_shared_link = ''; //Display shared link if ($cff_post_type == 'link' || $cff_soundcloud) { if ($cff_soundcloud) { //Put this here so that is also hidden when hiding shared links in the Post Layout settings if ($cff_soundcloud) { $cff_shared_link .= '<iframe class="cff-soundcloud" width="100%" height="100" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=' . $news->link . '&auto_play=false&hide_related=true&show_comments=false&show_user=true&show_reposts=false&visual=false"></iframe>'; } } else { $cff_shared_link .= '<div class="cff-shared-link'; if ($cff_disable_link_box) { $cff_shared_link .= ' cff-no-styles'; } if ($cff_full_link_images) { $cff_shared_link .= ' cff-full-size'; } $cff_shared_link .= '" '; if (!$cff_disable_link_box) { $cff_shared_link .= $cff_link_box_styles; } $cff_shared_link .= '>'; $cff_link_image = ''; if (isset($news->picture)) { if (!empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } if (isset($news->picture) && !empty($news->picture)) { $picture = $news->picture; } isset($news->full_picture) && !empty($news->full_picture) ? $full_picture = $news->full_picture : ($full_picture = $picture); //Set the link image to be the full-size image if ($cff_full_link_images) { $picture = $news->full_picture; } } //Check whether the image is a 1x1 placeholder $cff_link_image = true; $cff_one_x_one = '1x1.'; if (stripos($news->picture, $cff_one_x_one) == true || empty($news->picture)) { $cff_link_image = false; } //If there's a picture accompanying the link then display it if ($cff_link_image && $cff_show_media) { $cff_shared_link .= '<a class="cff-link" href="' . $link . '" ' . $target . $cff_nofollow . ' data-full="' . $full_picture . '">'; $cff_shared_link .= '<img src="' . $picture . '" />'; $cff_shared_link .= '</a>'; } } //Display link name and description // if (!empty($news->description)) { $cff_shared_link .= '<div class="cff-text-link '; if (!$cff_link_image) { $cff_shared_link .= 'cff-no-image'; } //The link title: $cff_shared_link .= '"><' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_link_title_color . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; //The link source: !empty($news->caption) ? $cff_link_caption = $news->caption : ($cff_link_caption = ''); if (!empty($cff_link_caption)) { $cff_shared_link .= '<p class="cff-link-caption" style="color:#' . str_replace('#', '', $cff_link_url_color) . ';">' . $cff_link_caption . '</p>'; } if ($cff_show_desc) { if ($description_text != $cff_link_caption) { $cff_shared_link .= $cff_description; } } $cff_shared_link .= '</div>'; // } $cff_shared_link .= '</div>'; } //End soundcloud check } //EVENT $cff_event = ''; if ($cff_show_event_title || $cff_show_event_details) { //Check for media if ($cff_post_type == 'event') { //Get the event id from the event URL. eg: http://www.facebook.com/events/123451234512345/ $event_url = parse_url($link); $url_parts = explode('/', $event_url['path']); //Get the id from the parts $eventID = $url_parts[count($url_parts) - 2]; //Facebook changed the event link from absolute to relative, and so if the link isn't absolute then add facebook.com to front stripos($link, 'facebook.com') ? $link = $link : ($link = 'https://facebook.com' . $link); //New tokens which are 2.3 and newer don't allow us to get the location or venue of timeline events so use older tokens for timeline events $access_token = $access_token_array_fql[rand(0, 4)]; //Get the contents of the event // $event_json_url = 'https://graph.facebook.com/'.$eventID.'?access_token=' . $access_token . $cff_ssl; $event_json_url = 'https://graph.facebook.com/v2.2/' . $eventID . '?fields=description,location,name,owner,start_time,timezone,venue,id,likes,comments&access_token=' . $access_token . $cff_ssl; //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_tl_event_json_' . $eventID; if (false === ($event_json = get_transient($transient_name)) || $event_json === null) { //Get the contents of the Facebook page $event_json = cff_fetchUrl($event_json_url); //Cache the JSON set_transient($transient_name, $event_json, $cache_seconds); } else { $event_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($event_json == false) { $event_json = cff_fetchUrl($event_json_url); } } } else { $event_json = cff_fetchUrl($event_json_url); } //Interpret data with JSON $event_object = json_decode($event_json); //Picture if ($cff_show_media) { $cff_event .= '<a title="' . $cff_facebook_link_text . '" class="cff-event-thumb" href="' . $link . '" ' . $target . $cff_nofollow . '><img src="https://graph.facebook.com/' . $eventID . '/picture?width=200&height=200" alt="' . $cff_facebook_link_text . '" /></a>'; } //Event date isset($event_object->start_time) ? $event_time = $event_object->start_time : ($event_time = ''); isset($event_object->end_time) ? $event_end_time = ' - <span class="cff-end-date">' . cff_eventdate(strtotime($event_object->end_time), $cff_event_date_formatting, $cff_event_date_custom) . '</span>' : ($event_end_time = ''); //If timezone migration is enabled then remove last 5 characters if (strlen($event_time) == 24) { $event_time = substr($event_time, 0, -5); } $cff_event_date = ''; if (!empty($event_time)) { $cff_event_date = '<p class="cff-date" ' . $cff_event_date_styles . '><span class="cff-start-date">' . cff_eventdate(strtotime($event_time), $cff_event_date_formatting, $cff_event_date_custom) . '</span>' . $event_end_time . '</p>'; } //EVENT //Display the event details $cff_event .= '<div class="cff-details">'; //show event date above title if ($cff_event_date_position == 'above') { $cff_event .= $cff_event_date; } //Show event title if ($cff_show_event_title && !empty($event_object->name)) { if ($cff_event_title_link) { $cff_event .= '<a href="' . $link . '" ' . $target . $cff_nofollow . '>'; } $cff_event .= '<' . $cff_event_title_format . ' ' . $cff_event_title_styles . '>' . $event_object->name . '</' . $cff_event_title_format . '>'; if ($cff_event_title_link) { $cff_event .= '</a>'; } } //show event date below title if ($cff_event_date_position !== 'above') { $cff_event .= $cff_event_date; } //Show event details if ($cff_show_event_details) { //Location if (!empty($event_object->location)) { $cff_event .= '<p class="cff-where" ' . $cff_event_details_styles . '>' . $event_object->location . '</p>'; } //Description if (!empty($event_object->description)) { $description = $event_object->description; if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $description = substr($description, 0, $body_limit) . '...'; } } $cff_event .= '<p class="cff-info" ' . $cff_event_details_styles . '>' . cff_autolink($description, $link_color = $cff_event_link_color) . '</p>'; } } $cff_event .= '</div>'; } } //MEDIA $cff_media = ''; //If it's a photo or a Featured post which is an image if ($news->type == 'photo' || $news->type == 'offer' || $cff_featured_post_active && !empty($atts['featuredpost']) && isset($news->images)) { if ($cff_post_type == 'offer' && !empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $link_text = $cff_facebook_link_text; $cff_media = '<a title="' . $link_text . '" class="cff-photo'; if ($cff_media_position == 'above') { $cff_media .= ' cff-media-above'; } $cff_media .= '" href="'; //If it's an album then link the photo to the album if ($cff_album) { $link = $album_link; } //If it's a shared post then change the link to use the Post ID so that it links to the shared post and not the original post that's being shared if (isset($news->status_type)) { if ($news->status_type == 'shared_story') { $link = "https://www.facebook.com/" . $cff_post_id; } } $cff_media .= $link . '" ' . $target . $cff_nofollow . '>'; //Alt text isset($news->caption) ? $cff_alt_text = strip_tags($news->caption) : ($cff_alt_text = $cff_facebook_link_text); // if ($cff_album && $num_photos > 1) $cff_media .= '<div class="cff-album-icon">'.$num_photos.'</div>'; if ($cff_album) { $cff_media .= '<div class="cff-album-icon"></div>'; } $cff_media .= '<img src="' . $picture . '" alt="' . $cff_alt_text . '" />'; $cff_media .= '</a>'; } if ($news->type == 'swf') { if (!empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } $cff_swf_url = 'http://www.facebook.com/permalink.php?story_fbid=' . $PostID["1"] . '&id=' . $PostID['0']; $cff_media = '<a href="' . $cff_swf_url . '" class="cff-photo'; if ($cff_media_position == 'above') { $cff_media .= ' cff-media-above'; } $cff_media .= '" ' . $target . $cff_nofollow . '><img src="' . $picture . '" /></a>'; } if ($news->type == 'video' && !$cff_soundcloud) { if (!empty($news->picture)) { $picture = $news->picture; // $object_id = $news->object_id; // $picture = 'https://graph.facebook.com/'.$object_id.'/picture?type=normal&width=9999&height=9999'; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } // url of video $url = $news->source; //Check whether it's a youtube video if ($youtube || $youtu || $youtubeembed) { //Get the unique video id from the url by matching the pattern if ($youtube || $youtubeembed) { if (preg_match("/v=([^&]+)/i", $url, $matches)) { $id = $matches[1]; } elseif (preg_match("/\\/v\\/([^&]+)/i", $url, $matches)) { $id = $matches[1]; } elseif (preg_match("/\\/embed\\/([^&]+)/i", $url, $matches)) { $id = $matches[1]; } } elseif ($youtu) { $id = end(explode('/', $url)); } $id = substr($id, 0, strrpos($id, '?')); // this is your template for generating embed codes $code = '<iframe class="youtube-player" type="text/html" src="https://www.youtube.com/embed/{id}" allowfullscreen></iframe>'; // we replace each {id} with the actual ID of the video to get embed code for this particular video $code = str_replace('{id}', $id, $code); $cff_media_video = '<div class="cff-iframe-wrap" data-poster="' . $picture . '"'; if (!empty($cff_video_height)) { $cff_media_video .= 'style="height: ' . $cff_video_height . '"'; } $cff_media_video .= '>'; if ($cff_video_action == 'facebook') { $cff_media_video .= '<a href="http://facebook.com/' . $cff_post_id . '" target="_blank" class="cff-media-overlay"></a>'; } $cff_media_video .= $code . '</div>'; //Check whether it's a vimeo } else { if (stripos($url, $vimeo) !== false) { if (isset($news->source)) { $clip_id = ''; //http://vimeo.com/moogaloop.swf?clip_id=101557016&autoplay=1 $query = parse_url($news->source, PHP_URL_QUERY); parse_str($query, $params); if (isset($params['clip_id'])) { $clip_id = $params['clip_id']; } //https://player.vimeo.com/video/116446625?autoplay=1 if (!isset($clip_id) || $clip_id == '') { $vimeo_url = strtok($news->source, '?'); $clip_id = end(explode('/', $vimeo_url)); } $cff_media_video = '<div class="cff-iframe-wrap" data-poster="' . $picture . '"'; if (!empty($cff_video_height)) { $cff_media_video .= 'style="height: ' . $cff_video_height . '"'; } $cff_media_video .= '>'; if ($cff_video_action == 'facebook') { $cff_media_video .= '<a href="http://facebook.com/' . $cff_post_id . '" target="_blank" class="cff-media-overlay"></a>'; } $cff_media_video .= '<iframe src="https://player.vimeo.com/video/' . $clip_id . '" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div>'; } //Else link to the video file } else { //Show play button over video thumbnail $vid_link = $news->source; //Check whether the video source contains an mp4, as the HTML5 video player can't play any other type $cff_mp4_check = stripos($vid_link, '.mp4'); if ($cff_video_action == 'facebook' && $cff_disable_lightbox) { $vid_link = $link; } //Title & alt text isset($news->name) ? $vid_title = $news->name : ($vid_title = $cff_facebook_link_text); if (empty($picture)) { $cff_is_video_embed = true; $cff_media_video = '<a class="cff-playbtn-solo" title="' . $vid_title . '" href="' . $vid_link . '" target="_blank"><i class="fa fa-play cff-playbtn no-poster"></i></a>'; } isset($news->full_picture) && !empty($news->full_picture) ? $poster = $news->full_picture : ($poster = $picture); //Check to see whether it's a swf file and if it is then load it into an iframe in the lightbox stripos($url, $swf) !== false ? $swf_file = true : ($swf_file = false); //If the video action is file then add the HTML5 video tags $cff_media_video = ''; if ($cff_video_action !== 'facebook' && $cff_mp4_check || !$cff_disable_lightbox) { $cff_media_video .= '<div class="cff-html5-video'; if ($swf_file) { $cff_media_video .= ' cff-swf'; } $cff_media_video .= '"><a href="http://facebook.com/' . $cff_post_id . '" class="cff-html5-play"><i class="fa fa-play cff-playbtn"></i></a><video src="' . $vid_link . '" poster="' . $poster . '" >'; } $cff_media_video .= '<a title="' . $vid_title . '" class="cff-vidLink" href="' . $link . '" ' . $target . $cff_nofollow . '><i class="fa fa-play cff-playbtn"></i><img class="cff-poster" src="' . $poster . '" alt="' . $vid_title . '" /></a>'; if ($cff_video_action !== 'facebook' && $cff_mp4_check || !$cff_disable_lightbox) { $cff_media_video .= '</video></div>'; } } } //Add video to HTML $cff_media = $cff_media_video; //Add the name to the description if it's a video embed if ($cff_is_video_embed) { $cff_description = '<div class="cff-desc-wrap '; if (empty($picture)) { $cff_description .= 'cff-no-image'; } $cff_description .= '"><' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_link_title_color . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_autolink(htmlspecialchars($description_text), $link_color = $cff_posttext_link_color) . ' </span></p></div>'; } } //META //how many comments are there? $comment_count = 0; $comment_count_display = '0'; //Save the original $news object to a variable so can use it after the comments section $news_event = $news; //If it's a timeline event then switch to the event_object variable which contains the comments if ($cff_post_type == 'event') { $news = $event_object; } if (!empty($news->comments)) { $comment_count = count($news->comments->data); $comment_count_display = $comment_count; if ($comment_count > 20) { //If count is more than 20 then it could be in the cached array $item_arr_name = $cff_post_id . '_comments'; //If the transient doesn't exist if (false === ($cff_cached_meta = get_transient('cff_meta'))) { $comment_count_display = '<div class="cff-loader fa-spin"></div><span class="cff-replace">20+</span>'; } else { if (empty($cff_cached_meta[$item_arr_name])) { $comment_count_display = '<div class="cff-loader fa-spin"></div><span class="cff-replace">20+</span>'; } else { //load corresponding count from array in transient $comment_count_display = $cff_cached_meta[$item_arr_name]; } } } } $cff_meta_total = '<div class="cff-meta-wrap">'; //Check for likes $cff_meta = ''; $cff_meta .= '<a href="javaScript:void(0);" class="cff-view-comments" ' . $cff_meta_styles . ' id="' . $orig_post_id . '"><ul class="cff-meta '; $cff_meta .= $cff_icon_style; $cff_meta .= '"><li class="cff-likes"><span class="cff-icon">Likes:</span> <span class="cff-count">'; //How many likes are there? if (!empty($news->likes)) { $like_count = count($news->likes->data); } else { $like_count = '0'; } //If there is no likes then display zero if ($like_count == 0) { $cff_meta .= '0'; } else { if ($like_count < 25) { $cff_meta .= $like_count; } else { //If count is more than 20 then it could be in the cached array $item_arr_name = $cff_post_id . '_likes'; //If the transient doesn't exist if (false === ($cff_cached_meta = get_transient('cff_meta'))) { $cff_meta .= '<div class="cff-loader fa-spin"></div><span class="cff-replace">' . $like_count . '+</span>'; } else { if (empty($cff_cached_meta[$item_arr_name])) { $cff_meta .= '<div class="cff-loader fa-spin"></div><span class="cff-replace">' . $like_count . '+</span>'; } else { //load corresponding count from array in transient //like_count var is also used in the -2 line inside the comments box $like_count = $cff_cached_meta[$item_arr_name]; $cff_meta .= $like_count; } } } } //Check for shares $cff_meta .= '</span></li><li class="cff-shares"><span class="cff-icon">Shares:</span> <span class="cff-count">'; if (empty($news->shares->count)) { $cff_meta .= '0'; } else { $cff_meta .= $news->shares->count; } //Check for comments $cff_meta .= '</span></li><li class="cff-comments"><span class="cff-icon">Comments:</span> <span class="cff-count">'; //How many comments are there? $cff_meta .= $comment_count_display; $cff_meta .= '</span></li></ul></a>'; //Display the link to the Facebook post or external link $cff_link = ''; //Default link $cff_viewpost_class = 'cff-viewpost-facebook'; if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $link_text = $cff_facebook_link_text; //Link to the Facebook post if it's a link or a video if ($cff_post_type == 'link' || $cff_post_type == 'video') { $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } //If Featured Post extension then change the $link var based on whether a full or half post ID is used if ($cff_featured_post_active && !empty($atts['featuredpost'])) { //If the post type is a link or a video (other link types have the link included in the JSON) if ($cff_post_type == 'link' || $cff_post_type == 'video') { if (stripos($cff_post_id, '_') !== false) { //If using the full post ID with an underscore then create the link like this: $link = "https://www.facebook.com/" . $PostID[0] . "/posts/" . $PostID[1]; } else { //If just using the short ID then create the link like this: $link = "https://www.facebook.com/" . $cff_post_id; } } } //If it's a shared post then change the link to use the Post ID so that it links to the shared post and not the original post that's being shared if (isset($news->status_type)) { if ($news->status_type == 'shared_story') { $link = "https://www.facebook.com/" . $cff_post_id; } } //Social media sharing URLs $cff_share_facebook = 'https://www.facebook.com/sharer/sharer.php?u=' . urlencode($link); $cff_share_twitter = 'https://twitter.com/intent/tweet?text=' . urlencode($link); $cff_share_google = 'https://plus.google.com/share?url=' . urlencode($link); $cff_share_linkedin = 'https://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($link) . '&title=' . rawurlencode(strip_tags($cff_post_text)); $cff_share_email = 'mailto:?subject=Facebook&body=' . urlencode($link) . '%20-%20' . rawurlencode(strip_tags($cff_post_text)); //If it's an offer post then change the text if ($cff_post_type == 'offer') { $link_text = 'View Offer'; } //Create post action links HTML $cff_link = ''; if ($cff_show_facebook_link || $cff_show_facebook_share) { $cff_link .= '<div class="cff-post-links">'; //View on Facebook link if ($cff_show_facebook_link) { $cff_link .= '<a class="' . $cff_viewpost_class . '" href="' . $link . '" title="' . $link_text . '" ' . $target . $cff_nofollow . ' ' . $cff_link_styles . '>' . $link_text . '</a>'; } //Share link if ($cff_show_facebook_share) { $cff_link .= '<div class="cff-share-container">'; //Only show separating dot if both links are enabled if ($cff_show_facebook_link) { $cff_link .= '<span class="cff-dot" ' . $cff_link_styles . '>·</span>'; } $cff_link .= '<a class="cff-share-link" href="javascript:void(0);" title="' . $cff_facebook_share_text . '" ' . $cff_link_styles . '>' . $cff_facebook_share_text . '</a>'; $cff_link .= "<p class='cff-share-tooltip'><a href='" . $cff_share_facebook . "' target='_blank' class='cff-facebook-icon'><i class='fa fa-facebook-square'></i></a><a href='" . $cff_share_twitter . "' target='_blank' class='cff-twitter-icon'><i class='fa fa-twitter'></i></a><a href='" . $cff_share_google . "' target='_blank' class='cff-google-icon'><i class='fa fa-google-plus'></i></a><a href='" . $cff_share_linkedin . "' target='_blank' class='cff-linkedin-icon'><i class='fa fa-linkedin'></i></a><a href='" . $cff_share_email . "' target='_blank' class='cff-email-icon'><i class='fa fa-envelope'></i></a><i class='fa fa-play fa-rotate-90'></i></p></div>"; } $cff_link .= '</div>'; } //Compile the meta and link if included if ($cff_show_link) { $cff_meta_total .= $cff_link; } if ($cff_show_meta) { $cff_meta_total .= $cff_meta; } $cff_meta_total .= '</div>'; $cff_comments = ''; //Get custom text strings $cff_translate_view_previous_comments_text = $atts['previouscommentstext']; $cff_translate_comment_on_facebook_text = $atts['commentonfacebooktext']; $cff_translate_likes_this_text = $atts['likesthistext']; $cff_translate_like_this_text = $atts['likethistext']; $cff_translate_and_text = $atts['andtext']; $cff_translate_other_text = $atts['othertext']; $cff_translate_others_text = $atts['otherstext']; if (!isset($cff_translate_view_previous_comments_text) || empty($cff_translate_view_previous_comments_text)) { $cff_translate_view_previous_comments_text = 'View previous comments'; } if (!isset($cff_translate_comment_on_facebook_text) || empty($cff_translate_comment_on_facebook_text)) { $cff_translate_comment_on_facebook_text = 'Comment on Facebook'; } if (!isset($cff_translate_likes_this_text) || empty($cff_translate_likes_this_text)) { $cff_translate_likes_this_text = 'likes this'; } if (!isset($cff_translate_like_this_text) || empty($cff_translate_like_this_text)) { $cff_translate_like_this_text = 'like this'; } if (!isset($cff_translate_and_text) || empty($cff_translate_and_text)) { $cff_translate_and_text = 'and'; } if (!isset($cff_translate_other_text) || empty($cff_translate_other_text)) { $cff_translate_other_text = 'other'; } if (!isset($cff_translate_others_text) || empty($cff_translate_others_text)) { $cff_translate_others_text = 'others'; } //Create the comments box $cff_comments .= '<div class="cff-comments-box ' . $cff_icon_style; if ($comment_count == 0 || $cff_comments_num == 0) { $cff_comments .= ' cff-no-comments'; } $cff_comments .= '"'; //Expand comments box initially if ($cff_expand_comments) { $cff_comments .= ' style="display: block;"'; } //Number of comments to show initially $cff_comments .= ' data-num="' . $cff_comments_num . '"'; $cff_comments .= '>'; //Get the likes if (!empty($news->likes->data)) { $liker_one = ''; $liker_two = ''; if ($news->likes->data[0]) { $liker_one = '<a href="https://facebook.com/' . $news->likes->data[0]->id . '" ' . $cff_meta_link_color . ' ' . $target . $cff_nofollow . '>' . $news->likes->data[0]->name . '</a>'; } if ($like_count > 1) { $liker_two = '<a href="https://facebook.com/' . $news->likes->data[1]->id . '" ' . $cff_meta_link_color . ' ' . $target . $cff_nofollow . '>' . $news->likes->data[1]->name . '</a>'; } if ($like_count > 0) { $cff_comments .= '<p class="cff-comment-likes cff-likes" ' . $cff_meta_styles . '><span class="cff-icon"></span>'; } if ($like_count == 1) { $cff_comments .= $liker_one . ' ' . $cff_translate_likes_this_text; } else { if ($like_count == 2) { $cff_comments .= $liker_one . ' ' . $cff_translate_and_text . ' ' . $liker_two . ' ' . $cff_translate_like_this_text; } else { if ($like_count == 3) { $cff_comments .= $liker_one . ', ' . $liker_two . ' ' . $cff_translate_and_text . ' 1 ' . $cff_translate_other_text . ' ' . $cff_translate_like_this_text; } else { $cff_comments .= $liker_one . ', ' . $liker_two . ' ' . $cff_translate_and_text . ' '; if ($like_count == 25) { $cff_comments .= '<span class="cff-comment-likes-count">'; } $cff_comments .= intval($like_count) - 2; if ($like_count == 25) { $cff_comments .= '</span>'; } $cff_comments .= ' ' . $cff_translate_others_text . ' ' . $cff_translate_like_this_text; } } } if ($like_count > 0) { $cff_comments .= '</p>'; } } //Show more comments if ($comment_count > $cff_comments_num) { $cff_comments .= '<p class="cff-comments cff-show-more-comments" ' . $cff_meta_styles . '><a href="javascript:void(0);" ' . $cff_meta_link_color . '><span class="cff-icon"></span>' . $cff_translate_view_previous_comments_text . '</a></p>'; } //Get the comments if (!empty($news->comments->data)) { //Give the comment an index so we know which one it is $comment_index = 0; //Loop through comments foreach ($news->comments->data as $comment_item) { $comment_likes = $comment_item->like_count; $comment = htmlspecialchars($comment_item->message); //MESSAGE TAGS if ($cff_post_tags && isset($comment_item->message_tags)) { //Loop through the tags and use the name to replace them foreach ($comment_item->message_tags as $message_tag) { $tag_name = $message_tag->name; $tag_link = '<a href="http://facebook.com/' . $message_tag->id . '" ' . $target . $cff_nofollow . ' ' . $cff_meta_link_color . '>' . $message_tag->name . '</a>'; $comment = str_replace($tag_name, $tag_link, $comment); } } //END MESSAGE TAGS //Create comments $cff_comments .= '<div class="cff-comment" id="cff_' . $comment_item->from->id . '" data-id="' . $comment_item->from->id . '" ' . $cff_meta_styles . '>'; $cff_comments .= '<div class="cff-comment-text-wrapper">'; $cff_comments .= '<div class="cff-comment-text'; if ($cff_hide_comment_avatars) { $cff_comments .= ' cff-no-image'; } $cff_comments .= '"><p><a href="https://facebook.com/' . $comment_item->from->id . '" class="cff-name" ' . $target . $cff_nofollow . ' ' . $cff_meta_link_color . '>' . $comment_item->from->name . '</a>' . cff_autolink($comment, $link_color = str_replace('#', '', $atts['sociallinkcolor'])) . '</p>'; //Add image attachment if exists if (isset($comment_item->attachment)) { $cff_comments .= '<a class="cff-comment-attachment" href="' . $comment_item->attachment->url . '" target="_blank"><img src="' . $comment_item->attachment->media->image->src . '" alt="' . $comment_item->attachment->title . '" /></a>'; } $cff_comments .= '<span class="cff-time">'; $cff_comments .= cff_timeSince(strtotime($comment_item->created_time)) . ' ' . $cff_date_after; if ($comment_likes > 0) { $cff_comments .= '<span class="cff-comment-likes"> · <b></b>' . $comment_likes . '</span>'; } $cff_comments .= '</span>'; $cff_comments .= '</div>'; //End .cff-comment-text $cff_comments .= '</div>'; //End .cff-comment-text-wrapper $cff_comments .= '<div class="cff-comment-img"><a href="https://facebook.com/' . $comment_item->from->id . '" ' . $target . $cff_nofollow . '>'; //Only load the comment avatars if they're being displayed initially, otherwise load via JS on click if (!$cff_hide_comment_avatars) { if ($cff_expand_comments && $comment_index >= $comment_count - $cff_comments_num) { $cff_comments .= '<img src="https://graph.facebook.com/' . $comment_item->from->id . '/picture" width=32 height=32 alt="' . $comment_item->from->name . '">'; } else { $cff_comments .= '<img src="' . plugins_url('/img/avatar.png', __FILE__) . '" width=32 height=32 alt="Avatar">'; } } $cff_comments .= '</a></div>'; $cff_comments .= '</div>'; //End .cff-comment $comment_index++; } } $cff_comments .= '<p class="cff-comments cff-comment-on-facebook" ' . $cff_meta_styles . '><a href="' . $link . '" ' . $target . $cff_nofollow . ' ' . $cff_meta_link_color . '><span class="cff-icon"></span>' . $cff_translate_comment_on_facebook_text . '</a></p>'; $cff_comments .= '</div>'; //Compile comments if meta is included if ($cff_show_meta) { $cff_meta_total .= $cff_comments; } //If it's an event then set the $news object back to the original posts data rather than the new event data object used to get the comments for the event if ($cff_post_type == 'event') { $news = $news_event; } //**************************// //***CREATE THE POST HTML***// //**************************// //Start the container $cff_post_item .= '<div class="cff-item '; if ($cff_post_type == 'link') { $cff_post_item .= 'cff-link-item'; } if ($cff_post_type == 'event') { $cff_post_item .= 'cff-timeline-event'; } if ($cff_post_type == 'photo') { $cff_post_item .= 'cff-photo-post'; } if ($cff_post_type == 'video' && !$cff_soundcloud) { $cff_post_item .= 'cff-video-post'; } if ($cff_soundcloud) { $cff_post_item .= 'cff-audio-post'; } if ($cff_is_video_embed) { $cff_post_item .= ' cff-embedded-video'; } if ($cff_post_type == 'swf') { $cff_post_item .= 'cff-swf-post'; } if ($cff_post_type == 'status') { $cff_post_item .= 'cff-status-post'; } if ($cff_post_type == 'offer') { $cff_post_item .= 'cff-offer-post'; } if ($cff_album) { $cff_post_item .= ' cff-album'; } if ($cff_post_bg_color_check) { $cff_post_item .= ' cff-box'; } $cff_post_item .= ' author-'; if (isset($news->from->name)) { $cff_post_item .= cff_to_slug($news->from->name); } $cff_post_item .= '" id="cff_' . $cff_post_id . '" ' . $cff_item_styles . '>'; //POST AUTHOR $cff_is_video_embed = false; if ($cff_is_video_embed) { if ($cff_show_author) { $cff_post_item .= $cff_author; } //DATE ABOVE if ($cff_show_date && $cff_date_position == 'above') { $cff_post_item .= $cff_date; } //If embedded video then show post text above the wrapper if ($cff_show_text) { $cff_post_item .= $cff_post_text; } $cff_post_item .= '<div class="cff-embed-wrap">'; } //Start text wrapper if (($cff_thumb_layout || $cff_half_layout) && !empty($news->picture) && $cff_post_type != 'event') { $cff_post_item .= '<div class="cff-text-wrapper">'; } //POST AUTHOR if ($cff_show_author && !$cff_is_video_embed) { $cff_post_item .= $cff_author; } //MEDIA if ($cff_show_media && $cff_media_position == 'above') { $cff_post_item .= $cff_media; } //DATE ABOVE if ($cff_show_date && $cff_date_position == 'above' && !$cff_is_video_embed) { $cff_post_item .= $cff_date; } //POST TEXT if ($cff_show_text && !$cff_is_video_embed) { $cff_post_item .= $cff_post_text; } //DESCRIPTION if ($cff_show_desc && $cff_post_type != 'offer' && $cff_post_type != 'link') { $cff_post_item .= $cff_description; } //LINK if ($cff_show_shared_links) { $cff_post_item .= $cff_shared_link; } //DATE BELOW if (!$cff_show_author && $cff_date_position == 'author' || $cff_show_date && $cff_date_position == 'below' && !$cff_is_video_embed) { if ($cff_show_date && $cff_post_type !== 'event') { $cff_post_item .= $cff_date; } } //End text wrapper if (($cff_thumb_layout || $cff_half_layout) && !empty($news->picture) && $cff_post_type != 'event') { $cff_post_item .= '</div>'; } //EVENT if ($cff_show_event_title || $cff_show_event_details) { $cff_post_item .= $cff_event; } //MEDIA if ($cff_show_media && $cff_media_position !== 'above') { $cff_post_item .= $cff_media; if ($cff_is_video_embed) { $cff_post_item .= '</div>'; } } //DATE BELOW if ($cff_show_date && $cff_date_position == 'below' && $cff_is_video_embed) { $cff_post_item .= $cff_date; } if ($cff_show_date && $cff_post_type == 'event' && ($cff_date_position == 'below' || $cff_date_position == 'author' && !$cff_show_author)) { $cff_post_item .= $cff_date; } //META if ($cff_show_meta || $cff_show_link) { $cff_post_item .= $cff_meta_total; } //End the post item $cff_post_item .= '</div>'; // $cff_post_item .= '<div class="cff-clear"></div>'; } // End !$cff_photos_only || albums only || album embed //ALBUMS ONLY if ($cff_albums_only && $cff_albums_source == 'photospage') { isset($news->link) ? $cff_album_link = $news->link : ($cff_album_link = ''); isset($news->name) ? $cff_album_name = $news->name : ($cff_album_name = ''); //Don't put this in for now as the description sometimes has @ markup in it which looks bad. eg: "on behalf of @[38494804824:274:Breakthrough Breast Cancer]." // isset($news->description) ? $cff_album_description = $news->description : $cff_album_description = $cff_album_name; $cff_show_post = true; //Get the filter string $cff_filter_string = $atts['filter']; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = true; $string_in_desc = true; if (cff_stripos_arr($cff_album_name, $cff_filter_strings_array) === false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = false; $string_in_desc = false; if (cff_stripos_arr($cff_album_name, $cff_exclude_strings_array) !== false) { $cff_show_post = false; } } if ($cff_show_post) { //GROUP ALBUMS if ($cff_is_group) { //Cover photos aren't available for group albums $cff_post_item = '<div class="cff-album-item cff-albums-only cff-col-'; $cff_post_item .= $cff_album_cols; $cff_post_item .= '">'; $cff_post_item .= '<h4><a href="' . $cff_album_link . '" ' . $target . $cff_nofollow . '>' . $cff_album_name . '</a></h4>'; $cff_post_item .= '</div>'; //Group albums use 'created' instead of 'created_time' like other posts $post_time = $news->created; } else { isset($news->cover_photo) ? $thumb = 'https://graph.facebook.com/' . $news->cover_photo . '/picture' : ($thumb = ''); isset($news->count) ? $cff_album_count = $news->count : ($cff_album_count = ''); $cff_post_item = '<div class="cff-album-item cff-albums-only cff-col-'; $cff_post_item .= $cff_album_cols; $cff_post_item .= '" id="cff_' . $news->id . '">'; $cff_post_item .= '<a href="' . $cff_album_link . '" class="cff-album-cover" ' . $target . $cff_nofollow . '><img src="' . $thumb . '" alt="' . $cff_album_name . '" /></a>'; if ($cff_show_album_title || $cff_show_album_number) { $cff_post_item .= '<div class="cff-album-info">'; } if ($cff_show_album_title) { $cff_post_item .= '<h4><a href="' . $cff_album_link . '" ' . $target . $cff_nofollow . '>' . $cff_album_name . '</a></h4>'; } if ($cff_show_album_number && isset($news->count)) { $cff_post_item .= '<p>' . $cff_album_count . ' ' . $cff_translate_photos_text . '</p>'; } if ($cff_show_album_title || $cff_show_album_number) { $cff_post_item .= '</div>'; } $cff_post_item .= '</div>'; //If there's no photos in the album then don't show it if (!isset($news->cover_photo)) { $cff_post_item = ''; } } } } //ALBUM EMBED if ($cff_album_active && !empty($cff_album_id)) { isset($news->name) ? $cff_album_desc = $news->name : ($cff_album_desc = ''); $cff_show_post = true; //Get the filter string $cff_filter_string = $atts['filter']; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = true; $string_in_desc = true; if (cff_stripos_arr($cff_album_desc, $cff_filter_strings_array) === false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = false; $string_in_desc = false; if (cff_stripos_arr($cff_album_desc, $cff_exclude_strings_array) !== false) { $cff_show_post = false; } } if ($cff_show_post) { $cff_post_item = '<div class="cff-album-item cff-col-'; $cff_post_item .= $cff_album_cols; $cff_post_item .= '" id="cff_' . $news->id . '">'; $cff_post_item .= '<a href="https://facebook.com/' . $news->id . '" class="cff-album-cover" ' . $target . $cff_nofollow . '><img src="' . $news->source . '" alt="' . $cff_album_desc . '" /></a>'; $cff_post_item .= '</div>'; $post_time = $i; } } //VIDEOS ONLY if ($cff_videos_only) { $cff_post_item = ''; if ($cff_show_post) { foreach ($news->format as $value) { //If there's a large image then use it if (isset($value->picture)) { $poster = $value->picture; //Otherwise use the small one } else { if (isset($news->picture)) { $poster = $news->picture; } else { $poster = ''; } } } isset($news->description) ? $description_text = $news->description : ($description_text = ''); isset($news->name) ? $video_name = $news->name : ($video_name = ''); $poster_alt = $video_name; if (!empty($video_name) && !empty($description_text)) { $poster_alt .= ' - '; } $poster_alt .= $description_text; $cff_post_item .= '<div class="cff-album-item cff-col-' . $cff_video_cols . '" id="cff_' . $news->id . '">'; $cff_post_item .= '<a href="" class="cff-album-cover cff-video" ' . $target . $cff_nofollow . ' id="' . $news->id . '" data-source="' . $news->source . '"><i class="fa fa-play cff-playbtn"></i><img src="' . $poster . '" alt="' . $poster_alt . '" /></a>'; if ($cff_show_video_name) { $cff_post_item .= '<div class="cff-album-info">'; } if ($cff_show_video_name && !empty($video_name)) { $cff_post_item .= '<h4><a href="http://facebook.com/' . $news->id . '" ' . $target . $cff_nofollow . '>' . $video_name . '</a></h4>'; } if ($cff_show_video_desc) { $cff_post_item .= '<p>' . substr($description_text, 0, 50); if (strlen($description_text) > 50) { $cff_post_item .= '...'; } $cff_post_item .= '</p>'; } if ($cff_show_video_name) { $cff_post_item .= '</div>'; } $cff_post_item .= '</div>'; $post_time = $i; } } //PHOTOS ONLY if ($cff_photos_only && empty($cff_album_id)) { //Get the caption !empty($news->caption) ? $cff_caption = htmlspecialchars($news->caption) : ($cff_caption = ' '); $cff_filter_string = $atts['filter']; $cff_show_post = true; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = true; $string_in_desc = true; if (cff_stripos_arr($cff_caption, $cff_filter_strings_array) === false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = false; $string_in_desc = false; if (cff_stripos_arr($cff_caption, $cff_exclude_strings_array) !== false) { $cff_show_post = false; } } $cff_post_item = ''; if ($cff_show_post) { $cff_post_item .= '<div class="cff-album-item cff-col-' . $cff_photos_cols . '" id="cff_' . $news->pid . '">'; $cff_post_item .= '<a href="' . $news->link . '" class="cff-album-cover" ' . $target . $cff_nofollow . '><img src="' . $news->src_big . '" alt="' . $cff_caption . '" /></a>'; $cff_post_item .= '</div>'; } if ($cff_is_group) { //FOR GROUPS $post_time = $news->created; $cff_posts_array = cff_array_push_assoc_photos($cff_posts_array, $i, $cff_post_item, $post_time); } else { //FOR PAGES if ($i <= $show_posts) { $cff_content .= $cff_post_item; } } } else { //PUSH POSTS TO ARRAY $cff_posts_array = cff_array_push_assoc($cff_posts_array, $post_time, $cff_post_item); } } // End offset } // End post type check if (isset($news->message)) { $prev_post_message = $news->message; } if (isset($news->link)) { $prev_post_link = $news->link; } if (isset($news->description)) { $prev_post_description = $news->description; } } // End the loop if ($cff_photos_only) { //PHOTOS ONLY usort($cff_posts_array, 'sortByOrder'); } else { if ($cff_album_active && !empty($cff_album_id) || $cff_videos_only) { //ALBUM EMBED //Don't sort array. Display posts in their native order. } else { //Sort the array in reverse order (newest first) krsort($cff_posts_array); } } } // End ALL POSTS } // END PAGE_IDS LOOP //Output the posts array if ($cff_photos_only) { //PHOTOS ONLY $p = 0; foreach ($cff_posts_array as $post) { if ($p == $show_posts) { break; } $cff_content .= $post['post']; $p++; } } else { $p = 0; foreach ($cff_posts_array as $post) { if ($p == $show_posts) { break; } $cff_content .= $post; $p++; } } //Reset the timezone date_default_timezone_set($cff_orig_timezone); //Add the Like Box inside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && !$cff_like_box_outside) { $cff_content .= $like_box; } /* Credit link */ $cff_show_credit = $atts['credit']; $cff_show_credit == 'true' || $cff_show_credit == 'on' ? $cff_show_credit = true : ($cff_show_credit = false); if ($cff_show_credit) { $cff_content .= '<p class="cff-credit"><a href="https://smashballoon.com/custom-facebook-feed/" target="_blank" style="color: #' . ($link_color = $cff_posttext_link_color . '" title="Smash Balloon Custom Facebook Feed WordPress Plugin"><img src="' . plugins_url('/img/smashballoon-tiny.png', __FILE__) . '" alt="Smash Balloon Custom Facebook Feed WordPress Plugin" />The Custom Facebook Feed plugin</a></p>'); } //End the feed $cff_content .= '</div>'; $cff_content .= '<div class="cff-clear"></div>'; //Add the Like Box outside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && $cff_like_box_outside) { $cff_content .= $like_box; } //If the feed is loaded via Ajax then put the scripts into the shortcode itself $ajax_theme = $atts['ajax']; $ajax_theme == 'on' || $ajax_theme == 'true' || $ajax_theme == true ? $ajax_theme = true : ($ajax_theme = false); if ($atts['ajax'] == 'false') { $ajax_theme = false; } if ($ajax_theme) { $url = plugins_url(); $path = urlencode(ABSPATH); $cff_link_hashtags = $atts['linkhashtags']; $cff_link_hashtags == 'true' || $cff_link_hashtags == 'on' ? $cff_link_hashtags = 'true' : ($cff_link_hashtags = 'false'); if ($cff_title_link == 'true' || $cff_title_link == 'on') { $cff_link_hashtags = 'false'; } $cff_content .= '<script type="text/javascript">var cffsiteurl = "' . $url . '", cfflinkhashtags = "' . $cff_link_hashtags . '";</script>'; $cff_content .= '<script type="text/javascript" src="' . plugins_url('/js/cff-scripts.js?ver=' . CFFVER, __FILE__) . '"></script>'; } $cff_content .= '</div>'; if (isset($cff_posttext_link_color) && !empty($cff_posttext_link_color)) { $cff_content .= '<style>#cff .cff-post-text a{ color: #' . $cff_posttext_link_color . '; }</style>'; } //Return our feed HTML to display return $cff_content; }
function display_cff($atts) { //Style options $options = get_option('cff_style_settings'); //Create the types string to set as shortcode default $include_string = ''; if ($options['cff_show_author']) { $include_string .= 'author,'; } if ($options['cff_show_text']) { $include_string .= 'text,'; } if ($options['cff_show_desc']) { $include_string .= 'desc,'; } if ($options['cff_show_shared_links']) { $include_string .= 'sharedlinks,'; } if ($options['cff_show_date']) { $include_string .= 'date,'; } if ($options['cff_show_media']) { $include_string .= 'media,'; } if ($options['cff_show_event_title']) { $include_string .= 'eventtitle,'; } if ($options['cff_show_event_details']) { $include_string .= 'eventdetails,'; } if ($options['cff_show_meta']) { $include_string .= 'social,'; } if ($options['cff_show_link']) { $include_string .= 'link,'; } if ($options['cff_show_like_box']) { $include_string .= 'likebox,'; } //Pass in shortcode attrbutes $atts = shortcode_atts(array('accesstoken' => trim(get_option('cff_access_token')), 'id' => get_option('cff_page_id'), 'pagetype' => get_option('cff_page_type'), 'num' => get_option('cff_num_show'), 'limit' => get_option('cff_post_limit'), 'others' => '', 'showpostsby' => get_option('cff_show_others'), 'cachetime' => get_option('cff_cache_time'), 'cacheunit' => get_option('cff_cache_time_unit'), 'locale' => get_option('cff_locale'), 'ajax' => get_option('cff_ajax'), 'offset' => '', 'width' => isset($options['cff_feed_width']) ? $options['cff_feed_width'] : '', 'widthresp' => isset($options['cff_feed_width_resp']) ? $options['cff_feed_width_resp'] : '', 'height' => isset($options['cff_feed_height']) ? $options['cff_feed_height'] : '', 'padding' => isset($options['cff_feed_padding']) ? $options['cff_feed_padding'] : '', 'bgcolor' => isset($options['cff_bg_color']) ? $options['cff_bg_color'] : '', 'showauthor' => '', 'showauthornew' => isset($options['cff_show_author']) ? $options['cff_show_author'] : '', 'class' => isset($options['cff_class']) ? $options['cff_class'] : '', 'layout' => isset($options['cff_preset_layout']) ? $options['cff_preset_layout'] : '', 'include' => $include_string, 'exclude' => '', 'postbgcolor' => isset($options['cff_post_bg_color']) ? $options['cff_post_bg_color'] : '', 'postcorners' => isset($options['cff_post_rounded']) ? $options['cff_post_rounded'] : '', 'textformat' => isset($options['cff_title_format']) ? $options['cff_title_format'] : '', 'textsize' => isset($options['cff_title_size']) ? $options['cff_title_size'] : '', 'textweight' => isset($options['cff_title_weight']) ? $options['cff_title_weight'] : '', 'textcolor' => isset($options['cff_title_color']) ? $options['cff_title_color'] : '', 'textlinkcolor' => isset($options['cff_posttext_link_color']) ? $options['cff_posttext_link_color'] : '', 'textlink' => isset($options['cff_title_link']) ? $options['cff_title_link'] : '', 'posttags' => isset($options['cff_post_tags']) ? $options['cff_post_tags'] : '', 'linkhashtags' => isset($options['cff_link_hashtags']) ? $options['cff_link_hashtags'] : '', 'descsize' => isset($options['cff_body_size']) ? $options['cff_body_size'] : '', 'descweight' => isset($options['cff_body_weight']) ? $options['cff_body_weight'] : '', 'desccolor' => isset($options['cff_body_color']) ? $options['cff_body_color'] : '', 'linktitleformat' => isset($options['cff_link_title_format']) ? $options['cff_link_title_format'] : '', 'linktitlesize' => isset($options['cff_link_title_size']) ? $options['cff_link_title_size'] : '', 'linktitlecolor' => isset($options['cff_link_title_color']) ? $options['cff_link_title_color'] : '', 'linkurlcolor' => isset($options['cff_link_url_color']) ? $options['cff_link_url_color'] : '', 'linkbgcolor' => isset($options['cff_link_bg_color']) ? $options['cff_link_bg_color'] : '', 'linkbordercolor' => isset($options['cff_link_border_color']) ? $options['cff_link_border_color'] : '', 'disablelinkbox' => isset($options['cff_disable_link_box']) ? $options['cff_disable_link_box'] : '', 'authorsize' => isset($options['cff_author_size']) ? $options['cff_author_size'] : '', 'authorcolor' => isset($options['cff_author_color']) ? $options['cff_author_color'] : '', 'eventtitleformat' => isset($options['cff_event_title_format']) ? $options['cff_event_title_format'] : '', 'eventtitlesize' => isset($options['cff_event_title_size']) ? $options['cff_event_title_size'] : '', 'eventtitleweight' => isset($options['cff_event_title_weight']) ? $options['cff_event_title_weight'] : '', 'eventtitlecolor' => isset($options['cff_event_title_color']) ? $options['cff_event_title_color'] : '', 'eventtitlelink' => isset($options['cff_event_title_link']) ? $options['cff_event_title_link'] : '', 'eventdatesize' => isset($options['cff_event_date_size']) ? $options['cff_event_date_size'] : '', 'eventdateweight' => isset($options['cff_event_date_weight']) ? $options['cff_event_date_weight'] : '', 'eventdatecolor' => isset($options['cff_event_date_color']) ? $options['cff_event_date_color'] : '', 'eventdatepos' => isset($options['cff_event_date_position']) ? $options['cff_event_date_position'] : '', 'eventdateformat' => isset($options['cff_event_date_formatting']) ? $options['cff_event_date_formatting'] : '', 'eventdatecustom' => isset($options['cff_event_date_custom']) ? $options['cff_event_date_custom'] : '', 'eventdetailssize' => isset($options['cff_event_details_size']) ? $options['cff_event_details_size'] : '', 'eventdetailsweight' => isset($options['cff_event_details_weight']) ? $options['cff_event_details_weight'] : '', 'eventdetailscolor' => isset($options['cff_event_details_color']) ? $options['cff_event_details_color'] : '', 'eventlinkcolor' => isset($options['cff_event_link_color']) ? $options['cff_event_link_color'] : '', 'datepos' => isset($options['cff_date_position']) ? $options['cff_date_position'] : '', 'datesize' => isset($options['cff_date_size']) ? $options['cff_date_size'] : '', 'dateweight' => isset($options['cff_date_weight']) ? $options['cff_date_weight'] : '', 'datecolor' => isset($options['cff_date_color']) ? $options['cff_date_color'] : '', 'dateformat' => isset($options['cff_date_formatting']) ? $options['cff_date_formatting'] : '', 'datecustom' => isset($options['cff_date_custom']) ? $options['cff_date_custom'] : '', 'timezone' => isset($options['cff_timezone']) ? $options['cff_timezone'] : 'America/Chicago', 'linksize' => isset($options['cff_link_size']) ? $options['cff_link_size'] : '', 'linkweight' => isset($options['cff_link_weight']) ? $options['cff_link_weight'] : '', 'linkcolor' => isset($options['cff_link_color']) ? $options['cff_link_color'] : '', 'viewlinktext' => isset($options['cff_view_link_text']) ? $options['cff_view_link_text'] : '', 'linktotimeline' => isset($options['cff_link_to_timeline']) ? $options['cff_link_to_timeline'] : '', 'iconstyle' => isset($options['cff_icon_style']) ? $options['cff_icon_style'] : '', 'socialtextcolor' => isset($options['cff_meta_text_color']) ? $options['cff_meta_text_color'] : '', 'socialbgcolor' => isset($options['cff_meta_bg_color']) ? $options['cff_meta_bg_color'] : '', 'textlength' => get_option('cff_title_length'), 'desclength' => get_option('cff_body_length'), 'likeboxpos' => isset($options['cff_like_box_position']) ? $options['cff_like_box_position'] : '', 'likeboxoutside' => isset($options['cff_like_box_outside']) ? $options['cff_like_box_outside'] : '', 'likeboxcolor' => isset($options['cff_likebox_bg_color']) ? $options['cff_likebox_bg_color'] : '', 'likeboxtextcolor' => isset($options['cff_like_box_text_color']) ? $options['cff_like_box_text_color'] : '', 'likeboxwidth' => isset($options['cff_likebox_width']) ? $options['cff_likebox_width'] : '', 'likeboxheight' => isset($options['cff_likebox_height']) ? $options['cff_likebox_height'] : '', 'likeboxfaces' => isset($options['cff_like_box_faces']) ? $options['cff_like_box_faces'] : '', 'likeboxborder' => isset($options['cff_like_box_border']) ? $options['cff_like_box_border'] : '', 'likeboxcover' => isset($options['cff_like_box_cover']) ? $options['cff_like_box_cover'] : '', 'likeboxsmallheader' => isset($options['cff_like_box_small_header']) ? $options['cff_like_box_small_header'] : '', 'likeboxhidebtn' => isset($options['cff_like_box_hide_cta']) ? $options['cff_like_box_hide_cta'] : '', 'credit' => isset($options['cff_show_credit']) ? $options['cff_show_credit'] : '', 'nofollow' => 'true', 'disablestyles' => isset($options['cff_disable_styles']) ? $options['cff_disable_styles'] : '', 'showheader' => isset($options['cff_show_header']) ? $options['cff_show_header'] : '', 'headeroutside' => isset($options['cff_header_outside']) ? $options['cff_header_outside'] : '', 'headertext' => isset($options['cff_header_text']) ? $options['cff_header_text'] : '', 'headerbg' => isset($options['cff_header_bg_color']) ? $options['cff_header_bg_color'] : '', 'headerpadding' => isset($options['cff_header_padding']) ? $options['cff_header_padding'] : '', 'headertextsize' => isset($options['cff_header_text_size']) ? $options['cff_header_text_size'] : '', 'headertextweight' => isset($options['cff_header_text_weight']) ? $options['cff_header_text_weight'] : '', 'headertextcolor' => isset($options['cff_header_text_color']) ? $options['cff_header_text_color'] : '', 'headericon' => isset($options['cff_header_icon']) ? $options['cff_header_icon'] : '', 'headericoncolor' => isset($options['cff_header_icon_color']) ? $options['cff_header_icon_color'] : '', 'headericonsize' => isset($options['cff_header_icon_size']) ? $options['cff_header_icon_size'] : '', 'videoheight' => isset($options['cff_video_height']) ? $options['cff_video_height'] : '', 'videoaction' => isset($options['cff_video_action']) ? $options['cff_video_action'] : '', 'sepcolor' => isset($options['cff_sep_color']) ? $options['cff_sep_color'] : '', 'sepsize' => isset($options['cff_sep_size']) ? $options['cff_sep_size'] : '', 'seemoretext' => isset($options['cff_see_more_text']) ? stripslashes(esc_attr($options['cff_see_more_text'])) : '', 'seelesstext' => isset($options['cff_see_less_text']) ? stripslashes(esc_attr($options['cff_see_less_text'])) : '', 'photostext' => isset($options['cff_translate_photos_text']) ? stripslashes(esc_attr($options['cff_translate_photos_text'])) : '', 'facebooklinktext' => isset($options['cff_facebook_link_text']) ? stripslashes(esc_attr($options['cff_facebook_link_text'])) : '', 'sharelinktext' => isset($options['cff_facebook_share_text']) ? stripslashes(esc_attr($options['cff_facebook_share_text'])) : '', 'showfacebooklink' => isset($options['cff_show_facebook_link']) ? $options['cff_show_facebook_link'] : '', 'showsharelink' => isset($options['cff_show_facebook_share']) ? $options['cff_show_facebook_share'] : ''), $atts); /********** GENERAL **********/ $cff_page_type = $atts['pagetype']; $cff_page_type == 'group' ? $cff_is_group = true : ($cff_is_group = false); $cff_feed_width = $atts['width']; if (is_numeric(substr($cff_feed_width, -1, 1))) { $cff_feed_width = $cff_feed_width . 'px'; } //Set to be 100% width on mobile? $cff_feed_width_resp = $atts['widthresp']; $cff_feed_width_resp == 'on' || $cff_feed_width_resp == 'true' || $cff_feed_width_resp == true ? $cff_feed_width_resp = true : ($cff_feed_width_resp = false); if ($atts['widthresp'] == 'false') { $cff_feed_width_resp = false; } $cff_feed_height = $atts['height']; if (is_numeric(substr($cff_feed_height, -1, 1))) { $cff_feed_height = $cff_feed_height . 'px'; } $cff_feed_padding = $atts['padding']; if (is_numeric(substr($cff_feed_padding, -1, 1))) { $cff_feed_padding = $cff_feed_padding . 'px'; } $cff_bg_color = $atts['bgcolor']; $cff_show_author = $atts['showauthornew']; $cff_cache_time = $atts['cachetime']; $cff_locale = $atts['locale']; if (empty($cff_locale) || !isset($cff_locale) || $cff_locale == '') { $cff_locale = 'en_US'; } if (!isset($cff_cache_time)) { $cff_cache_time = 0; } $cff_cache_time_unit = $atts['cacheunit']; //Don't allow cache time to be zero - set to 1 minute instead to minimize API requests if (!isset($cff_cache_time) || $cff_cache_time == '0') { $cff_cache_time = 1; $cff_cache_time_unit = 'minutes'; } if ($cff_cache_time == 'none') { $cff_cache_time = 0; } $cff_class = $atts['class']; //Compile feed styles $cff_feed_styles = ''; if (!empty($cff_feed_width) || !empty($cff_feed_height) || !empty($cff_feed_padding) || !empty($cff_bg_color) && $cff_bg_color !== '#') { $cff_feed_styles = 'style="'; } if (!empty($cff_feed_width)) { $cff_feed_styles .= 'width:' . $cff_feed_width . '; '; } if (!empty($cff_feed_height)) { $cff_feed_styles .= 'height:' . $cff_feed_height . '; '; } if (!empty($cff_feed_padding)) { $cff_feed_styles .= 'padding:' . $cff_feed_padding . '; '; } if (!empty($cff_bg_color) && $cff_bg_color !== '#') { $cff_feed_styles .= 'background-color:#' . str_replace('#', '', $cff_bg_color) . '; '; } if (!empty($cff_feed_width) || !empty($cff_feed_height) || !empty($cff_feed_padding) || !empty($cff_bg_color) && $cff_bg_color !== '#') { $cff_feed_styles .= '"'; } //Like box $cff_like_box_position = $atts['likeboxpos']; $cff_like_box_outside = $atts['likeboxoutside']; //Open links in new window? $target = 'target="_blank"'; /********** POST TYPES **********/ $cff_show_links_type = true; $cff_show_event_type = true; $cff_show_video_type = true; $cff_show_photos_type = true; $cff_show_status_type = true; $cff_events_only = false; //Are we showing ONLY events? if ($cff_show_event_type && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_photos_type && !$cff_show_status_type) { $cff_events_only = true; } /********** LAYOUT **********/ $cff_includes = $atts['include']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode $cff_show_author = false; $cff_show_text = false; $cff_show_desc = false; $cff_show_shared_links = false; $cff_show_date = false; $cff_show_media = false; $cff_show_event_title = false; $cff_show_event_details = false; $cff_show_meta = false; $cff_show_link = false; $cff_show_like_box = false; if (stripos($cff_includes, 'author') !== false) { $cff_show_author = true; } if (stripos($cff_includes, 'text') !== false) { $cff_show_text = true; } if (stripos($cff_includes, 'desc') !== false) { $cff_show_desc = true; } if (stripos($cff_includes, 'sharedlink') !== false) { $cff_show_shared_links = true; } if (stripos($cff_includes, 'date') !== false) { $cff_show_date = true; } if (stripos($cff_includes, 'media') !== false) { $cff_show_media = true; } if (stripos($cff_includes, 'eventtitle') !== false) { $cff_show_event_title = true; } if (stripos($cff_includes, 'eventdetail') !== false) { $cff_show_event_details = true; } if (stripos($cff_includes, 'social') !== false) { $cff_show_meta = true; } if (stripos($cff_includes, ',link') !== false) { $cff_show_link = true; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_includes, 'like') !== false) { $cff_show_like_box = true; } //Exclude string $cff_excludes = $atts['exclude']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode if (stripos($cff_excludes, 'author') !== false) { $cff_show_author = false; } if (stripos($cff_excludes, 'text') !== false) { $cff_show_text = false; } if (stripos($cff_excludes, 'desc') !== false) { $cff_show_desc = false; } if (stripos($cff_excludes, 'sharedlink') !== false) { $cff_show_shared_links = false; } if (stripos($cff_excludes, 'date') !== false) { $cff_show_date = false; } if (stripos($cff_excludes, 'media') !== false) { $cff_show_media = false; } if (stripos($cff_excludes, 'eventtitle') !== false) { $cff_show_event_title = false; } if (stripos($cff_excludes, 'eventdetail') !== false) { $cff_show_event_details = false; } if (stripos($cff_excludes, 'social') !== false) { $cff_show_meta = false; } if (stripos($cff_excludes, ',link') !== false) { $cff_show_link = false; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_excludes, 'like') !== false) { $cff_show_like_box = false; } //Set free version to thumb layout by default as layout option not available on settings page $cff_preset_layout = 'thumb'; //If the old shortcode option 'showauthor' is being used then apply it $cff_show_author_old = $atts['showauthor']; if ($cff_show_author_old == 'false') { $cff_show_author = false; } if ($cff_show_author_old == 'true') { $cff_show_author = true; } /********** META **********/ $cff_icon_style = $atts['iconstyle']; $cff_meta_text_color = $atts['socialtextcolor']; $cff_meta_bg_color = $atts['socialbgcolor']; $cff_meta_styles = ''; if (!empty($cff_meta_text_color) || !empty($cff_meta_bg_color) && $cff_meta_bg_color !== '#') { $cff_meta_styles = 'style="'; } if (!empty($cff_meta_text_color)) { $cff_meta_styles .= 'color:#' . str_replace('#', '', $cff_meta_text_color) . ';'; } if (!empty($cff_meta_bg_color) && $cff_meta_bg_color !== '#') { $cff_meta_styles .= 'background-color:#' . str_replace('#', '', $cff_meta_bg_color) . ';'; } if (!empty($cff_meta_text_color) || !empty($cff_meta_bg_color) && $cff_meta_bg_color !== '#') { $cff_meta_styles .= '"'; } $cff_nocomments_text = isset($options['cff_nocomments_text']) ? $options['cff_nocomments_text'] : ''; $cff_hide_comments = isset($options['cff_hide_comments']) ? $options['cff_hide_comments'] : ''; if (!isset($cff_nocomments_text) || empty($cff_nocomments_text)) { $cff_hide_comments = true; } /********** TYPOGRAPHY **********/ //See More text $cff_see_more_text = $atts['seemoretext']; $cff_see_less_text = $atts['seelesstext']; //See Less text //Title $cff_title_format = $atts['textformat']; if (empty($cff_title_format)) { $cff_title_format = 'p'; } $cff_title_size = $atts['textsize']; $cff_title_weight = $atts['textweight']; $cff_title_color = $atts['textcolor']; $cff_title_styles = ''; if (!empty($cff_title_size) && $cff_title_size != 'inherit' || !empty($cff_title_weight) && $cff_title_weight != 'inherit' || !empty($cff_title_color) && $cff_title_color !== '#') { $cff_title_styles = 'style="'; } if (!empty($cff_title_size) && $cff_title_size != 'inherit') { $cff_title_styles .= 'font-size:' . $cff_title_size . 'px; '; } if (!empty($cff_title_weight) && $cff_title_weight != 'inherit') { $cff_title_styles .= 'font-weight:' . $cff_title_weight . '; '; } if (!empty($cff_title_color) && $cff_title_color !== '#') { $cff_title_styles .= 'color:#' . str_replace('#', '', $cff_title_color) . ';'; } if (!empty($cff_title_size) && $cff_title_size != 'inherit' || !empty($cff_title_weight) && $cff_title_weight != 'inherit' || !empty($cff_title_color) && $cff_title_color !== '#') { $cff_title_styles .= '"'; } $cff_title_link = $atts['textlink']; $cff_posttext_link_color = str_replace('#', '', $atts['textlinkcolor']); $cff_title_link == 'on' || $cff_title_link == 'true' || $cff_title_link == true ? $cff_title_link = true : ($cff_title_link = false); if ($atts['textlink'] == 'false') { $cff_title_link = false; } //Author $cff_author_size = $atts['authorsize']; $cff_author_color = $atts['authorcolor']; $cff_author_styles = ''; if (!empty($cff_author_size) && $cff_author_size != 'inherit' || !empty($cff_author_color) && $cff_author_color !== '#') { $cff_author_styles = 'style="'; } if (!empty($cff_author_size) && $cff_author_size != 'inherit') { $cff_author_styles .= 'font-size:' . $cff_author_size . 'px; '; } if (!empty($cff_author_color) && $cff_author_color !== '#') { $cff_author_styles .= 'color:#' . str_replace('#', '', $cff_author_color) . ';'; } if (!empty($cff_author_size) && $cff_author_size != 'inherit' || !empty($cff_author_color) && $cff_author_color !== '#') { $cff_author_styles .= '"'; } //Description $cff_body_size = $atts['descsize']; $cff_body_weight = $atts['descweight']; $cff_body_color = $atts['desccolor']; $cff_body_styles = ''; if (!empty($cff_body_size) && $cff_body_size != 'inherit' || !empty($cff_body_weight) && $cff_body_weight != 'inherit' || !empty($cff_body_color) && $cff_body_color !== '#') { $cff_body_styles = 'style="'; } if (!empty($cff_body_size) && $cff_body_size != 'inherit') { $cff_body_styles .= 'font-size:' . $cff_body_size . 'px; '; } if (!empty($cff_body_weight) && $cff_body_weight != 'inherit') { $cff_body_styles .= 'font-weight:' . $cff_body_weight . '; '; } if (!empty($cff_body_color) && $cff_body_color !== '#') { $cff_body_styles .= 'color:#' . str_replace('#', '', $cff_body_color) . ';'; } if (!empty($cff_body_size) && $cff_body_size != 'inherit' || !empty($cff_body_weight) && $cff_body_weight != 'inherit' || !empty($cff_body_color) && $cff_body_color !== '#') { $cff_body_styles .= '"'; } //Shared link title $cff_link_title_format = $atts['linktitleformat']; if (empty($cff_link_title_format)) { $cff_link_title_format = 'p'; } $cff_link_title_size = $atts['linktitlesize']; $cff_link_title_color = str_replace('#', '', $atts['linktitlecolor']); $cff_link_url_color = $atts['linkurlcolor']; $cff_link_title_styles = ''; if (!empty($cff_link_title_size) && $cff_link_title_size != 'inherit') { $cff_link_title_styles = 'style="font-size:' . $cff_link_title_size . 'px;"'; } //Shared link box $cff_link_bg_color = $atts['linkbgcolor']; $cff_link_border_color = $atts['linkbordercolor']; $cff_disable_link_box = $atts['disablelinkbox']; $cff_disable_link_box == 'true' || $cff_disable_link_box == 'on' ? $cff_disable_link_box = true : ($cff_disable_link_box = false); $cff_link_box_styles = ''; if (!empty($cff_link_border_color) || !empty($cff_link_bg_color) && $cff_link_bg_color !== '#') { $cff_link_box_styles = 'style="'; } if (!empty($cff_link_border_color)) { $cff_link_box_styles .= 'border: 1px solid #' . str_replace('#', '', $cff_link_border_color) . '; '; } if (!empty($cff_link_bg_color) && $cff_link_bg_color !== '#') { $cff_link_box_styles .= 'background-color: #' . str_replace('#', '', $cff_link_bg_color) . ';'; } if (!empty($cff_link_border_color) || !empty($cff_link_bg_color) && $cff_link_bg_color !== '#') { $cff_link_box_styles .= '"'; } //Event Title $cff_event_title_format = $atts['eventtitleformat']; if (empty($cff_event_title_format)) { $cff_event_title_format = 'p'; } $cff_event_title_size = $atts['eventtitlesize']; $cff_event_title_weight = $atts['eventtitleweight']; $cff_event_title_color = $atts['eventtitlecolor']; $cff_event_title_styles = ''; if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit' || !empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit' || !empty($cff_event_title_color) && $cff_event_title_color !== '#') { $cff_event_title_styles = 'style="'; } if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit') { $cff_event_title_styles .= 'font-size:' . $cff_event_title_size . 'px; '; } if (!empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit') { $cff_event_title_styles .= 'font-weight:' . $cff_event_title_weight . '; '; } if (!empty($cff_event_title_color) && $cff_event_title_color !== '#') { $cff_event_title_styles .= 'color:#' . str_replace('#', '', $cff_event_title_color) . ';'; } if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit' || !empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit' || !empty($cff_event_title_color) && $cff_event_title_color !== '#') { $cff_event_title_styles .= '"'; } $cff_event_title_link = $atts['eventtitlelink']; $cff_event_title_link == 'on' || $cff_event_title_link == 'true' || $cff_event_title_link == true ? $cff_event_title_link = true : ($cff_event_title_link = false); if ($atts['eventtitlelink'] == 'false') { $cff_event_title_link = false; } //Event Date $cff_event_date_size = $atts['eventdatesize']; $cff_event_date_weight = $atts['eventdateweight']; $cff_event_date_color = $atts['eventdatecolor']; $cff_event_date_position = $atts['eventdatepos']; $cff_event_date_formatting = $atts['eventdateformat']; $cff_event_date_custom = $atts['eventdatecustom']; $cff_event_date_styles = ''; if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit' || !empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit' || !empty($cff_event_date_color) && $cff_event_date_color !== '#') { $cff_event_date_styles = 'style="'; } if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit') { $cff_event_date_styles .= 'font-size:' . $cff_event_date_size . 'px; '; } if (!empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit') { $cff_event_date_styles .= 'font-weight:' . $cff_event_date_weight . '; '; } if (!empty($cff_event_date_color) && $cff_event_date_color !== '#') { $cff_event_date_styles .= 'color:#' . str_replace('#', '', $cff_event_date_color) . ';'; } if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit' || !empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit' || !empty($cff_event_date_color) && $cff_event_date_color !== '#') { $cff_event_date_styles .= '"'; } //Event Details $cff_event_details_size = $atts['eventdetailssize']; $cff_event_details_weight = $atts['eventdetailsweight']; $cff_event_details_color = $atts['eventdetailscolor']; $cff_event_link_color = $atts['eventlinkcolor']; $cff_event_details_styles = ''; if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit' || !empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit' || !empty($cff_event_details_color) && $cff_event_details_color !== '#') { $cff_event_details_styles = 'style="'; } if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit') { $cff_event_details_styles .= 'font-size:' . $cff_event_details_size . 'px; '; } if (!empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit') { $cff_event_details_styles .= 'font-weight:' . $cff_event_details_weight . '; '; } if (!empty($cff_event_details_color) && $cff_event_details_color !== '#') { $cff_event_details_styles .= 'color:#' . str_replace('#', '', $cff_event_details_color) . ';'; } if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit' || !empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit' || !empty($cff_event_details_color) && $cff_event_details_color !== '#') { $cff_event_details_styles .= '"'; } //Date $cff_date_position = $atts['datepos']; if (!isset($cff_date_position)) { $cff_date_position = 'below'; } $cff_date_size = $atts['datesize']; $cff_date_weight = $atts['dateweight']; $cff_date_color = $atts['datecolor']; $cff_date_styles = ''; if (!empty($cff_date_size) && $cff_date_size != 'inherit' || !empty($cff_date_weight) && $cff_date_weight != 'inherit' || !empty($cff_date_color) && $cff_date_color !== '#') { $cff_date_styles = 'style="'; } if (!empty($cff_date_size) && $cff_date_size != 'inherit') { $cff_date_styles .= 'font-size:' . $cff_date_size . 'px; '; } if (!empty($cff_date_weight) && $cff_date_weight != 'inherit') { $cff_date_styles .= 'font-weight:' . $cff_date_weight . '; '; } if (!empty($cff_date_color) && $cff_date_color !== '#') { $cff_date_styles .= 'color:#' . str_replace('#', '', $cff_date_color) . ';'; } if (!empty($cff_date_size) && $cff_date_size != 'inherit' || !empty($cff_date_weight) && $cff_date_weight != 'inherit' || !empty($cff_date_color) && $cff_date_color !== '#') { $cff_date_styles .= '"'; } $cff_date_before = isset($options['cff_date_before']) ? $options['cff_date_before'] : ''; $cff_date_after = isset($options['cff_date_after']) ? $options['cff_date_after'] : ''; //Set user's timezone based on setting $cff_timezone = $atts['timezone']; $cff_orig_timezone = date_default_timezone_get(); date_default_timezone_set($cff_timezone); //Link to Facebook $cff_link_size = $atts['linksize']; $cff_link_weight = $atts['linkweight']; $cff_link_color = $atts['linkcolor']; $cff_link_styles = ''; if (!empty($cff_link_size) && $cff_link_size != 'inherit' || !empty($cff_link_weight) && $cff_link_weight != 'inherit' || !empty($cff_link_color) && $cff_link_color !== '#') { $cff_link_styles = 'style="'; } if (!empty($cff_link_size) && $cff_link_size != 'inherit') { $cff_link_styles .= 'font-size:' . $cff_link_size . 'px; '; } if (!empty($cff_link_weight) && $cff_link_weight != 'inherit') { $cff_link_styles .= 'font-weight:' . $cff_link_weight . '; '; } if (!empty($cff_link_color) && $cff_link_color !== '#') { $cff_link_styles .= 'color:#' . str_replace('#', '', $cff_link_color) . ';'; } if (!empty($cff_link_size) && $cff_link_size != 'inherit' || !empty($cff_link_weight) && $cff_link_weight != 'inherit' || !empty($cff_link_color) && $cff_link_color !== '#') { $cff_link_styles .= '"'; } //Link custom text $cff_facebook_link_text = $atts['facebooklinktext']; $cff_facebook_share_text = $atts['sharelinktext']; if ($cff_facebook_share_text == '') { $cff_facebook_share_text = 'Share'; } //Show Facebook link $cff_show_facebook_link = $atts['showfacebooklink']; $cff_show_facebook_link == 'on' || $cff_show_facebook_link == 'true' || $cff_show_facebook_link == true ? $cff_show_facebook_link = true : ($cff_show_facebook_link = false); if ($atts['showfacebooklink'] === 'false') { $cff_show_facebook_link = false; } //Show Share link $cff_show_facebook_share = $atts['showsharelink']; $cff_show_facebook_share == 'on' || $cff_show_facebook_share == 'true' || $cff_show_facebook_share == true ? $cff_show_facebook_share = true : ($cff_show_facebook_share = false); if ($atts['showsharelink'] === 'false') { $cff_show_facebook_share = false; } $cff_view_link_text = $atts['viewlinktext']; $cff_link_to_timeline = $atts['linktotimeline']; /********** MISC **********/ //Like Box styles $cff_likebox_bg_color = $atts['likeboxcolor']; $cff_like_box_text_color = $atts['likeboxtextcolor']; $cff_like_box_colorscheme = 'light'; if ($cff_like_box_text_color == 'white') { $cff_like_box_colorscheme = 'dark'; } $cff_likebox_width = $atts['likeboxwidth']; if (is_numeric(substr($cff_likebox_width, -1, 1))) { $cff_likebox_width = $cff_likebox_width . 'px'; } $cff_likebox_height = $atts['likeboxheight']; $cff_likebox_height = preg_replace('/px$/', '', $cff_likebox_height); if (!isset($cff_likebox_width) || empty($cff_likebox_width) || $cff_likebox_width == '') { $cff_likebox_width = '100%'; } $cff_like_box_faces = $atts['likeboxfaces']; if (!isset($cff_like_box_faces) || empty($cff_like_box_faces)) { $cff_like_box_faces = 'false'; } else { $cff_like_box_faces = 'true'; } $cff_like_box_border = $atts['likeboxborder']; if ($cff_like_box_border) { $cff_like_box_border = 'true'; } else { $cff_like_box_border = 'false'; } $cff_like_box_cover = $atts['likeboxcover']; if ($cff_like_box_cover) { $cff_like_box_cover = 'false'; } else { $cff_like_box_cover = 'true'; } $cff_like_box_small_header = $atts['likeboxsmallheader']; if ($cff_like_box_small_header) { $cff_like_box_small_header = 'true'; } else { $cff_like_box_small_header = 'false'; } $cff_like_box_hide_cta = $atts['likeboxhidebtn']; if ($cff_like_box_hide_cta) { $cff_like_box_hide_cta = 'true'; } else { $cff_like_box_hide_cta = 'false'; } //Compile Like box styles $cff_likebox_styles = 'style="width: ' . $cff_likebox_width . ';'; if (!empty($cff_likebox_bg_color)) { $cff_likebox_styles .= ' background-color: #' . str_replace('#', '', $cff_likebox_bg_color) . ';'; } //Set the left margin on the like box based on how it's being displayed if (!empty($cff_likebox_bg_color) && $cff_likebox_bg_color != '#' || ($cff_like_box_faces == 'true' || $cff_like_box_faces == 'on')) { $cff_likebox_styles .= ' margin-left: 0px;'; } $cff_likebox_styles .= '"'; //Get feed header settings $cff_header_bg_color = $atts['headerbg']; $cff_header_padding = $atts['headerpadding']; if (is_numeric(substr($cff_header_padding, -1, 1))) { $cff_header_padding = $cff_header_padding . 'px'; } $cff_header_text_size = $atts['headertextsize']; $cff_header_text_weight = $atts['headertextweight']; $cff_header_text_color = $atts['headertextcolor']; //Compile feed header styles $cff_header_styles = ''; if (!empty($cff_header_bg_color) && $cff_header_bg_color !== '#' || !empty($cff_header_padding) || !empty($cff_header_text_size) && $cff_header_text_size != 'inherit' || !empty($cff_header_text_weight) && $cff_header_text_weight != 'inherit' || !empty($cff_header_text_color) && $cff_header_text_color !== '#') { $cff_header_styles = 'style="'; } if (!empty($cff_header_bg_color) && $cff_header_bg_color !== '#') { $cff_header_styles .= 'background-color: #' . str_replace('#', '', $cff_header_bg_color) . '; '; } if (!empty($cff_header_padding)) { $cff_header_styles .= 'padding: ' . $cff_header_padding . '; '; } if (!empty($cff_header_text_size) && $cff_header_text_size != 'inherit') { $cff_header_styles .= 'font-size: ' . $cff_header_text_size . 'px; '; } if (!empty($cff_header_text_weight) && $cff_header_text_weight != 'inherit') { $cff_header_styles .= 'font-weight: ' . $cff_header_text_weight . '; '; } if (!empty($cff_header_text_color) && $cff_header_text_color !== '#') { $cff_header_styles .= 'color: #' . str_replace('#', '', $cff_header_text_color) . '; '; } if (!empty($cff_header_bg_color) && $cff_header_bg_color !== '#' || !empty($cff_header_padding) || !empty($cff_header_text_size) && $cff_header_text_size != 'inherit' || !empty($cff_header_text_weight) && $cff_header_text_weight != 'inherit' || !empty($cff_header_text_color) && $cff_header_text_color !== '#') { $cff_header_styles .= '"'; } //Video //Dimensions $cff_video_width = 640; $cff_video_height = $atts['videoheight']; //Action $cff_video_action = $atts['videoaction']; //Separating Line $cff_sep_color = $atts['sepcolor']; if (empty($cff_sep_color)) { $cff_sep_color = 'ddd'; } $cff_sep_size = $atts['sepsize']; //If empty then set a 0px border if (empty($cff_sep_size) || $cff_sep_size == '') { $cff_sep_size = 0; //Need to set a color otherwise the CSS is invalid $cff_sep_color = 'fff'; } $cff_post_bg_color = str_replace('#', '', $atts['postbgcolor']); $cff_post_rounded = $atts['postcorners']; $cff_post_bg_color !== '#' && $cff_post_bg_color !== '' ? $cff_post_bg_color_check = true : ($cff_post_bg_color_check = false); $cff_sep_color !== '#' && $cff_sep_color !== '' ? $cff_sep_color_check = true : ($cff_sep_color_check = false); $cff_item_styles = ''; //CFF item styles if ($cff_sep_color_check || $cff_post_bg_color_check) { $cff_item_styles = 'style="'; if ($cff_sep_color_check && !$cff_post_bg_color_check) { $cff_item_styles .= 'border-bottom: ' . $cff_sep_size . 'px solid #' . str_replace('#', '', $cff_sep_color) . '; '; } if ($cff_post_bg_color_check) { $cff_item_styles .= 'background-color: #' . $cff_post_bg_color . '; '; } if (isset($cff_post_rounded) && $cff_post_rounded !== '0') { $cff_item_styles .= '-webkit-border-radius: ' . $cff_post_rounded . 'px; -moz-border-radius: ' . $cff_post_rounded . 'px; border-radius: ' . $cff_post_rounded . 'px; '; } $cff_item_styles .= '"'; } //Text limits $title_limit = $atts['textlength']; if (!isset($title_limit)) { $title_limit = 9999; } $body_limit = $atts['desclength']; //Assign the Access Token and Page ID variables $access_token = $atts['accesstoken']; $page_id = trim($atts['id']); //If user pastes their full URL into the Page ID field then strip it out $cff_facebook_string = 'facebook.com'; $cff_page_id_url_check = stripos($page_id, $cff_facebook_string); if ($cff_page_id_url_check) { //Remove trailing slash if exists $page_id = preg_replace('{/$}', '', $page_id); //Get last part of url $page_id = substr($page_id, strrpos($page_id, '/') + 1); } //If the Page ID contains a query string at the end then remove it if (stripos($page_id, '?') !== false) { $page_id = substr($page_id, 0, strrpos($page_id, '?')); } //Get show posts attribute. If not set then default to 25 $show_posts = $atts['num']; if (empty($show_posts)) { $show_posts = 25; } if ($show_posts == 'undefined') { $show_posts = 25; } //If the 'Enter my own Access Token' box is unchecked then don't use the user's access token, even if there's one in the field get_option('cff_show_access_token') ? $cff_show_access_token = true : ($cff_show_access_token = false); //If there's no Access Token then use a default $access_token_array = array('1489500477999288|KFys5ppNi3sreihdreqPkU2ChIE', '859332767418162|BR-YU8zjzvonNrszlll_1a4y_xE', '360558880785446|4jyruti_VkxxK7gS7JeyX-EuSXs', '1487072591579718|0KQzP-O2E4mvFCPxTLWP1b87I4Q', '640861236031365|2rENQzxtWtG12DtlZwqfZ6Vu6BE', '334487440086538|hI_NNy1NvxQiQxm-TtXsrmoCVaE', '755471677869105|Jxv8xVDad7vUUTauk8K2o71wG2w', '518353204973067|dA7YTe-k8eSvgZ8lqa51xSm16DA', '444286039063163|5qkYu2qxpERWO3gcs2f3nxeqhpg', '944793728885704|XJ6QqKK8Ldsssr4n5Qrs2tVr7rs', '1444667452511509|wU7tzWiuj6NadfpHfgkIGLGO86o', '1574171666165548|ZL9tXNXxpnCdAvdUjCX5HtRnsR8'); if ($access_token == '' || !$cff_show_access_token) { $access_token = $access_token_array[rand(0, 11)]; } //Check whether a Page ID has been defined if ($page_id == '') { echo "Please enter the Page ID of the Facebook feed you'd like to display. You can do this in either the Custom Facebook Feed plugin settings or in the shortcode itself. For example, [custom-facebook-feed id=YOUR_PAGE_ID_HERE].<br /><br />"; return false; } //Is it SSL? $cff_ssl = ''; if (is_ssl()) { $cff_ssl = '&return_ssl_resources=true'; } //Use posts? or feed? $old_others_option = get_option('cff_show_others'); //Use this to help depreciate the old option $show_others = $atts['others']; $show_posts_by = $atts['showpostsby']; $graph_query = 'posts'; $cff_show_only_others = false; //If 'others' shortcode option is used then it overrides any other option if ($show_others || $old_others_option == 'on') { //Show posts by everyone if ($old_others_option == 'on' || $show_others == 'on' || $show_others == 'true' || $show_others == true || $cff_is_group) { $graph_query = 'feed'; } //Only show posts by me if ($show_others == 'false') { $graph_query = 'posts'; } } else { //Else use the settings page option or the 'showpostsby' shortcode option //Only show posts by me if ($show_posts_by == 'me') { $graph_query = 'posts'; } //Show posts by everyone if ($show_posts_by == 'others' || $cff_is_group) { $graph_query = 'feed'; } //Show posts ONLY by others if ($show_posts_by == 'onlyothers' && !$cff_is_group) { $graph_query = 'feed'; $cff_show_only_others = true; } } //If the limit isn't set then set it to be 5 more than the number of posts defined if (isset($atts['limit']) && $atts['limit'] !== '') { $cff_post_limit = $atts['limit']; } else { $cff_post_limit = intval(intval($show_posts) + 7); } if ($cff_post_limit >= 100) { $cff_post_limit = 100; } //Calculate the cache time in seconds if ($cff_cache_time_unit == 'minutes') { $cff_cache_time_unit = 60; } if ($cff_cache_time_unit == 'hours') { $cff_cache_time_unit = 60 * 60; } if ($cff_cache_time_unit == 'days') { $cff_cache_time_unit = 60 * 60 * 24; } $cache_seconds = $cff_cache_time * $cff_cache_time_unit; //Get like box vars $cff_likebox_width = $atts['likeboxwidth']; if (!isset($cff_likebox_width) || empty($cff_likebox_width) || $cff_likebox_width == '') { $cff_likebox_width = 300; } //Set like box variable isset($options['cff_app_id']) ? $cff_app_id = $options['cff_app_id'] : ($cff_app_id = ''); isset($cff_app_id) && !empty($cff_app_id) ? $cff_like_box_params = '&app_id=' . $cff_app_id : ($cff_like_box_params = ''); $like_box = '<div class="cff-likebox'; if ($cff_like_box_outside) { $like_box .= ' cff-outside'; } $like_box .= $cff_like_box_position == 'top' ? ' cff-top' : ' cff-bottom'; $like_box_page_id = explode(",", str_replace(' ', '', $page_id)); $like_box .= '" ><script src="https://connect.facebook.net/' . $cff_locale . '/all.js#xfbml=1' . $cff_like_box_params . '"></script><div class="fb-page" data-href="https://www.facebook.com/' . $like_box_page_id[0] . '" data-width="' . $cff_likebox_width . '" data-hide-cover="' . $cff_like_box_cover . '" data-show-facepile="' . $cff_like_box_faces . '" data-small-header="' . $cff_like_box_small_header . '" data-hide-cta="' . $cff_like_box_hide_cta . '" data-show-posts="false" data-adapt-container-width="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/' . $like_box_page_id[0] . '"><a href="https://www.facebook.com/' . $like_box_page_id[0] . '">' . $cff_facebook_link_text . '</a></blockquote></div></div><div id="fb-root"></div></div>'; //Don't show like box if it's a group if ($cff_is_group) { $like_box = ''; } //Feed header $cff_show_header = $atts['showheader']; $cff_show_header == 'true' || $cff_show_header == 'on' ? $cff_show_header = true : ($cff_show_header = false); $cff_header_outside = $atts['headeroutside']; $cff_header_outside == 'true' || $cff_header_outside == 'on' ? $cff_header_outside = true : ($cff_header_outside = false); $cff_header_text = $atts['headertext']; $cff_header_icon = $atts['headericon']; $cff_header_icon_color = $atts['headericoncolor']; $cff_header_icon_size = $atts['headericonsize']; $cff_header = '<h3 class="cff-header'; if ($cff_header_outside) { $cff_header .= ' cff-outside'; } $cff_header .= '" ' . $cff_header_styles . '>'; $cff_header .= '<i class="fa fa-' . $cff_header_icon . '"'; if (!empty($cff_header_icon_color) || !empty($cff_header_icon_size)) { $cff_header .= ' style="'; } if (!empty($cff_header_icon_color)) { $cff_header .= 'color: #' . str_replace('#', '', $cff_header_icon_color) . ';'; } if (!empty($cff_header_icon_size)) { $cff_header .= ' font-size: ' . $cff_header_icon_size . 'px;'; } if (!empty($cff_header_icon_color) || !empty($cff_header_icon_size)) { $cff_header .= '"'; } $cff_header .= '></i>'; $cff_header .= '<span class="header-text" style="height: ' . $cff_header_icon_size . 'px;">' . $cff_header_text . '</span>'; $cff_header .= '</h3>'; //Misc Settings $cff_nofollow = $atts['nofollow']; $cff_nofollow == 'on' || $cff_nofollow == 'true' || $cff_nofollow == true ? $cff_nofollow = true : ($cff_nofollow = false); if ($atts['nofollow'] == 'false') { $cff_nofollow = false; } $cff_nofollow ? $cff_nofollow = ' rel="nofollow"' : ($cff_nofollow = ''); //If the number of posts is set to zero then don't show any and set limit to one if (($atts['num'] == '0' || $atts['num'] == 0) && $atts['num'] !== '') { $show_posts = 0; $cff_post_limit = 1; } //***START FEED*** $cff_content = ''; //Add the page header to the outside of the top of feed if ($cff_show_header && $cff_header_outside) { $cff_content .= $cff_header; } //Add like box to the outside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && $cff_like_box_outside) { $cff_content .= $like_box; } //Create CFF container HTML $cff_content .= '<div class="cff-wrapper">'; $cff_content .= '<div id="cff" data-char="' . $title_limit . '"'; //Disable default CSS styles? $cff_disable_styles = $atts['disablestyles']; $cff_disable_styles == 'on' || $cff_disable_styles == 'true' || $cff_disable_styles == true ? $cff_disable_styles = true : ($cff_disable_styles = false); if ($atts['disablestyles'] === 'false') { $cff_disable_styles = false; } //If there's a class then add it here if (!empty($cff_class) || !empty($cff_feed_height) || !$cff_disable_styles || $cff_feed_width_resp) { $cff_content .= ' class="'; } if (!empty($cff_class)) { $cff_content .= $cff_class . ' '; } if (!empty($cff_feed_height)) { $cff_content .= 'cff-fixed-height '; } if ($cff_feed_width_resp) { $cff_content .= 'cff-width-resp '; } if (!$cff_disable_styles) { $cff_content .= 'cff-default-styles'; } if (!empty($cff_class) || !empty($cff_feed_height) || !$cff_disable_styles || $cff_feed_width_resp) { $cff_content .= '"'; } $cff_content .= ' ' . $cff_feed_styles . '>'; //Add the page header to the inside of the top of feed if ($cff_show_header && !$cff_header_outside) { $cff_content .= $cff_header; } //Add like box to the inside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && !$cff_like_box_outside) { $cff_content .= $like_box; } //Limit var $i = 0; //Define array for post items $cff_posts_array = array(); //ALL POSTS if (!$cff_events_only) { // $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '/' . $graph_query . '?access_token=' . $access_token . '&limit=' . $cff_post_limit . '&locale=' . $cff_locale . $cff_ssl; $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '/' . $graph_query . '?fields=id,from,message,message_tags,story,story_tags,link,source,name,caption,description,type,status_type,object_id,created_time&access_token=' . $access_token . '&limit=' . $cff_post_limit . '&locale=' . $cff_locale . $cff_ssl; //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { //Create the transient name //Split the Page ID in half and stick it together so we definitely have the beginning and end of it $trans_page_id = substr($page_id, 0, 17) . substr($page_id, -16); $transient_name = 'cff_' . substr($graph_query, 0, 1) . '_' . $trans_page_id . substr($cff_post_limit, 0, 3) . substr($show_posts_by, 0, 2); //Limit to 45 chars max $transient_name = substr($transient_name, 0, 45); //Get any existing copy of our transient data if (false === ($posts_json = get_transient($transient_name)) || $posts_json === null) { //Get the contents of the Facebook page $posts_json = cff_fetchUrl($cff_posts_json_url); //Check whether any data is returned from the API. If it isn't then don't cache the error response and instead keep checking the API on every page load until data is returned. $FBdata = json_decode($posts_json); if (!empty($FBdata->data)) { //Cache the JSON set_transient($transient_name, $posts_json, $cache_seconds); } } else { $posts_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($posts_json == false) { $posts_json = cff_fetchUrl($cff_posts_json_url); } } } else { $posts_json = cff_fetchUrl($cff_posts_json_url); } //Interpret data with JSON $FBdata = json_decode($posts_json); //If there's no data then show a pretty error message if (empty($FBdata->data)) { $cff_content .= '<div class="cff-error-msg"><p>Unable to display Facebook posts.<br/><a href="javascript:void(0);" id="cff-show-error" onclick="cffShowError()">Show error</a>'; $cff_content .= '<script type="text/javascript">function cffShowError() { document.getElementById("cff-error-reason").style.display = "block"; document.getElementById("cff-show-error").style.display = "none"; }</script>'; $cff_content .= '</p><div id="cff-error-reason">'; if (isset($FBdata->error->message)) { $cff_content .= 'Error: ' . $FBdata->error->message; } if (isset($FBdata->error->type)) { $cff_content .= '<br />Type: ' . $FBdata->error->type; } if (isset($FBdata->error->code)) { $cff_content .= '<br />Code: ' . $FBdata->error->code; } if (isset($FBdata->error->error_subcode)) { $cff_content .= '<br />Subcode: ' . $FBdata->error->error_subcode; } if (isset($FBdata->error_msg)) { $cff_content .= 'Error: ' . $FBdata->error_msg; } if (isset($FBdata->error_code)) { $cff_content .= '<br />Code: ' . $FBdata->error_code; } if ($FBdata == null) { $cff_content .= 'Error: Server configuration issue'; } if (empty($FBdata->error) && empty($FBdata->error_msg) && $FBdata !== null) { $cff_content .= 'Error: No posts available for this Facebook ID'; } $cff_content .= '<br />Please refer to our <a href="http://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank">Error Message Reference</a>.'; $cff_content .= '</div></div>'; //End .cff-error-msg and #cff-error-reason $cff_content .= '</div></div>'; //End #cff and .cff-wrapper return $cff_content; } //***STARTS POSTS LOOP*** foreach ($FBdata->data as $news) { //Explode News and Page ID's into 2 values $PostID = ''; $cff_post_id = ''; if (isset($news->id)) { $cff_post_id = $news->id; $PostID = explode("_", $cff_post_id); } //Check the post type $cff_post_type = $news->type; if ($cff_post_type == 'link') { isset($news->story) ? $story = $news->story : ($story = ''); //Check whether it's an event $event_link_check = "facebook.com/events/"; $event_link_check = stripos($news->link, $event_link_check); if ($event_link_check) { $cff_post_type = 'event'; } } //Should we show this post or not? $cff_show_post = false; switch ($cff_post_type) { case 'link': if ($cff_show_links_type) { $cff_show_post = true; } break; case 'event': if ($cff_show_event_type) { $cff_show_post = true; } break; case 'video': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'swf': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'photo': if ($cff_show_photos_type) { $cff_show_post = true; } break; case 'offer': $cff_show_post = true; break; case 'status': //Check whether it's a status (author comment or like) if ($cff_show_status_type && !empty($news->message)) { $cff_show_post = true; } break; } //ONLY show posts by others if ($cff_show_only_others) { //Get the numeric ID of the page $page_object = cff_fetchUrl('https://graph.facebook.com/' . $page_id . '?fields=name,id&access_token=' . $access_token); $page_object = json_decode($page_object); $numeric_page_id = $page_object->id; //If the post author's ID is the same as the page ID then don't show the post if ($numeric_page_id == $news->from->id) { $cff_show_post = false; } } //Is it a duplicate post? if (!isset($prev_post_message)) { $prev_post_message = ''; } if (!isset($prev_post_link)) { $prev_post_link = ''; } if (!isset($prev_post_description)) { $prev_post_description = ''; } isset($news->message) ? $pm = $news->message : ($pm = ''); isset($news->link) ? $pl = $news->link : ($pl = ''); isset($news->description) ? $pd = $news->description : ($pd = ''); if ($prev_post_message == $pm && $prev_post_link == $pl && $prev_post_description == $pd) { $cff_show_post = false; } //Offset. If the post index ($i) is less than the offset then don't show the post if (intval($i) < intval($atts['offset'])) { $cff_show_post = false; $i++; } //Check post type and display post if selected if ($cff_show_post) { //If it isn't then create the post //Only create posts for the amount of posts specified if (intval($atts['offset']) > 0) { //If offset is being used then stop after showing the number of posts + the offset if ($i == intval($show_posts) + intval($atts['offset'])) { break; } } else { //Else just stop after the number of posts to be displayed is reached if ($i == $show_posts) { break; } } $i++; //********************************// //***COMPILE SECTION VARIABLES***// //********************************// //Set the post link isset($news->link) ? $link = htmlspecialchars($news->link) : ($link = ''); //Is it a shared album? $shared_album_string = 'shared an album:'; isset($news->story) ? $story = $news->story : ($story = ''); $shared_album = stripos($story, $shared_album_string); if ($shared_album) { $link = str_replace('photo.php?', 'media/set/?', $link); } //Check the post type isset($news->type) ? $cff_post_type = $news->type : ($cff_post_type = ''); if ($cff_post_type == 'link') { isset($news->story) ? $story = $news->story : ($story = ''); //Check whether it's an event $event_link_check = "facebook.com/events/"; //Make sure URL doesn't include 'permalink' as that indicates someone else sharing a post from within an event (eg: https://www.facebook.com/events/617323338414282/permalink/617324268414189/) and the event ID is then not retrieved properly from the event URL as it's formatted like so: facebook.com/events/EVENT_ID/permalink/POST_ID $event_link_check = stripos($news->link, $event_link_check); $event_link_check_2 = stripos($news->link, "permalink/"); if ($event_link_check && !$event_link_check_2) { $cff_post_type = 'event'; } } //If it's an event then check whether the URL contains facebook.com if (isset($news->link)) { if (stripos($news->link, "events/") && $cff_post_type == 'event') { //Facebook changed the event link from absolute to relative, and so if the link isn't absolute then add facebook.com to front stripos($link, 'facebook.com') ? $link = $link : ($link = 'https://facebook.com' . $link); } } //Is it an album? $cff_album = false; $num_photos = 0; if (isset($news->status_type)) { if ($news->status_type == 'added_photos') { //Check 'story' to see whether it contains a number isset($news->story) ? $str = $news->story : ($str = ''); //Only matches number with a space after them preg_match('!\\d+ !', $str, $matches); isset($matches[0]) ? $num_photos = $matches[0] : ($num_photos = 0); //If the story contains a number... if ($num_photos > 1) { //... and the link is to an album then it most likely has photo attachments $albumLinkArr1 = explode('photos/a.', $link); $albumLinkArr2 = explode('.', $albumLinkArr1[1]); //If it has an album link then set the post type to be album if (isset($albumLinkArr1[1])) { $cff_album = true; //Change the Post ID to be to the post about adding photos to the album $cff_post_id = $PostID[0] . '_' . $albumLinkArr2[0]; //Link to the album instead of the photo $album_link = str_replace('photo.php?', 'media/set/?', $link); $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; //If the album link is a new format then link it to the post $album_link_check = 'media/set/?'; if (stripos($album_link, $album_link_check) !== true) { $album_link = $link; } } } } } //If there's no link provided then link to either the Facebook page or the individual status if (empty($news->link)) { if ($cff_link_to_timeline == true) { //Link to page $link = 'http://facebook.com/' . $page_id; } else { //Link to status $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } } //DATE $cff_date_formatting = $atts['dateformat']; $cff_date_custom = $atts['datecustom']; $post_time = $news->created_time; $cff_date = '<p class="cff-date" ' . $cff_date_styles . '>' . $cff_date_before . ' ' . cff_getdate(strtotime($post_time), $cff_date_formatting, $cff_date_custom) . ' ' . $cff_date_after; if ($cff_date_position == 'below' || !$cff_show_author && $cff_date_position == 'author') { $cff_date .= '<span class="cff-date-dot"> · </span>'; } $cff_date .= '</p>'; //POST AUTHOR $cff_author = '<div class="cff-author">'; //Author text $cff_author .= '<a href="https://facebook.com/' . $news->from->id . '" ' . $target . $cff_nofollow . ' title="' . $news->from->name . ' on Facebook" ' . $cff_author_styles . '><div class="cff-author-text">'; if ($cff_show_date && $cff_date_position !== 'above' && $cff_date_position !== 'below') { $cff_author .= '<p class="cff-page-name cff-author-date">' . $news->from->name . '</p>'; $cff_author .= $cff_date; } else { $cff_author .= '<span class="cff-page-name">' . $news->from->name . '</span>'; } $cff_author .= '</div>'; //Author image //Set the author image as a variable. If it already exists then don't query the api for it again. $cff_author_img_var = '$cff_author_img_' . $news->from->id; if (!isset(${$cff_author_img_var})) { ${$cff_author_img_var} = 'https://graph.facebook.com/' . $news->from->id . '/picture?type=square'; } $cff_author .= '<div class="cff-author-img"><img src="' . ${$cff_author_img_var} . '" title="' . $news->from->name . '" alt="' . $news->from->name . '" width=40 height=40></div>'; $cff_author .= '</a></div>'; //End .cff-author //POST TEXT $cff_translate_photos_text = $atts['photostext']; if (!isset($cff_translate_photos_text) || empty($cff_translate_photos_text)) { $cff_translate_photos_text = 'photos'; } $cff_post_text = '<' . $cff_title_format . ' class="cff-post-text" ' . $cff_title_styles . '>'; //Start HTML for post text $cff_post_text .= '<span class="cff-text" data-color="' . $cff_posttext_link_color . '">'; if ($cff_title_link) { //Link to the Facebook post if it's a link or a video $cff_post_type == 'link' || $cff_post_type == 'video' ? $text_link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1] : ($text_link = $link); $cff_post_text .= '<a class="cff-post-text-link" ' . $cff_title_styles . ' href="' . $text_link . '" ' . $target . $cff_nofollow . '>'; } //Which content should we use? $cff_post_text_type = ''; $post_text = ''; //Use the story if (!empty($news->story)) { $post_text = htmlspecialchars($news->story); $cff_post_text_type = 'story'; } //Use the message if (!empty($news->message)) { $post_text = htmlspecialchars($news->message); $cff_post_text_type = 'message'; } //Use the name if (!empty($news->name) && empty($news->story) && empty($news->message)) { $post_text = htmlspecialchars($news->name); $cff_post_text_type = 'name'; } // if ($cff_album) { // if (!empty($news->name)) { // $post_text = htmlspecialchars($news->name); // $cff_post_text_type = 'name'; // } // if (!empty($news->message) && empty($news->name)) { // $post_text = htmlspecialchars($news->message); // $cff_post_text_type = 'message'; // } // if ($num_photos > 1) $post_text .= ' (' . trim($num_photos) . ' '.$cff_translate_photos_text.')'; // } //MESSAGE TAGS $cff_post_tags = $atts['posttags']; //If the post tags option doesn't exist yet (ie. on plugin update) then set them as true if (!array_key_exists('cff_post_tags', $options)) { $cff_post_tags = true; } //Add message and story tags if there are any and the post text is the message or the story if ($cff_post_tags && (isset($news->message_tags) || isset($news->story_tags)) && ($cff_post_text_type == 'message' || $cff_post_text_type == 'story') && !$cff_title_link) { //Use message_tags or story_tags? isset($news->message_tags) ? $text_tags = $news->message_tags : ($text_tags = $news->story_tags); //If message tags and message is being used as the post text, or same with story. This stops story tags being used to replace the message inadvertently. if ($cff_post_text_type == 'message' && isset($news->message_tags) || $cff_post_text_type == 'story' && !isset($news->message_tags)) { //Does the Post Text contain any html tags? - the & symbol is the best indicator of this $cff_html_check_array = array('<', '’', '“', '"', '&', '>>', '>'); //always use the text replace method if (cff_stripos_arr($post_text, $cff_html_check_array) !== false) { //Loop through the tags foreach ($text_tags as $message_tag) { isset($message_tag->id) ? $message_tag = $message_tag : ($message_tag = $message_tag[0]); $tag_name = $message_tag->name; $tag_link = '<a href="http://facebook.com/' . $message_tag->id . '" style="color: #' . $cff_posttext_link_color . ';" target="_blank">' . $message_tag->name . '</a>'; $post_text = str_replace($tag_name, $tag_link, $post_text); } } else { //If it doesn't contain HTMl tags then use the offset to replace message tags $message_tags_arr = array(); $i = 0; foreach ($text_tags as $message_tag) { $i++; isset($message_tag->id) ? $message_tag = $message_tag : ($message_tag = $message_tag[0]); $message_tags_arr = cff_array_push_assoc($message_tags_arr, $i, array('id' => $message_tag->id, 'name' => $message_tag->name, 'type' => isset($message_tag->type) ? $message_tag->type : '', 'offset' => $message_tag->offset, 'length' => $message_tag->length)); } for ($i = count($message_tags_arr); $i >= 1; $i--) { //If the name is blank (aka the story tag doesn't work properly) then don't use it if ($message_tags_arr[$i]['name'] !== '') { if ($cff_post_text_type == 'story' && $message_tags_arr[$i]['type'] == 'event') { //Don't use the story tag in this case otherwise it changes '__ created an event' to '__ created an Name Of Event' } else { $b = '<a href="http://facebook.com/' . $message_tags_arr[$i]['id'] . '">' . $message_tags_arr[$i]['name'] . '</a>'; $c = $message_tags_arr[$i]['offset']; $d = $message_tags_arr[$i]['length']; $post_text = cff_mb_substr_replace($post_text, $b, $c, $d); } } } } // end if/else } // end message check } //END MESSAGE TAGS //Replace line breaks in text (needed for IE8) $post_text = preg_replace("/\r\n|\r|\n/", '<br/>', $post_text); //If the text is wrapped in a link then don't hyperlink any text within if ($cff_title_link) { //Wrap links in a span so we can break the text if it's too long $cff_post_text .= cff_wrap_span($post_text) . ' '; } else { //Don't use htmlspecialchars for post_text as it's added above so that it doesn't mess up the message_tag offsets $cff_post_text .= cff_autolink($post_text) . ' '; } if ($cff_title_link) { $cff_post_text .= '</a>'; } $cff_post_text .= '</span>'; //'See More' link $cff_post_text .= '<span class="cff-expand">... <a href="#" style="color: #' . $cff_posttext_link_color . '"><span class="cff-more">' . $cff_see_more_text . '</span><span class="cff-less">' . $cff_see_less_text . '</span></a></span>'; $cff_post_text .= '</' . $cff_title_format . '>'; //DESCRIPTION $cff_description = ''; //Use the description if it's available and the post type isn't set to offer (offer description isn't useful) if ((!empty($news->description) || !empty($news->caption)) && $cff_post_type != 'offer') { $description_text = ''; if (!empty($news->description)) { $description_text = $news->description; } else { $description_text = $news->caption; } if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_autolink(htmlspecialchars($description_text), $link_color = $cff_posttext_link_color) . ' </span></p>'; //If the post text and description/caption are the same then don't show the description if ($post_text == $description_text) { $cff_description = ''; } if ($cff_post_type == 'event') { $cff_description = ''; } } //LINK $cff_shared_link = ''; //Display shared link if ($cff_post_type == 'link') { $cff_shared_link .= '<div class="cff-shared-link'; if ($cff_disable_link_box) { $cff_shared_link .= ' cff-no-styles"'; } if (!$cff_disable_link_box) { $cff_shared_link .= '" ' . $cff_link_box_styles; } $cff_shared_link .= '>'; //Display link name and description if (!empty($news->description)) { $cff_shared_link .= '<div class="cff-text-link '; $cff_shared_link .= 'cff-no-image'; $cff_shared_link .= '">'; //The link title: $cff_shared_link .= '<' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_link_title_color . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; //The link source: !empty($news->caption) ? $cff_link_caption = $news->caption : ($cff_link_caption = ''); if (!empty($cff_link_caption)) { $cff_shared_link .= '<p class="cff-link-caption" style="color:#' . str_replace('#', '', $cff_link_url_color) . ';">' . $cff_link_caption . '</p>'; } if ($cff_show_desc) { if ($description_text != $cff_link_caption) { $cff_shared_link .= $cff_description; } } $cff_shared_link .= '</div>'; } $cff_shared_link .= '</div>'; } //EVENT $cff_event = ''; if ($cff_show_event_title || $cff_show_event_details) { //Check for media if ($cff_post_type == 'event') { //Get the event id from the event URL. eg: http://www.facebook.com/events/123451234512345/ $event_url = parse_url($link); $url_parts = explode('/', $event_url['path']); //Get the id from the parts $eventID = $url_parts[count($url_parts) - 2]; //Facebook changed the event link from absolute to relative, and so if the link isn't absolute then add facebook.com to front stripos($link, 'facebook.com') ? $link = $link : ($link = 'https://facebook.com' . $link); //Get the contents of the event using the WP HTTP API $event_json_url = 'https://graph.facebook.com/' . $eventID . '?access_token=' . $access_token . $cff_ssl; //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_tle_' . $eventID; $transient_name = substr($transient_name, 0, 45); if (false === ($event_json = get_transient($transient_name)) || $event_json === null) { //Get the contents of the Facebook page $event_json = cff_fetchUrl($event_json_url); //Cache the JSON set_transient($transient_name, $event_json, $cache_seconds); } else { $event_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($event_json == false) { $event_json = cff_fetchUrl($event_json_url); } } } else { $event_json = cff_fetchUrl($event_json_url); } //Interpret data with JSON $event_object = json_decode($event_json); //Event date $event_time = $event_object->start_time; isset($event_object->end_time) ? $event_end_time = ' - ' . cff_eventdate(strtotime($event_object->end_time), $cff_event_date_formatting, $cff_event_date_custom) : ($event_end_time = ''); //If timezone migration is enabled then remove last 5 characters if (strlen($event_time) == 24) { $event_time = substr($event_time, 0, -5); } if (!empty($event_time)) { $cff_event_date = '<p class="cff-date" ' . $cff_event_date_styles . '>' . cff_eventdate(strtotime($event_time), $cff_event_date_formatting, $cff_event_date_custom) . $event_end_time . '</p>'; } //EVENT //Display the event details $cff_event .= '<div class="cff-details">'; //show event date above title if ($cff_event_date_position == 'above') { $cff_event .= $cff_event_date; } //Show event title if ($cff_show_event_title && !empty($event_object->name)) { if ($cff_event_title_link) { $cff_event .= '<a href="' . $link . '" ' . $target . $cff_nofollow . '>'; } $cff_event .= '<' . $cff_event_title_format . ' ' . $cff_event_title_styles . '>' . $event_object->name . '</' . $cff_event_title_format . '>'; if ($cff_event_title_link) { $cff_event .= '</a>'; } } //show event date below title if ($cff_event_date_position !== 'above') { $cff_event .= $cff_event_date; } //Show event details if ($cff_show_event_details) { //Location if (!empty($event_object->location)) { $cff_event .= '<p class="cff-where" ' . $cff_event_details_styles . '>' . $event_object->location . '</p>'; } //Description if (!empty($event_object->description)) { $description = $event_object->description; if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $description = substr($description, 0, $body_limit) . '...'; } } $cff_event .= '<p class="cff-info" ' . $cff_event_details_styles . '>' . cff_autolink($description, $link_color = str_replace('#', '', $cff_event_link_color)) . '</p>'; } } $cff_event .= '</div>'; } } /* VIDEO */ //Check to see whether it's an embedded video so that we can show the name above the post text if necessary $cff_is_video_embed = false; if ($news->type == 'video') { $url = $news->source; //Embeddable video strings $youtube = 'youtube'; $youtu = 'youtu'; $vimeo = 'vimeo'; $youtubeembed = 'youtube.com/embed'; //Check whether it's a youtube video $youtube = stripos($url, $youtube); $youtu = stripos($url, $youtu); $youtubeembed = stripos($url, $youtubeembed); //Check whether it's a youtube video if ($youtube || $youtu || $youtubeembed || stripos($url, $vimeo) !== false) { $cff_is_video_embed = true; } } $cff_media = ''; if ($news->type == 'video') { //Add the name to the description if it's a video embed if ($cff_is_video_embed) { isset($news->name) ? $video_name = $news->name : ($video_name = $link); isset($news->description) ? $description_text = $news->description : ($description_text = ''); //Add the 'cff-shared-link' class so that embedded videos display in a box $cff_description = '<div class="cff-desc-wrap cff-shared-link '; if (empty($picture)) { $cff_description .= 'cff-no-image'; } if ($cff_disable_link_box) { $cff_description .= ' cff-no-styles"'; } if (!$cff_disable_link_box) { $cff_description .= '" ' . $cff_link_box_styles; } $cff_description .= '>'; if (isset($news->name)) { $cff_description .= '<' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_link_title_color . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; } if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_autolink(htmlspecialchars($description_text)) . '</span></p></div>'; } else { isset($news->name) ? $video_name = $news->name : ($video_name = $link); if (isset($news->name)) { $cff_description .= '<' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . $cff_nofollow . ' style="color:#' . $cff_link_title_color . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; } } } //Display the link to the Facebook post or external link $cff_link = ''; //Default link $cff_viewpost_class = 'cff-viewpost-facebook'; if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $link_text = $cff_facebook_link_text; //Link to the Facebook post if it's a link or a video if ($cff_post_type == 'link' || $cff_post_type == 'video') { $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } //If it's a shared post then change the link to use the Post ID so that it links to the shared post and not the original post that's being shared if (isset($news->status_type)) { if ($news->status_type == 'shared_story') { $link = "https://www.facebook.com/" . $cff_post_id; } } //Social media sharing URLs $cff_share_facebook = 'https://www.facebook.com/sharer/sharer.php?u=' . urlencode($link); $cff_share_twitter = 'https://twitter.com/intent/tweet?text=' . urlencode($link); $cff_share_google = 'https://plus.google.com/share?url=' . urlencode($link); $cff_share_linkedin = 'https://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($link) . '&title=' . rawurlencode(strip_tags($cff_post_text)); $cff_share_email = 'mailto:?subject=Facebook&body=' . urlencode($link) . '%20-%20' . rawurlencode(strip_tags($cff_post_text)); //If it's an offer post then change the text if ($cff_post_type == 'offer') { $link_text = 'View Offer'; } //Create post action links HTML $cff_link = ''; if ($cff_show_facebook_link || $cff_show_facebook_share) { $cff_link .= '<div class="cff-post-links">'; //View on Facebook link if ($cff_show_facebook_link) { $cff_link .= '<a class="' . $cff_viewpost_class . '" href="' . $link . '" title="' . $link_text . '" ' . $target . $cff_nofollow . ' ' . $cff_link_styles . '>' . $link_text . '</a>'; } //Share link if ($cff_show_facebook_share) { $cff_link .= '<div class="cff-share-container">'; //Only show separating dot if both links are enabled if ($cff_show_facebook_link) { $cff_link .= '<span class="cff-dot" ' . $cff_link_styles . '>·</span>'; } $cff_link .= '<a class="cff-share-link" href="javascript:void(0);" title="' . $cff_facebook_share_text . '" ' . $cff_link_styles . '>' . $cff_facebook_share_text . '</a>'; $cff_link .= "<p class='cff-share-tooltip'><a href='" . $cff_share_facebook . "' target='_blank' class='cff-facebook-icon'><i class='fa fa-facebook-square'></i></a><a href='" . $cff_share_twitter . "' target='_blank' class='cff-twitter-icon'><i class='fa fa-twitter'></i></a><a href='" . $cff_share_google . "' target='_blank' class='cff-google-icon'><i class='fa fa-google-plus'></i></a><a href='" . $cff_share_linkedin . "' target='_blank' class='cff-linkedin-icon'><i class='fa fa-linkedin'></i></a><a href='" . $cff_share_email . "' target='_blank' class='cff-email-icon'><i class='fa fa-envelope'></i></a><i class='fa fa-play fa-rotate-90'></i></p></div>"; } $cff_link .= '</div>'; } //**************************// //***CREATE THE POST HTML***// //**************************// //Start the container $cff_post_item = '<div class="cff-item '; if ($cff_post_type == 'link') { $cff_post_item .= 'cff-link-item'; } if ($cff_post_type == 'event') { $cff_post_item .= 'cff-timeline-event'; } if ($cff_post_type == 'photo') { $cff_post_item .= 'cff-photo-post'; } if ($cff_post_type == 'video') { $cff_post_item .= 'cff-video-post'; } if ($cff_post_type == 'swf') { $cff_post_item .= 'cff-swf-post'; } if ($cff_post_type == 'status') { $cff_post_item .= 'cff-status-post'; } if ($cff_post_type == 'offer') { $cff_post_item .= 'cff-offer-post'; } if ($cff_album) { $cff_post_item .= ' cff-album'; } if ($cff_post_bg_color_check) { $cff_post_item .= ' cff-box'; } $cff_post_item .= ' author-' . cff_to_slug($news->from->name) . '" id="cff_' . $cff_post_id . '" ' . $cff_item_styles . '>'; //POST AUTHOR if ($cff_show_author) { $cff_post_item .= $cff_author; } //DATE ABOVE if ($cff_show_date && $cff_date_position == 'above') { $cff_post_item .= $cff_date; } //POST TEXT if ($cff_show_text) { $cff_post_item .= $cff_post_text; } //DESCRIPTION if ($cff_show_desc && $cff_post_type != 'offer' && $cff_post_type != 'link') { $cff_post_item .= $cff_description; } //LINK if ($cff_show_shared_links) { $cff_post_item .= $cff_shared_link; } //DATE BELOW if (!$cff_show_author && $cff_date_position == 'author' || $cff_show_date && $cff_date_position == 'below') { if ($cff_show_date && $cff_post_type !== 'event') { $cff_post_item .= $cff_date; } } //EVENT if ($cff_show_event_title || $cff_show_event_details) { $cff_post_item .= $cff_event; } //DATE BELOW (only for Event posts) if (!$cff_show_author && $cff_date_position == 'author' || $cff_show_date && $cff_date_position == 'below') { if ($cff_show_date && $cff_post_type == 'event') { $cff_post_item .= $cff_date; } } //VIEW ON FACEBOOK LINK if ($cff_show_link) { $cff_post_item .= $cff_link; } //End the post item $cff_post_item .= '</div>'; //PUSH TO ARRAY $cff_posts_array = cff_array_push_assoc($cff_posts_array, strtotime($post_time), $cff_post_item); } // End post type check if (isset($news->message)) { $prev_post_message = $news->message; } if (isset($news->link)) { $prev_post_link = $news->link; } if (isset($news->description)) { $prev_post_description = $news->description; } } // End the loop //Sort the array in reverse order (newest first) krsort($cff_posts_array); } // End ALL POSTS //Output the posts array $p = 0; foreach ($cff_posts_array as $post) { if ($p == $show_posts) { break; } $cff_content .= $post; $p++; } //Reset the timezone date_default_timezone_set($cff_orig_timezone); //Add the Like Box inside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && !$cff_like_box_outside) { $cff_content .= $like_box; } /* Credit link */ $cff_show_credit = $atts['credit']; $cff_show_credit == 'true' || $cff_show_credit == 'on' ? $cff_show_credit = true : ($cff_show_credit = false); if ($cff_show_credit) { $cff_content .= '<p class="cff-credit"><a href="https://smashballoon.com/custom-facebook-feed/" target="_blank" style="color: #' . ($link_color = $cff_posttext_link_color . '" title="Smash Balloon Custom Facebook Feed WordPress Plugin"><img src="' . plugins_url('/img/smashballoon-tiny.png', __FILE__) . '" alt="Smash Balloon Custom Facebook Feed WordPress Plugin" />The Custom Facebook Feed plugin</a></p>'); } //End the feed $cff_content .= '</div><div class="cff-clear"></div>'; //Add the Like Box outside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && $cff_like_box_outside) { $cff_content .= $like_box; } //If the feed is loaded via Ajax then put the scripts into the shortcode itself $ajax_theme = $atts['ajax']; $ajax_theme == 'on' || $ajax_theme == 'true' || $ajax_theme == true ? $ajax_theme = true : ($ajax_theme = false); if ($atts['ajax'] == 'false') { $ajax_theme = false; } if ($ajax_theme) { $cff_link_hashtags = $atts['linkhashtags']; $cff_link_hashtags == 'true' || $cff_link_hashtags == 'on' ? $cff_link_hashtags = 'true' : ($cff_link_hashtags = 'false'); if ($cff_title_link == 'true' || $cff_title_link == 'on') { $cff_link_hashtags = 'false'; } $cff_content .= '<script type="text/javascript">var cfflinkhashtags = "' . $cff_link_hashtags . '";</script>'; $cff_content .= '<script type="text/javascript" src="' . plugins_url('/js/cff-scripts.js?ver=' . CFFVER, __FILE__) . '"></script>'; } $cff_content .= '</div>'; if (isset($cff_posttext_link_color) && !empty($cff_posttext_link_color)) { $cff_content .= '<style>#cff .cff-post-text a{ color: #' . $cff_posttext_link_color . '; }</style>'; } //Return our feed HTML to display return $cff_content; }
function display_cff($atts, $content = null) { //Which extensions are active? include_once ABSPATH . 'wp-admin/includes/plugin.php'; $cff_ext_options = get_option('cff_extensions_status'); //Set extensions in extensions plugin all to false by default $cff_ext_multifeed_active_check = false; $cff_ext_date_range_active_check = false; $cff_ext_featured_post_active_check = false; $cff_ext_album_active_check = false; if (WPW_SL_ITEM_NAME == 'Custom Facebook Feed WordPress Plugin Smash') { //Set page variables if (isset($cff_ext_options['cff_extensions_multifeed_active'])) { $cff_ext_multifeed_active_check = $cff_ext_options['cff_extensions_multifeed_active']; } if (isset($cff_ext_options['cff_extensions_date_range_active'])) { $cff_ext_date_range_active_check = $cff_ext_options['cff_extensions_date_range_active']; } if (isset($cff_ext_options['cff_extensions_featured_post_active'])) { $cff_ext_featured_post_active_check = $cff_ext_options['cff_extensions_featured_post_active']; } if (isset($cff_ext_options['cff_extensions_album_active'])) { $cff_ext_album_active_check = $cff_ext_options['cff_extensions_album_active']; } } is_plugin_active('cff-multifeed/cff-multifeed.php') || $cff_ext_multifeed_active_check ? $cff_ext_multifeed_active = true : ($cff_ext_multifeed_active = false); is_plugin_active('cff-date-range/cff-date-range.php') || $cff_ext_date_range_active_check ? $cff_ext_date_active = true : ($cff_ext_date_active = false); is_plugin_active('cff-featured-post/cff-featured-post.php') || $cff_ext_featured_post_active_check ? $cff_featured_post_active = true : ($cff_featured_post_active = false); is_plugin_active('cff-album/cff-album.php') || $cff_ext_album_active_check ? $cff_album_active = true : ($cff_album_active = false); //Style options $options = get_option('cff_style_settings'); //Create the types string to set as shortcode default $type_string = ''; if ($options['cff_show_links_type']) { $type_string .= 'links,'; } if ($options['cff_show_event_type']) { $type_string .= 'events,'; } if ($options['cff_show_video_type']) { $type_string .= 'videos,'; } if ($options['cff_show_photos_type']) { $type_string .= 'photos,'; } if ($options['cff_show_albums_type']) { $type_string .= 'albums,'; } //If the album option hasn't been set yet in the $options array (ie. plugin has been updated but the option hasn't been saved) then set albums to display by default if (!array_key_exists('cff_show_albums_type', $options)) { $type_string .= 'albums,'; } if ($options['cff_show_status_type']) { $type_string .= 'statuses,'; } //Create the includes string to set as shortcode default $include_string = ''; if ($options['cff_show_author']) { $include_string .= 'author,'; } if ($options['cff_show_text']) { $include_string .= 'text,'; } if ($options['cff_show_desc']) { $include_string .= 'desc,'; } if ($options['cff_show_shared_links']) { $include_string .= 'sharedlinks,'; } if ($options['cff_show_date']) { $include_string .= 'date,'; } if ($options['cff_show_media']) { $include_string .= 'media,'; } if ($options['cff_show_event_title']) { $include_string .= 'eventtitle,'; } if ($options['cff_show_event_details']) { $include_string .= 'eventdetails,'; } if ($options['cff_show_meta']) { $include_string .= 'social,'; } if ($options['cff_show_link']) { $include_string .= 'link,'; } if ($options['cff_show_like_box']) { $include_string .= 'likebox,'; } //Pass in shortcode attrbutes $atts = shortcode_atts(array('accesstoken' => get_option('cff_access_token'), 'id' => get_option('cff_page_id'), 'pagetype' => get_option('cff_page_type'), 'num' => get_option('cff_num_show'), 'limit' => get_option('cff_post_limit'), 'others' => '', 'showpostsby' => get_option('cff_show_others'), 'cachetime' => get_option('cff_cache_time'), 'cacheunit' => get_option('cff_cache_time_unit'), 'locale' => get_option('cff_locale'), 'ajax' => get_option('cff_ajax'), 'width' => $options['cff_feed_width'], 'height' => $options['cff_feed_height'], 'padding' => $options['cff_feed_padding'], 'bgcolor' => $options['cff_bg_color'], 'showauthor' => '', 'showauthornew' => $options['cff_show_author'], 'class' => $options['cff_class'], 'type' => $type_string, 'eventsource' => $options['cff_events_source'], 'eventoffset' => $options['cff_event_offset'], 'eventimage' => $options['cff_event_image_size'], 'pastevents' => 'false', 'albumsource' => $options['cff_albums_source'], 'showalbumtitle' => $options['cff_show_album_title'], 'showalbumnum' => $options['cff_show_album_number'], 'albumcols' => $options['cff_album_cols'], 'photosource' => $options['cff_photos_source'], 'photocols' => $options['cff_photos_cols'], 'filter' => $options['cff_filter_string'], 'exfilter' => $options['cff_exclude_string'], 'layout' => $options['cff_preset_layout'], 'enablenarrow' => $options['cff_enable_narrow'], 'mediaposition' => $options['cff_media_position'], 'include' => $include_string, 'exclude' => '', 'postbgcolor' => isset($options['cff_post_bg_color']) ? $options['cff_post_bg_color'] : '', 'postcorners' => isset($options['cff_post_rounded']) ? $options['cff_post_rounded'] : '', 'textformat' => $options['cff_title_format'], 'textsize' => $options['cff_title_size'], 'textweight' => $options['cff_title_weight'], 'textcolor' => $options['cff_title_color'], 'textlinkcolor' => $options['cff_posttext_link_color'], 'textlink' => $options['cff_title_link'], 'posttags' => $options['cff_post_tags'], 'linkhashtags' => $options['cff_link_hashtags'], 'authorsize' => $options['cff_author_size'], 'authorcolor' => $options['cff_author_color'], 'descsize' => $options['cff_body_size'], 'descweight' => $options['cff_body_weight'], 'desccolor' => $options['cff_body_color'], 'linktitleformat' => $options['cff_link_title_format'], 'linktitlesize' => $options['cff_link_title_size'], 'linktitlecolor' => $options['cff_link_title_color'], 'linkurlcolor' => $options['cff_link_url_color'], 'linkbgcolor' => $options['cff_link_bg_color'], 'linkbordercolor' => $options['cff_link_border_color'], 'disablelinkbox' => $options['cff_disable_link_box'], 'eventtitleformat' => $options['cff_event_title_format'], 'eventtitlesize' => $options['cff_event_title_size'], 'eventtitleweight' => $options['cff_event_title_weight'], 'eventtitlecolor' => $options['cff_event_title_color'], 'eventtitlelink' => $options['cff_event_title_link'], 'eventdatesize' => $options['cff_event_date_size'], 'eventdateweight' => $options['cff_event_date_weight'], 'eventdatecolor' => $options['cff_event_date_color'], 'eventdatepos' => $options['cff_event_date_position'], 'eventdateformat' => $options['cff_event_date_formatting'], 'eventdatecustom' => $options['cff_event_date_custom'], 'eventdetailssize' => $options['cff_event_details_size'], 'eventdetailsweight' => $options['cff_event_details_weight'], 'eventdetailscolor' => $options['cff_event_details_color'], 'eventlinkcolor' => $options['cff_event_link_color'], 'datepos' => $options['cff_date_position'], 'datesize' => $options['cff_date_size'], 'dateweight' => $options['cff_date_weight'], 'datecolor' => $options['cff_date_color'], 'dateformat' => $options['cff_date_formatting'], 'datecustom' => $options['cff_date_custom'], 'timezone' => isset($options['cff_timezone']) ? $options['cff_timezone'] : 'America/Chicago', 'linksize' => $options['cff_link_size'], 'linkweight' => $options['cff_link_weight'], 'linkcolor' => $options['cff_link_color'], 'viewlinktext' => $options['cff_view_link_text'], 'linktotimeline' => $options['cff_link_to_timeline'], 'iconstyle' => $options['cff_icon_style'], 'socialtextcolor' => $options['cff_meta_text_color'], 'sociallinkcolor' => $options['cff_meta_link_color'], 'socialbgcolor' => $options['cff_meta_bg_color'], 'expandcomments' => $options['cff_expand_comments'], 'commentsnum' => $options['cff_comments_num'], 'hidecommentimages' => $options['cff_hide_comment_avatars'], 'textlength' => get_option('cff_title_length'), 'desclength' => get_option('cff_body_length'), 'likeboxpos' => $options['cff_like_box_position'], 'likeboxoutside' => $options['cff_like_box_outside'], 'likeboxcolor' => $options['cff_likebox_bg_color'], 'likeboxtextcolor' => $options['cff_like_box_text_color'], 'likeboxwidth' => $options['cff_likebox_width'], 'likeboxheight' => $options['cff_likebox_height'], 'likeboxfaces' => $options['cff_like_box_faces'], 'likeboxborder' => $options['cff_like_box_border'], 'showheader' => $options['cff_show_header'], 'headeroutside' => $options['cff_header_outside'], 'headertext' => $options['cff_header_text'], 'headerbg' => $options['cff_header_bg_color'], 'headerpadding' => $options['cff_header_padding'], 'headertextsize' => $options['cff_header_text_size'], 'headertextweight' => $options['cff_header_text_weight'], 'headertextcolor' => $options['cff_header_text_color'], 'headericon' => $options['cff_header_icon'], 'headericoncolor' => $options['cff_header_icon_color'], 'headericonsize' => $options['cff_header_icon_size'], 'videoheight' => $options['cff_video_height'], 'videoaction' => $options['cff_video_action'], 'sepcolor' => $options['cff_sep_color'], 'sepsize' => $options['cff_sep_size'], 'seemoretext' => $options['cff_see_more_text'], 'seelesstext' => $options['cff_see_less_text'], 'buyticketstext' => $options['cff_buy_tickets_text'], 'maptext' => $options['cff_map_text'], 'facebooklinktext' => $options['cff_facebook_link_text'], 'previouscommentstext' => $options['cff_translate_view_previous_comments_text'], 'commentonfacebooktext' => $options['cff_translate_comment_on_facebook_text'], 'photostext' => $options['cff_translate_photos_text'], 'likesthistext' => $options['cff_translate_likes_this_text'], 'likethistext' => $options['cff_translate_like_this_text'], 'andtext' => $options['cff_translate_and_text'], 'othertext' => $options['cff_translate_other_text'], 'otherstext' => $options['cff_translate_others_text'], 'from' => get_option('cff_date_from'), 'until' => get_option('cff_date_until'), 'featuredpost' => get_option('cff_featured_post_id'), 'album' => '', 'lightbox' => get_option('cff_lightbox')), $atts); /********** GENERAL **********/ $cff_page_type = $atts['pagetype']; $cff_is_group = false; if ($cff_page_type == 'group') { $cff_is_group = true; } $cff_feed_width = $atts['width']; $cff_feed_height = $atts['height']; $cff_feed_padding = $atts['padding']; $cff_bg_color = $atts['bgcolor']; $cff_show_author = $atts['showauthornew']; $cff_cache_time = $atts['cachetime']; $cff_locale = $atts['locale']; if (empty($cff_locale) || !isset($cff_locale) || $cff_locale == '') { $cff_locale = 'en_US'; } if (!isset($cff_cache_time)) { $cff_cache_time = 0; } $cff_cache_time_unit = $atts['cacheunit']; $cff_class = $atts['class']; //Compile feed styles $cff_feed_styles = 'style="'; if (!empty($cff_feed_width)) { $cff_feed_styles .= 'width:' . $cff_feed_width . '; '; } if (!empty($cff_feed_height)) { $cff_feed_styles .= 'height:' . $cff_feed_height . '; '; } if (!empty($cff_feed_padding)) { $cff_feed_styles .= 'padding:' . $cff_feed_padding . '; '; } if (!empty($cff_bg_color)) { $cff_feed_styles .= 'background-color:#' . str_replace('#', '', $cff_bg_color) . '; '; } $cff_feed_styles .= '"'; //Like box $cff_like_box_position = $atts['likeboxpos']; $cff_like_box_outside = $atts['likeboxoutside']; //Open links in new window? $target = 'target="_blank"'; /********** POST TYPES **********/ $cff_types = $atts['type']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode $cff_show_links_type = false; $cff_show_event_type = false; $cff_show_video_type = false; $cff_show_photos_type = false; $cff_show_status_type = false; $cff_show_albums_type = false; if (stripos($cff_types, 'link') !== false) { $cff_show_links_type = true; } if (stripos($cff_types, 'event') !== false) { $cff_show_event_type = true; } if (stripos($cff_types, 'video') !== false) { $cff_show_video_type = true; } if (stripos($cff_types, 'photo') !== false) { $cff_show_photos_type = true; } if (stripos($cff_types, 'album') !== false) { $cff_show_albums_type = true; } if (stripos($cff_types, 'status') !== false) { $cff_show_status_type = true; } //Only events $cff_events_source = $atts['eventsource']; if (empty($cff_events_source) || !isset($cff_events_source)) { $cff_events_source = 'eventspage'; } $cff_event_offset = $atts['eventoffset']; if (empty($cff_event_offset) || !isset($cff_event_offset)) { $cff_event_offset = '6'; } $cff_events_only = false; if ($cff_show_event_type && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_photos_type && !$cff_show_status_type && !$cff_show_albums_type) { $cff_events_only = true; } //Only albums $cff_albums_source = $atts['albumsource']; $cff_show_album_title = $atts['showalbumtitle']; $cff_show_album_title == 'on' || $cff_show_album_title == 'true' || $cff_show_album_title == true ? $cff_show_album_title = true : ($cff_show_album_title = false); if ($atts['showalbumtitle'] == 'false') { $cff_show_album_title = false; } $cff_show_album_number = $atts['showalbumnum']; $cff_show_album_number == 'on' || $cff_show_album_number == 'true' || $cff_show_album_number == true ? $cff_show_album_number = true : ($cff_show_album_number = false); if ($atts['showalbumnum'] == 'false') { $cff_show_album_number = false; } $cff_album_cols = $atts['albumcols']; $cff_albums_only = false; if ($cff_show_albums_type && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_photos_type && !$cff_show_status_type && !$cff_show_event_type) { $cff_albums_only = true; } //PHOTOS ONLY $cff_photos_source = $atts['photosource']; isset($atts['photocols']) ? $cff_photos_cols = $atts['photocols'] : ($cff_photos_cols = '1'); $cff_photos_only = false; if ($cff_show_photos_type && $cff_photos_source == 'photospage' && !$cff_show_links_type && !$cff_show_video_type && !$cff_show_event_type && !$cff_show_status_type && !$cff_show_albums_type) { $cff_photos_only = true; } if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $cff_photos_only = false; } /********** LAYOUT **********/ //Include string $cff_includes = $atts['include']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode $cff_show_author = false; $cff_show_text = false; $cff_show_desc = false; $cff_show_shared_links = false; $cff_show_date = false; $cff_show_media = false; $cff_show_event_title = false; $cff_show_event_details = false; $cff_show_meta = false; $cff_show_link = false; $cff_show_like_box = false; if (stripos($cff_includes, 'author') !== false) { $cff_show_author = true; } if (stripos($cff_includes, 'text') !== false) { $cff_show_text = true; } if (stripos($cff_includes, 'desc') !== false) { $cff_show_desc = true; } if (stripos($cff_includes, 'sharedlink') !== false) { $cff_show_shared_links = true; } if (stripos($cff_includes, 'date') !== false) { $cff_show_date = true; } if (stripos($cff_includes, 'media') !== false) { $cff_show_media = true; } if (stripos($cff_includes, 'eventtitle') !== false) { $cff_show_event_title = true; } if (stripos($cff_includes, 'eventdetail') !== false) { $cff_show_event_details = true; } if (stripos($cff_includes, 'social') !== false) { $cff_show_meta = true; } if (stripos($cff_includes, ',link') !== false) { $cff_show_link = true; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_includes, 'like') !== false) { $cff_show_like_box = true; } //Exclude string $cff_excludes = $atts['exclude']; //Look for non-plural version of string in the types string in case user specifies singular in shortcode if (stripos($cff_excludes, 'author') !== false) { $cff_show_author = false; } if (stripos($cff_excludes, 'text') !== false) { $cff_show_text = false; } if (stripos($cff_excludes, 'desc') !== false) { $cff_show_desc = false; } if (stripos($cff_excludes, 'sharedlink') !== false) { $cff_show_shared_links = false; } if (stripos($cff_excludes, 'date') !== false) { $cff_show_date = false; } if (stripos($cff_excludes, 'media') !== false) { $cff_show_media = false; } if (stripos($cff_excludes, 'eventtitle') !== false) { $cff_show_event_title = false; } if (stripos($cff_excludes, 'eventdetail') !== false) { $cff_show_event_details = false; } if (stripos($cff_excludes, 'social') !== false) { $cff_show_meta = false; } if (stripos($cff_excludes, ',link') !== false) { $cff_show_link = false; } //comma used to separate it from 'sharedlinks' - which also contains 'link' string if (stripos($cff_excludes, 'like') !== false) { $cff_show_like_box = false; } $cff_preset_layout = $atts['layout']; //Default is thumbnail layout $cff_thumb_layout = false; $cff_half_layout = false; $cff_full_layout = true; if (($cff_preset_layout == 'thumb' || empty($cff_preset_layout)) && $cff_show_media) { $cff_thumb_layout = true; } else { if ($cff_preset_layout == 'half' && $cff_show_media) { $cff_half_layout = true; } else { $cff_full_layout = true; } } //Get the media position $cff_media_position = $atts['mediaposition']; if ($cff_thumb_layout || $cff_half_layout) { $cff_media_position = 'below'; } //If the old shortcode option 'showauthor' is being used then apply it $cff_show_author_old = $atts['showauthor']; if ($cff_show_author_old == 'false') { $cff_show_author = false; } if ($cff_show_author_old == 'true') { $cff_show_author = true; } /********** META **********/ $cff_icon_style = $atts['iconstyle']; $cff_meta_text_color = $atts['socialtextcolor']; $cff_meta_bg_color = $atts['socialbgcolor']; $cff_expand_comments = $atts['expandcomments']; if ($cff_expand_comments == 'false') { $cff_expand_comments = false; } !isset($atts['commentsnum']) ? $cff_comments_num = '4' : ($cff_comments_num = $atts['commentsnum']); $cff_hide_comment_avatars = $atts['hidecommentimages']; if ($cff_hide_comment_avatars == 'false') { $cff_hide_comment_avatars = false; } $cff_meta_styles = 'style="'; if (!empty($cff_meta_text_color)) { $cff_meta_styles .= 'color:#' . str_replace('#', '', $cff_meta_text_color) . ';'; } if (!empty($cff_meta_bg_color)) { $cff_meta_styles .= 'background-color:#' . str_replace('#', '', $cff_meta_bg_color) . ';'; } $cff_meta_styles .= '"'; $cff_meta_link_color = 'style="color:#' . str_replace('#', '', $atts['sociallinkcolor']) . ';"'; // $cff_nocomments_text = $options[ 'cff_nocomments_text' ]; // $cff_hide_comments = $options[ 'cff_hide_comments' ]; // if (!isset($cff_nocomments_text) || empty($cff_nocomments_text)) $cff_hide_comments = true; /********** TYPOGRAPHY **********/ //See More text $cff_see_more_text = $atts['seemoretext']; $cff_see_less_text = $atts['seelesstext']; //See Less text //Title $cff_title_format = $atts['textformat']; if (empty($cff_title_format)) { $cff_title_format = 'p'; } $cff_title_size = $atts['textsize']; $cff_title_weight = $atts['textweight']; $cff_title_color = $atts['textcolor']; $cff_title_styles = 'style="'; if (!empty($cff_title_size) && $cff_title_size != 'inherit') { $cff_title_styles .= 'font-size:' . $cff_title_size . 'px; '; } if (!empty($cff_title_weight) && $cff_title_weight != 'inherit') { $cff_title_styles .= 'font-weight:' . $cff_title_weight . '; '; } if (!empty($cff_title_color)) { $cff_title_styles .= 'color:#' . str_replace('#', '', $cff_title_color) . ';'; } $cff_title_styles .= '"'; $cff_title_link = $atts['textlink']; $cff_title_link == 'on' || $cff_title_link == 'true' || $cff_title_link == true ? $cff_title_link = true : ($cff_title_link = false); if ($atts['textlink'] == 'false') { $cff_title_link = false; } //Author $cff_author_size = $atts['authorsize']; $cff_author_color = $atts['authorcolor']; $cff_author_styles = 'style="'; if (!empty($cff_author_size) && $cff_author_size != 'inherit') { $cff_author_styles .= 'font-size:' . $cff_author_size . 'px; '; } if (!empty($cff_author_color)) { $cff_author_styles .= 'color:#' . str_replace('#', '', $cff_author_color) . ';'; } $cff_author_styles .= '"'; //Description $cff_body_size = $atts['descsize']; $cff_body_weight = $atts['descweight']; $cff_body_color = $atts['desccolor']; $cff_body_styles = 'style="'; if (!empty($cff_body_size) && $cff_body_size != 'inherit') { $cff_body_styles .= 'font-size:' . $cff_body_size . 'px; '; } if (!empty($cff_body_weight) && $cff_body_weight != 'inherit') { $cff_body_styles .= 'font-weight:' . $cff_body_weight . '; '; } if (!empty($cff_body_color)) { $cff_body_styles .= 'color:#' . str_replace('#', '', $cff_body_color) . ';'; } $cff_body_styles .= '"'; //Shared link title $cff_link_title_format = $atts['linktitleformat']; if (empty($cff_link_title_format)) { $cff_link_title_format = 'p'; } $cff_link_title_size = $atts['linktitlesize']; $cff_link_title_color = $atts['linktitlecolor']; $cff_link_url_color = $atts['linkurlcolor']; $cff_link_title_styles = 'style="'; if (!empty($cff_link_title_size) && $cff_link_title_size != 'inherit') { $cff_link_title_styles .= 'font-size:' . $cff_link_title_size . 'px;'; } $cff_link_title_styles .= '"'; //Shared link box $cff_link_bg_color = $atts['linkbgcolor']; $cff_link_border_color = $atts['linkbordercolor']; $cff_disable_link_box = $atts['disablelinkbox']; $cff_disable_link_box == 'true' || $cff_disable_link_box == 'on' ? $cff_disable_link_box = true : ($cff_disable_link_box = false); $cff_link_box_styles = 'style="'; if (!empty($cff_link_border_color)) { $cff_link_box_styles .= 'border: 1px solid #' . str_replace('#', '', $cff_link_border_color) . '; '; } if (!empty($cff_link_bg_color)) { $cff_link_box_styles .= 'background-color: #' . str_replace('#', '', $cff_link_bg_color) . ';'; } $cff_link_box_styles .= '"'; //Event Title $cff_event_title_format = $atts['eventtitleformat']; if (empty($cff_event_title_format)) { $cff_event_title_format = 'p'; } $cff_event_title_size = $atts['eventtitlesize']; $cff_event_title_weight = $atts['eventtitleweight']; $cff_event_title_color = $atts['eventtitlecolor']; $cff_event_title_styles = 'style="'; if (!empty($cff_event_title_size) && $cff_event_title_size != 'inherit') { $cff_event_title_styles .= 'font-size:' . $cff_event_title_size . 'px; '; } if (!empty($cff_event_title_weight) && $cff_event_title_weight != 'inherit') { $cff_event_title_styles .= 'font-weight:' . $cff_event_title_weight . '; '; } if (!empty($cff_event_title_color)) { $cff_event_title_styles .= 'color:#' . str_replace('#', '', $cff_event_title_color) . ';'; } $cff_event_title_styles .= '"'; $cff_event_title_link = $atts['eventtitlelink']; //Event Date $cff_event_date_size = $atts['eventdatesize']; $cff_event_date_weight = $atts['eventdateweight']; $cff_event_date_color = $atts['eventdatecolor']; $cff_event_date_position = $atts['eventdatepos']; $cff_event_date_formatting = $atts['eventdateformat']; $cff_event_date_custom = $atts['eventdatecustom']; $cff_event_date_styles = 'style="'; if (!empty($cff_event_date_size) && $cff_event_date_size != 'inherit') { $cff_event_date_styles .= 'font-size:' . $cff_event_date_size . 'px; '; } if (!empty($cff_event_date_weight) && $cff_event_date_weight != 'inherit') { $cff_event_date_styles .= 'font-weight:' . $cff_event_date_weight . '; '; } if (!empty($cff_event_date_color)) { $cff_event_date_styles .= 'color:#' . str_replace('#', '', $cff_event_date_color) . ';'; } $cff_event_date_styles .= '"'; //Event Details $cff_event_details_size = $atts['eventdetailssize']; $cff_event_details_weight = $atts['eventdetailsweight']; $cff_event_details_color = $atts['eventdetailscolor']; $cff_event_link_color = $atts['eventlinkcolor']; $cff_event_details_styles = 'style="'; if (!empty($cff_event_details_size) && $cff_event_details_size != 'inherit') { $cff_event_details_styles .= 'font-size:' . $cff_event_details_size . 'px; '; } if (!empty($cff_event_details_weight) && $cff_event_details_weight != 'inherit') { $cff_event_details_styles .= 'font-weight:' . $cff_event_details_weight . '; '; } if (!empty($cff_event_details_color)) { $cff_event_details_styles .= 'color:#' . str_replace('#', '', $cff_event_details_color) . ';'; } $cff_event_details_styles .= '"'; //Date $cff_date_position = $atts['datepos']; if (!isset($cff_date_position)) { $cff_date_position = 'below'; } $cff_date_size = $atts['datesize']; $cff_date_weight = $atts['dateweight']; $cff_date_color = $atts['datecolor']; $cff_date_styles = 'style="'; if (!empty($cff_date_size) && $cff_date_size != 'inherit') { $cff_date_styles .= 'font-size:' . $cff_date_size . 'px; '; } if (!empty($cff_date_weight) && $cff_date_weight != 'inherit') { $cff_date_styles .= 'font-weight:' . $cff_date_weight . '; '; } if (!empty($cff_date_color)) { $cff_date_styles .= 'color:#' . str_replace('#', '', $cff_date_color) . ';'; } $cff_date_styles .= '"'; $cff_date_before = $options['cff_date_before']; $cff_date_after = $options['cff_date_after']; //Set user's timezone based on setting $cff_timezone = $atts['timezone']; $cff_orig_timezone = date_default_timezone_get(); date_default_timezone_set($cff_timezone); //Link to Facebook $cff_link_size = $atts['linksize']; $cff_link_weight = $atts['linkweight']; $cff_link_color = $atts['linkcolor']; $cff_link_styles = 'style="'; if (!empty($cff_link_size) && $cff_link_size != 'inherit') { $cff_link_styles .= 'font-size:' . $cff_link_size . 'px; '; } if (!empty($cff_link_weight) && $cff_link_weight != 'inherit') { $cff_link_styles .= 'font-weight:' . $cff_link_weight . '; '; } if (!empty($cff_link_color)) { $cff_link_styles .= 'color:#' . str_replace('#', '', $cff_link_color) . ';'; } $cff_link_styles .= '"'; $cff_facebook_link_text = $atts['facebooklinktext']; $cff_view_link_text = $atts['viewlinktext']; $cff_link_to_timeline = $atts['linktotimeline']; /********** MISC **********/ //Like Box styles $cff_likebox_bg_color = $atts['likeboxcolor']; $cff_like_box_text_color = $atts['likeboxtextcolor']; $cff_like_box_colorscheme = 'light'; if ($cff_like_box_text_color == 'white') { $cff_like_box_colorscheme = 'dark'; } $cff_likebox_width = $atts['likeboxwidth']; $cff_likebox_height = $atts['likeboxheight']; $cff_likebox_height = preg_replace('/px$/', '', $cff_likebox_height); if (!isset($cff_likebox_width) || empty($cff_likebox_width) || $cff_likebox_width == '') { $cff_likebox_width = '100%'; } $cff_like_box_faces = $atts['likeboxfaces']; if (!isset($cff_like_box_faces) || empty($cff_like_box_faces)) { $cff_like_box_faces = 'false'; } $cff_like_box_border = $atts['likeboxborder']; if ($cff_like_box_border) { $cff_like_box_border = 'true'; } else { $cff_like_box_border = 'false'; } //Compile Like box styles $cff_likebox_styles = 'style="width: ' . $cff_likebox_width . ';'; if (!empty($cff_likebox_bg_color)) { $cff_likebox_styles .= ' background-color: #' . str_replace('#', '', $cff_likebox_bg_color) . ';'; } //Set the left margin on the like box based on how it's being displayed if (!empty($cff_likebox_bg_color) && $cff_likebox_bg_color != '#' || ($cff_like_box_faces == 'true' || $cff_like_box_faces == 'on')) { $cff_likebox_styles .= ' margin-left: 0px;'; } $cff_likebox_styles .= '"'; //Get feed header settings $cff_header_bg_color = $atts['headerbg']; $cff_header_padding = $atts['headerpadding']; $cff_header_text_size = $atts['headertextsize']; $cff_header_text_weight = $atts['headertextweight']; $cff_header_text_color = $atts['headertextcolor']; //Compile feed header styles $cff_header_styles = 'style="'; if (!empty($cff_header_bg_color)) { $cff_header_styles .= 'background-color: #' . str_replace('#', '', $cff_header_bg_color) . ';'; } if (!empty($cff_header_padding)) { $cff_header_styles .= ' padding: ' . $cff_header_padding . ';'; } if (!empty($cff_header_text_size)) { $cff_header_styles .= ' font-size: ' . $cff_header_text_size . 'px;'; } if (!empty($cff_header_text_weight)) { $cff_header_styles .= ' font-weight: ' . $cff_header_text_weight . ';'; } if (!empty($cff_header_text_color)) { $cff_header_styles .= ' color: #' . str_replace('#', '', $cff_header_text_color) . ';'; } $cff_header_styles .= '"'; //Video //Dimensions $cff_video_height = $atts['videoheight']; //Action $cff_video_action = $atts['videoaction']; //Separating Line $cff_sep_color = $atts['sepcolor']; if (empty($cff_sep_color)) { $cff_sep_color = 'ddd'; } $cff_sep_size = $atts['sepsize']; //If empty then set a 0px border if (empty($cff_sep_size) || $cff_sep_size == '') { $cff_sep_size = 0; //Need to set a color otherwise the CSS is invalid $cff_sep_color = 'fff'; } $cff_post_bg_color = $atts['postbgcolor']; $cff_post_rounded = $atts['postcorners']; $cff_post_bg_color !== '#' && $cff_post_bg_color !== '' ? $cff_post_bg_color_check = true : ($cff_post_bg_color_check = false); $cff_sep_color !== '#' && $cff_sep_color !== '' ? $cff_sep_color_check = true : ($cff_sep_color_check = false); //CFF item styles $cff_item_styles = ''; if ($cff_sep_color_check || $cff_post_bg_color_check) { $cff_item_styles = 'style="'; if ($cff_sep_color_check && !$cff_post_bg_color_check) { $cff_item_styles .= 'border-bottom: ' . $cff_sep_size . 'px solid #' . str_replace('#', '', $cff_sep_color) . '; '; } if ($cff_post_bg_color_check) { $cff_item_styles .= 'background-color: ' . $cff_post_bg_color . '; '; } if (isset($cff_post_rounded)) { $cff_item_styles .= '-webkit-border-radius: ' . $cff_post_rounded . 'px; -moz-border-radius: ' . $cff_post_rounded . 'px; border-radius: ' . $cff_post_rounded . 'px; '; } $cff_item_styles .= '"'; } //Text limits $title_limit = $atts['textlength']; if (!isset($title_limit)) { $title_limit = 9999; } $body_limit = $atts['desclength']; //Assign the Access Token and Page ID variables $access_token = trim($atts['accesstoken']); $page_id = trim($atts['id']); //If user pastes their full URL into the Page ID field then strip it out $cff_facebook_string = 'facebook.com'; stripos($page_id, $cff_facebook_string) !== false ? $cff_page_id_url_check = true : ($cff_page_id_url_check = false); if ($cff_page_id_url_check === true) { //Remove trailing slash if exists $page_id = preg_replace('{/$}', '', $page_id); //Get last part of url $page_id = substr($page_id, strrpos($page_id, '/') + 1); } //If the Page ID contains a query string at the end then remove it if (stripos($page_id, '?') !== false) { $page_id = substr($page_id, 0, strrpos($page_id, '?')); } //Get show posts attribute. If not set then default to 25 $show_posts = $atts['num']; if (empty($show_posts)) { $show_posts = 25; } if ($show_posts == 0 || $show_posts == 'undefined') { $show_posts = 25; } //If the 'Enter my own Access Token' box is unchecked then don't use the user's access token, even if there's one in the field get_option('cff_show_access_token') ? $cff_show_access_token = true : ($cff_show_access_token = false); //Check whether the Access Token is present and valid if ($access_token == '' || !$cff_show_access_token) { $access_token = '611606915581035|RdRHbHtrHseQw4C7SDUBFWIrJLA'; } //Check whether a Page ID has been defined if ($page_id == '') { echo "Please enter the Page ID of the Facebook feed you'd like to display. You can do this in either the Custom Facebook Feed plugin settings or in the shortcode itself. For example [custom-facebook-feed id=YOUR_PAGE_ID_HERE].<br /><br />"; return false; } //Is it SSL? $cff_ssl = ''; if (is_ssl()) { $cff_ssl = '&return_ssl_resources=true'; } //Use posts? or feed? $show_others = $atts['others']; $show_posts_by = $atts['showpostsby']; $graph_query = 'posts'; $cff_show_only_others = false; //If 'others' shortcode option is used then it overrides any other option if ($show_others) { //Show posts by everyone if ($show_others == 'on' || $show_others == 'true' || $show_others == true || $cff_is_group) { $graph_query = 'feed'; } //Only show posts by me if ($show_others == 'false') { $graph_query = 'posts'; } } else { //Else use the settings page option or the 'showpostsby' shortcode option //Only show posts by me if ($show_posts_by == 'me') { $graph_query = 'posts'; } //Show posts by everyone if ($show_posts_by == 'others' || $cff_is_group) { $graph_query = 'feed'; } //Show posts ONLY by others if ($show_posts_by == 'onlyothers' && !$cff_is_group) { $graph_query = 'feed'; $cff_show_only_others = true; } } //If the limit isn't set then set it to be 5 more than the number of posts defined if (isset($atts['limit']) && $atts['limit'] !== '') { $cff_post_limit = $atts['limit']; } else { $cff_post_limit = intval(intval($show_posts) + 7); } //Calculate the cache time in seconds if ($cff_cache_time_unit == 'minutes') { $cff_cache_time_unit = 60; } if ($cff_cache_time_unit == 'hours') { $cff_cache_time_unit = 60 * 60; } if ($cff_cache_time_unit == 'days') { $cff_cache_time_unit = 60 * 60 * 24; } $cache_seconds = $cff_cache_time * $cff_cache_time_unit; //Set like box variable //If there are more than one page id then use the first one isset($options['cff_app_id']) ? $cff_app_id = $options['cff_app_id'] : ($cff_app_id = ''); isset($cff_app_id) && !empty($cff_app_id) ? $cff_like_box_params = '&appId=' . $cff_app_id : ($cff_like_box_params = ''); $like_box_page_id = explode(",", str_replace(' ', '', $page_id)); $like_box = '<div class="cff-likebox'; if ($cff_like_box_outside) { $like_box .= ' cff-outside'; } $like_box .= $cff_like_box_position == 'top' ? ' top' : ' bottom'; $like_box .= '" ' . $cff_likebox_styles . '><script src="https://connect.facebook.net/' . $cff_locale . '/all.js#xfbml=1' . $cff_like_box_params . '"></script><fb:like-box href="http://www.facebook.com/' . $like_box_page_id[0] . '" show_faces="' . $cff_like_box_faces . '" stream="false" header="false" colorscheme="' . $cff_like_box_colorscheme . '" show_border="' . $cff_like_box_border . '" data-height="' . $cff_likebox_height . '"></fb:like-box><div id="fb-root"></div></div>'; //Don't show like box if it's a group if ($cff_is_group) { $like_box = ''; } //Feed header $cff_show_header = $atts['showheader']; $cff_show_header == 'true' || $cff_show_header == 'on' ? $cff_show_header = true : ($cff_show_header = false); $cff_header_outside = $atts['headeroutside']; $cff_header_outside == 'true' || $cff_header_outside == 'on' ? $cff_header_outside = true : ($cff_header_outside = false); $cff_header_text = $atts['headertext']; $cff_header_icon = $atts['headericon']; $cff_header_icon_color = $atts['headericoncolor']; $cff_header_icon_size = $atts['headericonsize']; $cff_header = '<h3 class="cff-header'; if ($cff_header_outside) { $cff_header .= ' cff-outside'; } $cff_header .= '"' . $cff_header_styles . '>'; $cff_header .= '<i class="fa fa-' . $cff_header_icon . '"'; if (!empty($cff_header_icon_color) || !empty($cff_header_icon_size)) { $cff_header .= ' style="'; } if (!empty($cff_header_icon_color)) { $cff_header .= 'color: #' . str_replace('#', '', $cff_header_icon_color) . ';'; } if (!empty($cff_header_icon_size)) { $cff_header .= ' font-size: ' . $cff_header_icon_size . 'px;'; } if (!empty($cff_header_icon_color) || !empty($cff_header_icon_size)) { $cff_header .= '"'; } $cff_header .= '></i>'; $cff_header .= '<span class="cff-header-text" style="height: ' . $cff_header_icon_size . 'px;">' . $cff_header_text . '</span>'; $cff_header .= '</h3>'; //Misc Settings //Narrow styles $cff_enable_narrow = $atts['enablenarrow']; $cff_enable_narrow == 'true' || $cff_enable_narrow == 'on' ? $cff_enable_narrow = true : ($cff_enable_narrow = false); //***START FEED*** $cff_content = ''; //Add the page header to the outside of the top of feed if ($cff_show_header && $cff_header_outside) { $cff_content .= $cff_header; } //Add like box to the outside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && $cff_like_box_outside) { $cff_content .= $like_box; } //Create CFF container HTML $cff_content .= '<div class="cff-wrapper">'; $cff_content .= '<div id="cff" '; if (!empty($title_limit)) { $cff_content .= 'rel="' . $title_limit . '" '; } $cff_content .= 'class="'; if (!empty($cff_class)) { $cff_content .= $cff_class . ' '; } if (!empty($cff_feed_height)) { $cff_content .= 'cff-fixed-height '; } if ($cff_thumb_layout) { $cff_content .= 'cff-thumb-layout '; } if ($cff_half_layout) { $cff_content .= 'cff-half-layout '; } if (!$cff_enable_narrow) { $cff_content .= 'cff-disable-narrow'; } //Lightbox extension if ($atts['lightbox'] == 'true' || $atts['lightbox'] == 'on') { $cff_content .= 'cff-lightbox'; } $cff_content .= '" ' . $cff_feed_styles . '>'; //Add the page header to the inside of the top of feed if ($cff_show_header && !$cff_header_outside) { $cff_content .= $cff_header; } //Add like box to the inside of the top of feed if ($cff_like_box_position == 'top' && $cff_show_like_box && !$cff_like_box_outside) { $cff_content .= $like_box; } //Limit var $i = 0; //Multifeed extension $cff_ext_multifeed_active ? $page_ids = cff_multifeed_ids($page_id) : ($page_ids = array($page_id)); //Define array for post items $cff_posts_array = array(); //LOOP THROUGH PAGE IDs foreach ($page_ids as $page_id) { //EVENTS ONLY if ($cff_events_only && $cff_events_source == 'eventspage') { //Get the user's ID $get_page_info = cff_fetchUrl('https://graph.facebook.com/' . $page_id . '?access_token=' . $access_token); $page_info = json_decode($get_page_info); //Get user ID $u_id = $page_info->id; //Add 6 hours to the current time. This means events will still be shown for 6 hours after their start time has passed. $cff_event_offset_time = '-' . $cff_event_offset . ' hours'; $curtimeplus = strtotime($cff_event_offset_time, time()); //Start time string $cff_start_time_string = "start_time>=" . $curtimeplus; //Date range extension if ($cff_ext_date_active && (!empty($atts['from']) || !empty($atts['until']))) { !empty($atts['from']) ? $cff_date_from = strtotime($atts['from']) : ($cff_date_from = $curtimeplus); !empty($atts['until']) ? $cff_date_until = strtotime($atts['until']) : ($cff_date_until = $curtimeplus); $cff_start_time_string = cff_ext_date_events($cff_date_from, $cff_date_until); } //Set the query URL $fql = "SELECT%20eid,name,attending_count,pic_big,pic_cover,start_time,end_time,timezone,venue,location,description,ticket_uri%20FROM%20event%20WHERE%20eid%20IN%20(SELECT%20eid%20FROM%20event_member%20WHERE%20uid='" . $u_id . "')%20AND%20" . $cff_start_time_string . "%20ORDER%20BY%20start_time%20&access_token=" . $access_token . '&format=json-strings' . $cff_ssl; //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $fql = cff_featured_event_id(trim($atts['featuredpost']), $access_token); } // Get any existing copy of our transient data $cff_events_json_url = "https://graph.facebook.com/fql?q=" . $fql; //Past events if ($atts['pastevents'] !== 'false') { $cff_past_events = true; } //Get past events. Limit must be set high to get all past events and be able to show the newest ones first if ($cff_past_events) { $cff_events_json_url = 'https://graph.facebook.com/' . $u_id . '/events?fields=name,id,description,start_time,end_time,timezone,location,venue,ticket_uri,cover&limit=200&until=' . date('Y-m-d') . '&access_token=' . $access_token; } //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $fql = cff_featured_event_id(trim($atts['featuredpost']), $access_token); } if ($cff_cache_time != 0) { $transient_name = 'cff_events_json_' . $page_id . '_' . strtotime($atts['from']) . strtotime($atts['until']) . $atts['featuredpost'] . $cff_past_events; if (false === ($events_json = get_transient($transient_name)) || $events_json === null) { //Get the contents of the events page $events_json = cff_fetchUrl($cff_events_json_url); //Cache the JSON set_transient($transient_name, $events_json, $cache_seconds); } else { $events_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($events_json == false) { $events_json = cff_fetchUrl($cff_events_json_url); } } } else { $events_json = cff_fetchUrl($cff_events_json_url); } //Interpret data with JSON //Convert eid integer to a string otherwise json_decode returns it as a float $events_json = preg_replace('/"eid":(\\d+)/', '"eid":"$1"', $events_json); $events_json = preg_replace('/"id":(\\d+)/', '"id":"$1"', $events_json); $event_data = json_decode($events_json); //EVENTS LOOP foreach ($event_data->data as $event) { //Only create posts for the amount of posts specified // if ( $i == $show_posts ) break; $i++; //Past events if ($cff_past_events) { isset($event->id) ? $id = $event->id : ($id = ''); } else { isset($event->eid) ? $id = $event->eid : ($id = ''); } isset($event->name) ? $event_name = $event->name : ($event_name = ''); isset($event->attending_count) ? $attending_count = $event->attending_count : ($attending_count = ''); //Picture source if ($cff_past_events) { isset($event->cover) ? $pic_big = $event->cover->source : ($pic_big = plugins_url('/img/event-image.png', __FILE__)); } else { $atts['eventimage'] == 'cropped' ? $crop_event_pic = true : ($crop_event_pic = false); isset($event->pic_cover) && !$crop_event_pic ? $pic_big = $event->pic_cover->source : ($pic_big = $event->pic_big); } isset($event->start_time) ? $start_time = $event->start_time : ($start_time = ''); isset($event->end_time) ? $end_time = $event->end_time : ($end_time = ''); isset($event->timezone) ? $timezone = $event->timezone : ($timezone = ''); //Venue isset($event->venue->latitude) ? $venue_latitude = $event->venue->latitude : ($venue_latitude = ''); isset($event->venue->longitude) ? $venue_longitude = $event->venue->longitude : ($venue_longitude = ''); isset($event->venue->city) ? $venue_city = $event->venue->city : ($venue_city = ''); isset($event->venue->state) ? $venue_state = $event->venue->state : ($venue_state = ''); isset($event->venue->country) ? $venue_country = $event->venue->country : ($venue_country = ''); isset($event->venue->id) ? $venue_id = $event->venue->id : ($venue_id = ''); $venue_link = 'https://facebook.com/' . $venue_id; isset($event->venue->street) ? $venue_street = $event->venue->street : ($venue_street = ''); isset($event->venue->zip) ? $venue_zip = $event->venue->zip : ($venue_zip = ''); isset($event->location) ? $location = $event->location : ($location = ''); isset($event->description) ? $description = $event->description : ($description = ''); $event_link = 'https://facebook.com/events/' . $id; isset($event->ticket_uri) ? $ticket_uri = $event->ticket_uri : ($ticket_uri = ''); //Event date $event_time = $start_time; //If timezone migration is enabled then remove last 5 characters if (strlen($event_time) == 24) { $event_time = substr($event_time, 0, -5); } if (!empty($start_time)) { $cff_event_date = '<p class="cff-date" ' . $cff_event_date_styles . '>' . cff_eventdate(strtotime($event_time), $cff_event_date_formatting, $cff_event_date_custom); } if (isset($event->end_time)) { $cff_event_date .= ' - ' . cff_eventdate(strtotime($end_time), $cff_event_date_formatting, $cff_event_date_custom); } $cff_event_date .= '</p>'; //Event title $cff_event_title = ''; if ($cff_event_title_link) { $cff_event_title .= '<a href="' . $event_link . '" ' . $target . '>'; } $cff_event_title .= '<' . $cff_event_title_format . ' ' . $cff_event_title_styles . '>' . $event_name . '</' . $cff_event_title_format . '>'; if ($cff_event_title_link) { $cff_event_title .= '</a>'; } //***************************// //***CREATE THE EVENT HTML***// //***************************// $cff_post_item = '<div class="cff-item cff-event author-' . cff_to_slug($page_id) . '" ' . $cff_item_styles . '>'; //Picture if ($cff_show_media) { $cff_post_item .= '<a title="' . $cff_facebook_link_text . '" class="cff-photo" href="' . $event_link . '" ' . $target . '><img src="' . $pic_big . '" border="0" /></a>'; } //Start text wrapper if ($cff_thumb_layout || $cff_half_layout) { $cff_post_item .= '<div class="cff-details">'; } //show event date above title if ($cff_show_date && $cff_event_date_position == 'above') { $cff_post_item .= $cff_event_date; } //Show event title if ($cff_show_event_title && !empty($event_name)) { $cff_post_item .= $cff_event_title; } //show event date below title if ($cff_show_date && $cff_event_date_position !== 'above') { $cff_post_item .= $cff_event_date; } //Show event details if ($cff_show_event_details) { if (!empty($location)) { $cff_post_item .= '<p class="cff-location" ' . $cff_event_details_styles . '>'; } if (!empty($venue_id)) { $cff_post_item .= '<a href="' . $venue_link . '" ' . $target . ' style="color:#' . str_replace('#', '', $cff_event_link_color) . ';">'; } if (!empty($location)) { $cff_post_item .= '<b>' . $location . '</b>'; } if (!empty($venue_id)) { $cff_post_item .= '</a>'; } if (!empty($venue_street)) { $cff_post_item .= '<br />' . $venue_street; } if (!empty($venue_city)) { $cff_post_item .= '<br />' . $venue_city . ', ' . $venue_state . ' ' . $venue_zip; } $cff_map_text = $atts['maptext']; if (!empty($venue_latitude)) { $cff_post_item .= ' <a href="https://maps.google.com/maps?q=' . $venue_latitude . ',+' . $venue_longitude . '" ' . $target . ' style="color:#' . str_replace('#', '', $cff_event_link_color) . ';">' . $cff_map_text . '</a>'; } if (!empty($location)) { $cff_post_item .= '</p>'; } if (!empty($description)) { if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $description = substr($description, 0, $body_limit) . '...'; } } $cff_post_item .= '<p class="cff-desc" ' . $cff_event_details_styles . '>' . cff_autolink($description, $link_color = str_replace('#', '', $cff_event_link_color)) . '</p>'; } } //End details if ($cff_thumb_layout || $cff_half_layout) { $cff_post_item .= '</div>'; } $cff_post_item .= '<div class="cff-meta-links">'; if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $cff_buy_tickets_text = $atts['buyticketstext']; if ($cff_show_link) { $cff_post_item .= '<a class="cff-viewpost" href="' . $event_link . '" ' . $target . ' ' . $cff_link_styles . '>' . $cff_facebook_link_text . '</a>'; } if ($ticket_uri) { $cff_post_item .= '<a class="cff-viewpost" href="' . $ticket_uri . '" ' . $target . ' ' . $cff_link_styles . '>' . $cff_buy_tickets_text . '</a>'; } $cff_post_item .= '</div></div><div class="cff-clear"></div>'; //Get the filter string $cff_filter_string = $atts['filter']; //Create a string from the event title, location and address to use in the filter check below $cff_event_address_string = $cff_event_title . $location . $venue_street . $venue_city . $venue_state . $venue_zip; $cff_show_post = true; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_address = true; $string_in_desc = true; if (cff_stripos_arr($cff_event_address_string, $cff_filter_strings_array) === false) { $string_in_address = false; } if (cff_stripos_arr($description, $cff_filter_strings_array) === false) { $string_in_desc = false; } if ($string_in_address == false && $string_in_desc == false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_address = false; $string_in_desc = false; if (cff_stripos_arr($cff_event_address_string, $cff_exclude_strings_array) !== false) { $string_in_address = true; } if (cff_stripos_arr($description, $cff_exclude_strings_array) !== false) { $string_in_desc = true; } if ($string_in_address == true || $string_in_desc == true) { $cff_show_post = false; } } //PUSH TO ARRAY if the post should be shown if ($cff_show_post !== false) { $cff_posts_array = cff_array_push_assoc($cff_posts_array, strtotime($event_time), $cff_post_item); } } // End the loop //Sort all of the events by all page IDs to show the most recent upcoming events first if (!$cff_past_events) { ksort($cff_posts_array); } } //End EVENTS ONLY //ALL POSTS if (!$cff_events_only || $cff_events_only && $cff_events_source == 'timeline') { //Create date range using the Date Range extension $cff_ext_date_active ? $cff_date_range = cff_ext_date(strtotime($atts['from']), strtotime($atts['until'])) : ($cff_date_range = ''); $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '/' . $graph_query . '?access_token=' . $access_token . '&limit=' . $cff_post_limit . '&locale=' . $cff_locale . $cff_ssl . $cff_date_range; //PHOTOS ONLY if ($cff_photos_only) { //Get the user's ID $get_page_info = cff_fetchUrl('https://graph.facebook.com/' . $page_id . '?access_token=' . $access_token); $page_info = json_decode($get_page_info); //Get user ID $u_id = $page_info->id; //PHOTOS ONLY if ($cff_is_group) { //For groups $cff_posts_json_url = "https://graph.facebook.com/fql?q=SELECT%20pid,created,src_big,link%20FROM%20photo%20WHERE%20pid%20IN%20(SELECT%20pid%20FROM%20photo_tag%20WHERE%20subject='" . $u_id . "')%20OR%20pid%20IN%20(SELECT%20pid%20FROM%20photo%20WHERE%20aid%20IN%20(SELECT%20aid%20FROM%20album%20WHERE%20owner='" . $u_id . "'%20AND%20type!='profile'))%20LIMIT%20" . $cff_post_limit; } else { //For pages $cff_posts_json_url = "https://graph.facebook.com/fql?q=SELECT%20pid,created,src_big,link%20FROM%20photo%20WHERE%20pid%20IN%20(SELECT%20pid%20FROM%20photo%20WHERE%20owner='" . $u_id . "')%20LIMIT%20" . $cff_post_limit; } } //ALBUMS ONLY if ($cff_albums_only && $cff_albums_source == 'photospage') { $cff_posts_json_url = 'https://graph.facebook.com/' . $page_id . '/albums?access_token=' . $access_token . '&limit=' . $cff_post_limit; } //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $cff_posts_json_url = cff_featured_post_id(trim($atts['featuredpost']), $access_token); } //ALBUM EMBED $cff_album_id = $atts['album']; if ($cff_album_active && !empty($cff_album_id)) { //Get the JSON back from the Album extension $cff_album_json_url = cff_album_id(trim($cff_album_id), $access_token, $cff_post_limit); //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_album_json_' . $cff_album_id; if (false === ($album_json = get_transient($transient_name)) || $album_json === null) { //Get the contents of the Facebook page $album_json = cff_fetchUrl($cff_album_json_url); //Cache the JSON set_transient($transient_name, $album_json, $cache_seconds); } else { $album_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($album_json == false) { $album_json = cff_fetchUrl($cff_album_json_url); } } } else { $album_json = cff_fetchUrl($cff_album_json_url); } } //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_' . $graph_query . '_json_' . $page_id . '_' . strtotime($atts['from']) . strtotime($atts['until']) . $atts['featuredpost'] . $cff_albums_only . $cff_albums_source . $cff_photos_only; if (false === ($posts_json = get_transient($transient_name)) || $posts_json === null) { //Get the contents of the Facebook page $posts_json = cff_fetchUrl($cff_posts_json_url); //Check whether any data is returned from the API. If it isn't then don't cache the error response and instead keep checking the API on every page load until data is returned. $FBdata = json_decode($posts_json); if (!empty($FBdata->data)) { //Cache the JSON set_transient($transient_name, $posts_json, $cache_seconds); } } else { $posts_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($posts_json == false) { $posts_json = cff_fetchUrl($cff_posts_json_url); } } } else { $posts_json = cff_fetchUrl($cff_posts_json_url); } if ($cff_show_only_others) { //Get the numeric ID of the page so can compare it to the author of each post $page_object = cff_fetchUrl('https://graph.facebook.com/' . $page_id); $page_object = json_decode($page_object); $numeric_page_id = $page_object->id; } //Interpret data with JSON $FBdata = json_decode($posts_json); //If there's no data then show a pretty error message if (empty($FBdata->data) && (!$cff_featured_post_active || empty($atts['featuredpost']))) { $cff_content .= '<div class="cff-error-msg"><p>Unable to display Facebook posts.<br/><a href="javascript:void(0);" id="cff-show-error" onclick="cffShowError()">Show error</a>'; $cff_content .= '<script type="text/javascript">function cffShowError() { document.getElementById("cff-error-reason").style.display = "block"; document.getElementById("cff-show-error").style.display = "none"; }</script>'; $cff_content .= '</p><div id="cff-error-reason">'; if (isset($FBdata->error->message)) { $cff_content .= 'Error: ' . $FBdata->error->message; } if (isset($FBdata->error->type)) { $cff_content .= '<br />Type: ' . $FBdata->error->type; } if (isset($FBdata->error->code)) { $cff_content .= '<br />Code: ' . $FBdata->error->code; } if (isset($FBdata->error->error_subcode)) { $cff_content .= '<br />Subcode: ' . $FBdata->error->error_subcode; } if (isset($FBdata->error_msg)) { $cff_content .= 'Error: ' . $FBdata->error_msg; } if (isset($FBdata->error_code)) { $cff_content .= '<br />Code: ' . $FBdata->error_code; } if ($FBdata == null) { $cff_content .= 'Error: Server configuration issue'; } if (empty($FBdata->error) && empty($FBdata->error_msg) && $FBdata !== null) { $cff_content .= 'Error: No posts available for this Facebook ID'; } $cff_content .= '<br />Please refer to our <a href="https://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank">Error Message Reference</a>.</div>'; return $cff_content; } //ALBUM EMBED if ($cff_album_active && !empty($cff_album_id)) { $FBdata = json_decode($album_json); } //***STARTS POSTS LOOP*** //If the Featured Post extension is active then adjust the loop as there is no 'data' $cff_featured_post_active && !empty($atts['featuredpost']) ? $fbdata_string = $FBdata : ($fbdata_string = $FBdata->data); foreach ($fbdata_string as $news) { if ($cff_featured_post_active && !empty($atts['featuredpost'])) { $news = $FBdata; } $cff_post_item = ''; //Explode News and Page ID's into 2 values isset($news->id) ? $PostID = explode("_", $news->id) : ($PostID = ''); //Check the post type isset($news->type) ? $cff_post_type = $news->type : ($cff_post_type = ''); if ($cff_post_type == 'link') { isset($news->story) ? $story = $news->story : ($story = ''); //Check whether it's an event $event_link_check = "facebook.com/events/"; $event_link_check = stripos($news->link, $event_link_check); if ($event_link_check) { $cff_post_type = 'event'; } } //Set the post link isset($news->link) ? $link = htmlspecialchars($news->link) : ($link = ''); //If there's no link provided then link to the individual post if (empty($news->link)) { //Link to individual post if (isset($PostID[1])) { $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } } //Is it an album? $cff_album = false; $album_string = 'relevant_count='; $relevant_count = stripos($link, $album_string); if ($relevant_count) { //If relevant_count is larger than 1 then there are multiple photos $relevant_count = explode('relevant_count=', $link); $num_photos = intval($relevant_count[1]); if ($num_photos > 1) { $cff_album = true; //Link to the album instead of the photo $album_link = str_replace('photo.php?', 'media/set/?', $link); $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; //If the album link is a new format then link it to the post $album_link_check = 'media/set/?'; if (stripos($album_link, $album_link_check) !== true) { $album_link = $link; } } } //Should we show this post or not? $cff_show_post = false; switch ($cff_post_type) { case 'link': if ($cff_show_links_type) { $cff_show_post = true; } break; case 'event': if ($cff_show_event_type) { $cff_show_post = true; } break; case 'video': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'swf': if ($cff_show_video_type) { $cff_show_post = true; } break; case 'photo': if ($cff_show_photos_type && !$cff_album) { $cff_show_post = true; } if ($cff_show_albums_type && $cff_album) { $cff_show_post = true; } break; case 'offer': //Show offer posts if links are shown if ($cff_show_links_type) { $cff_show_post = true; } break; case 'music': //Show music posts if statuses are shown if ($cff_show_status_type) { $cff_show_post = true; } break; case 'status': //Check whether it's a status (author comment or like) if ($cff_show_status_type && !empty($news->message)) { $cff_show_post = true; } break; } //Featured Post extension if ($cff_featured_post_active && !empty($atts['featuredpost'])) { //Always show the post if using the Featured Post extension $cff_show_post = true; if ($cff_show_links_type) { $cff_post_type = 'link'; } if ($cff_show_event_type) { $cff_post_type = 'event'; } if ($cff_show_video_type) { $cff_post_type = 'video'; } if ($cff_show_photos_type) { $cff_post_type = 'photo'; } if ($cff_show_albums_type) { $cff_post_type = 'album'; } if ($cff_show_status_type) { $cff_post_type = 'status'; } //If it's a status then use full-width layout by default if ($cff_post_type == 'status') { $cff_thumb_layout = false; $cff_half_layout = false; } } //ONLY show posts by others if ($cff_show_only_others) { //If the post author's ID is the same as the page ID then don't show the post if ($numeric_page_id == $news->from->id) { $cff_show_post = false; } } //Only show posts containing specified string //Get post text $post_text = ''; if (!empty($news->story)) { $post_text = $news->story; } if (!empty($news->message)) { $post_text = $news->message; } if (!empty($news->name) && empty($news->story) && empty($news->message)) { $post_text = $news->name; } //Get description text if (isset($news->description)) { $description_text = $news->description; } else { isset($news->caption) ? $description_text = $news->caption : ($description_text = ''); } //Get the filter string $cff_filter_string = $atts['filter']; if ($cff_filter_string != '') { //Explode it into multiples $cff_filter_strings_array = explode(',', $cff_filter_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = true; $string_in_desc = true; if (cff_stripos_arr($post_text, $cff_filter_strings_array) === false) { $string_in_post_text = false; } if (cff_stripos_arr($description_text, $cff_filter_strings_array) === false) { $string_in_desc = false; } if ($string_in_post_text == false && $string_in_desc == false) { $cff_show_post = false; } } $cff_exclude_string = $atts['exfilter']; if ($cff_exclude_string != '') { //Explode it into multiples $cff_exclude_strings_array = explode(',', $cff_exclude_string); //Hide the post if both the post text and description don't contain the string $string_in_post_text = false; $string_in_desc = false; if (cff_stripos_arr($post_text, $cff_exclude_strings_array) !== false) { $string_in_post_text = true; } if (cff_stripos_arr($description_text, $cff_exclude_strings_array) !== false) { $string_in_desc = true; } if ($string_in_post_text == true || $string_in_desc == true) { $cff_show_post = false; } } //Is it a duplicate post? if (!isset($prev_post_message)) { $prev_post_message = ''; } if (!isset($prev_post_link)) { $prev_post_link = ''; } if (!isset($prev_post_description)) { $prev_post_description = ''; } isset($news->message) ? $pm = $news->message : ($pm = ''); isset($news->link) ? $pl = $news->link : ($pl = ''); isset($news->description) ? $pd = $news->description : ($pd = ''); if ($prev_post_message == $pm && $prev_post_link == $pl && $prev_post_description == $pd) { $cff_show_post = false; } //ALBUMS ONLY if ($cff_albums_only && $cff_albums_source == 'photospage') { $cff_show_post = true; } //ALBUM EMBED if ($cff_album_active && !empty($cff_album_id)) { $cff_show_post = true; } //PHOTOS ONLY if ($cff_photos_only) { $cff_show_post = true; } //Check post type and display post if selected if ($cff_show_post) { //If it isn't then create the post //Only create posts for the amount of posts specified // if ( $i == $show_posts ) break; $i++; //********************************// //***COMPILE SECTION VARIABLES***// //********************************// //Change image size based on layout if (!empty($news->picture) && !empty($news->object_id)) { $object_id = $news->object_id; $picture = 'https://graph.facebook.com/' . $object_id . '/picture?type=normal&width=9999&height=9999'; } //DATE $cff_date_formatting = $atts['dateformat']; $cff_date_custom = $atts['datecustom']; isset($news->created_time) ? $post_time = $news->created_time : ($post_time = ''); $cff_date = '<p class="cff-date" ' . $cff_date_styles . '>' . $cff_date_before . ' ' . cff_getdate(strtotime($post_time), $cff_date_formatting, $cff_date_custom) . ' ' . $cff_date_after; $cff_date .= '</p>'; //Only run if NOT only showing photos from the photos page, or albums, or an album embed if (!$cff_photos_only && !($cff_albums_only && $cff_albums_source == 'photospage') && empty($cff_album_id)) { //POST AUTHOR $cff_author = '<div class="cff-author">'; //Author text $cff_author .= '<a href="https://facebook.com/' . $news->from->id . '" ' . $target . ' title="' . $news->from->name . ' on Facebook" ' . $cff_author_styles . '><div class="cff-author-text">'; if ($cff_show_date && $cff_date_position !== 'above' && $cff_date_position !== 'below') { $cff_author .= '<p class="cff-page-name cff-author-date">' . $news->from->name . '</p>'; $cff_author .= $cff_date; } else { $cff_author .= '<span class="cff-page-name">' . $news->from->name . '</span>'; } $cff_author .= '</div>'; //Author image //Set the author image as a variable. If it already exists then don't query the api for it again. $cff_author_img_var = '$cff_author_img_' . $news->from->id; if (!isset(${$cff_author_img_var})) { ${$cff_author_img_var} = 'https://graph.facebook.com/' . $news->from->id . '/picture?type=square'; } $cff_author .= '<div class="cff-author-img"><img src="' . ${$cff_author_img_var} . '" title="' . $news->from->name . '" alt="' . $news->from->name . '" width=40 height=40></div>'; $cff_author .= '</a></div>'; //End .cff-author //POST TEXT $cff_translate_photos_text = $atts['photostext']; if (!isset($cff_translate_photos_text) || empty($cff_translate_photos_text)) { $cff_translate_photos_text = 'photos'; } $cff_post_text = '<' . $cff_title_format . ' class="cff-post-text" ' . $cff_title_styles . '>'; //__ shared __'s photo // if ($news->type == 'photo' && !empty($news->story) ) $cff_post_text .= '<span class="cff-byline" '.$cff_body_styles.'>' . $news->story . '</span>'; // $cff_post_text = '<div class="cff-post-text" ' . $cff_title_styles . '>'; $cff_post_text .= '<span class="cff-text" rel="' . str_replace('#', '', $atts['textlinkcolor']) . '">'; if ($cff_title_link) { $cff_post_text .= '<a class="cff-post-text-link" ' . $cff_title_styles . ' href="' . $link . '" ' . $target . '>'; } //Which content should we use? $cff_post_text_type = ''; //Use the story if (!empty($news->story)) { $post_text = htmlspecialchars($news->story); $cff_post_text_type = 'story'; } //Use the message if (!empty($news->message)) { $post_text = htmlspecialchars($news->message); $cff_post_text_type = 'message'; } //Use the name if (!empty($news->name) && empty($news->story) && empty($news->message)) { $post_text = htmlspecialchars($news->name); $cff_post_text_type = 'name'; } if ($cff_album) { if (!empty($news->name)) { $post_text = htmlspecialchars($news->name); $cff_post_text_type = 'name'; } if (!empty($news->message) && empty($news->name)) { $post_text = htmlspecialchars($news->message); $cff_post_text_type = 'message'; } $post_text .= ' (' . $num_photos . ' ' . $cff_translate_photos_text . ')'; } //OFFER TEXT if ($cff_post_type == 'offer') { isset($news->story) ? $post_text = htmlspecialchars($news->story) . '<br /><br />' : ($post_text = ''); $post_text .= htmlspecialchars($news->name); $cff_post_text_type = 'story'; } //MESSAGE TAGS $cff_post_tags = $atts['posttags']; //If the post tags option doesn't exist yet (ie. on plugin update) then set them as true if (!array_key_exists('cff_post_tags', $options)) { $cff_post_tags = true; } //Add message and story tags if there are any and the post text is the message or the story if ($cff_post_tags && (isset($news->message_tags) || isset($news->story_tags)) && ($cff_post_text_type == 'message' || $cff_post_text_type == 'story') && !$cff_title_link) { //Use message_tags or story_tags? isset($news->message_tags) ? $text_tags = $news->message_tags : ($text_tags = $news->story_tags); //If message tags and message is being used as the post text, or same with story. This stops story tags being used to replace the message inadvertently. if ($cff_post_text_type == 'message' && isset($news->message_tags) || $cff_post_text_type == 'story' && !isset($news->message_tags)) { //Does the Post Text contain any html tags? - the & symbol is the best indicator of this $cff_html_check_array = array('<', '’', '“', '"', '&'); //always use the text replace method if (cff_stripos_arr($post_text, $cff_html_check_array) !== false) { //Loop through the tags foreach ($text_tags as $message_tag) { $tag_name = $message_tag[0]->name; $tag_link = '<a href="http://facebook.com/' . $message_tag[0]->id . '" style="color: #' . str_replace('#', '', $atts['textlinkcolor']) . ';" ' . $target . '>' . $message_tag[0]->name . '</a>'; $post_text = str_replace($tag_name, $tag_link, $post_text); } } else { //If it doesn't contain HTMl tags then use the offset to replace message tags $message_tags_arr = array(); $i = 0; foreach ($text_tags as $message_tag) { $i++; $message_tags_arr = cff_array_push_assoc($message_tags_arr, $i, array('id' => $message_tag[0]->id, 'name' => $message_tag[0]->name, 'type' => $message_tag[0]->type, 'offset' => $message_tag[0]->offset, 'length' => $message_tag[0]->length)); } for ($i = count($message_tags_arr); $i >= 1; $i--) { $b = '<a href="http://facebook.com/' . $message_tags_arr[$i]['id'] . '" style="color: #' . str_replace('#', '', $atts['textlinkcolor']) . ';" ' . $target . '>' . $message_tags_arr[$i]['name'] . '</a>'; $c = $message_tags_arr[$i]['offset']; $d = $message_tags_arr[$i]['length']; $post_text = cff_mb_substr_replace($post_text, $b, $c, $d); } } // end if/else } // end message check } //END MESSAGE TAGS //Check to see whether it's an embedded video so that we can show the name above the post text if necessary $cff_is_video_embed = false; if ($news->type == 'video') { $url = $news->source; //Embeddable video strings $youtube = 'youtube'; $youtu = 'youtu'; $vimeo = 'vimeo'; $youtubeembed = 'youtube.com/embed'; //Check whether it's a youtube video $youtube = stripos($url, $youtube); $youtu = stripos($url, $youtu); $youtubeembed = stripos($url, $youtubeembed); //Check whether it's a youtube video if ($youtube || $youtu || $youtubeembed || stripos($url, $vimeo) !== false) { $cff_is_video_embed = true; } //If the name exists and it's a non-embedded video then show the name at the top of the post text if (isset($news->name) && !$cff_is_video_embed) { if (!$cff_title_link) { $cff_post_text .= '<a href="' . $link . '" ' . $target . ' style="color: #' . str_replace('#', '', $atts['textlinkcolor']) . '">'; } $cff_post_text .= htmlspecialchars($news->name); if (!$cff_title_link) { $cff_post_text .= '</a>'; } $cff_post_text .= '<br />'; } } //Replace line breaks in text (needed for IE8) $post_text = preg_replace("/\r\n|\r|\n/", '<br/>', $post_text); //If the text is wrapped in a link then don't hyperlink any text within if ($cff_title_link) { //Wrap links in a span so we can break the text if it's too long $cff_post_text .= cff_wrap_span($post_text) . ' '; } else { //Don't use htmlspecialchars for post_text as it's added above so that it doesn't mess up the message_tag offsets $cff_post_text .= cff_autolink($post_text, $link_color = str_replace('#', '', $atts['textlinkcolor'])) . ' '; } if ($cff_title_link) { $cff_post_text .= '</a>'; } $cff_post_text .= '</span>'; //'See More' link $cff_post_text .= '<span class="cff-expand">... <a href="#" style="color: #' . str_replace('#', '', $atts['textlinkcolor']) . '"><span class="cff-more">' . $cff_see_more_text . '</span><span class="cff-less">' . $cff_see_less_text . '</span></a></span>'; $cff_post_text .= '</' . $cff_title_format . '>'; // $cff_post_text .= '</div>'; //DESCRIPTION $cff_description = ''; if (!empty($news->description) || !empty($news->caption)) { $description_text = ''; if (!empty($news->description)) { $description_text = $news->description; } else { $description_text = $news->caption; } if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_autolink(htmlspecialchars($description_text)) . '</span></p>'; } //LINK $cff_shared_link = ''; //Display shared link if ($cff_post_type == 'link') { $cff_shared_link .= '<div class="cff-shared-link'; if ($cff_disable_link_box) { $cff_shared_link .= ' cff-no-styles"'; } if (!$cff_disable_link_box) { $cff_shared_link .= '" ' . $cff_link_box_styles; } $cff_shared_link .= '>'; if (isset($news->picture)) { if (!empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } //Check whether the image is a 1x1 placeholder $cff_link_image = true; $cff_one_x_one = '1x1.'; if (stripos($news->picture, $cff_one_x_one) == true || empty($news->picture)) { $cff_link_image = false; } //If there's a picture accompanying the link then display it if ($cff_link_image && $cff_show_media) { $cff_shared_link .= '<a class="cff-link" href="' . $link . '" ' . $target . '>'; $cff_shared_link .= '<img src="' . $picture . '" border="0" />'; $cff_shared_link .= '</a>'; } } //Display link name and description // if (!empty($news->description)) { $cff_shared_link .= '<div class="cff-text-link '; if (!$cff_link_image) { $cff_shared_link .= 'cff-no-image'; } //The link title: $cff_shared_link .= '"><' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . ' style="color:#' . str_replace('#', '', $cff_link_title_color) . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; //The link source: if (!empty($news->caption)) { $cff_shared_link .= '<p class="cff-link-caption" style="color:#' . str_replace('#', '', $cff_link_url_color) . ';">' . $news->caption . '</p>'; } if ($cff_show_desc) { $cff_shared_link .= $cff_description; } $cff_shared_link .= '</div>'; // } $cff_shared_link .= '</div>'; } //EVENT $cff_event = ''; if ($cff_show_event_title || $cff_show_event_details) { //Check for media if ($cff_post_type == 'event') { //Get the event id from the event URL. eg: http://www.facebook.com/events/123451234512345/ $event_url = parse_url($link); $url_parts = explode('/', $event_url['path']); //Get the id from the parts $eventID = $url_parts[count($url_parts) - 2]; //Get the contents of the event $event_json_url = 'https://graph.facebook.com/' . $eventID . '?access_token=' . $access_token . $cff_ssl; //Don't use caching if the cache time is set to zero if ($cff_cache_time != 0) { // Get any existing copy of our transient data $transient_name = 'cff_timeline_event_json_' . $eventID; if (false === ($event_json = get_transient($transient_name)) || $event_json === null) { //Get the contents of the Facebook page $event_json = cff_fetchUrl($event_json_url); //Cache the JSON set_transient($transient_name, $event_json, $cache_seconds); } else { $event_json = get_transient($transient_name); //If we can't find the transient then fall back to just getting the json from the api if ($event_json == false) { $event_json = cff_fetchUrl($event_json_url); } } } else { $event_json = cff_fetchUrl($event_json_url); } //Interpret data with JSON $event_object = json_decode($event_json); //Picture if ($cff_show_media) { $cff_event .= '<a title="' . $cff_facebook_link_text . '" class="cff-event-thumb" href="' . $link . '" ' . $target . '><img border="0" src="https://graph.facebook.com/' . $eventID . '/picture?width=200&height=200" /></a>'; } //Event date $event_time = $event_object->start_time; isset($event_object->end_time) ? $event_end_time = ' - ' . cff_eventdate(strtotime($event_object->end_time), $cff_event_date_formatting, $cff_event_date_custom) : ($event_end_time = ''); //If timezone migration is enabled then remove last 5 characters if (strlen($event_time) == 24) { $event_time = substr($event_time, 0, -5); } if (!empty($event_time)) { $cff_event_date = '<p class="cff-date" ' . $cff_event_date_styles . '>' . cff_eventdate(strtotime($event_time), $cff_event_date_formatting, $cff_event_date_custom) . $event_end_time . '</p>'; } //EVENT //Display the event details $cff_event .= '<div class="cff-details">'; //show event date above title if ($cff_event_date_position == 'above') { $cff_event .= $cff_event_date; } //Show event title if ($cff_show_event_title && !empty($event_object->name)) { if ($cff_event_title_link) { $cff_event .= '<a href="' . $link . '" ' . $target . '>'; } $cff_event .= '<' . $cff_event_title_format . ' ' . $cff_event_title_styles . '>' . $event_object->name . '</' . $cff_event_title_format . '>'; if ($cff_event_title_link) { $cff_event .= '</a>'; } } //show event date below title if ($cff_event_date_position !== 'above') { $cff_event .= $cff_event_date; } //Show event details if ($cff_show_event_details) { //Location if (!empty($event_object->location)) { $cff_event .= '<p class="cff-where" ' . $cff_event_details_styles . '>' . $event_object->location . '</p>'; } //Description if (!empty($event_object->description)) { $description = $event_object->description; if (!empty($body_limit)) { if (strlen($description) > $body_limit) { $description = substr($description, 0, $body_limit) . '...'; } } $cff_event .= '<p class="cff-info" ' . $cff_event_details_styles . '>' . cff_autolink($description, $link_color = str_replace('#', '', $cff_event_link_color)) . '</p>'; } } $cff_event .= '</div>'; } } //MEDIA $cff_media = ''; //If it's a photo or a Featured post which is an image if ($news->type == 'photo' || $news->type == 'offer' || $cff_featured_post_active && !empty($atts['featuredpost']) && isset($news->images)) { if ($cff_post_type == 'offer' && !empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $link_text = $cff_facebook_link_text; $cff_media = '<a title="' . $link_text . '" class="cff-photo'; if ($cff_media_position == 'above') { $cff_media .= ' cff-media-above'; } $cff_media .= '" href="'; //If it's an album then link the photo to the album if ($cff_album) { $cff_media .= $album_link; } else { $cff_media .= $link; } $cff_media .= '" ' . $target . '>'; //Alt text isset($news->caption) ? $cff_alt_text = $news->caption : ($cff_alt_text = $cff_facebook_link_text); if ($cff_album) { $cff_media .= '<div class="cff-album-icon">' . $num_photos . '</div>'; } $cff_media .= '<img src="' . $picture . '" border="0" alt="' . $cff_alt_text . '" />'; $cff_media .= '</a>'; } if ($news->type == 'swf') { if (!empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } $cff_swf_url = 'http://www.facebook.com/permalink.php?story_fbid=' . $PostID["1"] . '&id=' . $PostID['0']; $cff_media = '<a href="' . $cff_swf_url . '" class="cff-photo'; if ($cff_media_position == 'above') { $cff_media .= ' cff-media-above'; } $cff_media .= '" ' . $target . '><img src="' . $picture . '" border="0" /></a>'; } if ($news->type == 'video') { if (!empty($news->picture)) { $picture = $news->picture; /*If the image doesn't have a _b version then the URL looks like this: http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/v/1600273_348160658659104_383135394_s.jpg?oh=23124db338cd899962fa7fb2d7285306&oe=52D5F9BE&__gda__=1389770591_64da0df3e725ca2d1fd026b0e922c58b So check for this kind of string below and don't replace _s. with _b. */ $bigjpg = '_s.jpg?'; $bigpng = '_s.png?'; $biggif = '_s.gif?'; $bigbmp = '_s.bmp?'; $bigtjpg = '_t.jpg?'; $bigtpng = '_t.png?'; $bigtgif = '_t.gif?'; $bigtbmp = '_t.bmp?'; $imagecheck1 = stripos($picture, $bigjpg); $imagecheck2 = stripos($picture, $bigpng); $imagecheck3 = stripos($picture, $biggif); $imagecheck4 = stripos($picture, $bigbmp); $imagecheck5 = stripos($picture, $bigtjpg); $imagecheck6 = stripos($picture, $bigtpng); $imagecheck7 = stripos($picture, $bigtgif); $imagecheck8 = stripos($picture, $bigtbmp); if (!($imagecheck1 || $imagecheck2 || $imagecheck3 || $imagecheck4 || $imagecheck5 || $imagecheck6 || $imagecheck7 || $imagecheck8)) { //Show larger image $picture = str_replace('_s.', '_b.', $picture); $picture = str_replace('_q.', '_b.', $picture); $picture = str_replace('_t.', '_b.', $picture); } } // url of video $url = $news->source; //Check whether it's a youtube video if ($youtube || $youtu || $youtubeembed) { //Get the unique video id from the url by matching the pattern if ($youtube || $youtubeembed) { if (preg_match("/v=([^&]+)/i", $url, $matches)) { $id = $matches[1]; } elseif (preg_match("/\\/v\\/([^&]+)/i", $url, $matches)) { $id = $matches[1]; } elseif (preg_match("/\\/embed\\/([^&]+)/i", $url, $matches)) { $id = $matches[1]; } } elseif ($youtu) { $id = end(explode('/', $url)); } $id = substr($id, 0, strrpos($id, '?')); // this is your template for generating embed codes $code = '<iframe class="youtube-player" type="text/html" src="https://www.youtube.com/embed/{id}" allowfullscreen frameborder="0"></iframe>'; // we replace each {id} with the actual ID of the video to get embed code for this particular video $code = str_replace('{id}', $id, $code); $cff_media = '<div class="cff-iframe-wrap"'; if (!empty($cff_video_height)) { $cff_media .= 'style="height: ' . $cff_video_height . '"'; } $cff_media .= '>' . $code . '</div>'; //Check whether it's a vimeo } else { if (stripos($url, $vimeo) !== false) { if (isset($news->source)) { //http://vimeo.com/moogaloop.swf?clip_id=101557016&autoplay=1 $query = parse_url($news->source, PHP_URL_QUERY); parse_str($query, $params); $clip_id = $params['clip_id']; $cff_media = '<div class="cff-iframe-wrap"'; if (!empty($cff_video_height)) { $cff_media .= 'style="height: ' . $cff_video_height . '"'; } $cff_media .= '><iframe src="https://player.vimeo.com/video/' . $clip_id . '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div>'; } //Else link to the video file } else { //Show play button over video thumbnail $vid_link = $news->source; //Check whether the video source contains an mp4, as the HTML5 video player can't play any other type $cff_mp4_check = stripos($vid_link, '.mp4'); if ($cff_video_action == 'facebook') { $vid_link = $link; } //Title & alt text isset($news->name) ? $vid_title = $news->name : ($vid_title = $cff_facebook_link_text); if (empty($picture)) { $cff_is_video_embed = true; $cff_media = '<a class="cff-playbtn-solo" title="' . $vid_title . '" href="' . $vid_link . '" target="_blank"><i class="fa fa-play cff-playbtn no-poster"></i></a>'; } //If the video action is file then add the HTML5 video tags if ($cff_video_action !== 'facebook' && $cff_mp4_check) { $cff_media = '<div class="cff-html5-video"><a href="javascript:void(0);" class="cff-html5-play"><i class="fa fa-play cff-playbtn"></i></a><video src="' . $vid_link . '" poster="' . $picture . '" >'; } $cff_media .= '<a title="' . $vid_title . '" class="cff-vidLink" href="' . $link . '" ' . $target . '><i class="fa fa-play cff-playbtn"></i><img class="cff-poster" src="' . $picture . '" alt="' . $vid_title . '" /></a>'; if ($cff_video_action !== 'facebook' && $cff_mp4_check) { $cff_media .= '</video></div>'; } } } //Add the name to the description if it's a video embed if ($cff_is_video_embed) { $cff_description = '<div class="cff-desc-wrap '; if (empty($picture)) { $cff_description .= 'cff-no-image'; } $cff_description .= '"><' . $cff_link_title_format . ' class="cff-link-title" ' . $cff_link_title_styles . '><a href="' . $link . '" ' . $target . ' style="color:#' . str_replace('#', '', $cff_link_title_color) . ';">' . $news->name . '</a></' . $cff_link_title_format . '>'; if (!empty($body_limit)) { if (strlen($description_text) > $body_limit) { $description_text = substr($description_text, 0, $body_limit) . '...'; } } $cff_description .= '<p class="cff-post-desc" ' . $cff_body_styles . '><span>' . cff_autolink(htmlspecialchars($description_text)) . '</span></p></div>'; } } //META //how many comments are there? $comment_count = 0; $comment_count_display = '0'; if (!empty($news->comments)) { $comment_count = count($news->comments->data); $comment_count_display = $comment_count; if ($comment_count > 20) { $comment_count_display = '<div class="cff-loader fa-spin"></div><span class="cff-replace">20+</span>'; } } $cff_meta_total = '<div class="cff-meta-wrap">'; //Check for likes $cff_meta = ''; $cff_meta .= '<a href="javaScript:void(0);" class="cff-view-comments" ' . $cff_meta_styles . '><ul class="cff-meta '; $cff_meta .= $cff_icon_style; $cff_meta .= '"><li class="cff-likes"><span class="cff-icon">Likes:</span> <span class="cff-count">'; //How many likes are there? if (!empty($news->likes)) { $like_count = count($news->likes->data); } else { $like_count = '0'; } //If there is no likes then display zero if ($like_count == 0) { $cff_meta .= '0'; } else { if ($like_count < 25) { $cff_meta .= $like_count; } else { $cff_meta .= '<div class="cff-loader fa-spin"></div>'; $cff_meta .= '<span class="cff-replace">' . $like_count . '+</span>'; } } //Check for shares $cff_meta .= '</span></li><li class="cff-shares"><span class="cff-icon">Shares:</span> <span class="cff-count">'; if (empty($news->shares->count)) { $cff_meta .= '0'; } else { $cff_meta .= $news->shares->count; } //Check for comments $cff_meta .= '</span></li><li class="cff-comments"><span class="cff-icon">Comments:</span> <span class="cff-count">'; //How many comments are there? $cff_meta .= $comment_count_display; $cff_meta .= '</span></li></ul></a>'; //Display the link to the Facebook post or external link $cff_link = ''; //Default link $cff_viewpost_class = 'cff-viewpost-facebook'; if ($cff_facebook_link_text == '') { $cff_facebook_link_text = 'View on Facebook'; } $link_text = $cff_facebook_link_text; //Link to the Facebook post if it's a link or a video if ($cff_post_type == 'link' || $cff_post_type == 'video') { $link = "https://www.facebook.com/" . $page_id . "/posts/" . $PostID[1]; } //If Featured Post extension then change the $link var based on whether a full or half post ID is used if ($cff_featured_post_active && !empty($atts['featuredpost'])) { //If the post type is a link or a video (other link types have the link included in the JSON) if ($cff_post_type == 'link' || $cff_post_type == 'video') { if (stripos($news->id, '_') !== false) { //If using the full post ID with an underscore then create the link like this: $link = "https://www.facebook.com/" . $PostID[0] . "/posts/" . $PostID[1]; } else { //If just using the short ID then create the link like this: $link = "https://www.facebook.com/" . $news->id; } } } if ($cff_post_type == 'offer') { $link_text = 'View Offer'; } $cff_link = '<a class="' . $cff_viewpost_class . '" href="' . $link . '" title="' . $link_text . '" ' . $target . ' ' . $cff_link_styles . '>' . $link_text . '</a>'; //Compile the meta and link if included if ($cff_show_link) { $cff_meta_total .= $cff_link; } if ($cff_show_meta) { $cff_meta_total .= $cff_meta; } $cff_meta_total .= '</div>'; $cff_comments = ''; //Get custom text strings $cff_translate_view_previous_comments_text = $atts['previouscommentstext']; $cff_translate_comment_on_facebook_text = $atts['commentonfacebooktext']; $cff_translate_likes_this_text = $atts['likesthistext']; $cff_translate_like_this_text = $atts['likethistext']; $cff_translate_and_text = $atts['andtext']; $cff_translate_other_text = $atts['othertext']; $cff_translate_others_text = $atts['otherstext']; if (!isset($cff_translate_view_previous_comments_text) || empty($cff_translate_view_previous_comments_text)) { $cff_translate_view_previous_comments_text = 'View previous comments'; } if (!isset($cff_translate_comment_on_facebook_text) || empty($cff_translate_comment_on_facebook_text)) { $cff_translate_comment_on_facebook_text = 'Comment on Facebook'; } if (!isset($cff_translate_likes_this_text) || empty($cff_translate_likes_this_text)) { $cff_translate_likes_this_text = 'likes this'; } if (!isset($cff_translate_like_this_text) || empty($cff_translate_like_this_text)) { $cff_translate_like_this_text = 'like this'; } if (!isset($cff_translate_and_text) || empty($cff_translate_and_text)) { $cff_translate_and_text = 'and'; } if (!isset($cff_translate_other_text) || empty($cff_translate_other_text)) { $cff_translate_other_text = 'other'; } if (!isset($cff_translate_others_text) || empty($cff_translate_others_text)) { $cff_translate_others_text = 'others'; } //Create the comments box $cff_comments .= '<div class="cff-comments-box ' . $cff_icon_style; if ($comment_count == 0 || $cff_comments_num == 0) { $cff_comments .= ' cff-no-comments'; } $cff_comments .= '"'; //Expand comments box initially if ($cff_expand_comments) { $cff_comments .= ' style="display: block;"'; } //Number of comments to show initially $cff_comments .= ' rel="' . $cff_comments_num . '"'; $cff_comments .= '>'; //Get the likes if (!empty($news->likes->data)) { $liker_one = ''; $liker_two = ''; if ($news->likes->data[0]) { $liker_one = '<a href="https://facebook.com/' . $news->likes->data[0]->id . '" ' . $cff_meta_link_color . ' ' . $target . '>' . $news->likes->data[0]->name . '</a>'; } if ($like_count > 1) { $liker_two = '<a href="https://facebook.com/' . $news->likes->data[1]->id . '" ' . $cff_meta_link_color . ' ' . $target . '>' . $news->likes->data[1]->name . '</a>'; } if ($like_count > 0) { $cff_comments .= '<p class="cff-comment-likes cff-likes" ' . $cff_meta_styles . '><span class="cff-icon"></span>'; } if ($like_count == 1) { $cff_comments .= $liker_one . ' ' . $cff_translate_likes_this_text; } else { if ($like_count == 2) { $cff_comments .= $liker_one . ' ' . $cff_translate_and_text . ' ' . $liker_two . ' ' . $cff_translate_like_this_text; } else { if ($like_count == 3) { $cff_comments .= $liker_one . ', ' . $liker_two . ' ' . $cff_translate_and_text . ' 1 ' . $cff_translate_other_text . ' ' . $cff_translate_like_this_text; } else { $cff_comments .= $liker_one . ', ' . $liker_two . ' ' . $cff_translate_and_text . ' '; if ($like_count == 25) { $cff_comments .= '<span class="cff-comment-likes-count">'; } $cff_comments .= intval($like_count) - 2; if ($like_count == 25) { $cff_comments .= '</span>'; } $cff_comments .= ' ' . $cff_translate_others_text . ' ' . $cff_translate_like_this_text; } } } if ($like_count > 0) { $cff_comments .= '</p>'; } } //Show more comments if ($comment_count > $cff_comments_num) { $cff_comments .= '<p class="cff-comments cff-show-more-comments" ' . $cff_meta_styles . '><a href="javascript:void(0);" ' . $cff_meta_link_color . '><span class="cff-icon"></span>' . $cff_translate_view_previous_comments_text . '</a></p>'; } //Get the comments if (!empty($news->comments->data)) { //Give the comment an index so we know which one it is $comment_index = 0; //Loop through comments foreach ($news->comments->data as $comment_item) { $comment_likes = $comment_item->like_count; $comment = htmlspecialchars($comment_item->message); //MESSAGE TAGS if ($cff_post_tags && isset($comment_item->message_tags)) { //Loop through the tags and use the name to replace them foreach ($comment_item->message_tags as $message_tag) { $tag_name = $message_tag->name; $tag_link = '<a href="http://facebook.com/' . $message_tag->id . '" ' . $target . ' ' . $cff_meta_link_color . '>' . $message_tag->name . '</a>'; $comment = str_replace($tag_name, $tag_link, $comment); } } //END MESSAGE TAGS //Create comments $cff_comments .= '<div class="cff-comment" id="' . $comment_item->from->id . '" ' . $cff_meta_styles . '>'; $cff_comments .= '<div class="cff-comment-text-wrapper">'; $cff_comments .= '<div class="cff-comment-text'; if ($cff_hide_comment_avatars) { $cff_comments .= ' cff-no-image'; } $cff_comments .= '"><a href="https://facebook.com/' . $comment_item->from->id . '" class="cff-name" ' . $target . ' ' . $cff_meta_link_color . '>' . $comment_item->from->name . '</a>' . cff_autolink($comment, $link_color = str_replace('#', '', $atts['sociallinkcolor'])); $cff_comments .= '<span class="cff-time">'; $cff_comments .= cff_timeSince(strtotime($comment_item->created_time)) . ' ' . $cff_date_after; if ($comment_likes > 0) { $cff_comments .= '<span class="cff-comment-likes"> · <b></b>' . $comment_likes . '</span>'; } $cff_comments .= '</span>'; $cff_comments .= '</div>'; //End .cff-comment-text $cff_comments .= '</div>'; //End .cff-comment-text-wrapper $cff_comments .= '<div class="cff-comment-img"><a href="https://facebook.com/' . $comment_item->from->id . '" ' . $target . '>'; //Only load the comment avatars if they're being displayed initially, otherwise load via JS on click if (!$cff_hide_comment_avatars) { if ($cff_expand_comments && $comment_index >= $comment_count - $cff_comments_num) { $cff_comments .= '<img src="https://graph.facebook.com/' . $comment_item->from->id . '/picture" width=32 height=32>'; } else { $cff_comments .= '<img width=32 height=32>'; } } $cff_comments .= '</a></div>'; $cff_comments .= '</div>'; //End .cff-comment $comment_index++; } } $cff_comments .= '<p class="cff-comments cff-comment-on-facebook" ' . $cff_meta_styles . '><a href="' . $link . '" ' . $target . ' ' . $cff_meta_link_color . '><span class="cff-icon"></span>' . $cff_translate_comment_on_facebook_text . '</a></p>'; $cff_comments .= '</div>'; //Compile comments if meta is included if ($cff_show_meta) { $cff_meta_total .= $cff_comments; } //**************************// //***CREATE THE POST HTML***// //**************************// //Start the container $cff_post_item .= '<div class="cff-item '; if ($cff_post_type == 'link') { $cff_post_item .= 'cff-link-item'; } if ($cff_post_type == 'event') { $cff_post_item .= 'cff-timeline-event'; } if ($cff_post_type == 'photo') { $cff_post_item .= 'cff-photo-post'; } if ($cff_post_type == 'video') { $cff_post_item .= 'cff-video-post'; } if ($cff_is_video_embed) { $cff_post_item .= ' cff-embedded-video'; } if ($cff_post_type == 'swf') { $cff_post_item .= 'cff-swf-post'; } if ($cff_post_type == 'status') { $cff_post_item .= 'cff-status-post'; } if ($cff_post_type == 'offer') { $cff_post_item .= 'cff-offer-post'; } if ($cff_album) { $cff_post_item .= ' cff-album'; } if ($cff_post_bg_color_check) { $cff_post_item .= ' cff-box'; } $cff_post_item .= ' author-' . cff_to_slug($news->from->name) . '" id="' . $news->id . '" ' . $cff_item_styles . '>'; //POST AUTHOR $cff_is_video_embed = false; if ($cff_is_video_embed) { if ($cff_show_author) { $cff_post_item .= $cff_author; } //DATE ABOVE if ($cff_show_date && $cff_date_position == 'above') { $cff_post_item .= $cff_date; } //If embedded video then show post text above the wrapper if ($cff_show_text) { $cff_post_item .= $cff_post_text; } $cff_post_item .= '<div class="cff-embed-wrap">'; } //Start text wrapper if (($cff_thumb_layout || $cff_half_layout) && !empty($news->picture)) { $cff_post_item .= '<div class="cff-text-wrapper">'; } //POST AUTHOR if ($cff_show_author && !$cff_is_video_embed) { $cff_post_item .= $cff_author; } //MEDIA if ($cff_show_media && $cff_media_position == 'above') { $cff_post_item .= $cff_media; } //DATE ABOVE if ($cff_show_date && $cff_date_position == 'above' && !$cff_is_video_embed) { $cff_post_item .= $cff_date; } //POST TEXT if ($cff_show_text && !$cff_is_video_embed) { $cff_post_item .= $cff_post_text; } //DESCRIPTION if ($cff_show_desc && $cff_post_type != 'offer' && $cff_post_type != 'link') { $cff_post_item .= $cff_description; } //LINK if ($cff_show_shared_links) { $cff_post_item .= $cff_shared_link; } //DATE BELOW if (!$cff_show_author && $cff_date_position == 'author' || $cff_show_date && $cff_date_position == 'below' && !$cff_is_video_embed) { if ($cff_show_date && $cff_post_type !== 'event') { $cff_post_item .= $cff_date; } } //End text wrapper if (($cff_thumb_layout || $cff_half_layout) && !empty($news->picture)) { $cff_post_item .= '</div>'; } //EVENT if ($cff_show_event_title || $cff_show_event_details) { $cff_post_item .= $cff_event; } //MEDIA if ($cff_show_media && $cff_media_position !== 'above') { $cff_post_item .= $cff_media; if ($cff_is_video_embed) { $cff_post_item .= '</div>'; } } //DATE BELOW if ($cff_show_date && $cff_date_position == 'below' && $cff_is_video_embed) { $cff_post_item .= $cff_date; } if ($cff_show_date && $cff_post_type == 'event' && ($cff_date_position == 'below' || $cff_date_position == 'author' && !$cff_show_author)) { $cff_post_item .= $cff_date; } //META if ($cff_show_meta || $cff_show_link) { $cff_post_item .= $cff_meta_total; } //End the post item $cff_post_item .= '</div>'; // $cff_post_item .= '<div class="cff-clear"></div>'; } // End !$cff_photos_only || albums only || album embed //ALBUMS ONLY if ($cff_albums_only && $cff_albums_source == 'photospage') { isset($news->link) ? $cff_album_link = $news->link : ($cff_album_link = ''); isset($news->name) ? $cff_album_name = $news->name : ($cff_album_name = ''); //GROUP ALBUMS if ($cff_is_group) { //Cover photos aren't available for group albums $cff_post_item = '<div class="cff-album-item cff-col-'; $cff_post_item .= $cff_album_cols; $cff_post_item .= '">'; $cff_post_item .= '<h4><a href="' . $cff_album_link . '" ' . $target . '>' . $cff_album_name . '</a></h4>'; $cff_post_item .= '</div>'; //Group albums use 'created' instead of 'created_time' like other posts $post_time = $news->created; } else { isset($news->cover_photo) ? $thumb = 'https://graph.facebook.com/' . $news->cover_photo . '/picture' : ($thumb = ''); isset($news->count) ? $cff_album_count = $news->count : ($cff_album_count = ''); $cff_post_item = '<div class="cff-album-item cff-col-'; $cff_post_item .= $cff_album_cols; $cff_post_item .= '">'; $cff_post_item .= '<a href="' . $cff_album_link . '" class="cff-album-cover" ' . $target . '><img src="' . $thumb . '" alt="' . $cff_album_name . '" /></a>'; if ($cff_show_album_title || $cff_show_album_number) { $cff_post_item .= '<div class="cff-album-info">'; } if ($cff_show_album_title) { $cff_post_item .= '<h4><a href="' . $cff_album_link . '" ' . $target . '>' . $cff_album_name . '</a></h4>'; } if ($cff_show_album_number && isset($news->count)) { $cff_post_item .= '<p>' . $cff_album_count . ' photos</p>'; } if ($cff_show_album_title || $cff_show_album_number) { $cff_post_item .= '</div>'; } $cff_post_item .= '</div>'; //If there's no photos in the album then don't show it if (!isset($news->cover_photo)) { $cff_post_item = ''; } } } //ALBUM EMBED if ($cff_album_active && !empty($cff_album_id)) { $cff_post_item = '<div class="cff-album-item cff-col-'; $cff_post_item .= $cff_album_cols; $cff_post_item .= '">'; $cff_post_item .= '<a href="https://facebook.com/' . $news->id . '" class="cff-album-cover" title="' . $news->name . '" ' . $target . '><img src="' . $news->source . '" /></a>'; $cff_post_item .= '</div>'; $post_time = $i; } if ($cff_photos_only) { //PHOTOS ONLY $cff_post_item = '<div class="cff-album-item cff-col-' . $cff_photos_cols . '">'; $cff_post_item .= '<a href="' . $news->link . '" class="cff-album-cover" ' . $target . '><img src="' . $news->src_big . '" /></a>'; $cff_post_item .= '</div>'; if ($cff_is_group) { //FOR GROUPS $post_time = $news->created; $cff_posts_array = cff_array_push_assoc_photos($cff_posts_array, $i, $cff_post_item, $post_time); } else { //FOR PAGES $cff_content .= $cff_post_item; } } else { //PUSH POSTS TO ARRAY $cff_posts_array = cff_array_push_assoc($cff_posts_array, $post_time, $cff_post_item); } } // End post type check if (isset($news->message)) { $prev_post_message = $news->message; } if (isset($news->link)) { $prev_post_link = $news->link; } if (isset($news->description)) { $prev_post_description = $news->description; } } // End the loop if ($cff_photos_only) { //PHOTOS ONLY usort($cff_posts_array, 'sortByOrder'); } else { if ($cff_album_active && !empty($cff_album_id)) { //ALBUM EMBED //Don't sort array. Display posts in their native order. } else { //Sort the array in reverse order (newest first) krsort($cff_posts_array); } } } // End ALL POSTS } // END PAGE_IDS LOOP //Output the posts array if ($cff_photos_only) { //PHOTOS ONLY $p = 0; foreach ($cff_posts_array as $post) { if ($p == $show_posts) { break; } $cff_content .= $post['post']; $p++; } } else { $p = 0; foreach ($cff_posts_array as $post) { if ($p == $show_posts) { break; } $cff_content .= $post; $p++; } } //Reset the timezone date_default_timezone_set($cff_orig_timezone); //Add the Like Box inside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && !$cff_like_box_outside) { $cff_content .= $like_box; } //End the feed $cff_content .= '</div><div class="cff-clear"></div>'; //Add the Like Box outside if ($cff_like_box_position == 'bottom' && $cff_show_like_box && $cff_like_box_outside) { $cff_content .= $like_box; } //If the feed is loaded via Ajax then put the scripts into the shortcode itself $ajax_theme = $atts['ajax']; $ajax_theme == 'on' || $ajax_theme == 'true' || $ajax_theme == true ? $ajax_theme = true : ($ajax_theme = false); if ($atts['ajax'] == 'false') { $ajax_theme = false; } if ($ajax_theme) { $url = plugins_url(); $path = urlencode(ABSPATH); $cff_link_hashtags = $atts['linkhashtags']; $cff_link_hashtags == 'true' || $cff_link_hashtags == 'on' ? $cff_link_hashtags = 'true' : ($cff_link_hashtags = 'false'); if ($cff_title_link == 'true' || $cff_title_link == 'on') { $cff_link_hashtags = 'false'; } $cff_content .= '<script type="text/javascript">var cffsiteurl = "' . $url . '", cfflinkhashtags = "' . $cff_link_hashtags . '";</script>'; $cff_content .= '<script type="text/javascript" src="' . plugins_url('/js/cff-scripts.js?8', __FILE__) . '"></script>'; } $cff_content .= '</div>'; //Return our feed HTML to display return $cff_content; }