Feed Them Social – Facebook, Instagram, Twitter, YouTube, Pinterest - Version 2.8.6

Version Description

Download this release

Release Info

Developer slickremix
Plugin Icon 128x128 Feed Them Social – Facebook, Instagram, Twitter, YouTube, Pinterest
Version 2.8.6
Comparing to
See all releases

Code changes from version 2.8.5 to 2.8.6

admin/class-fts-facebook-options-page.php CHANGED
@@ -65,6 +65,7 @@ class FTS_Facebook_Options_Page {
65
  $fb_show_follow_btn_profile_pic = get_option( 'fb_show_follow_btn_profile_pic' );
66
  $fb_like_btn_color = get_option( 'fb_like_btn_color', 'light' );
67
  $fb_hide_shared_by_etc_text = get_option( 'fb_hide_shared_by_etc_text' );
 
68
  $fb_hide_images_in_posts = get_option( 'fb_hide_images_in_posts' );
69
  $fb_hide_error_handler_message = get_option( 'fb_hide_error_handler_message' );
70
  $fb_hide_no_posts_message = get_option( 'fb_hide_no_posts_message' );
@@ -659,6 +660,54 @@ class FTS_Facebook_Options_Page {
659
  </h3>
660
  </div>
661
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
662
  <div class="feed-them-social-admin-input-label fts-twitter-text-color-label">
663
  <?php
664
  echo sprintf(
65
  $fb_show_follow_btn_profile_pic = get_option( 'fb_show_follow_btn_profile_pic' );
66
  $fb_like_btn_color = get_option( 'fb_like_btn_color', 'light' );
67
  $fb_hide_shared_by_etc_text = get_option( 'fb_hide_shared_by_etc_text' );
68
+ $fb_title_htag = get_option( 'fb_title_htag' );
69
  $fb_hide_images_in_posts = get_option( 'fb_hide_images_in_posts' );
70
  $fb_hide_error_handler_message = get_option( 'fb_hide_error_handler_message' );
71
  $fb_hide_no_posts_message = get_option( 'fb_hide_no_posts_message' );
660
  </h3>
661
  </div>
662
 
663
+ <div class="feed-them-social-admin-input-label fts-twitter-text-color-label">
664
+ <?php
665
+ echo sprintf(
666
+ esc_html( 'Page Title Tag %1$s %2$s', 'feed-them-social' ),
667
+ '<br/><small>',
668
+ '</small>'
669
+ );
670
+ ?>
671
+ </div>
672
+ <select name="fb_title_htag" id="fb_title_htag" class="feed-them-social-admin-input">
673
+ <option value="">
674
+ <?php esc_html_e( 'Please Select Option', 'feed-them-social' ); ?>
675
+ </option>
676
+ <option <?php echo selected( $fb_title_htag, 'h1', false ); ?> value="<?php esc_attr_e( 'h1' ); ?>">
677
+ <?php esc_html_e( 'h1 (Default)', 'feed-them-social' ); ?>
678
+ </option>
679
+ <option <?php echo selected( $fb_title_htag, 'h2', false ); ?> value="<?php esc_attr_e( 'h2' ); ?>">
680
+ <?php esc_html_e( 'h2', 'feed-them-social' ); ?>
681
+ </option>
682
+ <option <?php echo selected( $fb_title_htag, 'h3', false ); ?> value="<?php esc_attr_e( 'h3' ); ?>">
683
+ <?php esc_html_e( 'h3', 'feed-them-social' ); ?>
684
+ </option>
685
+ <option <?php echo selected( $fb_title_htag, 'h4', false ); ?> value="<?php esc_attr_e( 'h4' ); ?>">
686
+ <?php esc_html_e( 'h4', 'feed-them-social' ); ?>
687
+ </option>
688
+ <option <?php echo selected( $fb_title_htag, 'h5', false ); ?> value="<?php esc_attr_e( 'h5' ); ?>">
689
+ <?php esc_html_e( 'h5', 'feed-them-social' ); ?>
690
+ </option>
691
+ <option <?php echo selected( $fb_title_htag, 'h6', false ); ?> value="<?php esc_attr_e( 'h6' ); ?>">
692
+ <?php esc_html_e( 'h6', 'feed-them-social' ); ?>
693
+ </option>
694
+ </select>
695
+ <div class="clear"></div>
696
+ </div>
697
+ <!--/fts-twitter-feed-styles-input-wrap-->
698
+
699
+ <div class="feed-them-social-admin-input-wrap">
700
+ <div class="feed-them-social-admin-input-label fts-fb-text-color-label">
701
+ <?php esc_html_e( 'Page Title Size', 'feed-them-social' ); ?>
702
+ </div>
703
+ <input type="text" name="fb_title_htag_size" class="feed-them-social-admin-input" placeholder="16px" value="<?php echo esc_attr( get_option( 'fb_title_htag_size' ) ); ?>"/>
704
+ <div class="clear"></div>
705
+ </div>
706
+ <!--/fts-facebook-feed-styles-input-wrap-->
707
+
708
+
709
+ <div class="feed-them-social-admin-input-wrap">
710
+
711
  <div class="feed-them-social-admin-input-label fts-twitter-text-color-label">
712
  <?php
713
  echo sprintf(
feed-them.php CHANGED
@@ -7,18 +7,18 @@
7
  * Plugin Name: Feed Them Social - for Twitter feed, Youtube, Pinterest and more
8
  * Plugin URI: https://feedthemsocial.com/
9
  * Description: Display a Custom Facebook feed, Instagram feed, Twitter feed, Pinterest feed & YouTube feed on pages, posts or widgets.
10
- * Version: 2.8.5
11
  * Author: SlickRemix
12
  * Author URI: https://www.slickremix.com/
13
  * Text Domain: feed-them-social
14
  * Domain Path: /languages
15
  * Requires at least: WordPress 4.0.0
16
  * Tested up to: WordPress 5.4.2
17
- * Stable tag: 2.8.5
18
  * License: GPLv2 or later
19
  * License URI: https://www.gnu.org/licenses/gpl-3.0.html
20
  *
21
- * @version 2.8.5
22
  * @package FeedThemSocial/Core
23
  * @copyright Copyright (c) 2012-2020 SlickRemix
24
  *
@@ -31,12 +31,10 @@
31
  *
32
  * Makes sure any js or css changes are reloaded properly. Added to enqued css and js files throughout!
33
  */
34
- define( 'FTS_CURRENT_VERSION', '2.8.5' );
35
 
36
  define( 'FEED_THEM_SOCIAL_NOTICE_STATUS', get_option( 'rating_fts_slick_notice', false ) );
37
 
38
-
39
-
40
  /**
41
  * Class Feed_Them_Social
42
  */
@@ -529,4 +527,4 @@ function feed_them_social() {
529
  }
530
 
531
  // Initiate Feed Them Social!
532
- feed_them_social();
7
  * Plugin Name: Feed Them Social - for Twitter feed, Youtube, Pinterest and more
8
  * Plugin URI: https://feedthemsocial.com/
9
  * Description: Display a Custom Facebook feed, Instagram feed, Twitter feed, Pinterest feed & YouTube feed on pages, posts or widgets.
10
+ * Version: 2.8.6
11
  * Author: SlickRemix
12
  * Author URI: https://www.slickremix.com/
13
  * Text Domain: feed-them-social
14
  * Domain Path: /languages
15
  * Requires at least: WordPress 4.0.0
16
  * Tested up to: WordPress 5.4.2
17
+ * Stable tag: 2.8.6
18
  * License: GPLv2 or later
19
  * License URI: https://www.gnu.org/licenses/gpl-3.0.html
20
  *
21
+ * @version 2.8.6
22
  * @package FeedThemSocial/Core
23
  * @copyright Copyright (c) 2012-2020 SlickRemix
24
  *
31
  *
32
  * Makes sure any js or css changes are reloaded properly. Added to enqued css and js files throughout!
33
  */
34
+ define( 'FTS_CURRENT_VERSION', '2.8.6' );
35
 
36
  define( 'FEED_THEM_SOCIAL_NOTICE_STATUS', get_option( 'rating_fts_slick_notice', false ) );
37
 
 
 
38
  /**
39
  * Class Feed_Them_Social
40
  */
527
  }
528
 
529
  // Initiate Feed Them Social!
530
+ feed_them_social();
feeds/css/styles.css CHANGED
@@ -1 +1 @@
1
- /* If you think we have to many !important rules you have to consider that we are fighting with the themes CSS which in most cases overrides a plugins CSS. So if you see an !important rule and are having trouble overriding it make sure and target the body, html or a wrapper ID before the CSS class you are trying to override. */ .entriestitle.fts-youtube-popup,.fts-yt-first-video{word-break:break-word}.fts-twitter-div a,.tweeter-info:hover a{-webkit-transition:all .3s ease-in-out;text-decoration:none!important}.tweeter-info,.tweeter-info:hover a{-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out}.fts-jal-fb-group-display,.fts-twitter-div{clear:both}@font-face{font-family:FontAwesomeSlick;src:url(../css/font/fontawesome-webfont.eot?v=3.2.1);src:url(../css/font/fontawesome-webfont.eot?#iefix&v=3.2.1) format("embedded-opentype"),url(../css/font/fontawesome-webfont.woff?v=3.2.1) format("woff"),url(../css/font/fontawesome-webfont.ttf?v=3.2.1) format("truetype"),url(../css/font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1) format("svg")}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.fts-twitter-text{padding:4px 0 0;display:block;line-height:19px}.fts-video-show-hide-btns-wrap a:focus,.fts-video-show-hide-btns-wrap a:link,.fts-video-show-hide-btns-wrap a:visited{outline:0!important;border:none!important}.fts-view-on-twitter-link:before{font-family:FontAwesomeSlick;content:"\f14c ";display:inline-block;margin-right:6px}.fts-video-show-hide-btns-wrap a:before{font-family:FontAwesomeSlick;content:'\f16a';display:inline-block;margin-right:5px}img.fts-twitter-description-image{margin:10px 0 0!important}.fts-twitter-favorites:before,.fts-twitter-retweet:before{margin-right:5px;font-family:FontAwesomeSlick;position:relative}.fts-twitter-retweet:before{content:'\f079'!important;font-size:17px!important;top:1px}.fts-twitter-favorites:before{content:'\f004 '!important;font-size:13px!important;top:0}.fts-twitter-reply:before{font-family:FontAwesomeSlick;content:'\f112'!important;position:relative;top:2px;font-size:14px}.fts-twitter-caption,blockquote.twitter-video{display:none}.fts-twitter-div *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fts-fb-slideshow,.fts-fb-slideshow *,.fts-slicker-facebook-photos *,.fts-yt-videolist *,.popup-video-gallery-fb .fts-fb-photo-post-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fts-twitter-div{position:relative;padding:0}.tweeter-info:hover a{transition:all .3s ease-in-out}.widget .fts-twitter-div .fts-uppercase{width:auto}.fts-twitter-div p{margin:0 0 5px!important;line-height:20px!important;padding:0}.widget .fts-twitter-div p{margin:0 0 8px!important;padding:0!important;line-height:19px!important;font-size:12px!important}.fts-twitter-div img{margin:0 10px}.fts-twitter-div .fts-uppercase{margin:0 5px 0 0;font-size:13px;font-weight:700;text-align:left;display:inline-block}.widget .twitter-image{margin-right:10px!important}.widget .fts-twitter-div .fts-uppercase,.widget .tweeter-info .fts-right,.widget .tweeter-info .fts-twitter-full-width{text-align:left;font-size:11px;line-height:14px;font-weight:400!important}.fts-right .fts-uppercase,.fts-twitter-full-width .fts-uppercase{display:inline-block}.tweeter-info .fts-right{float:none!important;padding:0 7px 0 71px;line-height:15px!important}.tweeter-info .fts-twitter-full-width{padding:10px 10px 0}.fts-twitter-fade{display:none;width:321px;height:80px;position:absolute;top:137px;left:1px}.fts-twitter-image,.widget .fts-twitter-image{margin:0;float:left}.tweeter-info{padding:11px;background:#eee;box-shadow:0 1px 2px #555;clear:both;min-height:51px;line-height:13px;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-twitter-div a,.tweeter-info:hover{-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out}.widget .tweeter-info{min-height:42px}.tweeter-info:hover{background:#fff;box-shadow:0 1px 2px #222;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.tweeter-info img{border-radius:0;box-shadow:none!important}.fts-twitter-link{position:absolute;top:217px;left:0;font-size:22px;text-transform:uppercase;width:291px;height:36px;padding:15px 0 0 38px;border-top:1px solid #c1c2c3;color:#000}.fts-video-loading-notice{color:#000}a.fts-powered-by-text{padding-top:8px!important;width:100%;text-align:center!important;display:block}.fts-twitter-div a{transition:all .3s ease-in-out;color:#0084b4}.fts-twitter-div a:hover{color:#444;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;text-decoration:none!important}.tweeter-info .time{font-size:12px}.fts-tweeter-wrap .tweeter-info{padding:14px 0 8px;background:0 0;box-shadow:0 0 0 #555;border-bottom:1px solid #eee;word-wrap:break-word;clear:both;font-size:14px;line-height:13px;-webkit-transition:background 0;-webkit-transition:all 0s ease-in-out;-moz-transition:all 0s ease-in-out;-o-transition:all 0s ease-in-out;transition:all 0s ease-in-out}.fts-tweeter-wrap .fts-video-wrapper{margin:15px 0 0}.fts-video-wrapper-padding{display:none}.fts-tweeter-wrap .tweeter-info:hover{background:0 0!important;box-shadow:0 0 0 #222!important}.fts-tweeter-wrap .tweeter-info img{max-width:100%;box-shadow:none!important;border-radius:0}.fts-twitter-favorites,.fts-twitter-reply,.fts-twitter-retweet{font-size:13px!important}.fts-twitter-reply-wrap a{display:inline-block!important;opacity:1;padding-right:0;-webkit-transition:background 1s;-webkit-transition:all 1s ease-in-out;-moz-transition:all 1s ease-in-out;-o-transition:all 1s ease-in-out;transition:all 1s ease-in-out}.fts-twitter-reply-wrap{font-size:16px;margin-right:0;margin-top:10px;font-style:normal!important}.fts-tweeter-wrap:hover a{opacity:1}@media (max-width:767px){.fts-tweeter-wrap a{opacity:1!important}}.fts-video-show-hide-btns-wrap{margin:7px 0 0!important}.fts-video-show-hide-btns-wrap a{font-size:13px!important}.fts-twitter-load-video-wrapper,a.fts-twitter-load-video-wrapper{margin:0!important;padding:0!important}.fts-show-media-text,a.fts-close-media{display:none}.fts-twitter-div iframe,.fts-video-wrapper iframe{margin:0!important}.twitter-social-btn-bottom{margin:15px 0}.fts-jal-fb-see-more .icon-thumbs-up:before{content:"\f164"!important;font-size:14px}.fts-jal-fb-see-more .icon-comments:before{content:"\f086"!important;top:0;position:relative;font-size:14px}.fts-jal-fb-see-more .icon-file:before{content:"\f064"!important;top:2px!important;position:relative;font-size:14px}.fts-events-list-wrap .icon-map-marker [class^=icon-thumbs-up],.fts-jal-fb-see-more [class*=" icon--file"],.fts-jal-fb-see-more [class*=" icon--thumbs-up"],.fts-jal-fb-see-more [class^=icon-comments],.fts-jal-fb-see-more [class^=icon-file],.fts-jal-fb-see-more [class^=icon-thumbs-up]{display:inline-block!important;font-style:normal!important}.fts-events-list-wrap [class^=icon-]:before,.fts-jal-fb-see-more [class^=icon-]:before,.fts-jal-single-fb-post [class^=icon-]:before{font-family:FontAwesomeSlick!important;-webkit-font-smoothing:antialiased;margin:0 0 0 7px!important}.fts-jal-fb-see-more [class^=icon-]:before [class^=icon-],.fts-jal-single-fb-post{float:none!important;margin:0!important;display:block;padding:0!important;text-align:right!important;width:auto!important;height:auto!important;line-height:normal!important;vertical-align:baseline!important;background:0 0!important;font-style:normal!important}.fts-jal-fb-group-display img{border-radius:0!important;box-shadow:0 0 0 transparent!important;display:block;max-width:100%}.fts-jal-fb-group-header-desc{width:100%;margin:7px 0 15px!important;line-height:20px}.fts-jal-fb-header{clear:both}.no-more-posts-fts-fb{cursor:auto}.fts-jal-single-fb-post .slicker-facebook-album-photoshadow{display:none}.fts-jal-fb-header a:hover,.fts-jal-single-fb-post a:hover{font-style:normal;text-decoration:none!important;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;color:#313131}.fts-jal-fb-user-thumb a{display:block}.fts-fb-get-directions{text-align:left!important;margin:0}.fts-jal-fb-header a,.fts-jal-single-fb-post a{-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;text-decoration:none!important;word-break:break-word;border:none!important}.fts-jal-fb-header h1{font-size:1.9em;margin:0!important;line-height:normal!important;padding:0!important}.widget .fts-jal-fb-header h1{font-size:1.8em;line-height:22px}.fts-jal-single-fb-post{width:100%;padding:15px 0 7px!important;margin-bottom:0;border-bottom:1px solid rgba(184,184,184,.3);position:relative;line-height:17px;text-align:left}.fts-slicker-facebook-posts .fts-jal-single-fb-post{width:auto;padding:10px 10px 8px!important;border-bottom:1px solid rgba(184,184,184,.3);line-height:17px}.widget .fts-jal-single-fb-post{width:100%;padding:17px 0 10px!important}.fts-facebook-popup .fts-jal-fb-user-thumb{width:50px;height:50px;float:left;margin:0 0 0 20px!important}.fts-jal-fb-user-thumb,.fts-mashup-icon{height:50px;margin-right:11px;float:left}.fts-jal-fb-user-thumb{width:50px;margin-bottom:5px}.fts-mashup-icon{width:20px;margin-bottom:5px}.widget .fts-jal-fb-right-wrap{padding-left:0}.widget .fts-jal-fb-top-wrap{padding-bottom:5px;padding-left:0;margin-bottom:5px;min-height:50px}.fts-jal-fb-message{padding-top:10px;line-height:21px;word-wrap:break-word}.fts-jal-fb-link-wrap p,.fts-jal-fb-message p{padding:0!important;margin:0 0 10px!important}.fts-jal-fb-link-wrap p{line-height:19px!important}.fts-jal-fb-link-wrap{margin-top:0;border-radius:0;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.jal-fb-description{word-wrap:break-word!important}.fts-jal-fb-picture{float:left;display:block;margin:10px 10px 4px 0}.fts-jal-fb-link-wrap img{margin:0}.fts-jal-fb-vid-picture{position:relative;float:left;height:auto!important;margin:10px 0 0;line-height:normal!important;cursor:pointer}.fts-jal-fb-description-wrap{float:left;padding:15px 12px 0 17px!important;color:#757575;font-size:13px!important;font-weight:400;text-align:left}.popup-gallery-fb .fts-jal-fb-description-wrap,.popup-video-gallery-fb .fts-jal-fb-description-wrap{padding:15px 0 0!important}.fts-jal-single-fb-post .fts-jal-fb-vid-wrap .fts-jal-fb-description-wrap{padding:15px 15px 0!important}.widget .fts-jal-fb-description-wrap{float:left;overflow:hidden;max-width:90%;line-height:19px!important;color:#999;font-size:12px!important;font-weight:400}.entry-content .fts-jal-fb-picture img,.fts-yt-videolist li img,.widget .fts-jal-fb-picture img,.widget a.fts-pin-board-wrap img,a.fts-pin-board-wrap img{max-width:100%}.fts-jal-fb-description{padding:5px 0 10px;line-height:17px!important;font-size:13px;color:#919191;word-wrap:break-word}.fts-jal-fb-description p{font-size:13px!important}.fts-jal-fb-top-wrap{margin-bottom:10px;text-align:left}.fts-jal-fb-user-name{font-weight:700;color:#888;display:block;padding-top:6px;padding-right:5px;font-size:16px;line-height:18px}.fts-slicker-facebook-albums .fts-jal-fb-user-name a{color:#fff}.fts-jal-fb-post-time{color:#999;padding-top:4px;font-size:12px;line-height:10px;display:block}.fts-jal-fb-name{font-weight:700;color:#c00;padding-bottom:5px;font-size:15px;display:inline-block;line-height:18px}.fts-events-list-wrap .fts-jal-fb-name{font-weight:400;color:#c52214;padding-bottom:5px;font-size:15px;display:block;line-height:21px}.fts-jal-fb-vid-play-btn{background:url(../images/video-play-btn.png) no-repeat;bottom:7px;height:26px;left:9px;position:absolute;width:35px}.fts-jal-fb-picture img,.fts-vid-div{width:100%}.fts-vid-div .fts-jal-fb-vid-play-btn,.fts-vid-div img{display:none}.fts-vid-div iframe{position:absolute;z-index:500}.fts-jal-fb-see-more .icon-file{font-size:10px}.fts-jal-fb-see-more{float:right;margin:10px 0 0;font-size:12px;width:100%;text-align:right;font-style:normal!important}.fts-fb-event-photo{float:left}.fts-fb-large-photo{margin-right:0!important;font-weight:inherit}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap:hover .fts-likes-shares-etc-wrap,.fts-slicker-facebook-photos .slicker-facebook-album-photoshadow:hover .fts-jal-fb-see-more{display:block}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap:hover .fts-jal-fb-top-wrap,.fts-slicker-facebook-photos .fts-fb-video-post-wrap .slicker-facebook-album-photoshadow:hover .fts-jal-fb-top-wrap{opacity:1}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap,.fts-slicker-facebook-photos .fts-jal-fb-description,.fts-slicker-facebook-photos .fts-jal-fb-see-more:hover,.fts-slicker-facebook-photos .fts-jal-fb-user-name a:hover{color:#fff}.fts-slicker-facebook-photos .fts-jal-fb-description-wrap{font-weight:inherit!important}.fts-slicker-facebook-photos *{-ms-box-sizing:border-box;box-sizing:border-box}.instagram-placeholder *,.slicker-instagram-placeholder *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fts-jal-fb-vid-wrap .slicker-facebook-album-photoshadow{position:absolute;top:0;right:0;height:auto;z-index:600;cursor:pointer;width:auto;opacity:1!important;background-color:rgba(0,0,0,.6)!important;display:none}.fts-jal-fb-vid-wrap .slicker-facebook-album-photoshadow:before{content:'info';color:#fff;padding:5px 10px 7px;text-align:right;float:right;font-size:12px;display:none}.fts-fb-load-more,.fts-fb-spinner,.fts-instagram{text-align:center}.slicker-facebook-album-photoshadow{position:absolute;top:0;right:0;height:100%;width:100%;z-index:100}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap .slicker-facebook-album-photoshadow:hover{background-color:rgba(0,0,0,.9);-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;z-index:100;opacity:.8;top:0;right:0;height:100%;width:100%}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap:hover .slicker-facebook-album-photoshadow{background-color:rgba(0,0,0,.9);-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;z-index:100;opacity:.8;top:0;display:block;right:0;height:100%;width:100%}.fts-slicker-facebook-photos .fts-jal-fb-right-wrap{padding:0!important}.fts-slicker-facebook-photos .fts-jal-fb-user-thumb{display:none}.fts-slicker-facebook-photos .fts-jal-fb-top-wrap{color:#fff!important;padding:12px 15px 0!important;z-index:600;position:absolute;width:100%;opacity:0;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}.fts-slicker-facebook-photos .fts-jal-fb-message{padding:15px 0 0;color:#fff!important;position:relative;font-size:14px;z-index:100}.fts-slicker-facebook-photos .fts-jal-fb-post-time{color:#ddd;margin-top:0}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap a:hover,.fts-slicker-facebook-albums .jal-fb-description a:hover,.fts-slicker-facebook-photos .jal-fb-description a:hover{color:#ccc}.fts-slicker-facebook-photos .fts-jal-fb-link-wrap,.fts-slicker-facebook-photos .fts-jal-fb-vid-wrap{line-height:12px!important}.fts-slicker-facebook-photos .fts-jal-fb-vid-wrap iframe{height:305px;width:305px}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap{word-wrap:break-word;width:100%}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap a{float:left;width:100%;line-height:19px;padding:0!important}.fts-slicker-facebook-albums .jal-fb-description a,.fts-slicker-facebook-photos .jal-fb-description a{float:none!important}.fts-slicker-facebook-photos .fts-jal-single-fb-post{position:relative;float:none;z-index:0;overflow:hidden;border:none!important;padding:0!important;font-family:proxima-nova,'Helvetica Neue',Arial,Helvetica,sans-serif!important;background:#000;vertical-align:top!important;display:inline-block!important}.fts-fb-get-directions:before,.slicker-instagram-image-likes:before,.slicker-instagram-placeholder .fts-instagram-icon:before{font-family:FontAwesomeSlick;-webkit-font-smoothing:antialiased}.fts-slicker-facebook-photos .fts-jal-fb-link-wrap,.fts-slicker-facebook-photos .fts-jal-fb-vid-wrap{border:none!important;margin:0!important;width:100%;height:100%}.fts-album-photos-wrap img{vertical-align:middle!important;display:inline-block!important}.fts-slicker-facebook-photos.fts-slicker-facebook-albums .fts-jal-single-fb-post{height:auto}.fts-slicker-facebook-photos{margin:auto;text-align:center}.fts-slicker-facebook-photos .fts-jal-fb-picture{display:block;margin:0;padding:0;float:none;width:auto;left:0;right:0;top:0;position:absolute;background-size:cover;background-position:center center;background-repeat:no-repeat}div.fts-fb-location{letter-spacing:1px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:21),only screen and (min-device-pixel-ratio:2){.fts-jal-fb-vid-wrap iframe{height:130px}}.fts-fb-spinner>div{width:10px;height:10px;background-color:#999;border-radius:100%;display:inline-block;-webkit-animation:fts-fb-bouncedelay 1.4s infinite ease-in-out;animation:fts-fb-bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.fb-social-btn-below-description,.fb-social-btn-bottom,.fb-social-btn-top{width:100%;overflow:hidden}.fts-fb-spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.fts-fb-spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes fts-fb-bouncedelay{0%,100%,80%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes fts-fb-bouncedelay{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.fts-fluid-videoWrapper-html5 video{object-fit:inherit;margin-bottom:0!important}.fts-fb-album-view-link a{color:#fff}.fts-fb-album-view-link a:hover{color:#eee}.fts-instagram-fade .fts-fb-caption{display:block}.fts-view-album-photos-large:before,.fts-view-fb-videos-large:before,.fts-view-on-facebook-link:before,.view-on-facebook-albums-link:before{font-family:FontAwesomeSlick;content:"\f14c ";display:inline-block;margin-right:6px;-webkit-font-smoothing:antialiased}.fts-fb-get-directions:before{content:"\f041 ";display:inline-block;margin:0 5px 0 2px}.instagram-placeholder,.slicker-instagram-placeholder{font-family:proxima-nova,'Helvetica Neue',Arial,Helvetica,sans-serif!important}.fts-instagram-fade .fts-instagram-caption-content,.fts-instagram-fade .fts-jal-fb-description{color:#fff;padding:0;margin:0}.fts-instagram-fade .fts-fb-album-view-link{display:none}#facebook-sidebar .fts-fb-load-more-wrapper{max-width:100%!important;margin-top:-1px!important;z-index:9999;position:relative}.fb-social-btn-bottom{margin-top:15px!important}.fb-social-btn-top{display:block;margin-bottom:12px!important}.fb-social-btn-below-description{margin-top:5px!important;margin-bottom:5px!important}@media only screen and (max-width:640px){.fb-like.fb_iframe_widget,.fb-like.fb_iframe_widget>span,.fb-like.fb_iframe_widget>span>iframe{width:100%!important;position:relative!important}}.fts-events-list-wrap .fts-jal-fb-picture{float:left;display:block;margin:0}.fts-events-list-wrap a.fts-jal-fb-name{font-size:17px}.fts-events-list-wrap .fts-fb-event-time{font-size:15px}.fts-events-list-wrap .fts-fb-location{font-size:15px;display:block;margin:10px 0 5px}.fts-events-list-wrap .fts-fb-location-title{font-size:15px;display:block;padding:0;font-weight:700;font-style:normal;margin:12px 0 0}.fts-events-list-wrap .fts-jal-fb-message{clear:both;font-size:15px}.fts-fb-get-directions{font-size:15px;padding:0 0 20px;color:#4595f0}.fts-fb-load-more{border-radius:1px;padding:0;line-height:37px!important;width:100%;min-height:37px!important;font-size:13px!important;background:rgba(240,240,240,.45);cursor:pointer;color:#111;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-fb-load-more:hover{background:rgba(240,240,240,.85)}.instagram-image,.widget .instagram-image{background-color:#000;z-index:1;display:block}.flip360-fts-load-more{-moz-animation:spinY .5s linear;-ms-animation:spinY .5s linear;-o-animation:spinY .5s linear;animation:spinY .5s linear;-webkit-animation-name:spinY;-webkit-animation-duration:.5s;-webkit-animation-timing-function:linear;-webkit-animation-fill-mode:both;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-moz-animation-timing-function:cubic-bezier(.75,0,.175,1);-ms-animation-timing-function:cubic-bezier(.75,0,.175,1);-o-animation-timing-function:cubic-bezier(.75,0,.175,1);animation-timing-function:cubic-bezier(.75,0,.175,1)}@-moz-keyframes spinY{0%{-moz-transform:rotateY(0);transform:rotateY(0)}100%{-moz-transform:rotateY(360deg);transform:rotateY(360deg)}}@-webkit-keyframes spinY{0%{-webkit-transform:rotateY(0);transform:rotateY(0);-webkit-transform-style:preserve-3d}100%{-webkit-transform:rotateY(360deg);transform:rotateY(360deg);-webkit-transform-style:preserve-3d}}@-o-keyframes spinY{0%{-o-transform:rotateY(0);transform:rotateY(0)}100%{-o-transform:rotateY(360deg);transform:rotateY(360deg)}}@-ms-keyframes spinY{0%{-ms-transform:rotateY(0);transform:rotateY(0)}100%{-ms-transform:rotateY(360deg);transform:rotateY(360deg)}}@keyframes spinY{0%{-webkit-transform:rotateY(0);-moz-transform:rotateY(0);-ms-transform:rotateY(0);-o-transform:rotateY(0);transform:rotateY(0)}100%{-webkit-transform:rotateY(360deg);-moz-transform:rotateY(360deg);-ms-transform:rotateY(360deg);-o-transform:rotateY(360deg);transform:rotateY(360deg)}}.clear{clear:both}.heart-comments-wrap li,ul.heart-comments-wrap{padding:0!important;margin:0!important;line-height:1.3em!important;border:none!important}.widget .instagram-placeholder li,.widget .instagram-placeholder ul{padding:0!important;margin:0!important;height:auto!important}.instagram-placeholder p{margin:0;padding:0}.instagram-placeholder{position:relative;z-index:0;display:inline-block;margin:0 20px 20px}.widget .instagram-placeholder{margin:-10px 9px 0 10px!important;width:104px!important;text-align:left!important}.instagram-image{width:150px;height:150px;position:relative}.widget .instagram-image{width:105px;height:100px;position:relative;background-size:100%!important}.instaG-photoshadow{background-color:rgba(0,0,0,.1);bottom:0;left:0;position:absolute;right:0;top:0;border:1px solid rgba(0,0,0,.12);z-index:1;-webkit-transition:background-color .05s ease-out;-moz-transition:background-color .05s ease-out;-o-transition:background-color .05s ease-out;transition:background-color .05s ease-out;width:148px;height:148px}.widget .instaG-photoshadow{width:103px;height:98px}.instagram-placeholder:hover .instaG-photoshadow{background-color:transparent;-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;border:1px solid rgba(0,0,0,.12);width:148px;height:148px}.heart-comments-wrap li,.instagram-placeholder .date{color:#888;position:relative;z-index:1;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s;text-shadow:0 1px 0 rgba(255,255,255,.8);opacity:0;pointer-events:none}.widget .instagram-placeholder:hover .instaG-photoshadow{width:103px;height:98px}a.instaG-backg-link{position:relative;display:block}.instagram-placeholder .date{text-align:center;margin-bottom:5px;font-size:12px;height:20px;line-height:20px;font-weight:700;transition:all .15s ease-out .1s}.widget .instagram-placeholder .date{text-align:center;margin-bottom:5px;font-size:11px;height:15px;line-height:20px;font-weight:400!important}.instagram-placeholder .heart-comments-wrap ul{height:20px;margin:10px 0 0!important}.widgets .instagram-placeholder .heart-comments-wrap ul{height:15px;margin:6px 0 0!important}.heart-comments-wrap li{display:inline-block;margin:10px 0 0 .5em!important;padding:0 0 0 16px!important;line-height:10px!important;font-size:12px!important;font-weight:400!important;transition:all .15s ease-out .1s}.instagram-placeholder .fts-backg,.slicker-instagram-placeholder .slicker-date{-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}.widget .instagram-placeholder .heart-comments-wrap li{display:inline-block;margin:6px 0 5px 2px!important;pointer-events:none;padding:0 0 0 15px!important;line-height:10px!important;font-size:11px!important;border:none!important}.widget .instagram-placeholder .heart-comments-wrap .instagram-image-likes{margin-right:4px!important}.instagram-placeholder .fts-backg,.widget .instagram-placeholder .fts-backg{z-index:0;left:0;width:100%;margin:-5px;padding:5px;background:#fff;position:absolute}.instagram-placeholder .fts-backg{top:25px;height:150px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1);transition:all .15s ease-out .1s}.widget .instagram-placeholder .fts-backg{top:20px;height:100px;font-size:11px}.widget .date{font-size:11px}.instagram-placeholder:hover .fts-backg{margin:-28px -12px;padding:8px 12px;height:193px;-webkit-transition-delay:0;-moz-transition-delay:0;-o-transition-delay:0;transition-delay:0;-webkit-transition-duration:.1s;-moz-transition-duration:.1s;-o-transition-duration:.1s;transition-duration:.1s;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.2);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.2)}.widget .instagram-placeholder:hover .fts-backg{margin:-22px -10px;padding:5px 10px;height:135px}.instagram-image-likes{background:url(../images/hearts-instagram.jpg) no-repeat}.instagram-image-comments{background:url(../images/comments-instagram.jpg) no-repeat}.instagram-placeholder:hover .date,.instagram-placeholder:hover .instagram-image-comments,.instagram-placeholder:hover .instagram-image-likes{opacity:1;z-index:1;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;-o-transition-delay:.1s;transition-delay:.1s}.slicker-instagram-placeholder li,.slicker-instagram-placeholder ul{padding:0!important;margin:0!important;line-height:1.3em!important;border:none!important;width:auto!important;overflow:visible!important}.slicker-heart-comments-wrap{position:absolute;z-index:500;bottom:10px;right:12px}.slicker-instagram-placeholder p{margin:0;padding:0}.slicker-instagram-placeholder,.slicker-youtube-placeholder{position:relative;z-index:0;display:inline-block;overflow:hidden;background-size:cover;background-position:center center;background-repeat:no-repeat;vertical-align:top}.slicker-instagram-image{line-height:0!important;position:relative;z-index:1;background-color:#000;display:block}.slicker-instagram-image img{line-height:normal!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important;-webkit-box-shadow:0 0 0 rgba(0,0,0,.175)!important;-moz-box-shadow:0 0 0 rgba(0,0,0,.175)!important;box-shadow:0 0 0 rgba(0,0,0,.175)!important;margin:0!important;padding:0!important;border:none!important;width:100%}.slicker-instaG-photoshadow{bottom:0;left:0;position:absolute;right:0;top:0;z-index:1;-webkit-transition:background-color .05s ease-out;-moz-transition:background-color .05s ease-out;-o-transition:background-color .05s ease-out;transition:background-color .05s ease-out;vertical-align:middle}.slicker-instagram-placeholder:hover .slicker-instaG-photoshadow{background-color:rgba(0,0,0,.7);-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;border:1px solid rgba(0,0,0,.12)}a.slicker-instaG-backg-link{position:relative;display:block}.slicker-instagram-placeholder .fts-share-wrap,.slicker-instagram-placeholder .slicker-date{margin-bottom:5px;font-size:13px;line-height:20px;font-weight:400;position:absolute;transition:all .15s ease-out .1s;height:20px;color:#fff;opacity:0;text-align:center}.slicker-instagram-placeholder .fts-share-wrap{bottom:-10px;left:4px;z-index:50000000}.slicker-instagram-placeholder .slicker-date{top:10px;left:15px;z-index:500;pointer-events:none}.slicker-instagram-placeholder .slicker-heart-comments-wrap ul{height:20px;margin:10px 0 0!important}.fts-mashup-count-wrap .slicker-heart-comments-wrap li,.slicker-instagram-placeholder .slicker-heart-comments-wrap li{display:inline-block;margin:0!important;pointer-events:none;padding:0 0 0 10px!important;line-height:10px!important;font-size:12px!important;font-weight:400!important;color:#fff;text-align:center;position:relative;z-index:1;opacity:0;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}body .fts-mashup-count-wrap li{opacity:1!important}.fts-mashup .fts-jal-fb-see-more,.fts-mashup .fts-single-pin-like-count,.fts-mashup .fts-single-pin-repin-count,.fts-mashup a.ft-gallery-link-popup,body .fts-mashup-count-wrap a,body .fts-mashup-count-wrap li{color:#777!important}a.fts-slicker-backg{height:68px;width:68px;line-height:68px;font-size:68px;top:0;bottom:0;left:0;right:0;margin:auto;z-index:700;position:absolute;text-align:center;vertical-align:middle;opacity:0;color:rgba(255,255,255,.27)}.slicker-instagram-placeholder .fts-instagram-icon:before{content:"\f16d";font-size:100%;display:inline-block;-webkit-transition:all 1s ease-out 0;-moz-transition:all 1s ease-out 0;-o-transition:all 1s ease-out 0}.slicker-instagram-placeholder a.fts-slicker-backg:hover{opacity:1;color:rgba(255,255,255,.55);-webkit-transition:all 0 ease-out 0;-moz-transition:all 0 ease-out 0;-o-transition:all 0 ease-out 0}.slicker-instagram-image-likes:before{content:"\f004";margin-right:5px}.fts-slicker-instagram{margin:auto;text-align:center}.instagram-placeholder:hover .fts-see-on-instagram,.slicker-instagram-placeholder:hover .fts-see-on-instagram,.slicker-instagram-placeholder:hover .fts-share-wrap,.slicker-instagram-placeholder:hover .fts-slicker-backg,.slicker-instagram-placeholder:hover .slicker-date,.slicker-instagram-placeholder:hover .slicker-instagram-image-comments,.slicker-instagram-placeholder:hover .slicker-instagram-image-likes{opacity:1;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;-o-transition-delay:.1s;transition-delay:.1s}.fts-comment-instagram:before{font-family:FontAwesomeSlick!important;content:"\f075"!important;-webkit-font-smoothing:antialiased;margin-right:5px;font-size:13px!important;display:inline-block;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:FlipH;position:relative;top:-1px;right:-4px}.fts-see-on-instagram div:before,.fts-view-on-instagram-link:before{content:"\f138 ";font-family:FontAwesomeSlick}.fts-see-on-instagram{position:absolute;bottom:11px;right:12px;opacity:0;z-index:750;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}.widget .instagram-placeholder .fts-see-on-instagram{position:absolute;top:19px;right:6px;z-index:750;display:none}.instagram-placeholder .fts-see-on-instagram{position:absolute;bottom:2px;right:6px;opacity:0;z-index:750}.fts-see-on-instagram div{display:inline-block;cursor:pointer;font-weight:400!important}.instagram-placeholder .fts-see-on-instagram div{display:block;cursor:pointer;font-weight:400!important}.widget .instagram-placeholder .fts-see-on-instagram div:before{color:#fff;font-size:14px}.instagram-placeholder .fts-see-on-instagram div:before{color:#888;font-size:13px}.slicker-instagram-placeholder .fts-see-on-instagram div:before{color:#fff;font-size:14px}.fts-see-on-instagram div:before{display:inline-block}.fts-view-on-instagram-link:before{display:inline-block;margin-right:6px}.fts-instagram-caption{display:none}.fts-instagram-fade .mfp-title p{color:#fff!important;margin:0 0 10px!important;padding:0!important}.fts-instagram-fade .mfp-title a{color:#fff;text-decoration:none!important}.fts-instagram-fade .mfp-title a:hover{color:#eee}.instagram-social-btn-bottom,.instagram-social-btn-top{text-align:center;font-size:14px!important;background:#517fa4;border-radius:4px;width:167px;color:#fff;line-height:15px;padding:7px 0!important}.instagram-social-btn-top{margin:0 auto 15px}.instagram-social-btn-bottom{margin:15px auto 0}.instagram-social-btn-bottom:hover,.instagram-social-btn-top:hover{opacity:.9}#fts-social-bar-icons-wrap .instagram-social-btn-bottom a,#fts-social-bar-icons-wrap .instagram-social-btn-top a{color:#fff!important;font-weight:100!important;display:inline-block;text-decoration:none!important}#fts-social-bar-icons-wrap .instagram-social-btn-top a:hover{color:#fff!important}.instagram-social-btn-bottom a,.instagram-social-btn-top a{color:#fff!important;font-weight:100!important;display:inline-block;text-decoration:none!important}.instagram-social-btn-bottom a:hover,.instagram-social-btn-top a:hover{color:#fff;font-weight:100!important}.instagram-social-btn-bottom:before,.instagram-social-btn-top:before{font-family:FontAwesomeSlick;content:"\f16d ";display:inline-block;margin-right:6px;font-size:16px!important;-webkit-font-smoothing:antialiased}.fts-pinterest-boards-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fts-fb-slideshow,.fts-fb-slideshow *,.fts-yt-videolist *{box-sizing:border-box}.fts-pinterest-wrapper{text-align:center;margin:auto;position:relative}a.fts-pin-board-wrap:link{text-decoration:none!important;border-bottom:0}a.fts-pin-board-wrap{border-radius:10px!important;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;-moz-box-shadow:0 1px 3px 0 rgba(0,0,0,.33);display:inline-block;text-decoration:none;padding:10px 9px 10px 10px;margin:8px 8px 0;text-align:left}a.fts-pin-board-wrap:hover{background:#fff;border-radius:10px}.fts-pin-board-wrap .label,.fts-single-pin-description a,.fts-single-pin-pinned-to-wrap{text-decoration:none!important}h3.fts-pin-board-board_title,h3.fts-pin-board-board_title span{-webkit-font-smoothing:antialiased!important;display:block!important}.fts-pin-board-wrap:hover .hoverMask,.pinterest-single-thumb-wrap:hover .hoverMask{background:rgba(255,255,255,.1)}h3.fts-pin-board-board_title{width:210px;color:#555!important;font-size:16px!important;font-weight:700!important;margin:7px 0 5px 7px!important;padding:0!important;position:relative!important;font-family:"Helvetica Neue",arial,sans-serif!important;line-height:15px!important;clear:both}div.fts-pin-board-img-wrap,div.pinterest-single-thumb-wrap{background-size:cover;background-position:center center;background-repeat:no-repeat;position:relative;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px}h3.fts-pin-board-board_title span{white-space:nowrap!important;overflow:hidden!important;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;text-transform:capitalize}a.fts-pin-board-wrap{-webkit-border-radius:0;overflow:hidden}div.fts-pin-board-img-wrap{vertical-align:top;border-radius:10px 10px 0 0!important;overflow:hidden;clear:both;height:115px;-moz-box-shadow:0 0 3px rgba(0,0,0,.33) inset}.fts-pin-board-thumbs-wrap div:last-child{margin-right:0;border-bottom-right-radius:10px!important;border-bottom-left-radius:0!important}.fts-pin-board-wrap{max-width:254px;width:100%}.fts-pin-board-thumbs-wrap{min-height:50px}div.pinterest-single-thumb-wrap{margin-right:2px;margin-top:2px;height:108px!important;border-bottom-left-radius:10px!important;width:49.58%;display:inline-block}.fts-pin-board-img-wrap .hoverMask,.pinterest-single-thumb-wrap .hoverMask{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.33) inset;-moz-box-shadow:0 0 3px rgba(0,0,0,.33) inset;box-shadow:0 0 3px rgba(0,0,0,.33) inset;bottom:0;left:0;position:absolute;right:0;top:0}.fts-pin-board-wrap .fts-pin-board-pin-count{-webkit-font-smoothing:antialiased;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:inset 0 0 5px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:inset 0 0 5px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.3);box-shadow:inset 0 0 5px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.3);text-shadow:0 -1px 0 rgba(0,0,0,.7);background-color:#000;background-color:rgba(68,68,68,.7);bottom:3px;color:#fff;padding:0 6px;position:absolute;left:3px;font-family:"Helvetica Neue",arial,sans-serif!important;font-size:12px!important;font-weight:700;line-height:21px}.fts-pin-board-pin-count:before{content:'';width:7px;height:9px;background:url(../images/pinterest-icons.png) -137px -87px no-repeat;display:inline-block;margin-right:3px}.fts-pin-board-wrap .label{font-weight:700;text-align:left!important;line-height:1.1em!important;white-space:nowrap;display:inline-block;position:relative;margin-bottom:inherit;padding:0!important;font-size:.7875rem;background:0 0!important;color:#fff}.widget .fts-pin-board-thumbs-wrap,.widget h3.fts-pin-board-board_title{display:none!important}.widget div.fts-pin-board-img-wrap{position:relative;overflow:hidden;clear:both;min-height:100px;height:auto;width:auto;border-radius:10px!important}.widget a.fts-pin-board-wrap{width:40%;padding:6px;margin:4px 4px 0!important;border-radius:1px!important}.widget div.fts-pin-board-img-wrap{-webkit-box-shadow:0 0 1px rgba(0,0,0,.11) inset!important;-moz-box-shadow:0 0 1px rgba(0,0,0,.11) inset;box-shadow:0 0 0 transparent inset!important;margin-bottom:0}.pinterest-single-thumb-wrap .hoverMask,.widget .fts-pin-board-img-wrap .hoverMask{-webkit-box-shadow:0 0 0 rgba(0,0,0,.33) inset;-moz-box-shadow:0 0 0 rgba(0,0,0,.33) inset;box-shadow:0 0 0 rgba(0,0,0,.33) inset}.fts-single-pin-wrap{background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.22);box-shadow:0 1px 2px 0 rgba(0,0,0,.22);border-radius:6px;width:236px!important;margin:14px 7px 0;border:none!important;text-align:left;overflow:hidden}.fts-single-pin-description{margin:10px 15px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;font-size:13px;line-height:17px;word-wrap:break-word}.fts-single-pin-img-wrap img{-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border-top-left-radius:6px;border-top-right-radius:6px;max-width:100%}.fts-single-pin-social-meta-wrap{font-family:Helvetica,sans-serif;font-size:11px;color:#999;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;margin:-13px 10px 7px 15px}.fts-single-pin-social-meta-wrap .fts-single-pin-repin-count{margin:10px 12px 0 0;display:inline-block;font-size:13px}.fts-single-pin-social-meta-wrap .fts-single-pin-repin-count:before{font-family:FontAwesomeSlick;margin-right:5px;font-size:12px!important;content:"\f08d"}.fts-single-pin-social-meta-wrap .fts-single-pin-like-count{font-size:13px!important}.fts-single-pin-social-meta-wrap .fts-single-pin-like-count:before{font-family:FontAwesomeSlick;content:"\f086"!important;margin-right:5px;font-size:13px!important}.fts-single-pin-pinned-to-title,.fts-single-pin-pinned-to-wrap{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:block;overflow:hidden}.fts-single-pin-pinned-to-wrap{line-height:15px;padding:10px;border-radius:0 0 6px 6px;border:none!important;border-top:1px solid #e7e7e7!important}.fts-single-pin-pinned-to-wrap:hover{background:#eee;cursor:pointer}.fts-single-pin-pinned-to-wrap div{color:#999;display:block;font-weight:700;font-size:11px;font-family:Helvetica,sans-serif}.fts-single-pin-pinned-to-text{color:#999}div.fts-single-pin-pinned-to-title{color:#717171}.fts-single-pin-pinned-to-wrap img{position:relative;border-radius:2px;height:30px;margin-right:5px;width:30px;float:left}.fts-single-pin-pinned-to-title{border-radius:0 0 6px 6px}.fts-single-attribution-wrap{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;font-family:Helvetica,sans-serif;color:#666;margin:-2px 0 5px 15px!important;font-size:11px;display:block;border:none!important;line-height:1.6471}.fts-yt-vids-in-row1 .fts-yt-videolist ul li:first-child,.fts-yt-vids-in-row1 li .entriestitle{display:none}.fts-yt-vids-in-row3 li .entriestitle,.fts-yt-vids-in-row4 li .entriestitle{font-size:85%!important;line-height:100%!important}.fts-single-attribution-wrap img{height:16px;margin-right:5px;position:relative;width:16px;float:left}.pinterest-social-btn-top{margin-bottom:0;text-align:center}.widget .pinterest-social-btn-top{margin-bottom:5px;text-align:center}.pinterest-social-btn-bottom{margin-top:5px;text-align:center}.fts-yt-videolist iframe{width:100%}.fts-yt-vids-in-row1 div.fts-yt-videolist p{padding-bottom:25px;clear:both}.fts-yt-first-video p{margin:10px 10px 25px!important}.fts-yt-videolist ul,.fts-yt-vids-in-row1 ul li{margin:0!important;padding:0!important}#secondary .front-widgets .fts-yt-large iframe{height:100%!important;max-height:300px!important;min-height:300px!important}.widget .fts-yt-videolist ul li{margin-bottom:0!important;list-style:none!important}.fts-yt-videolist ul{width:100%!important}.fts-yt-videolist ul li{list-style:none!important}.fts-yt-vids-in-row1 li{width:100%!important;margin-bottom:5%}.fts-yt-vids-in-row2 li,.fts-yt-vids-in-row3 li,.fts-yt-vids-in-row4 li{float:left;border:none;position:relative;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;padding:1%!important;margin:0!important}.fts-yt-vids-in-row1 li iframe{width:100%}.fts-yt-vids-in-row2 li{width:50%!important}.fts-yt-vids-in-row3 li{width:33.3%!important}.fts-yt-vids-in-row4 li{width:25%!important}.fts-yt-vids-in-row2 li .entriestitle,.fts-yt-vids-in-row3 li .entriestitle,.fts-yt-vids-in-row4 li .entriestitle{padding:0 5px;position:absolute;left:0;top:20%;opacity:0;width:87.5%;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fts-yt-vids-in-row2 li:hover .entriestitle,.fts-yt-vids-in-row3 li:hover .entriestitle,.fts-yt-vids-in-row4 li:hover .entriestitle{background:#000;border-radius:0;color:#fff;padding:5% 6%;opacity:.9;z-index:100;right:0;line-height:18px;font-size:90%;font-weight:700;box-shadow:0 4px 8px #333;display:block}.fts-yt-vids-in-row2 li:hover,.fts-yt-vids-in-row3 li:hover,.fts-yt-vids-in-row4 li:hover{background-color:rgba(0,0,0,.9);box-shadow:0 1px 10px #333;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-yt-overlay-wrap{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;z-index:-1!important;background-color:rgba(0,0,0,.75);text-align:center;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;transition:opacity .2s ease-out;pointer-events:none;box-shadow:0 2px 500px #000}body .fts-yt-overlay-wrap.fts-yt-target{display:block;opacity:1;z-index:9999999!important;-webkit-transition:opacity .5s ease-in;-moz-transition:opacity .5 ss ease-in;transition:opacity .5s ease-in;pointer-events:auto}.fts-fb-video-icon,.fts-watermark-inside{pointer-events:none}.fts-yt-overlay{max-width:775px;opacity:1;z-index:300;position:absolute;top:0;bottom:0;right:0;left:0;max-height:472px;padding:10px;background:#444;margin:auto!important;box-shadow:0 2px 200px #000}.fts-yt-overlay-wrap iframe{margin:0;min-height:343px;background:#000!important;margin-bottom:0!important}.fts-yt-popup-close{display:block;position:absolute;top:-19px;right:0;background:#444;color:#fff!important;text-decoration:none;font-size:85%;font-family:verdana;font-weight:400;padding:.5% 2.5% 0;line-height:20px}.widget .fts-yt-first-video p{font-size:12px!important;margin-bottom:10px!important;margin-top:5px}.widget .fts-yt-videolist li{margin:0!important;line-height:0!important}.widget .fts-yt-videolist ul{padding-bottom:15px!important;float:left}.fts-yt-vids-in-row1 ul li iframe{margin-bottom:12px!important}@media only screen and (max-width:775px){.fts-yt-overlay{background:0 0;box-shadow:0 0 0 #000}.fts-yt-popup-close{background:0 0}}.widget .fts-yt-large .fts-yt-first-video iframe,.widget .fts-yt-vids-in-row1 li iframe{width:100%;height:0!important;min-height:100%!important;max-height:160px!important;padding:0}.fts-fluid-videoWrapper{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.fts-fluid-videoWrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;min-height:100%;background:#000;border:none}.fts-fluid-videoWrapper video{background:#000}.fts-jal-fb-vid-wrap{margin-top:10px;border-radius:0;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-jal-fb-vid-wrap iframe,.widget .fts-jal-fb-vid-wrap iframe{width:100%;margin:0!important;padding:0!important}.fts-vine-thumbnail .fts-vine-logo:before,.fts-vine-thumbnail-cover,.popup-video-gallery-fb span.fts-fb-video-icon:before{-webkit-transition:all .5s ease-out 0;-moz-transition:all .5s ease-out 0;-o-transition:all .5s ease-out 0;-webkit-font-smoothing:antialiased}.widget .fts-jal-fb-vid-wrap iframe{height:50%}.fts-yt-first-video h2{margin:0 0 7px!important}.youtube-social-btn-top{margin:0 0 5px!important}.youtube-social-btn-bottom{padding:10px 0 0 6px;clear:both}@keyframes fade{from,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes fade{from,to{opacity:1}50%{opacity:.5}}.fts-vine-wrapper{text-align:center}.fts-vine-video-wrap{text-align:left;display:inline-block;max-width:290px;vertical-align:top}.fts-vine-video-wrap a.fts-vine-author{display:block;margin:5px 0 0;padding:0}.fts-vine-white-popup .mfp-close{margin-top:-40px;font-size:35px;margin-right:-10px;color:#fff!important}.fts-vine-white-popup{position:relative;background:#fff;padding:20px;width:auto;max-width:640px;margin:30px auto}.fts-iframe-vine{padding-top:262px}.fts-vine-author{font-size:18px;line-height:24px}.fts-vine-text{font-size:13px;line-height:18px;padding:0 15px 15px 0}.fts-vine-thumbnail{display:block;position:relative;background:0 0!important}.fts-vine-thumbnail-cover{position:absolute;z-index:100;left:0;top:0;width:100%;height:100%;opacity:0;display:inline-block;cursor:pointer}.fts-vine-logo{font-size:27px}.fts-vine-thumbnail .fts-vine-logo:before,.popup-video-gallery-fb span.fts-fb-video-icon:before{font-family:FontAwesomeSlick;font-size:100%}.fts-vine-thumbnail .fts-vine-logo:before{content:"\f1ca"!important;display:inline-block;position:absolute;z-index:200;right:12px;top:5px;line-height:1.5;color:#00bf8f}.fts-vine-thumbnail-cover:hover{opacity:.3;background:#000}.fts-vine-thumbnail:hover .fts-vine-logo:before{color:#fff;text-shadow:2px 1px #555;-webkit-animation:wiggle .5s ease;animation:wiggle .5s ease}@-webkit-keyframes wiggle{0%,100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}60%{-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}80%{-webkit-transform:rotate(30deg);transform:rotate(30deg)}}@keyframes wiggle{0%,100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}60%{-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}80%{-webkit-transform:rotate(30deg);transform:rotate(30deg)}}@media only screen and (max-device-width:736px){.fts-iframe-vine{padding-bottom:14%!important}.fts-vine-white-popup{padding:0}}.post-5593 .entry-content{text-align:center}.fts-fb-video-popup{position:relative;background:0 0;padding:20px 60px;width:auto;max-width:1400px;margin:30px auto}.fts-fb-video-popup .mfp-close{color:#fff!important;right:47px!important;top:-19px!important}@media only screen and (min-device-width:375px) and (max-device-width:667px){.fts-fb-video-popup{padding:20px!important}.fts-fb-video-popup .mfp-close{right:5px!important}}@media only screen and (min-device-width:414px) and (max-device-width:736px){.fts-fb-video-popup{padding:20px!important}.fts-fb-video-popup .mfp-close{right:5px!important}}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.fts-fb-video-popup video{min-height:400px}.fts-fb-video-popup{padding:10px!important}.fts-fb-video-popup .mfp-close{right:-2px!important;top:-25px!important}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape){.fts-fb-video-popup video{min-height:600px}}.fts-view-fb-videos-largeeee:before{content:"";display:inline-block;margin-right:6px;-webkit-font-smoothing:antialiased;background:url(../images/fb-play-btn.png);height:80px;width:80px}.fts-fb-photo-post-wrap:hover a.fts-slicker-backg{opacity:1;outline:0!important;color:#fff}.popup-video-gallery-fb span.fts-fb-video-icon:before{content:"\f144"!important;display:inline-block!important;opacity:.5!important;color:#fff;outline:0!important}.popup-video-gallery-fb span.fts-fb-video-icon:hover:before{opacity:.8!important;color:#fff}.popup-video-gallery-fb a.visible-video-button{opacity:9!important;outline:0!important;z-index:1500}.popup-video-gallery-fb .fts-fb-load-more{max-width:340px;margin:20px auto}.fts-fb-social-btn-center,.popup-video-gallery-align-center{text-align:center;font-size:0}.fts-fb-social-btn-right,.popup-video-gallery-align-right{text-align:right}.fts-fb-social-btn-left,.popup-video-gallery-align-left{text-align:left}.cycle-slideshow .fts-jal-fb-picture{max-width:100%!important}.popup-video-gallery-fb .fts-fb-photo-post-wrap{vertical-align:top!important;display:inline-block!important;float:none;text-align:left;border-radius:0;max-width:100%;max-height:100%;box-sizing:border-box}.popup-video-gallery-fb .fts-fb-photo-post-wrap .fts-jal-fb-user-name{padding-top:0!important}.fts-review-star,.fts-reviews-star{background:#4791ff;color:#fff;font-weight:400;padding:2px 12px;border-radius:15px;border:none!important}.fts-review-details-master-wrap .fts-review-star{background:#4791ff;color:#fff;font-weight:400;padding:11px 12px 9px 17px;border-radius:30px;margin:0 12px 0 0;font-size:20px;float:left;vertical-align:top;line-height:22px}.fts-review-star{font-size:13px;font-style:normal;white-space:nowrap}.fts-review-star a{background:#4791ff;color:#fff}.fts-reviews-feed .fts-jal-fb-post-time{padding-top:10px!important}.fts-review-star:after{content:"";font-size:14px}.fts-reviews-feed .fts-jal-fb-message{margin-top:5px}.fts-reviews-feed .fts-jal-fb-user-name{margin-top:0;font-size:14px}.fts-jal-fb-vid-picture .fts-fluid-videoWrapper-html5{display:none}.fts-fluid-videoWrapper .fluid-width-video-wrapper{position:initial}.fts-jal-fb-user-thumb img{width:50px;max-width:100%}.fts-jal-fb-description p{line-height:17px!important;white-space:normal!important}.fts-checked-in-text-link{display:inline-block;padding-bottom:0}.fts-checked-in-img{float:left;margin-right:10px;max-width:160px}.fts-checked-in-get-directions{margin-top:5px}.fts-instagram-fade .mfp-title,.fts-instagram-fade .mfp-title a{font-size:13px}.fts-fluid-videoWrapper-html5{margin-top:10px;width:100%}.fts-fb-slideshow.slideshow .fts-fb-photo-post-wrap{position:relative!important;float:none;display:inline-block}.fts-fb-slideshow{width:100%;padding:0;overflow:hidden}.fts-fb-slideshow>a{position:absolute;top:0;left:0;width:100%;padding:0;background-color:#222;display:block}.fts-fb-slideshow>a>img{width:100%;position:static;display:block}.fts-fb-slideshow>div{position:absolute;top:0;left:0;padding:0}.composite-example>div{background:#fff}.composite-example>div>img{display:block}.composite-example>div .cycle-overlay{color:#fff;background:#000;opacity:.6;position:absolute;bottom:0;width:100%;padding:0}.fts-slider-center{text-align:center;padding:2px 0;background:#171717;position:relative;display:block;min-height:35px;font-size:15px;line-height:30px}.fts-slider-center span{display:inline-block;position:absolute;-webkit-text-size-adjust:none}.fts-cycle-slide p{margin:0;padding:0}.fts-prevControl-icon:before{content:'\f0a8';font-family:FontAwesomeSlick!important;font-size:24px}.fts-custom-caption{text-align:center;position:absolute;width:100%;left:0;top:2px;font-size:13px!important;line-height:30px;font-weight:700;z-index:0;letter-spacing:1px}.fts-nextControl-icon:before{font-size:24px;content:'\f0a9';font-family:FontAwesomeSlick!important}.fts-prevControl-icon{left:8px;z-index:1;cursor:pointer}.fts-nextControl-icon{right:7px;z-index:1;cursor:pointer}.fts-nextControl-icon:hover,.fts-prevControl-icon:hover{opacity:.8!important}.fb-social-btn-top{width:100%!important;overflow:hidden}.fts-instagram-fade.mfp-ready .mfp-figure{opacity:1!important}.page-id-6026 #main-header{display:none}.page-id-6026 #page-container{padding-top:0!important}.page-id-6026 .container{margin:0 auto!important;max-width:100%!important;width:100%!important}.fts-slider-icons-center{display:block;line-height:30px}.fts-pager-option{top:10px;position:relative}.fts-pager-option-top{bottom:0;position:relative;top:5px}.fts-pager-option,.fts-pager-option-top{text-align:center;width:100%;z-index:500;display:block}.fts-pager-option span{font-size:47px;width:15px;height:15px;line-height:10px;display:inline-block}.fts-pager-option span.cycle-pager-active,.fts-pager-option span:hover{opacity:.5}.fts-pager-option>*{cursor:pointer}.fts-fb-vid-popup .mfp-iframe-holder .mfp-close,.fts-fb-vid-popup .mfp-inline-holder .mfp-close{top:-50px!important;font-size:54px!important;font-weight:100;font-family:inherit}.fts-facebook-popup.mfp-bg,.fts-vine-vid-popup.mfp-bg{opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}.fts-facebook-popup.mfp-bg.mfp-ready{opacity:.8;z-index:99999990}.fts-facebook-popup.mfp-bg.mfp-removing{opacity:0}.fts-facebook-popup.mfp-wrap .mfp-content{opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}.fts-facebook-popup.mfp-wrap.mfp-ready .mfp-content{opacity:1}.fts-facebook-popup.mfp-wrap.mfp-removing .mfp-content{opacity:0}.fts-facebook-popup .mfp-close{left:0!important;margin-left:4px!important;background:0 0!important;cursor:zoom-out!important;border:none!important;box-shadow:none!important;font-size:27px!important;font-family:'Open Sans',Arial,sans-serif!important;font-weight:600!important;top:-42px!important;opacity:.5!important}.fts-facebook-popup .mfp-close:before{display:none!important}.fts-facebook-popup .mfp-iframe-holder .mfp-content,.fts-facebook-popup .mfp-inline-holder .mfp-content{max-width:1400px}.fts-facebook-popup .mfp-iframe-scaler iframe,.fts-facebook-popup .mfp-iframe-scaler video{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:none!important;background:#000;right:0;margin:auto}.fts-facebook-popup .mfp-title{padding:20px;background:rgba(255,255,255,.11);margin-top:21px}.fts-facebook-popup .fts-popup-wrap{max-width:1400px;margin:0 auto;padding:0;vertical-align:middle;width:100%;position:relative}.fts-facebook-popup .fts-popup-half{width:75%;float:left;background:#000;text-align:center;vertical-align:middle;height:100%;position:relative;z-index:88888888}.fts-facebook-popup .fts-popup-second-half{height:100%;width:25%;position:relative;float:left}.fts-facebook-popup .fts-popup-second-half .mfp-bottom-bar{margin:0;position:absolute!important;top:0;right:0;width:100%;cursor:auto;color:#000;overflow:auto}.fts-facebook-popup .fts-popup-wrap img.mfp-img{width:auto;max-width:100%;display:initial;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;vertical-align:middle}.fts-facebook-popup .fts-popup-wrap .mfp-counter{position:relative;bottom:0;text-align:right;right:10px;color:#c1c1c1!important;font-size:12px;line-height:18px;white-space:nowrap;display:inline-block;float:right;top:initial;margin:5px 0}.fts-facebook-popup .fts-position-helper{display:inline-block;height:100%;vertical-align:middle}.fts-facebook-popup .fts-popup-image-position{min-height:527px;width:100%;background:#000;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none}.fts-facebook-popup .fts-popup-wrap .mfp-title{padding:0;background:rgba(255,255,255,.11);margin:0}.fts-facebook-popup .fts-popup-second-half .mfp-title a{color:#0f6fad;text-decoration:none!important}.fts-youtube-popup .fts-popup-second-half .mfp-title a{color:#0f6fad!important}.fts-facebook-popup .mfp-figure:after{content:'';position:absolute;left:0;top:0;bottom:0;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#fff}.fts-facebook-popup .fts-popup-wrap .mfp-title p,.fts-instagram-caption-content .fts-popup-wrap .mfp-title p{color:#000!important;margin:0 0 10px!important;padding:0!important}.fts-facebook-popup .mfp-image-holder .mfp-content{max-width:1400px;width:100%}.fts-facebook-popup .fts-jal-fb-user-name{font-size:14px;margin-top:20px;padding-left:82px;display:block;padding-right:15px}.fts-facebook-popup .fts-fb-caption,.fts-facebook-popup .fts-non-popup-text,.hide-date-likes-comments-etc{display:none!important}.fts-facebook-popup .fts-jal-fb-post-time{padding-left:82px}.fts-facebook-popup .fts-instagram-caption-content,.fts-facebook-popup .fts-jal-fb-message{padding:10px 20px 0}.fts-facebook-popup .fts-fb-caption a{font-size:13px}.fts-facebook-popup i:before{margin-left:0!important;font-style:normal!important;font-size:15px!important}.fts-facebook-popup .icon-file:before{font-size:15px!important}#fts-photo-next:hover:after,#fts-photo-prev:hover:after,.fts-popup-half:hover #fts-photo-next:after,.fts-popup-half:hover #fts-photo-prev:after{opacity:1!important;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}#fts-photo-next:after,#fts-photo-prev:after{font-family:FontAwesomeSlick;font-size:58px!important;font-weight:100;opacity:0;color:#fff;border:none!important;margin-top:-20px!important}#fts-photo-next:after{content:"\f105"}#fts-photo-prev:after{content:"\f104"}.fts-facebook-popup .mfp-arrow{background:0 0!important;width:48px!important;height:28px!important;line-height:normal!important;margin:-32px 0!important}.fts-facebook-popup .mfp-arrow:after{margin:0!important;top:0!important;border:none!important;width:48px!important;height:24px!important}.twitter-followers-fts.fts-tweets-first,.twitter-followers-fts:hover{border-bottom:4px solid #1b95e0!important}.fts-facebook-popup .mfp-arrow-left{left:5px!important}.fts-facebook-popup .mfp-arrow-right{right:5px!important}.fts-facebook-popup .fts-jal-fb-description.fts-jal-fb-description-popup,.fts-facebook-popup .hide-date-likes-comments-etc{display:inline-block!important}.fts-facebook-popup .mfp-arrow:before,.fts-iframe-popup-element,.fts-video-popup-element{display:none}.fts-jal-fb-description-popup{color:#444}.fts-facebook-popup .fts-jal-fb-description-wrap{max-height:300px;overflow:auto;max-width:100%;padding-left:20px!important;width:100%}.fts-facebook-popup *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}body .fts-facebook-popup a.fts-powered-by-text{margin:2px 20px!important;text-align:left!important;float:left!important;font-size:12px;color:#c1c1c1!important;width:auto!important;font-weight:400!important;line-height:18px!important}.fts-powered-by-text-popup a.fts-powered-by-text{display:block!important}.fts-facebook-popup .mfp-iframe-holder .mfp-bottom-bar,.fts-facebook-popup .mfp-inline-holder .mfp-bottom-bar{overflow:auto}.fts-fb-comments-content{float:left;width:100%;max-width:100%;background:#f6f7f9;padding:0 20px 20px}.fts-facebook-popup .fts-fb-location-title{font-size:15px;display:block;padding:0;font-weight:700;font-style:normal;margin:12px 0 0;color:#333}.ft-gallery-share-wrap .fa,.fts-share-wrap i{font-style:normal!important}.fts-facebook-popup .fts-instagram-caption-content,.fts-facebook-popup .fts-jal-fb-message{clear:both;font-size:15px;color:#333}.fts-facebook-popup .fts-fb-get-directions{font-size:15px;display:inline-block;padding:0 0 20px;color:#4595f0!important}.fts-facebook-popup .fts-fb-ticket-info{color:#4595f0!important}.fts-event-title-wrap{font-size:24px;line-height:24px}.fts-fb-comments-wrap{display:none!important}.fts-fb-comment{clear:both;float:left;width:100%;color:#222;margin:0;padding:15px 0 0;font-size:13px}.fts-fb-comment-user-pic{float:left;width:32px;height:32px;margin:0;border-radius:50px}.fts-fb-comment-msg{padding-left:42px;font-size:12px}.fts-fb-comment-user-name{font-weight:700;display:inline-block;font-size:12px}@media all and (max-width:900px){.fts-facebook-styles-popup .fts-popup-half,.fts-facebook-styles-popup .fts-popup-second-half{height:100%;width:100%;position:relative;float:none}.fts-facebook-styles-popup .fts-popup-half{background:#000;text-align:center;vertical-align:middle;z-index:500}.fts-facebook-styles-popup .mfp-bottom-bar{background:#fff;padding-bottom:10px}.fts-facebook-styles-popup .mfp-iframe-holder .mfp-content,.fts-facebook-styles-popup .mfp-inline-holder .mfp-content{top:0}.fts-facebook-styles-popup .mfp-iframe-holder .fts-popup-image-position,.fts-facebook-styles-popup .mfp-inline-holder .fts-popup-image-position{height:auto!important}.fts-facebook-styles-popup .mfp-container{padding-top:40px;padding-bottom:0}.fts-facebook-styles-popup .mfp-container:before{display:none}.fts-popup-image-position{min-height:50px!important}.fts-facebook-styles-popup .fts-popup-second-half .mfp-bottom-bar{height:auto!important;overflow:visible!important}}@media all and (max-width:640px){.fts-instagram-styles-popup .fts-popup-half,.fts-instagram-styles-popup .fts-popup-second-half{height:100%;width:100%!important;position:relative;float:none}.fts-instagram-styles-popup .fts-popup-half{background:#fff;text-align:center;vertical-align:middle;z-index:500}.fts-instagram-styles-popup .mfp-bottom-bar{background:#fff;padding-bottom:10px}.fts-instagram-styles-popup .mfp-iframe-holder .mfp-content,.fts-instagram-styles-popup .mfp-inline-holder .mfp-content{top:0}.fts-instagram-styles-popup .mfp-iframe-holder .fts-popup-image-position{height:auto!important}.fts-instagram-styles-popup .mfp-container{padding-top:40px;padding-bottom:0}.fts-instagram-styles-popup .mfp-container:before{display:none}.fts-popup-image-position{min-height:50px!important}.fts-instagram-styles-popup .fts-popup-second-half .mfp-bottom-bar{height:auto!important;overflow:visible!important}}@media all and (min-width:1900px){.fts-facebook-popup .fts-popup-second-half.fts-instagram-popup-second-half{float:left!important}.fts-facebook-popup .fts-popup-second-half{height:100%;width:100%;position:relative;float:left}.fts-facebook-popup .fts-popup-half{background:#000;text-align:center;vertical-align:middle;z-index:500;width:100%}.fts-facebook-popup .mfp-bottom-bar{background:#fff;padding-bottom:10px}.fts-facebook-popup .mfp-iframe-holder .mfp-content,.fts-facebook-popup .mfp-inline-holder .mfp-content{top:0}.fts-facebook-popup .mfp-iframe-holder .fts-popup-image-position,.fts-facebook-popup .mfp-inline-holder .fts-popup-image-position{height:auto!important}.fts-facebook-popup .mfp-container{padding-top:40px;padding-bottom:0}.fts-facebook-popup .mfp-container:before{display:none}.fts-popup-image-position{min-height:50px!important}.fts-facebook-popup .fts-popup-second-half .mfp-bottom-bar{height:auto!important;overflow:visible!important;min-height:auto!important}}.fts-twitter-backg-image,.fts-twitter-backg-image img{margin:0!important;padding:0!important;position:relative;z-index:99}.fts-instagram .image-overlay,.fts-instagram .image-overlay-inside,.fts-instagram .image-overlay.overlay-type-extern,.fts-jal-fb-group-display .image-overlay-inside,.fts-jal-single-fb-post .image-overlay,.fts-jal-single-fb-post .image-overlay-inside,.fts-jal-single-fb-post .image-overlay.overlay-type-extern,.fts-mashup .image-overlay,.fts-mashup .image-overlay.overlay-type-extern,.fts-pinterest-wrapper .image-overlay,.fts-pinterest-wrapper .image-overlay-inside,.fts-pinterest-wrapper .image-overlay.overlay-type-extern,.fts-profile-pic a .image-overlay,.fts-profile-pic a .image-overlay-inside,.fts-profile-pic a .image-overlay.overlay-type-extern,.fts-slicker-facebook-photos .image-overlay,.fts-slicker-facebook-photos .image-overlay-inside,.fts-slicker-facebook-photos .image-overlay.overlay-type-extern,.fts-tweeter-wrap .image-overlay,.fts-tweeter-wrap .image-overlay-inside,.fts-tweeter-wrap .image-overlay.overlay-type-extern,.fts-vine-content .image-overlay,.fts-vine-content .image-overlay-inside,.fts-vine-content .image-overlay.overlay-type-extern,.fts-yt-videolist .image-overlay,.fts-yt-videolist .image-overlay-inside,.fts-yt-videolist .image-overlay.overlay-type-extern{display:none!important}.fts-facebook-popup.mfp-ready .mfp-figure{opacity:1}ul.fts-sidebar-menu ul.fts-social-bar-icons-wrap ul li{margin:0!important}.fts-instagram-inline-block-centered{text-align:center;font-size:0;margin:auto}#facebook-sidebar .fts-fb-comments-wrap{display:none}.fts-twitter-backg-image img{display:block!important;width:100%}.fts-twitter-backg-image .twitter-social-btn-top{position:absolute!important;bottom:5px;left:10px;z-index:100}.fts-twitter-followers-wrap{background:#fff;padding:1px 5px 0 0;margin-bottom:10px;text-align:center;color:#1b95e0!important}.twitter-followers-fts{text-align:center;display:inline-block;padding:5px 15px;font-size:18px;font-weight:600!important}.twitter-followers-fts a,.twitter-followers-fts-singular a{font-weight:400!important;letter-spacing:.02em;text-transform:uppercase}.twitter-followers-fts a{display:block;color:#66757f!important;font-size:11px;transition:color .15s ease-in-out}.twitter-followers-fts:hover{transition:border .15s ease-in-out}.fts-tweets-first,.fts-tweets-first a,.twitter-followers-fts:hover a{color:#1b95e0!important}.fts-tweet-others-right{margin-left:65px}.fts-tweet-reply-left{float:left;display:inline-block}.fts-twitter-reply-wrap a{color:rgba(144,147,148,.71)}body .fts-twitter-favorites-wrap:hover{color:#c32525!important}.fts-twitter-favorites-wrap{margin-left:20px}body .fts-twitter-reply-wrap.fts-twitter-full-width{margin-left:0!important;margin-top:0}.twitter-followers-fts-singular{font-size:15px;padding:5px 0 0}.twitter-followers-fts-singular a{color:#66757f!important;font-size:11px}.twitter-social-btn-top a,.twitter-social-btn-top iframe{color:#fff!important}@media (max-width:400px){.twitter-followers-fts{padding:5px 10px;font-size:15px!important;font-weight:500!important}}.fts-twitter-full-name{font-size:14px!important}a.fts-twitter-at-name{font-size:12px!important;color:#999!important;font-weight:400!important}.fts-profile-wrap{clear:both;display:block}.fts-clear{clear:both}.fts-profile-pic{float:left;margin:0 25px 20px 0;max-width:125px}.fts-profile-pic a:hover{opacity:.8}.fts-isnta-full-name{padding:0 0 10px;float:left;margin:4px 20px 0 0}.fts-profile-name-wrap .fts-follow-header-wrap{font-size:14px;display:inline-block;letter-spacing:0;padding:7px 10px;border-radius:4px;border:1px solid #5dba00;line-height:18px}.fts-profile-description{font-size:15px;line-height:22px}.fts-profile-name-wrap{font-size:32px;margin-bottom:18px;letter-spacing:2px;line-height:28px}.fts-profile-pic img{border-radius:50%;max-width:100%}.fts-profile-stats{margin:0 0 5px}.fts-profile-stats span{font-weight:700;display:inline-block}.fts-profile-stats div{font-size:15px;display:inline-block;margin-right:20px;margin-bottom:10px}.fts-profile-wrap{max-width:630px;margin:auto;padding:0 0 20px}.fts-facebook-popup .fts-instagram-caption-content a{color:#003569!important}.fts-facebook-popup a.ft-gallery-link-popup,.fts-facebook-popup a.fts-jal-fb-see-more{font-size:12px;text-align:right;margin-top:15px;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:13px 20px 11px 40px;background:#f6f7f9;display:block!important;width:100%!important}.fts-instagram-popup-profile-wrap{display:none}.fts-facebook-popup.fts-instagram-styles-popup .fts-profile-pic{display:block;padding:15px 10px 0 15px;margin:0}.fts-facebook-popup.fts-instagram-styles-popup .fts-profile-pic img{display:block;width:40px}.fts-facebook-popup.fts-instagram-styles-popup .fts-isnta-full-name{font-size:17px;letter-spacing:normal;color:#333}.fts-facebook-popup.fts-instagram-styles-popup .fts-profile-name-wrap{padding-top:15px}.fts-follow-header-wrap{margin-right:15px;color:#5dba00}.fts-follow-header-wrap a{color:#5dba00!important}.fts-facebook-popup.fts-instagram-styles-popup .fts-insta-date-popup-grab{clear:both;text-align:right;margin:55px 15px -8px!important;color:#999;border-top:1px solid #eee;padding-top:12px;font-size:14px}.fts-facebook-popup.fts-instagram-styles-popup a.fts-view-on-instagram-link{margin:20px 15px 0;padding:10px 0!important;color:#9f9f9f!important}.fts-facebook-popup.fts-instagram-styles-popup .fts-view-on-instagram-link:before{font-size:15px;top:1px;position:relative;margin-left:5px}.fts-facebook-popup.fts-instagram-styles-popup .fts-follow-header-wrap{float:right;margin:0 15px 20px 0;color:#5dba00;font-size:12px}.fts-facebook-popup.fts-instagram-styles-popup .heart-comments-wrap,.fts-facebook-popup.fts-instagram-styles-popup .slicker-heart-comments-wrap{position:relative;color:#444!important;margin:0 0 0 15px!important;font-size:14px;width:auto!important;left:0}.fts-facebook-popup.fts-instagram-styles-popup .heart-comments-wrap li,.fts-facebook-popup.fts-instagram-styles-popup .slicker-heart-comments-wrap li{display:inline-block;margin-right:15px!important;margin-top:-5px!important;opacity:1}.fts-facebook-popup.fts-instagram-styles-popup .fts-comment-instagram:before{font-size:14px}.fts-facebook-popup.fts-instagram-styles-popup .fts-popup-half.fts-instagram-popup-half{width:64%}.fts-facebook-popup.fts-instagram-styles-popup .fts-popup-second-half.fts-instagram-popup-second-half{width:36%}.fts-facebook-popup.fts-instagram-styles-popup .fts-instagram-popup-half .fts-popup-image-position{min-height:auto!important}.fts-facebook-popup.fts-instagram-styles-popup .fts-popup-second-half .mfp-bottom-bar{margin:0;position:absolute!important;top:0;right:0;width:100%;cursor:auto;color:#000;overflow:auto;min-height:200px}.fts-facebook-popup.fts-instagram-styles-popup .mfp-iframe-holder .mfp-content,.fts-facebook-popup.fts-instagram-styles-popup .mfp-image-holder .mfp-content,.fts-facebook-popup.fts-instagram-styles-popup .mfp-inline-holder .mfp-content{max-width:1000px;width:100%}.fts-facebook-popup.fts-instagram-styles-popup .heart-comments-wrap{margin:-18px 0 0 15px!important}.fts-facebook-popup a.fts-view-on-instagram-link{font-size:12px;text-align:left;margin-top:15px;border-top:1px solid #eee;border-bottom:1px solid #eee;color:#555!important;padding:10px 20px;background:#fff;display:block}.fts-mashup-post-wrap{padding:0!important;border-bottom:1px solid rgba(184,184,184,.3);line-height:17px;margin-bottom:10px;position:relative;display:inline-block;width:100%}.fts-mashup-type-name{clear:both;width:100%;display:block;background:#f7f7f7;margin-bottom:10px;box-shadow:1px 1px 0 #ddd}.fts-mashup-type-name span{display:block;padding:0 7px 3px 0;text-align:right;font-size:10px;color:#bfbfbf;line-height:14px}.fts-mashup-count-wrap{width:100%;clear:both;display:block;padding-top:12px;text-align:left;margin-bottom:6px;float:left}.fts-mashup-count-wrap a{display:inline-block;font-size:13px}.fts-mashup-count-wrap .fts-tweet-reply-left{float:none;display:inline-block}.fts-mashup-description-wrap{clear:both;padding-top:5px;line-height:18px}.fts-jal-fb-post-time{margin-bottom:8px}.twitter-video{min-width:200px!important}.fts-mashup .fts-mashup-image-and-video-wrap{margin-top:8px;position:relative;line-height:0}.fts-mashup-count-wrap .slicker-heart-comments-wrap{position:relative;top:inherit;bottom:inherit;margin:0!important}.fts-mashup-count-wrap .slicker-heart-comments-wrap li.slicker-instagram-image-likes{padding-left:0!important}.fts-mashup .fts-twitter-description-image{margin-top:0!important}.fts-mashup .fts-single-pin-social-meta-wrap{margin:0}.fts-mashup .fts-single-pin-social-meta-wrap span{margin-top:0;font-size:14px}.fts-mashup .fts-youtube-title{font-weight:700;font-size:12px;padding:8px 0 0;line-height:14px}.fts-mashup-post-wrap .fts-jal-single-fb-post{padding-top:0!important}.fts-mashup .fts-jal-single-fb-post{border-bottom:none}.fts-mashup .fts-jal-fb-picture,.fts-mashup .fts-jal-fb-vid-picture{margin-top:0}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb a:before,.fts-mashup-instagram-icon a:before,.fts-mashup-pinterest-icon a:before,.fts-mashup-twitter-icon a:before,.fts-mashup-wp_gallery-icon a:before,.fts-mashup-youtube-icon a:before{font-family:FontAwesomeSlick;font-size:32px;font-weight:100!important}.fts-mashup-instagram-icon a:before{content:"\f16d";font-size:37px;top:2px;position:relative}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb a:before{content:"\f09a";top:2px;position:relative;left:8px;font-size:30px}.fts-mashup-hide-fb-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb a:before{content:""}.fts-mashup-twitter-icon a:before{content:"\f099";top:0;position:relative;left:3px}.fts-mashup-pinterest-icon a:before{content:"\f231";position:relative;top:3px;left:5px}.fts-mashup-youtube-icon a:before{content:"\f167";position:relative;top:2px;left:4px}.fts-mashup-icon-wrap-left.fts-mashup-youtube-icon a:before{top:0;left:2px}.slicker-instagram-placeholder .ft-text-for-popup-content{padding:5px 15px;opacity:0;z-index:10;position:relative;color:#fff}.slicker-instagram-placeholder .fts-mashup-count-wrap{opacity:0;z-index:10;position:absolute;bottom:-5px;left:5px;color:#fff}.slicker-instagram-placeholder:hover .fts-mashup-count-wrap a{color:#fff!important;font-size:12px}.slicker-instagram-placeholder .fts-mashup-count-wrap a{color:#fff;font-size:12px}.slicker-instagram-placeholder:hover .ft-text-for-popup-content,.slicker-instagram-placeholder:hover .fts-mashup-count-wrap{opacity:1;color:rgba(255,255,255,.88)}.slicker-instagram-placeholder .ft-gallery-link-popup{font-size:14px;position:absolute;bottom:10px;left:10px}.ft-gallery-link-popup:before{font-family:FontAwesomeSlick;content:"\f14d ";display:inline-block;margin-right:6px;-webkit-font-smoothing:antialiased;font-size:16px;margin-top:1px;margin-left:1px}.fts-mashup-wp_gallery-icon a:before{content:"\f19a";position:relative;top:2px;left:4px}.fts-mashup-icon-wrap-left.fts-mashup-wp_gallery-icon a:before{top:0;left:2px}.fts-mashup-icon-wrap-right.fts-mashup-wp_gallery-icon{margin-top:3px;margin-right:5px}.slicker-instagram-placeholder .ft-wp-gallery-icon{margin-top:-12px;margin-right:0}.fts-mashup-icon-wrap-left.fts-mashup-twitter-icon a:before{top:0;left:3px}.fts-mashup-type-icon-spacer{clear:both;width:100%;display:block;background:#f7f7f7;margin-bottom:2px}.fts-feed-type-wp_gallery .fts-mashup-description-wrap{margin:0 0 15px}.fts-mashup .fts-feed-type-facebook .fts-jal-fb-user-thumb,.fts-mashup-hide-fb-thumb.fts-feed-type-facebook .fts-jal-fb-user-thumb{display:none!important}.fts-feed-type-facebook .fts-mashup-icon-wrap-left a:before,.fts-feed-type-facebook .fts-mashup-icon-wrap-right a:before{content:"\f09a";top:2px;position:relative;left:9px;font-size:28px!important}.fts-mashup-type-icon{float:left;height:40px;margin:15px 10px 0 0}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb{width:40px;height:45px;float:left;margin:0}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb a,.fts-mashup-icon-wrap{float:left;height:45px;width:40px;padding-top:13px;position:relative;margin-top:0!important;text-decoration:none!important}.fts-mashup-hide-fb-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb a{float:left;height:50px;width:50px;padding-top:0;position:relative;margin-top:0!important;text-decoration:none!important}.fts-mashup-hide-fb-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb{width:50px;height:50px;float:left;margin:0 15px 0 0}.fts-mashup .fts-jal-fb-message{line-height:18px;padding-top:5px}.fts-mashup-count-wrap a,.fts-mashup-icon-wrap a{text-decoration:none!important}.fts-mashup .fts-jal-fb-post-time{padding-top:3px}.fts-mashup .fts-likes-shares-etc-wrap{float:left;width:100%;padding:0}.fts-mashup .icon-thumbs-up:before,.fts-single-pin-social-meta-wrap,.fts-tweet-reply-left{margin-left:5px!important}.fts-mashup .fts-jal-fb-see-more,.fts-mashup .fts-mashup-count-wrap .slicker-heart-comments-wrap li,.fts-mashup .slicker-instagram-placeholder .slicker-heart-comments-wrap li{font-size:12px!important}.fts-mashup .fts-comment-instagram:before,.fts-mashup .fts-jal-fb-see-more .icon-comments:before,.fts-mashup .fts-jal-fb-see-more .icon-file-up:before,.fts-mashup .fts-jal-fb-see-more .icon-thumbs-up:before{font-size:14px}.fts-mashup-icon-wrap-right{float:right}.fts-mashup-icon-wrap-right a{text-decoration:none!important;font-size:12px}.fts-mashup-icon-wrap-left a:before,.fts-mashup-icon-wrap-right a:before{font-family:FontAwesomeSlick;font-weight:100!important;top:12px}.fts-mashup-icon-wrap-right.fts-mashup-facebook-icon{position:relative;right:18px;top:13px;z-index:1}.fts-mashup-hide-fb-icon.fts-feed-type-facebook .fts-mashup-icon-wrap-right a:before{font-size:30px!important}.fts-mashup-icon-wrap-left{float:left;margin:16px 12px 0 0}.fts-feed-type-pinterest .fts-mashup-icon-wrap-left a:before{left:4px;top:0}.fts-mashup .fts-feed-type-facebook .fts-jal-fb-user-thumb a:before{font-family:FontAwesomeSlick!important;content:"\f09a"!important;top:2px!important;position:relative!important;left:8px!important;font-size:29px!important}.fts-mashup .fts-mashup-icon-left .fts-jal-fb-user-thumb{display:none!important}.fts-feed-type-facebook.fts-mashup-hide-fb-thumb .fts-jal-fb-user-thumb,.fts-mashup .fts-mashup-hide-fb-icon-and-thumbnail.fts-feed-type-facebook .fts-jal-fb-user-thumb,.fts-mashup-hide-fb-icon-and-thumbnail .fts-jal-fb-user-thumb,.fts-mashup-icon-left .fts-jal-fb-user-thumb img{display:none!important}.fts-mashup-icon-left .fts-feed-type-facebook .fts-jal-fb-user-thumb a:before{content:''!important}.fts-mashup-icon-left.fts-feed-type-facebook.fts-mashup-hide-fb-thumb .fts-jal-fb-user-thumb{display:block!important}body div.fts-mashup-hide-fb-thumbnail-icon .fts-jal-fb-user-thumb a:before{display:none}body div.fts-mashup-hide-fb-thumbnail-icon .fts-jal-fb-user-thumb{width:50px!important;height:50px!important;margin-right:10px!important;margin-bottom:10px!important}body .fts-mashup .fts-mashup-hide-fb-thumbnail-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb a{width:50px!important;height:50px!important;margin-top:0!important;padding:0!important}.fts-mashup .fts-likes-shares-etc-wrap a{color:#777}.fts-mashup-error-notice{margin-bottom:25px}.fts-mashup-icon-left .fts-mashup-error-notice{margin-left:45px}.fts-mashup-icon-wrap-left a{text-decoration:none!important}.fts-mashup-icon-wrap-right.fts-mashup-youtube-icon a:before{left:-2px!important;top:15px}.fts-mashup-icon-wrap-right.fts-mashup-twitter-icon a:before{left:-2px!important}.fts-mashup-icon-wrap-right.fts-mashup-pinterest-icon a:before{left:0!important}.fts-mashup .fts-jal-fb-user-name{margin-right:23px}.fts-mashup-media-top.fts-mashup-post-wrap .fts-jal-fb-user-name{margin-left:10px;padding-top:0}.fts-mashup-media-top .fts-jal-fb-user-name{margin-left:10px}.fts-mashup .fts-jal-fb-message p,.fts-mashup-description-wrap p{margin:4px 0 5px!important}.fts-single-pin-meta-wrap .fts-single-pin-social-meta-wrap{margin-left:15px!important}.fts-review-details-wrap{margin-top:0}.fts-review-details-master-wrap{display:block;clear:both;padding:10px 10px 15px;background:#fff;border-bottom:1px solid rgba(184,184,184,.3)}.fts-reviews-overall-rating-stars{margin:auto}.fts-review-details-wrap{padding:5px 0 0;line-height:17px}.fts-review-details-master-wrap-no-background-or-border{background:0 0!important;border:none!important}.fts-slicker-twitter-posts .fts-tweeter-wrap .tweeter-info{padding:11px 0 7px}.fts-slicker-twitter-posts .fts-twitter-image{margin-left:11px!important}.fts-slicker-twitter-posts .tweeter-info .fts-twitter-full-width{padding:0 10px 10px}.fts-slicker-twitter-posts .tweeter-info .fts-twitter-full-width.fts-twitter-reply-wrap{padding:0 10px 2px}.tweeter-info .twitter-video{margin:0 -8px -5px!important}.fts-fb-get-directions,.fts-fb-ticket-info{display:inline-block}.fts-fb-ticket-info:before{content:'|';margin-left:10px;margin-right:10px}.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-post-time,.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-user-name,.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-description-wrap{padding-right:15px}.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-description-wrap{margin-top:20px;margin-bottom:25px;padding-left:20px!important}.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-user-name{margin-top:12px;padding-left:20px!important}.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-post-time{padding-left:20px!important}.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-icon-wrap-right.fts-mashup-wp_gallery-icon{margin-right:20px!important;margin-top:-1px}.fts-facebook-popup a.ft-gallery-link-popup{font-size:12px;text-align:left;margin-top:15px;border-top:0 solid #eee;border-bottom:0 solid #eee;padding:14px 20px 10px;background:0 0;display:inline-block;float:left}.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-description-wrap p{padding-top:0;line-height:21px;word-wrap:break-word;font-size:15px;color:#333}.ft-text-for-popup-content{text-align:left}.fts-slicker-facebook-photos .ft-text-for-popup-content .fts-jal-fb-post-time{color:#9d9d9d!important;margin-top:0}.ft-image-overlay{position:absolute;top:0;left:0;height:100%;width:100%}.fts-popup-second-half .fts-watermark-inside{display:none!important}.fts-watermark-inside-center{position:absolute;top:50%;text-align:center;transform:translateY(-50%);width:100%}.fts-watermark-inside-top-center{position:absolute;text-align:center;top:0;width:100%}.fts-watermark-inside-bottom-center{position:absolute;bottom:0;text-align:center;width:100%}.fts-watermark-inside-bottom-left{position:absolute;bottom:0}.fts-watermark-inside-bottom-right{position:absolute;text-align:right;bottom:0;width:100%}.fts-watermark-inside-top-right{position:absolute;width:100%;top:0;text-align:right}.fts-watermark-inside-top-left{position:absolute;text-align:left;top:0;width:100%}.fts-watermark-inside img{max-width:100%;height:auto;display:inline-block;margin:0}.fts-mashup-image-and-video-wrap .fts-watermark-inside img{max-width:75%!important}.ft-gallery-share-wrap{display:none;margin-top:0;position:absolute;left:20px;background:#fff;top:-8px;min-width:145px;box-shadow:2px -2px 3px 0 rgba(187,187,187,.8);width:100%;z-index:1000;text-align:left}.fts-popup-second-half .ft-gallery-share-wrap{left:50px;background:#f6f7f9;top:8px}.ft-gallery-share-wrap a{display:inline-block!important}.fts-share-wrap{padding:0;float:left;width:auto;margin:9px 0 0;display:inline-block;position:relative;z-index:1}a.fts-jal-fb-see-more{width:auto!important;display:inline-block!important;text-align:left}.ft-gallery-share-wrap .fa{display:inline-block!important;font-family:FontAwesomeSlick!important;font-weight:400!important;line-height:1!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ft-gallery-share-wrap .fa-facebook-square:before{content:"\f082";font-size:17px!important}.ft-gallery-share-wrap .fa-linkedin:before{content:"\f0e1";font-size:16px!important}.ft-gallery-share-wrap .fa-google-plus:before{content:"\f0d5";font-size:16px!important}.ft-gallery-share-wrap .fa-pinterest-plus:before{content:"\f0d2";font-size:15px!important}.ft-gallery-share-wrap .fa-twitter:before{content:"\f099";font-size:19px!important;top:1px;position:relative}.ft-gallery-share-wrap .fa-envelope:before{content:"\f0e0";font-size:16px!important}.ft-gallery-link-popup{margin:5px 0 0!important}.ft-gallery-share-wrap a:hover{opacity:.8}.fts-slicker-facebook-photos .fts-share-wrap a{color:#fff!important}.fts-slicker-facebook-photos .fts-mashup-count-wrap{clear:both;display:block!important;top:-21px;left:16px}.fts-slicker-facebook-photos .fts-likes-shares-etc-wrap{outline:0;z-index:5000!important;color:#fff;position:absolute;bottom:10px!important;display:none;width:100%;text-align:left}.fts-slicker-facebook-photos .fts-jal-fb-see-more{bottom:0!important;position:absolute;left:10px}.fts-mashup-post-wrap.fts-feed-type-facebook .fts-mashup-count-wrap.fts-share-wrap{margin:10px 3px 0 0;padding:0}.fts-mashup-post-wrap.fts-feed-type-facebook .fts-mashup-count-wrap.fts-share-wrap a.ft-gallery-link-popup{margin:0!important}.fts-mashup-post-wrap.fts-feed-type-facebook .ft-gallery-share-wrap{top:-7px}.fts-mashup-count-wrap.fts-share-wrap .ft-gallery-link-popup{margin-top:0!important}.fts-twitter-reply-wrap{float:left}.fts-instagram-reply-wrap-left,.fts-pinterest-reply-wrap-left,.fts-youtube-reply-wrap-left{float:right}.fts-tweeter-wrap .fts-share-wrap{padding:7px 0 0;margin-top:10px}.ft-gallery-share-wrap a{margin:7px 5px;font-size:13px}.fts-tweeter-wrap .ft-gallery-share-wrap{top:-10px}.fts-tweeter-wrap .fts-mashup-count-wrap a{display:inline-block;margin:7px 5px;font-size:13px}body .fts-slicker-facebook-photos .fts-tweeter-wrap .ft-gallery-share-wrap{max-width:132px!important;width:100%!important}.fts-tweeter-wrap .ft-gallery-link-popup{font-size:13px}.fts-twitter-reply-wrap-left{float:right;padding:10px 10px 0;margin-top:10px}.fts-tweet-others-right a{display:inline-block}.fts-twitter-reply-wrap .fts-share-wrap{margin-top:10px;padding:0}.fts-share-wrap .fts-share-wrap{margin-top:10px}.fts-twitter-reply-wrap .fts-share-wrap a.ft-gallery-link-popup{margin-top:0!important}.fts-slicker-twitter-posts .fts-twitter-reply-wrap-left{padding:0 10px 2px!important;margin:10px 0 0!important}.ft-galleryfacebook-icon{margin-left:11px!important}.fts-mashup-post-wrap .fts-tweet-reply-left{margin-right:35px;padding:0 5px}.fts-mashup-post-wrap .fts-twitter-reply-wrap-left{padding:0;margin-top:0}.fts-share-wrap .ft-gallery-link-popup{margin:0!important;font-size:12px}.fts-mashup-count-wrap .fts-share-wrap{margin:0!important}.fts-instagram-reply-wrap-left{margin-right:8px}.fts-popup-second-half .fts-share-wrap{margin:15px 0 -64px}.fts-popup-second-half .mfp-title .ft-gallery-share-wrap a{color:#137fc4}.fts-instagram-styles-popup .fts-share-wrap .ft-gallery-share-wrap a,.fts-instagram-styles-popup .fts-share-wrap a.ft-gallery-link-popup{color:#444}.fts-youtube-reply-wrap-left a{font-size:12px}.fts-mashup-post-wrap.fts-feed-type-facebook .fts-jal-fb-see-more{margin-bottom:-1px;text-transform:none!important}.fts-instagram-styles-popup .ft-gallery-link-popup,.fts-instagram-styles-popup .fts-share-wrap{margin:0!important;padding:0!important}.fts-instagram-styles-popup .fts-instagram-reply-wrap-left{float:left;margin-left:20px}.fts-instagram-styles-popup .fts-share-wrap{background:#fff;top:-11px;left:19px;position:relative;z-index:1000}.fts-instagram-styles-popup .ft-gallery-share-wrap{top:-6px;left:25px;background:#fff}.fts-instagram-styles-popup .ft-gallery-link-popup:before{content:"\f064";margin-right:10px}.slicker-instagram-placeholder .ft-gallery-link-popup:before{content:"\f064";color:#fff;font-size:15px;position:relative;top:2px}.slicker-instagram-placeholder .ft-gallery-share-wrap{top:-19px;left:35px;box-shadow:2px -2px 3px 0 #222!important;background:#000}.slicker-instagram-placeholder .ft-gallery-share-wrap a{color:#fff}.fts-facebook-popup .ft-gallery-link-popup:before{font-family:FontAwesomeSlick;content:"\f064 ";margin-left:8px}.fts-mashup-count-wrap .fts-instagram-reply-wrap-left{margin-right:-8px}.fts-facebook-thumb-one,.fts-facebook-thumb-zero{margin-right:1px!important;display:inline-block;margin-bottom:1px!important}a.fts-facebook-thumbs-wrap{display:inline-block;max-width:515px}.fts-facebook-thumb-two{display:inline-block}.fts-image-count-tint-underlay{position:absolute;top:0;bottom:0;right:0;left:0;background:rgba(0,0,0,.5)}.fts-fb-thumbs-wrap,.fts-more-photos-auto-width .fts-fb-thumbs-wrap{position:relative;background-size:cover!important;background-position:center center!important;display:inline-block!important;overflow:hidden}.fts-fb-thumbs-wrap{margin-right:.233333%!important}.fts-2-photos.fts-fb-thumbs-wrap,.fts-more-photos-3-photos .fts-fb-thumb-two-wrap{margin-right:0!important}.fts-3-photos{max-width:33.1%}.fts-2-photos{max-width:49.77%}.fts-fb-more-photos-wrap .fts-jal-fb-picture{margin-bottom:1px!important}.fts-more-photos-auto-width{float:none!important;margin:10px 0 4px}.fts-more-photos-auto-width a{width:49.84%;margin:0!important}.fts-more-photos-auto-width .fts-fb-thumbs-wrap{max-width:100%;margin-right:0!important;margin-left:.2333333333%!important;margin:0 0 4px;z-index:0;background-repeat:no-repeat;vertical-align:top}.fts-more-photos-auto-width .fts-jal-fb-picture{float:none!important;display:inline-block!important;margin:0!important}.fts-more-photos-three-photo-wrap .fts-fb-thumbs-wrap{display:inline-block!important;max-width:100%;margin-right:.233333333%!important;margin:0 0 4px;width:49.887%;overflow:hidden;max-height:240px}.fts-fb-scrollable,.fts-twitter-scrollable,.fts-youtube-scrollable{overflow:auto}.ft-text-for-popup,.fts-slicker-facebook-albums .fts-fb-load-more-output,.fts-slicker-facebook-albums .fts-share-wrap,.fts-slicker-facebook-photos .fts-share-wrap,.fts-twitter-reply-wrap-left p{display:none}.fts-more-photos-three-photo-wrap .fts-fb-thumb-one-wrap{margin-right:0!important}.fts-image-count{position:absolute;bottom:50%;width:100%;top:50%;text-align:center;font-size:36px;color:#fff;line-height:36px;height:36px;transform:translate(0,-50%)}.fts-image-count span{position:relative;bottom:0;font-size:35px}.fts-fb-more-photos-wrap{width:100%}@media (max-width:375px){.fts-image-count,.fts-image-count span{font-size:20px}}@media (max-width:667px){.fts-image-count,.fts-image-count span{font-size:34px}}.ft-gallery-buy-now{margin:0 12px}.fts-mashup-post-wrap .fts-share-wrap,.fts-slicker-facebook-albums.ft-wp-gallery .fts-share-wrap{display:block}.fts-mashup-count-wrap .fts-twitter-reply-wrap.fts-twitter-no-margin-left,.fts-mashup-hide-date .fts-jal-fb-post-time,.fts-mashup-hide-name .fts-jal-fb-user-name,.fts-mashup-media-top .fts-jal-fb-description-wrap,.fts-mashup-media-top .fts-mashup-type-icon-spacer{display:none}.ft-wp-gallery .fts-share-wrap a{color:#777!important}.fts-slicker-facebook-posts img{max-width:100%}.fts-twitter-no-margin-left{margin-left:71px;clear:both}.fts-instagram-styles-popup .fts-comment-instagram:before{font-size:14px!important}.fts-smallerthan-180 .fts-instagram-link-target{padding-left:50%;padding-bottom:50%;padding-top:50%}.fts-smallerthan-180 .fts-instagram-link-target span:before{content:''!important}.fts-smallerthan-180 .fts-instagram-link-target:hover,.fts-smallerthan-180.slicker-instagram-placeholder:hover .slicker-instaG-photoshadow{background:0 0!important}.fts-instagram,.fts-instagram-scrollable{margin:auto}.fts-mashup-hide-name .fts-mashup-description-wrap,.fts-mashup-hide-name.fts-mashup-hide-date .fts-jal-fb-message{padding-top:0!important}.fts-mashup-description-wrap a{word-wrap:break-word}.fts-mashup-image-and-video-wrap.popup-gallery-twitter .twitter-video{margin:-8px!important}.fts-mashup-media-top .fts-mashup-image-and-video-wrap.popup-gallery-twitter{margin-top:0}.fts-mashup-media-top .fts-likes-shares-etc-wrap,.fts-mashup-media-top .fts-mashup-description-wrap,body .fts-mashup-post-wrap.fts-mashup-media-top .fts-jal-fb-message{padding:0 10px!important}.fts-mashup-media-top .fts-youtube-title{padding:10px 10px 0;display:none}.fts-mashup-post-wrap .fts-jal-single-fb-post .fts-jal-fb-vid-wrap .fts-jal-fb-description-wrap{padding:5px 10px 0!important}.fts-mashup-media-top .fts-mashup-count-wrap{padding:8px 10px 7px!important;margin-bottom:0;margin-top:4px}.fts-mashup-media-top .fts-likes-shares-etc-wrap{padding:7px 10px 8px!important;margin-bottom:0;margin-top:10px}.fts-mashup-media-top .fts-jal-single-fb-post{padding-bottom:0!important}.fts-mashup-media-top .fts-jal-fb-post-time{padding:5px 10px 7px!important}.fts-mashup-hide-thumbnail.fts-mashup-media-top .fts-jal-fb-user-name,.fts-mashup-hide-thumbnail.fts-mashup-media-top .fts-jal-single-fb-post .fts-jal-fb-user-name,.fts-mashup-media-top .fts-jal-fb-message{padding:0 10px!important}.fts-mashup-media-top .fts-jal-fb-see-more,.fts-mashup-media-top .fts-share-wrap{margin-top:0}.fts-mashup-media-top .fts-mashup-youtube-icon a:before{margin-right:8px!important;top:10px}.fts-mashup-media-top .fts-mashup-twitter-icon a:before{margin-right:8px!important;top:5px}.fts-mashup-media-top .fts-mashup-pinterest-icon a:before{margin-right:8px!important;top:9px}.fts-mashup-media-top .fts-mashup-instagram-icon a:before{margin-right:9px!important;top:9px}.fts-mashup-media-top .fts-mashup-icon-wrap-right.fts-mashup-facebook-icon{position:unset;right:unset;top:unset;z-index:1;float:right!important}.fts-mashup-media-top .fts-jal-fb-top-wrap{display:none!important}.fts-jal-fb-group-display.fts-mashup-media-top .fts-jal-single-fb-post .fts-jal-fb-top-wrap,.fts-mashup-hide-thumbnail .fts-jal-fb-user-thumb,.slicker-youtube-placeholder .entriestitle{display:none}.fts-mashup-media-top .fts-jal-fb-link-wrap,.fts-mashup-media-top .fts-jal-fb-vid-wrap{margin-top:0;margin-bottom:10px;text-align:center}.fts-mashup-media-top .fts-jal-fb-link-wrap .fts-jal-fb-picture,.fts-mashup-media-top .fts-jal-fb-vid-wrap{float:none}.fts-mashup-media-top .fts-jal-fb-picture,.fts-mashup-media-top .fts-jal-fb-vid-picture{margin-bottom:0!important}.fts-mashup-media-top .fts-mashup-icon-wrap-left{margin-left:10px;margin-right:5px;margin-top:3px;top:0}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-instagram-icon,.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-pinterest-icon{margin-top:2px;min-height:40px}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-instagram-icon{margin-right:0;margin-top:0}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-youtube-icon a:before{margin-right:8px!important;top:6px}.fts-mashup-media-top .fts-mashup-icon-wrap-right.fts-mashup-facebook-icon{margin-right:20px!important;margin-top:4px!important}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-facebook-icon{margin-top:8px!important}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-youtube-icon{margin-top:5px!important}.fts-mashup-media-top .fts-mashup-image-and-video-wrap{margin-bottom:12px}.fts-mashup-media-top.fts-feed-type-facebook .fts-mashup-image-and-video-wrap.popup-gallery-twitter{margin:0}.fts-feed-type-facebook .fts-mashup-icon-wrap-left{margin-top:17px;margin-right:20px}.fts-mashup-icon-wrap-left.fts-mashup-instagram-icon{margin-top:3px}.fts-mashup-icon-wrap-left,.fts-mashup-icon-wrap-right{min-height:35px}.fts-jal-fb-group-display.fts-mashup-media-top .fts-jal-single-fb-post{padding-bottom:6px!important;border:none;margin-bottom:10px;background:#fff;margin-top:0!important;padding-top:0!important}.fts-mashup-media-top .fts-jal-fb-link-wrap a,.fts-mashup-media-top .fts-jal-fb-vid-picture{margin-top:0!important;line-height:0!important}.fts-mashup-media-top.fts-slicker-facebook-posts .fts-jal-single-fb-post{padding:0 0 8px!important}.fts-mashup-media-top .fts-jal-fb-user-thumb{margin-left:10px;margin-bottom:12px}.fts-yt-open{display:block;width:100%;height:100%;position:absolute}.fts-master-youtube-wrap .slicker-instagram-placeholder{position:relative;background-size:cover}.fts-facebook-popup.mfp-ready{z-index:99999999999999}.fts-youtube-popup h3{color:#111;padding:20px 40px 0 20px!important;margin-bottom:2px;font-size:24px;margin-top:0}.fts-youtube-popup h4{color:#222;padding:0 20px 4px!important;font-size:17px}.fts-youtube-description-popup{padding:0 20px 20px;color:#000}.fts-youtube-date{color:#9a9a9a;padding:0 20px 20px!important;font-size:13px}.fts-yt-open:hover{background:rgba(0,0,0,.5);cursor:pointer}.fts-master-youtube-wrap .slicker-youtube-placeholder{min-height:100px}.fts-youtube-popup-gallery,.fts-youtube-scrollable{clear:both;display:block}.fts-yt-open:hover:before{font-family:FontAwesomeSlick;content:"\f04b";display:block;font-size:32px;color:rgba(255,255,255,.54);position:absolute;top:45%;right:45%;left:43%}.fts-youtube-smallerthan-180 .fts-yt-open:hover:before{content:""}.fts-jal-fb-vid-picture a{margin:0}.fts-facebook-popup .mfp-inline-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.fts-more-photos-4-photos a{max-height:150px;display:inline-block;width:auto}.fts-more-photos-2-photos a{max-height:250px}.fts-youtube-scrollable .fts-fb-autoscroll-loader{background:0 0}.fts-yt-large.fts-youtube-thumbs-wrap{float:left}.fts-youtube-scrollable.fts-youtube-thumbs-wrap{float:right;clear:none}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-left{float:left;clear:none}.fts-yt-large.fts-youtube-thumbs-wrap-left{float:right}.fts-yt-large.fts-youtube-thumbs-wrap-option-80-20{width:80%}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-option-80-20{width:20%}.fts-yt-large.fts-youtube-thumbs-wrap-option-60-40{width:60%}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-option-60-40{width:40%}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-option-50-50,.fts-yt-large.fts-youtube-thumbs-wrap-option-50-50{width:50%}.fts-fb-comment .image-overlay-inside{display:none}.fts-youtube-popup .fts-fb-comment img{border-radius:30px}.fts-youtube-popup span.fts-fb-comment-date{color:#a6a6a6;padding-left:2px;font-size:12px!important}.fts-youtube-popup .fts-popup-second-half .mfp-title .fts-fb-comment-user-name a{color:#333!important}.youtube-comments-wrap{background:#fff;text-align:left;color:#2d2d2d!important}.youtube-comments-wrap .fts-share-wrap{margin:15px 0 -64px}.youtube-comments-wrap .fts-youtube-description-popup{display:block;position:relative!important;margin-bottom:-25px;padding-bottom:30px}.youtube-comments-wrap .ft-gallery-share-wrap{left:50px;background:#f6f7f9;top:8px}.fts-facebook-popup .mfp-bottom-bar a.ft-gallery-link-popup,.fts-facebook-popup .mfp-bottom-bar a.fts-jal-fb-see-more{color:#137fc4}.fts-youtube-scrollable .youtube-comments-wrap #___ytsubscribe_0{margin:20px 20px 10px!important}.mfp-title .fts-master-youtube-wrap-close{display:none}.fts-master-youtube-wrap-close{color:#636363;right:3px;top:3px;text-align:right;padding:15px;width:50px;font-size:24px;font-weight:700;position:absolute}.fts-master-youtube-wrap-close:before{content:"X"}.youtube-comments-wrap{overflow:auto;display:none;position:relative}.youtube-comments-wrap h3{padding-top:18px!important}.fts-scrollable-function{height:auto}.fts-youtube-description-popup{font-size:14px!important}.fts-youtube-no-thumbs-gallery{padding:0!important}.fts-youtube-noscroll .youtube-comments-wrap{overflow:visible}.fts-youtube-smallerthan-550-stack{width:100%!important}.fts-jal-fb-user-thumb img{border-radius:50px!important}.fts-twitter-username img.twitter-image{border-radius:50px}.fts-youtube-second-video-margin-btm{margin-bottom:35px}.fts-share-wrap [class*=fa-]{width:auto;height:auto}.fts-popup-half .mfp-arrow-left,.fts-popup-half .mfp-arrow-right{height:auto;width:auto;border:none!important;margin-top:0!important}.fts-popup-half .mfp-arrow-left:after,.fts-popup-half .mfp-arrow-right:after{background:0 0!important;height:auto!important;top:0!important;left:0!important;margin:0!important;padding:0!important;cursor:pointer;transform:none!important;transition:none!important;-webkit-transition:none!important}.fts-popup-half audio,.fts-popup-half video{visibility:visible!important}.fts-album-photos-wrap{text-align:center}.fts-fb-more-photos-wrap,.fts-more-photos-4-photos{position:relative;top:-3px}#wp-admin-bar-feed_them_social_admin_bar_set_cache{padding-bottom:17px!important;line-height:0!important}#wp-admin-bar-feed_them_social_admin_bar_set_cache span{line-height:10px;display:block;color:rgba(221,221,221,.57)}#wp-admin-bar-feed_them_social_admin_bar_set_cache:hover span{line-height:10px;display:block;color:#fff}.fts-mashup-media-top.fts-mashup-hide-thumbnail .fts-jal-fb-user-name{margin-left:0!important}.fts-steemit-username{display:inline-block;background-size:cover;background-repeat:no-repeat;background-position:50% 50%;border-radius:50%;width:48px;height:48px;margin-bottom:5px}.fts-steemit-div .steemit-info img{margin:0!important}.steemit-info .fts-uppercase{margin:14px 0 10px 10px}.fts-steemit-title{font-size:18px;margin-bottom:10px;letter-spacing:1px;font-weight:400;line-height:21px;color:#0084b4}.fts-steemit-div .fts-twitter-retweet:before{content:"\f27a"!important;font-size:15px!important;top:1px}.fts-steemit-div .fts-twitter-favorites:before{content:'Votes:'!important;font-family:arial!important;font-size:14px!important;margin-right:3px!important;top:0;font-weight:700}.fts-steemit-div .fts-twitter-reply:before{font-family:FontAwesomeSlick;content:'\f06e'!important;position:relative;top:2px;font-size:19px}.fts-twitter-quoted-text-wrap{padding:0 0 10px;border:1px solid #efe8e8!important;margin-top:10px;font-size:13px}.fts-twitter-quoted-text-wrap a{font-size:13px!important}.fts-twitter-quoted-text-wrap .twitter-video-rendered{margin:auto!important}.fts-fluid-videoWrapper{margin-top:8px}.fts-twitter-quoted-text-wrap .fts-twitter-link-image img,.fts-twitter-quoted-text-wrap img{margin-top:0!important}.fts-twitter-quoted-text{display:inline-block!important;padding:8px 10px 0;line-height:18px}.fts-twitter-quoted-video .fts-twitter-quoted-text{padding-top:0!important}.fts-twitter-quoted-image{padding:8px}.fts-twitter-quoted-image .fts-twitter-quoted-text{padding:8px 2px 2px!important}.fts-fb-more-photos-wrap a:last-child{margin-right:0!important}.fts-fb-more-photos-wrap a:first-child{margin-left:0!important}.fts-yt-first-video .fts-fluid-videoWrapper{margin-top:0}.fts-twitter-quoted-video .fts-fluid-videoWrapper-html5,.fts-twitter-quoted-video .fts-jal-fb-vid-wrap{margin-top:0;margin-bottom:10px}.fts-fb-location-wrap{text-align:center;padding:15px}.fts-fb-location-img{display:block;margin-bottom:9px;height:20px}.fts-fb-location-img:before{content:"\f024";font-family:FontAwesomeSlick;font-size:28px;display:block}.fts-fb-location-link{margin-bottom:5px;display:block;font-size:16px}.fts-popup-second-half .fts-fb-location-wrap{color:#444}.fts-fb-embed-iframe-check-used-for-popup,.greater-than-or-equal-width-height{display:none!important}.fts-fb-video-on-page.fts-fluid-videoWrapper{padding-bottom:56%;padding-top:0;width:100%!important;height:auto!important}.fts-fb-video-on-page.fts-fluid-videoWrapper iframe{width:100%!important;height:auto!important}.fts-greater-than-width-height.fts-fb-video-on-page{margin-top:18px}.fts-greater-than-width-height.fts-fb-video-on-page iframe{padding-bottom:100%}.fts-equal-width-height{max-width:100%;padding-bottom:100%!important}.fts-comment-star:before{font-family:FontAwesomeSlick;content:"\f075";font-size:14px;margin:0 6px 0 -2px!important;padding:0!important;display:inline-block!important;border:none!important}.fts-mashup-error-notice-strong{display:block;font-size:16px;padding-bottom:5px}.fts-mashup-error-bottom-padding{padding-bottom:20px;display:block}.fts-mashup-error-check .fts-mashup-image-and-video-wrap{display:none}.fts-review-name span{margin-right:5px}.fts-mashup.masonry .fts-fluid-videoWrapper-html5{margin-top:0}.fts-child-media-hide{display:none}.fts-instagram-styles-popup .fts-carousel-image{position:absolute;right:25px;top:32px;text-align:right;font-size:21px;color:#fff;z-index:1}.fts-carousel-image-wrapper,.fts-instagram-video-image-wrapper{position:relative;right:18px;top:18px;text-align:right;font-size:20px;color:#fff;width:auto;float:right}.fts-carousel-image:before{font-family:FontAwesomeSlick;content:'\f24d'}.fts-instagram-video-image:before{font-family:FontAwesomeSlick;content:'\f03d'}.fts-instagram-popup-second-half .fts-carousel-image{display:none}.fts-child-media-popup .fts-carousel-image{display:block}.fts-carousel-image-wrapper,.fts-instagram-video-image-wrapper{position:relative;z-index:2}.slicker-instagram-placeholder a:focus{outline:auto!important}.fts-instagram-icon:before{font-family:FontAwesomeSlick!important;-webkit-font-smoothing:antialiased;content:"\f16d"}.slicker-instagram-placeholder{height:0;width:0}
1
+ /* If you think we have to many !important rules you have to consider that we are fighting with the themes CSS which in most cases overrides a plugins CSS. So if you see an !important rule and are having trouble overriding it make sure and target the body, html or a wrapper ID before the CSS class you are trying to override. */ .entriestitle.fts-youtube-popup,.fts-yt-first-video{word-break:break-word}.fts-twitter-div a,.tweeter-info:hover a{-webkit-transition:all .3s ease-in-out;text-decoration:none!important}.tweeter-info,.tweeter-info:hover a{-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out}.fts-jal-fb-group-display,.fts-twitter-div{clear:both}@font-face{font-family:FontAwesomeSlick;src:url(../css/font/fontawesome-webfont.eot?v=3.2.1);src:url(../css/font/fontawesome-webfont.eot?#iefix&v=3.2.1) format("embedded-opentype"),url(../css/font/fontawesome-webfont.woff?v=3.2.1) format("woff"),url(../css/font/fontawesome-webfont.ttf?v=3.2.1) format("truetype"),url(../css/font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1) format("svg")}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.fts-twitter-text{padding:4px 0 0;display:block;line-height:19px}.fts-video-show-hide-btns-wrap a:focus,.fts-video-show-hide-btns-wrap a:link,.fts-video-show-hide-btns-wrap a:visited{outline:0!important;border:none!important}.fts-view-on-twitter-link:before{font-family:FontAwesomeSlick;content:"\f14c ";display:inline-block;margin-right:6px}.fts-video-show-hide-btns-wrap a:before{font-family:FontAwesomeSlick;content:'\f16a';display:inline-block;margin-right:5px}img.fts-twitter-description-image{margin:10px 0 0!important}.fts-twitter-favorites:before,.fts-twitter-retweet:before{margin-right:5px;font-family:FontAwesomeSlick;position:relative}.fts-twitter-retweet:before{content:'\f079'!important;font-size:17px!important;top:1px}.fts-twitter-favorites:before{content:'\f004 '!important;font-size:13px!important;top:0}.fts-twitter-reply:before{font-family:FontAwesomeSlick;content:'\f112'!important;position:relative;top:2px;font-size:14px}.fts-twitter-caption,blockquote.twitter-video{display:none}.fts-twitter-div *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fts-fb-slideshow,.fts-fb-slideshow *,.fts-slicker-facebook-photos *,.fts-yt-videolist *,.popup-video-gallery-fb .fts-fb-photo-post-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fts-twitter-div{position:relative;padding:0}.tweeter-info:hover a{transition:all .3s ease-in-out}.widget .fts-twitter-div .fts-uppercase{width:auto}.fts-twitter-div p{margin:0 0 5px!important;line-height:20px!important;padding:0}.widget .fts-twitter-div p{margin:0 0 8px!important;padding:0!important;line-height:19px!important;font-size:12px!important}.fts-twitter-div img{margin:0 10px}.fts-twitter-div .fts-uppercase{margin:0 5px 0 0;font-size:13px;font-weight:700;text-align:left;display:inline-block}.widget .twitter-image{margin-right:10px!important}.widget .fts-twitter-div .fts-uppercase,.widget .tweeter-info .fts-right,.widget .tweeter-info .fts-twitter-full-width{text-align:left;font-size:11px;line-height:14px;font-weight:400!important}.fts-right .fts-uppercase,.fts-twitter-full-width .fts-uppercase{display:inline-block}.tweeter-info .fts-right{float:none!important;padding:0 7px 0 71px;line-height:15px!important}.tweeter-info .fts-twitter-full-width{padding:10px 10px 0}.fts-twitter-fade{display:none;width:321px;height:80px;position:absolute;top:137px;left:1px}.fts-twitter-image,.widget .fts-twitter-image{margin:0;float:left}.tweeter-info{padding:11px;background:#eee;box-shadow:0 1px 2px #555;clear:both;min-height:51px;line-height:13px;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-twitter-div a,.tweeter-info:hover{-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out}.widget .tweeter-info{min-height:42px}.tweeter-info:hover{background:#fff;box-shadow:0 1px 2px #222;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.tweeter-info img{border-radius:0;box-shadow:none!important}.fts-twitter-link{position:absolute;top:217px;left:0;font-size:22px;text-transform:uppercase;width:291px;height:36px;padding:15px 0 0 38px;border-top:1px solid #c1c2c3;color:#000}.fts-video-loading-notice{color:#000}a.fts-powered-by-text{padding-top:8px!important;width:100%;text-align:center!important;display:block}.fts-twitter-div a{transition:all .3s ease-in-out;color:#0084b4}.fts-twitter-div a:hover{color:#444;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;text-decoration:none!important}.tweeter-info .time{font-size:12px}.fts-tweeter-wrap .tweeter-info{padding:14px 0 8px;background:0 0;box-shadow:0 0 0 #555;border-bottom:1px solid #eee;word-wrap:break-word;clear:both;font-size:14px;line-height:13px;-webkit-transition:background 0;-webkit-transition:all 0s ease-in-out;-moz-transition:all 0s ease-in-out;-o-transition:all 0s ease-in-out;transition:all 0s ease-in-out}.fts-tweeter-wrap .fts-video-wrapper{margin:15px 0 0}.fts-video-wrapper-padding{display:none}.fts-tweeter-wrap .tweeter-info:hover{background:0 0!important;box-shadow:0 0 0 #222!important}.fts-tweeter-wrap .tweeter-info img{max-width:100%;box-shadow:none!important;border-radius:0}.fts-twitter-favorites,.fts-twitter-reply,.fts-twitter-retweet{font-size:13px!important}.fts-twitter-reply-wrap a{display:inline-block!important;opacity:1;padding-right:0;-webkit-transition:background 1s;-webkit-transition:all 1s ease-in-out;-moz-transition:all 1s ease-in-out;-o-transition:all 1s ease-in-out;transition:all 1s ease-in-out}.fts-twitter-reply-wrap{font-size:16px;margin-right:0;margin-top:10px;font-style:normal!important}.fts-tweeter-wrap:hover a{opacity:1}@media (max-width:767px){.fts-tweeter-wrap a{opacity:1!important}}.fts-video-show-hide-btns-wrap{margin:7px 0 0!important}.fts-video-show-hide-btns-wrap a{font-size:13px!important}.fts-twitter-load-video-wrapper,a.fts-twitter-load-video-wrapper{margin:0!important;padding:0!important}.fts-show-media-text,a.fts-close-media{display:none}.fts-twitter-div iframe,.fts-video-wrapper iframe{margin:0!important}.twitter-social-btn-bottom{margin:15px 0}.fts-jal-fb-see-more .icon-thumbs-up:before{content:"\f164"!important;font-size:14px}.fts-jal-fb-see-more .icon-comments:before{content:"\f086"!important;top:0;position:relative;font-size:14px}.fts-jal-fb-see-more .icon-file:before{content:"\f064"!important;top:2px!important;position:relative;font-size:14px}.fts-events-list-wrap .icon-map-marker [class^=icon-thumbs-up],.fts-jal-fb-see-more [class*=" icon--file"],.fts-jal-fb-see-more [class*=" icon--thumbs-up"],.fts-jal-fb-see-more [class^=icon-comments],.fts-jal-fb-see-more [class^=icon-file],.fts-jal-fb-see-more [class^=icon-thumbs-up]{display:inline-block!important;font-style:normal!important}.fts-events-list-wrap [class^=icon-]:before,.fts-jal-fb-see-more [class^=icon-]:before,.fts-jal-single-fb-post [class^=icon-]:before{font-family:FontAwesomeSlick!important;-webkit-font-smoothing:antialiased;margin:0 0 0 7px!important}.fts-jal-fb-see-more [class^=icon-]:before [class^=icon-],.fts-jal-single-fb-post{float:none!important;margin:0!important;display:block;padding:0!important;text-align:right!important;width:auto!important;height:auto!important;line-height:normal!important;vertical-align:baseline!important;background:0 0!important;font-style:normal!important}.fts-jal-fb-group-display img{border-radius:0!important;box-shadow:0 0 0 transparent!important;display:block;max-width:100%}.fts-jal-fb-group-header-desc{width:100%;margin:7px 0 15px!important;line-height:20px}.fts-jal-fb-header{clear:both}.no-more-posts-fts-fb{cursor:auto}.fts-jal-single-fb-post .slicker-facebook-album-photoshadow{display:none}.fts-jal-fb-header a:hover,.fts-jal-single-fb-post a:hover{font-style:normal;text-decoration:none!important;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;color:#313131}.fts-jal-fb-user-thumb a{display:block}.fts-fb-get-directions{text-align:left!important;margin:0}.fts-jal-fb-header a,.fts-jal-single-fb-post a{-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;text-decoration:none!important;word-break:break-word;border:none!important}.fts-jal-fb-header h1{font-size:1.9em;margin:0!important;line-height:normal!important;padding:0!important}.widget .fts-jal-fb-header h1{font-size:1.8em;line-height:22px}.fts-jal-single-fb-post{width:100%;padding:15px 0 7px!important;margin-bottom:0;border-bottom:1px solid rgba(184,184,184,.3);position:relative;line-height:17px;text-align:left}.fts-slicker-facebook-posts .fts-jal-single-fb-post{width:auto;padding:10px 10px 8px!important;border-bottom:1px solid rgba(184,184,184,.3);line-height:17px}.widget .fts-jal-single-fb-post{width:100%;padding:17px 0 10px!important}.fts-facebook-popup .fts-jal-fb-user-thumb{width:50px;height:50px;float:left;margin:0 0 0 20px!important}.fts-jal-fb-user-thumb,.fts-mashup-icon{height:50px;margin-right:11px;float:left}.fts-jal-fb-user-thumb{width:50px;margin-bottom:5px}.fts-mashup-icon{width:20px;margin-bottom:5px}.widget .fts-jal-fb-right-wrap{padding-left:0}.widget .fts-jal-fb-top-wrap{padding-bottom:5px;padding-left:0;margin-bottom:5px;min-height:50px}.fts-jal-fb-message{padding-top:10px;line-height:21px;word-wrap:break-word}.fts-jal-fb-link-wrap p,.fts-jal-fb-message p{padding:0!important;margin:0 0 10px!important}.fts-jal-fb-link-wrap p{line-height:19px!important}.fts-jal-fb-link-wrap{margin-top:0;border-radius:0;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.jal-fb-description{word-wrap:break-word!important}.fts-jal-fb-picture{float:left;display:block;margin:10px 10px 4px 0}.fts-jal-fb-link-wrap img{margin:0}.fts-jal-fb-vid-picture{position:relative;float:left;height:auto!important;margin:10px 0 0;line-height:normal!important;cursor:pointer}.fts-jal-fb-description-wrap{float:left;padding:15px 12px 0 17px!important;color:#757575;font-size:13px!important;font-weight:400;text-align:left}.popup-gallery-fb .fts-jal-fb-description-wrap,.popup-video-gallery-fb .fts-jal-fb-description-wrap{padding:15px 0 0!important}.fts-jal-single-fb-post .fts-jal-fb-vid-wrap .fts-jal-fb-description-wrap{padding:15px 15px 0!important}.widget .fts-jal-fb-description-wrap{float:left;overflow:hidden;max-width:90%;line-height:19px!important;color:#999;font-size:12px!important;font-weight:400}.entry-content .fts-jal-fb-picture img,.fts-yt-videolist li img,.widget .fts-jal-fb-picture img,.widget a.fts-pin-board-wrap img,a.fts-pin-board-wrap img{max-width:100%}.fts-jal-fb-description{padding:5px 0 10px;line-height:17px!important;font-size:13px;color:#919191;word-wrap:break-word}.fts-jal-fb-description p{font-size:13px!important}.fts-jal-fb-top-wrap{margin-bottom:10px;text-align:left}.fts-jal-fb-user-name{font-weight:700;color:#888;display:block;padding-top:6px;padding-right:5px;font-size:16px;line-height:18px}.fts-slicker-facebook-albums .fts-jal-fb-user-name a{color:#fff}.fts-jal-fb-post-time{color:#999;padding-top:4px;font-size:12px;line-height:10px;display:block}.fts-jal-fb-name{font-weight:700;color:#c00;padding-bottom:5px;font-size:15px;display:inline-block;line-height:18px}.fts-events-list-wrap .fts-jal-fb-name{font-weight:400;color:#c52214;padding-bottom:5px;font-size:15px;display:block;line-height:21px}.fts-jal-fb-vid-play-btn{background:url(../images/video-play-btn.png) no-repeat;bottom:7px;height:26px;left:9px;position:absolute;width:35px}.fts-jal-fb-picture img,.fts-vid-div{width:100%}.fts-vid-div .fts-jal-fb-vid-play-btn,.fts-vid-div img{display:none}.fts-vid-div iframe{position:absolute;z-index:500}.fts-jal-fb-see-more .icon-file{font-size:10px}.fts-jal-fb-see-more{float:right;margin:10px 0 0;font-size:12px;width:100%;text-align:right;font-style:normal!important}.fts-fb-event-photo{float:left}.fts-fb-large-photo{margin-right:0!important;font-weight:inherit}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap:hover .fts-likes-shares-etc-wrap,.fts-slicker-facebook-photos .slicker-facebook-album-photoshadow:hover .fts-jal-fb-see-more{display:block}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap:hover .fts-jal-fb-top-wrap,.fts-slicker-facebook-photos .fts-fb-video-post-wrap .slicker-facebook-album-photoshadow:hover .fts-jal-fb-top-wrap{opacity:1}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap,.fts-slicker-facebook-photos .fts-jal-fb-description,.fts-slicker-facebook-photos .fts-jal-fb-see-more:hover,.fts-slicker-facebook-photos .fts-jal-fb-user-name a:hover{color:#fff}.fts-slicker-facebook-photos .fts-jal-fb-description-wrap{font-weight:inherit!important}.fts-slicker-facebook-photos *{-ms-box-sizing:border-box;box-sizing:border-box}.instagram-placeholder *,.slicker-instagram-placeholder *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fts-jal-fb-vid-wrap .slicker-facebook-album-photoshadow{position:absolute;top:0;right:0;height:auto;z-index:600;cursor:pointer;width:auto;opacity:1!important;background-color:rgba(0,0,0,.6)!important;display:none}.fts-jal-fb-vid-wrap .slicker-facebook-album-photoshadow:before{content:'info';color:#fff;padding:5px 10px 7px;text-align:right;float:right;font-size:12px;display:none}.fts-fb-load-more,.fts-fb-spinner,.fts-instagram{text-align:center}.slicker-facebook-album-photoshadow{position:absolute;top:0;right:0;height:100%;width:100%;z-index:100}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap .slicker-facebook-album-photoshadow:hover{background-color:rgba(0,0,0,.9);-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;z-index:100;opacity:.8;top:0;right:0;height:100%;width:100%}.fts-slicker-facebook-photos .fts-fb-photo-post-wrap:hover .slicker-facebook-album-photoshadow{background-color:rgba(0,0,0,.9);-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;z-index:100;opacity:.8;top:0;display:block;right:0;height:100%;width:100%}.fts-slicker-facebook-photos .fts-jal-fb-right-wrap{padding:0!important}.fts-slicker-facebook-photos .fts-jal-fb-user-thumb{display:none}.fts-slicker-facebook-photos .fts-jal-fb-top-wrap{color:#fff!important;padding:12px 15px 0!important;z-index:600;position:absolute;width:100%;opacity:0;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}.fts-slicker-facebook-photos .fts-jal-fb-message{padding:15px 0 0;color:#fff!important;position:relative;font-size:14px;z-index:100}.fts-slicker-facebook-photos .fts-jal-fb-post-time{color:#ddd;margin-top:0}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap a:hover,.fts-slicker-facebook-albums .jal-fb-description a:hover,.fts-slicker-facebook-photos .jal-fb-description a:hover{color:#ccc}.fts-slicker-facebook-photos .fts-jal-fb-link-wrap,.fts-slicker-facebook-photos .fts-jal-fb-vid-wrap{line-height:12px!important}.fts-slicker-facebook-photos .fts-jal-fb-vid-wrap iframe{height:305px;width:305px}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap{word-wrap:break-word;width:100%}.fts-slicker-facebook-albums .fts-jal-fb-description-wrap a{float:left;width:100%;line-height:19px;padding:0!important}.fts-slicker-facebook-albums .jal-fb-description a,.fts-slicker-facebook-photos .jal-fb-description a{float:none!important}.fts-slicker-facebook-photos .fts-jal-single-fb-post{position:relative;float:none;z-index:0;overflow:hidden;border:none!important;padding:0!important;font-family:proxima-nova,'Helvetica Neue',Arial,Helvetica,sans-serif!important;background:#000;vertical-align:top!important;display:inline-block!important}.fts-fb-get-directions:before,.slicker-instagram-image-likes:before,.slicker-instagram-placeholder .fts-instagram-icon:before{font-family:FontAwesomeSlick;-webkit-font-smoothing:antialiased}.fts-slicker-facebook-photos .fts-jal-fb-link-wrap,.fts-slicker-facebook-photos .fts-jal-fb-vid-wrap{border:none!important;margin:0!important;width:100%;height:100%}.fts-album-photos-wrap img{vertical-align:middle!important;display:inline-block!important}.fts-slicker-facebook-photos.fts-slicker-facebook-albums .fts-jal-single-fb-post{height:auto}.fts-slicker-facebook-photos{margin:auto;text-align:center}.fts-slicker-facebook-photos .fts-jal-fb-picture{display:block;margin:0;padding:0;float:none;width:auto;left:0;right:0;top:0;position:absolute;background-size:cover;background-position:center center;background-repeat:no-repeat}div.fts-fb-location{letter-spacing:1px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:21),only screen and (min-device-pixel-ratio:2){.fts-jal-fb-vid-wrap iframe{height:130px}}.fts-fb-spinner>div{width:10px;height:10px;background-color:#999;border-radius:100%;display:inline-block;-webkit-animation:fts-fb-bouncedelay 1.4s infinite ease-in-out;animation:fts-fb-bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.fb-social-btn-below-description,.fb-social-btn-bottom,.fb-social-btn-top{width:100%;overflow:hidden}.fts-fb-spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.fts-fb-spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes fts-fb-bouncedelay{0%,100%,80%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes fts-fb-bouncedelay{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.fts-fluid-videoWrapper-html5 video{object-fit:inherit;margin-bottom:0!important}.fts-fb-album-view-link a{color:#fff}.fts-fb-album-view-link a:hover{color:#eee}.fts-instagram-fade .fts-fb-caption{display:block}.fts-view-album-photos-large:before,.fts-view-fb-videos-large:before,.fts-view-on-facebook-link:before,.view-on-facebook-albums-link:before{font-family:FontAwesomeSlick;content:"\f14c ";display:inline-block;margin-right:6px;-webkit-font-smoothing:antialiased}.fts-fb-get-directions:before{content:"\f041 ";display:inline-block;margin:0 5px 0 2px}.instagram-placeholder,.slicker-instagram-placeholder{font-family:proxima-nova,'Helvetica Neue',Arial,Helvetica,sans-serif!important}.fts-instagram-fade .fts-instagram-caption-content,.fts-instagram-fade .fts-jal-fb-description{color:#fff;padding:0;margin:0}.fts-instagram-fade .fts-fb-album-view-link{display:none}#facebook-sidebar .fts-fb-load-more-wrapper{max-width:100%!important;margin-top:-1px!important;z-index:9999;position:relative}.fb-social-btn-bottom{margin-top:15px!important}.fb-social-btn-top{display:block;margin-bottom:12px!important}.fb-social-btn-below-description{margin-top:5px!important;margin-bottom:5px!important}@media only screen and (max-width:640px){.fb-like.fb_iframe_widget,.fb-like.fb_iframe_widget>span,.fb-like.fb_iframe_widget>span>iframe{width:100%!important;position:relative!important}}.fts-events-list-wrap .fts-jal-fb-picture{float:left;display:block;margin:0}.fts-events-list-wrap a.fts-jal-fb-name{font-size:17px}.fts-events-list-wrap .fts-fb-event-time{font-size:15px}.fts-events-list-wrap .fts-fb-location{font-size:15px;display:block;margin:10px 0 5px}.fts-events-list-wrap .fts-fb-location-title{font-size:15px;display:block;padding:0;font-weight:700;font-style:normal;margin:12px 0 0}.fts-events-list-wrap .fts-jal-fb-message{clear:both;font-size:15px}.fts-fb-get-directions{font-size:15px;padding:0 0 20px;color:#4595f0}.fts-fb-load-more{border-radius:1px;padding:0;line-height:37px!important;width:100%;min-height:37px!important;font-size:13px!important;background:rgba(240,240,240,.45);cursor:pointer;color:#111;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-fb-load-more:hover{background:rgba(240,240,240,.85)}.instagram-image,.widget .instagram-image{background-color:#000;z-index:1;display:block}.flip360-fts-load-more{-moz-animation:spinY .5s linear;-ms-animation:spinY .5s linear;-o-animation:spinY .5s linear;animation:spinY .5s linear;-webkit-animation-name:spinY;-webkit-animation-duration:.5s;-webkit-animation-timing-function:linear;-webkit-animation-fill-mode:both;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-moz-animation-timing-function:cubic-bezier(.75,0,.175,1);-ms-animation-timing-function:cubic-bezier(.75,0,.175,1);-o-animation-timing-function:cubic-bezier(.75,0,.175,1);animation-timing-function:cubic-bezier(.75,0,.175,1)}@-moz-keyframes spinY{0%{-moz-transform:rotateY(0);transform:rotateY(0)}100%{-moz-transform:rotateY(360deg);transform:rotateY(360deg)}}@-webkit-keyframes spinY{0%{-webkit-transform:rotateY(0);transform:rotateY(0);-webkit-transform-style:preserve-3d}100%{-webkit-transform:rotateY(360deg);transform:rotateY(360deg);-webkit-transform-style:preserve-3d}}@-o-keyframes spinY{0%{-o-transform:rotateY(0);transform:rotateY(0)}100%{-o-transform:rotateY(360deg);transform:rotateY(360deg)}}@-ms-keyframes spinY{0%{-ms-transform:rotateY(0);transform:rotateY(0)}100%{-ms-transform:rotateY(360deg);transform:rotateY(360deg)}}@keyframes spinY{0%{-webkit-transform:rotateY(0);-moz-transform:rotateY(0);-ms-transform:rotateY(0);-o-transform:rotateY(0);transform:rotateY(0)}100%{-webkit-transform:rotateY(360deg);-moz-transform:rotateY(360deg);-ms-transform:rotateY(360deg);-o-transform:rotateY(360deg);transform:rotateY(360deg)}}.clear{clear:both}.heart-comments-wrap li,ul.heart-comments-wrap{padding:0!important;margin:0!important;line-height:1.3em!important;border:none!important}.widget .instagram-placeholder li,.widget .instagram-placeholder ul{padding:0!important;margin:0!important;height:auto!important}.instagram-placeholder p{margin:0;padding:0}.instagram-placeholder{position:relative;z-index:0;display:inline-block;margin:0 20px 20px}.widget .instagram-placeholder{margin:-10px 9px 0 10px!important;width:104px!important;text-align:left!important}.instagram-image{width:150px;height:150px;position:relative}.widget .instagram-image{width:105px;height:100px;position:relative;background-size:100%!important}.instaG-photoshadow{background-color:rgba(0,0,0,.1);bottom:0;left:0;position:absolute;right:0;top:0;border:1px solid rgba(0,0,0,.12);z-index:1;-webkit-transition:background-color .05s ease-out;-moz-transition:background-color .05s ease-out;-o-transition:background-color .05s ease-out;transition:background-color .05s ease-out;width:148px;height:148px}.widget .instaG-photoshadow{width:103px;height:98px}.instagram-placeholder:hover .instaG-photoshadow{background-color:transparent;-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;border:1px solid rgba(0,0,0,.12);width:148px;height:148px}.heart-comments-wrap li,.instagram-placeholder .date{color:#888;position:relative;z-index:1;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s;text-shadow:0 1px 0 rgba(255,255,255,.8);opacity:0;pointer-events:none}.widget .instagram-placeholder:hover .instaG-photoshadow{width:103px;height:98px}a.instaG-backg-link{position:relative;display:block}.instagram-placeholder .date{text-align:center;margin-bottom:5px;font-size:12px;height:20px;line-height:20px;font-weight:700;transition:all .15s ease-out .1s}.widget .instagram-placeholder .date{text-align:center;margin-bottom:5px;font-size:11px;height:15px;line-height:20px;font-weight:400!important}.instagram-placeholder .heart-comments-wrap ul{height:20px;margin:10px 0 0!important}.widgets .instagram-placeholder .heart-comments-wrap ul{height:15px;margin:6px 0 0!important}.heart-comments-wrap li{display:inline-block;margin:10px 0 0 .5em!important;padding:0 0 0 16px!important;line-height:10px!important;font-size:12px!important;font-weight:400!important;transition:all .15s ease-out .1s}.instagram-placeholder .fts-backg,.slicker-instagram-placeholder .slicker-date{-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}.widget .instagram-placeholder .heart-comments-wrap li{display:inline-block;margin:6px 0 5px 2px!important;pointer-events:none;padding:0 0 0 15px!important;line-height:10px!important;font-size:11px!important;border:none!important}.widget .instagram-placeholder .heart-comments-wrap .instagram-image-likes{margin-right:4px!important}.instagram-placeholder .fts-backg,.widget .instagram-placeholder .fts-backg{z-index:0;left:0;width:100%;margin:-5px;padding:5px;background:#fff;position:absolute}.instagram-placeholder .fts-backg{top:25px;height:150px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1);transition:all .15s ease-out .1s}.widget .instagram-placeholder .fts-backg{top:20px;height:100px;font-size:11px}.widget .date{font-size:11px}.instagram-placeholder:hover .fts-backg{margin:-28px -12px;padding:8px 12px;height:193px;-webkit-transition-delay:0;-moz-transition-delay:0;-o-transition-delay:0;transition-delay:0;-webkit-transition-duration:.1s;-moz-transition-duration:.1s;-o-transition-duration:.1s;transition-duration:.1s;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.2);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.2)}.widget .instagram-placeholder:hover .fts-backg{margin:-22px -10px;padding:5px 10px;height:135px}.instagram-image-likes{background:url(../images/hearts-instagram.jpg) no-repeat}.instagram-image-comments{background:url(../images/comments-instagram.jpg) no-repeat}.instagram-placeholder:hover .date,.instagram-placeholder:hover .instagram-image-comments,.instagram-placeholder:hover .instagram-image-likes{opacity:1;z-index:1;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;-o-transition-delay:.1s;transition-delay:.1s}.slicker-instagram-placeholder li,.slicker-instagram-placeholder ul{padding:0!important;margin:0!important;line-height:1.3em!important;border:none!important;width:auto!important;overflow:visible!important}.slicker-heart-comments-wrap{position:absolute;z-index:500;bottom:10px;right:12px}.slicker-instagram-placeholder p{margin:0;padding:0}.slicker-instagram-placeholder,.slicker-youtube-placeholder{position:relative;z-index:0;display:inline-block;overflow:hidden;background-size:cover;background-position:center center;background-repeat:no-repeat;vertical-align:top}.slicker-instagram-image{line-height:0!important;position:relative;z-index:1;background-color:#000;display:block}.slicker-instagram-image img{line-height:normal!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important;-webkit-box-shadow:0 0 0 rgba(0,0,0,.175)!important;-moz-box-shadow:0 0 0 rgba(0,0,0,.175)!important;box-shadow:0 0 0 rgba(0,0,0,.175)!important;margin:0!important;padding:0!important;border:none!important;width:100%}.slicker-instaG-photoshadow{bottom:0;left:0;position:absolute;right:0;top:0;z-index:1;-webkit-transition:background-color .05s ease-out;-moz-transition:background-color .05s ease-out;-o-transition:background-color .05s ease-out;transition:background-color .05s ease-out;vertical-align:middle}.slicker-instagram-placeholder:hover .slicker-instaG-photoshadow{background-color:rgba(0,0,0,.7);-webkit-transition:background-color .01s ease-out;-moz-transition:background-color .01s ease-out;-o-transition:background-color .01s ease-out;transition:background-color .01s ease-out;border:1px solid rgba(0,0,0,.12)}a.slicker-instaG-backg-link{position:relative;display:block}.slicker-instagram-placeholder .fts-share-wrap,.slicker-instagram-placeholder .slicker-date{margin-bottom:5px;font-size:13px;line-height:20px;font-weight:400;position:absolute;transition:all .15s ease-out .1s;height:20px;color:#fff;opacity:0;text-align:center}.slicker-instagram-placeholder .fts-share-wrap{bottom:-10px;left:4px;z-index:50000000}.slicker-instagram-placeholder .slicker-date{top:10px;left:15px;z-index:500;pointer-events:none}.slicker-instagram-placeholder .slicker-heart-comments-wrap ul{height:20px;margin:10px 0 0!important}.fts-mashup-count-wrap .slicker-heart-comments-wrap li,.slicker-instagram-placeholder .slicker-heart-comments-wrap li{display:inline-block;margin:0!important;pointer-events:none;padding:0 0 0 10px!important;line-height:10px!important;font-size:12px!important;font-weight:400!important;color:#fff;text-align:center;position:relative;z-index:1;opacity:0;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}body .fts-mashup-count-wrap li{opacity:1!important}.fts-mashup .fts-jal-fb-see-more,.fts-mashup .fts-single-pin-like-count,.fts-mashup .fts-single-pin-repin-count,.fts-mashup a.ft-gallery-link-popup,body .fts-mashup-count-wrap a,body .fts-mashup-count-wrap li{color:#777!important}a.fts-slicker-backg{height:68px;width:68px;line-height:68px;font-size:68px;top:0;bottom:0;left:0;right:0;margin:auto;z-index:700;position:absolute;text-align:center;vertical-align:middle;opacity:0;color:rgba(255,255,255,.27)}.slicker-instagram-placeholder .fts-instagram-icon:before{content:"\f16d";font-size:100%;display:inline-block;-webkit-transition:all 1s ease-out 0;-moz-transition:all 1s ease-out 0;-o-transition:all 1s ease-out 0}.slicker-instagram-placeholder a.fts-slicker-backg:hover{opacity:1;color:rgba(255,255,255,.55);-webkit-transition:all 0 ease-out 0;-moz-transition:all 0 ease-out 0;-o-transition:all 0 ease-out 0}.slicker-instagram-image-likes:before{content:"\f004";margin-right:5px}.fts-slicker-instagram{margin:auto;text-align:center}.instagram-placeholder:hover .fts-see-on-instagram,.slicker-instagram-placeholder:hover .fts-see-on-instagram,.slicker-instagram-placeholder:hover .fts-share-wrap,.slicker-instagram-placeholder:hover .fts-slicker-backg,.slicker-instagram-placeholder:hover .slicker-date,.slicker-instagram-placeholder:hover .slicker-instagram-image-comments,.slicker-instagram-placeholder:hover .slicker-instagram-image-likes{opacity:1;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;-o-transition-delay:.1s;transition-delay:.1s}.fts-comment-instagram:before{font-family:FontAwesomeSlick!important;content:"\f075"!important;-webkit-font-smoothing:antialiased;margin-right:5px;font-size:13px!important;display:inline-block;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:FlipH;position:relative;top:-1px;right:-4px}.fts-see-on-instagram div:before,.fts-view-on-instagram-link:before{content:"\f138 ";font-family:FontAwesomeSlick}.fts-see-on-instagram{position:absolute;bottom:11px;right:12px;opacity:0;z-index:750;-webkit-transition:all .15s ease-out .1s;-moz-transition:all .15s ease-out .1s;-o-transition:all .15s ease-out .1s}.widget .instagram-placeholder .fts-see-on-instagram{position:absolute;top:19px;right:6px;z-index:750;display:none}.instagram-placeholder .fts-see-on-instagram{position:absolute;bottom:2px;right:6px;opacity:0;z-index:750}.fts-see-on-instagram div{display:inline-block;cursor:pointer;font-weight:400!important}.instagram-placeholder .fts-see-on-instagram div{display:block;cursor:pointer;font-weight:400!important}.widget .instagram-placeholder .fts-see-on-instagram div:before{color:#fff;font-size:14px}.instagram-placeholder .fts-see-on-instagram div:before{color:#888;font-size:13px}.slicker-instagram-placeholder .fts-see-on-instagram div:before{color:#fff;font-size:14px}.fts-see-on-instagram div:before{display:inline-block}.fts-view-on-instagram-link:before{display:inline-block;margin-right:6px}.fts-instagram-caption{display:none}.fts-instagram-fade .mfp-title p{color:#fff!important;margin:0 0 10px!important;padding:0!important}.fts-instagram-fade .mfp-title a{color:#fff;text-decoration:none!important}.fts-instagram-fade .mfp-title a:hover{color:#eee}.instagram-social-btn-bottom,.instagram-social-btn-top{text-align:center;font-size:14px!important;background:#517fa4;border-radius:4px;width:167px;color:#fff;line-height:15px;padding:7px 0!important}.instagram-social-btn-top{margin:0 auto 15px}.instagram-social-btn-bottom{margin:15px auto 0}.instagram-social-btn-bottom:hover,.instagram-social-btn-top:hover{opacity:.9}#fts-social-bar-icons-wrap .instagram-social-btn-bottom a,#fts-social-bar-icons-wrap .instagram-social-btn-top a{color:#fff!important;font-weight:100!important;display:inline-block;text-decoration:none!important}#fts-social-bar-icons-wrap .instagram-social-btn-top a:hover{color:#fff!important}.instagram-social-btn-bottom a,.instagram-social-btn-top a{color:#fff!important;font-weight:100!important;display:inline-block;text-decoration:none!important}.instagram-social-btn-bottom a:hover,.instagram-social-btn-top a:hover{color:#fff;font-weight:100!important}.instagram-social-btn-bottom:before,.instagram-social-btn-top:before{font-family:FontAwesomeSlick;content:"\f16d ";display:inline-block;margin-right:6px;font-size:16px!important;-webkit-font-smoothing:antialiased}.fts-pinterest-boards-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fts-fb-slideshow,.fts-fb-slideshow *,.fts-yt-videolist *{box-sizing:border-box}.fts-pinterest-wrapper{text-align:center;margin:auto;position:relative}a.fts-pin-board-wrap:link{text-decoration:none!important;border-bottom:0}a.fts-pin-board-wrap{border-radius:10px!important;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;-moz-box-shadow:0 1px 3px 0 rgba(0,0,0,.33);display:inline-block;text-decoration:none;padding:10px 9px 10px 10px;margin:8px 8px 0;text-align:left}a.fts-pin-board-wrap:hover{background:#fff;border-radius:10px}.fts-pin-board-wrap .label,.fts-single-pin-description a,.fts-single-pin-pinned-to-wrap{text-decoration:none!important}h3.fts-pin-board-board_title,h3.fts-pin-board-board_title span{-webkit-font-smoothing:antialiased!important;display:block!important}.fts-pin-board-wrap:hover .hoverMask,.pinterest-single-thumb-wrap:hover .hoverMask{background:rgba(255,255,255,.1)}h3.fts-pin-board-board_title{width:210px;color:#555!important;font-size:16px!important;font-weight:700!important;margin:7px 0 5px 7px!important;padding:0!important;position:relative!important;font-family:"Helvetica Neue",arial,sans-serif!important;line-height:15px!important;clear:both}div.fts-pin-board-img-wrap,div.pinterest-single-thumb-wrap{background-size:cover;background-position:center center;background-repeat:no-repeat;position:relative;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px}h3.fts-pin-board-board_title span{white-space:nowrap!important;overflow:hidden!important;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;text-transform:capitalize}a.fts-pin-board-wrap{-webkit-border-radius:0;overflow:hidden}div.fts-pin-board-img-wrap{vertical-align:top;border-radius:10px 10px 0 0!important;overflow:hidden;clear:both;height:115px;-moz-box-shadow:0 0 3px rgba(0,0,0,.33) inset}.fts-pin-board-thumbs-wrap div:last-child{margin-right:0;border-bottom-right-radius:10px!important;border-bottom-left-radius:0!important}.fts-pin-board-wrap{max-width:254px;width:100%}.fts-pin-board-thumbs-wrap{min-height:50px}div.pinterest-single-thumb-wrap{margin-right:2px;margin-top:2px;height:108px!important;border-bottom-left-radius:10px!important;width:49.58%;display:inline-block}.fts-pin-board-img-wrap .hoverMask,.pinterest-single-thumb-wrap .hoverMask{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.33) inset;-moz-box-shadow:0 0 3px rgba(0,0,0,.33) inset;box-shadow:0 0 3px rgba(0,0,0,.33) inset;bottom:0;left:0;position:absolute;right:0;top:0}.fts-pin-board-wrap .fts-pin-board-pin-count{-webkit-font-smoothing:antialiased;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:inset 0 0 5px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:inset 0 0 5px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.3);box-shadow:inset 0 0 5px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.3);text-shadow:0 -1px 0 rgba(0,0,0,.7);background-color:#000;background-color:rgba(68,68,68,.7);bottom:3px;color:#fff;padding:0 6px;position:absolute;left:3px;font-family:"Helvetica Neue",arial,sans-serif!important;font-size:12px!important;font-weight:700;line-height:21px}.fts-pin-board-pin-count:before{content:'';width:7px;height:9px;background:url(../images/pinterest-icons.png) -137px -87px no-repeat;display:inline-block;margin-right:3px}.fts-pin-board-wrap .label{font-weight:700;text-align:left!important;line-height:1.1em!important;white-space:nowrap;display:inline-block;position:relative;margin-bottom:inherit;padding:0!important;font-size:.7875rem;background:0 0!important;color:#fff}.widget .fts-pin-board-thumbs-wrap,.widget h3.fts-pin-board-board_title{display:none!important}.widget div.fts-pin-board-img-wrap{position:relative;overflow:hidden;clear:both;min-height:100px;height:auto;width:auto;border-radius:10px!important}.widget a.fts-pin-board-wrap{width:40%;padding:6px;margin:4px 4px 0!important;border-radius:1px!important}.widget div.fts-pin-board-img-wrap{-webkit-box-shadow:0 0 1px rgba(0,0,0,.11) inset!important;-moz-box-shadow:0 0 1px rgba(0,0,0,.11) inset;box-shadow:0 0 0 transparent inset!important;margin-bottom:0}.pinterest-single-thumb-wrap .hoverMask,.widget .fts-pin-board-img-wrap .hoverMask{-webkit-box-shadow:0 0 0 rgba(0,0,0,.33) inset;-moz-box-shadow:0 0 0 rgba(0,0,0,.33) inset;box-shadow:0 0 0 rgba(0,0,0,.33) inset}.fts-single-pin-wrap{background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.22);box-shadow:0 1px 2px 0 rgba(0,0,0,.22);border-radius:6px;width:236px!important;margin:14px 7px 0;border:none!important;text-align:left;overflow:hidden}.fts-single-pin-description{margin:10px 15px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;font-size:13px;line-height:17px;word-wrap:break-word}.fts-single-pin-img-wrap img{-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border-top-left-radius:6px;border-top-right-radius:6px;max-width:100%}.fts-single-pin-social-meta-wrap{font-family:Helvetica,sans-serif;font-size:11px;color:#999;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;margin:-13px 10px 7px 15px}.fts-single-pin-social-meta-wrap .fts-single-pin-repin-count{margin:10px 12px 0 0;display:inline-block;font-size:13px}.fts-single-pin-social-meta-wrap .fts-single-pin-repin-count:before{font-family:FontAwesomeSlick;margin-right:5px;font-size:12px!important;content:"\f08d"}.fts-single-pin-social-meta-wrap .fts-single-pin-like-count{font-size:13px!important}.fts-single-pin-social-meta-wrap .fts-single-pin-like-count:before{font-family:FontAwesomeSlick;content:"\f086"!important;margin-right:5px;font-size:13px!important}.fts-single-pin-pinned-to-title,.fts-single-pin-pinned-to-wrap{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:block;overflow:hidden}.fts-single-pin-pinned-to-wrap{line-height:15px;padding:10px;border-radius:0 0 6px 6px;border:none!important;border-top:1px solid #e7e7e7!important}.fts-single-pin-pinned-to-wrap:hover{background:#eee;cursor:pointer}.fts-single-pin-pinned-to-wrap div{color:#999;display:block;font-weight:700;font-size:11px;font-family:Helvetica,sans-serif}.fts-single-pin-pinned-to-text{color:#999}div.fts-single-pin-pinned-to-title{color:#717171}.fts-single-pin-pinned-to-wrap img{position:relative;border-radius:2px;height:30px;margin-right:5px;width:30px;float:left}.fts-single-pin-pinned-to-title{border-radius:0 0 6px 6px}.fts-single-attribution-wrap{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;font-family:Helvetica,sans-serif;color:#666;margin:-2px 0 5px 15px!important;font-size:11px;display:block;border:none!important;line-height:1.6471}.fts-yt-vids-in-row1 .fts-yt-videolist ul li:first-child,.fts-yt-vids-in-row1 li .entriestitle{display:none}.fts-yt-vids-in-row3 li .entriestitle,.fts-yt-vids-in-row4 li .entriestitle{font-size:85%!important;line-height:100%!important}.fts-single-attribution-wrap img{height:16px;margin-right:5px;position:relative;width:16px;float:left}.pinterest-social-btn-top{margin-bottom:0;text-align:center}.widget .pinterest-social-btn-top{margin-bottom:5px;text-align:center}.pinterest-social-btn-bottom{margin-top:5px;text-align:center}.fts-yt-videolist iframe{width:100%}.fts-yt-vids-in-row1 div.fts-yt-videolist p{padding-bottom:25px;clear:both}.fts-yt-first-video p{margin:10px 10px 25px!important}.fts-yt-videolist ul,.fts-yt-vids-in-row1 ul li{margin:0!important;padding:0!important}#secondary .front-widgets .fts-yt-large iframe{height:100%!important;max-height:300px!important;min-height:300px!important}.widget .fts-yt-videolist ul li{margin-bottom:0!important;list-style:none!important}.fts-yt-videolist ul{width:100%!important}.fts-yt-videolist ul li{list-style:none!important}.fts-yt-vids-in-row1 li{width:100%!important;margin-bottom:5%}.fts-yt-vids-in-row2 li,.fts-yt-vids-in-row3 li,.fts-yt-vids-in-row4 li{float:left;border:none;position:relative;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;padding:1%!important;margin:0!important}.fts-yt-vids-in-row1 li iframe{width:100%}.fts-yt-vids-in-row2 li{width:50%!important}.fts-yt-vids-in-row3 li{width:33.3%!important}.fts-yt-vids-in-row4 li{width:25%!important}.fts-yt-vids-in-row2 li .entriestitle,.fts-yt-vids-in-row3 li .entriestitle,.fts-yt-vids-in-row4 li .entriestitle{padding:0 5px;position:absolute;left:0;top:20%;opacity:0;width:87.5%;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fts-yt-vids-in-row2 li:hover .entriestitle,.fts-yt-vids-in-row3 li:hover .entriestitle,.fts-yt-vids-in-row4 li:hover .entriestitle{background:#000;border-radius:0;color:#fff;padding:5% 6%;opacity:.9;z-index:100;right:0;line-height:18px;font-size:90%;font-weight:700;box-shadow:0 4px 8px #333;display:block}.fts-yt-vids-in-row2 li:hover,.fts-yt-vids-in-row3 li:hover,.fts-yt-vids-in-row4 li:hover{background-color:rgba(0,0,0,.9);box-shadow:0 1px 10px #333;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-yt-overlay-wrap{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;z-index:-1!important;background-color:rgba(0,0,0,.75);text-align:center;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;transition:opacity .2s ease-out;pointer-events:none;box-shadow:0 2px 500px #000}body .fts-yt-overlay-wrap.fts-yt-target{display:block;opacity:1;z-index:9999999!important;-webkit-transition:opacity .5s ease-in;-moz-transition:opacity .5 ss ease-in;transition:opacity .5s ease-in;pointer-events:auto}.fts-fb-video-icon,.fts-watermark-inside{pointer-events:none}.fts-yt-overlay{max-width:775px;opacity:1;z-index:300;position:absolute;top:0;bottom:0;right:0;left:0;max-height:472px;padding:10px;background:#444;margin:auto!important;box-shadow:0 2px 200px #000}.fts-yt-overlay-wrap iframe{margin:0;min-height:343px;background:#000!important;margin-bottom:0!important}.fts-yt-popup-close{display:block;position:absolute;top:-19px;right:0;background:#444;color:#fff!important;text-decoration:none;font-size:85%;font-family:verdana;font-weight:400;padding:.5% 2.5% 0;line-height:20px}.widget .fts-yt-first-video p{font-size:12px!important;margin-bottom:10px!important;margin-top:5px}.widget .fts-yt-videolist li{margin:0!important;line-height:0!important}.widget .fts-yt-videolist ul{padding-bottom:15px!important;float:left}.fts-yt-vids-in-row1 ul li iframe{margin-bottom:12px!important}@media only screen and (max-width:775px){.fts-yt-overlay{background:0 0;box-shadow:0 0 0 #000}.fts-yt-popup-close{background:0 0}}.widget .fts-yt-large .fts-yt-first-video iframe,.widget .fts-yt-vids-in-row1 li iframe{width:100%;height:0!important;min-height:100%!important;max-height:160px!important;padding:0}.fts-fluid-videoWrapper{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.fts-fluid-videoWrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;min-height:100%;background:#000;border:none}.fts-fluid-videoWrapper video{background:#000}.fts-jal-fb-vid-wrap{margin-top:10px;border-radius:0;-webkit-transition:background 2s;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.fts-jal-fb-vid-wrap iframe,.widget .fts-jal-fb-vid-wrap iframe{width:100%;margin:0!important;padding:0!important}.fts-vine-thumbnail .fts-vine-logo:before,.fts-vine-thumbnail-cover,.popup-video-gallery-fb span.fts-fb-video-icon:before{-webkit-transition:all .5s ease-out 0;-moz-transition:all .5s ease-out 0;-o-transition:all .5s ease-out 0;-webkit-font-smoothing:antialiased}.widget .fts-jal-fb-vid-wrap iframe{height:50%}.fts-yt-first-video h2{margin:0 0 7px!important}.youtube-social-btn-top{margin:0 0 5px!important}.youtube-social-btn-bottom{padding:10px 0 0 6px;clear:both}@keyframes fade{from,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes fade{from,to{opacity:1}50%{opacity:.5}}.fts-vine-wrapper{text-align:center}.fts-vine-video-wrap{text-align:left;display:inline-block;max-width:290px;vertical-align:top}.fts-vine-video-wrap a.fts-vine-author{display:block;margin:5px 0 0;padding:0}.fts-vine-white-popup .mfp-close{margin-top:-40px;font-size:35px;margin-right:-10px;color:#fff!important}.fts-vine-white-popup{position:relative;background:#fff;padding:20px;width:auto;max-width:640px;margin:30px auto}.fts-iframe-vine{padding-top:262px}.fts-vine-author{font-size:18px;line-height:24px}.fts-vine-text{font-size:13px;line-height:18px;padding:0 15px 15px 0}.fts-vine-thumbnail{display:block;position:relative;background:0 0!important}.fts-vine-thumbnail-cover{position:absolute;z-index:100;left:0;top:0;width:100%;height:100%;opacity:0;display:inline-block;cursor:pointer}.fts-vine-logo{font-size:27px}.fts-vine-thumbnail .fts-vine-logo:before,.popup-video-gallery-fb span.fts-fb-video-icon:before{font-family:FontAwesomeSlick;font-size:100%}.fts-vine-thumbnail .fts-vine-logo:before{content:"\f1ca"!important;display:inline-block;position:absolute;z-index:200;right:12px;top:5px;line-height:1.5;color:#00bf8f}.fts-vine-thumbnail-cover:hover{opacity:.3;background:#000}.fts-vine-thumbnail:hover .fts-vine-logo:before{color:#fff;text-shadow:2px 1px #555;-webkit-animation:wiggle .5s ease;animation:wiggle .5s ease}@-webkit-keyframes wiggle{0%,100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}60%{-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}80%{-webkit-transform:rotate(30deg);transform:rotate(30deg)}}@keyframes wiggle{0%,100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}60%{-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}80%{-webkit-transform:rotate(30deg);transform:rotate(30deg)}}@media only screen and (max-device-width:736px){.fts-iframe-vine{padding-bottom:14%!important}.fts-vine-white-popup{padding:0}}.post-5593 .entry-content{text-align:center}.fts-fb-video-popup{position:relative;background:0 0;padding:20px 60px;width:auto;max-width:1400px;margin:30px auto}.fts-fb-video-popup .mfp-close{color:#fff!important;right:47px!important;top:-19px!important}@media only screen and (min-device-width:375px) and (max-device-width:667px){.fts-fb-video-popup{padding:20px!important}.fts-fb-video-popup .mfp-close{right:5px!important}}@media only screen and (min-device-width:414px) and (max-device-width:736px){.fts-fb-video-popup{padding:20px!important}.fts-fb-video-popup .mfp-close{right:5px!important}}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.fts-fb-video-popup video{min-height:400px}.fts-fb-video-popup{padding:10px!important}.fts-fb-video-popup .mfp-close{right:-2px!important;top:-25px!important}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape){.fts-fb-video-popup video{min-height:600px}}.fts-view-fb-videos-largeeee:before{content:"";display:inline-block;margin-right:6px;-webkit-font-smoothing:antialiased;background:url(../images/fb-play-btn.png);height:80px;width:80px}.fts-fb-photo-post-wrap:hover a.fts-slicker-backg{opacity:1;outline:0!important;color:#fff}.popup-video-gallery-fb span.fts-fb-video-icon:before{content:"\f144"!important;display:inline-block!important;opacity:.5!important;color:#fff;outline:0!important}.popup-video-gallery-fb span.fts-fb-video-icon:hover:before{opacity:.8!important;color:#fff}.popup-video-gallery-fb a.visible-video-button{opacity:9!important;outline:0!important;z-index:1500}.popup-video-gallery-fb .fts-fb-load-more{max-width:340px;margin:20px auto}.fts-fb-social-btn-center,.popup-video-gallery-align-center{text-align:center;font-size:0}.fts-fb-social-btn-right,.popup-video-gallery-align-right{text-align:right}.fts-fb-social-btn-left,.popup-video-gallery-align-left{text-align:left}.cycle-slideshow .fts-jal-fb-picture{max-width:100%!important}.popup-video-gallery-fb .fts-fb-photo-post-wrap{vertical-align:top!important;display:inline-block!important;float:none;text-align:left;border-radius:0;max-width:100%;max-height:100%;box-sizing:border-box}.popup-video-gallery-fb .fts-fb-photo-post-wrap .fts-jal-fb-user-name{padding-top:0!important}.fts-review-star,.fts-reviews-star{background:#4791ff;color:#fff;font-weight:400;padding:2px 12px;border-radius:15px;border:none!important}.fts-review-details-master-wrap .fts-review-star{background:#4791ff;color:#fff;font-weight:400;padding:11px 12px 9px 17px;border-radius:30px;margin:0 12px 0 0;font-size:20px;float:left;vertical-align:top;line-height:22px}.fts-review-star{font-size:13px;font-style:normal;white-space:nowrap}.fts-review-star a{background:#4791ff;color:#fff}.fts-reviews-feed .fts-jal-fb-post-time{padding-top:10px!important}.fts-review-star:after{content:"";font-size:14px}.fts-reviews-feed .fts-jal-fb-message{margin-top:5px}.fts-reviews-feed .fts-jal-fb-user-name{margin-top:0;font-size:14px}.fts-jal-fb-vid-picture .fts-fluid-videoWrapper-html5{display:none}.fts-fluid-videoWrapper .fluid-width-video-wrapper{position:initial}.fts-jal-fb-user-thumb img{width:50px;max-width:100%}.fts-jal-fb-description p{line-height:17px!important;white-space:normal!important}.fts-checked-in-text-link{display:inline-block;padding-bottom:0}.fts-checked-in-img{float:left;margin-right:10px;max-width:160px}.fts-checked-in-get-directions{margin-top:5px}.fts-instagram-fade .mfp-title,.fts-instagram-fade .mfp-title a{font-size:13px}.fts-fluid-videoWrapper-html5{margin-top:10px;width:100%}.fts-fb-slideshow.slideshow .fts-fb-photo-post-wrap{position:relative!important;float:none;display:inline-block}.fts-fb-slideshow{width:100%;padding:0;overflow:hidden}.fts-fb-slideshow>a{position:absolute;top:0;left:0;width:100%;padding:0;background-color:#222;display:block}.fts-fb-slideshow>a>img{width:100%;position:static;display:block}.fts-fb-slideshow>div{position:absolute;top:0;left:0;padding:0}.composite-example>div{background:#fff}.composite-example>div>img{display:block}.composite-example>div .cycle-overlay{color:#fff;background:#000;opacity:.6;position:absolute;bottom:0;width:100%;padding:0}.fts-slider-center{text-align:center;padding:2px 0;background:#171717;position:relative;display:block;min-height:35px;font-size:15px;line-height:30px}.fts-slider-center span{display:inline-block;position:absolute;-webkit-text-size-adjust:none}.fts-cycle-slide p{margin:0;padding:0}.fts-prevControl-icon:before{content:'\f0a8';font-family:FontAwesomeSlick!important;font-size:24px}.fts-custom-caption{text-align:center;position:absolute;width:100%;left:0;top:2px;font-size:13px!important;line-height:30px;font-weight:700;z-index:0;letter-spacing:1px}.fts-nextControl-icon:before{font-size:24px;content:'\f0a9';font-family:FontAwesomeSlick!important}.fts-prevControl-icon{left:8px;z-index:1;cursor:pointer}.fts-nextControl-icon{right:7px;z-index:1;cursor:pointer}.fts-nextControl-icon:hover,.fts-prevControl-icon:hover{opacity:.8!important}.fb-social-btn-top{width:100%!important;overflow:hidden}.fts-instagram-fade.mfp-ready .mfp-figure{opacity:1!important}.page-id-6026 #main-header{display:none}.page-id-6026 #page-container{padding-top:0!important}.page-id-6026 .container{margin:0 auto!important;max-width:100%!important;width:100%!important}.fts-slider-icons-center{display:block;line-height:30px}.fts-pager-option{top:10px;position:relative}.fts-pager-option-top{bottom:0;position:relative;top:5px}.fts-pager-option,.fts-pager-option-top{text-align:center;width:100%;z-index:500;display:block}.fts-pager-option span{font-size:47px;width:15px;height:15px;line-height:10px;display:inline-block}.fts-pager-option span.cycle-pager-active,.fts-pager-option span:hover{opacity:.5}.fts-pager-option>*{cursor:pointer}.fts-fb-vid-popup .mfp-iframe-holder .mfp-close,.fts-fb-vid-popup .mfp-inline-holder .mfp-close{top:-50px!important;font-size:54px!important;font-weight:100;font-family:inherit}.fts-facebook-popup.mfp-bg,.fts-vine-vid-popup.mfp-bg{opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}.fts-facebook-popup.mfp-bg.mfp-ready{opacity:.8;z-index:99999990}.fts-facebook-popup.mfp-bg.mfp-removing{opacity:0}.fts-facebook-popup.mfp-wrap .mfp-content{opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}.fts-facebook-popup.mfp-wrap.mfp-ready .mfp-content{opacity:1}.fts-facebook-popup.mfp-wrap.mfp-removing .mfp-content{opacity:0}.fts-facebook-popup .mfp-close{left:0!important;margin-left:4px!important;background:0 0!important;cursor:zoom-out!important;border:none!important;box-shadow:none!important;font-size:27px!important;font-family:'Open Sans',Arial,sans-serif!important;font-weight:600!important;top:-42px!important;opacity:.5!important}.fts-facebook-popup .mfp-close:before{display:none!important}.fts-facebook-popup .mfp-iframe-holder .mfp-content,.fts-facebook-popup .mfp-inline-holder .mfp-content{max-width:1400px}.fts-facebook-popup .mfp-iframe-scaler iframe,.fts-facebook-popup .mfp-iframe-scaler video{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:none!important;background:#000;right:0;margin:auto}.fts-facebook-popup .mfp-title{padding:20px;background:rgba(255,255,255,.11);margin-top:21px}.fts-facebook-popup .fts-popup-wrap{max-width:1400px;margin:0 auto;padding:0;vertical-align:middle;width:100%;position:relative}.fts-facebook-popup .fts-popup-half{width:75%;float:left;background:#000;text-align:center;vertical-align:middle;height:100%;position:relative;z-index:88888888}.fts-facebook-popup .fts-popup-second-half{height:100%;width:25%;position:relative;float:left}.fts-facebook-popup .fts-popup-second-half .mfp-bottom-bar{margin:0;position:absolute!important;top:0;right:0;width:100%;cursor:auto;color:#000;overflow:auto}.fts-facebook-popup .fts-popup-wrap img.mfp-img{width:auto;max-width:100%;display:initial;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;vertical-align:middle}.fts-facebook-popup .fts-popup-wrap .mfp-counter{position:relative;bottom:0;text-align:right;right:10px;color:#c1c1c1!important;font-size:12px;line-height:18px;white-space:nowrap;display:inline-block;float:right;top:initial;margin:5px 0}.fts-facebook-popup .fts-position-helper{display:inline-block;height:100%;vertical-align:middle}.fts-facebook-popup .fts-popup-image-position{min-height:527px;width:100%;background:#000;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none}.fts-facebook-popup .fts-popup-wrap .mfp-title{padding:0;background:rgba(255,255,255,.11);margin:0}.fts-facebook-popup .fts-popup-second-half .mfp-title a{color:#0f6fad;text-decoration:none!important}.fts-youtube-popup .fts-popup-second-half .mfp-title a{color:#0f6fad!important}.fts-facebook-popup .mfp-figure:after{content:'';position:absolute;left:0;top:0;bottom:0;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#fff}.fts-facebook-popup .fts-popup-wrap .mfp-title p,.fts-instagram-caption-content .fts-popup-wrap .mfp-title p{color:#000!important;margin:0 0 10px!important;padding:0!important}.fts-facebook-popup .mfp-image-holder .mfp-content{max-width:1400px;width:100%}.fts-facebook-popup .fts-jal-fb-user-name{font-size:14px;margin-top:20px;padding-left:82px;display:block;padding-right:15px}.fts-facebook-popup .fts-fb-caption,.fts-facebook-popup .fts-non-popup-text,.hide-date-likes-comments-etc{display:none!important}.fts-facebook-popup .fts-jal-fb-post-time{padding-left:82px}.fts-facebook-popup .fts-instagram-caption-content,.fts-facebook-popup .fts-jal-fb-message{padding:10px 20px 0}.fts-facebook-popup .fts-fb-caption a{font-size:13px}.fts-facebook-popup i:before{margin-left:0!important;font-style:normal!important;font-size:15px!important}.fts-facebook-popup .icon-file:before{font-size:15px!important}#fts-photo-next:hover:after,#fts-photo-prev:hover:after,.fts-popup-half:hover #fts-photo-next:after,.fts-popup-half:hover #fts-photo-prev:after{opacity:1!important;-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}#fts-photo-next:after,#fts-photo-prev:after{font-family:FontAwesomeSlick;font-size:58px!important;font-weight:100;opacity:0;color:#fff;border:none!important;margin-top:-20px!important}#fts-photo-next:after{content:"\f105"}#fts-photo-prev:after{content:"\f104"}.fts-facebook-popup .mfp-arrow{background:0 0!important;width:48px!important;height:28px!important;line-height:normal!important;margin:-32px 0!important}.fts-facebook-popup .mfp-arrow:after{margin:0!important;top:0!important;border:none!important;width:48px!important;height:24px!important}.twitter-followers-fts.fts-tweets-first,.twitter-followers-fts:hover{border-bottom:4px solid #1b95e0!important}.fts-facebook-popup .mfp-arrow-left{left:5px!important}.fts-facebook-popup .mfp-arrow-right{right:5px!important}.fts-facebook-popup .fts-jal-fb-description.fts-jal-fb-description-popup,.fts-facebook-popup .hide-date-likes-comments-etc{display:inline-block!important}.fts-facebook-popup .mfp-arrow:before,.fts-iframe-popup-element,.fts-video-popup-element{display:none}.fts-jal-fb-description-popup{color:#444}.fts-facebook-popup .fts-jal-fb-description-wrap{max-height:300px;overflow:auto;max-width:100%;padding-left:20px!important;width:100%}.fts-facebook-popup *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}body .fts-facebook-popup a.fts-powered-by-text{margin:2px 20px!important;text-align:left!important;float:left!important;font-size:12px;color:#c1c1c1!important;width:auto!important;font-weight:400!important;line-height:18px!important}.fts-powered-by-text-popup a.fts-powered-by-text{display:block!important}.fts-facebook-popup .mfp-iframe-holder .mfp-bottom-bar,.fts-facebook-popup .mfp-inline-holder .mfp-bottom-bar{overflow:auto}.fts-fb-comments-content{float:left;width:100%;max-width:100%;background:#f6f7f9;padding:0 20px 20px}.fts-facebook-popup .fts-fb-location-title{font-size:15px;display:block;padding:0;font-weight:700;font-style:normal;margin:12px 0 0;color:#333}.ft-gallery-share-wrap .fa,.fts-share-wrap i{font-style:normal!important}.fts-facebook-popup .fts-instagram-caption-content,.fts-facebook-popup .fts-jal-fb-message{clear:both;font-size:15px;color:#333}.fts-facebook-popup .fts-fb-get-directions{font-size:15px;display:inline-block;padding:0 0 20px;color:#4595f0!important}.fts-facebook-popup .fts-fb-ticket-info{color:#4595f0!important}.fts-event-title-wrap{font-size:24px;line-height:24px}.fts-fb-comments-wrap{display:none!important}.fts-fb-comment{clear:both;float:left;width:100%;color:#222;margin:0;padding:15px 0 0;font-size:13px}.fts-fb-comment-user-pic{float:left;width:32px;height:32px;margin:0;border-radius:50px}.fts-fb-comment-msg{padding-left:42px;font-size:12px}.fts-fb-comment-user-name{font-weight:700;display:inline-block;font-size:12px}@media all and (max-width:900px){.fts-facebook-styles-popup .fts-popup-half,.fts-facebook-styles-popup .fts-popup-second-half{height:100%;width:100%;position:relative;float:none}.fts-facebook-styles-popup .fts-popup-half{background:#000;text-align:center;vertical-align:middle;z-index:500}.fts-facebook-styles-popup .mfp-bottom-bar{background:#fff;padding-bottom:10px}.fts-facebook-styles-popup .mfp-iframe-holder .mfp-content,.fts-facebook-styles-popup .mfp-inline-holder .mfp-content{top:0}.fts-facebook-styles-popup .mfp-iframe-holder .fts-popup-image-position,.fts-facebook-styles-popup .mfp-inline-holder .fts-popup-image-position{height:auto!important}.fts-facebook-styles-popup .mfp-container{padding-top:40px;padding-bottom:0}.fts-facebook-styles-popup .mfp-container:before{display:none}.fts-popup-image-position{min-height:50px!important}.fts-facebook-styles-popup .fts-popup-second-half .mfp-bottom-bar{height:auto!important;overflow:visible!important}}@media all and (max-width:640px){.fts-instagram-styles-popup .fts-popup-half,.fts-instagram-styles-popup .fts-popup-second-half{height:100%;width:100%!important;position:relative;float:none}.fts-instagram-styles-popup .fts-popup-half{background:#fff;text-align:center;vertical-align:middle;z-index:500}.fts-instagram-styles-popup .mfp-bottom-bar{background:#fff;padding-bottom:10px}.fts-instagram-styles-popup .mfp-iframe-holder .mfp-content,.fts-instagram-styles-popup .mfp-inline-holder .mfp-content{top:0}.fts-instagram-styles-popup .mfp-iframe-holder .fts-popup-image-position{height:auto!important}.fts-instagram-styles-popup .mfp-container{padding-top:40px;padding-bottom:0}.fts-instagram-styles-popup .mfp-container:before{display:none}.fts-popup-image-position{min-height:50px!important}.fts-instagram-styles-popup .fts-popup-second-half .mfp-bottom-bar{height:auto!important;overflow:visible!important}}@media all and (min-width:1900px){.fts-facebook-popup .fts-popup-second-half.fts-instagram-popup-second-half{float:left!important}.fts-facebook-popup .fts-popup-second-half{height:100%;width:100%;position:relative;float:left}.fts-facebook-popup .fts-popup-half{background:#000;text-align:center;vertical-align:middle;z-index:500;width:100%}.fts-facebook-popup .mfp-bottom-bar{background:#fff;padding-bottom:10px}.fts-facebook-popup .mfp-iframe-holder .mfp-content,.fts-facebook-popup .mfp-inline-holder .mfp-content{top:0}.fts-facebook-popup .mfp-iframe-holder .fts-popup-image-position,.fts-facebook-popup .mfp-inline-holder .fts-popup-image-position{height:auto!important}.fts-facebook-popup .mfp-container{padding-top:40px;padding-bottom:0}.fts-facebook-popup .mfp-container:before{display:none}.fts-popup-image-position{min-height:50px!important}.fts-facebook-popup .fts-popup-second-half .mfp-bottom-bar{height:auto!important;overflow:visible!important;min-height:auto!important}}.fts-twitter-backg-image,.fts-twitter-backg-image img{margin:0!important;padding:0!important;position:relative;z-index:99}.fts-instagram .image-overlay,.fts-instagram .image-overlay-inside,.fts-instagram .image-overlay.overlay-type-extern,.fts-jal-fb-group-display .image-overlay-inside,.fts-jal-single-fb-post .image-overlay,.fts-jal-single-fb-post .image-overlay-inside,.fts-jal-single-fb-post .image-overlay.overlay-type-extern,.fts-mashup .image-overlay,.fts-mashup .image-overlay.overlay-type-extern,.fts-pinterest-wrapper .image-overlay,.fts-pinterest-wrapper .image-overlay-inside,.fts-pinterest-wrapper .image-overlay.overlay-type-extern,.fts-profile-pic a .image-overlay,.fts-profile-pic a .image-overlay-inside,.fts-profile-pic a .image-overlay.overlay-type-extern,.fts-slicker-facebook-photos .image-overlay,.fts-slicker-facebook-photos .image-overlay-inside,.fts-slicker-facebook-photos .image-overlay.overlay-type-extern,.fts-tweeter-wrap .image-overlay,.fts-tweeter-wrap .image-overlay-inside,.fts-tweeter-wrap .image-overlay.overlay-type-extern,.fts-vine-content .image-overlay,.fts-vine-content .image-overlay-inside,.fts-vine-content .image-overlay.overlay-type-extern,.fts-yt-videolist .image-overlay,.fts-yt-videolist .image-overlay-inside,.fts-yt-videolist .image-overlay.overlay-type-extern{display:none!important}.fts-facebook-popup.mfp-ready .mfp-figure{opacity:1}ul.fts-sidebar-menu ul.fts-social-bar-icons-wrap ul li{margin:0!important}.fts-instagram-inline-block-centered{text-align:center;font-size:0;margin:auto}#facebook-sidebar .fts-fb-comments-wrap{display:none}.fts-twitter-backg-image img{display:block!important;width:100%}.fts-twitter-backg-image .twitter-social-btn-top{position:absolute!important;bottom:5px;left:10px;z-index:100}.fts-twitter-followers-wrap{background:#fff;padding:1px 5px 0 0;margin-bottom:10px;text-align:center;color:#1b95e0!important}.twitter-followers-fts{text-align:center;display:inline-block;padding:5px 15px;font-size:18px;font-weight:600!important}.twitter-followers-fts a,.twitter-followers-fts-singular a{font-weight:400!important;letter-spacing:.02em;text-transform:uppercase}.twitter-followers-fts a{display:block;color:#66757f!important;font-size:11px;transition:color .15s ease-in-out}.twitter-followers-fts:hover{transition:border .15s ease-in-out}.fts-tweets-first,.fts-tweets-first a,.twitter-followers-fts:hover a{color:#1b95e0!important}.fts-tweet-others-right{margin-left:65px}.fts-tweet-reply-left{float:left;display:inline-block}.fts-twitter-reply-wrap a{color:rgba(144,147,148,.71)}body .fts-twitter-favorites-wrap:hover{color:#c32525!important}.fts-twitter-favorites-wrap{margin-left:20px}body .fts-twitter-reply-wrap.fts-twitter-full-width{margin-left:0!important;margin-top:0}.twitter-followers-fts-singular{font-size:15px;padding:5px 0 0}.twitter-followers-fts-singular a{color:#66757f!important;font-size:11px}.twitter-social-btn-top a,.twitter-social-btn-top iframe{color:#fff!important}@media (max-width:400px){.twitter-followers-fts{padding:5px 10px;font-size:15px!important;font-weight:500!important}}.fts-twitter-full-name{font-size:14px!important}a.fts-twitter-at-name{font-size:12px!important;color:#999!important;font-weight:400!important}.fts-profile-wrap{clear:both;display:block}.fts-clear{clear:both}.fts-profile-pic{float:left;margin:0 25px 20px 0;max-width:125px}.fts-profile-pic a:hover{opacity:.8}.fts-isnta-full-name{padding:0 0 10px;float:left;margin:4px 20px 0 0}.fts-profile-name-wrap .fts-follow-header-wrap{font-size:14px;display:inline-block;letter-spacing:0;padding:7px 10px;border-radius:4px;border:1px solid #5dba00;line-height:18px}.fts-profile-description{font-size:15px;line-height:22px}.fts-profile-name-wrap{font-size:32px;margin-bottom:18px;letter-spacing:2px;line-height:28px}.fts-profile-pic img{border-radius:50%;max-width:100%}.fts-profile-stats{margin:0 0 5px}.fts-profile-stats span{font-weight:700;display:inline-block}.fts-profile-stats div{font-size:15px;display:inline-block;margin-right:20px;margin-bottom:10px}.fts-profile-wrap{max-width:630px;margin:auto;padding:0 0 20px}.fts-facebook-popup .fts-instagram-caption-content a{color:#003569!important}.fts-facebook-popup a.ft-gallery-link-popup,.fts-facebook-popup a.fts-jal-fb-see-more{font-size:12px;text-align:right;margin-top:15px;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:13px 20px 11px 40px;background:#f6f7f9;display:block!important;width:100%!important}.fts-instagram-popup-profile-wrap{display:none}.fts-facebook-popup.fts-instagram-styles-popup .fts-profile-pic{display:block;padding:15px 10px 0 15px;margin:0}.fts-facebook-popup.fts-instagram-styles-popup .fts-profile-pic img{display:block;width:40px}.fts-facebook-popup.fts-instagram-styles-popup .fts-isnta-full-name{font-size:17px;letter-spacing:normal;color:#333}.fts-facebook-popup.fts-instagram-styles-popup .fts-profile-name-wrap{padding-top:15px}.fts-follow-header-wrap{margin-right:15px;color:#5dba00}.fts-follow-header-wrap a{color:#5dba00!important}.fts-facebook-popup.fts-instagram-styles-popup .fts-insta-date-popup-grab{clear:both;text-align:right;margin:55px 15px -8px!important;color:#999;border-top:1px solid #eee;padding-top:12px;font-size:14px}.fts-facebook-popup.fts-instagram-styles-popup a.fts-view-on-instagram-link{margin:20px 15px 0;padding:10px 0!important;color:#9f9f9f!important}.fts-facebook-popup.fts-instagram-styles-popup .fts-view-on-instagram-link:before{font-size:15px;top:1px;position:relative;margin-left:5px}.fts-facebook-popup.fts-instagram-styles-popup .fts-follow-header-wrap{float:right;margin:0 15px 20px 0;color:#5dba00;font-size:12px}.fts-facebook-popup.fts-instagram-styles-popup .heart-comments-wrap,.fts-facebook-popup.fts-instagram-styles-popup .slicker-heart-comments-wrap{position:relative;color:#444!important;margin:0 0 0 15px!important;font-size:14px;width:auto!important;left:0}.fts-facebook-popup.fts-instagram-styles-popup .heart-comments-wrap li,.fts-facebook-popup.fts-instagram-styles-popup .slicker-heart-comments-wrap li{display:inline-block;margin-right:15px!important;margin-top:-5px!important;opacity:1}.fts-facebook-popup.fts-instagram-styles-popup .fts-comment-instagram:before{font-size:14px}.fts-facebook-popup.fts-instagram-styles-popup .fts-popup-half.fts-instagram-popup-half{width:64%}.fts-facebook-popup.fts-instagram-styles-popup .fts-popup-second-half.fts-instagram-popup-second-half{width:36%}.fts-facebook-popup.fts-instagram-styles-popup .fts-instagram-popup-half .fts-popup-image-position{min-height:auto!important}.fts-facebook-popup.fts-instagram-styles-popup .fts-popup-second-half .mfp-bottom-bar{margin:0;position:absolute!important;top:0;right:0;width:100%;cursor:auto;color:#000;overflow:auto;min-height:200px}.fts-facebook-popup.fts-instagram-styles-popup .mfp-iframe-holder .mfp-content,.fts-facebook-popup.fts-instagram-styles-popup .mfp-image-holder .mfp-content,.fts-facebook-popup.fts-instagram-styles-popup .mfp-inline-holder .mfp-content{max-width:1000px;width:100%}.fts-facebook-popup.fts-instagram-styles-popup .heart-comments-wrap{margin:-18px 0 0 15px!important}.fts-facebook-popup a.fts-view-on-instagram-link{font-size:12px;text-align:left;margin-top:15px;border-top:1px solid #eee;border-bottom:1px solid #eee;color:#555!important;padding:10px 20px;background:#fff;display:block}.fts-mashup-post-wrap{padding:0!important;border-bottom:1px solid rgba(184,184,184,.3);line-height:17px;margin-bottom:10px;position:relative;display:inline-block;width:100%}.fts-mashup-type-name{clear:both;width:100%;display:block;background:#f7f7f7;margin-bottom:10px;box-shadow:1px 1px 0 #ddd}.fts-mashup-type-name span{display:block;padding:0 7px 3px 0;text-align:right;font-size:10px;color:#bfbfbf;line-height:14px}.fts-mashup-count-wrap{width:100%;clear:both;display:block;padding-top:12px;text-align:left;margin-bottom:6px;float:left}.fts-mashup-count-wrap a{display:inline-block;font-size:13px}.fts-mashup-count-wrap .fts-tweet-reply-left{float:none;display:inline-block}.fts-mashup-description-wrap{clear:both;padding-top:5px;line-height:18px}.fts-jal-fb-post-time{margin-bottom:8px}.twitter-video{min-width:200px!important}.fts-mashup .fts-mashup-image-and-video-wrap{margin-top:8px;position:relative;line-height:0}.fts-mashup-count-wrap .slicker-heart-comments-wrap{position:relative;top:inherit;bottom:inherit;margin:0!important}.fts-mashup-count-wrap .slicker-heart-comments-wrap li.slicker-instagram-image-likes{padding-left:0!important}.fts-mashup .fts-twitter-description-image{margin-top:0!important}.fts-mashup .fts-single-pin-social-meta-wrap{margin:0}.fts-mashup .fts-single-pin-social-meta-wrap span{margin-top:0;font-size:14px}.fts-mashup .fts-youtube-title{font-weight:700;font-size:12px;padding:8px 0 0;line-height:14px}.fts-mashup-post-wrap .fts-jal-single-fb-post{padding-top:0!important}.fts-mashup .fts-jal-single-fb-post{border-bottom:none}.fts-mashup .fts-jal-fb-picture,.fts-mashup .fts-jal-fb-vid-picture{margin-top:0}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb a:before,.fts-mashup-instagram-icon a:before,.fts-mashup-pinterest-icon a:before,.fts-mashup-twitter-icon a:before,.fts-mashup-wp_gallery-icon a:before,.fts-mashup-youtube-icon a:before{font-family:FontAwesomeSlick;font-size:32px;font-weight:100!important}.fts-mashup-instagram-icon a:before{content:"\f16d";font-size:37px;top:2px;position:relative}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb a:before{content:"\f09a";top:2px;position:relative;left:8px;font-size:30px}.fts-mashup-hide-fb-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb a:before{content:""}.fts-mashup-twitter-icon a:before{content:"\f099";top:0;position:relative;left:3px}.fts-mashup-pinterest-icon a:before{content:"\f231";position:relative;top:3px;left:5px}.fts-mashup-youtube-icon a:before{content:"\f167";position:relative;top:2px;left:4px}.fts-mashup-icon-wrap-left.fts-mashup-youtube-icon a:before{top:0;left:2px}.slicker-instagram-placeholder .ft-text-for-popup-content{padding:5px 15px;opacity:0;z-index:10;position:relative;color:#fff}.slicker-instagram-placeholder .fts-mashup-count-wrap{opacity:0;z-index:10;position:absolute;bottom:-5px;left:5px;color:#fff}.slicker-instagram-placeholder:hover .fts-mashup-count-wrap a{color:#fff!important;font-size:12px}.slicker-instagram-placeholder .fts-mashup-count-wrap a{color:#fff;font-size:12px}.slicker-instagram-placeholder:hover .ft-text-for-popup-content,.slicker-instagram-placeholder:hover .fts-mashup-count-wrap{opacity:1;color:rgba(255,255,255,.88)}.slicker-instagram-placeholder .ft-gallery-link-popup{font-size:14px;position:absolute;bottom:10px;left:10px}.ft-gallery-link-popup:before{font-family:FontAwesomeSlick;content:"\f14d ";display:inline-block;margin-right:6px;-webkit-font-smoothing:antialiased;font-size:16px;margin-top:1px;margin-left:1px}.fts-mashup-wp_gallery-icon a:before{content:"\f19a";position:relative;top:2px;left:4px}.fts-mashup-icon-wrap-left.fts-mashup-wp_gallery-icon a:before{top:0;left:2px}.fts-mashup-icon-wrap-right.fts-mashup-wp_gallery-icon{margin-top:3px;margin-right:5px}.slicker-instagram-placeholder .ft-wp-gallery-icon{margin-top:-12px;margin-right:0}.fts-mashup-icon-wrap-left.fts-mashup-twitter-icon a:before{top:0;left:3px}.fts-mashup-type-icon-spacer{clear:both;width:100%;display:block;background:#f7f7f7;margin-bottom:2px}.fts-feed-type-wp_gallery .fts-mashup-description-wrap{margin:0 0 15px}.fts-mashup .fts-feed-type-facebook .fts-jal-fb-user-thumb,.fts-mashup-hide-fb-thumb.fts-feed-type-facebook .fts-jal-fb-user-thumb{display:none!important}.fts-feed-type-facebook .fts-mashup-icon-wrap-left a:before,.fts-feed-type-facebook .fts-mashup-icon-wrap-right a:before{content:"\f09a";top:2px;position:relative;left:9px;font-size:28px!important}.fts-mashup-type-icon{float:left;height:40px;margin:15px 10px 0 0}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb{width:40px;height:45px;float:left;margin:0}.fts-mashup .fts-jal-single-fb-post .fts-jal-fb-user-thumb a,.fts-mashup-icon-wrap{float:left;height:45px;width:40px;padding-top:13px;position:relative;margin-top:0!important;text-decoration:none!important}.fts-mashup-hide-fb-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb a{float:left;height:50px;width:50px;padding-top:0;position:relative;margin-top:0!important;text-decoration:none!important}.fts-mashup-hide-fb-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb{width:50px;height:50px;float:left;margin:0 15px 0 0}.fts-mashup .fts-jal-fb-message{line-height:18px;padding-top:5px}.fts-mashup-count-wrap a,.fts-mashup-icon-wrap a{text-decoration:none!important}.fts-mashup .fts-jal-fb-post-time{padding-top:3px}.fts-mashup .fts-likes-shares-etc-wrap{float:left;width:100%;padding:0}.fts-mashup .icon-thumbs-up:before,.fts-single-pin-social-meta-wrap,.fts-tweet-reply-left{margin-left:5px!important}.fts-mashup .fts-jal-fb-see-more,.fts-mashup .fts-mashup-count-wrap .slicker-heart-comments-wrap li,.fts-mashup .slicker-instagram-placeholder .slicker-heart-comments-wrap li{font-size:12px!important}.fts-mashup .fts-comment-instagram:before,.fts-mashup .fts-jal-fb-see-more .icon-comments:before,.fts-mashup .fts-jal-fb-see-more .icon-file-up:before,.fts-mashup .fts-jal-fb-see-more .icon-thumbs-up:before{font-size:14px}.fts-mashup-icon-wrap-right{float:right}.fts-mashup-icon-wrap-right a{text-decoration:none!important;font-size:12px}.fts-mashup-icon-wrap-left a:before,.fts-mashup-icon-wrap-right a:before{font-family:FontAwesomeSlick;font-weight:100!important;top:12px}.fts-mashup-icon-wrap-right.fts-mashup-facebook-icon{position:relative;right:18px;top:13px;z-index:1}.fts-mashup-hide-fb-icon.fts-feed-type-facebook .fts-mashup-icon-wrap-right a:before{font-size:30px!important}.fts-mashup-icon-wrap-left{float:left;margin:16px 12px 0 0}.fts-feed-type-pinterest .fts-mashup-icon-wrap-left a:before{left:4px;top:0}.fts-mashup .fts-feed-type-facebook .fts-jal-fb-user-thumb a:before{font-family:FontAwesomeSlick!important;content:"\f09a"!important;top:2px!important;position:relative!important;left:8px!important;font-size:29px!important}.fts-mashup .fts-mashup-icon-left .fts-jal-fb-user-thumb{display:none!important}.fts-feed-type-facebook.fts-mashup-hide-fb-thumb .fts-jal-fb-user-thumb,.fts-mashup .fts-mashup-hide-fb-icon-and-thumbnail.fts-feed-type-facebook .fts-jal-fb-user-thumb,.fts-mashup-hide-fb-icon-and-thumbnail .fts-jal-fb-user-thumb,.fts-mashup-icon-left .fts-jal-fb-user-thumb img{display:none!important}.fts-mashup-icon-left .fts-feed-type-facebook .fts-jal-fb-user-thumb a:before{content:''!important}.fts-mashup-icon-left.fts-feed-type-facebook.fts-mashup-hide-fb-thumb .fts-jal-fb-user-thumb{display:block!important}body div.fts-mashup-hide-fb-thumbnail-icon .fts-jal-fb-user-thumb a:before{display:none}body div.fts-mashup-hide-fb-thumbnail-icon .fts-jal-fb-user-thumb{width:50px!important;height:50px!important;margin-right:10px!important;margin-bottom:10px!important}body .fts-mashup .fts-mashup-hide-fb-thumbnail-icon .fts-jal-single-fb-post .fts-jal-fb-user-thumb a{width:50px!important;height:50px!important;margin-top:0!important;padding:0!important}.fts-mashup .fts-likes-shares-etc-wrap a{color:#777}.fts-mashup-error-notice{margin-bottom:25px}.fts-mashup-icon-left .fts-mashup-error-notice{margin-left:45px}.fts-mashup-icon-wrap-left a{text-decoration:none!important}.fts-mashup-icon-wrap-right.fts-mashup-youtube-icon a:before{left:-2px!important;top:15px}.fts-mashup-icon-wrap-right.fts-mashup-twitter-icon a:before{left:-2px!important}.fts-mashup-icon-wrap-right.fts-mashup-pinterest-icon a:before{left:0!important}.fts-mashup .fts-jal-fb-user-name{margin-right:23px}.fts-mashup-media-top.fts-mashup-post-wrap .fts-jal-fb-user-name{margin-left:10px;padding-top:0}.fts-mashup-media-top .fts-jal-fb-user-name{margin-left:10px}.fts-mashup .fts-jal-fb-message p,.fts-mashup-description-wrap p{margin:4px 0 5px!important}.fts-single-pin-meta-wrap .fts-single-pin-social-meta-wrap{margin-left:15px!important}.fts-review-details-wrap{margin-top:0}.fts-review-details-master-wrap{display:block;clear:both;padding:10px 10px 15px;background:#fff;border-bottom:1px solid rgba(184,184,184,.3)}.fts-reviews-overall-rating-stars{margin:auto}.fts-review-details-wrap{padding:5px 0 0;line-height:17px}.fts-review-details-master-wrap-no-background-or-border{background:0 0!important;border:none!important}.fts-slicker-twitter-posts .fts-tweeter-wrap .tweeter-info{padding:11px 0 7px}.fts-slicker-twitter-posts .fts-twitter-image{margin-left:11px!important}.fts-slicker-twitter-posts .tweeter-info .fts-twitter-full-width{padding:0 10px 10px}.fts-slicker-twitter-posts .tweeter-info .fts-twitter-full-width.fts-twitter-reply-wrap{padding:0 10px 2px}.tweeter-info .twitter-video{margin:0 -8px -5px!important}.fts-fb-get-directions,.fts-fb-ticket-info{display:inline-block}.fts-fb-ticket-info:before{content:'|';margin-left:10px;margin-right:10px}.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-post-time,.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-user-name,.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-description-wrap{padding-right:15px}.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-description-wrap{margin-top:20px;margin-bottom:25px;padding-left:20px!important}.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-user-name{margin-top:12px;padding-left:20px!important}.fts-facebook-popup .ft-text-for-popup-content .fts-jal-fb-post-time{padding-left:20px!important}.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-icon-wrap-right.fts-mashup-wp_gallery-icon{margin-right:20px!important;margin-top:-1px}.fts-facebook-popup a.ft-gallery-link-popup{font-size:12px;text-align:left;margin-top:15px;border-top:0 solid #eee;border-bottom:0 solid #eee;padding:14px 20px 10px;background:0 0;display:inline-block;float:left}.fts-facebook-popup .ft-text-for-popup-content .fts-mashup-description-wrap p{padding-top:0;line-height:21px;word-wrap:break-word;font-size:15px;color:#333}.ft-text-for-popup-content{text-align:left}.fts-slicker-facebook-photos .ft-text-for-popup-content .fts-jal-fb-post-time{color:#9d9d9d!important;margin-top:0}.ft-image-overlay{position:absolute;top:0;left:0;height:100%;width:100%}.fts-popup-second-half .fts-watermark-inside{display:none!important}.fts-watermark-inside-center{position:absolute;top:50%;text-align:center;transform:translateY(-50%);width:100%}.fts-watermark-inside-top-center{position:absolute;text-align:center;top:0;width:100%}.fts-watermark-inside-bottom-center{position:absolute;bottom:0;text-align:center;width:100%}.fts-watermark-inside-bottom-left{position:absolute;bottom:0}.fts-watermark-inside-bottom-right{position:absolute;text-align:right;bottom:0;width:100%}.fts-watermark-inside-top-right{position:absolute;width:100%;top:0;text-align:right}.fts-watermark-inside-top-left{position:absolute;text-align:left;top:0;width:100%}.fts-watermark-inside img{max-width:100%;height:auto;display:inline-block;margin:0}.fts-mashup-image-and-video-wrap .fts-watermark-inside img{max-width:75%!important}.ft-gallery-share-wrap{display:none;margin-top:0;position:absolute;left:20px;background:#fff;top:-8px;min-width: 116px;box-shadow:2px -2px 3px 0 rgba(187,187,187,.8);width:100%;z-index:1000;text-align:left;}.fts-popup-second-half .ft-gallery-share-wrap{left:50px;background:#f6f7f9;top:8px}.ft-gallery-share-wrap a{display:inline-block!important}.fts-share-wrap{padding:0;float:left;width:auto;margin:9px 0 0;display:inline-block;position:relative;z-index:1}a.fts-jal-fb-see-more{width:auto!important;display:inline-block!important;text-align:left}.ft-gallery-share-wrap .fa{display:inline-block!important;font-family:FontAwesomeSlick!important;font-weight:400!important;line-height:1!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ft-gallery-share-wrap .fa-facebook-square:before{content:"\f082";font-size:17px!important}.ft-gallery-share-wrap .fa-linkedin:before{content:"\f0e1";font-size:16px!important}.ft-gallery-share-wrap .fa-google-plus:before{content:"\f0d5";font-size:16px!important}.ft-gallery-share-wrap .fa-pinterest-plus:before{content:"\f0d2";font-size:15px!important}.ft-gallery-share-wrap .fa-twitter:before{content:"\f099";font-size:19px!important;top:1px;position:relative}.ft-gallery-share-wrap .fa-envelope:before{content:"\f0e0";font-size:16px!important}.ft-gallery-link-popup{margin:5px 0 0!important}.ft-gallery-share-wrap a:hover{opacity:.8}.fts-slicker-facebook-photos .fts-share-wrap a{color:#fff!important}.fts-slicker-facebook-photos .fts-mashup-count-wrap{clear:both;display:block!important;top:-21px;left:16px}.fts-slicker-facebook-photos .fts-likes-shares-etc-wrap{outline:0;z-index:5000!important;color:#fff;position:absolute;bottom:10px!important;display:none;width:100%;text-align:left}.fts-slicker-facebook-photos .fts-jal-fb-see-more{bottom:0!important;position:absolute;left:10px}.fts-mashup-post-wrap.fts-feed-type-facebook .fts-mashup-count-wrap.fts-share-wrap{margin:10px 3px 0 0;padding:0}.fts-mashup-post-wrap.fts-feed-type-facebook .fts-mashup-count-wrap.fts-share-wrap a.ft-gallery-link-popup{margin:0!important}.fts-mashup-post-wrap.fts-feed-type-facebook .ft-gallery-share-wrap{top:-7px}.fts-mashup-count-wrap.fts-share-wrap .ft-gallery-link-popup{margin-top:0!important}.fts-twitter-reply-wrap{float:left}.fts-instagram-reply-wrap-left,.fts-pinterest-reply-wrap-left,.fts-youtube-reply-wrap-left{float:right}.fts-tweeter-wrap .fts-share-wrap{padding:7px 0 0;margin-top:10px}.ft-gallery-share-wrap a{margin:7px 5px;font-size:13px}.fts-tweeter-wrap .ft-gallery-share-wrap{top:-10px}.fts-tweeter-wrap .fts-mashup-count-wrap a{display:inline-block;margin:7px 5px;font-size:13px}body .fts-slicker-facebook-photos .fts-tweeter-wrap .ft-gallery-share-wrap{max-width:132px!important;width:100%!important}.fts-tweeter-wrap .ft-gallery-link-popup{font-size:13px}.fts-twitter-reply-wrap-left{float:right;padding:10px 10px 0;margin-top:10px}.fts-tweet-others-right a{display:inline-block}.fts-twitter-reply-wrap .fts-share-wrap{margin-top:10px;padding:0}.fts-share-wrap .fts-share-wrap{margin-top:10px}.fts-twitter-reply-wrap .fts-share-wrap a.ft-gallery-link-popup{margin-top:0!important}.fts-slicker-twitter-posts .fts-twitter-reply-wrap-left{padding:0 10px 2px!important;margin:10px 0 0!important}.ft-galleryfacebook-icon{margin-left:11px!important}.fts-mashup-post-wrap .fts-tweet-reply-left{margin-right:35px;padding:0 5px}.fts-mashup-post-wrap .fts-twitter-reply-wrap-left{padding:0;margin-top:0}.fts-share-wrap .ft-gallery-link-popup{margin:0!important;font-size:12px}.fts-mashup-count-wrap .fts-share-wrap{margin:0!important}.fts-instagram-reply-wrap-left{margin-right:8px}.fts-popup-second-half .fts-share-wrap{margin:15px 0 -64px}.fts-popup-second-half .mfp-title .ft-gallery-share-wrap a{color:#137fc4}.fts-instagram-styles-popup .fts-share-wrap .ft-gallery-share-wrap a,.fts-instagram-styles-popup .fts-share-wrap a.ft-gallery-link-popup{color:#444}.fts-youtube-reply-wrap-left a{font-size:12px}.fts-mashup-post-wrap.fts-feed-type-facebook .fts-jal-fb-see-more{margin-bottom:-1px;text-transform:none!important}.fts-instagram-styles-popup .ft-gallery-link-popup,.fts-instagram-styles-popup .fts-share-wrap{margin:0!important;padding:0!important}.fts-instagram-styles-popup .fts-instagram-reply-wrap-left{float:left;margin-left:20px}.fts-instagram-styles-popup .fts-share-wrap{background:#fff;top:-11px;left:19px;position:relative;z-index:1000}.fts-instagram-styles-popup .ft-gallery-share-wrap{top:-6px;left:25px;background:#fff}.fts-instagram-styles-popup .ft-gallery-link-popup:before{content:"\f064";margin-right:10px}.slicker-instagram-placeholder .ft-gallery-link-popup:before{content:"\f064";color:#fff;font-size:15px;position:relative;top:2px}.slicker-instagram-placeholder .ft-gallery-share-wrap{top:-19px;left:35px;box-shadow:2px -2px 3px 0 #222!important;background:#000}.slicker-instagram-placeholder .ft-gallery-share-wrap a{color:#fff}.fts-facebook-popup .ft-gallery-link-popup:before{font-family:FontAwesomeSlick;content:"\f064 ";margin-left:8px}.fts-mashup-count-wrap .fts-instagram-reply-wrap-left{margin-right:-8px}.fts-facebook-thumb-one,.fts-facebook-thumb-zero{margin-right:1px!important;display:inline-block;margin-bottom:1px!important}a.fts-facebook-thumbs-wrap{display:inline-block;max-width:515px}.fts-facebook-thumb-two{display:inline-block}.fts-image-count-tint-underlay{position:absolute;top:0;bottom:0;right:0;left:0;background:rgba(0,0,0,.5)}.fts-fb-thumbs-wrap,.fts-more-photos-auto-width .fts-fb-thumbs-wrap{position:relative;background-size:cover!important;background-position:center center!important;display:inline-block!important;overflow:hidden}.fts-fb-thumbs-wrap{margin-right:.233333%!important}.fts-2-photos.fts-fb-thumbs-wrap,.fts-more-photos-3-photos .fts-fb-thumb-two-wrap{margin-right:0!important}.fts-3-photos{max-width:33.1%}.fts-2-photos{max-width:49.77%}.fts-fb-more-photos-wrap .fts-jal-fb-picture{margin-bottom:1px!important}.fts-more-photos-auto-width{float:none!important;margin:10px 0 4px}.fts-more-photos-auto-width a{width:49.84%;margin:0!important}.fts-more-photos-auto-width .fts-fb-thumbs-wrap{max-width:100%;margin-right:0!important;margin-left:.2333333333%!important;margin:0 0 4px;z-index:0;background-repeat:no-repeat;vertical-align:top}.fts-more-photos-auto-width .fts-jal-fb-picture{float:none!important;display:inline-block!important;margin:0!important}.fts-more-photos-three-photo-wrap .fts-fb-thumbs-wrap{display:inline-block!important;max-width:100%;margin-right:.233333333%!important;margin:0 0 4px;width:49.887%;overflow:hidden;max-height:240px}.fts-fb-scrollable,.fts-twitter-scrollable,.fts-youtube-scrollable{overflow:auto}.ft-text-for-popup,.fts-slicker-facebook-albums .fts-fb-load-more-output,.fts-slicker-facebook-albums .fts-share-wrap,.fts-slicker-facebook-photos .fts-share-wrap,.fts-twitter-reply-wrap-left p{display:none}.fts-more-photos-three-photo-wrap .fts-fb-thumb-one-wrap{margin-right:0!important}.fts-image-count{position:absolute;bottom:50%;width:100%;top:50%;text-align:center;font-size:36px;color:#fff;line-height:36px;height:36px;transform:translate(0,-50%)}.fts-image-count span{position:relative;bottom:0;font-size:35px}.fts-fb-more-photos-wrap{width:100%}@media (max-width:375px){.fts-image-count,.fts-image-count span{font-size:20px}}@media (max-width:667px){.fts-image-count,.fts-image-count span{font-size:34px}}.ft-gallery-buy-now{margin:0 12px}.fts-mashup-post-wrap .fts-share-wrap,.fts-slicker-facebook-albums.ft-wp-gallery .fts-share-wrap{display:block}.fts-mashup-count-wrap .fts-twitter-reply-wrap.fts-twitter-no-margin-left,.fts-mashup-hide-date .fts-jal-fb-post-time,.fts-mashup-hide-name .fts-jal-fb-user-name,.fts-mashup-media-top .fts-jal-fb-description-wrap,.fts-mashup-media-top .fts-mashup-type-icon-spacer{display:none}.ft-wp-gallery .fts-share-wrap a{color:#777!important}.fts-slicker-facebook-posts img{max-width:100%}.fts-twitter-no-margin-left{margin-left:71px;clear:both}.fts-instagram-styles-popup .fts-comment-instagram:before{font-size:14px!important}.fts-smallerthan-180 .fts-instagram-link-target{padding-left:50%;padding-bottom:50%;padding-top:50%}.fts-smallerthan-180 .fts-instagram-link-target span:before{content:''!important}.fts-smallerthan-180 .fts-instagram-link-target:hover,.fts-smallerthan-180.slicker-instagram-placeholder:hover .slicker-instaG-photoshadow{background:0 0!important}.fts-instagram,.fts-instagram-scrollable{margin:auto}.fts-mashup-hide-name .fts-mashup-description-wrap,.fts-mashup-hide-name.fts-mashup-hide-date .fts-jal-fb-message{padding-top:0!important}.fts-mashup-description-wrap a{word-wrap:break-word}.fts-mashup-image-and-video-wrap.popup-gallery-twitter .twitter-video{margin:-8px!important}.fts-mashup-media-top .fts-mashup-image-and-video-wrap.popup-gallery-twitter{margin-top:0}.fts-mashup-media-top .fts-likes-shares-etc-wrap,.fts-mashup-media-top .fts-mashup-description-wrap,body .fts-mashup-post-wrap.fts-mashup-media-top .fts-jal-fb-message{padding:0 10px!important}.fts-mashup-media-top .fts-youtube-title{padding:10px 10px 0;display:none}.fts-mashup-post-wrap .fts-jal-single-fb-post .fts-jal-fb-vid-wrap .fts-jal-fb-description-wrap{padding:5px 10px 0!important}.fts-mashup-media-top .fts-mashup-count-wrap{padding:8px 10px 7px!important;margin-bottom:0;margin-top:4px}.fts-mashup-media-top .fts-likes-shares-etc-wrap{padding:7px 10px 8px!important;margin-bottom:0;margin-top:10px}.fts-mashup-media-top .fts-jal-single-fb-post{padding-bottom:0!important}.fts-mashup-media-top .fts-jal-fb-post-time{padding:5px 10px 7px!important}.fts-mashup-hide-thumbnail.fts-mashup-media-top .fts-jal-fb-user-name,.fts-mashup-hide-thumbnail.fts-mashup-media-top .fts-jal-single-fb-post .fts-jal-fb-user-name,.fts-mashup-media-top .fts-jal-fb-message{padding:0 10px!important}.fts-mashup-media-top .fts-jal-fb-see-more,.fts-mashup-media-top .fts-share-wrap{margin-top:0}.fts-mashup-media-top .fts-mashup-youtube-icon a:before{margin-right:8px!important;top:10px}.fts-mashup-media-top .fts-mashup-twitter-icon a:before{margin-right:8px!important;top:5px}.fts-mashup-media-top .fts-mashup-pinterest-icon a:before{margin-right:8px!important;top:9px}.fts-mashup-media-top .fts-mashup-instagram-icon a:before{margin-right:9px!important;top:9px}.fts-mashup-media-top .fts-mashup-icon-wrap-right.fts-mashup-facebook-icon{position:unset;right:unset;top:unset;z-index:1;float:right!important}.fts-mashup-media-top .fts-jal-fb-top-wrap{display:none!important}.fts-jal-fb-group-display.fts-mashup-media-top .fts-jal-single-fb-post .fts-jal-fb-top-wrap,.fts-mashup-hide-thumbnail .fts-jal-fb-user-thumb,.slicker-youtube-placeholder .entriestitle{display:none}.fts-mashup-media-top .fts-jal-fb-link-wrap,.fts-mashup-media-top .fts-jal-fb-vid-wrap{margin-top:0;margin-bottom:10px;text-align:center}.fts-mashup-media-top .fts-jal-fb-link-wrap .fts-jal-fb-picture,.fts-mashup-media-top .fts-jal-fb-vid-wrap{float:none}.fts-mashup-media-top .fts-jal-fb-picture,.fts-mashup-media-top .fts-jal-fb-vid-picture{margin-bottom:0!important}.fts-mashup-media-top .fts-mashup-icon-wrap-left{margin-left:10px;margin-right:5px;margin-top:3px;top:0}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-instagram-icon,.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-pinterest-icon{margin-top:2px;min-height:40px}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-instagram-icon{margin-right:0;margin-top:0}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-youtube-icon a:before{margin-right:8px!important;top:6px}.fts-mashup-media-top .fts-mashup-icon-wrap-right.fts-mashup-facebook-icon{margin-right:20px!important;margin-top:4px!important}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-facebook-icon{margin-top:8px!important}.fts-mashup-media-top .fts-mashup-icon-wrap-left.fts-mashup-youtube-icon{margin-top:5px!important}.fts-mashup-media-top .fts-mashup-image-and-video-wrap{margin-bottom:12px}.fts-mashup-media-top.fts-feed-type-facebook .fts-mashup-image-and-video-wrap.popup-gallery-twitter{margin:0}.fts-feed-type-facebook .fts-mashup-icon-wrap-left{margin-top:17px;margin-right:20px}.fts-mashup-icon-wrap-left.fts-mashup-instagram-icon{margin-top:3px}.fts-mashup-icon-wrap-left,.fts-mashup-icon-wrap-right{min-height:35px}.fts-jal-fb-group-display.fts-mashup-media-top .fts-jal-single-fb-post{padding-bottom:6px!important;border:none;margin-bottom:10px;background:#fff;margin-top:0!important;padding-top:0!important}.fts-mashup-media-top .fts-jal-fb-link-wrap a,.fts-mashup-media-top .fts-jal-fb-vid-picture{margin-top:0!important;line-height:0!important}.fts-mashup-media-top.fts-slicker-facebook-posts .fts-jal-single-fb-post{padding:0 0 8px!important}.fts-mashup-media-top .fts-jal-fb-user-thumb{margin-left:10px;margin-bottom:12px}.fts-yt-open{display:block;width:100%;height:100%;position:absolute}.fts-master-youtube-wrap .slicker-instagram-placeholder{position:relative;background-size:cover}.fts-facebook-popup.mfp-ready{z-index:99999999999999}.fts-youtube-popup h3{color:#111;padding:20px 40px 0 20px!important;margin-bottom:2px;font-size:24px;margin-top:0}.fts-youtube-popup h4{color:#222;padding:0 20px 4px!important;font-size:17px}.fts-youtube-description-popup{padding:0 20px 20px;color:#000}.fts-youtube-date{color:#9a9a9a;padding:0 20px 20px!important;font-size:13px}.fts-yt-open:hover{background:rgba(0,0,0,.5);cursor:pointer}.fts-master-youtube-wrap .slicker-youtube-placeholder{min-height:100px}.fts-youtube-popup-gallery,.fts-youtube-scrollable{clear:both;display:block}.fts-yt-open:hover:before{font-family:FontAwesomeSlick;content:"\f04b";display:block;font-size:32px;color:rgba(255,255,255,.54);position:absolute;top:45%;right:45%;left:43%}.fts-youtube-smallerthan-180 .fts-yt-open:hover:before{content:""}.fts-jal-fb-vid-picture a{margin:0}.fts-facebook-popup .mfp-inline-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.fts-more-photos-4-photos a{max-height:150px;display:inline-block;width:auto}.fts-more-photos-2-photos a{max-height:250px}.fts-youtube-scrollable .fts-fb-autoscroll-loader{background:0 0}.fts-yt-large.fts-youtube-thumbs-wrap{float:left}.fts-youtube-scrollable.fts-youtube-thumbs-wrap{float:right;clear:none}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-left{float:left;clear:none}.fts-yt-large.fts-youtube-thumbs-wrap-left{float:right}.fts-yt-large.fts-youtube-thumbs-wrap-option-80-20{width:80%}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-option-80-20{width:20%}.fts-yt-large.fts-youtube-thumbs-wrap-option-60-40{width:60%}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-option-60-40{width:40%}.fts-youtube-scrollable.fts-youtube-thumbs-wrap-option-50-50,.fts-yt-large.fts-youtube-thumbs-wrap-option-50-50{width:50%}.fts-fb-comment .image-overlay-inside{display:none}.fts-youtube-popup .fts-fb-comment img{border-radius:30px}.fts-youtube-popup span.fts-fb-comment-date{color:#a6a6a6;padding-left:2px;font-size:12px!important}.fts-youtube-popup .fts-popup-second-half .mfp-title .fts-fb-comment-user-name a{color:#333!important}.youtube-comments-wrap{background:#fff;text-align:left;color:#2d2d2d!important}.youtube-comments-wrap .fts-share-wrap{margin:15px 0 -64px}.youtube-comments-wrap .fts-youtube-description-popup{display:block;position:relative!important;margin-bottom:-25px;padding-bottom:30px}.youtube-comments-wrap .ft-gallery-share-wrap{left:50px;background:#f6f7f9;top:8px}.fts-facebook-popup .mfp-bottom-bar a.ft-gallery-link-popup,.fts-facebook-popup .mfp-bottom-bar a.fts-jal-fb-see-more{color:#137fc4}.fts-youtube-scrollable .youtube-comments-wrap #___ytsubscribe_0{margin:20px 20px 10px!important}.mfp-title .fts-master-youtube-wrap-close{display:none}.fts-master-youtube-wrap-close{color:#636363;right:3px;top:3px;text-align:right;padding:15px;width:50px;font-size:24px;font-weight:700;position:absolute}.fts-master-youtube-wrap-close:before{content:"X"}.youtube-comments-wrap{overflow:auto;display:none;position:relative}.youtube-comments-wrap h3{padding-top:18px!important}.fts-scrollable-function{height:auto}.fts-youtube-description-popup{font-size:14px!important}.fts-youtube-no-thumbs-gallery{padding:0!important}.fts-youtube-noscroll .youtube-comments-wrap{overflow:visible}.fts-youtube-smallerthan-550-stack{width:100%!important}.fts-jal-fb-user-thumb img{border-radius:50px!important}.fts-twitter-username img.twitter-image{border-radius:50px}.fts-youtube-second-video-margin-btm{margin-bottom:35px}.fts-share-wrap [class*=fa-]{width:auto;height:auto}.fts-popup-half .mfp-arrow-left,.fts-popup-half .mfp-arrow-right{height:auto;width:auto;border:none!important;margin-top:0!important}.fts-popup-half .mfp-arrow-left:after,.fts-popup-half .mfp-arrow-right:after{background:0 0!important;height:auto!important;top:0!important;left:0!important;margin:0!important;padding:0!important;cursor:pointer;transform:none!important;transition:none!important;-webkit-transition:none!important}.fts-popup-half audio,.fts-popup-half video{visibility:visible!important}.fts-album-photos-wrap{text-align:center}.fts-fb-more-photos-wrap,.fts-more-photos-4-photos{position:relative;top:-3px}#wp-admin-bar-feed_them_social_admin_bar_set_cache{padding-bottom:17px!important;line-height:0!important}#wp-admin-bar-feed_them_social_admin_bar_set_cache span{line-height:10px;display:block;color:rgba(221,221,221,.57)}#wp-admin-bar-feed_them_social_admin_bar_set_cache:hover span{line-height:10px;display:block;color:#fff}.fts-mashup-media-top.fts-mashup-hide-thumbnail .fts-jal-fb-user-name{margin-left:0!important}.fts-steemit-username{display:inline-block;background-size:cover;background-repeat:no-repeat;background-position:50% 50%;border-radius:50%;width:48px;height:48px;margin-bottom:5px}.fts-steemit-div .steemit-info img{margin:0!important}.steemit-info .fts-uppercase{margin:14px 0 10px 10px}.fts-steemit-title{font-size:18px;margin-bottom:10px;letter-spacing:1px;font-weight:400;line-height:21px;color:#0084b4}.fts-steemit-div .fts-twitter-retweet:before{content:"\f27a"!important;font-size:15px!important;top:1px}.fts-steemit-div .fts-twitter-favorites:before{content:'Votes:'!important;font-family:arial!important;font-size:14px!important;margin-right:3px!important;top:0;font-weight:700}.fts-steemit-div .fts-twitter-reply:before{font-family:FontAwesomeSlick;content:'\f06e'!important;position:relative;top:2px;font-size:19px}.fts-twitter-quoted-text-wrap{padding:0 0 10px;border:1px solid #efe8e8!important;margin-top:10px;font-size:13px}.fts-twitter-quoted-text-wrap a{font-size:13px!important}.fts-twitter-quoted-text-wrap .twitter-video-rendered{margin:auto!important}.fts-fluid-videoWrapper{margin-top:8px}.fts-twitter-quoted-text-wrap .fts-twitter-link-image img,.fts-twitter-quoted-text-wrap img{margin-top:0!important}.fts-twitter-quoted-text{display:inline-block!important;padding:8px 10px 0;line-height:18px}.fts-twitter-quoted-video .fts-twitter-quoted-text{padding-top:0!important}.fts-twitter-quoted-image{padding:8px}.fts-twitter-quoted-image .fts-twitter-quoted-text{padding:8px 2px 2px!important}.fts-fb-more-photos-wrap a:last-child{margin-right:0!important}.fts-fb-more-photos-wrap a:first-child{margin-left:0!important}.fts-yt-first-video .fts-fluid-videoWrapper{margin-top:0}.fts-twitter-quoted-video .fts-fluid-videoWrapper-html5,.fts-twitter-quoted-video .fts-jal-fb-vid-wrap{margin-top:0;margin-bottom:10px}.fts-fb-location-wrap{text-align:center;padding:15px}.fts-fb-location-img{display:block;margin-bottom:9px;height:20px}.fts-fb-location-img:before{content:"\f024";font-family:FontAwesomeSlick;font-size:28px;display:block}.fts-fb-location-link{margin-bottom:5px;display:block;font-size:16px}.fts-popup-second-half .fts-fb-location-wrap{color:#444}.fts-fb-embed-iframe-check-used-for-popup,.greater-than-or-equal-width-height{display:none!important}.fts-fb-video-on-page.fts-fluid-videoWrapper{padding-bottom:56%;padding-top:0;width:100%!important;height:auto!important}.fts-fb-video-on-page.fts-fluid-videoWrapper iframe{width:100%!important;height:auto!important}.fts-greater-than-width-height.fts-fb-video-on-page{margin-top:18px}.fts-greater-than-width-height.fts-fb-video-on-page iframe{padding-bottom:100%}.fts-equal-width-height{max-width:100%;padding-bottom:100%!important}.fts-comment-star:before{font-family:FontAwesomeSlick;content:"\f075";font-size:14px;margin:0 6px 0 -2px!important;padding:0!important;display:inline-block!important;border:none!important}.fts-mashup-error-notice-strong{display:block;font-size:16px;padding-bottom:5px}.fts-mashup-error-bottom-padding{padding-bottom:20px;display:block}.fts-mashup-error-check .fts-mashup-image-and-video-wrap{display:none}.fts-review-name span{margin-right:5px}.fts-mashup.masonry .fts-fluid-videoWrapper-html5{margin-top:0}.fts-child-media-hide{display:none}.fts-instagram-styles-popup .fts-carousel-image{position:absolute;right:25px;top:32px;text-align:right;font-size:21px;color:#fff;z-index:1}.fts-carousel-image-wrapper,.fts-instagram-video-image-wrapper{position:relative;right:18px;top:18px;text-align:right;font-size:20px;color:#fff;width:auto;float:right}.fts-carousel-image:before{font-family:FontAwesomeSlick;content:'\f24d'}.fts-instagram-video-image:before{font-family:FontAwesomeSlick;content:'\f03d'}.fts-instagram-popup-second-half .fts-carousel-image{display:none}.fts-child-media-popup .fts-carousel-image{display:block}.fts-carousel-image-wrapper,.fts-instagram-video-image-wrapper{position:relative;z-index:2}.slicker-instagram-placeholder a:focus{outline:auto!important}.fts-instagram-icon:before{font-family:FontAwesomeSlick!important;-webkit-font-smoothing:antialiased;content:"\f16d"}.slicker-instagram-placeholder{height:0;width:0}.fts-fb-album-additional-pics-description-wrap, .fts-popup-wrap .fts-fb-album-name-and-count {display:none}.fts-fb-album-description-content {padding-top: 5px !important;}a.ft-gallerygoogle-icon, .fts-facebook-styles-popup .fts-fb-album-hide {display:none !important;}.fts-facebook-popup .fts-fb-album-description-content .fts-jal-fb-user-name {padding-left:60px !important;margin-top:0px !important;}.fts-facebook-popup .fts-fb-album-description-content .fts-fb-album-date-wrap {padding-left:60px !important;color: #999;}.fts-facebook-popup .fts-fb-album-description-content .fts-jal-fb-user-thumb {margin-left:0 !important;} .fts-fb-album-date-wrap {margin-bottom:25px;}
feeds/facebook/class-fts-facebook-feed-post-types.php CHANGED
@@ -22,7 +22,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
22
  public function feed_location_option( $fb_places_id, $fb_name, $fb_places_name ) {
23
  echo '<div class="fts-fb-location-wrap">';
24
  echo '<div class="fts-fb-location-img"></div>';
25
- echo '<a href="' . esc_url( 'https://www.facebook.com/' . $fb_places_id . '/' ) . '" class="fts-fb-location-link" target="_blank">' . esc_attr( $fb_name ) . '</a>';
26
  echo '<div class="fts-fb-location-name">' . esc_html( $fb_places_name ) . '</div>';
27
  echo '</div>';
28
  }
@@ -41,12 +41,9 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
41
  */
42
  public function feed_post_types( $set_zero, $fb_type, $post_data, $fb_shortcode, $response_post_array, $single_event_array_response = null ) {
43
 
44
-
45
- //echo '<pre>';
46
- //print_r($lcs_array);
47
- //echo '</pre>';
48
-
49
-
50
  // echo 'ASDF';
51
  // Reviews Plugin.
52
  if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
@@ -87,6 +84,9 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
87
  // youtube and vimeo embed url.
88
  $fb_video_embed = isset( $post_data->source ) ? $post_data->source : '';
89
 
 
 
 
90
  // if (isset($post_data->format[1]->picture)) {.
91
  // $video_photo = $post_data->format[1]->picture;.
92
  // } elseif (isset($post_data->format[0]->picture)) {.
@@ -156,9 +156,8 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
156
  $fb_video = isset( $post_data->embed_html ) ? $post_data->embed_html : '';
157
  $fb_video_picture = isset( $post_data->format[2]->picture ) ? $post_data->format[2]->picture : '';
158
 
159
-
160
  if ( $fb_album_cover ) {
161
- // $photo_data = json_decode( $response_post_array[ $fb_album_cover . '_photo' ] );
162
  }
163
  if ( isset( $post_data->id ) ) {
164
  $fb_post_id = $post_data->id;
@@ -190,11 +189,10 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
190
  // Count Likes/Shares/.
191
  $lcs_array = $this->get_likes_shares_comments( $response_post_array, $post_data_key, $fb_post_share_count );
192
 
193
- //echo '<pre>';
194
- //print_r($lcs_array);
195
- //echo '</pre>';
196
-
197
- $fb_location = isset( $post_data->location ) ? $post_data->location : '';
198
  $fb_embed_vid = isset( $post_data->embed_html ) ? $post_data->embed_html : '';
199
  $fb_from_name = isset( $post_data->from->name ) ? $post_data->from->name : '';
200
  $fb_from_name = preg_quote( $fb_from_name, '/' );
@@ -215,15 +213,14 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
215
  // $fb_pictureGalleryDescription0 = isset($post_data->attachments->data[0]->subattachments->data[1]->description) ? $post_data->attachments->data[0]->subattachments->data[1]->media->image->src : '';.
216
  // $fb_pictureGalleryDescription1 = isset($post_data->attachments->data[0]->subattachments->data[2]->description)? $post_data->attachments->data[0]->subattachments->data[2]->media->image->src : '';.
217
  // $fb_pictureGalleryDescription2 = isset($post_data->attachments->data[0]->subattachments->data[3]->description) ? $post_data->attachments->data[0]->subattachments->data[3]->media->image->src : '';.
218
-
219
- // KZeni Edit: https://github.com/KZeni
220
- // February 25, 2019 - Uncommented Description variables so they can be used when making it so the pictures meet accessibility standards.
221
- $picture_from_fb = __( 'Picture from Facebook', 'feed-them-social' );
222
- $fb_pictureGalleryDescription0 = isset($post_data->attachments->data[0]->subattachments->data[1]->description) ? $post_data->attachments->data[0]->subattachments->data[1]->description : $picture_from_fb;
223
- $fb_pictureGalleryDescription1 = isset($post_data->attachments->data[0]->subattachments->data[2]->description)? $post_data->attachments->data[0]->subattachments->data[2]->description : $picture_from_fb;
224
- $fb_pictureGalleryDescription2 = isset($post_data->attachments->data[0]->subattachments->data[3]->description) ? $post_data->attachments->data[0]->subattachments->data[3]->description : $picture_from_fb;
225
-
226
- $fb_picture_gallery_link1 = isset( $post_data->attachments->data[0]->subattachments->data[1]->target->url ) ? $post_data->attachments->data[0]->subattachments->data[1]->target->url : '';
227
  $fb_picture_gallery_link2 = isset( $post_data->attachments->data[0]->subattachments->data[2]->target->url ) ? $post_data->attachments->data[0]->subattachments->data[2]->target->url : '';
228
  $fb_picture_gallery_link3 = isset( $post_data->attachments->data[0]->subattachments->data[3]->target->url ) ? $post_data->attachments->data[0]->subattachments->data[3]->target->url : '';
229
 
@@ -241,7 +238,9 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
241
  $custom_date_format = 'F jS, Y \a\t g:ia';
242
  }
243
 
244
- $created_time = isset( $post_data->created_time ) ? $post_data->created_time : '';
 
 
245
  $custom_time_format = strtotime( $created_time );
246
 
247
  if ( ! empty( $fb_story ) ) {
@@ -319,15 +318,23 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
319
 
320
  if ( 'top' !== $show_media ) {
321
 
322
- echo '<div class="fts-jal-fb-user-thumb">';
 
323
 
324
- echo ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? '' : '<a href="https://www.facebook.com/' . esc_attr( $post_data->from->id ) . '" target="_blank">' ) . '<img border="0" alt="' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? esc_attr( $post_data->reviewer->name ) : esc_attr( $post_data->from->name ) ) . '" src="' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? esc_url( $post_data->fts_profile_pic_url ) : 'https://graph.facebook.com/' .esc_attr( $post_data->from->id ) ) . '/picture"/></a>' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? '' : '</a>' );
 
325
 
326
- echo '</div>';
 
 
 
 
327
 
328
  // UserName.
329
  // $fts_facebook_reviews->reviews_rating_format CANNOT be esc at this time.
330
- echo ( 'reviews' === $fb_shortcode['type'] && is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ? '<span class="fts-jal-fb-user-name fts-review-name" itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">' . esc_attr( $post_data->reviewer->name ) . '</span>' . $fts_facebook_reviews->reviews_rating_format( $fb_shortcode, isset( $post_data->rating ) ? esc_html( $post_data->rating ) : '' ) . '</span>' : '<span class="fts-jal-fb-user-name"><a href="https://www.facebook.com/' . esc_attr( $post_data->from->id ) . '" target="_blank">' . esc_html( $post_data->from->name ) . '</a>' . esc_html( $fb_hide_shared_by_etc_text ) . '</span>' );
 
 
331
 
332
  // tied to date function.
333
  $feed_type = 'facebook';
@@ -335,7 +342,9 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
335
  $fts_final_date = $this->fts_custom_date( $times, $feed_type );
336
  // PostTime.
337
  // $fts_final_date CANNOT be esc at this time.
338
- echo '<span class="fts-jal-fb-post-time">' . $fts_final_date . '</span><div class="fts-clear"></div>';
 
 
339
  }
340
 
341
  if ( 'reviews' !== $fb_shortcode['type'] ) {
@@ -395,14 +404,24 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
395
 
396
  echo '<div class="fts-jal-fb-description-wrap">';
397
 
398
- $fb_name ? $this->fts_facebook_post_desc( $fb_name, $fb_shortcode, $fb_type, null, $fb_by ) : '';
399
-
400
- // Output Photo Caption.
401
  $fb_caption ? $this->fts_facebook_post_cap( $fb_caption, $fb_shortcode, $fb_type ) : '';
402
- // photo count.
403
- echo $fb_album_photo_count ? esc_html( $fb_album_photo_count ) . ' Photos' : '';
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  // Location.
405
- $fb_location ? $this->fts_facebook_location( $fb_type, $fb_location ) : '';
406
  // Output Photo Description.
407
  $fb_description ? $this->fts_facebook_post_desc( $fb_description, $fb_shortcode, $fb_type, null, $fb_by ) : '';
408
 
@@ -411,11 +430,62 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
411
  echo '<div class="fts-fb-caption fts-fb-album-view-link">';
412
  // Album Covers.
413
  if ( 'albums' === $fb_shortcode['type'] ) {
414
- echo '<a href="' . esc_url( $fb_album_cover ) . '" class="fts-view-album-photos-large" target="_blank">' . esc_html( 'View photo', 'feed-them-social' ) . '</a></div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  } elseif (
 
416
  // Album Photos.
417
  'album_photos' === $fb_shortcode['type'] && ( isset( $fb_shortcode['video_album'] ) && 'yes' !== $fb_shortcode['video_album'] || ! isset( $fb_shortcode['video_album'] ) ) ) {
418
- echo '<a href="' . esc_url( $fb_album_picture ) . '" class="fts-view-album-photos-large" target="_blank">' . esc_html( 'View Photo', 'feed-them-social' ) . '</a></div>';
 
419
  } elseif (
420
  // Video Albums.
421
  isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
@@ -432,7 +502,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
432
  echo '</div>';
433
  } else {
434
  // photos.
435
- echo '<a href="' . esc_url( $post_data->source ) . '" class="fts-view-album-photos-large" target="_blank">' . esc_html( 'View Photo', 'feed-them-social' ) . '</a></div>';
436
  }
437
 
438
  // echo '<div class="fts-fb-caption"><a class="view-on-facebook-albums-link" href="' . $fb_link . '" target="_blank">' . esc_html('View on Facebook', 'feed-them-social') . '</a></div>';.
@@ -549,7 +619,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
549
 
550
  // Output Photo Description.
551
  if ( ! empty( $event_cover_photo ) ) {
552
- echo isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] && is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ? '<a href="' . esc_url( $event_cover_photo ) . '" class="fts-jal-fb-picture fts-fb-large-photo" target="_blank"><img class="fts-fb-event-photo" src="' . esc_url( $event_cover_photo ) . '"></a>' : '<a href="https://www.facebook.com/events/' . esc_attr( $single_event_id ) . '" target="_blank" class="fts-jal-fb-picture fts-fb-large-photo"><img class="fts-fb-event-photo" src="' . esc_url( $event_cover_photo ) . '" /></a>';
553
  }
554
  echo '<div class="fts-jal-fb-top-wrap">';
555
  echo '<div class="fts-jal-fb-message">';
@@ -576,7 +646,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
576
  >' . esc_html( 'Get Directions', 'feed-them-social' ) . '</a>';
577
  }
578
  if ( ! empty( $fb_event_ticket_info ) && ! empty( $fb_event_ticket_info ) ) {
579
- echo '<a target="_blank" class="fts-fb-ticket-info" href="' . esc_url( $single_event_ticket_info->ticket_uri ) . '">' . esc_html( 'Ticket Info', 'feed-them-social' ) . '</a>';
580
  }
581
  // Output Message.
582
  if ( ! empty( $fb_shortcode['words'] ) && $event_description && is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
@@ -595,11 +665,11 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
595
  case 'link':
596
  echo '<div class="fts-jal-fb-link-wrap">';
597
  // start url check.
598
- if (!empty( $fb_link )) {
599
- $url = $fb_link;
600
- $url_parts = parse_url( $url );
601
- $host = $url_parts['host'];
602
- }
603
 
604
  if ( isset( $host ) && 'www.facebook.com' === $host ) {
605
  $spliturl = $url_parts['path'];
@@ -658,7 +728,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
658
  $fb_name ? $this->fts_facebook_post_name( $fb_link, $fb_name, $fb_type ) : '';
659
  if ( isset( $host ) && 'www.facebook.com' === $host && 'events' === $first_dir ) {
660
  echo ' &#9658; ';
661
- echo '<a href="' . esc_url( $fb_link ) . '" class="fts-jal-fb-name" target="_blank">' . esc_html( $fb_link_event_name ) . '</a>';
662
  }//end if event.
663
  // Output Link Description.
664
  $fb_description ? $this->fts_facebook_post_desc( $fb_description, $fb_shortcode, $fb_type ) : '';
@@ -710,7 +780,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
710
  }
711
  }
712
  // srl: 8/27/17 - FB BUG: for some reason the full_picture for animated gifs is not correct so we dig deeper and grab another image size fb has set.
713
- if ( isset($post_data->attachments->data[0]->type) && 'animated_image_video' === $post_data->attachments->data[0]->type ) {
714
  $vid_pic = $post_data->attachments->data[0]->media->image->src;
715
  } else {
716
  $vid_pic = $post_data->full_picture;
@@ -861,7 +931,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
861
  $photo_source = json_decode( $response_post_array[ $post_data_key . '_group_post_photo' ] );
862
  }
863
  // Group or page?
864
- $photo_source_final = isset( $post_data->full_picture ) ? $post_data->full_picture : 'https://graph.facebook.com/' . $fb_post_object_id . '/picture';
865
 
866
  echo '<div class="fts-jal-fb-link-wrap fts-album-photos-wrap"';
867
  if ( 'album_photos' === $fb_shortcode['type'] || 'albums' === $fb_shortcode['type'] ) {
@@ -881,7 +951,7 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
881
  if ( '0' === $fts_fb_image_count || '1' === $fts_fb_image_count || $fts_fb_image_count > 2 ) {
882
 
883
  // echo $fts_fb_image_count;.
884
- echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $photo_source_final ) : esc_url( $fb_link ) ) . '" target="_blank" class="fts-jal-fb-picture fts-fb-large-photo"><img border="0" alt="' . esc_attr( $post_data->from->name ) . '" src="' . esc_url( $photo_source_final ) . '"></a>';
885
 
886
  }
887
 
@@ -918,25 +988,25 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
918
  echo '<div class="fts-clear"></div><div class="' . esc_attr( $columns_css . 'fts-fb-more-photos-wrap fts-facebook-inline-block-centered' . $fb_picture_gallery2_check . $fb_picture_gallery3_check ) . '" style="max-width:' . esc_attr( $fb_picture_gallery1_check ) . '" data-ftsi-id=' . esc_attr( $fts_dynamic_vid_name_string ) . ' data-ftsi-columns="' . esc_attr( $columns ) . '" data-ftsi-margin="1px" data-ftsi-force-columns="yes">';
919
  }
920
  if ( 2 === $fts_fb_image_count ) {
921
- echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $photo_source_final ) : esc_url( $fb_link ) ) . '" target="_blank" class="slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-zero-wrap fts-fb-large-photo" style="background:url(' . esc_url( $photo_source_final ) . ');" title="'.esc_attr( $fb_pictureGalleryDescription0 ).'" aria-label="'.esc_attr( $fb_pictureGalleryDescription0 ).'"></a>';
922
 
923
  }
924
  if ( '' !== $fb_picture_gallery1 ) {
925
- echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $fb_picture_gallery1 ) : esc_url( $fb_picture_gallery_link1 ) ) . '" target="_blank" class="slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-zero-wrap fts-fb-large-photo" style="background:url(' . esc_url( $fb_picture_gallery1 ) . ');" title="'.esc_attr( $fb_pictureGalleryDescription1 ).'" aria-label="'.esc_attr( $fb_pictureGalleryDescription1 ).'"></a>';
926
 
927
  if ( '' !== $fb_picture_gallery2 ) {
928
- echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $fb_picture_gallery2 ) : esc_url( $fb_picture_gallery_link2 ) ) . '" target="_blank" class="fts-2-or-3-photos slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-one-wrap fts-fb-large-photo" style="background:url(' . esc_url( $fb_picture_gallery2 ) . ');" title="'.esc_attr( $fb_pictureGalleryDescription1 ).'" aria-label="'.esc_attr( $fb_pictureGalleryDescription1 ).'"></a>';
929
 
930
  }
931
  if ( '' !== $fb_picture_gallery3 ) {
932
- echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $fb_picture_gallery3 ) : esc_url( $fb_picture_gallery_link3 ) ) . '" target="_blank" class="slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-two-wrap fts-fb-large-photo' . esc_attr( $fts_fb_image_count_check ) . '" style="background:url(' . esc_url( $fb_picture_gallery3 ) . ');" title="'.esc_attr( $fb_pictureGalleryDescription2 ).'" aria-label="'.esc_attr( $fb_pictureGalleryDescription2 ).'"><div class="fts-image-count-tint-underlay"></div><div class="fts-image-count"><span>+</span>' . esc_html( $fts_fb_image_counter ) . '</div></a>';
933
  }
934
  }
935
  if ( '' !== $fb_picture_gallery1 ) {
936
  echo '</div>';
937
  }
938
  } else {
939
- echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $photo_source_final ) : esc_url( $fb_link ) ) . '" target="_blank" class="fts-jal-fb-picture fts-fb-large-photo"><img border="0" alt="' . esc_attr( $post_data->from->name ) . '" src="' . esc_url( $photo_source_final ) . '" title="'.$fb_pictureGalleryDescription0.'" aria-label="'.$fb_pictureGalleryDescription0.'"></a>';
940
  }
941
  } elseif ( $fb_picture ) {
942
  if ( $fb_post_object_id ) {
@@ -1020,22 +1090,28 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
1020
  echo '<div class="fts-fb-comments-content fts-comments-post-' . esc_attr( $fb_post_id ) . '">';
1021
 
1022
  foreach ( $lcs_array['comments_thread']->data as $comment ) {
1023
- if(!empty($comment->message)) {
1024
- echo '<div class="fts-fb-comment fts-fb-comment-' . esc_attr( $comment->id ) . '">';
1025
- // User Profile Img.
1026
- $avatar_id = isset( $comment->from->id ) ? 'https://graph.facebook.com/'.$comment->from->id.'/picture?type=square' : plugin_dir_url( dirname( __FILE__ ) ) . 'images/slick-comment-pic.png';
1027
- echo '<img class="fts-fb-comment-user-pic" src="' . esc_url( $avatar_id ) . '"/>';
1028
- echo '<div class="fts-fb-comment-msg">';
1029
- if ( isset( $comment->from->name ) ) {
1030
- echo '<span class="fts-fb-comment-user-name">' . esc_html( $comment->from->name ) . '</span> ';
1031
- }
1032
- echo esc_html( $comment->message ) . '</div>';
1033
-
1034
- // Comment Message.
1035
- echo '</div>';
1036
- }
 
 
1037
  }
1038
  echo '</div>';
 
 
 
 
1039
  }
1040
  echo '</div><!-- END Comments Wrap -->';
1041
  }
@@ -1045,19 +1121,19 @@ class FTS_Facebook_Feed_Post_Types extends FTS_Facebook_Feed {
1045
  if ( isset( $fb_shortcode['show_media'] ) && 'top' === $show_media ) {
1046
 
1047
  if ( isset( $fb_shortcode['show_social_icon'] ) && 'right' === $fb_shortcode['show_social_icon'] ) {
1048
- echo '<div class="fts-mashup-icon-wrap-right fts-mashup-facebook-icon"><a href="' . esc_url( 'https://www.facebook.com/' . $post_data->from->id ) . '" target="_blank"></a></div>';
1049
  }
1050
  // show icon.
1051
  if ( isset( $fb_shortcode['show_social_icon'] ) && 'left' === $fb_shortcode['show_social_icon'] ) {
1052
- echo '<div class="fts-mashup-icon-wrap-left fts-mashup-facebook-icon"><a href="' . esc_url( 'https://www.facebook.com/' . $post_data->from->id ) . '" target="_blank"></a></div>';
1053
  }
1054
  echo '<div class="fts-jal-fb-top-wrap ' . esc_attr( $hide_date_likes_comments ) . '" style="display:block !important;">';
1055
  echo '<div class="fts-jal-fb-user-thumb">';
1056
- echo ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? '' : '<a href="' . esc_url( 'https://www.facebook.com/' . $post_data->from->id ) . '" target="_blank">' ) . '<img border="0" alt="' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? esc_attr( $post_data->reviewer->name ) : esc_attr( $post_data->from->name ) ) . '" src="' . esc_url( 'https://graph.facebook.com/' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? $post_data->reviewer->id : $post_data->from->id ) . '/picture' ) . '"/></a>' . ( 'reviews' === $fb_shortcode['type'] ? '' : '</a>' );
1057
  echo '</div>';
1058
 
1059
  // UserName.
1060
- echo '<span class="fts-jal-fb-user-name"><a href="' . esc_url( 'https://www.facebook.com/' . $post_data->from->id ) . '" target="_blank">' . esc_html( $post_data->from->name ) . '</a>' . esc_html( $fb_hide_shared_by_etc_text ) . '</span>';
1061
 
1062
  // tied to date function.
1063
  $feed_type = 'facebook';
22
  public function feed_location_option( $fb_places_id, $fb_name, $fb_places_name ) {
23
  echo '<div class="fts-fb-location-wrap">';
24
  echo '<div class="fts-fb-location-img"></div>';
25
+ echo '<a href="' . esc_url( 'https://www.facebook.com/' . $fb_places_id . '/' ) . '" class="fts-fb-location-link" target="_blank" rel="noreferrer">' . esc_attr( $fb_name ) . '</a>';
26
  echo '<div class="fts-fb-location-name">' . esc_html( $fb_places_name ) . '</div>';
27
  echo '</div>';
28
  }
41
  */
42
  public function feed_post_types( $set_zero, $fb_type, $post_data, $fb_shortcode, $response_post_array, $single_event_array_response = null ) {
43
 
44
+ // echo '<pre>';
45
+ // print_r($lcs_array);
46
+ // echo '</pre>';
 
 
 
47
  // echo 'ASDF';
48
  // Reviews Plugin.
49
  if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
84
  // youtube and vimeo embed url.
85
  $fb_video_embed = isset( $post_data->source ) ? $post_data->source : '';
86
 
87
+ $fb_post_from_id = isset( $post_data->from->id ) ? $post_data->from->id : '';
88
+ $from_id_picture = $fb_post_from_id !== $fb_shortcode['id'] ? $fb_shortcode['id'] : $fb_post_from_id;
89
+
90
  // if (isset($post_data->format[1]->picture)) {.
91
  // $video_photo = $post_data->format[1]->picture;.
92
  // } elseif (isset($post_data->format[0]->picture)) {.
156
  $fb_video = isset( $post_data->embed_html ) ? $post_data->embed_html : '';
157
  $fb_video_picture = isset( $post_data->format[2]->picture ) ? $post_data->format[2]->picture : '';
158
 
 
159
  if ( $fb_album_cover ) {
160
+ // $photo_data = json_decode( $response_post_array[ $fb_album_cover . '_photo' ] );
161
  }
162
  if ( isset( $post_data->id ) ) {
163
  $fb_post_id = $post_data->id;
189
  // Count Likes/Shares/.
190
  $lcs_array = $this->get_likes_shares_comments( $response_post_array, $post_data_key, $fb_post_share_count );
191
 
192
+ // echo '<pre>';
193
+ // print_r($lcs_array);
194
+ // echo '</pre>';
195
+ // $fb_location = isset( $post_data->location ) ? $post_data->location : '';
 
196
  $fb_embed_vid = isset( $post_data->embed_html ) ? $post_data->embed_html : '';
197
  $fb_from_name = isset( $post_data->from->name ) ? $post_data->from->name : '';
198
  $fb_from_name = preg_quote( $fb_from_name, '/' );
213
  // $fb_pictureGalleryDescription0 = isset($post_data->attachments->data[0]->subattachments->data[1]->description) ? $post_data->attachments->data[0]->subattachments->data[1]->media->image->src : '';.
214
  // $fb_pictureGalleryDescription1 = isset($post_data->attachments->data[0]->subattachments->data[2]->description)? $post_data->attachments->data[0]->subattachments->data[2]->media->image->src : '';.
215
  // $fb_pictureGalleryDescription2 = isset($post_data->attachments->data[0]->subattachments->data[3]->description) ? $post_data->attachments->data[0]->subattachments->data[3]->media->image->src : '';.
216
+ // KZeni Edit: https://github.com/KZeni
217
+ // February 25, 2019 - Uncommented Description variables so they can be used when making it so the pictures meet accessibility standards.
218
+ $picture_from_fb = __( 'Picture from Facebook', 'feed-them-social' );
219
+ $fb_pictureGalleryDescription0 = isset( $post_data->attachments->data[0]->subattachments->data[1]->description ) ? $post_data->attachments->data[0]->subattachments->data[1]->description : $picture_from_fb;
220
+ $fb_pictureGalleryDescription1 = isset( $post_data->attachments->data[0]->subattachments->data[2]->description ) ? $post_data->attachments->data[0]->subattachments->data[2]->description : $picture_from_fb;
221
+ $fb_pictureGalleryDescription2 = isset( $post_data->attachments->data[0]->subattachments->data[3]->description ) ? $post_data->attachments->data[0]->subattachments->data[3]->description : $picture_from_fb;
222
+
223
+ $fb_picture_gallery_link1 = isset( $post_data->attachments->data[0]->subattachments->data[1]->target->url ) ? $post_data->attachments->data[0]->subattachments->data[1]->target->url : '';
 
224
  $fb_picture_gallery_link2 = isset( $post_data->attachments->data[0]->subattachments->data[2]->target->url ) ? $post_data->attachments->data[0]->subattachments->data[2]->target->url : '';
225
  $fb_picture_gallery_link3 = isset( $post_data->attachments->data[0]->subattachments->data[3]->target->url ) ? $post_data->attachments->data[0]->subattachments->data[3]->target->url : '';
226
 
238
  $custom_date_format = 'F jS, Y \a\t g:ia';
239
  }
240
 
241
+ $album_created_time = isset( $post_data->photos->data[0]->created_time ) ? $post_data->photos->data[0]->created_time : '';
242
+ $other_created_time = isset( $post_data->created_time ) ? $post_data->created_time : '';
243
+ $created_time = '' !== $album_created_time ? $album_created_time : $other_created_time;
244
  $custom_time_format = strtotime( $created_time );
245
 
246
  if ( ! empty( $fb_story ) ) {
318
 
319
  if ( 'top' !== $show_media ) {
320
 
321
+ if ( 'albums' !== $fb_shortcode['type'] ) {
322
+ echo '<div class="fts-jal-fb-user-thumb">';
323
 
324
+ $avatar_id = plugin_dir_url( dirname( __FILE__ ) ) . 'images/slick-comment-pic.png';
325
+ $profile_photo_exists_check = isset( $post_data->fts_profile_pic_url ) && strpos( $post_data->fts_profile_pic_url, 'profilepic' ) !== false ? $post_data->fts_profile_pic_url : $avatar_id;
326
 
327
+ echo ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? '' : '<a href="https://www.facebook.com/' . esc_attr( $from_id_picture ) . '" target="_blank" rel="noreferrer">' ) . '<img border="0" alt="' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? esc_attr( $post_data->reviewer->name ) : esc_attr( $post_data->from->name ) ) . '" src="' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? esc_url( $profile_photo_exists_check ) . '"/>' : 'https://graph.facebook.com/' . esc_attr( $from_id_picture ) ) . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? '' : '/picture"/></a>' );
328
+
329
+ echo '</div>';
330
+
331
+ }
332
 
333
  // UserName.
334
  // $fts_facebook_reviews->reviews_rating_format CANNOT be esc at this time.
335
+ $hide_name = 'albums' === $fb_shortcode['type'] ? ' fts-fb-album-hide' : '';
336
+
337
+ echo ( 'reviews' === $fb_shortcode['type'] && is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ? '<span class="fts-jal-fb-user-name fts-review-name" itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">' . esc_attr( $post_data->reviewer->name ) . '</span>' . $fts_facebook_reviews->reviews_rating_format( $fb_shortcode, isset( $post_data->rating ) ? esc_html( $post_data->rating ) : '' ) . '</span>' : '<span class="fts-jal-fb-user-name' . $hide_name . '"><a href="https://www.facebook.com/' . esc_attr( $from_id_picture ) . '" target="_blank" rel="noreferrer">' . esc_html( $post_data->from->name ) . '</a>' . esc_html( $fb_hide_shared_by_etc_text ) . '</span>' );
338
 
339
  // tied to date function.
340
  $feed_type = 'facebook';
342
  $fts_final_date = $this->fts_custom_date( $times, $feed_type );
343
  // PostTime.
344
  // $fts_final_date CANNOT be esc at this time.
345
+ if ( 'albums' !== $fb_shortcode['type'] ) {
346
+ echo '<span class="fts-jal-fb-post-time">' . $fts_final_date . '</span><div class="fts-clear"></div>';
347
+ }
348
  }
349
 
350
  if ( 'reviews' !== $fb_shortcode['type'] ) {
404
 
405
  echo '<div class="fts-jal-fb-description-wrap">';
406
 
 
 
 
407
  $fb_caption ? $this->fts_facebook_post_cap( $fb_caption, $fb_shortcode, $fb_type ) : '';
408
+ // Output Photo Caption.
409
+ // if ( !is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'albums' === $fb_shortcode['type'] ){
410
+ // Album Post Description.
411
+ if ( 'albums' === $fb_shortcode['type'] ) {
412
+ echo '<div class="fts-fb-album-name-and-count ">';
413
+ }
414
+ $fb_name ? $this->fts_facebook_post_desc( $fb_name, $fb_shortcode, $fb_type, null, $fb_by ) : '';
415
+ // echo $fb_type;
416
+ // echo 'asdfasdf';
417
+ // Albums Photo Count.
418
+ echo $fb_album_photo_count ? esc_html( $fb_album_photo_count ) . ' Photos' : '';
419
+ if ( 'albums' === $fb_shortcode['type'] ) {
420
+ echo '</div>';
421
+ }
422
+ // }
423
  // Location.
424
+ // $fb_location ? $this->fts_facebook_location( $fb_type, $fb_location ) : '';
425
  // Output Photo Description.
426
  $fb_description ? $this->fts_facebook_post_desc( $fb_description, $fb_shortcode, $fb_type, null, $fb_by ) : '';
427
 
430
  echo '<div class="fts-fb-caption fts-fb-album-view-link">';
431
  // Album Covers.
432
  if ( 'albums' === $fb_shortcode['type'] ) {
433
+
434
+ echo '<div class="fts-fb-album-additional-pics">';
435
+ // Album Covers. <img src="' . esc_url( $fb_album_additional_pic->images[1]->source ) . '"/>
436
+ $isFirst = true;
437
+ foreach ( $post_data->photos->data as $key => $fb_album_additional_pic ) {
438
+ // $fb_album_additional_pic_check = isset( $fb_album_additional_pic->name ) ? $this->fts_facebook_post_desc( $fb_album_additional_pic->name, $fb_shortcode, $fb_type, null, $fb_by ): '';
439
+ // $fb_album_additional_pic ? $fb_album_additional_pic_check : '';
440
+ echo '<div class="fts-fb-album-additional-pics-content">';
441
+
442
+ $hide_all_but_one_link = ! $isFirst ? 'style="display:none"' : '';
443
+
444
+ echo '<a href="' . esc_url( $fb_album_additional_pic->images[0]->source ) . '" class="fts-view-album-photos-large data-fb-album-photo-description" target="_blank" rel="noreferrer" ' . $hide_all_but_one_link . '>' . esc_html( 'View Album', 'feed-them-social' ) . '</a>';
445
+ echo '<div class="fts-fb-album-additional-pics-description-wrap">';
446
+ echo '<div class="fts-jal-fb-description-wrap fts-fb-album-description-content fts-jal-fb-description-popup">';
447
+
448
+ // tied to date function.
449
+ $feed_type = 'facebook';
450
+ $album_created_time = isset( $fb_album_additional_pic->created_time ) ? $fb_album_additional_pic->created_time : '';
451
+ $times = $album_created_time;
452
+ $fts_final_date = $this->fts_custom_date( $times, $feed_type );
453
+ echo '<div class="fts-jal-fb-user-thumb">';
454
+ echo '<a href="https://www.facebook.com/' . esc_attr( $from_id_picture ) . '" target="_blank" rel="noreferrer"><img border="0" alt="' . esc_attr( $post_data->from->name ) . '" src="' . 'https://graph.facebook.com/' . esc_attr( $from_id_picture ) . '/picture"/></a>';
455
+ echo '</div>';
456
+
457
+ // UserName.
458
+ // $fts_facebook_reviews->reviews_rating_format CANNOT be esc at this time.
459
+ echo '<span class="fts-jal-fb-user-name"><a href="https://www.facebook.com/' . esc_attr( $from_id_picture ) . '" target="_blank" rel="noreferrer">' . esc_html( $post_data->from->name ) . '</a>' . esc_html( $fb_hide_shared_by_etc_text ) . '</span>';
460
+
461
+ echo '<div class="fts-fb-album-date-wrap">' . $fts_final_date . '</div>';
462
+
463
+ echo '<div class="fts-clear"></div>';
464
+
465
+ // Album Post Description.
466
+ // $fb_name ? $this->fts_facebook_post_desc( $fb_name, $fb_shortcode, $fb_type, null, $fb_by ) : '';
467
+ // Albums Photo Count.
468
+ $fb_name ? $this->fts_facebook_post_desc( $fb_name, $fb_shortcode, $fb_type, null, $fb_by ) : '';
469
+ $view_additional_album_photos = '24' == $key ? '. <a href="' . $fb_link . '" target="_blank" rel="noreferrer">' . esc_html( 'View more for this Album', 'feed-them-social' ) . '</a>' : '';
470
+ echo $fb_album_photo_count ? ' ' . esc_html( $key + 1 ) . ' ' . esc_html( 'of', 'feed-them-social' ) . ' ' . esc_html( $fb_album_photo_count ) . ' ' . esc_html( 'Photos', 'feed-them-social' ) . ' ' . $view_additional_album_photos : '';
471
+ echo '<br/><br/>';
472
+
473
+ $fb_album_additional_pic_name = isset( $fb_album_additional_pic->name ) ? $fb_album_additional_pic->name : '';
474
+ $fb_album_additional_pic_name ? $this->fts_facebook_post_desc( $fb_album_additional_pic_name, $fb_shortcode, $fb_type, null, $fb_by ) : '';
475
+ echo '</div>';
476
+ echo '</div>';
477
+ echo '</div>';
478
+ $isFirst = false;
479
+ }
480
+
481
+ echo '</div>';
482
+ echo '</div>';
483
  } elseif (
484
+
485
  // Album Photos.
486
  'album_photos' === $fb_shortcode['type'] && ( isset( $fb_shortcode['video_album'] ) && 'yes' !== $fb_shortcode['video_album'] || ! isset( $fb_shortcode['video_album'] ) ) ) {
487
+ echo '<a href="' . esc_url( $fb_album_picture ) . '" class="fts-view-album-photos-large" target="_blank" rel="noreferrer">' . esc_html( 'View Photo', 'feed-them-social' ) . '</a></div>';
488
+
489
  } elseif (
490
  // Video Albums.
491
  isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
502
  echo '</div>';
503
  } else {
504
  // photos.
505
+ echo '<a href="' . esc_url( $post_data->source ) . '" class="fts-view-album-photos-large" target="_blank" rel="noreferrer">' . esc_html( 'View Photo', 'feed-them-social' ) . '</a></div>';
506
  }
507
 
508
  // echo '<div class="fts-fb-caption"><a class="view-on-facebook-albums-link" href="' . $fb_link . '" target="_blank">' . esc_html('View on Facebook', 'feed-them-social') . '</a></div>';.
619
 
620
  // Output Photo Description.
621
  if ( ! empty( $event_cover_photo ) ) {
622
+ echo isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] && is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ? '<a href="' . esc_url( $event_cover_photo ) . '" class="fts-jal-fb-picture fts-fb-large-photo" target="_blank" rel="noreferrer"><img class="fts-fb-event-photo" src="' . esc_url( $event_cover_photo ) . '"></a>' : '<a href="https://www.facebook.com/events/' . esc_attr( $single_event_id ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-picture fts-fb-large-photo"><img class="fts-fb-event-photo" src="' . esc_url( $event_cover_photo ) . '" /></a>';
623
  }
624
  echo '<div class="fts-jal-fb-top-wrap">';
625
  echo '<div class="fts-jal-fb-message">';
646
  >' . esc_html( 'Get Directions', 'feed-them-social' ) . '</a>';
647
  }
648
  if ( ! empty( $fb_event_ticket_info ) && ! empty( $fb_event_ticket_info ) ) {
649
+ echo '<a target="_blank" rel="noreferrer" class="fts-fb-ticket-info" href="' . esc_url( $single_event_ticket_info->ticket_uri ) . '">' . esc_html( 'Ticket Info', 'feed-them-social' ) . '</a>';
650
  }
651
  // Output Message.
652
  if ( ! empty( $fb_shortcode['words'] ) && $event_description && is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
665
  case 'link':
666
  echo '<div class="fts-jal-fb-link-wrap">';
667
  // start url check.
668
+ if ( ! empty( $fb_link ) ) {
669
+ $url = $fb_link;
670
+ $url_parts = parse_url( $url );
671
+ $host = $url_parts['host'];
672
+ }
673
 
674
  if ( isset( $host ) && 'www.facebook.com' === $host ) {
675
  $spliturl = $url_parts['path'];
728
  $fb_name ? $this->fts_facebook_post_name( $fb_link, $fb_name, $fb_type ) : '';
729
  if ( isset( $host ) && 'www.facebook.com' === $host && 'events' === $first_dir ) {
730
  echo ' &#9658; ';
731
+ echo '<a href="' . esc_url( $fb_link ) . '" class="fts-jal-fb-name" target="_blank" rel="noreferrer">' . esc_html( $fb_link_event_name ) . '</a>';
732
  }//end if event.
733
  // Output Link Description.
734
  $fb_description ? $this->fts_facebook_post_desc( $fb_description, $fb_shortcode, $fb_type ) : '';
780
  }
781
  }
782
  // srl: 8/27/17 - FB BUG: for some reason the full_picture for animated gifs is not correct so we dig deeper and grab another image size fb has set.
783
+ if ( isset( $post_data->attachments->data[0]->type ) && 'animated_image_video' === $post_data->attachments->data[0]->type ) {
784
  $vid_pic = $post_data->attachments->data[0]->media->image->src;
785
  } else {
786
  $vid_pic = $post_data->full_picture;
931
  $photo_source = json_decode( $response_post_array[ $post_data_key . '_group_post_photo' ] );
932
  }
933
  // Group or page?
934
+ $photo_source_final = isset( $post_data->full_picture ) ? $post_data->full_picture : 'https://graph.facebook.com/' . $fb_post_object_id . '/picture';
935
 
936
  echo '<div class="fts-jal-fb-link-wrap fts-album-photos-wrap"';
937
  if ( 'album_photos' === $fb_shortcode['type'] || 'albums' === $fb_shortcode['type'] ) {
951
  if ( '0' === $fts_fb_image_count || '1' === $fts_fb_image_count || $fts_fb_image_count > 2 ) {
952
 
953
  // echo $fts_fb_image_count;.
954
+ echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $photo_source_final ) : esc_url( $fb_link ) ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-picture fts-fb-large-photo"><img border="0" alt="' . esc_attr( $post_data->from->name ) . '" src="' . esc_url( $photo_source_final ) . '"></a>';
955
 
956
  }
957
 
988
  echo '<div class="fts-clear"></div><div class="' . esc_attr( $columns_css . 'fts-fb-more-photos-wrap fts-facebook-inline-block-centered' . $fb_picture_gallery2_check . $fb_picture_gallery3_check ) . '" style="max-width:' . esc_attr( $fb_picture_gallery1_check ) . '" data-ftsi-id=' . esc_attr( $fts_dynamic_vid_name_string ) . ' data-ftsi-columns="' . esc_attr( $columns ) . '" data-ftsi-margin="1px" data-ftsi-force-columns="yes">';
989
  }
990
  if ( 2 === $fts_fb_image_count ) {
991
+ echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $photo_source_final ) : esc_url( $fb_link ) ) . '" target="_blank" rel="noreferrer" class="slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-zero-wrap fts-fb-large-photo" style="background:url(' . esc_url( $photo_source_final ) . ');" title="' . esc_attr( $fb_pictureGalleryDescription0 ) . '" aria-label="' . esc_attr( $fb_pictureGalleryDescription0 ) . '"></a>';
992
 
993
  }
994
  if ( '' !== $fb_picture_gallery1 ) {
995
+ echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $fb_picture_gallery1 ) : esc_url( $fb_picture_gallery_link1 ) ) . '" target="_blank" rel="noreferrer" class="slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-zero-wrap fts-fb-large-photo" style="background:url(' . esc_url( $fb_picture_gallery1 ) . ');" title="' . esc_attr( $fb_pictureGalleryDescription1 ) . '" aria-label="' . esc_attr( $fb_pictureGalleryDescription1 ) . '"></a>';
996
 
997
  if ( '' !== $fb_picture_gallery2 ) {
998
+ echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $fb_picture_gallery2 ) : esc_url( $fb_picture_gallery_link2 ) ) . '" target="_blank" rel="noreferrer" class="fts-2-or-3-photos slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-one-wrap fts-fb-large-photo" style="background:url(' . esc_url( $fb_picture_gallery2 ) . ');" title="' . esc_attr( $fb_pictureGalleryDescription1 ) . '" aria-label="' . esc_attr( $fb_pictureGalleryDescription1 ) . '"></a>';
999
 
1000
  }
1001
  if ( '' !== $fb_picture_gallery3 ) {
1002
+ echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $fb_picture_gallery3 ) : esc_url( $fb_picture_gallery_link3 ) ) . '" target="_blank" rel="noreferrer" class="slicker-facebook-placeholder fts-fb-thumbs-wrap ' . esc_attr( $morethan3 ) . 'fts-fb-thumb-two-wrap fts-fb-large-photo' . esc_attr( $fts_fb_image_count_check ) . '" style="background:url(' . esc_url( $fb_picture_gallery3 ) . ');" title="' . esc_attr( $fb_pictureGalleryDescription2 ) . '" aria-label="' . esc_attr( $fb_pictureGalleryDescription2 ) . '"><div class="fts-image-count-tint-underlay"></div><div class="fts-image-count"><span>+</span>' . esc_html( $fts_fb_image_counter ) . '</div></a>';
1003
  }
1004
  }
1005
  if ( '' !== $fb_picture_gallery1 ) {
1006
  echo '</div>';
1007
  }
1008
  } else {
1009
+ echo '<a href="' . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? esc_url( $photo_source_final ) : esc_url( $fb_link ) ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-picture fts-fb-large-photo"><img border="0" alt="' . esc_attr( $post_data->from->name ) . '" src="' . esc_url( $photo_source_final ) . '" title="' . $fb_pictureGalleryDescription0 . '" aria-label="' . $fb_pictureGalleryDescription0 . '"></a>';
1010
  }
1011
  } elseif ( $fb_picture ) {
1012
  if ( $fb_post_object_id ) {
1090
  echo '<div class="fts-fb-comments-content fts-comments-post-' . esc_attr( $fb_post_id ) . '">';
1091
 
1092
  foreach ( $lcs_array['comments_thread']->data as $comment ) {
1093
+ if ( ! empty( $comment->message ) ) {
1094
+ echo '<div class="fts-fb-comment fts-fb-comment-' . esc_attr( $comment->id ) . '">';
1095
+ // User Profile Img.
1096
+ // Not having page public content access persmission anymore is not allowing us to get profile pics anymore, and the link to personal accounts won't work anymore either for people posting to our page.
1097
+ // $avatar_id = isset( $comment->from->id ) ? 'https://graph.facebook.com/'.$comment->from->id.'/picture?redirect=1&type=square' : plugin_dir_url( dirname( __FILE__ ) ) . 'images/slick-comment-pic.png';
1098
+ $avatar_id = plugin_dir_url( dirname( __FILE__ ) ) . 'images/slick-comment-pic.png';
1099
+ echo '<img class="fts-fb-comment-user-pic" src="' . esc_url( $avatar_id ) . '"/>';
1100
+ echo '<div class="fts-fb-comment-msg">';
1101
+ if ( isset( $comment->from->name ) ) {
1102
+ echo '<span class="fts-fb-comment-user-name">' . esc_html( $comment->from->name ) . '</span> ';
1103
+ }
1104
+ echo esc_html( $comment->message ) . '</div>';
1105
+
1106
+ // Comment Message.
1107
+ echo '</div>';
1108
+ }
1109
  }
1110
  echo '</div>';
1111
+
1112
+ // echo '<pre>';
1113
+ // print_r( $lcs_array['comments_thread']->data );
1114
+ // echo '</pre>';
1115
  }
1116
  echo '</div><!-- END Comments Wrap -->';
1117
  }
1121
  if ( isset( $fb_shortcode['show_media'] ) && 'top' === $show_media ) {
1122
 
1123
  if ( isset( $fb_shortcode['show_social_icon'] ) && 'right' === $fb_shortcode['show_social_icon'] ) {
1124
+ echo '<div class="fts-mashup-icon-wrap-right fts-mashup-facebook-icon"><a href="' . esc_url( 'https://www.facebook.com/' . $from_id_picture ) . '" target="_blank" rel="noreferrer"></a></div>';
1125
  }
1126
  // show icon.
1127
  if ( isset( $fb_shortcode['show_social_icon'] ) && 'left' === $fb_shortcode['show_social_icon'] ) {
1128
+ echo '<div class="fts-mashup-icon-wrap-left fts-mashup-facebook-icon"><a href="' . esc_url( 'https://www.facebook.com/' . $from_id_picture ) . '" target="_blank" rel="noreferrer"></a></div>';
1129
  }
1130
  echo '<div class="fts-jal-fb-top-wrap ' . esc_attr( $hide_date_likes_comments ) . '" style="display:block !important;">';
1131
  echo '<div class="fts-jal-fb-user-thumb">';
1132
+ echo ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? '' : '<a href="' . esc_url( 'https://www.facebook.com/' . $from_id_picture ) . '" target="_blank" rel="noreferrer">' ) . '<img border="0" alt="' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? esc_attr( $post_data->reviewer->name ) : esc_attr( $post_data->from->name ) ) . '" src="' . esc_url( 'https://graph.facebook.com/' . ( 'reviews' === esc_attr( $fb_shortcode['type'] ) ? $post_data->reviewer->id : $from_id_picture ) . '/picture' ) . '"/></a>' . ( 'reviews' === $fb_shortcode['type'] ? '' : '</a>' );
1133
  echo '</div>';
1134
 
1135
  // UserName.
1136
+ echo '<span class="fts-jal-fb-user-name"><a href="' . esc_url( 'https://www.facebook.com/' . $from_id_picture ) . '" target="_blank" rel="noreferrer">' . esc_html( $post_data->from->name ) . '</a>' . esc_html( $fb_hide_shared_by_etc_text ) . '</span>';
1137
 
1138
  // tied to date function.
1139
  $feed_type = 'facebook';
feeds/facebook/class-fts-facebook-feed.php CHANGED
@@ -7,2241 +7,2251 @@
7
  * @since 1.9.6
8
  */
9
  class FTS_Facebook_Feed extends feed_them_social_functions {
10
- /**
11
- * Construct
12
- *
13
- * Facebook Feed constructor.
14
- *
15
- * @since 1.9.6
16
- */
17
- public function __construct() {
18
- add_shortcode( 'fts_facebook_group', array( $this, 'fts_fb_func' ) );
19
- add_shortcode( 'fts_facebook_page', array( $this, 'fts_fb_func' ) );
20
- add_shortcode( 'fts_facebook_event', array( $this, 'fts_fb_func' ) );
21
- add_shortcode( 'fts_facebook', array( $this, 'fts_fb_func' ) );
22
- add_action( 'wp_enqueue_scripts', array( $this, 'fts_fb_head' ) );
23
- }
24
-
25
- /**
26
- * FTS FB Head
27
- *
28
- * Add Styles and Scripts functions.
29
- *
30
- * @since 1.9.6
31
- */
32
- public function fts_fb_head() {
33
- wp_enqueue_style( 'fts-feeds', plugins_url( 'feed-them-social/feeds/css/styles.css' ), array(), FTS_CURRENT_VERSION, false );
34
-
35
- if ( is_plugin_active( 'feed-them-social/feed-them.php' ) && is_plugin_active( 'feed-them-carousel-premium/feed-them-carousel-premium.php' ) && is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
36
- wp_enqueue_script( 'fts-feeds', plugins_url( 'feed-them-carousel-premium/feeds/js/jquery.cycle2.js' ), array(), FTS_CURRENT_VERSION, false );
37
- }
38
- }
39
-
40
- /**
41
- * Date Sort
42
- *
43
- * Date sort option for multiple feeds in a shortcode.
44
- *
45
- * @param string $a First Date.
46
- * @param string $b Second Date.
47
- * @return false|int
48
- * @since 1.9.6
49
- */
50
- public function dateSort( $a, $b ) {
51
- $date_a = strtotime( $a->created_time );
52
- $date_b = strtotime( $b->created_time );
53
- return ( $date_b - $date_a );
54
- }
55
-
56
-
57
- /**
58
- * FTS FB Func
59
- *
60
- * Display Facebook Feed.
61
- *
62
- * @param string $atts Shortcode attributes.
63
- * @return string
64
- * @since 1.9.6
65
- */
66
- public function fts_fb_func( $atts ) {
67
- // masonry snippet in fts-global.
68
- wp_enqueue_script( 'fts-global', plugins_url( 'feed-them-social/feeds/js/fts-global.js' ), array( 'jquery' ), FTS_CURRENT_VERSION, false );
69
- $developer_mode = 'on';
70
- // Make sure everything is reset.
71
- include_once ABSPATH . 'wp-admin/includes/plugin.php';
72
- // Eventually add premium page file.
73
- if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
74
-
75
- $fts_facebook_reviews = new FTS_Facebook_Reviews();
76
- $review_atts = $fts_facebook_reviews->shortcode_attributes();
77
- $fb_shortcode = shortcode_atts( $review_atts, $atts );
78
- // Load up some scripts for popup.
79
- $this->load_popup_scripts( $fb_shortcode );
80
- } elseif ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
81
- include WP_CONTENT_DIR . '/plugins/feed-them-premium/feeds/facebook/facebook-premium-feed.php';
82
- // Doing this to phase out the invalid snake case.
83
- $fb_shortcode = $FB_Shortcode;
84
- // Load up some scripts for popup.
85
- $this->load_popup_scripts( $fb_shortcode );
86
- } elseif ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) && ! is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
87
- // Doing this to phase out the invalid snake case.
88
- $fb_shortcode = $FB_Shortcode;
89
- $fb_shortcode = shortcode_atts(
90
- array(
91
- 'id' => '',
92
- 'type' => '',
93
- 'posts' => '',
94
- 'posts_displayed' => '',
95
- 'height' => '',
96
- 'album_id' => '',
97
- 'image_width' => '',
98
- 'image_height' => '',
99
- 'space_between_photos' => '',
100
- 'hide_date_likes_comments' => '',
101
- 'center_container' => '',
102
- 'image_stack_animation' => '',
103
- 'image_position_lr' => '',
104
- 'image_position_top' => '',
105
- 'hide_comments_popup' => '',
106
- // only works with combined FB streams otherwise you need the premium version.
107
- 'popup' => '',
108
- 'words' => '',
109
- 'grid' => '',
110
- 'colmn_width' => '',
111
- 'space_between_posts' => '',
112
- // new show media on top options.
113
- 'show_media' => '',
114
- 'show_date' => '',
115
- 'show_name' => '',
116
- // 'access_token' => '',
117
- ),
118
- $atts
119
- );
120
- if ( null === $fb_shortcode['posts'] ) {
121
- $fb_shortcode['posts'] = '6';
122
- }
123
- } else {
124
- $fb_shortcode = shortcode_atts(
125
- array(
126
- 'id' => '',
127
- 'type' => '',
128
- 'posts' => '',
129
- 'description' => 'yes',
130
- 'posts_displayed' => '',
131
- 'height' => '',
132
- 'album_id' => '',
133
- 'image_width' => '',
134
- 'image_height' => '',
135
- 'space_between_photos' => '',
136
- 'hide_date_likes_comments' => '',
137
- 'center_container' => '',
138
- 'image_stack_animation' => '',
139
- 'image_position_lr' => '',
140
- 'image_position_top' => '',
141
- 'hide_comments_popup' => '',
142
- 'access_token' => '',
143
- ),
144
- $atts
145
- );
146
- if ( null === $fb_shortcode['posts'] ) {
147
- $fb_shortcode['posts'] = '6';
148
- }
149
- }
150
-
151
- if ( 'album_videos' === $fb_shortcode['type'] ) {
152
- $fb_shortcode['type'] = 'album_photos';
153
- $fb_shortcode['video_album'] = 'yes';
154
- $fb_shortcode['album_id'] = 'photo_stream';
155
- if ( isset( $fb_shortcode['loadmore_btn_maxwidth'] ) && ! empty( $fb_shortcode['loadmore_btn_maxwidth'] ) ) {
156
- $fb_shortcode['loadmore'] = 'button';
157
- }
158
- }
159
-
160
- if ( ! is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && ! is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && ! is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) && $fb_shortcode['posts'] > '6' ) {
161
- $fb_shortcode['posts'] = '6';
162
- }
163
-
164
- // Get Access Token.
165
- $access_token = isset( $fb_shortcode['access_token'] ) ? $fb_shortcode['access_token'] : '';
166
- if ( ! empty( $access_token ) ) {
167
- $access_token = $fb_shortcode['access_token'];
168
- } else {
169
- $access_token = $this->get_access_token();
170
- }
171
-
172
- // UserName?.
173
- if ( ! $fb_shortcode['id'] ) {
174
- return 'Please enter a username for this feed.';
175
- }
176
- if ( 'reviews' === $fb_shortcode['type'] && ! is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
177
- return '<div style="clear:both; padding:15px 0;">You must have FTS Facebook Reviews extension active to see this feed.</div>';
178
- }
179
-
180
- $type = isset( $fb_shortcode['type'] ) ? $fb_shortcode['type'] : '';
181
- if ( 'group' === $type || 'page' === $type || 'event' === $type ) {
182
-
183
- // EMPTY FACEBOOK POSTS OFFSET AND COUNT.
184
- // Option Now Being Removed from here and the Facebook Settings Page.
185
- // Setting it to blank so no matter what it will never error get_option('fb_count_offset');.
186
- $fb_count_offset = '';
187
-
188
- // View Link.
189
- $fts_view_fb_link = '';
190
- // Get Cache Name.
191
- $fb_cache_name = '';
192
- // Get language.
193
- $language = '';
194
-
195
- // Get Response (AKA Page & Feed Information) ERROR CHECK inside this function.
196
- $response2 = $this->get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $access_token, $language );
197
-
198
- // Test to see if the re-sort date option is working from function above.
199
- // print $this->dateSort;.
200
- $feed_data_check = json_decode( $response2['feed_data'] );
201
-
202
- // SHOW THE REGULAR FEEDS PRINT_R
203
- // echo '<pre>';
204
- // print_r($feed_data_check);
205
- // echo '</pre>';
206
- // $idNew = array();
207
- // $idNew = explode(',', $fb_shortcode['id']);
208
- // Testing options before foreach loop
209
- // $idNew = 'tonyhawk';
210
- // print_r($feed_data_check->$idNew->data);.
211
- if ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
212
- $fts_count_ids = substr_count( $fb_shortcode['id'], ',' );
213
- } else {
214
- $fts_count_ids = '';
215
- }
216
-
217
- if ( isset( $feed_data_check->data ) ) {
218
- if ( $fts_count_ids >= 1 && 'reviews' !== $fb_shortcode['type'] ) {
219
- $fts_list_arrays = array();
220
- foreach ( $feed_data_check as $feed_data_name ) {
221
-
222
- if ( isset( $feed_data_name->data ) ) {
223
- $fts_list_arrays = array_merge_recursive( $fts_list_arrays, $feed_data_name->data );
224
- }
225
- // var_dump( $fts_list_arrays[$i]);.
226
- }
227
- $merged_array['data'] = $fts_list_arrays;
228
- $feed_data_check = (object) $merged_array;
229
- }
230
-
231
- // Test the created dataes are being sorted properly
232
- // foreach($merged_array['data'] as $newSort) {
233
- // print date("jS F, Y", strtotime($newSort->created_time));
234
- // print '<br/>';
235
- // }.
236
- $set_zero = 0;
237
- foreach ( $feed_data_check->data as $post_count ) {
238
-
239
- $fb_message = isset( $post_count->message ) ? $post_count->message : '';
240
- $fb_story = isset( $post_count->story ) ? $post_count->story : '';
241
- $fb_type = isset( $post_count->type ) ? $post_count->type : '';
242
- $fb_status_type = isset( $post_count->status_type ) ? $post_count->status_type : '';
243
-
244
- // This is the method to skip empty posts or posts that are simply about changing settings or other non important post types
245
- // We will count all the ones that are like this and add that number to the output of posts to offset the posts we are filtering out. Line 278 needs the same treatment of if options.
246
- if ( 'status' === $fb_type && empty( $fb_message ) && empty( $fb_story ) || 'event' === $fb_type || 'event' === $fb_type && false !== strpos( $fb_story, 'shared their event' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the name of the event to' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the privacy setting' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'an admin of the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'created the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'added an event' ) || 'event' === $fb_type && false !== strpos( $fb_story, 'added an event' ) ) {
247
- $set_zero++;
248
- } elseif ( '0' === $feed_data_check->data ) {
249
- // If more than the 5 posts(default in free) or the post= from shortcode is set to the amount of posts that are being filtered above we will add 7 to the post count to try and get at some posts.
250
- // This will only happen for Page and Group feeds.
251
- $set_zero = '7';
252
- }
253
- }// END POST foreach.
254
-
255
- // Result of the foreach loop above minus the empty posts and offset by those posts the actual number of posts entered is shown
256
- // $fb_shortcode['posts'] = $result;.
257
- if ( ! empty( $fb_count_offset ) ) {
258
- $set_zero = $fb_count_offset;
259
- $unset_count = $fb_shortcode['posts'] + $set_zero;
260
- $fb_shortcode['posts'] = $unset_count;
261
- } else {
262
- $unset_count = $fb_shortcode['posts'] + $set_zero;
263
- $fb_shortcode['posts'] = $unset_count;
264
- }
265
-
266
- // SHOW THE $feed_data_check PRINT_R
267
- // echo '<pre>';
268
- // print_r($feed_data_check);
269
- // echo '</pre>, ';.
270
- }
271
- // END.
272
- }
273
-
274
- ob_start();
275
- // Uncomment these for testing purposes to see the actual count and the offset count
276
- // print $set_zero;
277
- // print $fb_shortcode['posts'];
278
- // print $fb_type;
279
- // View Link.
280
- $fts_view_fb_link = $this->get_view_link( $fb_shortcode );
281
- // Get Cache Name.
282
- $fb_cache_name = $this->get_fb_cache_name( $fb_shortcode );
283
- // Get language.
284
- $language = $this->get_language( $fb_shortcode );
285
- if ( 'reviews' !== $fb_shortcode['type'] ) {
286
- // Get Response (AKA Page & Feed Information) ERROR CHECK inside this function.
287
- $response = $this->get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $access_token, $language );
288
- // Json decode data and build it from cache or response.
289
- $page_data = json_decode( $response['page_data'] );
290
- $feed_data = json_decode( $response['feed_data'] );
291
- }
292
-
293
- if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && true == get_option( 'fts_facebook_custom_api_token_biz' ) && 'reviews' === $fb_shortcode['type'] ||
294
- is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && ! empty( $fb_shortcode['token'] ) && 'reviews' === $fb_shortcode['type'] ||
295
- is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && ! empty( $fb_shortcode['access_token'] ) && 'reviews' === $fb_shortcode['type'] ) {
296
-
297
- if ( 'yes' === $fb_shortcode['remove_reviews_no_description'] && ! isset( $_GET['load_more_ajaxing'] ) ) {
298
-
299
- $fts_facebook_reviews = new FTS_Facebook_Reviews();
300
- $no_description_count = $fts_facebook_reviews->review_count_check( $fb_shortcode );
301
-
302
- // testing purposes
303
- // print ''. $no_description_count - $fb_shortcode['posts'] .' = The amount of posts with no review text.';
304
- // this count includes our original posts count + the amount of posts we found with no description.
305
- $fb_shortcode['posts'] = $no_description_count;
306
- }
307
- if ( ! empty( $fb_shortcode['token'] ) ) {
308
- $biz_access_token = $fb_shortcode['token'];
309
- } elseif ( ! empty( $fb_shortcode['access_token'] ) ) {
310
- $biz_access_token = $fb_shortcode['access_token'];
311
- } else {
312
- $biz_access_token = get_option( 'fts_facebook_custom_api_token_biz' );
313
- }
314
-
315
- // Get Response (AKA Page & Feed Information) ERROR CHECK inside this function.
316
- $response = $this->get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $biz_access_token, $language );
317
-
318
- $feed_data = json_decode( $response['feed_data'] );
319
-
320
- $feed_data = (object) $feed_data;
321
- // Add Feed Type to post array.
322
- // SHOW THE REVIEWS FEED PRINT_R
323
- // echo '<pre>';
324
- // print_r($feed_data );
325
- // echo '</pre>';
326
- if ( 'yes' === $fb_shortcode['remove_reviews_no_description'] ) {
327
- // $no_description_count2 = 0;.
328
- foreach ( $feed_data->data as $k => $v ) {
329
- if ( ! isset( $v->review_text ) ) {
330
- // print $v->reviewer->name . ' (Key# ' . $k . ') : Now Unset from array<br/>';.
331
- unset( $feed_data->data[ $k ] );
332
- // $no_description_count2++;.
333
- }
334
- }
335
- }
336
- $ratings_data = json_decode( $response['ratings_data'] );
337
-
338
- // SHOW THE REVIEWS RATING INFO PRINT_R
339
- // echo '<pre>';
340
- // print_r($ratings_data );
341
- // echo '</pre>';.
342
- // Add fts_profile_pic_url to the array so we can show profile photos for reviews and comments in popup
343
- foreach ( $feed_data->data as $post_array ) {
344
-
345
- $the_image = 'https://graph.facebook.com/' . $post_array->reviewer->id . '/picture?redirect=false&access_token=' . $biz_access_token . '';
346
-
347
- $profile_pic_response = wp_remote_get( $the_image );
348
- $profile_pic_data = wp_remote_retrieve_body( $profile_pic_response );
349
- $profile_pic_output = json_decode( $profile_pic_data );
350
-
351
- // echo '<pre>';
352
- // print_r($profile_pic_output->data->url);
353
- // echo '</pre>';
354
- $post_array->fts_profile_pic_url = $profile_pic_output->data->url;
355
- }
356
- }
357
-
358
- if ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
359
- $fts_count_ids = substr_count( $fb_shortcode['id'], ',' );
360
- } else {
361
- $fts_count_ids = '';
362
- }
363
-
364
- if ( $fts_count_ids >= 1 && 'reviews' !== $fb_shortcode['type'] ) {
365
-
366
- $fts_list_arrays = array();
367
- foreach ( $feed_data as $feed_data_name ) {
368
-
369
- $fts_list_arrays = array_merge_recursive( $fts_list_arrays, $feed_data_name->data );
370
- // var_dump( $fts_list_arrays[$i]);.
371
- }
372
- // Sort the array using the call back function.
373
- usort( $fts_list_arrays, array( $this, 'dateSort' ) );
374
-
375
- $merged_array['data'] = $fts_list_arrays;
376
- $feed_data = (object) $merged_array;
377
- }
378
- // SHOW THE REGULAR FEEDS PRINT_R (WORKS FOR VIDEOS TOO)
379
- // echo '<pre>';
380
- // print_r($feed_data );
381
- // echo '</pre>';
382
- // If No Response or Error then return.
383
- if ( is_array( $response ) && isset( $response[0] ) && isset( $response[1] ) && false === $response[0] ) {
384
- return $response[1];
385
- }
386
-
387
- if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
388
- // Make sure it's not ajaxing and we will allow the omition of certain album covers from the list by using omit_album_covers=0,1,2,3 in the shortcode.
389
- if ( ! isset( $_GET['load_more_ajaxing'] ) && 'albums' === $fb_shortcode['type'] ) {
390
-
391
- // omit_album_covers=0,1,2,3 for example.
392
- $omit_album_covers = $fb_shortcode['omit_album_covers'];
393
- $omit_album_covers_new = array();
394
- $omit_album_covers_new = explode( ',', $omit_album_covers );
395
- foreach ( $feed_data->data as $post_data ) {
396
- foreach ( $omit_album_covers_new as $omit ) {
397
- unset( $feed_data->data[ $omit ] );
398
- }
399
- }
400
- }
401
- }
402
- // Reviews Rating Filter.
403
- if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) {
404
- foreach ( $feed_data->data as $key => $post_data ) {
405
- // we are not going to show the unrecommended reviews in the feed at this point, no options in our plugin srl 8-28-18.
406
- if ( isset( $post_data->rating ) && $post_data->rating < $fb_shortcode['reviews_type_to_show'] || isset( $post_data->recommendation_type ) && 'negative' === $post_data->recommendation_type ) {
407
- unset( $feed_data->data[ $key ] );
408
- }
409
- }
410
- }
411
-
412
- // Make sure it's not ajaxing.
413
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
414
- // Get Response (AKA Page & Feed Information).
415
- $_REQUEST['fts_dynamic_name'] = sanitize_key( $this->fts_rand_string( 10 ) . '_' . $fb_shortcode['type'] );
416
- // Create Dynamic Class Name.
417
- $fts_dynamic_class_name = $this->get_fts_dynamic_class_name();
418
- // SOCIAL BUTTON.
419
- if ( ! $fts_count_ids >= 1 ) {
420
- $this->fb_social_btn_placement( $fb_shortcode, $access_token, 'fb-like-top-above-title' );
421
- }
422
-
423
- if ( 'reviews' !== $fb_shortcode['type'] ) {
424
- $page_data->description = isset( $page_data->description ) ? $page_data->description : '';
425
- $page_data->name = isset( $page_data->name ) ? $page_data->name : '';
426
- }
427
- // fts-fb-header-wrapper (for grid).
428
- echo isset( $fb_shortcode['grid'] ) && 'yes' !== $fb_shortcode['grid'] && 'album_photos' !== $fb_shortcode['type'] && 'albums' !== $fb_shortcode['type'] ? '<div class="fts-fb-header-wrapper">' : '';
429
-
430
- // Header.
431
- echo '<div class="fts-jal-fb-header">';
432
-
433
- if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && isset( $fb_shortcode['overall_rating'] ) && 'yes' === $fb_shortcode['overall_rating'] ) {
434
-
435
- // echo $this->get_facebook_overall_rating_response($fb_shortcode, $fb_cache_name, $access_token);.
436
- $fb_reviews_overall_rating_of_5_stars_text = get_option( 'fb_reviews_overall_rating_of_5_stars_text' );
437
- $fb_reviews_overall_rating_of_5_stars_text = ! empty( $fb_reviews_overall_rating_of_5_stars_text ) ? ' ' . $fb_reviews_overall_rating_of_5_stars_text : ' of 5 stars';
438
- $fb_reviews_overall_rating_reviews_text = get_option( 'fb_reviews_overall_rating_reviews_text' );
439
- $fb_reviews_overall_rating_reviews_text = ! empty( $fb_reviews_overall_rating_reviews_text ) ? ' ' . $fb_reviews_overall_rating_reviews_text : ' reviews';
440
- $fb_reviews_overall_rating_background_border_hide = get_option( 'fb_reviews_overall_rating_background_border_hide' );
441
- $fb_reviews_overall_rating_background_border_hide = ! empty( $fb_reviews_overall_rating_background_border_hide ) && 'yes' === $fb_reviews_overall_rating_background_border_hide ? ' fts-review-details-master-wrap-no-background-or-border' : '';
442
- echo '<div class="fts-review-details-master-wrap' . esc_attr( $fb_reviews_overall_rating_background_border_hide ) . '" itemscope itemtype="http://schema.org/CreativeWork"><i class="fts-review-star">' . esc_html( $ratings_data->overall_star_rating ) . ' &#9733;</i>';
443
- echo '<div class="fts-review-details-wrap" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><div class="fts-review-details"><span itemprop="ratingValue">' . esc_html( $ratings_data->overall_star_rating ) . '</span>' . esc_html( $fb_reviews_overall_rating_of_5_stars_text ) . '</div>';
444
- echo '<div class="fts-review-details-count"><span itemprop="reviewCount">' . esc_html( $ratings_data->rating_count ) . '</span>' . esc_html( $fb_reviews_overall_rating_reviews_text ) . '</div></div></div>';
445
-
446
- }
447
- if ( 'reviews' !== $fb_shortcode['type'] ) {
448
- if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
449
- // echo our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
450
- $fts_align_title = isset( $fb_shortcode['title_align'] ) && '' !== $fb_shortcode['title_align'] ? 'style="text-align:' . $fb_shortcode['title_align'] . ';"' : '';
451
- echo isset( $fb_shortcode['title'] ) && 'no' !== $fb_shortcode['title'] ? '<h1 ' . esc_attr( $fts_align_title ) . '><a href="' . esc_url( $fts_view_fb_link ) . '" target="_blank">' . esc_html( $page_data->name ) . '</a></h1>' : '';
452
-
453
- } else {
454
- // echo our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
455
- echo '<h1><a href="' . esc_url( $fts_view_fb_link ) . '" target="_blank">' . esc_html( $page_data->name ) . '</a></h1>';
456
- }
457
- // Description.
458
- echo isset( $fb_shortcode['description'] ) && 'no' !== $fb_shortcode['description'] ? '<div class="fts-jal-fb-group-header-desc">' . wp_kses(
459
- $this->fts_facebook_tag_filter( $page_data->description ),
460
- array(
461
- 'a' => array(
462
- 'href' => array(),
463
- 'title' => array(),
464
- ),
465
- 'br' => array(),
466
- 'em' => array(),
467
- 'strong' => array(),
468
- 'small' => array(),
469
- )
470
- ) . '</div>' : '';
471
- }
472
- // END Header.
473
- echo '</div>';
474
- // Close fts-fb-header-wrapper.
475
- echo isset( $fb_shortcode['grid'] ) && 'yes' !== $fb_shortcode['grid'] && 'album_photos' !== $fb_shortcode['type'] && 'albums' !== $fb_shortcode['type'] ? '</div>' : '';
476
- } //End check.
477
-
478
- // SOCIAL BUTTON.
479
- if ( ! $fts_count_ids >= 1 ) {
480
- $this->fb_social_btn_placement( $fb_shortcode, $access_token, 'fb-like-top-below-title' );
481
- }
482
-
483
- // Feed Header.
484
- // Make sure it's not ajaxing.
485
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
486
-
487
- $fts_mashup_media_top = isset( $fb_shortcode['show_media'] ) && 'top' === $fb_shortcode['show_media'] ? 'fts-mashup-media-top ' : '';
488
- $fts_mashup_show_name = isset( $fb_shortcode['show_name'] ) && 'no' === $fb_shortcode['show_name'] ? ' fts-mashup-hide-name ' : '';
489
- $fts_mashup_show_date = isset( $fb_shortcode['show_date'] ) && 'no' === $fb_shortcode['show_date'] ? ' fts-mashup-hide-date ' : '';
490
- $fts_mashup_show_thumbnail = isset( $fb_shortcode['show_thumbnail'] ) && 'no' === $fb_shortcode['show_thumbnail'] ? ' fts-mashup-hide-thumbnail ' : '';
491
-
492
- if ( ! isset( $fb_type ) && 'albums' === $fb_shortcode['type'] || ! isset( $fb_type ) && 'album_photos' === $fb_shortcode['type'] || isset( $fb_shortcode['grid'] ) && 'yes' === $fb_shortcode['grid'] ) {
493
-
494
- if ( isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
495
- echo '';
496
- } elseif ( isset( $fb_shortcode['slider'] ) && 'yes' !== $fb_shortcode['slider'] && 'yes' === $fb_shortcode['image_stack_animation'] || isset( $fb_shortcode['grid'] ) && 'yes' === $fb_shortcode['grid'] || isset( $fb_shortcode['image_stack_animation'] ) && 'yes' === $fb_shortcode['image_stack_animation'] ) {
497
- wp_enqueue_script( 'fts-masonry-pkgd', plugins_url( 'feed-them-social/feeds/js/masonry.pkgd.min.js' ), array( 'jquery' ), FTS_CURRENT_VERSION, false );
498
- echo '<script>';
499
- echo 'jQuery(window).load(function(){';
500
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry({';
501
- echo 'itemSelector: ".fts-jal-single-fb-post"';
502
- echo '});';
503
- echo '});';
504
- echo '</script>';
505
- }
506
-
507
- if ( ! isset( $fb_type ) && 'albums' === $fb_shortcode['type'] || ! isset( $fb_type ) && 'album_photos' === $fb_shortcode['type'] && ! isset( $fb_type ) && ! isset( $fb_shortcode['slider'] ) || ! isset( $fb_type ) && 'album_photos' === $fb_shortcode['type'] && ! isset( $fb_type ) && isset( $fb_shortcode['slider'] ) && 'yes' !== $fb_shortcode['slider'] ) {
508
- echo '<div class="fts-slicker-facebook-photos fts-slicker-facebook-albums' . ( isset( $fb_shortcode['video_album'] ) && $fb_shortcode['video_album'] && 'yes' === $fb_shortcode['video_album'] ? ' popup-video-gallery-fb' : '' ) . ( isset( $fb_shortcode['image_stack_animation'] ) && 'yes' === $fb_shortcode['image_stack_animation'] ? ' masonry js-masonry' : '' ) . ( isset( $fb_shortcode['images_align'] ) && $fb_shortcode['images_align'] ? ' popup-video-gallery-align-' . esc_attr( $fb_shortcode['images_align'] ) : '' ) . ' popup-gallery-fb ' . esc_attr( $fts_dynamic_class_name ) . '"';
509
- if ( 'yes' === $fb_shortcode['image_stack_animation'] ) {
510
- echo 'data-masonry-options=\'{ "isFitWidth": ' . ( 'no' === $fb_shortcode['center_container'] ? 'false' : 'true' ) . ' ' . ( 'no' === $fb_shortcode['image_stack_animation'] ? ', "transitionDuration": 0' : '' ) . '}\' style="margin:auto;"';
511
- }
512
- echo '>';
513
- } elseif (
514
- // slideshow scrollHorz or carousel.
515
- ! isset( $fb_type ) && isset( $fb_shortcode['slider'] ) && 'yes' === $fb_shortcode['slider'] ) {
516
- $fts_cycle_type = isset( $fb_shortcode['scrollhorz_or_carousel'] ) ? $fb_shortcode['scrollhorz_or_carousel'] : 'scrollHorz';
517
-
518
- if ( isset( $fts_cycle_type ) && 'carousel' === $fts_cycle_type ) {
519
- $fts_cycle_slideshow = 'slideshow';
520
- } else {
521
- $fts_cycle_slideshow = 'cycle-slideshow';
522
- }
523
- echo '';
524
-
525
- // none
526
- // dots_above_feed
527
- // dots_and_arrows_above_feed
528
- // dots_and_numbers_above_feed
529
- // dots_arrows_and_numbers_above_feed
530
- // arrows_and_numbers_above_feed
531
- // arrows_above_feed
532
- // numbers_above_feed
533
- // dots_below_feed
534
- // dots_and_arrows_below_feed
535
- // dots_and_numbers_below_feed
536
- // dots_arrows_and_numbers_below_feed
537
- // arrows_and_numbers_below_feed
538
- // arrows_below_feed
539
- // numbers_below_feed.
540
- $fts_controls_bar_color = ! empty( $fb_shortcode['slider_controls_bar_color'] ) ? $fb_shortcode['slider_controls_bar_color'] : '#000';
541
- $fts_controls_text_color = ! empty( $fb_shortcode['slider_controls_text_color'] ) ? $fb_shortcode['slider_controls_text_color'] : '#ddd';
542
- if ( isset( $fb_shortcode['slider_controls_width'] ) && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ) {
543
- $max_width_set = isset( $fb_shortcode['image_width'] ) && '' !== $fb_shortcode['image_width'] && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['image_width'] : '100%';
544
- } else {
545
- $max_width_set = isset( $fb_shortcode['slider_controls_width'] ) && '' !== $fb_shortcode['slider_controls_width'] && 'carousel' === $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['slider_controls_width'] : '100%';
546
- }
547
- if (
548
- isset( $fb_shortcode['slider_controls'] ) && 'dots_above_feed' === $fb_shortcode['slider_controls'] ||
549
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
550
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
551
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
552
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
553
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls'] ||
554
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls']
555
- ) {
556
-
557
- // Slider Dots Wrapper.
558
- if (
559
- isset( $fb_shortcode['slider_controls'] ) && 'dots_above_feed' === $fb_shortcode['slider_controls'] ||
560
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
561
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
562
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls']
563
- ) {
564
-
565
- echo '<div class="fts-slider-icons-center fts-pager-option-dots-only-top" style="margin:auto; width:100%;max-width:' . esc_attr( $max_width_set . ';background:' . $fts_controls_bar_color . ';color:' . $fts_controls_text_color ) . '"><div class="fts-pager-option fts-custom-pager-' . esc_attr( $fts_dynamic_class_name ) . '"></div></div>';
566
- }
567
-
568
- // Slider Arrow and Numbers Wrapper.
569
- if (
570
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
571
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
572
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
573
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
574
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls'] ||
575
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls']
576
- ) {
577
- echo '<div class="fts-slider-center" style="margin:auto; width:100%; max-width:' . esc_attr( $max_width_set . ';background:' . $fts_controls_bar_color . ';color:' . $fts_controls_text_color ) . '">';
578
- }
579
-
580
- // Previous Arrow.
581
- if (
582
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
583
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
584
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
585
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls']
586
- ) {
587
- echo '<span class="fts-prevControl-icon fts-prevControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
588
- }
589
- // Numbers.
590
- if (
591
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
592
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
593
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls'] ||
594
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls']
595
- ) {
596
- echo '<span id="fts-custom-caption-' . esc_attr( $fts_dynamic_class_name ) . '" class="fts-custom-caption" ></span>';
597
- }
598
- // Next Arrow.
599
- if (
600
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
601
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
602
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
603
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls']
604
- ) {
605
- echo '<span class="fts-nextControl-icon fts-nextControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
606
- }
607
-
608
- // Slider Arrow and Numbers Wrapper.
609
- if (
610
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
611
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
612
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
613
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
614
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls'] ||
615
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls']
616
- ) {
617
- echo '</div>';
618
- }
619
- }
620
-
621
- echo '<div class="popup-gallery-fb fts-fb-slideshow fts-slicker-facebook-photos fts-slicker-facebook-albums ' . esc_attr( $fts_cycle_slideshow ) . ' ' . ( isset( $fb_shortcode['video_album'] ) && $fb_shortcode['video_album'] && 'yes' === $fb_shortcode['video_album'] ? 'popup-video-gallery-fb' : '' ) . ' ' . ( isset( $fb_shortcode['images_align'] ) && $fb_shortcode['images_align'] ? ' popup-video-gallery-align-' . esc_attr( $fb_shortcode['images_align'] ) : '' ) . ' popup-gallery-fb ' . esc_attr( $fts_dynamic_class_name ) . '"
 
 
 
 
 
622
 
623
  style="margin:' . ( isset( $fb_shortcode['slider_margin'] ) && '' !== $fb_shortcode['slider_margin'] ? esc_attr( $fb_shortcode['slider_margin'] ) : 'auto' ) . ';' . ( isset( $fts_cycle_type ) && 'carousel' === $fts_cycle_type ? 'width:100%; max-width:100%; overflow:hidden;height:' . esc_attr( $fb_shortcode['image_height'] ) . ';' : 'overflow:hidden; height:' . esc_attr( $fb_shortcode['image_height'] ) . '; max-width:' . ( isset( $fb_shortcode['image_width'] ) && '' !== $fb_shortcode['image_width'] ? esc_attr( $fb_shortcode['image_width'] ) : 'auto' ) ) . ';" data-cycle-caption="#fts-custom-caption-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-caption-template="{{slideNum}} / {{slideCount}}" data-cycle-pager=".fts-custom-pager-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-pause-on-hover="true" data-cycle-prev=".fts-prevControl-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-next=".fts-nextControl-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-timeout="' . ( ! empty( $fb_shortcode['slider_timeout'] ) ? esc_attr( $fb_shortcode['slider_timeout'] ) : '0' ) . '" data-cycle-manual-speed="' . ( ! empty( $fb_shortcode['slider_speed'] ) ? esc_attr( $fb_shortcode['slider_speed'] ) : '400' ) . '" data-cycle-auto-height="false" data-cycle-slides="> div" data-cycle-fx="' . ( ! empty( $fb_shortcode['scrollhorz_or_carousel'] ) ? esc_attr( $fb_shortcode['scrollhorz_or_carousel'] ) : '' ) . '" data-cycle-carousel-visible=' . ( ! empty( $fb_shortcode['slides_visible'] ) ? esc_attr( $fb_shortcode['slides_visible'] ) : '4' ) . ' data-cycle-swipe=true data-cycle-swipe-fx=' . ( ! empty( $fb_shortcode['scrollhorz_or_carousel'] ) ? esc_attr( $fb_shortcode['scrollhorz_or_carousel'] ) : '' ) . '>';
624
- }
625
-
626
- if ( isset( $fb_shortcode['grid'] ) && 'yes' === $fb_shortcode['grid'] ) {
627
- echo '<div class="fts-slicker-facebook-posts masonry js-masonry ' . esc_attr( $fts_mashup_media_top . $fts_mashup_show_name . $fts_mashup_show_date . $fts_mashup_show_thumbnail ) . ( 'yes' === $fb_shortcode['popup'] ? 'popup-gallery-fb-posts ' : '' ) . ( 'reviews' === $fb_shortcode['type'] ? 'fts-reviews-feed ' : '' ) . esc_attr( $fts_dynamic_class_name ) . ' " style="margin:auto;" data-masonry-options=\'{ "isFitWidth": ' . ( 'no' === $fb_shortcode['center_container'] ? 'false' : 'true' ) . ' ' . ( 'no' === $fb_shortcode['image_stack_animation'] ? ', "transitionDuration": 0' : '' ) . '}\'>';
628
- }
629
- } else {
630
- echo '<div class="fts-jal-fb-group-display fts-simple-fb-wrapper ' . esc_attr( $fts_mashup_media_top . $fts_mashup_show_name . $fts_mashup_show_date . $fts_mashup_show_thumbnail ) . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? ' popup-gallery-fb-posts ' : '' ) . ( 'reviews' === $fb_shortcode['type'] ? 'fts-reviews-feed ' : '' ) . esc_attr( $fts_dynamic_class_name ) . ' ' . ( 'auto' !== $fb_shortcode['height'] && ! empty( $fb_shortcode['height'] ) ? 'fts-fb-scrollable" style="height:' . esc_attr( $fb_shortcode['height'] ) . '"' : '"' ) . '>';
631
- }
632
- } //End ajaxing Check
633
-
634
- // *********************
635
- // Post Information
636
- // *********************
637
- $fb_load_more_text = get_option( 'fb_load_more_text' ) ? get_option( 'fb_load_more_text' ) : esc_html( 'Load More', 'feed-them-social' );
638
- $response_post_array = $this->get_post_info( $feed_data, $fb_shortcode, $access_token, $language, $fb_cache_name );
639
-
640
- // Single event info call.
641
- if ( 'events' === $fb_shortcode['type'] ) {
642
- $single_event_array_response = $this->get_event_post_info( $feed_data, $fb_shortcode, $access_token, $language );
643
- }
644
-
645
- $set_zero = 0;
646
-
647
- // echo '<br/><br/>feed array<br/><br/>';.
648
- // echo '<pre>';
649
- // print_r($feed_data );
650
- // echo '</pre>';.
651
- // THE MAIN FEED
652
- // LOOP to fix Post count!
653
- foreach ( $feed_data->data as $k => $v ) {
654
- if ( $k >= $fb_shortcode['posts'] ) {
655
- unset( $feed_data->data[ $k ] );
656
- }
657
- }
658
-
659
- // Nov. 4th. 2016 // Uncomment this to sort the dates proper if facebook is returning them out of order.
660
- // We had one case of this here for a list of posts coming from an event.
661
- // https://wordpress.org/support/topic/facebook-event-posts-not-ordered-by-date/
662
- // usort($feed_data->data, array($this, "dateSort"));
663
- // Loop for all facebook feeds.
664
- foreach ( $feed_data->data as $post_data ) {
665
-
666
- $fb_message = isset( $post_data->message ) ? $post_data->message : '';
667
- $fb_status_type = isset( $post_data->status_type ) ? $post_data->status_type : '';
668
-
669
- $fb_story = isset( $post_data->story ) ? $post_data->story : '';
670
- $fb_type = isset( $post_data->type ) ? $post_data->type : '';
671
-
672
- // This is the method to skip empty posts or posts that are simply about changing settings or other non important post types.
673
- if ( 'status' === $fb_type && empty( $fb_message ) && empty( $fb_story ) || 'event' === $fb_type || 'event' === $fb_type && false !== strpos( $fb_story, 'shared their event' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the name of the event to' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the privacy setting' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'an admin of the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'created the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'added an event' ) || 'event' === $fb_type && false !== strpos( $fb_story, 'added an event' ) ) {
674
- } else {
675
- // define type note also affects load more fucntion call.
676
- if ( ! $fb_type && 'album_photos' === $fb_shortcode['type'] ) {
677
- $fb_type = 'photo';
678
- }
679
- if ( ! $fb_type && 'events' === $fb_shortcode['type'] ) {
680
- $fb_type = 'events';
681
-
682
- }
683
-
684
- $post_types = new fts_facebook_feed_post_types();
685
- $single_event_array_response = isset( $single_event_array_response ) ? $single_event_array_response : '';
686
-
687
- // echo '<br/><br/>were function gets called <br/><br/>' .
688
- // print_r( $post_data );.
689
- $post_types->feed_post_types( $set_zero, $fb_type, $post_data, $fb_shortcode, $response_post_array, $single_event_array_response );
690
-
691
- }
692
-
693
- $set_zero++;
694
- }// END POST foreach
695
-
696
- if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) {
697
- if ( ! empty( $feed_data->data ) ) {
698
- $this->fts_facebook_loadmore( $atts, $feed_data, $fb_type, $fb_shortcode, sanitize_key( $_REQUEST['fts_dynamic_name'] ) );
699
- }
700
- }
701
-
702
- echo '</div>'; // closing main div for fb photos, groups etc
703
- // only show this script if the height option is set to a number.
704
- if ( 'auto' !== $fb_shortcode['height'] && ! empty( $fb_shortcode['height'] ) ) {
705
- echo '<script>';
706
- // this makes it so the page does not scroll if you reach the end of scroll bar or go back to top'.
707
- echo 'jQuery.fn.isolatedScrollFacebookFTS = function() {';
708
- echo 'this.bind("mousewheel DOMMouseScroll", function (e) {';
709
- echo 'var delta = e.wheelDelta || (e.originalEvent && e.originalEvent.wheelDelta) || -e.detail,';
710
- echo 'bottomOverflow = this.scrollTop + jQuery(this).outerHeight() - this.scrollHeight >= 0,';
711
- echo 'topOverflow = this.scrollTop <= 0;';
712
- echo 'if ((delta < 0 && bottomOverflow) || (delta > 0 && topOverflow)) {';
713
- echo 'e.preventDefault();';
714
- echo '}';
715
- echo '});';
716
- echo 'return this;';
717
- echo '};';
718
- echo 'jQuery(".fts-fb-scrollable").isolatedScrollFacebookFTS();';
719
- echo '</script>';
720
- } //end $fb_shortcode['height'] !== 'auto' && empty($fb_shortcode['height']) == NULL
721
- // Make sure it's not ajaxing.
722
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
723
- echo '<div class="fts-clear"></div><div id="fb-root"></div>';
724
- if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) {
725
- if ( 'button' === $fb_shortcode['loadmore'] ) {
726
-
727
- echo '<div class="fts-fb-load-more-wrapper">';
728
- echo '<div id="loadMore_' . esc_attr( $_REQUEST['fts_dynamic_name'] ) . '" style="';
729
- if ( isset( $fb_shortcode['loadmore_btn_maxwidth'] ) && '' !== $fb_shortcode['loadmore_btn_maxwidth'] ) {
730
- echo 'max-width:' . esc_attr( $fb_shortcode['loadmore_btn_maxwidth'] ) . ';';
731
- }
732
- $loadmore_btn_margin = isset( $fb_shortcode['loadmore_btn_margin'] ) ? $fb_shortcode['loadmore_btn_margin'] : '20px';
733
- echo 'margin:' . esc_attr( $loadmore_btn_margin ) . ' auto ' . esc_attr( $loadmore_btn_margin ) . '" class="fts-fb-load-more">' . esc_html( $fb_load_more_text ) . '</div>';
734
- echo '</div>';
735
- }
736
- }
737
- }//End Check
738
-
739
- // Checks for sliders.
740
- if (
741
- isset( $fb_shortcode['slider_controls'] ) && 'dots_below_feed' === $fb_shortcode['slider_controls'] ||
742
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
743
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
744
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
745
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
746
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls'] ||
747
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls']
748
- ) {
749
-
750
- // Slider Dots Wrapper.
751
- if (
752
- isset( $fb_shortcode['slider_controls'] ) && 'dots_below_feed' === $fb_shortcode['slider_controls'] ||
753
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
754
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
755
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls']
756
- ) {
757
- if ( isset( $fb_shortcode['slider_controls_width'] ) && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ) {
758
- $max_width_set = isset( $fb_shortcode['image_width'] ) && '' !== $fb_shortcode['image_width'] && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['image_width'] : '100%';
759
- } else {
760
- $max_width_set = isset( $fb_shortcode['slider_controls_width'] ) && '' !== $fb_shortcode['slider_controls_width'] && 'carousel' === $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['slider_controls_width'] : '100%';
761
- }
762
-
763
- echo '<div class="fts-slider-icons-center" style="margin:auto; width:100%;max-width:' . esc_attr( $max_width_set ) . ';background:' . esc_attr( $fts_controls_bar_color ) . ';color:' . esc_attr( $fts_controls_text_color ) . '"><div class="fts-pager-option fts-custom-pager-' . esc_attr( $fts_dynamic_class_name ) . '"></div></div>';
764
- }
765
-
766
- // Slider Arrow and Numbers Wrapper.
767
- if (
768
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
769
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
770
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
771
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
772
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls'] ||
773
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls']
774
- ) {
775
- echo '<div class="fts-slider-center" style="margin:auto; width:100%; max-width:' . esc_attr( $max_width_set ) . ';background:' . esc_attr( $fts_controls_bar_color ) . ';color:' . esc_attr( $fts_controls_text_color ) . '">';
776
- }
777
-
778
- // Previous Arrow.
779
- if (
780
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
781
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
782
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
783
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls']
784
- ) {
785
- echo '<span class="fts-prevControl-icon fts-prevControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
786
- }
787
- // Numbers.
788
- if (
789
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
790
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
791
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls'] ||
792
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls']
793
- ) {
794
- echo '<span id="fts-custom-caption-' . esc_attr( $fts_dynamic_class_name ) . '" class="fts-custom-caption" ></span>';
795
- }
796
- // Next Arrow.
797
- if (
798
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
799
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
800
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
801
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls']
802
- ) {
803
- echo '<span class="fts-nextControl-icon fts-nextControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
804
- }
805
-
806
- // Slider Arrow and Numbers Wrapper.
807
- if (
808
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
809
- isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
810
- isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
811
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
812
- isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls'] ||
813
- isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls']
814
- ) {
815
- echo '</div>';
816
- }
817
- }
818
-
819
- unset( $_REQUEST['next_url'] );
820
-
821
- // ******************
822
- // SOCIAL BUTTON
823
- // ******************
824
- if ( ! $fts_count_ids >= 1 ) {
825
- $this->fb_social_btn_placement( $fb_shortcode, $access_token, 'fb-like-below' );
826
- }
827
-
828
- return ob_get_clean();
829
- }
830
-
831
- /**
832
- * Get FTS Dnamic Class Name
833
- *
834
- * @return string
835
- * @since 1.9.6
836
- */
837
- public function get_fts_dynamic_class_name() {
838
- $fts_dynamic_class_name = '';
839
- if ( isset( $_REQUEST['fts_dynamic_name'] ) ) {
840
- $fts_dynamic_class_name = 'feed_dynamic_class' . sanitize_key( $_REQUEST['fts_dynamic_name'] );
841
- }
842
- return $fts_dynamic_class_name;
843
- }
844
-
845
- /**
846
- * FTS Facebook Location
847
- *
848
- * Facebook Post Location.
849
- *
850
- * @param null $fb_type What kind of facebook feed it is.
851
- * @param string $location The location of the photo or video.
852
- * @since 1.9.6
853
- */
854
- public function fts_facebook_location( $fb_type = null, $location ) {
855
- switch ( $fb_type ) {
856
- case 'app':
857
- case 'cover':
858
- case 'profile':
859
- case 'mobile':
860
- case 'wall':
861
- case 'normal':
862
- case 'album':
863
- echo '<div class="fts-fb-location">' . esc_html( $location ) . '</div>';
864
- }
865
- }
866
-
867
- /**
868
- * FTS Facebook Post Photo
869
- *
870
- * @param string $fb_link The link to post.
871
- * @param string $fb_shortcode The shortcode.
872
- * @param string $photo_from Who it's from.
873
- * @param string $photo_source The source url.
874
- * @since 1.9.6
875
- */
876
- public function fts_facebook_post_photo( $fb_link, $fb_shortcode, $photo_from, $photo_source ) {
877
- if ( 'album_photos' === $fb_shortcode['type'] || 'albums' === $fb_shortcode['type'] ) {
878
- echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" class="fts-jal-fb-picture album-photo-fts" style="width:' . esc_attr( $fb_shortcode['image_width'] . ';height:' . $fb_shortcode['image_height'] ) . ';';
879
- echo 'background-image:url(' . esc_url( $photo_source ) . ');">';
880
- echo '</a>';
881
- } else {
882
- $fb_shortcode_popup = isset( $fb_shortcode['popup'] ) ? $fb_shortcode['popup'] : '';
883
- if ( 'yes' === $fb_shortcode_popup && 'javascript:;' !== $fb_link ) {
884
- echo '<a href="' . esc_url( $photo_source ) . '" target="_blank" class="fts-facebook-link-target fts-jal-fb-picture fts-fb-large-photo"><img border="0" alt="' . esc_html( $photo_from ) . '" src="' . esc_url( $photo_source ) . '"/></a>';
885
-
886
- } else {
887
- echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" class="fts-jal-fb-picture"><img border="0" alt="' . esc_html( $photo_from ) . '" src="' . esc_url( $photo_source ) . '"/></a>';
888
- }
889
- }
890
- }
891
-
892
- /**
893
- * FTS Facebook Post Name
894
- *
895
- * @param string $fb_link The post link.
896
- * @param string $fb_name The facebook name.
897
- * @param string $fb_type The type of feed.
898
- * @param null $fb_post_id The facebook post ID.
899
- * @since 1.9.6
900
- */
901
- public function fts_facebook_post_name( $fb_link, $fb_name, $fb_type, $fb_post_id = null ) {
902
- switch ( $fb_type ) {
903
- case 'video':
904
- echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" class="fts-jal-fb-name fb-id' . esc_attr( $fb_post_id ) . '">' . wp_kses(
905
- $this->fts_facebook_tag_filter( $fb_name ),
906
- array(
907
- 'a' => array(
908
- 'href' => array(),
909
- 'title' => array(),
910
- ),
911
- 'br' => array(),
912
- 'em' => array(),
913
- 'strong' => array(),
914
- 'small' => array(),
915
- )
916
- ) . '</a>';
917
- break;
918
- default:
919
- $fb_name = $this->fts_facebook_tag_filter( $fb_name );
920
- echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" class="fts-jal-fb-name">' . wp_kses(
921
- $this->fts_facebook_tag_filter( $fb_name ),
922
- array(
923
- 'a' => array(
924
- 'href' => array(),
925
- 'title' => array(),
926
- ),
927
- 'br' => array(),
928
- 'em' => array(),
929
- 'strong' => array(),
930
- 'small' => array(),
931
- )
932
- ) . '</a>';
933
- break;
934
- }
935
- }
936
-
937
- /**
938
- * FTS Facebook Post Description
939
- *
940
- * @param string $fb_description The post description.
941
- * @param string $fb_shortcode The shortcode.
942
- * @param string $fb_type The type of feed.
943
- * @param null $fb_post_id The post ID.
944
- * @param null $fb_by The post by.
945
- * @since 1.9.6
946
- */
947
- public function fts_facebook_post_desc( $fb_description, $fb_shortcode, $fb_type, $fb_post_id = null, $fb_by = null ) {
948
- $trunacate_words = new \ FeedThemSocialTruncateHTML();
949
- switch ( $fb_type ) {
950
- case 'video':
951
- $fb_description = $this->fts_facebook_tag_filter( $fb_description );
952
- echo '<div class="fts-jal-fb-description fb-id' . esc_attr( $fb_post_id ) . '">' . wp_kses(
953
- $fb_description,
954
- array(
955
- 'a' => array(
956
- 'href' => array(),
957
- 'title' => array(),
958
- ),
959
- 'br' => array(),
960
- 'em' => array(),
961
- 'strong' => array(),
962
- 'small' => array(),
963
- )
964
- ) . '</div>';
965
- break;
966
- case 'photo':
967
- if ( 'album_photos' === $fb_shortcode['type'] ) {
968
- if ( array_key_exists( 'words', $fb_shortcode ) ) {
969
- $more = isset( $more ) ? $more : '';
970
- $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
971
- echo '<div class="fts-jal-fb-description fts-non-popup-text">' . wp_kses(
972
- $trimmed_content,
973
- array(
974
- 'a' => array(
975
- 'href' => array(),
976
- 'title' => array(),
977
- ),
978
- 'br' => array(),
979
- 'em' => array(),
980
- 'strong' => array(),
981
- 'small' => array(),
982
- )
983
- ) . '</div>';
984
- // Here we display the full description in the popup.
985
- if ( 'yes' === $fb_shortcode['popup'] || 'yes' === $fb_shortcode['video_album'] ) {
986
- echo '<div class="fts-jal-fb-description fts-jal-fb-description-popup" style="display: none;">' . wp_kses(
987
- nl2br( $fb_description ),
988
- array(
989
- 'a' => array(
990
- 'href' => array(),
991
- 'title' => array(),
992
- ),
993
- 'br' => array(),
994
- 'em' => array(),
995
- 'strong' => array(),
996
- 'small' => array(),
997
- )
998
- ) . '</div>';
999
- }
1000
- } elseif ( isset( $fb_shortcode['words'] ) && '0' !== $fb_shortcode['words'] ) {
1001
- $fb_description = $this->fts_facebook_tag_filter( $fb_description );
1002
- echo '<div class="fts-jal-fb-description">' . wp_kses(
1003
- nl2br( $fb_description ),
1004
- array(
1005
- 'a' => array(
1006
- 'href' => array(),
1007
- 'title' => array(),
1008
- ),
1009
- 'br' => array(),
1010
- 'em' => array(),
1011
- 'strong' => array(),
1012
- 'small' => array(),
1013
- )
1014
- ) . '</div>';
1015
- }
1016
- }
1017
- break;
1018
- case 'albums':
1019
- if ( 'albums' === $fb_shortcode['type'] ) {
1020
- if ( array_key_exists( 'words', $fb_shortcode ) ) {
1021
- $more = isset( $more ) ? $more : '';
1022
- $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
1023
- echo '<div class="fts-jal-fb-description">' . wp_kses(
1024
- $trimmed_content,
1025
- array(
1026
- 'a' => array(
1027
- 'href' => array(),
1028
- 'title' => array(),
1029
- ),
1030
- 'br' => array(),
1031
- 'em' => array(),
1032
- 'strong' => array(),
1033
- 'small' => array(),
1034
- )
1035
- ) . '</div>';
1036
- } else {
1037
- $fb_description = $this->fts_facebook_tag_filter( $fb_description );
1038
- echo '<div class="fts-jal-fb-description">' . wp_kses(
1039
- nl2br( $fb_description ),
1040
- array(
1041
- 'a' => array(
1042
- 'href' => array(),
1043
- 'title' => array(),
1044
- ),
1045
- 'br' => array(),
1046
- 'em' => array(),
1047
- 'strong' => array(),
1048
- 'small' => array(),
1049
- )
1050
- ) . '</div>';
1051
- }
1052
- } else {
1053
- // Do for Default feeds or the video gallery feed.
1054
- if ( isset( $fb_shortcode['words'] ) && '0' !== $fb_shortcode['words'] ) {
1055
- $fb_description = $this->fts_facebook_tag_filter( $fb_description );
1056
- if ( is_array( $fb_shortcode ) && array_key_exists( 'words', $fb_shortcode ) && '0' !== $fb_shortcode['words'] ) {
1057
- $more = isset( $more ) ? $more : '';
1058
- $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
1059
- echo '<div class="fts-jal-fb-description">' . wp_kses(
1060
- $trimmed_content,
1061
- array(
1062
- 'a' => array(
1063
- 'href' => array(),
1064
- 'title' => array(),
1065
- ),
1066
- 'br' => array(),
1067
- 'em' => array(),
1068
- 'strong' => array(),
1069
- 'small' => array(),
1070
- )
1071
- ) . '</div>';
1072
- } else {
1073
- echo '<div class="fts-jal-fb-description">';
1074
- echo wp_kses(
1075
- nl2br( $fb_description ),
1076
- array(
1077
- 'a' => array(
1078
- 'href' => array(),
1079
- 'title' => array(),
1080
- ),
1081
- 'br' => array(),
1082
- 'em' => array(),
1083
- 'strong' => array(),
1084
- 'small' => array(),
1085
- )
1086
- );
1087
- echo '</div>';
1088
- }
1089
- if ( ! empty( $fb_link ) ) {
1090
- echo '<div>By: <a href="' . esc_url( $fb_link ) . '">' . esc_html( $fb_by ) . '<a/></div>';
1091
- }
1092
- }
1093
- }
1094
- break;
1095
- default:
1096
- include_once ABSPATH . 'wp-admin/includes/plugin.php';
1097
- if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) || is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
1098
- // here we trim the words for the links description text... for the premium version. The $fb_shortcode['words'] string actually comes from the javascript.
1099
- if ( is_array( $fb_shortcode ) && array_key_exists( 'words', $fb_shortcode ) ) {
1100
- $more = isset( $more ) ? $more : '';
1101
- $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
1102
- echo '<div class="jal-fb-description">' . wp_kses(
1103
- $trimmed_content,
1104
- array(
1105
- 'a' => array(
1106
- 'href' => array(),
1107
- 'title' => array(),
1108
- ),
1109
- 'br' => array(),
1110
- 'em' => array(),
1111
- 'strong' => array(),
1112
- 'small' => array(),
1113
- )
1114
- ) . '</div>';
1115
- } elseif ( is_array( $fb_shortcode ) && array_key_exists( 'words', $fb_shortcode ) && '0' !== $fb_shortcode['words'] ) {
1116
- $fb_description = $this->fts_facebook_tag_filter( $fb_description );
1117
- echo '<div class="jal-fb-description">' . wp_kses(
1118
- nl2br( $fb_description ),
1119
- array(
1120
- 'a' => array(
1121
- 'href' => array(),
1122
- 'title' => array(),
1123
- ),
1124
- 'br' => array(),
1125
- 'em' => array(),
1126
- 'strong' => array(),
1127
- 'small' => array(),
1128
- )
1129
- ) . '</div>';
1130
- }
1131
- } else {
1132
- // if the premium plugin is not active we will just show the regular full description.
1133
- $fb_description = $this->fts_facebook_tag_filter( $fb_description );
1134
- echo '<div class="jal-fb-description">' . wp_kses(
1135
- nl2br( $fb_description ),
1136
- array(
1137
- 'a' => array(
1138
- 'href' => array(),
1139
- 'title' => array(),
1140
- ),
1141
- 'br' => array(),
1142
- 'em' => array(),
1143
- 'strong' => array(),
1144
- 'small' => array(),
1145
- )
1146
- ) . '</div>';
1147
- }
1148
- }
1149
- }
1150
-
1151
- /**
1152
- * FTS Facebook Post Caption
1153
- *
1154
- * @param string $fb_caption The post caption.
1155
- * @param string $fb_shortcode The shortcode.
1156
- * @param string $fb_type The type of feed.
1157
- * @param null $fb_post_id The post ID.
1158
- * @since 1.9.6
1159
- */
1160
- public function fts_facebook_post_cap( $fb_caption, $fb_shortcode, $fb_type, $fb_post_id = null ) {
1161
- $trunacate_words = new \ FeedThemSocialTruncateHTML();
1162
- switch ( $fb_type ) {
1163
- case 'video':
1164
- $fb_caption = $this->fts_facebook_tag_filter( str_replace( 'www.', '', $fb_caption ) );
1165
- echo '<div class="fts-jal-fb-caption fb-id' . esc_attr( $fb_post_id ) . '">' . wp_kses(
1166
- $fb_caption,
1167
- array(
1168
- 'a' => array(
1169
- 'href' => array(),
1170
- 'title' => array(),
1171
- ),
1172
- 'br' => array(),
1173
- 'em' => array(),
1174
- 'strong' => array(),
1175
- 'small' => array(),
1176
- )
1177
- ) . '</div>';
1178
- break;
1179
- default:
1180
- include_once ABSPATH . 'wp-admin/includes/plugin.php';
1181
- if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) || is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
1182
- // here we trim the words for the links description text... for the premium version. The $fb_shortcode['words'] string actually comes from the javascript.
1183
- if ( array_key_exists( 'words', $fb_shortcode ) ) {
1184
- $more = isset( $more ) ? $more : '';
1185
- $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_caption, $fb_shortcode['words'], $more );
1186
- echo '<div class="jal-fb-caption">' . wp_kses(
1187
- $trimmed_content,
1188
- array(
1189
- 'a' => array(
1190
- 'href' => array(),
1191
- 'title' => array(),
1192
- ),
1193
- 'br' => array(),
1194
- 'em' => array(),
1195
- 'strong' => array(),
1196
- 'small' => array(),
1197
- )
1198
- ) . '</div>';
1199
- } else {
1200
- $fb_caption = $this->fts_facebook_tag_filter( $fb_caption );
1201
- echo '<div class="jal-fb-caption">' . wp_kses(
1202
- nl2br( $fb_caption ),
1203
- array(
1204
- 'a' => array(
1205
- 'href' => array(),
1206
- 'title' => array(),
1207
- ),
1208
- 'br' => array(),
1209
- 'em' => array(),
1210
- 'strong' => array(),
1211
- 'small' => array(),
1212
- )
1213
- ) . '</div>';
1214
- }
1215
- } else {
1216
- // if the premium plugin is not active we will just show the regular full description.
1217
- $fb_caption = $this->fts_facebook_tag_filter( $fb_caption );
1218
- echo '<div class="jal-fb-caption">' . wp_kses(
1219
- nl2br( $fb_caption ),
1220
- array(
1221
- 'a' => array(
1222
- 'href' => array(),
1223
- 'title' => array(),
1224
- ),
1225
- 'br' => array(),
1226
- 'em' => array(),
1227
- 'strong' => array(),
1228
- 'small' => array(),
1229
- )
1230
- ) . '</div>';
1231
- }
1232
- }
1233
- }
1234
-
1235
- /**
1236
- * Get Likes Shares Comments
1237
- *
1238
- * Get the total count for all.
1239
- *
1240
- * @param string $response_post_array The array from facebook.
1241
- * @param string $post_data_key The post data Key.
1242
- * @param string $fb_post_share_count The post Share Count.
1243
- * @return array
1244
- * @since 1.9.6
1245
- */
1246
- public function get_likes_shares_comments( $response_post_array, $post_data_key, $fb_post_share_count ) {
1247
- $lsc_array = array();
1248
- // Get Likes & Comments.
1249
- if ( $response_post_array ) {
1250
- if ( isset( $response_post_array[ $post_data_key . '_likes' ] ) ) {
1251
- $like_count_data = json_decode( $response_post_array[ $post_data_key . '_likes' ] );
1252
-
1253
- // Like Count.
1254
- if ( ! empty( $like_count_data->summary->total_count ) ) {
1255
- $fb_post_like_count = $like_count_data->summary->total_count;
1256
- } else {
1257
- $fb_post_like_count = 0;
1258
- }
1259
- if ( 0 === $fb_post_like_count ) {
1260
- $lsc_array['likes'] = '';
1261
- }
1262
- if ( 1 === $fb_post_like_count ) {
1263
- $lsc_array['likes'] = "<i class='icon-thumbs-up'></i> 1";
1264
- }
1265
- if ( $fb_post_like_count > '1' ) {
1266
- $lsc_array['likes'] = "<i class='icon-thumbs-up'></i> " . esc_html( $fb_post_like_count );
1267
- }
1268
- }
1269
- if ( isset( $response_post_array[ $post_data_key . '_comments' ] ) ) {
1270
- $comment_count_data = json_decode( $response_post_array[ $post_data_key . '_comments' ] );
1271
-
1272
- if ( ! empty( $comment_count_data->summary->total_count ) ) {
1273
- $fb_post_comments_count = $comment_count_data->summary->total_count;
1274
- } else {
1275
- $fb_post_comments_count = 0;
1276
- }
1277
- if ( 0 === $fb_post_comments_count ) {
1278
- $lsc_array['comments'] = '';
1279
- }
1280
- if ( 1 === $fb_post_comments_count ) {
1281
- $lsc_array['comments'] = "<i class='icon-comments'></i> 1";
1282
- $lsc_array['comments_thread'] = $comment_count_data;
1283
-
1284
- }
1285
- if ( $fb_post_comments_count > '1' ) {
1286
- $lsc_array['comments'] = "<i class='icon-comments'></i> " . $fb_post_comments_count;
1287
- $lsc_array['comments_thread'] = $comment_count_data;
1288
- }
1289
- }
1290
- }
1291
- // Shares Count.
1292
- if ( 0 === $fb_post_share_count || ! $fb_post_share_count ) {
1293
- $lsc_array['shares'] = '';
1294
- }
1295
- if ( 1 === $fb_post_share_count ) {
1296
- $lsc_array['shares'] = "<i class='icon-file'></i> 1";
1297
- }
1298
- if ( $fb_post_share_count > '1' ) {
1299
- $lsc_array['shares'] = "<i class='icon-file'></i> " . $fb_post_share_count;
1300
- }
1301
- return $lsc_array;
1302
- }
1303
-
1304
-
1305
- /**
1306
- * FTS Facebook Post See More
1307
- *
1308
- * Generate See More Button.
1309
- *
1310
- * @param string $fb_link The facebook link.
1311
- * @param string $lcs_array The lcs array.
1312
- * @param string $fb_type The type of feed.
1313
- * @param null $fb_post_id The post id.
1314
- * @param string $fb_shortcode The shortcode.
1315
- * @param null $fb_post_user_id The user id.
1316
- * @param null $fb_post_single_id The single post id.
1317
- * @param null $single_event_id The event id.
1318
- * @param string $post_data The post data.
1319
- * @since 1.9.6
1320
- */
1321
- public function fts_facebook_post_see_more( $fb_link, $lcs_array, $fb_type, $fb_post_id = null, $fb_shortcode, $fb_post_user_id = null, $fb_post_single_id = null, $single_event_id = null, $post_data ) {
1322
-
1323
- $description = isset( $post_data->message ) ? $post_data->message : '';
1324
- // SHOW THE FB FEED PRINT_R
1325
- // echo'<pre>';.
1326
- // print_r();.
1327
- // echo'</pre>';.
1328
- $view_on_facebook = get_option( 'fb_view_on_fb_fts' ) ? get_option( 'fb_view_on_fb_fts' ) : __( 'View on Facebook', 'feed-them-social' );
1329
- $share_this = new feed_them_social_functions();
1330
- switch ( $fb_type ) {
1331
- case 'events':
1332
- $single_event_id = 'https://www.facebook.com/events/' . $single_event_id;
1333
- echo '<div class="fts-likes-shares-etc-wrap">';
1334
- echo $share_this->fts_share_option( $single_event_id, $description );
1335
- echo '<a href="' . esc_attr( $single_event_id ) . '" target="_blank" class="fts-jal-fb-see-more">' . esc_html( $view_on_facebook ) . '</a></div>';
1336
- break;
1337
- case 'photo':
1338
- if ( ! empty( $fb_link ) ) {
1339
- echo '<div class="fts-likes-shares-etc-wrap">';
1340
- echo $share_this->fts_share_option( $fb_link, $description );
1341
- echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" class="fts-jal-fb-see-more">';
1342
- } else {
1343
- // exception for videos.
1344
- $single_video_id = 'https://www.facebook.com/' . $fb_post_id;
1345
- echo '<div class="fts-likes-shares-etc-wrap">';
1346
- echo $share_this->fts_share_option( $single_video_id, $description );
1347
- echo '<a href="' . esc_url( $single_video_id ) . '" target="_blank" class="fts-jal-fb-see-more">';
1348
- }
1349
- if ( 'album_photos' === $fb_shortcode['type'] && 'yes' === $fb_shortcode['hide_date_likes_comments'] ) {
1350
-
1351
- echo '<div class="hide-date-likes-comments-etc">' . wp_kses(
1352
- $lcs_array['likes'] . ' ' . $lcs_array['comments'] . ' ' . $lcs_array['shares'],
1353
- array(
1354
- 'a' => array(
1355
- 'href' => array(),
1356
- 'title' => array(),
1357
- ),
1358
- 'i' => array(
1359
- 'class' => array(),
1360
- ),
1361
- )
1362
- ) . ' &nbsp;&nbsp;</div>';
1363
- } else {
1364
-
1365
- echo '' . wp_kses(
1366
- $lcs_array['likes'] . ' ' . $lcs_array['comments'] . ' ' . $lcs_array['shares'],
1367
- array(
1368
- 'a' => array(
1369
- 'href' => array(),
1370
- 'title' => array(),
1371
- ),
1372
- 'i' => array(
1373
- 'class' => array(),
1374
- ),
1375
- )
1376
- ) . ' &nbsp;&nbsp;';
1377
- }
1378
- echo '&nbsp;' . esc_html( $view_on_facebook ) . '</a></div>';
1379
- break;
1380
- case 'app':
1381
- case 'cover':
1382
- case 'profile':
1383
- case 'mobile':
1384
- case 'wall':
1385
- case 'normal':
1386
- case 'albums':
1387
- $url_parsed = parse_url( $fb_link, PHP_URL_QUERY );
1388
- $params = parse_str( $url_parsed, $params );
1389
- $new_album_url = str_replace( 'album.php?fbid=' . $params['fbid'] . '&id=' . $params['id'] . '&aid=' . $params['aid'], 'media/set/?set=a.' . $params['fbid'] . '.' . $params['aid'] . '.' . $params['id'], $fb_link );
1390
-
1391
- echo '<div class="fts-likes-shares-etc-wrap">';
1392
- echo $share_this->fts_share_option( $new_album_url, $description );
1393
- echo '<a href="' . esc_url( $new_album_url ) . '" target="_blank" class="fts-jal-fb-see-more">';
1394
- if ( 'albums' === $fb_shortcode['type'] && 'yes' === $fb_shortcode['hide_date_likes_comments'] ) {
1395
- } else {
1396
-
1397
- echo '' . wp_kses(
1398
- $lcs_array['likes'] . ' ' . $lcs_array['comments'],
1399
- array(
1400
- 'a' => array(
1401
- 'href' => array(),
1402
- 'title' => array(),
1403
- ),
1404
- 'i' => array(
1405
- 'class' => array(),
1406
- ),
1407
- )
1408
- ) . ' &nbsp;&nbsp;';
1409
- }
1410
- echo '&nbsp;' . esc_html( $view_on_facebook ) . '</a></div>';
1411
- break;
1412
- default:
1413
- if ( 'yes' !== get_option( 'fb_reviews_remove_see_reviews_link' ) ) {
1414
- if ( 'reviews' === $fb_shortcode['type'] && is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
1415
- $fb_reviews_see_more_reviews_language = get_option( 'fb_reviews_see_more_reviews_language' ) ? get_option( 'fb_reviews_see_more_reviews_language' ) : 'See More Reviews';
1416
-
1417
- $hide_see_more = isset( $fb_shortcode['hide_see_more_reviews_link'] ) ? $fb_shortcode['hide_see_more_reviews_link'] : 'yes';
1418
- if ( 'yes' !== $hide_see_more ) {
1419
- echo ' <a href="' . esc_url( 'https://www.facebook.com/' . $fb_shortcode['id'] . '/reviews' ) . '" target="_blank" class="fts-jal-fb-see-more">' . esc_html( $fb_reviews_see_more_reviews_language, 'feed-them-social' ) . '</a>';
1420
- }
1421
- } else {
1422
- $post_single_id = 'https://www.facebook.com/' . $fb_post_user_id . '/posts/' . $fb_post_single_id;
1423
- echo '<div class="fts-likes-shares-etc-wrap">';
1424
- echo $share_this->fts_share_option( $post_single_id, $description );
1425
- echo '<a href="' . esc_url( $post_single_id ) . '" target="_blank" class="fts-jal-fb-see-more">';
1426
-
1427
- echo '' . wp_kses(
1428
- $lcs_array['likes'] . ' ' . $lcs_array['comments'],
1429
- array(
1430
- 'a' => array(
1431
- 'href' => array(),
1432
- 'title' => array(),
1433
- ),
1434
- 'i' => array(
1435
- 'class' => array(),
1436
- ),
1437
- )
1438
- ) . ' &nbsp;&nbsp;&nbsp;' . esc_html( $view_on_facebook ) . '</a></div>';
1439
- }
1440
- }
1441
- break;
1442
- }
1443
- }
1444
-
1445
- /**
1446
- * Get Access Token
1447
- *
1448
- * @return mixed
1449
- * @since 1.9.6
1450
- */
1451
- public function get_access_token() {
1452
- // The API Access Token.
1453
- // $custom_access_token = get_option('fts_facebook_custom_api_token');
1454
- // if (!empty($custom_access_token)) {
1455
- // return $access_token;
1456
- // } else {
1457
- // Randomizer
1458
- // $values = array(
1459
- // '431287540548931|4A23YYIFqhd-gpz_E4Fy6U_Seo0',
1460
- // '1748446362151826|epVUmLiKT8QhLN63iRvvXXHwxqk',
1461
- // '1875381106044241|KmWz3mtzGye0M5HTdX0SK7rqpIU',
1462
- // '754106341419549|AMruxCJ_ly8825VXeLhBKo_kOfs',
1463
- // '438563519819257|1GJ8GLl1AQ7ZTvXV_Xpok_QpH6s',
1464
- // '753693994788276|xm_PXoNRWW8WPQdcQArRpBgWn5Q',
1465
- // '644818402385988|sABEvG0QiOaJRlNLC2NphfQLlfg',
1466
- // '292500071162951|9MA-kzWVs6HTEybpdxKjgF_gqeo',
1467
- // '263710677420086|Jpui2CFig7RbtdHaHPN_fiEa77U',
1468
- // '1850081601881384|u2JcPCn7TH40MY5BwC-i4PMHGm8',
1469
- // );
1470
- // $access_token = $values[array_rand($values, 1)];.
1471
- return get_option( 'fts_facebook_custom_api_token' );
1472
- // }
1473
- }
1474
-
1475
- /**
1476
- * Get View Link
1477
- *
1478
- * @param string $fb_shortcode The facebook feed shortcode.
1479
- * @return string
1480
- * @since 1.9.6
1481
- */
1482
- public function get_view_link( $fb_shortcode ) {
1483
- switch ( $fb_shortcode['type'] ) {
1484
- case 'group':
1485
- $fts_view_fb_link = 'https://www.facebook.com/groups/' . $fb_shortcode['id'] . '/';
1486
- break;
1487
- case 'page':
1488
- $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/';
1489
- break;
1490
- case 'event':
1491
- $fts_view_fb_link = 'https://www.facebook.com/events/' . $fb_shortcode['id'] . '/';
1492
- break;
1493
- case 'events':
1494
- $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/events/';
1495
- break;
1496
- case 'albums':
1497
- $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/photos_stream?tab=photos_albums';
1498
- break;
1499
- // album photos and videos album.
1500
- case 'album_photos':
1501
- $fts_view_fb_link = isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ? 'https://www.facebook.com/' . $fb_shortcode['id'] . '/videos/' : 'https://www.facebook.com/' . $fb_shortcode['id'] . '/photos_stream/';
1502
- break;
1503
- case 'hashtag':
1504
- $fts_view_fb_link = 'https://www.facebook.com/hashtag/' . $fb_shortcode['id'] . '/';
1505
- break;
1506
- case 'reviews':
1507
- $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/reviews/';
1508
- break;
1509
- }
1510
- $fts_view_fb_link = isset( $fts_view_fb_link ) ? $fts_view_fb_link : '';
1511
- return $fts_view_fb_link;
1512
- }
1513
-
1514
- /**
1515
- * Get FB Cache Name
1516
- *
1517
- * @param string $fb_shortcode The facebook feed shortcode.
1518
- * @return string
1519
- * @since 1.9.6
1520
- */
1521
- public function get_fb_cache_name( $fb_shortcode ) {
1522
- // URL to get page info.
1523
- $r_count = substr_count( $fb_shortcode['id'], ',' );
1524
-
1525
- if ( $r_count >= 1 ) {
1526
- $result = preg_replace( '/[ ,]+/', '-', trim( $fb_shortcode['id'] ) );
1527
- $fb_shortcode['id'] = $result;
1528
- }
1529
-
1530
- switch ( $fb_shortcode['type'] ) {
1531
- case 'album_photos':
1532
- $fb_data_cache_name = 'fb_' . $fb_shortcode['type'] . '_' . $fb_shortcode['id'] . '_' . $fb_shortcode['album_id'] . '_num' . $fb_shortcode['posts'] . '';
1533
- break;
1534
- default:
1535
- $fb_data_cache_name = 'fb_' . $fb_shortcode['type'] . '_' . $fb_shortcode['id'] . '_num' . $fb_shortcode['posts'] . '';
1536
- break;
1537
- }
1538
- return $fb_data_cache_name;
1539
- }
1540
-
1541
- /**
1542
- * Get Language
1543
- *
1544
- * @return string
1545
- * @since 1.9.6
1546
- */
1547
- public function get_language() {
1548
- // this check is in place because we used this option and it failed for many people because we use wp get contents instead of curl.
1549
- // this can be removed in a future update and just keep the $language_option = get_option('fb_language', 'en_US');.
1550
- $language_option_check = get_option( 'fb_language' );
1551
- if ( isset( $language_option_check ) && 'Please Select Option' !== $language_option_check ) {
1552
- $language_option = get_option( 'fb_language', 'en_US' );
1553
- } else {
1554
- $language_option = 'en_US';
1555
- }
1556
- return ! empty( $language_option ) ? '&locale=' . $language_option : '';
1557
- }
1558
-
1559
- /**
1560
- * Get Facebook Overall Rating Response
1561
- *
1562
- * @param string $fb_shortcode The facebook feed shortcode.
1563
- * @param string $fb_cache_name The Cache Name.
1564
- * @param string $access_token The Access Token.
1565
- * @since 2.1.3
1566
- */
1567
- public function get_facebook_overall_rating_response( $fb_shortcode, $fb_cache_name, $access_token ) {
1568
-
1569
- // $mulit_data_rating = $this->fts_get_feed_json($mulit_data_rating);.
1570
- // Error Check
1571
- // $feed_data_rating_overall = json_decode($mulit_data['rating_data']);.
1572
- $fb_reviews_overall_rating_of_5_stars_text = get_option( 'fb_reviews_overall_rating_of_5_stars_text' );
1573
- $fb_reviews_overall_rating_of_5_stars_text = ! empty( $fb_reviews_overall_rating_of_5_stars_text ) ? ' ' . $fb_reviews_overall_rating_of_5_stars_text : ' of 5 stars';
1574
- $fb_reviews_overall_rating_reviews_text = get_option( 'fb_reviews_overall_rating_reviews_text' );
1575
- $fb_reviews_overall_rating_reviews_text = ! empty( $fb_reviews_overall_rating_reviews_text ) ? ' ' . $fb_reviews_overall_rating_reviews_text : ' reviews';
1576
- $fb_reviews_overall_rating_background_border_hide = get_option( 'fb_reviews_overall_rating_background_border_hide' );
1577
- $fb_reviews_overall_rating_background_border_hide = ! empty( $fb_reviews_overall_rating_background_border_hide ) && 'yes' === $fb_reviews_overall_rating_background_border_hide ? ' fts-review-details-master-wrap-no-background-or-border' : '';
1578
-
1579
- echo '<div class="fts-review-details-master-wrap' . esc_attr( $fb_reviews_overall_rating_background_border_hide ) . '"><i class="fts-review-star">' . esc_html( $feed_data_rating_overall->overall_star_rating ) . ' &#9733;</i>';
1580
- echo '<div class="fts-review-details-wrap" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><div class="fts-review-details"><span itemprop="ratingValue">' . esc_html( $feed_data_rating_overall->overall_star_rating ) . '</span>' . esc_html( $fb_reviews_overall_rating_of_5_stars_text ) . '</div>';
1581
- echo '<div class="fts-review-details-count"><span itemprop="reviewCount">' . esc_html( $feed_data_rating_overall->rating_count ) . '</span>' . esc_html( $fb_reviews_overall_rating_reviews_text ) . '</div></div></div>';
1582
-
1583
- // $fb_cache_name = $fb_shortcode['id'] . $this->rand_string(10);
1584
- // Make sure it's not ajaxing
1585
- // if (!isset($_GET['load_more_ajaxing'])) {
1586
- // Create Cache
1587
- // $FTS_FB_OUTPUT = $this->fts_create_feed_cache($fb_cache_name, $feed_data_rating_overall);
1588
- // }.
1589
- }
1590
-
1591
-
1592
- /**
1593
- * Get Facebook Feed Response
1594
- *
1595
- * @param string $fb_shortcode The facebook shortcode.
1596
- * @param string $fb_cache_name FB cache name.
1597
- * @param string $access_token The Access Token.
1598
- * @param string $language Language.
1599
- * @return array|mixed
1600
- * @throws \Exception
1601
- * @since 1.9.6
1602
- */
1603
- public function get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $access_token, $language ) {
1604
-
1605
- if ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
1606
- $fts_count_ids = substr_count( $fb_shortcode['id'], ',' );
1607
- } else {
1608
- $fts_count_ids = '';
1609
- }
1610
-
1611
- if ( false !== $this->fts_check_feed_cache_exists( $fb_cache_name ) && ! isset( $_GET['load_more_ajaxing'] ) ) {
1612
- $response = $this->fts_get_feed_cache( $fb_cache_name );
1613
- } else {
1614
- // Page.
1615
- if ( 'page' === $fb_shortcode['type'] && 'page_only' === $fb_shortcode['posts_displayed'] ) {
1616
- $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=id,name,description&access_token=' . $access_token . $language . '' );
1617
-
1618
- if ( isset( $_REQUEST['next_url'] ) ) {
1619
- $_REQUEST['next_url'] = str_replace( 'access_token=XXX', 'access_token=' . get_option( 'fts_facebook_custom_api_token' ), $_REQUEST['next_url'] );
1620
- }
1621
-
1622
- if ( ! $fts_count_ids >= 1 ) {
1623
- // We cannot add sanitize_text_field here on the $_REQUEST['next_url'] otherwise it will fail to load the contents from the facebook API.
1624
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/posts?fields=id,caption,attachments,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1625
- } else {
1626
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/posts?ids=' . $fb_shortcode['id'] . '&fields=id,caption,attachments,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1627
- }
1628
- } elseif (
1629
- // Albums.
1630
- 'albums' === $fb_shortcode['type'] ) {
1631
- $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=id,name,description,link&access_token=' . $access_token . $language . '' );
1632
- if ( isset( $_REQUEST['next_url'] ) ) {
1633
- $_REQUEST['next_url'] = str_replace( 'access_token=XXX', 'access_token=' . get_option( 'fts_facebook_custom_api_token' ), $_REQUEST['next_url'] );
1634
- }
1635
- // Check If Ajax next URL needs to be used.
1636
- if ( ! $fts_count_ids >= 1 ) {
1637
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : wp_unslash( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/albums?fields=id,photos{images},created_time,name,from,link,cover_photo,count,updated_time,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' ) ;
1638
- } else {
1639
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : wp_unslash( 'https://graph.facebook.com/albums?ids=' . $fb_shortcode['id'] . '&fields=id,photos{images},created_time,name,from,link,cover_photo,count,updated_time,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1640
- }
1641
-
1642
- // $mulit_data['feed_data'] = isset($_REQUEST['next_url']) ? esc_url_raw($_REQUEST['next_url']) : 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/albums?fields=id,created_time,name,from,link,cover_photo,count,updated_time,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '';
1643
- } elseif (
1644
- // Album Photos.
1645
- 'album_photos' === $fb_shortcode['type'] ) {
1646
- $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=id,name,description&access_token=' . $access_token . $language . '' );
1647
- if ( isset( $_REQUEST['next_url'] ) ) {
1648
- $_REQUEST['next_url'] = str_replace( 'access_token=XXX', 'access_token=' . get_option( 'fts_facebook_custom_api_token' ), $_REQUEST['next_url'] );
1649
- }
1650
- // Check If Ajax next URL needs to be used
1651
- // The reason I did not create a whole new else if for the video album is because I did not want to duplicate all the code required to make the video because the videos gallery comes from the photo albums on facebook.
1652
- if ( isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
1653
- if ( ! $fts_count_ids >= 1 ) {
1654
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/videos?fields=id,created_time,description,from,icon,link,message,object_id,picture,place,source,to,type,format,embed_html&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1655
- } else {
1656
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/videos?ids=' . $fb_shortcode['id'] . '&fields=id,created_time,description,from,icon,link,message,object_id,picture,place,source,to,type,format,embed_html&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1657
- }
1658
- } elseif ( isset( $fb_shortcode['album_id'] ) && 'photo_stream' === $fb_shortcode['album_id'] ) {
1659
- if ( ! $fts_count_ids >= 1 ) {
1660
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/photos?fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&type=uploaded&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1661
- } else {
1662
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/photos?ids=' . $fb_shortcode['id'] . '&fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&type=uploaded&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1663
- }
1664
- } else {
1665
- if ( ! $fts_count_ids >= 1 ) {
1666
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['album_id'] . '/photos?fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1667
- } else {
1668
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/photos?ids=' . $fb_shortcode['album_id'] . '&fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1669
- }
1670
- }
1671
- } elseif ( 'reviews' === $fb_shortcode['type'] ) {
1672
-
1673
- // Reviews.
1674
- if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
1675
- $fts_facebook_reviews = new FTS_Facebook_Reviews();
1676
- $mulit_data = $fts_facebook_reviews->review_connection( $fb_shortcode, $access_token, $language );
1677
-
1678
- $mulit_data['ratings_data'] = esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/?fields=overall_star_rating,rating_count&access_token=' . $access_token . '' );
1679
-
1680
- } else {
1681
- return 'Please Purchase and Activate the Feed Them Social Reviews plugin.';
1682
- exit;
1683
- }
1684
- } else {
1685
- $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=feed,id,name,description&access_token=' . $access_token . $language . '' );
1686
-
1687
- // Check If Ajax next URL needs to be used.
1688
- if ( ! $fts_count_ids >= 1 ) {
1689
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/feed?fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1690
- } else {
1691
- $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/feed?ids=' . $fb_shortcode['id'] . '&fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1692
- }
1693
- }
1694
- $response = $this->fts_get_feed_json( $mulit_data );
1695
-
1696
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
1697
- // Error Check.
1698
- $feed_data = json_decode( $response['feed_data'] );
1699
- $fts_error_check = new fts_error_handler();
1700
- $fts_error_check_complete = $fts_error_check->facebook_error_check( $fb_shortcode, $feed_data );
1701
- if ( is_array( $fts_error_check_complete ) && true === $fts_error_check_complete[0] ) {
1702
-
1703
- // If old Cache exists use it instead of showing an error.
1704
- if ( true === $this->fts_check_feed_cache_exists( $fb_cache_name, true ) ) {
1705
-
1706
- // If Current user is Admin and Cache exists for use then still show Admin the error for debugging purposes.
1707
- if ( current_user_can( 'administrator' ) ) {
1708
- echo wp_kses(
1709
- $fts_error_check_complete[1] . ' <em>**NOTE** This error is only shown to logged in Admins of this WordPress install</em>',
1710
- array(
1711
- 'a' => array(
1712
- 'href' => array(),
1713
- 'title' => array(),
1714
- ),
1715
- 'br' => array(),
1716
- 'em' => array(),
1717
- 'strong' => array(),
1718
- )
1719
- );
1720
- }
1721
-
1722
- // Return Cache because it exists in Database. Better than showing nothing right?
1723
- return $this->fts_get_feed_cache( $fb_cache_name, true );
1724
- }
1725
- // If User is Admin and no Old cache is saved in database for use.
1726
- if ( current_user_can( 'administrator' ) ) {
1727
- return array( false, $fts_error_check_complete[1] );
1728
- }
1729
- }
1730
- }
1731
-
1732
- // Make sure it's not ajaxing.
1733
- if ( ! empty( $response['feed_data'] ) ) {
1734
- // Create Cache.
1735
- $this->fts_create_feed_cache( $fb_cache_name, $response );
1736
- }
1737
- } // end main else.
1738
-
1739
- return $response;
1740
-
1741
- }
1742
-
1743
-
1744
- /**
1745
- * Get Facebook Feed Dynamic Name
1746
- *
1747
- * @param string $fb_shortcode The facebook feed shortcode.
1748
- * @return mixed
1749
- * @since 1.9.6
1750
- */
1751
- public function get_facebook_feed_dynamic_name( $fb_shortcode ) {
1752
-
1753
- return $_REQUEST['fts_dynamic_name'] = sanitize_key( $this->fts_rand_string( 10 ) . '_' . $fb_shortcode['type'] );
1754
-
1755
- }
1756
-
1757
- /**
1758
- * Get Facebook Feed Dynamic Class Name
1759
- *
1760
- * @param null $fts_dynamic_name Our Dynamic Name for ajax.
1761
- * @return string
1762
- * @since 1.9.6
1763
- */
1764
- public function get_facebook_feed_dynamic_class_name( $fts_dynamic_name = null ) {
1765
- $fts_dynamic_class_name = '';
1766
- if ( isset( $fts_dynamic_name ) ) {
1767
- $fts_dynamic_class_name = 'feed_dynamic_class' . sanitize_key( $_REQUEST['fts_dynamic_name'] );
1768
- }
1769
- return $fts_dynamic_class_name;
1770
- }
1771
-
1772
-
1773
- /**
1774
- * Get Post Info
1775
- *
1776
- * For Facebook.
1777
- *
1778
- * @param string $feed_data The facebook contents.
1779
- * @param string $fb_shortcode FB cache name.
1780
- * @param string $access_token The Access Token.
1781
- * @param string $language Language.
1782
- * @return array|mixed
1783
- * @since 1.9.6
1784
- */
1785
- public function get_post_info( $feed_data, $fb_shortcode, $access_token, $language, $fb_cache_name) {
1786
- $developer_mode = get_option( 'fts_clear_cache_developer_mode' );
1787
-
1788
- if ( 'album_photos' === $fb_shortcode['type'] ) {
1789
- $fb_post_data_cache = 'fb_' . $fb_shortcode['type'] . '_post_' . $fb_shortcode['album_id'] . '_num' . $fb_shortcode['posts'] . '';
1790
- } else {
1791
- $fb_post_data_cache = 'fb_' . $fb_shortcode['type'] . '_post_' . $fb_shortcode['id'] . '_num' . $fb_shortcode['posts'] . '';
1792
- }
1793
- if ( false !== $this->fts_check_feed_cache_exists( $fb_post_data_cache ) && ! isset( $_GET['load_more_ajaxing'] ) ) {
1794
- $response_post_array = $this->fts_get_feed_cache( $fb_post_data_cache );
1795
-
1796
- } else {
1797
- // Build the big post counter.
1798
- $fb_post_array = array();
1799
- // Single Events Array.
1800
- $set_zero = 0;
1801
- foreach ( $feed_data->data as $counter ) {
1802
-
1803
- $counter->id = isset( $counter->id ) ? $counter->id : '';
1804
-
1805
- if ( $set_zero === $fb_shortcode['posts'] ) {
1806
- break;
1807
- }
1808
-
1809
- $fb_type = isset( $counter->type ) ? $counter->type : '';
1810
- $post_data_key = isset( $counter->object_id ) ? $counter->object_id : $counter->id;
1811
-
1812
- // Likes & Comments.
1813
- $fb_post_array[ $post_data_key . '_likes' ] = 'https://graph.facebook.com/' . $post_data_key . '/reactions?summary=1&access_token=' . $access_token;
1814
- $fb_post_array[ $post_data_key . '_comments' ] = 'https://graph.facebook.com/' . $post_data_key . '/comments?summary=1&access_token=' . $access_token;
1815
- // Video.
1816
- if ( 'video' === $fb_type ) {
1817
- $fb_post_array[ $post_data_key . '_video' ] = 'https://graph.facebook.com/' . $post_data_key;
1818
- }
1819
- // Photo.
1820
- $fb_album_cover = isset( $counter->cover_photo->id ) ? $counter->cover_photo->id : '';
1821
- if ( 'albums' === $fb_shortcode['type'] && ! $fb_album_cover ) {
1822
- unset( $counter );
1823
- continue;
1824
- }
1825
- if ( 'albums' === $fb_shortcode['type'] ) {
1826
- $fb_post_array[ $fb_album_cover . '_photo' ] = 'https://graph.facebook.com/' . $fb_album_cover;
1827
- }
1828
- if ( 'hashtag' === $fb_shortcode['type'] ) {
1829
- $fb_post_array[ $post_data_key . '_photo' ] = 'https://graph.facebook.com/' . $counter->source;
1830
- }
1831
- // GROUP Photo.
1832
- if ( 'group' === $fb_shortcode['type'] ) {
1833
- $fb_post_array[ $post_data_key . '_group_post_photo' ] = 'https://graph.facebook.com/' . $counter->id . '?fields=picture,full_picture&access_token=' . $access_token;
1834
- }
1835
-
1836
- $set_zero++;
1837
- }
1838
-
1839
- $fts_error_check = new fts_error_handler();
1840
- $fts_error_check_complete = $fts_error_check->facebook_error_check( $fb_shortcode, $feed_data );
1841
- if ( is_array( $fts_error_check_complete ) && true === $fts_error_check_complete[0] ) {
1842
-
1843
- // If old Cache exists use it instead of showing an error.
1844
- if ( true === $this->fts_check_feed_cache_exists( $fb_cache_name, true ) ) {
1845
-
1846
- // Return Cache because it exists in Database. Better than showing nothing right?
1847
- return $this->fts_get_feed_cache( $fb_cache_name, true );
1848
- }
1849
- }
1850
-
1851
- // Response.
1852
- $response_post_array = $this->fts_get_feed_json( $fb_post_array );
1853
- // Make sure it's not ajaxing.
1854
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
1855
- // Create Cache.
1856
- $this->fts_create_feed_cache( $fb_post_data_cache, $response_post_array );
1857
- }
1858
- }
1859
- // SHOW THE POST RESPONSE PRINT_R
1860
- // echo'<pre>';
1861
- // print_r($response_post_array);
1862
- // echo'</pre>';.
1863
- return $response_post_array;
1864
- }
1865
-
1866
-
1867
- /**
1868
- * Get Post Info
1869
- *
1870
- * For Facebook.
1871
- *
1872
- * @param string $feed_data The facebook contents.
1873
- * @param string $fb_shortcode FB cache name.
1874
- * @param string $access_token The Access Token.
1875
- * @param string $language Language.
1876
- * @return array|mixed
1877
- * @since 2.1.6
1878
- */
1879
- public function get_event_post_info( $feed_data, $fb_shortcode, $access_token, $language ) {
1880
- $developer_mode = get_option( 'fts_clear_cache_developer_mode' );
1881
-
1882
- $fb_event_post_data_cache = 'fbe_' . $fb_shortcode['type'] . '_post_' . $fb_shortcode['id'] . '_num' . $fb_shortcode['posts'] . '';
1883
- if ( false !== $this->fts_check_feed_cache_exists( $fb_event_post_data_cache ) && ! isset( $_GET['load_more_ajaxing'] ) ) {
1884
- $response_event_post_array = $this->fts_get_feed_cache( $fb_event_post_data_cache );
1885
- } else {
1886
- // Single Events Array.
1887
- $fb_single_events_array = array();
1888
- $set_zero = 0;
1889
- foreach ( $feed_data->data as $counter ) {
1890
-
1891
- $counter->id = isset( $counter->id ) ? $counter->id : '';
1892
-
1893
- if ( $set_zero === $fb_shortcode['posts'] ) {
1894
- break;
1895
- }
1896
-
1897
- $single_event_id = $counter->id;
1898
- $language = isset( $language ) ? $language : '';
1899
- // Event Info, Time etc.
1900
- $fb_single_events_array[ 'event_single_' . $single_event_id . '_info' ] = 'https://graph.facebook.com/' . $single_event_id . '/?access_token=' . $access_token . $language;
1901
- // Event Location.
1902
- $fb_single_events_array[ 'event_single_' . $single_event_id . '_location' ] = 'https://graph.facebook.com/' . $single_event_id . '/?fields=place&access_token=' . $access_token . $language;
1903
- // Event Cover Photo.
1904
- $fb_single_events_array[ 'event_single_' . $single_event_id . '_cover_photo' ] = 'https://graph.facebook.com/' . $single_event_id . '/?fields=cover&access_token=' . $access_token . $language;
1905
- // Event Ticket Info.
1906
- $fb_single_events_array[ 'event_single_' . $single_event_id . '_ticket_info' ] = 'https://graph.facebook.com/' . $single_event_id . '/?fields=ticket_uri&access_token=' . $access_token . $language;
1907
-
1908
- $set_zero++;
1909
- }
1910
-
1911
- $response_event_post_array = $this->fts_get_feed_json( $fb_single_events_array );
1912
- // Create Cache.
1913
- $this->fts_create_feed_cache( $fb_event_post_data_cache, $response_event_post_array );
1914
-
1915
- }
1916
- // SHOW THE $response_event_post_array FEED PRINT_R
1917
- // '<pre>';.
1918
- // print_r($response_event_post_array);
1919
- // echo'</pre>';.
1920
- return $response_event_post_array;
1921
- }
1922
-
1923
-
1924
- /**
1925
- * FB Social Button Placement
1926
- *
1927
- * @param string $fb_shortcode The facebook contents.
1928
- * @param string $access_token The Access Token.
1929
- * @param string $share_loc Language.
1930
- * @return string|void
1931
- * @since 2.0.1
1932
- */
1933
- public function fb_social_btn_placement( $fb_shortcode, $access_token, $share_loc ) {
1934
- // Don't do it for these!
1935
- if ( 'group' === $fb_shortcode['type'] || 'event' === $fb_shortcode['type'] || isset( $fb_shortcode['hide_like_option'] ) && 'yes' === $fb_shortcode['hide_like_option'] ) {
1936
- return;
1937
- }
1938
- // Facebook Follow Button Options.
1939
- $fb_show_follow_btn = get_option( 'fb_show_follow_btn' );
1940
-
1941
- if ( isset( $fb_shortcode['show_follow_btn_where'] ) && '' !== $fb_shortcode['show_follow_btn_where'] ) {
1942
- if ( 'above_title' === $fb_shortcode['show_follow_btn_where'] ) {
1943
- $fb_show_follow_btn_where = 'fb-like-top-above-title';
1944
- } elseif ( 'below_title' === $fb_shortcode['show_follow_btn_where'] ) {
1945
- $fb_show_follow_btn_where = 'fb-like-top-below-title';
1946
- } elseif ( 'bottom' === $fb_shortcode['show_follow_btn_where'] ) {
1947
- $fb_show_follow_btn_where = 'fb-like-below';
1948
- }
1949
- } else {
1950
- $fb_show_follow_btn_where = get_option( 'fb_show_follow_btn_where' );
1951
- }
1952
-
1953
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
1954
-
1955
- $like_option_align_final = isset( $fb_shortcode['like_option_align'] ) ? 'fts-fb-social-btn-' . $fb_shortcode['like_option_align'] . '' : '';
1956
-
1957
- if ( $share_loc === $fb_show_follow_btn_where ) {
1958
- switch ( $fb_show_follow_btn_where ) {
1959
- case 'fb-like-top-above-title':
1960
- // Top Above Title.
1961
- if ( isset( $fb_show_follow_btn ) && 'dont-display' !== $fb_show_follow_btn ) {
1962
- echo '<div class="fb-social-btn-top ' . esc_attr( $like_option_align_final ) . '">';
1963
- $this->social_follow_button( 'facebook', $fb_shortcode['id'], $access_token, $fb_shortcode );
1964
- echo '</div>';
1965
- }
1966
- break;
1967
- // Top Below Title.
1968
- case 'fb-like-top-below-title':
1969
- if ( isset( $fb_show_follow_btn ) && 'dont-display' !== $fb_show_follow_btn ) {
1970
- echo '<div class="fb-social-btn-below-description ' . esc_attr( $like_option_align_final ) . '">';
1971
- $this->social_follow_button( 'facebook', $fb_shortcode['id'], $access_token, $fb_shortcode );
1972
- echo '</div>';
1973
- }
1974
- break;
1975
- // Bottom.
1976
- case 'fb-like-below':
1977
- if ( isset( $fb_show_follow_btn ) && 'dont-display' !== $fb_show_follow_btn ) {
1978
- echo '<div class="fb-social-btn-bottom ' . esc_attr( $like_option_align_final ) . '">';
1979
- $this->social_follow_button( 'facebook', $fb_shortcode['id'], $access_token, $fb_shortcode );
1980
- echo '</div>';
1981
- }
1982
- break;
1983
- }
1984
- }
1985
- }
1986
- }
1987
-
1988
- /**
1989
- * FTS Custom Trim Words
1990
- *
1991
- * Not using this anymore but keeping it as a fallback function for the combined if user has not updated the free version before the combined extension
1992
- *
1993
- * @param string $text The description text.
1994
- * @param int $num_words Number of words you want to be showm.
1995
- * @param string $more The ...
1996
- * @return mixed
1997
- * @since 1.9.6
1998
- */
1999
- public function fts_custom_trim_words( $text, $num_words = 45, $more ) {
2000
- ! empty( $num_words ) && 0 !== $num_words ? $more = __( '...' ) : '';
2001
- $text = nl2br( $text );
2002
- // Filter for Hashtags and Mentions Before returning.
2003
- $text = $this->fts_facebook_tag_filter( $text );
2004
- $text = strip_shortcodes( $text );
2005
- // Add tags that you don't want stripped.
2006
- $text = strip_tags( $text, '<strong><br><em><i><a>' );
2007
- $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
2008
- $sep = ' ';
2009
- if ( count( $words_array ) > $num_words ) {
2010
- array_pop( $words_array );
2011
- $text = implode( $sep, $words_array );
2012
- $text = $text . $more;
2013
- } else {
2014
- $text = implode( $sep, $words_array );
2015
- }
2016
- return wpautop( $text );
2017
- }
2018
-
2019
- /**
2020
- * FTS Facebook Tag Filter
2021
- *
2022
- * Tags Filter (return clean tags)
2023
- *
2024
- * @param string $fb_description Facebook Description.
2025
- * @return mixed
2026
- * @since 1.9.6
2027
- */
2028
- public function fts_facebook_tag_filter( $fb_description ) {
2029
- // Converts URLs to Links.
2030
- $fb_description = preg_replace( '@(?!(?!.*?<a)[^<]*<\/a>)(?:(?:https?|ftp|file)://|www\.|ftp\.)[-A-‌​Z0-9+&#/%=~_|$?!:,.]*[A-Z0-9+&#/%=~_|$]@i', '<a href="\0" target="_blank">\0</a>', $fb_description );
2031
-
2032
- $splitano = explode( 'www', $fb_description );
2033
- $count = count( $splitano );
2034
- $return_value = '';
2035
-
2036
- for ( $i = 0; $i < $count; $i++ ) {
2037
- if ( 'href=' === substr( $splitano[ $i ], -6, 5 ) ) {
2038
- $return_value .= $splitano[ $i ] . 'http://www';
2039
- } elseif ( $i < $count - 1 ) {
2040
- $return_value .= $splitano[ $i ] . 'www';
2041
- } else {
2042
- $return_value .= $splitano[ $i ];
2043
- }
2044
- }
2045
- // Mentions.
2046
- $return_value = preg_replace( '/@+(\w+)/u', '<a target="_blank" href="https://www.facebook.com/$1">@$1</a>', $return_value );
2047
- // Hash tags.
2048
- $return_value = preg_replace( '/#+(\w+)/u', '<a target="_blank" href="https://www.facebook.com/hashtag/$1">#$1</a>', $return_value );
2049
-
2050
- return $return_value;
2051
- }
2052
-
2053
- /**
2054
- * Load PopUp Scripts
2055
- *
2056
- * @param string $fb_shortcode The Facebook feed shortcode.
2057
- * @since 1.9.6
2058
- */
2059
- public function load_popup_scripts( $fb_shortcode ) {
2060
- if ( 'yes' === $fb_shortcode['popup'] ) {
2061
- // it's ok if these styles & scripts load at the bottom of the page.
2062
- $fts_fix_magnific = get_option( 'fts_fix_magnific' ) ? get_option( 'fts_fix_magnific' ) : '';
2063
- if ( isset( $fts_fix_magnific ) && '1' !== $fts_fix_magnific ) {
2064
- wp_enqueue_style( 'fts-popup', plugins_url( 'feed-them-social/feeds/css/magnific-popup.css' ), array(), FTS_CURRENT_VERSION, false );
2065
- }
2066
- wp_enqueue_script( 'fts-popup-js', plugins_url( 'feed-them-social/feeds/js/magnific-popup.js' ), array(), FTS_CURRENT_VERSION, false );
2067
- wp_enqueue_script( 'fts-images-loaded', plugins_url( 'feed-them-social/feeds/js/imagesloaded.pkgd.min.js' ), array(), FTS_CURRENT_VERSION, false );
2068
- if ( ! isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
2069
- wp_enqueue_script( 'fts-global', plugins_url( 'feed-them-social/feeds/js/fts-global.js' ), array( 'jquery' ), FTS_CURRENT_VERSION, false );
2070
- }
2071
- }
2072
- }
2073
-
2074
- /**
2075
- * FTS Facebook LoadMore
2076
- *
2077
- * @param string $atts The shortcode attributes.
2078
- * @param string $feed_data The Feed data.
2079
- * @param string $fb_type The type of facebook feed.
2080
- * @param string $fb_shortcode The Facebook feed shortcode.
2081
- * @since 1.9.6
2082
- */
2083
- public function fts_facebook_loadmore( $atts, $feed_data, $fb_type, $fb_shortcode ) {
2084
- if ( ( isset( $fb_shortcode['loadmore'] ) && 'button' === $fb_shortcode['loadmore'] || isset( $fb_shortcode['loadmore'] ) && 'autoscroll' === $fb_shortcode['loadmore'] ) && ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) ) {
2085
-
2086
- $fb_load_more_text = get_option( 'fb_load_more_text' ) ? get_option( 'fb_load_more_text' ) : esc_html( 'Load More', 'feed-them-social' );
2087
- $fb_no_more_posts_text = get_option( 'fb_no_more_posts_text' ) ? get_option( 'fb_no_more_posts_text' ) : esc_html( 'No More Posts', 'feed-them-social' );
2088
- $fb_no_more_photos_text = get_option( 'fb_no_more_photos_text' ) ? get_option( 'fb_no_more_photos_text' ) : esc_html( 'No More Photos', 'feed-them-social' );
2089
- $fb_no_more_videos_text = get_option( 'fb_no_more_videos_text' ) ? get_option( 'fb_no_more_videos_text' ) : esc_html( 'No More Videos', 'feed-them-social' );
2090
- $fb_no_more_reviews_text = get_option( 'fb_no_more_reviews_text' ) ? get_option( 'fb_no_more_reviews_text' ) : esc_html( 'No More Reviews', 'feed-them-social' );
2091
-
2092
- // Load More BUTTON Start.
2093
- $next_url = isset( $feed_data->paging->next ) ? $feed_data->paging->next : '';
2094
-
2095
- $posts = isset( $fb_shortcode['posts'] ) ? $fb_shortcode['posts'] : '';
2096
- $loadmore_count = isset( $fb_shortcode['loadmore_count'] ) && '' !== $fb_shortcode['loadmore_count'] ? $fb_shortcode['loadmore_count'] : '';
2097
- // we check to see if the loadmore count number is set and if so pass that as the new count number when fetching the next set of posts.
2098
- $_REQUEST['next_url'] = '' !== $loadmore_count ? str_replace( "limit=$posts", "limit=$loadmore_count", $next_url ) : $next_url;
2099
-
2100
- $access_token = is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ? 'access_token=' . get_option( 'fts_facebook_custom_api_token_biz' ) : 'access_token=' . get_option( 'fts_facebook_custom_api_token' );
2101
- $_REQUEST['next_url'] = str_replace( $access_token, 'access_token=XXX', $next_url );
2102
-
2103
- echo '<script>';
2104
- echo 'var nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . '= "' . esc_url_raw( $_REQUEST['next_url'] ) . '";';
2105
- echo '</script>';
2106
-
2107
- // Make sure it's not ajaxing.
2108
- if ( ! isset( $_GET['load_more_ajaxing'] ) && ! isset( $_REQUEST['fts_no_more_posts'] ) && ! empty( $fb_shortcode['loadmore'] ) ) {
2109
- $fts_dynamic_name = $_REQUEST['fts_dynamic_name'];
2110
- $time = time();
2111
- $nonce = wp_create_nonce( $time . 'load-more-nonce' );
2112
- $fts_dynamic_class_name = $this->get_fts_dynamic_class_name();
2113
- echo '<script>';
2114
- echo 'jQuery(document).ready(function() {';
2115
- if ( 'autoscroll' === $fb_shortcode['loadmore'] ) {
2116
- // this is where we do SCROLL function to LOADMORE if = autoscroll in shortcode.
2117
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").bind("scroll",function() {';
2118
- echo 'if(jQuery(this).scrollTop() + jQuery(this).innerHeight() >= jQuery(this)[0].scrollHeight) {';
2119
- } else {
2120
- // this is where we do CLICK function to LOADMORE if = button in shortcode.
2121
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").click(function() {';
2122
- }
2123
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").addClass("fts-fb-spinner");';
2124
- echo 'var button = jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").html("<div class=\'bounce1\'></div><div class=\'bounce2\'></div><div class=\'bounce3\'></div>");';
2125
- echo 'console.log(button);';
2126
-
2127
- echo 'var yes_ajax = "yes";';
2128
- echo 'var fts_d_name = "' . esc_js( $fts_dynamic_name ) . '";';
2129
- echo 'var fts_security = "' . esc_js( $nonce ) . '";';
2130
- echo 'var fts_time = "' . esc_js( $time ) . '";';
2131
-
2132
- echo 'var feed_name = "fts_facebook";';
2133
- echo 'var loadmore_count = "posts=' . esc_js( $fb_shortcode['loadmore_count'] ) . '";';
2134
- echo 'var feed_attributes = ' . json_encode( $atts ) . ';';
2135
-
2136
- echo 'jQuery.ajax({';
2137
- echo 'data: {action: "my_fts_fb_load_more", next_url: nextURL_' . esc_js( $fts_dynamic_name ) . ', fts_dynamic_name: fts_d_name, feed_name: feed_name, loadmore_count: loadmore_count, feed_attributes: feed_attributes, load_more_ajaxing: yes_ajax, fts_security: fts_security, fts_time: fts_time},';
2138
- echo 'type: "GET",';
2139
- echo 'url: "' . esc_url( admin_url( 'admin-ajax.php' ) ) . '",';
2140
- echo 'success: function( data ) {';
2141
- echo 'console.log("Well Done and got this from sever: " + data);';
2142
- if ( $fb_type && 'albums' === $fb_shortcode['type'] || $fb_type && 'album_photos' === $fb_shortcode['type'] && 'yes' !== $fb_shortcode['video_album'] || 'yes' === $fb_shortcode['grid'] ) {
2143
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").append(data).filter(".' . esc_js( $fts_dynamic_class_name ) . '").html();';
2144
- // if (isset($fb_shortcode['image_stack_animation']) && $fb_shortcode['image_stack_animation'] == 'yes') {.
2145
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry( "reloadItems");';
2146
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry("layout");';
2147
-
2148
- echo 'setTimeout(function() {';
2149
- // Do something after 3 seconds
2150
- // This can be direct code, or call to some other function.
2151
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry("layout");';
2152
- echo '}, 500);';
2153
-
2154
- // }.
2155
- echo 'if(!nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' || nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' == "no more"){';
2156
- if ( 'reviews' === $fb_shortcode['type'] ) {
2157
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_reviews_text ) . '</div>\');';
2158
- } elseif ( 'videos' === $fb_shortcode['type'] ) {
2159
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_videos_text ) . '</div>\');';
2160
- } else {
2161
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_photos_text ) . '</div>\');';
2162
- }
2163
-
2164
- echo ' jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").removeAttr("id");';
2165
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").unbind("scroll");';
2166
- echo '}';
2167
- } else {
2168
- if ( isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
2169
- echo 'var result = jQuery(data).insertBefore( jQuery("#output_' . esc_js( $fts_dynamic_name ) . '") );';
2170
- echo 'var result = jQuery(".feed_dynamic_' . esc_js( $fts_dynamic_name ) . '_album_photos").append(data).filter("#output_' . esc_js( $fts_dynamic_name ) . '").html();';
2171
- } else {
2172
- echo 'var result = jQuery("#output_' . esc_js( $fts_dynamic_name ) . '").append(data).filter("#output_' . esc_js( $fts_dynamic_name ) . '").html();';
2173
- }
2174
- echo 'jQuery("#output_' . esc_js( $fts_dynamic_name ) . '").html(result);';
2175
- echo 'if(!nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' || nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' == "no more"){';
2176
- // Reviews.
2177
- if ( 'reviews' === $fb_shortcode['type'] ) {
2178
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_reviews_text ) . '</div>\');';
2179
- } else {
2180
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_posts_text ) . '</div>\');';
2181
- }
2182
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").removeAttr("id");';
2183
- echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").unbind("scroll");';
2184
- echo '}';
2185
-
2186
- }
2187
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").html("' . esc_html( $fb_load_more_text ) . '");';
2188
- // jQuery("#loadMore_'.$fts_dynamic_name.'").removeClass("flip360-fts-load-more");.
2189
- echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").removeClass("fts-fb-spinner");';
2190
- if ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ) {
2191
- // We return this function again otherwise the popup won't work correctly for the newly loaded items.
2192
- echo 'jQuery.fn.slickFacebookPopUpFunction();';
2193
- }
2194
- // Reload the share each funcion otherwise you can't open share option..
2195
- echo 'jQuery.fn.ftsShare();slickremixImageResizingFacebook2();slickremixImageResizingFacebook3();';
2196
-
2197
- echo '}';
2198
- echo '});';
2199
- // end of ajax().
2200
- echo 'return false;';
2201
- // string $scrollMore is at top of this js script. acception for scroll option closing tag.
2202
- if ( 'autoscroll' === $fb_shortcode['loadmore'] ) {
2203
- echo '}';
2204
- // end of scroll ajax load.
2205
- }
2206
- echo '});';
2207
- // end of document.ready.
2208
- echo '});';
2209
- // end of form.submit.
2210
- echo '</script>';
2211
- }
2212
- // End Check.
2213
- // main closing div not included in ajax check so we can close the wrap at all times.
2214
- // Make sure it's not ajaxing.
2215
- if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
2216
- $fts_dynamic_name = $_REQUEST['fts_dynamic_name'];
2217
- // this div returns outputs our ajax request via jquery appenc html from above style="display:nonee;".
2218
- echo '<div id="output_' . esc_attr( $fts_dynamic_name ) . '" class="fts-fb-load-more-output"></div>';
2219
- if ( ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) && 'autoscroll' === $fb_shortcode['loadmore'] ) {
2220
- echo '<div id="loadMore_' . esc_attr( $fts_dynamic_name ) . '" class="fts-fb-load-more fts-fb-autoscroll-loader">Facebook</div>';
2221
- }
2222
- }
2223
- }
2224
- // end of if loadmore is button or autoscroll.
2225
- }
2226
- // end fts_facebook_loadmore().
2227
-
2228
- /**
2229
- * Random String
2230
- *
2231
- * Create a random string
2232
- *
2233
- * @param string $length How many character to randomize.
2234
- * @return mixed
2235
- * @since 1.9.6
2236
- */
2237
- public function fts_rand_string( $length = 10 ) {
2238
- $characters = 'abcdefghijklmnopqrstuvwxyz';
2239
- $characters_length = strlen( $characters );
2240
- $random_string = '';
2241
- for ( $i = 0; $i < $length; $i++ ) {
2242
- $random_string .= $characters[ wp_rand( 0, $characters_length - 1 ) ];
2243
- }
2244
-
2245
- return $random_string;
2246
- }
 
 
 
 
 
2247
  }//end class
7
  * @since 1.9.6
8
  */
9
  class FTS_Facebook_Feed extends feed_them_social_functions {
10
+ /**
11
+ * Construct
12
+ *
13
+ * Facebook Feed constructor.
14
+ *
15
+ * @since 1.9.6
16
+ */
17
+ public function __construct() {
18
+ add_shortcode( 'fts_facebook_group', array( $this, 'fts_fb_func' ) );
19
+ add_shortcode( 'fts_facebook_page', array( $this, 'fts_fb_func' ) );
20
+ add_shortcode( 'fts_facebook_event', array( $this, 'fts_fb_func' ) );
21
+ add_shortcode( 'fts_facebook', array( $this, 'fts_fb_func' ) );
22
+ add_action( 'wp_enqueue_scripts', array( $this, 'fts_fb_head' ) );
23
+ }
24
+
25
+ /**
26
+ * FTS FB Head
27
+ *
28
+ * Add Styles and Scripts functions.
29
+ *
30
+ * @since 1.9.6
31
+ */
32
+ public function fts_fb_head() {
33
+ wp_enqueue_style( 'fts-feeds', plugins_url( 'feed-them-social/feeds/css/styles.css' ), array(), FTS_CURRENT_VERSION, false );
34
+
35
+ if ( is_plugin_active( 'feed-them-social/feed-them.php' ) && is_plugin_active( 'feed-them-carousel-premium/feed-them-carousel-premium.php' ) && is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
36
+ wp_enqueue_script( 'fts-feeds', plugins_url( 'feed-them-carousel-premium/feeds/js/jquery.cycle2.js' ), array(), FTS_CURRENT_VERSION, false );
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Date Sort
42
+ *
43
+ * Date sort option for multiple feeds in a shortcode.
44
+ *
45
+ * @param string $a First Date.
46
+ * @param string $b Second Date.
47
+ * @return false|int
48
+ * @since 1.9.6
49
+ */
50
+ public function dateSort( $a, $b ) {
51
+ $date_a = strtotime( $a->created_time );
52
+ $date_b = strtotime( $b->created_time );
53
+ return ( $date_b - $date_a );
54
+ }
55
+
56
+
57
+ /**
58
+ * FTS FB Func
59
+ *
60
+ * Display Facebook Feed.
61
+ *
62
+ * @param string $atts Shortcode attributes.
63
+ * @return string
64
+ * @since 1.9.6
65
+ */
66
+ public function fts_fb_func( $atts ) {
67
+ // masonry snippet in fts-global.
68
+ wp_enqueue_script( 'fts-global', plugins_url( 'feed-them-social/feeds/js/fts-global.js' ), array( 'jquery' ), FTS_CURRENT_VERSION, false );
69
+ $developer_mode = 'on';
70
+ // Make sure everything is reset.
71
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
72
+ // Eventually add premium page file.
73
+ if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
74
+
75
+ $fts_facebook_reviews = new FTS_Facebook_Reviews();
76
+ $review_atts = $fts_facebook_reviews->shortcode_attributes();
77
+ $fb_shortcode = shortcode_atts( $review_atts, $atts );
78
+ // Load up some scripts for popup.
79
+ $this->load_popup_scripts( $fb_shortcode );
80
+ } elseif ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
81
+ include WP_CONTENT_DIR . '/plugins/feed-them-premium/feeds/facebook/facebook-premium-feed.php';
82
+ // Doing this to phase out the invalid snake case.
83
+ $fb_shortcode = $FB_Shortcode;
84
+ // Load up some scripts for popup.
85
+ $this->load_popup_scripts( $fb_shortcode );
86
+ } elseif ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) && ! is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
87
+ // Doing this to phase out the invalid snake case.
88
+ $fb_shortcode = $FB_Shortcode;
89
+ $fb_shortcode = shortcode_atts(
90
+ array(
91
+ 'id' => '',
92
+ 'type' => '',
93
+ 'posts' => '',
94
+ 'posts_displayed' => '',
95
+ 'height' => '',
96
+ 'album_id' => '',
97
+ 'image_width' => '',
98
+ 'image_height' => '',
99
+ 'space_between_photos' => '',
100
+ 'hide_date_likes_comments' => '',
101
+ 'center_container' => '',
102
+ 'image_stack_animation' => '',
103
+ 'image_position_lr' => '',
104
+ 'image_position_top' => '',
105
+ 'hide_comments_popup' => '',
106
+ // only works with combined FB streams otherwise you need the premium version.
107
+ 'popup' => '',
108
+ 'words' => '',
109
+ 'grid' => '',
110
+ 'colmn_width' => '',
111
+ 'space_between_posts' => '',
112
+ // new show media on top options.
113
+ 'show_media' => '',
114
+ 'show_date' => '',
115
+ 'show_name' => '',
116
+ // 'access_token' => '',
117
+ ),
118
+ $atts
119
+ );
120
+ if ( null === $fb_shortcode['posts'] ) {
121
+ $fb_shortcode['posts'] = '6';
122
+ }
123
+ } else {
124
+ $fb_shortcode = shortcode_atts(
125
+ array(
126
+ 'id' => '',
127
+ 'type' => '',
128
+ 'posts' => '',
129
+ 'description' => 'yes',
130
+ 'posts_displayed' => '',
131
+ 'height' => '',
132
+ 'album_id' => '',
133
+ 'image_width' => '',
134
+ 'image_height' => '',
135
+ 'space_between_photos' => '',
136
+ 'hide_date_likes_comments' => '',
137
+ 'center_container' => '',
138
+ 'image_stack_animation' => '',
139
+ 'image_position_lr' => '',
140
+ 'image_position_top' => '',
141
+ 'hide_comments_popup' => '',
142
+ 'access_token' => '',
143
+ ),
144
+ $atts
145
+ );
146
+ if ( null === $fb_shortcode['posts'] ) {
147
+ $fb_shortcode['posts'] = '6';
148
+ }
149
+ }
150
+
151
+ if ( 'album_videos' === $fb_shortcode['type'] ) {
152
+ $fb_shortcode['type'] = 'album_photos';
153
+ $fb_shortcode['video_album'] = 'yes';
154
+ $fb_shortcode['album_id'] = 'photo_stream';
155
+ if ( isset( $fb_shortcode['loadmore_btn_maxwidth'] ) && ! empty( $fb_shortcode['loadmore_btn_maxwidth'] ) ) {
156
+ $fb_shortcode['loadmore'] = 'button';
157
+ }
158
+ }
159
+
160
+ if ( ! is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && ! is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && ! is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) && $fb_shortcode['posts'] > '6' ) {
161
+ $fb_shortcode['posts'] = '6';
162
+ }
163
+
164
+ // Get Access Token.
165
+ $access_token = isset( $fb_shortcode['access_token'] ) ? $fb_shortcode['access_token'] : '';
166
+ if ( ! empty( $access_token ) ) {
167
+ $access_token = $fb_shortcode['access_token'];
168
+ } else {
169
+ $access_token = $this->get_access_token();
170
+ }
171
+
172
+ // UserName?.
173
+ if ( ! $fb_shortcode['id'] ) {
174
+ return 'Please enter a username for this feed.';
175
+ }
176
+ if ( 'reviews' === $fb_shortcode['type'] && ! is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
177
+ return '<div style="clear:both; padding:15px 0;">You must have FTS Facebook Reviews extension active to see this feed.</div>';
178
+ }
179
+
180
+ $type = isset( $fb_shortcode['type'] ) ? $fb_shortcode['type'] : '';
181
+ if ( 'group' === $type || 'page' === $type || 'event' === $type ) {
182
+
183
+ // EMPTY FACEBOOK POSTS OFFSET AND COUNT.
184
+ // Option Now Being Removed from here and the Facebook Settings Page.
185
+ // Setting it to blank so no matter what it will never error get_option('fb_count_offset');.
186
+ $fb_count_offset = '';
187
+
188
+ // View Link.
189
+ $fts_view_fb_link = '';
190
+ // Get Cache Name.
191
+ $fb_cache_name = '';
192
+ // Get language.
193
+ $language = '';
194
+
195
+ // Get Response (AKA Page & Feed Information) ERROR CHECK inside this function.
196
+ $response2 = $this->get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $access_token, $language );
197
+
198
+ // Test to see if the re-sort date option is working from function above.
199
+ // print $this->dateSort;.
200
+ $feed_data_check = json_decode( $response2['feed_data'] );
201
+
202
+ // SHOW THE REGULAR FEEDS PRINT_R
203
+ // echo '<pre>';
204
+ // print_r($feed_data_check);
205
+ // echo '</pre>';
206
+ // $idNew = array();
207
+ // $idNew = explode(',', $fb_shortcode['id']);
208
+ // Testing options before foreach loop
209
+ // $idNew = 'tonyhawk';
210
+ // print_r($feed_data_check->$idNew->data);.
211
+ if ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
212
+ $fts_count_ids = substr_count( $fb_shortcode['id'], ',' );
213
+ } else {
214
+ $fts_count_ids = '';
215
+ }
216
+
217
+ if ( isset( $feed_data_check->data ) ) {
218
+ if ( $fts_count_ids >= 1 && 'reviews' !== $fb_shortcode['type'] ) {
219
+ $fts_list_arrays = array();
220
+ foreach ( $feed_data_check as $feed_data_name ) {
221
+
222
+ if ( isset( $feed_data_name->data ) ) {
223
+ $fts_list_arrays = array_merge_recursive( $fts_list_arrays, $feed_data_name->data );
224
+ }
225
+ // var_dump( $fts_list_arrays[$i]);.
226
+ }
227
+ $merged_array['data'] = $fts_list_arrays;
228
+ $feed_data_check = (object) $merged_array;
229
+ }
230
+
231
+ // Test the created dataes are being sorted properly
232
+ // foreach($merged_array['data'] as $newSort) {
233
+ // print date("jS F, Y", strtotime($newSort->created_time));
234
+ // print '<br/>';
235
+ // }.
236
+ $set_zero = 0;
237
+ foreach ( $feed_data_check->data as $post_count ) {
238
+
239
+ $fb_message = isset( $post_count->message ) ? $post_count->message : '';
240
+ $fb_story = isset( $post_count->story ) ? $post_count->story : '';
241
+ $fb_type = isset( $post_count->type ) ? $post_count->type : '';
242
+ $fb_status_type = isset( $post_count->status_type ) ? $post_count->status_type : '';
243
+
244
+ // This is the method to skip empty posts or posts that are simply about changing settings or other non important post types
245
+ // We will count all the ones that are like this and add that number to the output of posts to offset the posts we are filtering out. Line 278 needs the same treatment of if options.
246
+ if ( 'status' === $fb_type && empty( $fb_message ) && empty( $fb_story ) || 'event' === $fb_type || 'event' === $fb_type && false !== strpos( $fb_story, 'shared their event' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the name of the event to' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the privacy setting' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'an admin of the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'created the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'added an event' ) || 'event' === $fb_type && false !== strpos( $fb_story, 'added an event' ) ) {
247
+ $set_zero++;
248
+ } elseif ( '0' === $feed_data_check->data ) {
249
+ // If more than the 5 posts(default in free) or the post= from shortcode is set to the amount of posts that are being filtered above we will add 7 to the post count to try and get at some posts.
250
+ // This will only happen for Page and Group feeds.
251
+ $set_zero = '7';
252
+ }
253
+ }// END POST foreach.
254
+
255
+ // Result of the foreach loop above minus the empty posts and offset by those posts the actual number of posts entered is shown
256
+ // $fb_shortcode['posts'] = $result;.
257
+ if ( ! empty( $fb_count_offset ) ) {
258
+ $set_zero = $fb_count_offset;
259
+ $unset_count = $fb_shortcode['posts'] + $set_zero;
260
+ $fb_shortcode['posts'] = $unset_count;
261
+ } else {
262
+ $unset_count = $fb_shortcode['posts'] + $set_zero;
263
+ $fb_shortcode['posts'] = $unset_count;
264
+ }
265
+
266
+ // SHOW THE $feed_data_check PRINT_R
267
+ // echo '<pre>';
268
+ // print_r($feed_data_check);
269
+ // echo '</pre>, ';.
270
+ }
271
+ // END.
272
+ }
273
+
274
+ ob_start();
275
+ // Uncomment these for testing purposes to see the actual count and the offset count
276
+ // print $set_zero;
277
+ // print $fb_shortcode['posts'];
278
+ // print $fb_type;
279
+ // View Link.
280
+ $fts_view_fb_link = $this->get_view_link( $fb_shortcode );
281
+ // Get Cache Name.
282
+ $fb_cache_name = $this->get_fb_cache_name( $fb_shortcode );
283
+ // Get language.
284
+ $language = $this->get_language( $fb_shortcode );
285
+ if ( 'reviews' !== $fb_shortcode['type'] ) {
286
+ // Get Response (AKA Page & Feed Information) ERROR CHECK inside this function.
287
+ $response = $this->get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $access_token, $language );
288
+ // Json decode data and build it from cache or response.
289
+ $page_data = json_decode( $response['page_data'] );
290
+ $feed_data = json_decode( $response['feed_data'] );
291
+ }
292
+
293
+ if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && true == get_option( 'fts_facebook_custom_api_token_biz' ) && 'reviews' === $fb_shortcode['type'] ||
294
+ is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && ! empty( $fb_shortcode['token'] ) && 'reviews' === $fb_shortcode['type'] ||
295
+ is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && ! empty( $fb_shortcode['access_token'] ) && 'reviews' === $fb_shortcode['type'] ) {
296
+
297
+ if ( 'yes' === $fb_shortcode['remove_reviews_no_description'] && ! isset( $_GET['load_more_ajaxing'] ) ) {
298
+
299
+ $fts_facebook_reviews = new FTS_Facebook_Reviews();
300
+ $no_description_count = $fts_facebook_reviews->review_count_check( $fb_shortcode );
301
+
302
+ // testing purposes
303
+ // print ''. $no_description_count - $fb_shortcode['posts'] .' = The amount of posts with no review text.';
304
+ // this count includes our original posts count + the amount of posts we found with no description.
305
+ $fb_shortcode['posts'] = $no_description_count;
306
+ }
307
+ if ( ! empty( $fb_shortcode['token'] ) ) {
308
+ $biz_access_token = $fb_shortcode['token'];
309
+ } elseif ( ! empty( $fb_shortcode['access_token'] ) ) {
310
+ $biz_access_token = $fb_shortcode['access_token'];
311
+ } else {
312
+ $biz_access_token = get_option( 'fts_facebook_custom_api_token_biz' );
313
+ }
314
+
315
+ // Get Response (AKA Page & Feed Information) ERROR CHECK inside this function.
316
+ $response = $this->get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $biz_access_token, $language );
317
+
318
+ $feed_data = json_decode( $response['feed_data'] );
319
+
320
+ $feed_data = (object) $feed_data;
321
+ // Add Feed Type to post array.
322
+ // SHOW THE REVIEWS FEED PRINT_R
323
+ // echo '<pre>';
324
+ // print_r($feed_data );
325
+ // echo '</pre>';
326
+ if ( 'yes' === $fb_shortcode['remove_reviews_no_description'] ) {
327
+ // $no_description_count2 = 0;.
328
+ foreach ( $feed_data->data as $k => $v ) {
329
+ if ( ! isset( $v->review_text ) ) {
330
+ // print $v->reviewer->name . ' (Key# ' . $k . ') : Now Unset from array<br/>';.
331
+ unset( $feed_data->data[ $k ] );
332
+ // $no_description_count2++;.
333
+ }
334
+ }
335
+ }
336
+ $ratings_data = json_decode( $response['ratings_data'] );
337
+
338
+ // SHOW THE REVIEWS RATING INFO PRINT_R
339
+ // echo '<pre>';
340
+ // print_r($ratings_data );
341
+ // echo '</pre>';.
342
+ // Add fts_profile_pic_url to the array so we can show profile photos for reviews and comments in popup
343
+ foreach ( $feed_data->data as $post_array ) {
344
+
345
+ $the_image = 'https://graph.facebook.com/' . $post_array->reviewer->id . '/picture?redirect=false&access_token=' . $biz_access_token . '';
346
+
347
+ $profile_pic_response = wp_remote_get( $the_image );
348
+ $profile_pic_data = wp_remote_retrieve_body( $profile_pic_response );
349
+ $profile_pic_output = json_decode( $profile_pic_data );
350
+
351
+ // echo '<pre>';
352
+ // print_r($profile_pic_output->data->url);
353
+ // echo '</pre>';
354
+ $post_array->fts_profile_pic_url = $profile_pic_output->data->url;
355
+ }
356
+ }
357
+
358
+ if ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
359
+ $fts_count_ids = substr_count( $fb_shortcode['id'], ',' );
360
+ } else {
361
+ $fts_count_ids = '';
362
+ }
363
+
364
+ if ( $fts_count_ids >= 1 && 'reviews' !== $fb_shortcode['type'] ) {
365
+
366
+ $fts_list_arrays = array();
367
+ foreach ( $feed_data as $feed_data_name ) {
368
+
369
+ $fts_list_arrays = array_merge_recursive( $fts_list_arrays, $feed_data_name->data );
370
+ // var_dump( $fts_list_arrays[$i]);.
371
+ }
372
+ // Sort the array using the call back function.
373
+ usort( $fts_list_arrays, array( $this, 'dateSort' ) );
374
+
375
+ $merged_array['data'] = $fts_list_arrays;
376
+ $feed_data = (object) $merged_array;
377
+ }
378
+ // SHOW THE REGULAR FEEDS PRINT_R (WORKS FOR VIDEOS AND ALBUMS TOO)
379
+ // echo '<pre>';
380
+ // print_r($feed_data );
381
+ // echo '</pre>';
382
+ // If No Response or Error then return.
383
+ if ( is_array( $response ) && isset( $response[0] ) && isset( $response[1] ) && false === $response[0] ) {
384
+ return $response[1];
385
+ }
386
+
387
+ if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
388
+ // Make sure it's not ajaxing and we will allow the omition of certain album covers from the list by using omit_album_covers=0,1,2,3 in the shortcode.
389
+ if ( ! isset( $_GET['load_more_ajaxing'] ) && 'albums' === $fb_shortcode['type'] ) {
390
+
391
+ // omit_album_covers=0,1,2,3 for example.
392
+ $omit_album_covers = $fb_shortcode['omit_album_covers'];
393
+ $omit_album_covers_new = array();
394
+ $omit_album_covers_new = explode( ',', $omit_album_covers );
395
+ foreach ( $feed_data->data as $post_data ) {
396
+ foreach ( $omit_album_covers_new as $omit ) {
397
+ unset( $feed_data->data[ $omit ] );
398
+ }
399
+ }
400
+ }
401
+ }
402
+ // Reviews Rating Filter.
403
+ if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) {
404
+ foreach ( $feed_data->data as $key => $post_data ) {
405
+ // we are not going to show the unrecommended reviews in the feed at this point, no options in our plugin srl 8-28-18.
406
+ if ( isset( $post_data->rating ) && $post_data->rating < $fb_shortcode['reviews_type_to_show'] || isset( $post_data->recommendation_type ) && 'negative' === $post_data->recommendation_type ) {
407
+ unset( $feed_data->data[ $key ] );
408
+ }
409
+ }
410
+ }
411
+
412
+ // Make sure it's not ajaxing.
413
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
414
+ // Get Response (AKA Page & Feed Information).
415
+ $_REQUEST['fts_dynamic_name'] = sanitize_key( $this->fts_rand_string( 10 ) . '_' . $fb_shortcode['type'] );
416
+ // Create Dynamic Class Name.
417
+ $fts_dynamic_class_name = $this->get_fts_dynamic_class_name();
418
+ // SOCIAL BUTTON.
419
+ if ( ! $fts_count_ids >= 1 ) {
420
+ $this->fb_social_btn_placement( $fb_shortcode, $access_token, 'fb-like-top-above-title' );
421
+ }
422
+
423
+ if ( 'reviews' !== $fb_shortcode['type'] ) {
424
+ $page_data->description = isset( $page_data->description ) ? $page_data->description : '';
425
+ $page_data->name = isset( $page_data->name ) ? $page_data->name : '';
426
+ }
427
+ // fts-fb-header-wrapper (for grid).
428
+ echo isset( $fb_shortcode['grid'] ) && 'yes' !== $fb_shortcode['grid'] && 'album_photos' !== $fb_shortcode['type'] && 'albums' !== $fb_shortcode['type'] ? '<div class="fts-fb-header-wrapper">' : '';
429
+
430
+ // Header.
431
+ echo '<div class="fts-jal-fb-header">';
432
+
433
+ if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && isset( $fb_shortcode['overall_rating'] ) && 'yes' === $fb_shortcode['overall_rating'] ) {
434
+
435
+ // echo $this->get_facebook_overall_rating_response($fb_shortcode, $fb_cache_name, $access_token);.
436
+ $fb_reviews_overall_rating_of_5_stars_text = get_option( 'fb_reviews_overall_rating_of_5_stars_text' );
437
+ $fb_reviews_overall_rating_of_5_stars_text = ! empty( $fb_reviews_overall_rating_of_5_stars_text ) ? ' ' . $fb_reviews_overall_rating_of_5_stars_text : ' of 5 stars';
438
+ $fb_reviews_overall_rating_reviews_text = get_option( 'fb_reviews_overall_rating_reviews_text' );
439
+ $fb_reviews_overall_rating_reviews_text = ! empty( $fb_reviews_overall_rating_reviews_text ) ? ' ' . $fb_reviews_overall_rating_reviews_text : ' reviews';
440
+ $fb_reviews_overall_rating_background_border_hide = get_option( 'fb_reviews_overall_rating_background_border_hide' );
441
+ $fb_reviews_overall_rating_background_border_hide = ! empty( $fb_reviews_overall_rating_background_border_hide ) && 'yes' === $fb_reviews_overall_rating_background_border_hide ? ' fts-review-details-master-wrap-no-background-or-border' : '';
442
+ echo '<div class="fts-review-details-master-wrap' . esc_attr( $fb_reviews_overall_rating_background_border_hide ) . '" itemscope itemtype="http://schema.org/CreativeWork"><i class="fts-review-star">' . esc_html( $ratings_data->overall_star_rating ) . ' &#9733;</i>';
443
+ echo '<div class="fts-review-details-wrap" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><div class="fts-review-details"><span itemprop="ratingValue">' . esc_html( $ratings_data->overall_star_rating ) . '</span>' . esc_html( $fb_reviews_overall_rating_of_5_stars_text ) . '</div>';
444
+ echo '<div class="fts-review-details-count"><span itemprop="reviewCount">' . esc_html( $ratings_data->rating_count ) . '</span>' . esc_html( $fb_reviews_overall_rating_reviews_text ) . '</div></div></div>';
445
+
446
+ }
447
+ if ( 'reviews' !== $fb_shortcode['type'] ) {
448
+
449
+ $fb_title_htag = get_option( 'fb_title_htag' ) ? get_option( 'fb_title_htag' ) : 'h1';
450
+
451
+ if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) ) {
452
+ // echo our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
453
+ $fb_title_htag_size = get_option( 'fb_title_htag_size' ) ? 'font-size:' . get_option( 'fb_title_htag_size' ) . ';' : '';
454
+ $fts_align_title = isset( $fb_shortcode['title_align'] ) && '' !== $fb_shortcode['title_align'] ? 'style=text-align:' . $fb_shortcode['title_align'] . ';' . $fb_title_htag_size . '' : $fb_title_htag_size;
455
+ echo isset( $fb_shortcode['title'] ) && 'no' !== $fb_shortcode['title'] ? '<' . esc_html( $fb_title_htag ) . ' ' . esc_attr( $fts_align_title ) . '><a href="' . esc_url( $fts_view_fb_link ) . '" target="_blank" rel="noreferrer">' . esc_html( $page_data->name ) . '</a></' . esc_html( $fb_title_htag ) . '>' : '';
456
+
457
+ } else {
458
+ // echo our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
459
+ $fb_title_htag_size = get_option( 'fb_title_htag_size' ) ? 'style=font-size:' . get_option( 'fb_title_htag_size' ) . ';' : '';
460
+ echo '<' . esc_html( $fb_title_htag ) . ' ' . esc_attr( $fb_title_htag_size ) . '><a href="' . esc_url( $fts_view_fb_link ) . '" target="_blank" rel="noreferrer">' . esc_html( $page_data->name ) . '</a></' . esc_html( $fb_title_htag ) . '>';
461
+ }
462
+ // Description.
463
+ echo isset( $fb_shortcode['description'] ) && 'no' !== $fb_shortcode['description'] ? '<div class="fts-jal-fb-group-header-desc">' . wp_kses(
464
+ $this->fts_facebook_tag_filter( $page_data->description ),
465
+ array(
466
+ 'a' => array(
467
+ 'href' => array(),
468
+ 'title' => array(),
469
+ ),
470
+ 'br' => array(),
471
+ 'em' => array(),
472
+ 'strong' => array(),
473
+ 'small' => array(),
474
+ )
475
+ ) . '</div>' : '';
476
+ }
477
+ // END Header.
478
+ echo '</div>';
479
+ // Close fts-fb-header-wrapper.
480
+ echo isset( $fb_shortcode['grid'] ) && 'yes' !== $fb_shortcode['grid'] && 'album_photos' !== $fb_shortcode['type'] && 'albums' !== $fb_shortcode['type'] ? '</div>' : '';
481
+ } //End check.
482
+
483
+ // SOCIAL BUTTON.
484
+ if ( ! $fts_count_ids >= 1 ) {
485
+ $this->fb_social_btn_placement( $fb_shortcode, $access_token, 'fb-like-top-below-title' );
486
+ }
487
+
488
+ // Feed Header.
489
+ // Make sure it's not ajaxing.
490
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
491
+
492
+ $fts_mashup_media_top = isset( $fb_shortcode['show_media'] ) && 'top' === $fb_shortcode['show_media'] ? 'fts-mashup-media-top ' : '';
493
+ $fts_mashup_show_name = isset( $fb_shortcode['show_name'] ) && 'no' === $fb_shortcode['show_name'] ? ' fts-mashup-hide-name ' : '';
494
+ $fts_mashup_show_date = isset( $fb_shortcode['show_date'] ) && 'no' === $fb_shortcode['show_date'] ? ' fts-mashup-hide-date ' : '';
495
+ $fts_mashup_show_thumbnail = isset( $fb_shortcode['show_thumbnail'] ) && 'no' === $fb_shortcode['show_thumbnail'] ? ' fts-mashup-hide-thumbnail ' : '';
496
+
497
+ if ( ! isset( $fb_type ) && 'albums' === $fb_shortcode['type'] || ! isset( $fb_type ) && 'album_photos' === $fb_shortcode['type'] || isset( $fb_shortcode['grid'] ) && 'yes' === $fb_shortcode['grid'] ) {
498
+
499
+ if ( isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
500
+ echo '';
501
+ } elseif ( isset( $fb_shortcode['slider'] ) && 'yes' !== $fb_shortcode['slider'] && 'yes' === $fb_shortcode['image_stack_animation'] || isset( $fb_shortcode['grid'] ) && 'yes' === $fb_shortcode['grid'] || isset( $fb_shortcode['image_stack_animation'] ) && 'yes' === $fb_shortcode['image_stack_animation'] ) {
502
+ wp_enqueue_script( 'fts-masonry-pkgd', plugins_url( 'feed-them-social/feeds/js/masonry.pkgd.min.js' ), array( 'jquery' ), FTS_CURRENT_VERSION, false );
503
+ echo '<script>';
504
+ echo 'jQuery(window).load(function(){';
505
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry({';
506
+ echo 'itemSelector: ".fts-jal-single-fb-post"';
507
+ echo '});';
508
+ echo '});';
509
+ echo '</script>';
510
+ }
511
+
512
+ if ( ! isset( $fb_type ) && 'albums' === $fb_shortcode['type'] || ! isset( $fb_type ) && 'album_photos' === $fb_shortcode['type'] && ! isset( $fb_type ) && ! isset( $fb_shortcode['slider'] ) || ! isset( $fb_type ) && 'album_photos' === $fb_shortcode['type'] && ! isset( $fb_type ) && isset( $fb_shortcode['slider'] ) && 'yes' !== $fb_shortcode['slider'] ) {
513
+ echo '<div class="fts-slicker-facebook-photos fts-slicker-facebook-albums' . ( isset( $fb_shortcode['video_album'] ) && $fb_shortcode['video_album'] && 'yes' === $fb_shortcode['video_album'] ? ' popup-video-gallery-fb' : '' ) . ( isset( $fb_shortcode['image_stack_animation'] ) && 'yes' === $fb_shortcode['image_stack_animation'] ? ' masonry js-masonry' : '' ) . ( isset( $fb_shortcode['images_align'] ) && $fb_shortcode['images_align'] ? ' popup-video-gallery-align-' . esc_attr( $fb_shortcode['images_align'] ) : '' ) . ' popup-gallery-fb ' . esc_attr( $fts_dynamic_class_name ) . '"';
514
+ if ( 'yes' === $fb_shortcode['image_stack_animation'] ) {
515
+ echo 'data-masonry-options=\'{ "isFitWidth": ' . ( 'no' === $fb_shortcode['center_container'] ? 'false' : 'true' ) . ' ' . ( 'no' === $fb_shortcode['image_stack_animation'] ? ', "transitionDuration": 0' : '' ) . '}\' style="margin:auto;"';
516
+ }
517
+ echo '>';
518
+ } elseif (
519
+ // slideshow scrollHorz or carousel.
520
+ ! isset( $fb_type ) && isset( $fb_shortcode['slider'] ) && 'yes' === $fb_shortcode['slider'] ) {
521
+ $fts_cycle_type = isset( $fb_shortcode['scrollhorz_or_carousel'] ) ? $fb_shortcode['scrollhorz_or_carousel'] : 'scrollHorz';
522
+
523
+ if ( isset( $fts_cycle_type ) && 'carousel' === $fts_cycle_type ) {
524
+ $fts_cycle_slideshow = 'slideshow';
525
+ } else {
526
+ $fts_cycle_slideshow = 'cycle-slideshow';
527
+ }
528
+ echo '';
529
+
530
+ // none
531
+ // dots_above_feed
532
+ // dots_and_arrows_above_feed
533
+ // dots_and_numbers_above_feed
534
+ // dots_arrows_and_numbers_above_feed
535
+ // arrows_and_numbers_above_feed
536
+ // arrows_above_feed
537
+ // numbers_above_feed
538
+ // dots_below_feed
539
+ // dots_and_arrows_below_feed
540
+ // dots_and_numbers_below_feed
541
+ // dots_arrows_and_numbers_below_feed
542
+ // arrows_and_numbers_below_feed
543
+ // arrows_below_feed
544
+ // numbers_below_feed.
545
+ $fts_controls_bar_color = ! empty( $fb_shortcode['slider_controls_bar_color'] ) ? $fb_shortcode['slider_controls_bar_color'] : '#000';
546
+ $fts_controls_text_color = ! empty( $fb_shortcode['slider_controls_text_color'] ) ? $fb_shortcode['slider_controls_text_color'] : '#ddd';
547
+ if ( isset( $fb_shortcode['slider_controls_width'] ) && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ) {
548
+ $max_width_set = isset( $fb_shortcode['image_width'] ) && '' !== $fb_shortcode['image_width'] && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['image_width'] : '100%';
549
+ } else {
550
+ $max_width_set = isset( $fb_shortcode['slider_controls_width'] ) && '' !== $fb_shortcode['slider_controls_width'] && 'carousel' === $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['slider_controls_width'] : '100%';
551
+ }
552
+ if (
553
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_above_feed' === $fb_shortcode['slider_controls'] ||
554
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
555
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
556
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
557
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
558
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls'] ||
559
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls']
560
+ ) {
561
+
562
+ // Slider Dots Wrapper.
563
+ if (
564
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_above_feed' === $fb_shortcode['slider_controls'] ||
565
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
566
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
567
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls']
568
+ ) {
569
+
570
+ echo '<div class="fts-slider-icons-center fts-pager-option-dots-only-top" style="margin:auto; width:100%;max-width:' . esc_attr( $max_width_set . ';background:' . $fts_controls_bar_color . ';color:' . $fts_controls_text_color ) . '"><div class="fts-pager-option fts-custom-pager-' . esc_attr( $fts_dynamic_class_name ) . '"></div></div>';
571
+ }
572
+
573
+ // Slider Arrow and Numbers Wrapper.
574
+ if (
575
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
576
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
577
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
578
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
579
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls'] ||
580
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls']
581
+ ) {
582
+ echo '<div class="fts-slider-center" style="margin:auto; width:100%; max-width:' . esc_attr( $max_width_set . ';background:' . $fts_controls_bar_color . ';color:' . $fts_controls_text_color ) . '">';
583
+ }
584
+
585
+ // Previous Arrow.
586
+ if (
587
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
588
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
589
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
590
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls']
591
+ ) {
592
+ echo '<span class="fts-prevControl-icon fts-prevControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
593
+ }
594
+ // Numbers.
595
+ if (
596
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
597
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
598
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls'] ||
599
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls']
600
+ ) {
601
+ echo '<span id="fts-custom-caption-' . esc_attr( $fts_dynamic_class_name ) . '" class="fts-custom-caption" ></span>';
602
+ }
603
+ // Next Arrow.
604
+ if (
605
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
606
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
607
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
608
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls']
609
+ ) {
610
+ echo '<span class="fts-nextControl-icon fts-nextControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
611
+ }
612
+
613
+ // Slider Arrow and Numbers Wrapper.
614
+ if (
615
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_above_feed' === $fb_shortcode['slider_controls'] ||
616
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
617
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
618
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_above_feed' === $fb_shortcode['slider_controls'] ||
619
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_above_feed' === $fb_shortcode['slider_controls'] ||
620
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_above_feed' === $fb_shortcode['slider_controls']
621
+ ) {
622
+ echo '</div>';
623
+ }
624
+ }
625
+
626
+ echo '<div class="popup-gallery-fb fts-fb-slideshow fts-slicker-facebook-photos fts-slicker-facebook-albums ' . esc_attr( $fts_cycle_slideshow ) . ' ' . ( isset( $fb_shortcode['video_album'] ) && $fb_shortcode['video_album'] && 'yes' === $fb_shortcode['video_album'] ? 'popup-video-gallery-fb' : '' ) . ' ' . ( isset( $fb_shortcode['images_align'] ) && $fb_shortcode['images_align'] ? ' popup-video-gallery-align-' . esc_attr( $fb_shortcode['images_align'] ) : '' ) . ' popup-gallery-fb ' . esc_attr( $fts_dynamic_class_name ) . '"
627
 
628
  style="margin:' . ( isset( $fb_shortcode['slider_margin'] ) && '' !== $fb_shortcode['slider_margin'] ? esc_attr( $fb_shortcode['slider_margin'] ) : 'auto' ) . ';' . ( isset( $fts_cycle_type ) && 'carousel' === $fts_cycle_type ? 'width:100%; max-width:100%; overflow:hidden;height:' . esc_attr( $fb_shortcode['image_height'] ) . ';' : 'overflow:hidden; height:' . esc_attr( $fb_shortcode['image_height'] ) . '; max-width:' . ( isset( $fb_shortcode['image_width'] ) && '' !== $fb_shortcode['image_width'] ? esc_attr( $fb_shortcode['image_width'] ) : 'auto' ) ) . ';" data-cycle-caption="#fts-custom-caption-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-caption-template="{{slideNum}} / {{slideCount}}" data-cycle-pager=".fts-custom-pager-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-pause-on-hover="true" data-cycle-prev=".fts-prevControl-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-next=".fts-nextControl-' . esc_attr( $fts_dynamic_class_name ) . '" data-cycle-timeout="' . ( ! empty( $fb_shortcode['slider_timeout'] ) ? esc_attr( $fb_shortcode['slider_timeout'] ) : '0' ) . '" data-cycle-manual-speed="' . ( ! empty( $fb_shortcode['slider_speed'] ) ? esc_attr( $fb_shortcode['slider_speed'] ) : '400' ) . '" data-cycle-auto-height="false" data-cycle-slides="> div" data-cycle-fx="' . ( ! empty( $fb_shortcode['scrollhorz_or_carousel'] ) ? esc_attr( $fb_shortcode['scrollhorz_or_carousel'] ) : '' ) . '" data-cycle-carousel-visible=' . ( ! empty( $fb_shortcode['slides_visible'] ) ? esc_attr( $fb_shortcode['slides_visible'] ) : '4' ) . ' data-cycle-swipe=true data-cycle-swipe-fx=' . ( ! empty( $fb_shortcode['scrollhorz_or_carousel'] ) ? esc_attr( $fb_shortcode['scrollhorz_or_carousel'] ) : '' ) . '>';
629
+ }
630
+
631
+ if ( isset( $fb_shortcode['grid'] ) && 'yes' === $fb_shortcode['grid'] ) {
632
+ echo '<div class="fts-slicker-facebook-posts masonry js-masonry ' . esc_attr( $fts_mashup_media_top . $fts_mashup_show_name . $fts_mashup_show_date . $fts_mashup_show_thumbnail ) . ( 'yes' === $fb_shortcode['popup'] ? 'popup-gallery-fb-posts ' : '' ) . ( 'reviews' === $fb_shortcode['type'] ? 'fts-reviews-feed ' : '' ) . esc_attr( $fts_dynamic_class_name ) . ' " style="margin:auto;" data-masonry-options=\'{ "isFitWidth": ' . ( 'no' === $fb_shortcode['center_container'] ? 'false' : 'true' ) . ' ' . ( 'no' === $fb_shortcode['image_stack_animation'] ? ', "transitionDuration": 0' : '' ) . '}\'>';
633
+ }
634
+ } else {
635
+ echo '<div class="fts-jal-fb-group-display fts-simple-fb-wrapper ' . esc_attr( $fts_mashup_media_top . $fts_mashup_show_name . $fts_mashup_show_date . $fts_mashup_show_thumbnail ) . ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ? ' popup-gallery-fb-posts ' : '' ) . ( 'reviews' === $fb_shortcode['type'] ? 'fts-reviews-feed ' : '' ) . esc_attr( $fts_dynamic_class_name ) . ' ' . ( 'auto' !== $fb_shortcode['height'] && ! empty( $fb_shortcode['height'] ) ? 'fts-fb-scrollable" style="height:' . esc_attr( $fb_shortcode['height'] ) . '"' : '"' ) . '>';
636
+ }
637
+ } //End ajaxing Check
638
+
639
+ // *********************
640
+ // Post Information
641
+ // *********************
642
+ $fb_load_more_text = get_option( 'fb_load_more_text' ) ? get_option( 'fb_load_more_text' ) : esc_html( 'Load More', 'feed-them-social' );
643
+ $response_post_array = $this->get_post_info( $feed_data, $fb_shortcode, $access_token, $language, $fb_cache_name );
644
+
645
+ // Single event info call.
646
+ if ( 'events' === $fb_shortcode['type'] ) {
647
+ $single_event_array_response = $this->get_event_post_info( $feed_data, $fb_shortcode, $access_token, $language );
648
+ }
649
+
650
+ $set_zero = 0;
651
+
652
+ // echo '<br/><br/>feed array<br/><br/>';.
653
+ // echo '<pre>';
654
+ // print_r($feed_data );
655
+ // echo '</pre>';.
656
+ // THE MAIN FEED
657
+ // LOOP to fix Post count!
658
+ foreach ( $feed_data->data as $k => $v ) {
659
+ if ( $k >= $fb_shortcode['posts'] ) {
660
+ unset( $feed_data->data[ $k ] );
661
+ }
662
+ }
663
+
664
+ // Nov. 4th. 2016 // Uncomment this to sort the dates proper if facebook is returning them out of order.
665
+ // We had one case of this here for a list of posts coming from an event.
666
+ // https://wordpress.org/support/topic/facebook-event-posts-not-ordered-by-date/
667
+ // usort($feed_data->data, array($this, "dateSort"));
668
+ // Loop for all facebook feeds.
669
+ foreach ( $feed_data->data as $post_data ) {
670
+
671
+ $fb_message = isset( $post_data->message ) ? $post_data->message : '';
672
+ $fb_status_type = isset( $post_data->status_type ) ? $post_data->status_type : '';
673
+
674
+ $fb_story = isset( $post_data->story ) ? $post_data->story : '';
675
+ $fb_type = isset( $post_data->type ) ? $post_data->type : '';
676
+
677
+ // This is the method to skip empty posts or posts that are simply about changing settings or other non important post types.
678
+ if ( 'status' === $fb_type && empty( $fb_message ) && empty( $fb_story ) || 'event' === $fb_type || 'event' === $fb_type && false !== strpos( $fb_story, 'shared their event' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the name of the event to' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'changed the privacy setting' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'an admin of the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'created the group' ) || 'status' === $fb_type && false !== strpos( $fb_story, 'added an event' ) || 'event' === $fb_type && false !== strpos( $fb_story, 'added an event' ) ) {
679
+ } else {
680
+ // define type note also affects load more fucntion call.
681
+ if ( ! $fb_type && 'album_photos' === $fb_shortcode['type'] ) {
682
+ $fb_type = 'photo';
683
+ }
684
+ if ( ! $fb_type && 'events' === $fb_shortcode['type'] ) {
685
+ $fb_type = 'events';
686
+
687
+ }
688
+
689
+ $post_types = new fts_facebook_feed_post_types();
690
+ $single_event_array_response = isset( $single_event_array_response ) ? $single_event_array_response : '';
691
+
692
+ // echo '<br/><br/>were function gets called <br/><br/>' .
693
+ // print_r( $post_data );.
694
+ $post_types->feed_post_types( $set_zero, $fb_type, $post_data, $fb_shortcode, $response_post_array, $single_event_array_response );
695
+
696
+ }
697
+
698
+ $set_zero++;
699
+ }// END POST foreach
700
+
701
+ if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) {
702
+ if ( ! empty( $feed_data->data ) ) {
703
+ $this->fts_facebook_loadmore( $atts, $feed_data, $fb_type, $fb_shortcode, sanitize_key( $_REQUEST['fts_dynamic_name'] ) );
704
+ }
705
+ }
706
+
707
+ echo '</div>'; // closing main div for fb photos, groups etc
708
+ // only show this script if the height option is set to a number.
709
+ if ( 'auto' !== $fb_shortcode['height'] && ! empty( $fb_shortcode['height'] ) ) {
710
+ echo '<script>';
711
+ // this makes it so the page does not scroll if you reach the end of scroll bar or go back to top'.
712
+ echo 'jQuery.fn.isolatedScrollFacebookFTS = function() {';
713
+ echo 'this.bind("mousewheel DOMMouseScroll", function (e) {';
714
+ echo 'var delta = e.wheelDelta || (e.originalEvent && e.originalEvent.wheelDelta) || -e.detail,';
715
+ echo 'bottomOverflow = this.scrollTop + jQuery(this).outerHeight() - this.scrollHeight >= 0,';
716
+ echo 'topOverflow = this.scrollTop <= 0;';
717
+ echo 'if ((delta < 0 && bottomOverflow) || (delta > 0 && topOverflow)) {';
718
+ echo 'e.preventDefault();';
719
+ echo '}';
720
+ echo '});';
721
+ echo 'return this;';
722
+ echo '};';
723
+ echo 'jQuery(".fts-fb-scrollable").isolatedScrollFacebookFTS();';
724
+ echo '</script>';
725
+ } //end $fb_shortcode['height'] !== 'auto' && empty($fb_shortcode['height']) == NULL
726
+ // Make sure it's not ajaxing.
727
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
728
+ echo '<div class="fts-clear"></div><div id="fb-root"></div>';
729
+ if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) {
730
+ if ( 'button' === $fb_shortcode['loadmore'] ) {
731
+
732
+ echo '<div class="fts-fb-load-more-wrapper">';
733
+ echo '<div id="loadMore_' . esc_attr( $_REQUEST['fts_dynamic_name'] ) . '" style="';
734
+ if ( isset( $fb_shortcode['loadmore_btn_maxwidth'] ) && '' !== $fb_shortcode['loadmore_btn_maxwidth'] ) {
735
+ echo 'max-width:' . esc_attr( $fb_shortcode['loadmore_btn_maxwidth'] ) . ';';
736
+ }
737
+ $loadmore_btn_margin = isset( $fb_shortcode['loadmore_btn_margin'] ) ? $fb_shortcode['loadmore_btn_margin'] : '20px';
738
+ echo 'margin:' . esc_attr( $loadmore_btn_margin ) . ' auto ' . esc_attr( $loadmore_btn_margin ) . '" class="fts-fb-load-more">' . esc_html( $fb_load_more_text ) . '</div>';
739
+ echo '</div>';
740
+ }
741
+ }
742
+ }//End Check
743
+
744
+ // Checks for sliders.
745
+ if (
746
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_below_feed' === $fb_shortcode['slider_controls'] ||
747
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
748
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
749
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
750
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
751
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls'] ||
752
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls']
753
+ ) {
754
+
755
+ // Slider Dots Wrapper.
756
+ if (
757
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_below_feed' === $fb_shortcode['slider_controls'] ||
758
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
759
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
760
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls']
761
+ ) {
762
+ if ( isset( $fb_shortcode['slider_controls_width'] ) && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ) {
763
+ $max_width_set = isset( $fb_shortcode['image_width'] ) && '' !== $fb_shortcode['image_width'] && 'carousel' !== $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['image_width'] : '100%';
764
+ } else {
765
+ $max_width_set = isset( $fb_shortcode['slider_controls_width'] ) && '' !== $fb_shortcode['slider_controls_width'] && 'carousel' === $fb_shortcode['scrollhorz_or_carousel'] ? $fb_shortcode['slider_controls_width'] : '100%';
766
+ }
767
+
768
+ echo '<div class="fts-slider-icons-center" style="margin:auto; width:100%;max-width:' . esc_attr( $max_width_set ) . ';background:' . esc_attr( $fts_controls_bar_color ) . ';color:' . esc_attr( $fts_controls_text_color ) . '"><div class="fts-pager-option fts-custom-pager-' . esc_attr( $fts_dynamic_class_name ) . '"></div></div>';
769
+ }
770
+
771
+ // Slider Arrow and Numbers Wrapper.
772
+ if (
773
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
774
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
775
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
776
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
777
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls'] ||
778
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls']
779
+ ) {
780
+ echo '<div class="fts-slider-center" style="margin:auto; width:100%; max-width:' . esc_attr( $max_width_set ) . ';background:' . esc_attr( $fts_controls_bar_color ) . ';color:' . esc_attr( $fts_controls_text_color ) . '">';
781
+ }
782
+
783
+ // Previous Arrow.
784
+ if (
785
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
786
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
787
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
788
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls']
789
+ ) {
790
+ echo '<span class="fts-prevControl-icon fts-prevControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
791
+ }
792
+ // Numbers.
793
+ if (
794
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
795
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
796
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls'] ||
797
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls']
798
+ ) {
799
+ echo '<span id="fts-custom-caption-' . esc_attr( $fts_dynamic_class_name ) . '" class="fts-custom-caption" ></span>';
800
+ }
801
+ // Next Arrow.
802
+ if (
803
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
804
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
805
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
806
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls']
807
+ ) {
808
+ echo '<span class="fts-nextControl-icon fts-nextControl-' . esc_attr( $fts_dynamic_class_name ) . '"></span>';
809
+ }
810
+
811
+ // Slider Arrow and Numbers Wrapper.
812
+ if (
813
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_arrows_below_feed' === $fb_shortcode['slider_controls'] ||
814
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
815
+ isset( $fb_shortcode['slider_controls'] ) && 'dots_arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
816
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_and_numbers_below_feed' === $fb_shortcode['slider_controls'] ||
817
+ isset( $fb_shortcode['slider_controls'] ) && 'arrows_below_feed' === $fb_shortcode['slider_controls'] ||
818
+ isset( $fb_shortcode['slider_controls'] ) && 'numbers_below_feed' === $fb_shortcode['slider_controls']
819
+ ) {
820
+ echo '</div>';
821
+ }
822
+ }
823
+
824
+ unset( $_REQUEST['next_url'] );
825
+
826
+ // ******************
827
+ // SOCIAL BUTTON
828
+ // ******************
829
+ if ( ! $fts_count_ids >= 1 ) {
830
+ $this->fb_social_btn_placement( $fb_shortcode, $access_token, 'fb-like-below' );
831
+ }
832
+
833
+ return ob_get_clean();
834
+ }
835
+
836
+ /**
837
+ * Get FTS Dnamic Class Name
838
+ *
839
+ * @return string
840
+ * @since 1.9.6
841
+ */
842
+ public function get_fts_dynamic_class_name() {
843
+ $fts_dynamic_class_name = '';
844
+ if ( isset( $_REQUEST['fts_dynamic_name'] ) ) {
845
+ $fts_dynamic_class_name = 'feed_dynamic_class' . sanitize_key( $_REQUEST['fts_dynamic_name'] );
846
+ }
847
+ return $fts_dynamic_class_name;
848
+ }
849
+
850
+ /**
851
+ * FTS Facebook Location
852
+ *
853
+ * Facebook Post Location.
854
+ *
855
+ * @param null $fb_type What kind of facebook feed it is.
856
+ * @param string $location The location of the photo or video.
857
+ * @since 1.9.6
858
+ */
859
+ public function fts_facebook_location( $fb_type = null, $location ) {
860
+ switch ( $fb_type ) {
861
+ case 'app':
862
+ case 'cover':
863
+ case 'profile':
864
+ case 'mobile':
865
+ case 'wall':
866
+ case 'normal':
867
+ case 'album':
868
+ echo '<div class="fts-fb-location">' . esc_html( $location ) . '</div>';
869
+ }
870
+ }
871
+
872
+ /**
873
+ * FTS Facebook Post Photo
874
+ *
875
+ * @param string $fb_link The link to post.
876
+ * @param string $fb_shortcode The shortcode.
877
+ * @param string $photo_from Who it's from.
878
+ * @param string $photo_source The source url.
879
+ * @since 1.9.6
880
+ */
881
+ public function fts_facebook_post_photo( $fb_link, $fb_shortcode, $photo_from, $photo_source ) {
882
+ if ( 'album_photos' === $fb_shortcode['type'] || 'albums' === $fb_shortcode['type'] ) {
883
+ echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-picture album-photo-fts" style="width:' . esc_attr( $fb_shortcode['image_width'] . ';height:' . $fb_shortcode['image_height'] ) . ';';
884
+ echo 'background-image:url(' . esc_url( $photo_source ) . ');">';
885
+ echo '</a>';
886
+ } else {
887
+ $fb_shortcode_popup = isset( $fb_shortcode['popup'] ) ? $fb_shortcode['popup'] : '';
888
+ if ( 'yes' === $fb_shortcode_popup && 'javascript:;' !== $fb_link ) {
889
+ echo '<a href="' . esc_url( $photo_source ) . '" target="_blank" rel="noreferrer" class="fts-facebook-link-target fts-jal-fb-picture fts-fb-large-photo"><img border="0" alt="' . esc_html( $photo_from ) . '" src="' . esc_url( $photo_source ) . '"/></a>';
890
+
891
+ } else {
892
+ echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-picture"><img border="0" alt="' . esc_html( $photo_from ) . '" src="' . esc_url( $photo_source ) . '"/></a>';
893
+ }
894
+ }
895
+ }
896
+
897
+ /**
898
+ * FTS Facebook Post Name
899
+ *
900
+ * @param string $fb_link The post link.
901
+ * @param string $fb_name The facebook name.
902
+ * @param string $fb_type The type of feed.
903
+ * @param null $fb_post_id The facebook post ID.
904
+ * @since 1.9.6
905
+ */
906
+ public function fts_facebook_post_name( $fb_link, $fb_name, $fb_type, $fb_post_id = null ) {
907
+ switch ( $fb_type ) {
908
+ case 'video':
909
+ echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-name fb-id' . esc_attr( $fb_post_id ) . '">' . wp_kses(
910
+ $this->fts_facebook_tag_filter( $fb_name ),
911
+ array(
912
+ 'a' => array(
913
+ 'href' => array(),
914
+ 'title' => array(),
915
+ ),
916
+ 'br' => array(),
917
+ 'em' => array(),
918
+ 'strong' => array(),
919
+ 'small' => array(),
920
+ )
921
+ ) . '</a>';
922
+ break;
923
+ default:
924
+ $fb_name = $this->fts_facebook_tag_filter( $fb_name );
925
+ echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-name">' . wp_kses(
926
+ $this->fts_facebook_tag_filter( $fb_name ),
927
+ array(
928
+ 'a' => array(
929
+ 'href' => array(),
930
+ 'title' => array(),
931
+ ),
932
+ 'br' => array(),
933
+ 'em' => array(),
934
+ 'strong' => array(),
935
+ 'small' => array(),
936
+ )
937
+ ) . '</a>';
938
+ break;
939
+ }
940
+ }
941
+
942
+ /**
943
+ * FTS Facebook Post Description
944
+ *
945
+ * @param string $fb_description The post description.
946
+ * @param string $fb_shortcode The shortcode.
947
+ * @param string $fb_type The type of feed.
948
+ * @param null $fb_post_id The post ID.
949
+ * @param null $fb_by The post by.
950
+ * @since 1.9.6
951
+ */
952
+ public function fts_facebook_post_desc( $fb_description, $fb_shortcode, $fb_type, $fb_post_id = null, $fb_by = null ) {
953
+ $trunacate_words = new \ FeedThemSocialTruncateHTML();
954
+
955
+ $fb_description = $this->fts_facebook_tag_filter( $fb_description );
956
+ $more = isset( $more ) ? $more : '...';
957
+
958
+ switch ( $fb_type ) {
959
+ case 'video':
960
+ echo '<div class="fts-jal-fb-description fb-id' . esc_attr( $fb_post_id ) . '">' . wp_kses(
961
+ nl2br( $fb_description ),
962
+ array(
963
+ 'a' => array(
964
+ 'href' => array(),
965
+ 'title' => array(),
966
+ ),
967
+ 'br' => array(),
968
+ 'em' => array(),
969
+ 'strong' => array(),
970
+ 'small' => array(),
971
+ )
972
+ ) . '</div>';
973
+ break;
974
+ case 'photo':
975
+ if ( 'album_photos' === $fb_shortcode['type'] ) {
976
+ if ( array_key_exists( 'words', $fb_shortcode ) ) {
977
+ $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
978
+ echo '<div class="fts-jal-fb-description fts-non-popup-text">' . wp_kses(
979
+ nl2br( $trimmed_content ),
980
+ array(
981
+ 'a' => array(
982
+ 'href' => array(),
983
+ 'title' => array(),
984
+ ),
985
+ 'br' => array(),
986
+ 'em' => array(),
987
+ 'strong' => array(),
988
+ 'small' => array(),
989
+ )
990
+ ) . '</div>';
991
+ // Here we display the full description in the popup.
992
+ if ( 'yes' === $fb_shortcode['popup'] || 'yes' === $fb_shortcode['video_album'] ) {
993
+ echo '<div class="fts-jal-fb-description fts-jal-fb-description-popup" style="display: none;">' . wp_kses(
994
+ nl2br( $fb_description ),
995
+ array(
996
+ 'a' => array(
997
+ 'href' => array(),
998
+ 'title' => array(),
999
+ ),
1000
+ 'br' => array(),
1001
+ 'em' => array(),
1002
+ 'strong' => array(),
1003
+ 'small' => array(),
1004
+ )
1005
+ ) . '</div>';
1006
+ }
1007
+ } elseif ( isset( $fb_shortcode['words'] ) && '0' !== $fb_shortcode['words'] ) {
1008
+ echo '<div class="fts-jal-fb-description">' . wp_kses(
1009
+ nl2br( $fb_description ),
1010
+ array(
1011
+ 'a' => array(
1012
+ 'href' => array(),
1013
+ 'title' => array(),
1014
+ ),
1015
+ 'br' => array(),
1016
+ 'em' => array(),
1017
+ 'strong' => array(),
1018
+ 'small' => array(),
1019
+ )
1020
+ ) . '</div>';
1021
+ }
1022
+ }
1023
+ break;
1024
+ case 'albums':
1025
+ if ( 'albums' === $fb_shortcode['type'] ) {
1026
+ if ( array_key_exists( 'words', $fb_shortcode ) ) {
1027
+ $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
1028
+ echo '<div class="fts-jal-fb-description">' . wp_kses(
1029
+ nl2br( $trimmed_content ),
1030
+ array(
1031
+ 'a' => array(
1032
+ 'href' => array(),
1033
+ 'title' => array(),
1034
+ ),
1035
+ 'br' => array(),
1036
+ 'em' => array(),
1037
+ 'strong' => array(),
1038
+ 'small' => array(),
1039
+ )
1040
+ ) . '</div>';
1041
+ } else {
1042
+ echo '<div class="fts-jal-fb-description">' . wp_kses(
1043
+ nl2br( $fb_description ),
1044
+ array(
1045
+ 'a' => array(
1046
+ 'href' => array(),
1047
+ 'title' => array(),
1048
+ ),
1049
+ 'br' => array(),
1050
+ 'em' => array(),
1051
+ 'strong' => array(),
1052
+ 'small' => array(),
1053
+ )
1054
+ ) . '</div>';
1055
+ }
1056
+ } else {
1057
+ // Do for Default feeds or the video gallery feed.
1058
+ if ( isset( $fb_shortcode['words'] ) && '0' !== $fb_shortcode['words'] ) {
1059
+ if ( is_array( $fb_shortcode ) && array_key_exists( 'words', $fb_shortcode ) && '0' !== $fb_shortcode['words'] ) {
1060
+ $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
1061
+ echo '<div class="fts-jal-fb-description">' . wp_kses(
1062
+ $trimmed_content,
1063
+ array(
1064
+ 'a' => array(
1065
+ 'href' => array(),
1066
+ 'title' => array(),
1067
+ 'target' => array(),
1068
+ 'rel' => array(),
1069
+ ),
1070
+ 'br' => array(),
1071
+ 'em' => array(),
1072
+ 'strong' => array(),
1073
+ 'small' => array(),
1074
+ )
1075
+ ) . '</div>';
1076
+ } else {
1077
+ echo '<div class="fts-jal-fb-description">';
1078
+ echo wp_kses(
1079
+ nl2br( $fb_description ),
1080
+ array(
1081
+ 'a' => array(
1082
+ 'href' => array(),
1083
+ 'title' => array(),
1084
+ 'target' => array(),
1085
+ 'rel' => array(),
1086
+ ),
1087
+ 'br' => array(),
1088
+ 'em' => array(),
1089
+ 'strong' => array(),
1090
+ 'small' => array(),
1091
+ )
1092
+ );
1093
+ echo '</div>';
1094
+ }
1095
+ if ( ! empty( $fb_link ) ) {
1096
+ echo '<div>By: <a href="' . esc_url( $fb_link ) . '" target="_blank" rel="noreferrer">' . esc_html( $fb_by ) . '<a/></div>';
1097
+ }
1098
+ }
1099
+ }
1100
+ break;
1101
+ default:
1102
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
1103
+ if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) || is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
1104
+ // here we trim the words for the links description text... for the premium version. The $fb_shortcode['words'] string actually comes from the javascript.
1105
+ if ( is_array( $fb_shortcode ) && array_key_exists( 'words', $fb_shortcode ) && ! empty( $fb_shortcode['words'] ) ) {
1106
+
1107
+ $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_description, $fb_shortcode['words'], $more );
1108
+ echo '<div class="jal-fb-description">' . wp_kses(
1109
+ nl2br( $trimmed_content ),
1110
+ array(
1111
+ 'a' => array(
1112
+ 'href' => array(),
1113
+ 'title' => array(),
1114
+ 'target' => array(),
1115
+ 'rel' => array(),
1116
+ ),
1117
+ 'br' => array(),
1118
+ 'em' => array(),
1119
+ 'strong' => array(),
1120
+ 'small' => array(),
1121
+ )
1122
+ ) . '</div>';
1123
+ } elseif ( is_array( $fb_shortcode ) && array_key_exists( 'words', $fb_shortcode ) && '0' !== $fb_shortcode['words'] ) {
1124
+ echo '<div class="jal-fb-description">' . wp_kses(
1125
+ nl2br( $fb_description ),
1126
+ array(
1127
+ 'a' => array(
1128
+ 'href' => array(),
1129
+ 'title' => array(),
1130
+ 'target' => array(),
1131
+ 'rel' => array(),
1132
+ ),
1133
+ 'br' => array(),
1134
+ 'em' => array(),
1135
+ 'strong' => array(),
1136
+ 'small' => array(),
1137
+ )
1138
+ ) . '</div>';
1139
+ }
1140
+ } else {
1141
+ // if the premium plugin is not active we will just show the regular full description.
1142
+ echo '<div class="jal-fb-description">' . wp_kses(
1143
+ nl2br( $fb_description ),
1144
+ array(
1145
+ 'a' => array(
1146
+ 'href' => array(),
1147
+ 'title' => array(),
1148
+ 'target' => array(),
1149
+ 'rel' => array(),
1150
+ ),
1151
+ 'br' => array(),
1152
+ 'em' => array(),
1153
+ 'strong' => array(),
1154
+ 'small' => array(),
1155
+ )
1156
+ ) . '</div>';
1157
+ }
1158
+ }
1159
+ }
1160
+
1161
+ /**
1162
+ * FTS Facebook Post Caption
1163
+ *
1164
+ * @param string $fb_caption The post caption.
1165
+ * @param string $fb_shortcode The shortcode.
1166
+ * @param string $fb_type The type of feed.
1167
+ * @param null $fb_post_id The post ID.
1168
+ * @since 1.9.6
1169
+ */
1170
+ public function fts_facebook_post_cap( $fb_caption, $fb_shortcode, $fb_type, $fb_post_id = null ) {
1171
+ $trunacate_words = new \ FeedThemSocialTruncateHTML();
1172
+ switch ( $fb_type ) {
1173
+ case 'video':
1174
+ $fb_caption = $this->fts_facebook_tag_filter( str_replace( 'www.', '', $fb_caption ) );
1175
+ echo '<div class="fts-jal-fb-caption fb-id' . esc_attr( $fb_post_id ) . '">' . wp_kses(
1176
+ $fb_caption,
1177
+ array(
1178
+ 'a' => array(
1179
+ 'href' => array(),
1180
+ 'title' => array(),
1181
+ ),
1182
+ 'br' => array(),
1183
+ 'em' => array(),
1184
+ 'strong' => array(),
1185
+ 'small' => array(),
1186
+ )
1187
+ ) . '</div>';
1188
+ break;
1189
+ default:
1190
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
1191
+ if ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) || is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
1192
+ // here we trim the words for the links description text... for the premium version. The $fb_shortcode['words'] string actually comes from the javascript.
1193
+ if ( array_key_exists( 'words', $fb_shortcode ) ) {
1194
+ $more = isset( $more ) ? $more : '';
1195
+ $trimmed_content = $trunacate_words->fts_custom_trim_words( $fb_caption, $fb_shortcode['words'], $more );
1196
+ echo '<div class="jal-fb-caption">' . wp_kses(
1197
+ $trimmed_content,
1198
+ array(
1199
+ 'a' => array(
1200
+ 'href' => array(),
1201
+ 'title' => array(),
1202
+ ),
1203
+ 'br' => array(),
1204
+ 'em' => array(),
1205
+ 'strong' => array(),
1206
+ 'small' => array(),
1207
+ )
1208
+ ) . '</div>';
1209
+ } else {
1210
+ $fb_caption = $this->fts_facebook_tag_filter( $fb_caption );
1211
+ echo '<div class="jal-fb-caption">' . wp_kses(
1212
+ nl2br( $fb_caption ),
1213
+ array(
1214
+ 'a' => array(
1215
+ 'href' => array(),
1216
+ 'title' => array(),
1217
+ ),
1218
+ 'br' => array(),
1219
+ 'em' => array(),
1220
+ 'strong' => array(),
1221
+ 'small' => array(),
1222
+ )
1223
+ ) . '</div>';
1224
+ }
1225
+ } else {
1226
+ // if the premium plugin is not active we will just show the regular full description.
1227
+ $fb_caption = $this->fts_facebook_tag_filter( $fb_caption );
1228
+ echo '<div class="jal-fb-caption">' . wp_kses(
1229
+ nl2br( $fb_caption ),
1230
+ array(
1231
+ 'a' => array(
1232
+ 'href' => array(),
1233
+ 'title' => array(),
1234
+ ),
1235
+ 'br' => array(),
1236
+ 'em' => array(),
1237
+ 'strong' => array(),
1238
+ 'small' => array(),
1239
+ )
1240
+ ) . '</div>';
1241
+ }
1242
+ }
1243
+ }
1244
+
1245
+ /**
1246
+ * Get Likes Shares Comments
1247
+ *
1248
+ * Get the total count for all.
1249
+ *
1250
+ * @param string $response_post_array The array from facebook.
1251
+ * @param string $post_data_key The post data Key.
1252
+ * @param string $fb_post_share_count The post Share Count.
1253
+ * @return array
1254
+ * @since 1.9.6
1255
+ */
1256
+ public function get_likes_shares_comments( $response_post_array, $post_data_key, $fb_post_share_count ) {
1257
+ $lsc_array = array();
1258
+ // Get Likes & Comments.
1259
+ if ( $response_post_array ) {
1260
+ if ( isset( $response_post_array[ $post_data_key . '_likes' ] ) ) {
1261
+ $like_count_data = json_decode( $response_post_array[ $post_data_key . '_likes' ] );
1262
+
1263
+ // Like Count.
1264
+ if ( ! empty( $like_count_data->summary->total_count ) ) {
1265
+ $fb_post_like_count = $like_count_data->summary->total_count;
1266
+ } else {
1267
+ $fb_post_like_count = 0;
1268
+ }
1269
+ if ( 0 === $fb_post_like_count ) {
1270
+ $lsc_array['likes'] = '';
1271
+ }
1272
+ if ( 1 === $fb_post_like_count ) {
1273
+ $lsc_array['likes'] = "<i class='icon-thumbs-up'></i> 1";
1274
+ }
1275
+ if ( $fb_post_like_count > '1' ) {
1276
+ $lsc_array['likes'] = "<i class='icon-thumbs-up'></i> " . esc_html( $fb_post_like_count );
1277
+ }
1278
+ }
1279
+ if ( isset( $response_post_array[ $post_data_key . '_comments' ] ) ) {
1280
+ $comment_count_data = json_decode( $response_post_array[ $post_data_key . '_comments' ] );
1281
+
1282
+ if ( ! empty( $comment_count_data->summary->total_count ) ) {
1283
+ $fb_post_comments_count = $comment_count_data->summary->total_count;
1284
+ } else {
1285
+ $fb_post_comments_count = 0;
1286
+ }
1287
+ if ( 0 === $fb_post_comments_count ) {
1288
+ $lsc_array['comments'] = '';
1289
+ }
1290
+ if ( 1 === $fb_post_comments_count ) {
1291
+ $lsc_array['comments'] = "<i class='icon-comments'></i> 1";
1292
+ $lsc_array['comments_thread'] = $comment_count_data;
1293
+
1294
+ }
1295
+ if ( $fb_post_comments_count > '1' ) {
1296
+ $lsc_array['comments'] = "<i class='icon-comments'></i> " . $fb_post_comments_count;
1297
+ $lsc_array['comments_thread'] = $comment_count_data;
1298
+ }
1299
+ }
1300
+ }
1301
+ // Shares Count.
1302
+ if ( 0 === $fb_post_share_count || ! $fb_post_share_count ) {
1303
+ $lsc_array['shares'] = '';
1304
+ }
1305
+ if ( 1 === $fb_post_share_count ) {
1306
+ $lsc_array['shares'] = "<i class='icon-file'></i> 1";
1307
+ }
1308
+ if ( $fb_post_share_count > '1' ) {
1309
+ $lsc_array['shares'] = "<i class='icon-file'></i> " . $fb_post_share_count;
1310
+ }
1311
+ return $lsc_array;
1312
+ }
1313
+
1314
+
1315
+ /**
1316
+ * FTS Facebook Post See More
1317
+ *
1318
+ * Generate See More Button.
1319
+ *
1320
+ * @param string $fb_link The facebook link.
1321
+ * @param string $lcs_array The lcs array.
1322
+ * @param string $fb_type The type of feed.
1323
+ * @param null $fb_post_id The post id.
1324
+ * @param string $fb_shortcode The shortcode.
1325
+ * @param null $fb_post_user_id The user id.
1326
+ * @param null $fb_post_single_id The single post id.
1327
+ * @param null $single_event_id The event id.
1328
+ * @param string $post_data The post data.
1329
+ * @since 1.9.6
1330
+ */
1331
+ public function fts_facebook_post_see_more( $fb_link, $lcs_array, $fb_type, $fb_post_id = null, $fb_shortcode, $fb_post_user_id = null, $fb_post_single_id = null, $single_event_id = null, $post_data ) {
1332
+
1333
+ $description = isset( $post_data->message ) ? $post_data->message : '';
1334
+ // SHOW THE FB FEED PRINT_R
1335
+ // echo'<pre>';.
1336
+ // print_r();.
1337
+ // echo'</pre>';.
1338
+ $view_on_facebook = get_option( 'fb_view_on_fb_fts' ) ? get_option( 'fb_view_on_fb_fts' ) : __( 'View on Facebook', 'feed-them-social' );
1339
+ $share_this = new feed_them_social_functions();
1340
+ switch ( $fb_type ) {
1341
+ case 'events':
1342
+ $single_event_id = 'https://www.facebook.com/events/' . $single_event_id;
1343
+ echo '<div class="fts-likes-shares-etc-wrap">';
1344
+ echo $share_this->fts_share_option( $single_event_id, $description );
1345
+ echo '<a href="' . esc_attr( $single_event_id ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-see-more">' . esc_html( $view_on_facebook ) . '</a></div>';
1346
+ break;
1347
+ case 'photo':
1348
+ if ( ! empty( $fb_link ) ) {
1349
+ echo '<div class="fts-likes-shares-etc-wrap">';
1350
+ echo $share_this->fts_share_option( $fb_link, $description );
1351
+ echo '<a href="' . esc_url( $fb_link ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-see-more">';
1352
+ } else {
1353
+ // exception for videos.
1354
+ $single_video_id = 'https://www.facebook.com/' . $fb_post_id;
1355
+ echo '<div class="fts-likes-shares-etc-wrap">';
1356
+ echo $share_this->fts_share_option( $single_video_id, $description );
1357
+ echo '<a href="' . esc_url( $single_video_id ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-see-more">';
1358
+ }
1359
+ if ( 'album_photos' === $fb_shortcode['type'] && 'yes' === $fb_shortcode['hide_date_likes_comments'] ) {
1360
+
1361
+ echo '<div class="hide-date-likes-comments-etc">' . wp_kses(
1362
+ $lcs_array['likes'] . ' ' . $lcs_array['comments'] . ' ' . $lcs_array['shares'],
1363
+ array(
1364
+ 'a' => array(
1365
+ 'href' => array(),
1366
+ 'title' => array(),
1367
+ ),
1368
+ 'i' => array(
1369
+ 'class' => array(),
1370
+ ),
1371
+ )
1372
+ ) . ' &nbsp;&nbsp;</div>';
1373
+ } else {
1374
+
1375
+ echo '' . wp_kses(
1376
+ $lcs_array['likes'] . ' ' . $lcs_array['comments'] . ' ' . $lcs_array['shares'],
1377
+ array(
1378
+ 'a' => array(
1379
+ 'href' => array(),
1380
+ 'title' => array(),
1381
+ ),
1382
+ 'i' => array(
1383
+ 'class' => array(),
1384
+ ),
1385
+ )
1386
+ ) . ' &nbsp;&nbsp;';
1387
+ }
1388
+ echo '&nbsp;' . esc_html( $view_on_facebook ) . '</a></div>';
1389
+ break;
1390
+ case 'app':
1391
+ case 'cover':
1392
+ case 'profile':
1393
+ case 'mobile':
1394
+ case 'wall':
1395
+ case 'normal':
1396
+ case 'albums':
1397
+ $url_parsed = parse_url( $fb_link, PHP_URL_QUERY );
1398
+ $params = parse_str( $url_parsed, $params );
1399
+ $new_album_url = str_replace( 'album.php?fbid=' . $params['fbid'] . '&id=' . $params['id'] . '&aid=' . $params['aid'], 'media/set/?set=a.' . $params['fbid'] . '.' . $params['aid'] . '.' . $params['id'], $fb_link );
1400
+
1401
+ echo '<div class="fts-likes-shares-etc-wrap">';
1402
+ echo $share_this->fts_share_option( $new_album_url, $description );
1403
+ echo '<a href="' . esc_url( $new_album_url ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-see-more">';
1404
+ if ( 'albums' === $fb_shortcode['type'] && 'yes' === $fb_shortcode['hide_date_likes_comments'] ) {
1405
+ } else {
1406
+
1407
+ echo '' . wp_kses(
1408
+ $lcs_array['likes'] . ' ' . $lcs_array['comments'],
1409
+ array(
1410
+ 'a' => array(
1411
+ 'href' => array(),
1412
+ 'title' => array(),
1413
+ ),
1414
+ 'i' => array(
1415
+ 'class' => array(),
1416
+ ),
1417
+ )
1418
+ ) . ' &nbsp;&nbsp;';
1419
+ }
1420
+ echo '&nbsp;' . esc_html( $view_on_facebook ) . '</a></div>';
1421
+ break;
1422
+ default:
1423
+ if ( 'yes' !== get_option( 'fb_reviews_remove_see_reviews_link' ) ) {
1424
+ if ( 'reviews' === $fb_shortcode['type'] && is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
1425
+ $fb_reviews_see_more_reviews_language = get_option( 'fb_reviews_see_more_reviews_language' ) ? get_option( 'fb_reviews_see_more_reviews_language' ) : 'See More Reviews';
1426
+
1427
+ $hide_see_more = isset( $fb_shortcode['hide_see_more_reviews_link'] ) ? $fb_shortcode['hide_see_more_reviews_link'] : 'yes';
1428
+ if ( 'yes' !== $hide_see_more ) {
1429
+ echo ' <a href="' . esc_url( 'https://www.facebook.com/' . $fb_shortcode['id'] . '/reviews' ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-see-more">' . esc_html( $fb_reviews_see_more_reviews_language, 'feed-them-social' ) . '</a>';
1430
+ }
1431
+ } else {
1432
+ $post_single_id = 'https://www.facebook.com/' . $fb_post_user_id . '/posts/' . $fb_post_single_id;
1433
+ echo '<div class="fts-likes-shares-etc-wrap">';
1434
+ echo $share_this->fts_share_option( $post_single_id, $description );
1435
+ echo '<a href="' . esc_url( $post_single_id ) . '" target="_blank" rel="noreferrer" class="fts-jal-fb-see-more">';
1436
+
1437
+ echo '' . wp_kses(
1438
+ $lcs_array['likes'] . ' ' . $lcs_array['comments'],
1439
+ array(
1440
+ 'a' => array(
1441
+ 'href' => array(),
1442
+ 'title' => array(),
1443
+ ),
1444
+ 'i' => array(
1445
+ 'class' => array(),
1446
+ ),
1447
+ )
1448
+ ) . ' &nbsp;&nbsp;&nbsp;' . esc_html( $view_on_facebook ) . '</a></div>';
1449
+ }
1450
+ }
1451
+ break;
1452
+ }
1453
+ }
1454
+
1455
+ /**
1456
+ * Get Access Token
1457
+ *
1458
+ * @return mixed
1459
+ * @since 1.9.6
1460
+ */
1461
+ public function get_access_token() {
1462
+ // The API Access Token.
1463
+ // $custom_access_token = get_option('fts_facebook_custom_api_token');
1464
+ // if (!empty($custom_access_token)) {
1465
+ // return $access_token;
1466
+ // } else {
1467
+ // Randomizer
1468
+ // $values = array(
1469
+ // '431287540548931|4A23YYIFqhd-gpz_E4Fy6U_Seo0',
1470
+ // '1748446362151826|epVUmLiKT8QhLN63iRvvXXHwxqk',
1471
+ // '1875381106044241|KmWz3mtzGye0M5HTdX0SK7rqpIU',
1472
+ // '754106341419549|AMruxCJ_ly8825VXeLhBKo_kOfs',
1473
+ // '438563519819257|1GJ8GLl1AQ7ZTvXV_Xpok_QpH6s',
1474
+ // '753693994788276|xm_PXoNRWW8WPQdcQArRpBgWn5Q',
1475
+ // '644818402385988|sABEvG0QiOaJRlNLC2NphfQLlfg',
1476
+ // '292500071162951|9MA-kzWVs6HTEybpdxKjgF_gqeo',
1477
+ // '263710677420086|Jpui2CFig7RbtdHaHPN_fiEa77U',
1478
+ // '1850081601881384|u2JcPCn7TH40MY5BwC-i4PMHGm8',
1479
+ // );
1480
+ // $access_token = $values[array_rand($values, 1)];.
1481
+ return get_option( 'fts_facebook_custom_api_token' );
1482
+ // }
1483
+ }
1484
+
1485
+ /**
1486
+ * Get View Link
1487
+ *
1488
+ * @param string $fb_shortcode The facebook feed shortcode.
1489
+ * @return string
1490
+ * @since 1.9.6
1491
+ */
1492
+ public function get_view_link( $fb_shortcode ) {
1493
+ switch ( $fb_shortcode['type'] ) {
1494
+ case 'group':
1495
+ $fts_view_fb_link = 'https://www.facebook.com/groups/' . $fb_shortcode['id'] . '/';
1496
+ break;
1497
+ case 'page':
1498
+ $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/';
1499
+ break;
1500
+ case 'event':
1501
+ $fts_view_fb_link = 'https://www.facebook.com/events/' . $fb_shortcode['id'] . '/';
1502
+ break;
1503
+ case 'events':
1504
+ $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/events/';
1505
+ break;
1506
+ case 'albums':
1507
+ $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/photos_stream?tab=photos_albums';
1508
+ break;
1509
+ // album photos and videos album.
1510
+ case 'album_photos':
1511
+ $fts_view_fb_link = isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ? 'https://www.facebook.com/' . $fb_shortcode['id'] . '/videos/' : 'https://www.facebook.com/' . $fb_shortcode['id'] . '/photos_stream/';
1512
+ break;
1513
+ case 'hashtag':
1514
+ $fts_view_fb_link = 'https://www.facebook.com/hashtag/' . $fb_shortcode['id'] . '/';
1515
+ break;
1516
+ case 'reviews':
1517
+ $fts_view_fb_link = 'https://www.facebook.com/' . $fb_shortcode['id'] . '/reviews/';
1518
+ break;
1519
+ }
1520
+ $fts_view_fb_link = isset( $fts_view_fb_link ) ? $fts_view_fb_link : '';
1521
+ return $fts_view_fb_link;
1522
+ }
1523
+
1524
+ /**
1525
+ * Get FB Cache Name
1526
+ *
1527
+ * @param string $fb_shortcode The facebook feed shortcode.
1528
+ * @return string
1529
+ * @since 1.9.6
1530
+ */
1531
+ public function get_fb_cache_name( $fb_shortcode ) {
1532
+ // URL to get page info.
1533
+ $r_count = substr_count( $fb_shortcode['id'], ',' );
1534
+
1535
+ if ( $r_count >= 1 ) {
1536
+ $result = preg_replace( '/[ ,]+/', '-', trim( $fb_shortcode['id'] ) );
1537
+ $fb_shortcode['id'] = $result;
1538
+ }
1539
+
1540
+ switch ( $fb_shortcode['type'] ) {
1541
+ case 'album_photos':
1542
+ $fb_data_cache_name = 'fb_' . $fb_shortcode['type'] . '_' . $fb_shortcode['id'] . '_' . $fb_shortcode['album_id'] . '_num' . $fb_shortcode['posts'] . '';
1543
+ break;
1544
+ default:
1545
+ $fb_data_cache_name = 'fb_' . $fb_shortcode['type'] . '_' . $fb_shortcode['id'] . '_num' . $fb_shortcode['posts'] . '';
1546
+ break;
1547
+ }
1548
+ return $fb_data_cache_name;
1549
+ }
1550
+
1551
+ /**
1552
+ * Get Language
1553
+ *
1554
+ * @return string
1555
+ * @since 1.9.6
1556
+ */
1557
+ public function get_language() {
1558
+ // this check is in place because we used this option and it failed for many people because we use wp get contents instead of curl.
1559
+ // this can be removed in a future update and just keep the $language_option = get_option('fb_language', 'en_US');.
1560
+ $language_option_check = get_option( 'fb_language' );
1561
+ if ( isset( $language_option_check ) && 'Please Select Option' !== $language_option_check ) {
1562
+ $language_option = get_option( 'fb_language', 'en_US' );
1563
+ } else {
1564
+ $language_option = 'en_US';
1565
+ }
1566
+ return ! empty( $language_option ) ? '&locale=' . $language_option : '';
1567
+ }
1568
+
1569
+ /**
1570
+ * Get Facebook Overall Rating Response
1571
+ *
1572
+ * @param string $fb_shortcode The facebook feed shortcode.
1573
+ * @param string $fb_cache_name The Cache Name.
1574
+ * @param string $access_token The Access Token.
1575
+ * @since 2.1.3
1576
+ */
1577
+ public function get_facebook_overall_rating_response( $fb_shortcode, $fb_cache_name, $access_token ) {
1578
+
1579
+ // $mulit_data_rating = $this->fts_get_feed_json($mulit_data_rating);.
1580
+ // Error Check
1581
+ // $feed_data_rating_overall = json_decode($mulit_data['rating_data']);.
1582
+ $fb_reviews_overall_rating_of_5_stars_text = get_option( 'fb_reviews_overall_rating_of_5_stars_text' );
1583
+ $fb_reviews_overall_rating_of_5_stars_text = ! empty( $fb_reviews_overall_rating_of_5_stars_text ) ? ' ' . $fb_reviews_overall_rating_of_5_stars_text : ' of 5 stars';
1584
+ $fb_reviews_overall_rating_reviews_text = get_option( 'fb_reviews_overall_rating_reviews_text' );
1585
+ $fb_reviews_overall_rating_reviews_text = ! empty( $fb_reviews_overall_rating_reviews_text ) ? ' ' . $fb_reviews_overall_rating_reviews_text : ' reviews';
1586
+ $fb_reviews_overall_rating_background_border_hide = get_option( 'fb_reviews_overall_rating_background_border_hide' );
1587
+ $fb_reviews_overall_rating_background_border_hide = ! empty( $fb_reviews_overall_rating_background_border_hide ) && 'yes' === $fb_reviews_overall_rating_background_border_hide ? ' fts-review-details-master-wrap-no-background-or-border' : '';
1588
+
1589
+ echo '<div class="fts-review-details-master-wrap' . esc_attr( $fb_reviews_overall_rating_background_border_hide ) . '"><i class="fts-review-star">' . esc_html( $feed_data_rating_overall->overall_star_rating ) . ' &#9733;</i>';
1590
+ echo '<div class="fts-review-details-wrap" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><div class="fts-review-details"><span itemprop="ratingValue">' . esc_html( $feed_data_rating_overall->overall_star_rating ) . '</span>' . esc_html( $fb_reviews_overall_rating_of_5_stars_text ) . '</div>';
1591
+ echo '<div class="fts-review-details-count"><span itemprop="reviewCount">' . esc_html( $feed_data_rating_overall->rating_count ) . '</span>' . esc_html( $fb_reviews_overall_rating_reviews_text ) . '</div></div></div>';
1592
+
1593
+ // $fb_cache_name = $fb_shortcode['id'] . $this->rand_string(10);
1594
+ // Make sure it's not ajaxing
1595
+ // if (!isset($_GET['load_more_ajaxing'])) {
1596
+ // Create Cache
1597
+ // $FTS_FB_OUTPUT = $this->fts_create_feed_cache($fb_cache_name, $feed_data_rating_overall);
1598
+ // }.
1599
+ }
1600
+
1601
+
1602
+ /**
1603
+ * Get Facebook Feed Response
1604
+ *
1605
+ * @param string $fb_shortcode The facebook shortcode.
1606
+ * @param string $fb_cache_name FB cache name.
1607
+ * @param string $access_token The Access Token.
1608
+ * @param string $language Language.
1609
+ * @return array|mixed
1610
+ * @throws \Exception
1611
+ * @since 1.9.6
1612
+ */
1613
+ public function get_facebook_feed_response( $fb_shortcode, $fb_cache_name, $access_token, $language ) {
1614
+
1615
+ if ( is_plugin_active( 'feed-them-social-combined-streams/feed-them-social-combined-streams.php' ) ) {
1616
+ $fts_count_ids = substr_count( $fb_shortcode['id'], ',' );
1617
+ } else {
1618
+ $fts_count_ids = '';
1619
+ }
1620
+
1621
+ if ( false !== $this->fts_check_feed_cache_exists( $fb_cache_name ) && ! isset( $_GET['load_more_ajaxing'] ) ) {
1622
+ $response = $this->fts_get_feed_cache( $fb_cache_name );
1623
+ } else {
1624
+ // Page.
1625
+ if ( 'page' === $fb_shortcode['type'] && 'page_only' === $fb_shortcode['posts_displayed'] ) {
1626
+ $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=id,name,description&access_token=' . $access_token . $language . '' );
1627
+
1628
+ if ( isset( $_REQUEST['next_url'] ) ) {
1629
+ $_REQUEST['next_url'] = str_replace( 'access_token=XXX', 'access_token=' . get_option( 'fts_facebook_custom_api_token' ), $_REQUEST['next_url'] );
1630
+ }
1631
+
1632
+ if ( ! $fts_count_ids >= 1 ) {
1633
+ // We cannot add sanitize_text_field here on the $_REQUEST['next_url'] otherwise it will fail to load the contents from the facebook API.
1634
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/posts?fields=id,caption,attachments,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1635
+ } else {
1636
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/posts?ids=' . $fb_shortcode['id'] . '&fields=id,caption,attachments,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1637
+ }
1638
+ } elseif (
1639
+ // Albums.
1640
+ 'albums' === $fb_shortcode['type'] ) {
1641
+ $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=id,name,description,link&access_token=' . $access_token . $language . '' );
1642
+ if ( isset( $_REQUEST['next_url'] ) ) {
1643
+ $_REQUEST['next_url'] = str_replace( 'access_token=XXX', 'access_token=' . get_option( 'fts_facebook_custom_api_token' ), $_REQUEST['next_url'] );
1644
+ }
1645
+ // Check If Ajax next URL needs to be used.
1646
+ if ( ! $fts_count_ids >= 1 ) {
1647
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : wp_unslash( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/albums?fields=id,photos{images,name,created_time},created_time,name,from,link,cover_photo,count,updated_time,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1648
+ } else {
1649
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : wp_unslash( 'https://graph.facebook.com/albums?ids=' . $fb_shortcode['id'] . '&fields=id,photos{images,name,created_time},created_time,name,from,link,cover_photo,count,updated_time,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1650
+ }
1651
+
1652
+ // $mulit_data['feed_data'] = isset($_REQUEST['next_url']) ? esc_url_raw($_REQUEST['next_url']) : 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/albums?fields=id,created_time,name,from,link,cover_photo,count,updated_time,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '';
1653
+ } elseif (
1654
+ // Album Photos.
1655
+ 'album_photos' === $fb_shortcode['type'] ) {
1656
+ $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=id,name,description&access_token=' . $access_token . $language . '' );
1657
+ if ( isset( $_REQUEST['next_url'] ) ) {
1658
+ $_REQUEST['next_url'] = str_replace( 'access_token=XXX', 'access_token=' . get_option( 'fts_facebook_custom_api_token' ), $_REQUEST['next_url'] );
1659
+ }
1660
+ // Check If Ajax next URL needs to be used
1661
+ // The reason I did not create a whole new else if for the video album is because I did not want to duplicate all the code required to make the video because the videos gallery comes from the photo albums on facebook.
1662
+ if ( isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
1663
+ if ( ! $fts_count_ids >= 1 ) {
1664
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/videos?fields=id,created_time,description,from,icon,link,message,object_id,picture,place,source,to,type,format,embed_html&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1665
+ } else {
1666
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/videos?ids=' . $fb_shortcode['id'] . '&fields=id,created_time,description,from,icon,link,message,object_id,picture,place,source,to,type,format,embed_html&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1667
+ }
1668
+ } elseif ( isset( $fb_shortcode['album_id'] ) && 'photo_stream' === $fb_shortcode['album_id'] ) {
1669
+ if ( ! $fts_count_ids >= 1 ) {
1670
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/photos?fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&type=uploaded&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1671
+ } else {
1672
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/photos?ids=' . $fb_shortcode['id'] . '&fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&type=uploaded&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1673
+ }
1674
+ } else {
1675
+ if ( ! $fts_count_ids >= 1 ) {
1676
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['album_id'] . '/photos?fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1677
+ } else {
1678
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/photos?ids=' . $fb_shortcode['album_id'] . '&fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1679
+ }
1680
+ }
1681
+ } elseif ( 'reviews' === $fb_shortcode['type'] ) {
1682
+
1683
+ // Reviews.
1684
+ if ( is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ) {
1685
+ $fts_facebook_reviews = new FTS_Facebook_Reviews();
1686
+ $mulit_data = $fts_facebook_reviews->review_connection( $fb_shortcode, $access_token, $language );
1687
+
1688
+ $mulit_data['ratings_data'] = esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/?fields=overall_star_rating,rating_count&access_token=' . $access_token . '' );
1689
+
1690
+ } else {
1691
+ return 'Please Purchase and Activate the Feed Them Social Reviews plugin.';
1692
+ exit;
1693
+ }
1694
+ } else {
1695
+ $mulit_data = array( 'page_data' => 'https://graph.facebook.com/' . $fb_shortcode['id'] . '?fields=feed,id,name,description&access_token=' . $access_token . $language . '' );
1696
+
1697
+ // Check If Ajax next URL needs to be used.
1698
+ if ( ! $fts_count_ids >= 1 ) {
1699
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/' . $fb_shortcode['id'] . '/feed?fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1700
+ } else {
1701
+ $mulit_data['feed_data'] = isset( $_REQUEST['next_url'] ) ? esc_url_raw( $_REQUEST['next_url'] ) : esc_url_raw( 'https://graph.facebook.com/feed?ids=' . $fb_shortcode['id'] . '&fields=id,caption,created_time,description,from,icon,link,message,name,object_id,picture,full_picture,place,shares,source,status_type,story,to,type&limit=' . $fb_shortcode['posts'] . '&access_token=' . $access_token . $language . '' );
1702
+ }
1703
+ }
1704
+ $response = $this->fts_get_feed_json( $mulit_data );
1705
+
1706
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
1707
+ // Error Check.
1708
+ $feed_data = json_decode( $response['feed_data'] );
1709
+ $fts_error_check = new fts_error_handler();
1710
+ $fts_error_check_complete = $fts_error_check->facebook_error_check( $fb_shortcode, $feed_data );
1711
+ if ( is_array( $fts_error_check_complete ) && true === $fts_error_check_complete[0] ) {
1712
+
1713
+ // If old Cache exists use it instead of showing an error.
1714
+ if ( true === $this->fts_check_feed_cache_exists( $fb_cache_name, true ) ) {
1715
+
1716
+ // If Current user is Admin and Cache exists for use then still show Admin the error for debugging purposes.
1717
+ if ( current_user_can( 'administrator' ) ) {
1718
+ echo wp_kses(
1719
+ $fts_error_check_complete[1] . ' <em>**NOTE** This error is only shown to logged in Admins of this WordPress install</em>',
1720
+ array(
1721
+ 'a' => array(
1722
+ 'href' => array(),
1723
+ 'title' => array(),
1724
+ ),
1725
+ 'br' => array(),
1726
+ 'em' => array(),
1727
+ 'strong' => array(),
1728
+ )
1729
+ );
1730
+ }
1731
+
1732
+ // Return Cache because it exists in Database. Better than showing nothing right?
1733
+ return $this->fts_get_feed_cache( $fb_cache_name, true );
1734
+ }
1735
+ // If User is Admin and no Old cache is saved in database for use.
1736
+ if ( current_user_can( 'administrator' ) ) {
1737
+ return array( false, $fts_error_check_complete[1] );
1738
+ }
1739
+ }
1740
+ }
1741
+
1742
+ // Make sure it's not ajaxing.
1743
+ if ( ! empty( $response['feed_data'] ) ) {
1744
+ // Create Cache.
1745
+ $this->fts_create_feed_cache( $fb_cache_name, $response );
1746
+ }
1747
+ } // end main else.
1748
+
1749
+ return $response;
1750
+
1751
+ }
1752
+
1753
+
1754
+ /**
1755
+ * Get Facebook Feed Dynamic Name
1756
+ *
1757
+ * @param string $fb_shortcode The facebook feed shortcode.
1758
+ * @return mixed
1759
+ * @since 1.9.6
1760
+ */
1761
+ public function get_facebook_feed_dynamic_name( $fb_shortcode ) {
1762
+
1763
+ return $_REQUEST['fts_dynamic_name'] = sanitize_key( $this->fts_rand_string( 10 ) . '_' . $fb_shortcode['type'] );
1764
+
1765
+ }
1766
+
1767
+ /**
1768
+ * Get Facebook Feed Dynamic Class Name
1769
+ *
1770
+ * @param null $fts_dynamic_name Our Dynamic Name for ajax.
1771
+ * @return string
1772
+ * @since 1.9.6
1773
+ */
1774
+ public function get_facebook_feed_dynamic_class_name( $fts_dynamic_name = null ) {
1775
+ $fts_dynamic_class_name = '';
1776
+ if ( isset( $fts_dynamic_name ) ) {
1777
+ $fts_dynamic_class_name = 'feed_dynamic_class' . sanitize_key( $_REQUEST['fts_dynamic_name'] );
1778
+ }
1779
+ return $fts_dynamic_class_name;
1780
+ }
1781
+
1782
+
1783
+ /**
1784
+ * Get Post Info
1785
+ *
1786
+ * For Facebook.
1787
+ *
1788
+ * @param string $feed_data The facebook contents.
1789
+ * @param string $fb_shortcode FB cache name.
1790
+ * @param string $access_token The Access Token.
1791
+ * @param string $language Language.
1792
+ * @return array|mixed
1793
+ * @since 1.9.6
1794
+ */
1795
+ public function get_post_info( $feed_data, $fb_shortcode, $access_token, $language, $fb_cache_name ) {
1796
+ $developer_mode = get_option( 'fts_clear_cache_developer_mode' );
1797
+
1798
+ if ( 'album_photos' === $fb_shortcode['type'] ) {
1799
+ $fb_post_data_cache = 'fb_' . $fb_shortcode['type'] . '_post_' . $fb_shortcode['album_id'] . '_num' . $fb_shortcode['posts'] . '';
1800
+ } else {
1801
+ $fb_post_data_cache = 'fb_' . $fb_shortcode['type'] . '_post_' . $fb_shortcode['id'] . '_num' . $fb_shortcode['posts'] . '';
1802
+ }
1803
+ if ( false !== $this->fts_check_feed_cache_exists( $fb_post_data_cache ) && ! isset( $_GET['load_more_ajaxing'] ) ) {
1804
+ $response_post_array = $this->fts_get_feed_cache( $fb_post_data_cache );
1805
+
1806
+ } else {
1807
+ // Build the big post counter.
1808
+ $fb_post_array = array();
1809
+ // Single Events Array.
1810
+ $set_zero = 0;
1811
+ foreach ( $feed_data->data as $counter ) {
1812
+
1813
+ $counter->id = isset( $counter->id ) ? $counter->id : '';
1814
+
1815
+ if ( $set_zero === $fb_shortcode['posts'] ) {
1816
+ break;
1817
+ }
1818
+
1819
+ $fb_type = isset( $counter->type ) ? $counter->type : '';
1820
+ $post_data_key = isset( $counter->object_id ) ? $counter->object_id : $counter->id;
1821
+
1822
+ // Likes & Comments.
1823
+ $fb_post_array[ $post_data_key . '_likes' ] = 'https://graph.facebook.com/' . $post_data_key . '/reactions?summary=1&access_token=' . $access_token;
1824
+ $fb_post_array[ $post_data_key . '_comments' ] = 'https://graph.facebook.com/' . $post_data_key . '/comments?summary=1&access_token=' . $access_token;
1825
+ // Video.
1826
+ if ( 'video' === $fb_type ) {
1827
+ $fb_post_array[ $post_data_key . '_video' ] = 'https://graph.facebook.com/' . $post_data_key;
1828
+ }
1829
+ // Photo.
1830
+ $fb_album_cover = isset( $counter->cover_photo->id ) ? $counter->cover_photo->id : '';
1831
+ if ( 'albums' === $fb_shortcode['type'] && ! $fb_album_cover ) {
1832
+ unset( $counter );
1833
+ continue;
1834
+ }
1835
+ if ( 'albums' === $fb_shortcode['type'] ) {
1836
+ $fb_post_array[ $fb_album_cover . '_photo' ] = 'https://graph.facebook.com/' . $fb_album_cover;
1837
+ }
1838
+ if ( 'hashtag' === $fb_shortcode['type'] ) {
1839
+ $fb_post_array[ $post_data_key . '_photo' ] = 'https://graph.facebook.com/' . $counter->source;
1840
+ }
1841
+ // GROUP Photo.
1842
+ if ( 'group' === $fb_shortcode['type'] ) {
1843
+ $fb_post_array[ $post_data_key . '_group_post_photo' ] = 'https://graph.facebook.com/' . $counter->id . '?fields=picture,full_picture&access_token=' . $access_token;
1844
+ }
1845
+
1846
+ $set_zero++;
1847
+ }
1848
+
1849
+ $fts_error_check = new fts_error_handler();
1850
+ $fts_error_check_complete = $fts_error_check->facebook_error_check( $fb_shortcode, $feed_data );
1851
+ if ( is_array( $fts_error_check_complete ) && true === $fts_error_check_complete[0] ) {
1852
+
1853
+ // If old Cache exists use it instead of showing an error.
1854
+ if ( true === $this->fts_check_feed_cache_exists( $fb_cache_name, true ) ) {
1855
+
1856
+ // Return Cache because it exists in Database. Better than showing nothing right?
1857
+ return $this->fts_get_feed_cache( $fb_cache_name, true );
1858
+ }
1859
+ }
1860
+
1861
+ // Response.
1862
+ $response_post_array = $this->fts_get_feed_json( $fb_post_array );
1863
+ // Make sure it's not ajaxing.
1864
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
1865
+ // Create Cache.
1866
+ $this->fts_create_feed_cache( $fb_post_data_cache, $response_post_array );
1867
+ }
1868
+ }
1869
+ // SHOW THE POST RESPONSE PRINT_R
1870
+ // echo'<pre>';
1871
+ // print_r($response_post_array);
1872
+ // echo'</pre>';.
1873
+ return $response_post_array;
1874
+ }
1875
+
1876
+
1877
+ /**
1878
+ * Get Post Info
1879
+ *
1880
+ * For Facebook.
1881
+ *
1882
+ * @param string $feed_data The facebook contents.
1883
+ * @param string $fb_shortcode FB cache name.
1884
+ * @param string $access_token The Access Token.
1885
+ * @param string $language Language.
1886
+ * @return array|mixed
1887
+ * @since 2.1.6
1888
+ */
1889
+ public function get_event_post_info( $feed_data, $fb_shortcode, $access_token, $language ) {
1890
+ $developer_mode = get_option( 'fts_clear_cache_developer_mode' );
1891
+
1892
+ $fb_event_post_data_cache = 'fbe_' . $fb_shortcode['type'] . '_post_' . $fb_shortcode['id'] . '_num' . $fb_shortcode['posts'] . '';
1893
+ if ( false !== $this->fts_check_feed_cache_exists( $fb_event_post_data_cache ) && ! isset( $_GET['load_more_ajaxing'] ) ) {
1894
+ $response_event_post_array = $this->fts_get_feed_cache( $fb_event_post_data_cache );
1895
+ } else {
1896
+ // Single Events Array.
1897
+ $fb_single_events_array = array();
1898
+ $set_zero = 0;
1899
+ foreach ( $feed_data->data as $counter ) {
1900
+
1901
+ $counter->id = isset( $counter->id ) ? $counter->id : '';
1902
+
1903
+ if ( $set_zero === $fb_shortcode['posts'] ) {
1904
+ break;
1905
+ }
1906
+
1907
+ $single_event_id = $counter->id;
1908
+ $language = isset( $language ) ? $language : '';
1909
+ // Event Info, Time etc.
1910
+ $fb_single_events_array[ 'event_single_' . $single_event_id . '_info' ] = 'https://graph.facebook.com/' . $single_event_id . '/?access_token=' . $access_token . $language;
1911
+ // Event Location.
1912
+ $fb_single_events_array[ 'event_single_' . $single_event_id . '_location' ] = 'https://graph.facebook.com/' . $single_event_id . '/?fields=place&access_token=' . $access_token . $language;
1913
+ // Event Cover Photo.
1914
+ $fb_single_events_array[ 'event_single_' . $single_event_id . '_cover_photo' ] = 'https://graph.facebook.com/' . $single_event_id . '/?fields=cover&access_token=' . $access_token . $language;
1915
+ // Event Ticket Info.
1916
+ $fb_single_events_array[ 'event_single_' . $single_event_id . '_ticket_info' ] = 'https://graph.facebook.com/' . $single_event_id . '/?fields=ticket_uri&access_token=' . $access_token . $language;
1917
+
1918
+ $set_zero++;
1919
+ }
1920
+
1921
+ $response_event_post_array = $this->fts_get_feed_json( $fb_single_events_array );
1922
+ // Create Cache.
1923
+ $this->fts_create_feed_cache( $fb_event_post_data_cache, $response_event_post_array );
1924
+
1925
+ }
1926
+ // SHOW THE $response_event_post_array FEED PRINT_R
1927
+ // '<pre>';.
1928
+ // print_r($response_event_post_array);
1929
+ // echo'</pre>';.
1930
+ return $response_event_post_array;
1931
+ }
1932
+
1933
+
1934
+ /**
1935
+ * FB Social Button Placement
1936
+ *
1937
+ * @param string $fb_shortcode The facebook contents.
1938
+ * @param string $access_token The Access Token.
1939
+ * @param string $share_loc Language.
1940
+ * @return string|void
1941
+ * @since 2.0.1
1942
+ */
1943
+ public function fb_social_btn_placement( $fb_shortcode, $access_token, $share_loc ) {
1944
+ // Don't do it for these!
1945
+ if ( 'group' === $fb_shortcode['type'] || 'event' === $fb_shortcode['type'] || isset( $fb_shortcode['hide_like_option'] ) && 'yes' === $fb_shortcode['hide_like_option'] ) {
1946
+ return;
1947
+ }
1948
+ // Facebook Follow Button Options.
1949
+ $fb_show_follow_btn = get_option( 'fb_show_follow_btn' );
1950
+
1951
+ if ( isset( $fb_shortcode['show_follow_btn_where'] ) && '' !== $fb_shortcode['show_follow_btn_where'] ) {
1952
+ if ( 'above_title' === $fb_shortcode['show_follow_btn_where'] ) {
1953
+ $fb_show_follow_btn_where = 'fb-like-top-above-title';
1954
+ } elseif ( 'below_title' === $fb_shortcode['show_follow_btn_where'] ) {
1955
+ $fb_show_follow_btn_where = 'fb-like-top-below-title';
1956
+ } elseif ( 'bottom' === $fb_shortcode['show_follow_btn_where'] ) {
1957
+ $fb_show_follow_btn_where = 'fb-like-below';
1958
+ }
1959
+ } else {
1960
+ $fb_show_follow_btn_where = get_option( 'fb_show_follow_btn_where' );
1961
+ }
1962
+
1963
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
1964
+
1965
+ $like_option_align_final = isset( $fb_shortcode['like_option_align'] ) ? 'fts-fb-social-btn-' . $fb_shortcode['like_option_align'] . '' : '';
1966
+
1967
+ if ( $share_loc === $fb_show_follow_btn_where ) {
1968
+ switch ( $fb_show_follow_btn_where ) {
1969
+ case 'fb-like-top-above-title':
1970
+ // Top Above Title.
1971
+ if ( isset( $fb_show_follow_btn ) && 'dont-display' !== $fb_show_follow_btn ) {
1972
+ echo '<div class="fb-social-btn-top ' . esc_attr( $like_option_align_final ) . '">';
1973
+ $this->social_follow_button( 'facebook', $fb_shortcode['id'], $access_token, $fb_shortcode );
1974
+ echo '</div>';
1975
+ }
1976
+ break;
1977
+ // Top Below Title.
1978
+ case 'fb-like-top-below-title':
1979
+ if ( isset( $fb_show_follow_btn ) && 'dont-display' !== $fb_show_follow_btn ) {
1980
+ echo '<div class="fb-social-btn-below-description ' . esc_attr( $like_option_align_final ) . '">';
1981
+ $this->social_follow_button( 'facebook', $fb_shortcode['id'], $access_token, $fb_shortcode );
1982
+ echo '</div>';
1983
+ }
1984
+ break;
1985
+ // Bottom.
1986
+ case 'fb-like-below':
1987
+ if ( isset( $fb_show_follow_btn ) && 'dont-display' !== $fb_show_follow_btn ) {
1988
+ echo '<div class="fb-social-btn-bottom ' . esc_attr( $like_option_align_final ) . '">';
1989
+ $this->social_follow_button( 'facebook', $fb_shortcode['id'], $access_token, $fb_shortcode );
1990
+ echo '</div>';
1991
+ }
1992
+ break;
1993
+ }
1994
+ }
1995
+ }
1996
+ }
1997
+
1998
+ /**
1999
+ * FTS Custom Trim Words
2000
+ *
2001
+ * Not using this anymore but keeping it as a fallback function for the combined if user has not updated the free version before the combined extension
2002
+ *
2003
+ * @param string $text The description text.
2004
+ * @param int $num_words Number of words you want to be showm.
2005
+ * @param string $more The ...
2006
+ * @return mixed
2007
+ * @since 1.9.6
2008
+ */
2009
+ public function fts_custom_trim_words( $text, $num_words = 45, $more ) {
2010
+ ! empty( $num_words ) && 0 !== $num_words ? $more = __( '...' ) : '';
2011
+ $text = nl2br( $text );
2012
+ // Filter for Hashtags and Mentions Before returning.
2013
+ $text = $this->fts_facebook_tag_filter( $text );
2014
+ $text = strip_shortcodes( $text );
2015
+ // Add tags that you don't want stripped.
2016
+ $text = strip_tags( $text, '<strong><br><em><i><a>' );
2017
+ $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
2018
+ $sep = ' ';
2019
+ if ( count( $words_array ) > $num_words ) {
2020
+ array_pop( $words_array );
2021
+ $text = implode( $sep, $words_array );
2022
+ $text = $text . $more;
2023
+ } else {
2024
+ $text = implode( $sep, $words_array );
2025
+ }
2026
+ return wpautop( $text );
2027
+ }
2028
+
2029
+ /**
2030
+ * FTS Facebook Tag Filter
2031
+ *
2032
+ * Tags Filter (return clean tags)
2033
+ *
2034
+ * @param string $fb_description Facebook Description.
2035
+ * @return mixed
2036
+ * @since 1.9.6
2037
+ */
2038
+ public function fts_facebook_tag_filter( $fb_description ) {
2039
+ // Converts URLs to Links.
2040
+ $fb_description = preg_replace( '@(?!(?!.*?<a)[^<]*<\/a>)(?:(?:https?|ftp|file)://|www\.|ftp\.)[-A-‌​Z0-9+&#/%=~_|$?!:,.]*[A-Z0-9+&#/%=~_|$]@i', '<a href="\0" target="_blank" rel="noreferrer">\0</a>', $fb_description );
2041
+
2042
+ $splitano = explode( 'www', $fb_description );
2043
+ $count = count( $splitano );
2044
+ $return_value = '';
2045
+
2046
+ for ( $i = 0; $i < $count; $i++ ) {
2047
+ if ( 'href=' === substr( $splitano[ $i ], -6, 5 ) ) {
2048
+ $return_value .= $splitano[ $i ] . 'http://www';
2049
+ } elseif ( $i < $count - 1 ) {
2050
+ $return_value .= $splitano[ $i ] . 'www';
2051
+ } else {
2052
+ $return_value .= $splitano[ $i ];
2053
+ }
2054
+ }
2055
+ // Mentions.
2056
+ $return_value = preg_replace( '/@+(\w+)/u', '<a href="https://www.facebook.com/$1" target="_blank" rel="noreferrer">@$1</a>', $return_value );
2057
+ // Hash tags.
2058
+ $return_value = preg_replace( '/#+(\w+)/u', '<a href="https://www.facebook.com/hashtag/$1" target="_blank" rel="noreferrer">#$1</a>', $return_value );
2059
+
2060
+ return $return_value;
2061
+ }
2062
+
2063
+ /**
2064
+ * Load PopUp Scripts
2065
+ *
2066
+ * @param string $fb_shortcode The Facebook feed shortcode.
2067
+ * @since 1.9.6
2068
+ */
2069
+ public function load_popup_scripts( $fb_shortcode ) {
2070
+ if ( 'yes' === $fb_shortcode['popup'] ) {
2071
+ // it's ok if these styles & scripts load at the bottom of the page.
2072
+ $fts_fix_magnific = get_option( 'fts_fix_magnific' ) ? get_option( 'fts_fix_magnific' ) : '';
2073
+ if ( isset( $fts_fix_magnific ) && '1' !== $fts_fix_magnific ) {
2074
+ wp_enqueue_style( 'fts-popup', plugins_url( 'feed-them-social/feeds/css/magnific-popup.css' ), array(), FTS_CURRENT_VERSION, false );
2075
+ }
2076
+ wp_enqueue_script( 'fts-popup-js', plugins_url( 'feed-them-social/feeds/js/magnific-popup.js' ), array(), FTS_CURRENT_VERSION, false );
2077
+ wp_enqueue_script( 'fts-images-loaded', plugins_url( 'feed-them-social/feeds/js/imagesloaded.pkgd.min.js' ), array(), FTS_CURRENT_VERSION, false );
2078
+ if ( ! isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
2079
+ wp_enqueue_script( 'fts-global', plugins_url( 'feed-them-social/feeds/js/fts-global.js' ), array( 'jquery' ), FTS_CURRENT_VERSION, false );
2080
+ }
2081
+ }
2082
+ }
2083
+
2084
+ /**
2085
+ * FTS Facebook LoadMore
2086
+ *
2087
+ * @param string $atts The shortcode attributes.
2088
+ * @param string $feed_data The Feed data.
2089
+ * @param string $fb_type The type of facebook feed.
2090
+ * @param string $fb_shortcode The Facebook feed shortcode.
2091
+ * @since 1.9.6
2092
+ */
2093
+ public function fts_facebook_loadmore( $atts, $feed_data, $fb_type, $fb_shortcode ) {
2094
+ if ( ( isset( $fb_shortcode['loadmore'] ) && 'button' === $fb_shortcode['loadmore'] || isset( $fb_shortcode['loadmore'] ) && 'autoscroll' === $fb_shortcode['loadmore'] ) && ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) ) {
2095
+
2096
+ $fb_load_more_text = get_option( 'fb_load_more_text' ) ? get_option( 'fb_load_more_text' ) : esc_html( 'Load More', 'feed-them-social' );
2097
+ $fb_no_more_posts_text = get_option( 'fb_no_more_posts_text' ) ? get_option( 'fb_no_more_posts_text' ) : esc_html( 'No More Posts', 'feed-them-social' );
2098
+ $fb_no_more_photos_text = get_option( 'fb_no_more_photos_text' ) ? get_option( 'fb_no_more_photos_text' ) : esc_html( 'No More Photos', 'feed-them-social' );
2099
+ $fb_no_more_videos_text = get_option( 'fb_no_more_videos_text' ) ? get_option( 'fb_no_more_videos_text' ) : esc_html( 'No More Videos', 'feed-them-social' );
2100
+ $fb_no_more_reviews_text = get_option( 'fb_no_more_reviews_text' ) ? get_option( 'fb_no_more_reviews_text' ) : esc_html( 'No More Reviews', 'feed-them-social' );
2101
+
2102
+ // Load More BUTTON Start.
2103
+ $next_url = isset( $feed_data->paging->next ) ? $feed_data->paging->next : '';
2104
+
2105
+ $posts = isset( $fb_shortcode['posts'] ) ? $fb_shortcode['posts'] : '';
2106
+ $loadmore_count = isset( $fb_shortcode['loadmore_count'] ) && '' !== $fb_shortcode['loadmore_count'] ? $fb_shortcode['loadmore_count'] : '';
2107
+ // we check to see if the loadmore count number is set and if so pass that as the new count number when fetching the next set of posts.
2108
+ $_REQUEST['next_url'] = '' !== $loadmore_count ? str_replace( "limit=$posts", "limit=$loadmore_count", $next_url ) : $next_url;
2109
+
2110
+ $access_token = is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) ? 'access_token=' . get_option( 'fts_facebook_custom_api_token_biz' ) : 'access_token=' . get_option( 'fts_facebook_custom_api_token' );
2111
+ $_REQUEST['next_url'] = str_replace( $access_token, 'access_token=XXX', $next_url );
2112
+
2113
+ echo '<script>';
2114
+ echo 'var nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . '= "' . esc_url_raw( $_REQUEST['next_url'] ) . '";';
2115
+ echo '</script>';
2116
+
2117
+ // Make sure it's not ajaxing.
2118
+ if ( ! isset( $_GET['load_more_ajaxing'] ) && ! isset( $_REQUEST['fts_no_more_posts'] ) && ! empty( $fb_shortcode['loadmore'] ) ) {
2119
+ $fts_dynamic_name = $_REQUEST['fts_dynamic_name'];
2120
+ $time = time();
2121
+ $nonce = wp_create_nonce( $time . 'load-more-nonce' );
2122
+ $fts_dynamic_class_name = $this->get_fts_dynamic_class_name();
2123
+ echo '<script>';
2124
+ echo 'jQuery(document).ready(function() {';
2125
+ if ( 'autoscroll' === $fb_shortcode['loadmore'] ) {
2126
+ // this is where we do SCROLL function to LOADMORE if = autoscroll in shortcode.
2127
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").bind("scroll",function() {';
2128
+ echo 'if(jQuery(this).scrollTop() + jQuery(this).innerHeight() >= jQuery(this)[0].scrollHeight) {';
2129
+ } else {
2130
+ // this is where we do CLICK function to LOADMORE if = button in shortcode.
2131
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").click(function() {';
2132
+ }
2133
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").addClass("fts-fb-spinner");';
2134
+ echo 'var button = jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").html("<div class=\'bounce1\'></div><div class=\'bounce2\'></div><div class=\'bounce3\'></div>");';
2135
+ echo 'console.log(button);';
2136
+
2137
+ echo 'var yes_ajax = "yes";';
2138
+ echo 'var fts_d_name = "' . esc_js( $fts_dynamic_name ) . '";';
2139
+ echo 'var fts_security = "' . esc_js( $nonce ) . '";';
2140
+ echo 'var fts_time = "' . esc_js( $time ) . '";';
2141
+
2142
+ echo 'var feed_name = "fts_facebook";';
2143
+ echo 'var loadmore_count = "posts=' . esc_js( $fb_shortcode['loadmore_count'] ) . '";';
2144
+ echo 'var feed_attributes = ' . json_encode( $atts ) . ';';
2145
+
2146
+ echo 'jQuery.ajax({';
2147
+ echo 'data: {action: "my_fts_fb_load_more", next_url: nextURL_' . esc_js( $fts_dynamic_name ) . ', fts_dynamic_name: fts_d_name, feed_name: feed_name, loadmore_count: loadmore_count, feed_attributes: feed_attributes, load_more_ajaxing: yes_ajax, fts_security: fts_security, fts_time: fts_time},';
2148
+ echo 'type: "GET",';
2149
+ echo 'url: "' . esc_url( admin_url( 'admin-ajax.php' ) ) . '",';
2150
+ echo 'success: function( data ) {';
2151
+ echo 'console.log("Well Done and got this from sever: " + data);';
2152
+ if ( $fb_type && 'albums' === $fb_shortcode['type'] || $fb_type && 'album_photos' === $fb_shortcode['type'] && 'yes' !== $fb_shortcode['video_album'] || 'yes' === $fb_shortcode['grid'] ) {
2153
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").append(data).filter(".' . esc_js( $fts_dynamic_class_name ) . '").html();';
2154
+ // if (isset($fb_shortcode['image_stack_animation']) && $fb_shortcode['image_stack_animation'] == 'yes') {.
2155
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry( "reloadItems");';
2156
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry("layout");';
2157
+
2158
+ echo 'setTimeout(function() {';
2159
+ // Do something after 3 seconds
2160
+ // This can be direct code, or call to some other function.
2161
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").masonry("layout");';
2162
+ echo '}, 500);';
2163
+
2164
+ // }.
2165
+ echo 'if(!nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' || nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' == "no more"){';
2166
+ if ( 'reviews' === $fb_shortcode['type'] ) {
2167
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_reviews_text ) . '</div>\');';
2168
+ } elseif ( 'videos' === $fb_shortcode['type'] ) {
2169
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_videos_text ) . '</div>\');';
2170
+ } else {
2171
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_photos_text ) . '</div>\');';
2172
+ }
2173
+
2174
+ echo ' jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").removeAttr("id");';
2175
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").unbind("scroll");';
2176
+ echo '}';
2177
+ } else {
2178
+ if ( isset( $fb_shortcode['video_album'] ) && 'yes' === $fb_shortcode['video_album'] ) {
2179
+ echo 'var result = jQuery(data).insertBefore( jQuery("#output_' . esc_js( $fts_dynamic_name ) . '") );';
2180
+ echo 'var result = jQuery(".feed_dynamic_' . esc_js( $fts_dynamic_name ) . '_album_photos").append(data).filter("#output_' . esc_js( $fts_dynamic_name ) . '").html();';
2181
+ } else {
2182
+ echo 'var result = jQuery("#output_' . esc_js( $fts_dynamic_name ) . '").append(data).filter("#output_' . esc_js( $fts_dynamic_name ) . '").html();';
2183
+ }
2184
+ echo 'jQuery("#output_' . esc_js( $fts_dynamic_name ) . '").html(result);';
2185
+ echo 'if(!nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' || nextURL_' . esc_js( $_REQUEST['fts_dynamic_name'] ) . ' == "no more"){';
2186
+ // Reviews.
2187
+ if ( 'reviews' === $fb_shortcode['type'] ) {
2188
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_reviews_text ) . '</div>\');';
2189
+ } else {
2190
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").replaceWith(\'<div class="fts-fb-load-more no-more-posts-fts-fb">' . esc_html( $fb_no_more_posts_text ) . '</div>\');';
2191
+ }
2192
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").removeAttr("id");';
2193
+ echo 'jQuery(".' . esc_js( $fts_dynamic_class_name ) . '").unbind("scroll");';
2194
+ echo '}';
2195
+
2196
+ }
2197
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").html("' . esc_html( $fb_load_more_text ) . '");';
2198
+ // jQuery("#loadMore_'.$fts_dynamic_name.'").removeClass("flip360-fts-load-more");.
2199
+ echo 'jQuery("#loadMore_' . esc_js( $fts_dynamic_name ) . '").removeClass("fts-fb-spinner");';
2200
+ if ( isset( $fb_shortcode['popup'] ) && 'yes' === $fb_shortcode['popup'] ) {
2201
+ // We return this function again otherwise the popup won't work correctly for the newly loaded items.
2202
+ echo 'jQuery.fn.slickFacebookPopUpFunction();';
2203
+ }
2204
+ // Reload the share each funcion otherwise you can't open share option..
2205
+ echo 'jQuery.fn.ftsShare();slickremixImageResizingFacebook2();slickremixImageResizingFacebook3();';
2206
+
2207
+ echo '}';
2208
+ echo '});';
2209
+ // end of ajax().
2210
+ echo 'return false;';
2211
+ // string $scrollMore is at top of this js script. acception for scroll option closing tag.
2212
+ if ( 'autoscroll' === $fb_shortcode['loadmore'] ) {
2213
+ echo '}';
2214
+ // end of scroll ajax load.
2215
+ }
2216
+ echo '});';
2217
+ // end of document.ready.
2218
+ echo '});';
2219
+ // end of form.submit.
2220
+ echo '</script>';
2221
+ }
2222
+ // End Check.
2223
+ // main closing div not included in ajax check so we can close the wrap at all times.
2224
+ // Make sure it's not ajaxing.
2225
+ if ( ! isset( $_GET['load_more_ajaxing'] ) ) {
2226
+ $fts_dynamic_name = $_REQUEST['fts_dynamic_name'];
2227
+ // this div returns outputs our ajax request via jquery appenc html from above style="display:nonee;".
2228
+ echo '<div id="output_' . esc_attr( $fts_dynamic_name ) . '" class="fts-fb-load-more-output"></div>';
2229
+ if ( ( is_plugin_active( 'feed-them-premium/feed-them-premium.php' ) && 'reviews' !== $fb_shortcode['type'] || is_plugin_active( 'feed-them-social-facebook-reviews/feed-them-social-facebook-reviews.php' ) && 'reviews' === $fb_shortcode['type'] ) && 'autoscroll' === $fb_shortcode['loadmore'] ) {
2230
+ echo '<div id="loadMore_' . esc_attr( $fts_dynamic_name ) . '" class="fts-fb-load-more fts-fb-autoscroll-loader">Facebook</div>';
2231
+ }
2232
+ }
2233
+ }
2234
+ // end of if loadmore is button or autoscroll.
2235
+ }
2236
+ // end fts_facebook_loadmore().
2237
+
2238
+ /**
2239
+ * Random String
2240
+ *
2241
+ * Create a random string
2242
+ *
2243
+ * @param string $length How many character to randomize.
2244
+ * @return mixed
2245
+ * @since 1.9.6
2246
+ */
2247
+ public function fts_rand_string( $length = 10 ) {
2248
+ $characters = 'abcdefghijklmnopqrstuvwxyz';
2249
+ $characters_length = strlen( $characters );
2250
+ $random_string = '';
2251
+ for ( $i = 0; $i < $length; $i++ ) {
2252
+ $random_string .= $characters[ wp_rand( 0, $characters_length - 1 ) ];
2253
+ }
2254
+
2255
+ return $random_string;
2256
+ }
2257
  }//end class
feeds/js/magnific-popup.js CHANGED
@@ -1 +1 @@
1
- !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(e){var t,o,i,s,a,r,n="Close",p="BeforeClose",l="MarkupParse",f="Open",c="Change",u="mfp",d="."+u,m="mfp-ready",g="mfp-removing",h="mfp-prevent-close",v=function(){},y=!!window.jQuery,b=e(window),w=function(e,o){t.ev.on(u+e+d,o)},j=function(t,o,i,s){var a=document.createElement("div");return a.className="mfp-"+t,i&&(a.innerHTML=i),s?o&&o.appendChild(a):(a=e(a),o&&a.appendTo(o)),a},C=function(o,i){t.ev.triggerHandler(u+o,i),t.st.callbacks&&(o=o.charAt(0).toLowerCase()+o.slice(1),t.st.callbacks[o]&&t.st.callbacks[o].apply(t,e.isArray(i)?i:[i]))},Q=function(o){return o===r&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),r=o),t.currTemplate.closeBtn},k=function(){e.magnificPopup.instance||((t=new v).init(),e.magnificPopup.instance=t)};v.prototype={constructor:v,init:function(){var o=navigator.appVersion;t.isLowIE=t.isIE8=document.all&&!document.addEventListener,t.isAndroid=/android/gi.test(o),t.isIOS=/iphone|ipad|ipod/gi.test(o),t.supportsTransition=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1}(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),i=e(document),t.popupsCache={}},open:function(o){var s;if(!1===o.isObj){t.items=o.items.toArray(),t.index=0;var r,n=o.items;for(s=0;s<n.length;s++)if((r=n[s]).parsed&&(r=r.el[0]),r===o.el[0]){t.index=s;break}}else t.items=e.isArray(o.items)?o.items:[o.items],t.index=o.index||0;if(!t.isOpen){t.types=[],a="",o.mainEl&&o.mainEl.length?t.ev=o.mainEl.eq(0):t.ev=i,o.key?(t.popupsCache[o.key]||(t.popupsCache[o.key]={}),t.currTemplate=t.popupsCache[o.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,o),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=j("bg").on("click"+d,function(){t.close()}),t.wrap=j("wrap").attr("tabindex",-1).on("click"+d,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=j("container",t.wrap)),t.contentContainer=j("content"),t.st.preloader&&(t.preloader=j("preloader",t.container,t.st.tLoading));var p=e.magnificPopup.modules;for(s=0;s<p.length;s++){var c=p[s];c=c.charAt(0).toUpperCase()+c.slice(1),t["init"+c].call(t)}C("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(w(l,function(e,t,o,i){o.close_replaceWith=Q(i.type)}),a+=" mfp-close-btn-in"):t.wrap.append(Q())),t.st.alignTop&&(a+=" mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:b.scrollTop(),position:"absolute"}),(!1===t.st.fixedBgPos||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:i.height(),position:"absolute"}),t.st.enableEscapeKey&&i.on("keyup"+d,function(e){27===e.keyCode&&t.close()}),b.on("resize"+d,function(){t.updateSize()}),t.st.closeOnContentClick||(a+=" mfp-auto-cursor"),a&&t.wrap.addClass(a);var u=t.wH=b.height(),g={};if(t.fixedContentPos&&t._hasScrollBar(u)){var h=t._getScrollbarSize();h&&(g.marginRight=h)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):g.overflow="hidden");var v=t.st.mainClass;return t.isIE7&&(v+=" mfp-ie7"),v&&t._addClassToMFP(v),t.updateItemHTML(),C("BuildControls"),e("html").css(g),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||e(document.body)),t._lastFocusedEl=document.activeElement,setTimeout(function(){t.content?(t._addClassToMFP(m),t._setFocus()):t.bgOverlay.addClass(m),i.on("focusin"+d,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(u),C(f),o}t.updateItemHTML()},close:function(){t.isOpen&&(C(p),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(g),setTimeout(function(){t._close()},t.st.removalDelay)):t._close())},_close:function(){C(n);var o=g+" "+m+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(o+=t.st.mainClass+" "),t._removeClassFromMFP(o),t.fixedContentPos){var s={marginRight:""};t.isIE7?e("body, html").css("overflow",""):s.overflow="",e("html").css(s)}i.off("keyup.mfp focusin"+d),t.ev.off(d),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&!0!==t.currTemplate[t.currItem.type]||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t.st.autoFocusLast&&t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,C("AfterClose")},updateSize:function(e){if(t.isIOS){var o=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*o;t.wrap.css("height",i),t.wH=i}else t.wH=e||b.height();t.fixedContentPos||t.wrap.css("height",t.wH),C("Resize")},updateItemHTML:function(){var o=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),o.parsed||(o=t.parseEl(t.index));var i=o.type;if(C("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=o,!t.currTemplate[i]){var a=!!t.st[i]&&t.st[i].markup;C("FirstMarkupParse",a),t.currTemplate[i]=!a||e(a)}s&&s!==o.type&&t.container.removeClass("mfp-"+s+"-holder");var r=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](o,t.currTemplate[i]);t.appendContent(r,i),o.preloaded=!0,C(c,o),s=o.type,t.container.prepend(t.contentContainer),C("AfterChange")},appendContent:function(e,o){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&!0===t.currTemplate[o]?t.content.find(".mfp-close").length||t.content.append(Q()):t.content=e:t.content="",C("BeforeAppend"),t.container.addClass("mfp-"+o+"-holder"),t.contentContainer.append(t.content)},parseEl:function(o){var i,s=t.items[o];if(s.tagName?s={el:e(s)}:(i=s.type,s={data:s,src:s.src}),s.el){for(var a=t.types,r=0;r<a.length;r++)if(s.el.hasClass("mfp-"+a[r])){i=a[r];break}s.src=s.el.attr("data-mfp-src"),s.src||(s.src=s.el.attr("href"))}return s.type=i||t.st.type||"inline",s.index=o,s.parsed=!0,t.items[o]=s,C("ElementParse",s),t.items[o]},addGroup:function(e,o){var i=function(i){i.mfpEl=this,t._openClick(i,e,o)};o||(o={});var s="click.magnificPopup";o.mainEl=e,o.items?(o.isObj=!0,e.off(s).on(s,i)):(o.isObj=!1,o.delegate?e.off(s).on(s,o.delegate,i):(o.items=e,e.off(s).on(s,i)))},_openClick:function(o,i,s){if((void 0!==s.midClick?s.midClick:e.magnificPopup.defaults.midClick)||!(2===o.which||o.ctrlKey||o.metaKey||o.altKey||o.shiftKey)){var a=void 0!==s.disableOn?s.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else if(b.width()<a)return!0;o.type&&(o.preventDefault(),t.isOpen&&o.stopPropagation()),s.el=e(o.mfpEl),s.delegate&&(s.items=i.find(s.delegate)),t.open(s)}},updateStatus:function(e,i){if(t.preloader){o!==e&&t.container.removeClass("mfp-s-"+o),i||"loading"!==e||(i=t.st.tLoading);var s={status:e,text:i};C("UpdateStatus",s),e=s.status,i=s.text,t.preloader.html(i),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),o=e}},_checkIfClose:function(o){if(!e(o).hasClass(h)){var i=t.st.closeOnContentClick,s=t.st.closeOnBgClick;if(i&&s)return!0;if(!t.content||e(o).hasClass("mfp-close")||t.preloader&&o===t.preloader[0])return!0;if(o===t.content[0]||e.contains(t.content[0],o)){if(i)return!0}else if(s&&e.contains(document,o))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?i.height():document.body.scrollHeight)>(e||b.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(o){return o.target===t.wrap[0]||e.contains(t.wrap[0],o.target)?void 0:(t._setFocus(),!1)},_parseMarkup:function(t,o,i){var s;i.data&&(o=e.extend(i.data,o)),C(l,[t,o,i]),e.each(o,function(o,i){if(void 0===i||!1===i)return!0;if((s=o.split("_")).length>1){var a=t.find(d+"-"+s[0]);if(a.length>0){var r=s[1];"replaceWith"===r?a[0]!==i[0]&&a.replaceWith(i):"img"===r?a.is("img")?a.attr("src",i):a.replaceWith(e("<img>").attr("src",i).attr("class",a.attr("class"))):a.attr(s[1],i)}}else t.find(d+"-"+o).html(i)})},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:v.prototype,modules:[],open:function(t,o){return k(),(t=t?e.extend(!0,{},t):{}).isObj=!0,t.index=o||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,o){o.options&&(e.magnificPopup.defaults[t]=o.options),e.extend(this.proto,o.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},e.fn.magnificPopup=function(o){k();var i=e(this);if("string"==typeof o)if("open"===o){var s,a=y?i.data("magnificPopup"):i[0].magnificPopup,r=parseInt(arguments[1],10)||0;a.items?s=a.items[r]:(s=i,a.delegate&&(s=s.find(a.delegate)),s=s.eq(r)),t._openClick({mfpEl:s},i,a)}else t.isOpen&&t[o].apply(t,Array.prototype.slice.call(arguments,1));else o=e.extend(!0,{},o),y?i.data("magnificPopup",o):i[0].magnificPopup=o,t.addGroup(i,o);return i};var x,I,P,T="inline",S=function(){P&&(I.after(P.addClass(x)).detach(),P=null)};e.magnificPopup.registerModule(T,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(T),w(n+"."+T,function(){S()})},getInline:function(o,i){if(S(),o.src){var s=t.st.inline,a=e(o.src);if(a.length){var r=a[0].parentNode;r&&r.tagName&&(I||(x=s.hiddenClass,I=j(x),x="mfp-"+x),P=a.after(I).detach().removeClass(x)),t.updateStatus("ready")}else t.updateStatus("error",s.tNotFound),a=e("<div>");return o.inlineElement=a,a}return t.updateStatus("ready"),t._parseMarkup(i,{},o),i}}});var _,O="ajax",z=function(){_&&e(document.body).removeClass(_)},E=function(){z(),t.req&&t.req.abort()};e.magnificPopup.registerModule(O,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(O),_=t.st.ajax.cursor,w(n+"."+O,E),w("BeforeChange."+O,E)},getAjax:function(o){_&&e(document.body).addClass(_),t.updateStatus("loading");var i=e.extend({url:o.src,success:function(i,s,a){var r={data:i,xhr:a};C("ParseAjax",r),t.appendContent(e(r.data),O),o.finished=!0,z(),t._setFocus(),setTimeout(function(){t.wrap.addClass(m)},16),t.updateStatus("ready"),C("AjaxContentAdded")},error:function(){z(),o.finished=o.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",o.src))}},t.st.ajax.settings);return t.req=e.ajax(i),""}}});var B,F=function(o){if(o.data&&void 0!==o.data.title)return o.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,o);if(o.el)return o.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var o=t.st.image,i=".image";t.types.push("image"),w(f+i,function(){"image"===t.currItem.type&&o.cursor&&e(document.body).addClass(o.cursor)}),w(n+i,function(){o.cursor&&e(document.body).removeClass(o.cursor),b.off("resize"+d)}),w("Resize"+i,t.resizeImage),t.isLowIE&&w("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var o=0;t.isLowIE&&(o=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-o)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,B&&clearInterval(B),e.isCheckingImgSize=!1,C("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var o=0,i=e.img[0],s=function(a){B&&clearInterval(B),B=setInterval(function(){return i.naturalWidth>0?void t._onImageHasSize(e):(o>200&&clearInterval(B),void(3===++o?s(10):40===o?s(50):100===o&&s(500)))},a)};s(1)},getImage:function(o,i){var s=0,a=function(){o&&(o.img[0].complete?(o.img.off(".mfploader"),o===t.currItem&&(t._onImageHasSize(o),t.updateStatus("ready")),o.hasSize=!0,o.loaded=!0,C("ImageLoadComplete")):200>++s?setTimeout(a,100):r())},r=function(){o&&(o.img.off(".mfploader"),o===t.currItem&&(t._onImageHasSize(o),t.updateStatus("error",n.tError.replace("%url%",o.src))),o.hasSize=!0,o.loaded=!0,o.loadError=!0)},n=t.st.image,p=i.find(".mfp-img");if(p.length){var l=document.createElement("img");l.className="mfp-img",o.el&&o.el.find("img").length&&(l.alt=o.el.find("img").attr("alt")),o.img=e(l).on("load.mfploader",a).on("error.mfploader",r),l.src=o.src,p.is("img")&&(o.img=o.img.clone()),(l=o.img[0]).naturalWidth>0?o.hasSize=!0:l.width||(o.hasSize=!1)}return t._parseMarkup(i,{title:F(o),img_replaceWith:o.img},o),t.resizeImage(),o.hasSize?(B&&clearInterval(B),o.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",n.tError.replace("%url%",o.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),o.loading=!0,o.hasSize||(o.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(o)),i)}}});var M;e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,o=t.st.zoom,i=".zoom";if(o.enabled&&t.supportsTransition){var s,a,r=o.duration,l=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+o.duration/1e3+"s "+o.easing,s={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},a="transition";return s["-webkit-"+a]=s["-moz-"+a]=s["-o-"+a]=s[a]=i,t.css(s),t},f=function(){t.content.css("visibility","visible")};w("BuildControls"+i,function(){if(t._allowZoom()){if(clearTimeout(s),t.content.css("visibility","hidden"),!(e=t._getItemToZoom()))return void f();(a=l(e)).css(t._getOffset()),t.wrap.append(a),s=setTimeout(function(){a.css(t._getOffset(!0)),s=setTimeout(function(){f(),setTimeout(function(){a.remove(),e=a=null,C("ZoomAnimationEnded")},16)},r)},16)}}),w(p+i,function(){if(t._allowZoom()){if(clearTimeout(s),t.st.removalDelay=r,!e){if(!(e=t._getItemToZoom()))return;a=l(e)}a.css(t._getOffset(!0)),t.wrap.append(a),t.content.css("visibility","hidden"),setTimeout(function(){a.css(t._getOffset())},16)}}),w(n+i,function(){t._allowZoom()&&(f(),a&&a.remove(),e=null)})}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return!!t.currItem.hasSize&&t.currItem.img},_getOffset:function(o){var i,s=(i=o?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem)).offset(),a=parseInt(i.css("padding-top"),10),r=parseInt(i.css("padding-bottom"),10);s.top-=e(window).scrollTop()-a;var n={width:i.width(),height:(y?i.innerHeight():i[0].offsetHeight)-r-a};return void 0===M&&(M=void 0!==document.createElement("p").style.MozTransform),M?n["-moz-transform"]=n.transform="translate("+s.left+"px,"+s.top+"px)":(n.left=s.left,n.top=s.top),n}}});var L="iframe",A=function(e){if(t.currTemplate[L]){var o=t.currTemplate[L].find("iframe");o.length&&(e||(o[0].src="//about:blank"),t.isIE8&&o.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(L,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(L),w("BeforeChange",function(e,t,o){t!==o&&(t===L?A():o===L&&A(!0))}),w(n+"."+L,function(){A()})},getIframe:function(o,i){var s=o.src,a=t.st.iframe;e.each(a.patterns,function(){return s.indexOf(this.index)>-1?(this.id&&(s="string"==typeof this.id?s.substr(s.lastIndexOf(this.id)+this.id.length,s.length):this.id.call(this,s)),s=this.src.replace("%id%",s),!1):void 0});var r={};return a.srcAction&&(r[a.srcAction]=s),t._parseMarkup(i,r,o),t.updateStatus("ready"),i}}});var H=function(e){var o=t.items.length;return e>o-1?e-o:0>e?o+e:e},N=function(e,t,o){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,o)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var o=t.st.gallery,s=".mfp-gallery";return t.direction=!0,!(!o||!o.enabled)&&(a+=" mfp-gallery",w(f+s,function(){o.navigateByImgClick&&t.wrap.on("click"+s,".mfp-img",function(){return t.items.length>1?(t.next(),!1):void 0}),i.on("keydown"+s,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),w("UpdateStatus"+s,function(e,o){o.text&&(o.text=N(o.text,t.currItem.index,t.items.length))}),w(l+s,function(e,i,s,a){var r=t.items.length;s.counter=r>1?N(o.tCounter,a.index,r):""}),w("BuildControls"+s,function(){if(t.items.length>1&&o.arrows&&!t.arrowLeft){var i=o.arrowMarkup,s=t.arrowLeft=e(i.replace(/%title%/gi,o.tPrev).replace(/%dir%/gi,"left")).addClass(h),a=t.arrowRight=e(i.replace(/%title%/gi,o.tNext).replace(/%dir%/gi,"right")).addClass(h);s.click(function(){t.prev()}),a.click(function(){t.next()}),t.container.append(s.add(a))}}),w(c+s,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void w(n+s,function(){i.off(s),t.wrap.off("click"+s),t.arrowRight=t.arrowLeft=null}))},next:function(){t.direction=!0,t.index=H(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=H(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,o=t.st.gallery.preload,i=Math.min(o[0],t.items.length),s=Math.min(o[1],t.items.length);for(e=1;e<=(t.direction?s:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:s);e++)t._preloadItem(t.index-e)},_preloadItem:function(o){if(o=H(o),!t.items[o].preloaded){var i=t.items[o];i.parsed||(i=t.parseEl(o)),C("LazyLoad",i),"image"===i.type&&(i.img=e('<img class="mfp-img" />').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,C("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var W="retina";e.magnificPopup.registerModule(W,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,o=e.ratio;(o=isNaN(o)?o():o)>1&&(w("ImageHasSize."+W,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/o,width:"100%"})}),w("ElementParse."+W,function(t,i){i.src=e.replaceSrc(i,o)}))}}}}),k()}),jQuery(document).ready(function(){jQuery(".popup-gallery-twitter").each(function(){jQuery(this).magnificPopup({delegate:"a.fts-twitter-link-image",type:"image",tLoading:"Loading image #%curr%...",mainClass:"fts-instagram-img-mobile",removalDelay:100,mainClass:"fts-instagram-fade",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'<a href="%url%">The image #%curr%</a> could not be loaded.',titleSrc:function(e){return e.el.parents(".fts-tweeter-wrap, .fts-feed-type-twitter").find(".fts-twitter-text, .fts-mashup-description-wrap").html()}}})});var e=jQuery.magnificPopup.instance;jQuery("body").on("click","#fts-photo-prev",function(){e.prev(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())}),jQuery("body").on("click","#fts-photo-next",function(){e.next(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()&&jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height())}),jQuery("body").on("click",".fts-facebook-popup .mfp-image-holder .fts-popup-image-position",function(){e.next(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()&&jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height())}),jQuery("body").on("click","#fts-photo-prev, #fts-photo-next, .fts-facebook-popup .mfp-image-holder .fts-popup-image-position",function(e){jQuery("body").addClass("fts-using-arrows"),setTimeout(function(){jQuery.fn.ftsShare(),/fbcdn.net/i.test(jQuery(".fts-iframe-popup-element").attr("src"))||/scontent.cdninstagram.com/i.test(jQuery(".fts-iframe-popup-element").attr("src"))?(jQuery("body").addClass("fts-video-iframe-choice"),jQuery(".fts-video-popup-element").show(),jQuery(".fts-iframe-popup-element").attr("src","").hide()):(jQuery("body").removeClass("fts-video-iframe-choice, .fts-using-arrows"),jQuery(".fts-video-popup-element").attr("src","").hide(),jQuery(".fts-iframe-popup-element").show()),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()&&jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()),jQuery(".fts-popup-second-half .fts-greater-than-width-height")[0]?(console.log("Arrows: Open Callback: Irregular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".fts-popup-image-position").css({height:"100%","min-height":"auto"}),jQuery(".mfp-iframe-scaler").css("padding-top","100%")):jQuery(".fts-popup-second-half .fts-equal-width-height")[0]?(console.log("Arrows: Open Callback: Square size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".mfp-iframe-scaler").css("padding-top","")):(console.log("Arrows: Open Callback: Regular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:"100%"}),jQuery(".mfp-iframe-scaler").css("padding-top","56.0%"),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-half").height()))},10)}),jQuery.fn.slickFacebookPopUpFunction=function(){jQuery(".popup-gallery-fb-posts, .popup-gallery-fb, .popup-video-gallery-fb").each(function(){var e=jQuery(this).find("a.fts-facebook-link-target, a.fts-fb-large-photo, a.fts-view-album-photos-large, a.fts-view-fb-videos-large, a.fts-view-fb-videos-btn, a.fts-jal-fb-vid-html5video"),t=[];e.each(function(){var e=jQuery(this),o="image";if(e.hasClass("fts-jal-fb-vid-image")||e.hasClass("fts-view-fb-videos-btn")){o="iframe";var i=jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-fb-embed-iframe-check-used-for-popup").html();if(i)var s=i;else s=""}else s="";var a={src:e.attr("href"),type:o};a.title=jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-jal-fb-top-wrap").html()+jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-likes-shares-etc-wrap").html()+jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-fb-comments-wrap").html()+s,t.push(a)}),e.magnificPopup({mainClass:"fts-facebook-popup fts-facebook-styles-popup",items:t,removalDelay:150,preloader:!1,closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!1,enableEscapeKey:!0,autoFocusLast:!1,gallery:{enabled:!0,navigateByImgClick:!1,tCounter:'<span class="mfp-counter">%curr% of %total%</span>',preload:[0,1],arrowMarkup:""},type:"image",callbacks:{beforeOpen:function(){var t=e.index(this.st.el);-1!==t&&this.goTo(t)},open:function(){if(console.log("Popup is opened"),jQuery.fn.ftsShare(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height()),jQuery(".fts-popup-second-half .fts-greater-than-width-height")[0]?(console.log("Open Callback: Irregular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".mfp-iframe-scaler").css("padding-top","100%")):jQuery(".fts-popup-second-half .fts-equal-width-height")[0]?(console.log("Open Callback: Square size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".mfp-iframe-scaler").css("padding-top","")):(console.log("Open Callback: Regular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:"100%"}),jQuery(".mfp-iframe-scaler").css("padding-top","56.0%"),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-half").height())),matchMedia("only screen and (max-device-width: 736px)").matches){var e=event.target.id,t=jQuery("#"+e).data("poster");jQuery(".fts-fb-vid-popup video").attr("poster",t),console.log(t)}jQuery("body").addClass("fts-using-arrows")},change:function(){jQuery.fn.ftsShare(),jQuery(window).trigger("resize"),console.log("Content changed"),jQuery("body").hasClass("fts-using-arrows")},imageLoadComplete:function(){},markupParse:function(e,t,o){if(console.log("Parsing:",e,t,o),!jQuery("body").hasClass("fts-using-arrows")){var i=o.src;/fbcdn.net/i.test(i)&&"image"!==o.type?jQuery("body").addClass("fts-video-iframe-choice"):jQuery("body").hasClass("fts-using-arrows")||jQuery("body").removeClass("fts-video-iframe-choice")}},afterClose:function(){jQuery("body").removeClass("fts-using-arrows"),console.log("Popup is completely closed")}},image:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half "> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position" style="height:591px;"> <span class="fts-position-helper"></span><div class="mfp-img"></div> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button> </div><div class="fts-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://www.slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',tError:'<a href="%url%">The image #%curr%</a> could not be loaded.'},iframe:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half "> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"><div class="fts-fb-embed-iframe-check-used-for-popup"></div> <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" align="middle" frameborder="0" allowTransparency="true" allow="encrypted-media" allowFullScreen="true"></iframe> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button><script>if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); } jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")}); <\/script> </div> </div><div class="fts-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://www.slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',srcAction:"iframe_src"}})})},jQuery.fn.slickFacebookPopUpFunction(),jQuery.fn.slickInstagramPopUpFunction=function(){jQuery(".popup-gallery").each(function(){var e=jQuery(this).find(".fts-instagram-link-target"),t=[];e.each(function(){var e=jQuery(this);if(e.hasClass("fts-child-media")?(ic=jQuery(this).parents(".fts-instagram-wrapper").find(".fts-carousel-image-wrapper").html(),ivc='<div class="fts-carousel-image"></div>'):(ic="",ivc=""),e.hasClass("fts-jal-fb-vid-image"))o="iframe";else if(e.hasClass("fts-instagram-video-link"))o="inline";else var o="image";if("inline"==o)var i="",s=ivc+'<video controls width="100%;" style="max-width:100%;" allowfullscreen controls><source src="'+e.attr("href")+'" type="video/mp4"></video><script>jQuery(".fts-instagram-styles-popup video").get(0).play();jQuery(".fts-instagram-styles-popup video").click(function(){ jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause") });<\/script>';else i=e.attr("href"),s="";var a={src:i,type:o,html5videolink:s};a.title=ic+jQuery(this).parents(".fts-instagram-wrapper").find(".fts-instagram-popup-profile-wrap").html()+jQuery(this).parents(".fts-instagram-wrapper").find(".slicker-date").html()+jQuery(this).parents(".fts-instagram-wrapper").find(".fts-insta-likes-comments-grab-popup").html()+jQuery(this).parents(".fts-instagram-wrapper").find(".fts-instagram-caption").html(),t.push(a)}),e.magnificPopup({mainClass:"fts-facebook-popup fts-instagram-styles-popup",items:t,removalDelay:150,preloader:!1,closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!1,enableEscapeKey:!0,autoFocusLast:!1,gallery:{enabled:!0,navigateByImgClick:!1,tCounter:'<span class="mfp-counter">%curr% of %total%</span>',preload:[0,1],arrowMarkup:""},callbacks:{beforeOpen:function(){var t=e.index(this.st.el);-1!==t&&this.goTo(t)},open:function(){console.log("Popup is opened"),jQuery.fn.ftsShare(),jQuery(window).resize(function(){jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())}),jQuery(window).trigger("resize")},change:function(){console.log("Content changed"),console.log(this.content),jQuery.fn.ftsShare(),jQuery("body").hasClass("fts-using-arrows")},imageLoadComplete:function(){jQuery(".fts-instagram-popup-second-half .fts-carousel-image").length?(jQuery(".fts-instagram-styles-popup .fts-carousel-image").remove(),jQuery(".fts-instagram-popup-half").prepend("<div class='fts-carousel-image'></div>")):jQuery(".fts-instagram-styles-popup .fts-carousel-image").remove(),jQuery.fn.ftsShare(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())},beforeAppend:function(){jQuery(".fts-instagram-popup-half").prepend("<div class='fts-carousel-image'></div>"),jQuery(".fts-instagram-popup-second-half .fts-carousel-image").length&&alert("wtg")},markupParse:function(e,t,o){console.log("Parsing:",e,t,o)},afterClose:function(){jQuery("body").removeClass("fts-using-arrows"),console.log("Popup is completely closed")}},inline:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half fts-instagram-popup-half"> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <div class="mfp-iframe-scaler mfp-html5videolink" id="fts-html5videolink"> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button> </div> </div><div class="fts-popup-second-half fts-instagram-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>'},image:{markup:'><div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half fts-instagram-popup-half"> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <span class="fts-position-helper"></span><div class="mfp-img"></div> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button> </div><div class="fts-popup-second-half fts-instagram-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://feedthemsocial.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',tError:'<a href="%url%">The image #%curr%</a> could not be loaded.'},iframe:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half fts-instagram-popup-half"> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" frameborder="0" allowfullscreen></iframe><video class="mfp-iframe fts-video-popup-element" allowfullscreen autoplay controls></video> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button><script>if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); } jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")});<\/script> </div> </div><div class="fts-popup-second-half fts-instagram-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://feedthemsocial.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',srcAction:"iframe_src"}})})},jQuery.fn.slickInstagramPopUpFunction(),jQuery.fn.slickYoutubePopUpFunction=function(){jQuery(".fts-youtube-popup-gallery").each(function(){var e=jQuery(this).find("a.fts-yt-popup-open"),t=[];e.each(function(){var e=jQuery(this);type="iframe";var o={src:e.attr("href"),type:type};o.title=jQuery(this).parents(".slicker-youtube-placeholder").find(".youtube-social-btn-top").html()||jQuery(this).parents(".slicker-youtube-placeholder").find(".entriestitle").html(),t.push(o)}),e.magnificPopup({mainClass:"fts-facebook-popup fts-facebook-styles-popup fts-youtube-popup",items:t,removalDelay:150,preloader:!1,closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!1,enableEscapeKey:!0,autoFocusLast:!1,gallery:{enabled:!0,navigateByImgClick:!1,tCounter:'<span class="mfp-counter">%curr% of %total%</span>',preload:[0,1],arrowMarkup:""},callbacks:{beforeOpen:function(){var t=e.index(this.st.el);-1!==t&&this.goTo(t)},open:function(){console.log("Popup is opened"),jQuery.fn.ftsShare(),jQuery(window).resize(function(){jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())}),jQuery(window).trigger("resize")},change:function(){console.log("Content changed"),console.log(this.content),jQuery.fn.ftsShare(),jQuery("body").hasClass("fts-using-arrows")},imageLoadComplete:function(){jQuery.fn.ftsShare(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())},markupParse:function(e,t,o){console.log("Parsing:",e,t,o)},afterClose:function(){jQuery("body").removeClass("fts-using-arrows"),console.log("Popup is completely closed")}},iframe:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half "> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" frameborder="0" allowfullscreen></iframe><video class="mfp-iframe fts-video-popup-element" allowfullscreen autoplay controls></video> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button><script>if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); } jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")}); <\/script> </div> </div><div class="fts-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',srcAction:"iframe_src"}})})},jQuery.fn.slickYoutubePopUpFunction()});
1
+ !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(e){var t,o,i,s,a,r,n="Close",p="BeforeClose",l="MarkupParse",f="Open",c="Change",u="mfp",d="."+u,m="mfp-ready",h="mfp-removing",g="mfp-prevent-close",v=function(){},y=!!window.jQuery,b=e(window),w=function(e,o){t.ev.on(u+e+d,o)},j=function(t,o,i,s){var a=document.createElement("div");return a.className="mfp-"+t,i&&(a.innerHTML=i),s?o&&o.appendChild(a):(a=e(a),o&&a.appendTo(o)),a},C=function(o,i){t.ev.triggerHandler(u+o,i),t.st.callbacks&&(o=o.charAt(0).toLowerCase()+o.slice(1),t.st.callbacks[o]&&t.st.callbacks[o].apply(t,e.isArray(i)?i:[i]))},Q=function(o){return o===r&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),r=o),t.currTemplate.closeBtn},k=function(){e.magnificPopup.instance||((t=new v).init(),e.magnificPopup.instance=t)};v.prototype={constructor:v,init:function(){var o=navigator.appVersion;t.isLowIE=t.isIE8=document.all&&!document.addEventListener,t.isAndroid=/android/gi.test(o),t.isIOS=/iphone|ipad|ipod/gi.test(o),t.supportsTransition=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1}(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),i=e(document),t.popupsCache={}},open:function(o){var s;if(!1===o.isObj){t.items=o.items.toArray(),t.index=0;var r,n=o.items;for(s=0;s<n.length;s++)if((r=n[s]).parsed&&(r=r.el[0]),r===o.el[0]){t.index=s;break}}else t.items=e.isArray(o.items)?o.items:[o.items],t.index=o.index||0;if(!t.isOpen){t.types=[],a="",o.mainEl&&o.mainEl.length?t.ev=o.mainEl.eq(0):t.ev=i,o.key?(t.popupsCache[o.key]||(t.popupsCache[o.key]={}),t.currTemplate=t.popupsCache[o.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,o),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=j("bg").on("click"+d,function(){t.close()}),t.wrap=j("wrap").attr("tabindex",-1).on("click"+d,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=j("container",t.wrap)),t.contentContainer=j("content"),t.st.preloader&&(t.preloader=j("preloader",t.container,t.st.tLoading));var p=e.magnificPopup.modules;for(s=0;s<p.length;s++){var c=p[s];c=c.charAt(0).toUpperCase()+c.slice(1),t["init"+c].call(t)}C("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(w(l,function(e,t,o,i){o.close_replaceWith=Q(i.type)}),a+=" mfp-close-btn-in"):t.wrap.append(Q())),t.st.alignTop&&(a+=" mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:b.scrollTop(),position:"absolute"}),(!1===t.st.fixedBgPos||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:i.height(),position:"absolute"}),t.st.enableEscapeKey&&i.on("keyup"+d,function(e){27===e.keyCode&&t.close()}),b.on("resize"+d,function(){t.updateSize()}),t.st.closeOnContentClick||(a+=" mfp-auto-cursor"),a&&t.wrap.addClass(a);var u=t.wH=b.height(),h={};if(t.fixedContentPos&&t._hasScrollBar(u)){var g=t._getScrollbarSize();g&&(h.marginRight=g)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):h.overflow="hidden");var v=t.st.mainClass;return t.isIE7&&(v+=" mfp-ie7"),v&&t._addClassToMFP(v),t.updateItemHTML(),C("BuildControls"),e("html").css(h),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||e(document.body)),t._lastFocusedEl=document.activeElement,setTimeout(function(){t.content?(t._addClassToMFP(m),t._setFocus()):t.bgOverlay.addClass(m),i.on("focusin"+d,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(u),C(f),o}t.updateItemHTML()},close:function(){t.isOpen&&(C(p),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(h),setTimeout(function(){t._close()},t.st.removalDelay)):t._close())},_close:function(){C(n);var o=h+" "+m+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(o+=t.st.mainClass+" "),t._removeClassFromMFP(o),t.fixedContentPos){var s={marginRight:""};t.isIE7?e("body, html").css("overflow",""):s.overflow="",e("html").css(s)}i.off("keyup.mfp focusin"+d),t.ev.off(d),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&!0!==t.currTemplate[t.currItem.type]||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t.st.autoFocusLast&&t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,C("AfterClose")},updateSize:function(e){if(t.isIOS){var o=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*o;t.wrap.css("height",i),t.wH=i}else t.wH=e||b.height();t.fixedContentPos||t.wrap.css("height",t.wH),C("Resize")},updateItemHTML:function(){var o=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),o.parsed||(o=t.parseEl(t.index));var i=o.type;if(C("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=o,!t.currTemplate[i]){var a=!!t.st[i]&&t.st[i].markup;C("FirstMarkupParse",a),t.currTemplate[i]=!a||e(a)}s&&s!==o.type&&t.container.removeClass("mfp-"+s+"-holder");var r=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](o,t.currTemplate[i]);t.appendContent(r,i),o.preloaded=!0,C(c,o),s=o.type,t.container.prepend(t.contentContainer),C("AfterChange")},appendContent:function(e,o){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&!0===t.currTemplate[o]?t.content.find(".mfp-close").length||t.content.append(Q()):t.content=e:t.content="",C("BeforeAppend"),t.container.addClass("mfp-"+o+"-holder"),t.contentContainer.append(t.content)},parseEl:function(o){var i,s=t.items[o];if(s.tagName?s={el:e(s)}:(i=s.type,s={data:s,src:s.src}),s.el){for(var a=t.types,r=0;r<a.length;r++)if(s.el.hasClass("mfp-"+a[r])){i=a[r];break}s.src=s.el.attr("data-mfp-src"),s.src||(s.src=s.el.attr("href"))}return s.type=i||t.st.type||"inline",s.index=o,s.parsed=!0,t.items[o]=s,C("ElementParse",s),t.items[o]},addGroup:function(e,o){var i=function(i){i.mfpEl=this,t._openClick(i,e,o)};o||(o={});var s="click.magnificPopup";o.mainEl=e,o.items?(o.isObj=!0,e.off(s).on(s,i)):(o.isObj=!1,o.delegate?e.off(s).on(s,o.delegate,i):(o.items=e,e.off(s).on(s,i)))},_openClick:function(o,i,s){if((void 0!==s.midClick?s.midClick:e.magnificPopup.defaults.midClick)||!(2===o.which||o.ctrlKey||o.metaKey||o.altKey||o.shiftKey)){var a=void 0!==s.disableOn?s.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else if(b.width()<a)return!0;o.type&&(o.preventDefault(),t.isOpen&&o.stopPropagation()),s.el=e(o.mfpEl),s.delegate&&(s.items=i.find(s.delegate)),t.open(s)}},updateStatus:function(e,i){if(t.preloader){o!==e&&t.container.removeClass("mfp-s-"+o),i||"loading"!==e||(i=t.st.tLoading);var s={status:e,text:i};C("UpdateStatus",s),e=s.status,i=s.text,t.preloader.html(i),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),o=e}},_checkIfClose:function(o){if(!e(o).hasClass(g)){var i=t.st.closeOnContentClick,s=t.st.closeOnBgClick;if(i&&s)return!0;if(!t.content||e(o).hasClass("mfp-close")||t.preloader&&o===t.preloader[0])return!0;if(o===t.content[0]||e.contains(t.content[0],o)){if(i)return!0}else if(s&&e.contains(document,o))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?i.height():document.body.scrollHeight)>(e||b.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(o){return o.target===t.wrap[0]||e.contains(t.wrap[0],o.target)?void 0:(t._setFocus(),!1)},_parseMarkup:function(t,o,i){var s;i.data&&(o=e.extend(i.data,o)),C(l,[t,o,i]),e.each(o,function(o,i){if(void 0===i||!1===i)return!0;if((s=o.split("_")).length>1){var a=t.find(d+"-"+s[0]);if(a.length>0){var r=s[1];"replaceWith"===r?a[0]!==i[0]&&a.replaceWith(i):"img"===r?a.is("img")?a.attr("src",i):a.replaceWith(e("<img>").attr("src",i).attr("class",a.attr("class"))):a.attr(s[1],i)}}else t.find(d+"-"+o).html(i)})},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:v.prototype,modules:[],open:function(t,o){return k(),(t=t?e.extend(!0,{},t):{}).isObj=!0,t.index=o||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,o){o.options&&(e.magnificPopup.defaults[t]=o.options),e.extend(this.proto,o.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},e.fn.magnificPopup=function(o){k();var i=e(this);if("string"==typeof o)if("open"===o){var s,a=y?i.data("magnificPopup"):i[0].magnificPopup,r=parseInt(arguments[1],10)||0;a.items?s=a.items[r]:(s=i,a.delegate&&(s=s.find(a.delegate)),s=s.eq(r)),t._openClick({mfpEl:s},i,a)}else t.isOpen&&t[o].apply(t,Array.prototype.slice.call(arguments,1));else o=e.extend(!0,{},o),y?i.data("magnificPopup",o):i[0].magnificPopup=o,t.addGroup(i,o);return i};var x,I,P,T="inline",S=function(){P&&(I.after(P.addClass(x)).detach(),P=null)};e.magnificPopup.registerModule(T,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(T),w(n+"."+T,function(){S()})},getInline:function(o,i){if(S(),o.src){var s=t.st.inline,a=e(o.src);if(a.length){var r=a[0].parentNode;r&&r.tagName&&(I||(x=s.hiddenClass,I=j(x),x="mfp-"+x),P=a.after(I).detach().removeClass(x)),t.updateStatus("ready")}else t.updateStatus("error",s.tNotFound),a=e("<div>");return o.inlineElement=a,a}return t.updateStatus("ready"),t._parseMarkup(i,{},o),i}}});var _,O="ajax",z=function(){_&&e(document.body).removeClass(_)},E=function(){z(),t.req&&t.req.abort()};e.magnificPopup.registerModule(O,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(O),_=t.st.ajax.cursor,w(n+"."+O,E),w("BeforeChange."+O,E)},getAjax:function(o){_&&e(document.body).addClass(_),t.updateStatus("loading");var i=e.extend({url:o.src,success:function(i,s,a){var r={data:i,xhr:a};C("ParseAjax",r),t.appendContent(e(r.data),O),o.finished=!0,z(),t._setFocus(),setTimeout(function(){t.wrap.addClass(m)},16),t.updateStatus("ready"),C("AjaxContentAdded")},error:function(){z(),o.finished=o.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",o.src))}},t.st.ajax.settings);return t.req=e.ajax(i),""}}});var B,F,M=function(o){if(o.data&&void 0!==o.data.title)return o.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,o);if(o.el)return o.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var o=t.st.image,i=".image";t.types.push("image"),w(f+i,function(){"image"===t.currItem.type&&o.cursor&&e(document.body).addClass(o.cursor)}),w(n+i,function(){o.cursor&&e(document.body).removeClass(o.cursor),b.off("resize"+d)}),w("Resize"+i,t.resizeImage),t.isLowIE&&w("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var o=0;t.isLowIE&&(o=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-o)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,B&&clearInterval(B),e.isCheckingImgSize=!1,C("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var o=0,i=e.img[0],s=function(a){B&&clearInterval(B),B=setInterval(function(){return i.naturalWidth>0?void t._onImageHasSize(e):(o>200&&clearInterval(B),void(3==++o?s(10):40===o?s(50):100===o&&s(500)))},a)};s(1)},getImage:function(o,i){var s=0,a=function(){o&&(o.img[0].complete?(o.img.off(".mfploader"),o===t.currItem&&(t._onImageHasSize(o),t.updateStatus("ready")),o.hasSize=!0,o.loaded=!0,C("ImageLoadComplete")):200>++s?setTimeout(a,100):r())},r=function(){o&&(o.img.off(".mfploader"),o===t.currItem&&(t._onImageHasSize(o),t.updateStatus("error",n.tError.replace("%url%",o.src))),o.hasSize=!0,o.loaded=!0,o.loadError=!0)},n=t.st.image,p=i.find(".mfp-img");if(p.length){var l=document.createElement("img");l.className="mfp-img",o.el&&o.el.find("img").length&&(l.alt=o.el.find("img").attr("alt")),o.img=e(l).on("load.mfploader",a).on("error.mfploader",r),l.src=o.src,p.is("img")&&(o.img=o.img.clone()),(l=o.img[0]).naturalWidth>0?o.hasSize=!0:l.width||(o.hasSize=!1)}return t._parseMarkup(i,{title:M(o),img_replaceWith:o.img},o),t.resizeImage(),o.hasSize?(B&&clearInterval(B),o.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",n.tError.replace("%url%",o.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),o.loading=!0,o.hasSize||(o.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(o)),i)}}}),e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,o=t.st.zoom,i=".zoom";if(o.enabled&&t.supportsTransition){var s,a,r=o.duration,l=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+o.duration/1e3+"s "+o.easing,s={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},a="transition";return s["-webkit-"+a]=s["-moz-"+a]=s["-o-"+a]=s[a]=i,t.css(s),t},f=function(){t.content.css("visibility","visible")};w("BuildControls"+i,function(){if(t._allowZoom()){if(clearTimeout(s),t.content.css("visibility","hidden"),!(e=t._getItemToZoom()))return void f();(a=l(e)).css(t._getOffset()),t.wrap.append(a),s=setTimeout(function(){a.css(t._getOffset(!0)),s=setTimeout(function(){f(),setTimeout(function(){a.remove(),e=a=null,C("ZoomAnimationEnded")},16)},r)},16)}}),w(p+i,function(){if(t._allowZoom()){if(clearTimeout(s),t.st.removalDelay=r,!e){if(!(e=t._getItemToZoom()))return;a=l(e)}a.css(t._getOffset(!0)),t.wrap.append(a),t.content.css("visibility","hidden"),setTimeout(function(){a.css(t._getOffset())},16)}}),w(n+i,function(){t._allowZoom()&&(f(),a&&a.remove(),e=null)})}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return!!t.currItem.hasSize&&t.currItem.img},_getOffset:function(o){var i,s=(i=o?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem)).offset(),a=parseInt(i.css("padding-top"),10),r=parseInt(i.css("padding-bottom"),10);s.top-=e(window).scrollTop()-a;var n={width:i.width(),height:(y?i.innerHeight():i[0].offsetHeight)-r-a};return void 0===F&&(F=void 0!==document.createElement("p").style.MozTransform),F?n["-moz-transform"]=n.transform="translate("+s.left+"px,"+s.top+"px)":(n.left=s.left,n.top=s.top),n}}});var L="iframe",A=function(e){if(t.currTemplate[L]){var o=t.currTemplate[L].find("iframe");o.length&&(e||(o[0].src="//about:blank"),t.isIE8&&o.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(L,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(L),w("BeforeChange",function(e,t,o){t!==o&&(t===L?A():o===L&&A(!0))}),w(n+"."+L,function(){A()})},getIframe:function(o,i){var s=o.src,a=t.st.iframe;e.each(a.patterns,function(){return s.indexOf(this.index)>-1?(this.id&&(s="string"==typeof this.id?s.substr(s.lastIndexOf(this.id)+this.id.length,s.length):this.id.call(this,s)),s=this.src.replace("%id%",s),!1):void 0});var r={};return a.srcAction&&(r[a.srcAction]=s),t._parseMarkup(i,r,o),t.updateStatus("ready"),i}}});var H=function(e){var o=t.items.length;return e>o-1?e-o:0>e?o+e:e},N=function(e,t,o){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,o)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var o=t.st.gallery,s=".mfp-gallery";return t.direction=!0,!(!o||!o.enabled)&&(a+=" mfp-gallery",w(f+s,function(){o.navigateByImgClick&&t.wrap.on("click"+s,".mfp-img",function(){return t.items.length>1?(t.next(),!1):void 0}),i.on("keydown"+s,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),w("UpdateStatus"+s,function(e,o){o.text&&(o.text=N(o.text,t.currItem.index,t.items.length))}),w(l+s,function(e,i,s,a){var r=t.items.length;s.counter=r>1?N(o.tCounter,a.index,r):""}),w("BuildControls"+s,function(){if(t.items.length>1&&o.arrows&&!t.arrowLeft){var i=o.arrowMarkup,s=t.arrowLeft=e(i.replace(/%title%/gi,o.tPrev).replace(/%dir%/gi,"left")).addClass(g),a=t.arrowRight=e(i.replace(/%title%/gi,o.tNext).replace(/%dir%/gi,"right")).addClass(g);s.click(function(){t.prev()}),a.click(function(){t.next()}),t.container.append(s.add(a))}}),w(c+s,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void w(n+s,function(){i.off(s),t.wrap.off("click"+s),t.arrowRight=t.arrowLeft=null}))},next:function(){t.direction=!0,t.index=H(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=H(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,o=t.st.gallery.preload,i=Math.min(o[0],t.items.length),s=Math.min(o[1],t.items.length);for(e=1;e<=(t.direction?s:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:s);e++)t._preloadItem(t.index-e)},_preloadItem:function(o){if(o=H(o),!t.items[o].preloaded){var i=t.items[o];i.parsed||(i=t.parseEl(o)),C("LazyLoad",i),"image"===i.type&&(i.img=e('<img class="mfp-img" />').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,C("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var W="retina";e.magnificPopup.registerModule(W,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,o=e.ratio;(o=isNaN(o)?o():o)>1&&(w("ImageHasSize."+W,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/o,width:"100%"})}),w("ElementParse."+W,function(t,i){i.src=e.replaceSrc(i,o)}))}}}}),k()}),jQuery(document).ready(function(){jQuery(".popup-gallery-twitter").each(function(){jQuery(this).magnificPopup({delegate:"a.fts-twitter-link-image",type:"image",tLoading:"Loading image #%curr%...",mainClass:"fts-instagram-img-mobile",removalDelay:100,mainClass:"fts-instagram-fade",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'<a href="%url%">The image #%curr%</a> could not be loaded.',titleSrc:function(e){return e.el.parents(".fts-tweeter-wrap, .fts-feed-type-twitter").find(".fts-twitter-text, .fts-mashup-description-wrap").html()}}})});var e=jQuery.magnificPopup.instance;jQuery("body").on("click","#fts-photo-prev",function(){e.prev(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())}),jQuery("body").on("click","#fts-photo-next",function(){e.next(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()&&jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height())}),jQuery("body").on("click",".fts-facebook-popup .mfp-image-holder .fts-popup-image-position",function(){e.next(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()&&jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height())}),jQuery("body").on("click","#fts-photo-prev, #fts-photo-next, .fts-facebook-popup .mfp-image-holder .fts-popup-image-position",function(e){jQuery("body").addClass("fts-using-arrows"),setTimeout(function(){jQuery.fn.ftsShare(),/fbcdn.net/i.test(jQuery(".fts-iframe-popup-element").attr("src"))||/scontent.cdninstagram.com/i.test(jQuery(".fts-iframe-popup-element").attr("src"))?(jQuery("body").addClass("fts-video-iframe-choice"),jQuery(".fts-video-popup-element").show(),jQuery(".fts-iframe-popup-element").attr("src","").hide()):(jQuery("body").removeClass("fts-video-iframe-choice, .fts-using-arrows"),jQuery(".fts-video-popup-element").attr("src","").hide(),jQuery(".fts-iframe-popup-element").show()),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()&&jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()),jQuery(".fts-popup-second-half .fts-greater-than-width-height")[0]?(console.log("Arrows: Open Callback: Irregular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".fts-popup-image-position").css({height:"100%","min-height":"auto"}),jQuery(".mfp-iframe-scaler").css("padding-top","100%")):jQuery(".fts-popup-second-half .fts-equal-width-height")[0]?(console.log("Arrows: Open Callback: Square size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".mfp-iframe-scaler").css("padding-top","")):(console.log("Arrows: Open Callback: Regular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:"100%"}),jQuery(".mfp-iframe-scaler").css("padding-top","56.0%"),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-half").height()))},10)}),jQuery.fn.slickFacebookPopUpFunction=function(){jQuery(".popup-gallery-fb-posts, .popup-gallery-fb, .popup-video-gallery-fb").each(function(){var e=jQuery(this).find("a.fts-facebook-link-target, a.fts-fb-large-photo, a.fts-view-album-photos-large, a.fts-view-fb-videos-large, a.fts-view-fb-videos-btn, a.fts-jal-fb-vid-html5video"),t=[];e.each(function(){var e=jQuery(this),o="image";if(e.hasClass("fts-jal-fb-vid-image")||e.hasClass("fts-view-fb-videos-btn")){o="iframe";var i=jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-fb-embed-iframe-check-used-for-popup").html();if(i)var s=i;else s=""}else s="";var a={src:e.attr("href"),type:o},r=jQuery(this).parents(".fts-fb-album-additional-pics-content").find(".fts-fb-album-additional-pics-description-wrap").html()?jQuery(this).parents(".fts-fb-album-additional-pics-content").find(".fts-fb-album-additional-pics-description-wrap").html():"",n=jQuery(this).parents(".fts-jal-fb-post-time-album").find(".fts-jal-fb-post-time-album").html()?jQuery(this).parents(".fts-fb-album-additional-pics-content").find(".fts-jal-fb-post-time-album").html():"";a.title=jQuery(this).parents(".fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-jal-fb-top-wrap").html()+r+n+jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-likes-shares-etc-wrap").html()+jQuery(this).parents(".fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post").find(".fts-fb-comments-wrap").html()+s,t.push(a)}),e.magnificPopup({mainClass:"fts-facebook-popup fts-facebook-styles-popup",items:t,removalDelay:150,preloader:!1,closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!1,enableEscapeKey:!0,autoFocusLast:!1,gallery:{enabled:!0,navigateByImgClick:!1,tCounter:'<span class="mfp-counter">%curr% of %total%</span>',preload:[0,1],arrowMarkup:""},type:"image",callbacks:{beforeOpen:function(){var t=e.index(this.st.el);-1!==t&&this.goTo(t)},open:function(){if(console.log("Popup is opened"),jQuery.fn.ftsShare(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height()),jQuery(".fts-popup-second-half .fts-greater-than-width-height")[0]?(console.log("Open Callback: Irregular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".mfp-iframe-scaler").css("padding-top","100%")):jQuery(".fts-popup-second-half .fts-equal-width-height")[0]?(console.log("Open Callback: Square size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:jQuery(".fts-popup-half").height()}),jQuery(".mfp-iframe-scaler").css("padding-top","")):(console.log("Open Callback: Regular size"),jQuery("iframe.fts-iframe-popup-element").css({"max-width":"100%",width:"100%"}),jQuery(".mfp-iframe-scaler").css("padding-top","56.0%"),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-half").height())),matchMedia("only screen and (max-device-width: 736px)").matches){var e=event.target.id,t=jQuery("#"+e).data("poster");jQuery(".fts-fb-vid-popup video").attr("poster",t),console.log(t)}jQuery("body").addClass("fts-using-arrows")},change:function(){jQuery.fn.ftsShare(),jQuery(window).trigger("resize"),console.log("Content changed"),jQuery("body").hasClass("fts-using-arrows")},imageLoadComplete:function(){},markupParse:function(e,t,o){if(console.log("Parsing:",e,t,o),!jQuery("body").hasClass("fts-using-arrows")){var i=o.src;/fbcdn.net/i.test(i)&&"image"!==o.type?jQuery("body").addClass("fts-video-iframe-choice"):jQuery("body").hasClass("fts-using-arrows")||jQuery("body").removeClass("fts-video-iframe-choice")}},afterClose:function(){jQuery("body").removeClass("fts-using-arrows"),console.log("Popup is completely closed")}},image:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half "> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position" style="height:591px;"> <span class="fts-position-helper"></span><div class="mfp-img"></div> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button> </div><div class="fts-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://www.slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',tError:'<a href="%url%">The image #%curr%</a> could not be loaded.'},iframe:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half "> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"><div class="fts-fb-embed-iframe-check-used-for-popup"></div> <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" align="middle" frameborder="0" allowTransparency="true" allow="encrypted-media" allowFullScreen="true"></iframe> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button><script>if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); } jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")}); <\/script> </div> </div><div class="fts-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://www.slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',srcAction:"iframe_src"}})})},jQuery.fn.slickFacebookPopUpFunction(),jQuery.fn.slickInstagramPopUpFunction=function(){jQuery(".popup-gallery").each(function(){var e=jQuery(this).find(".fts-instagram-link-target"),t=[];e.each(function(){var e=jQuery(this);if(e.hasClass("fts-child-media")?(ic=jQuery(this).parents(".fts-instagram-wrapper").find(".fts-carousel-image-wrapper").html(),ivc='<div class="fts-carousel-image"></div>'):(ic="",ivc=""),e.hasClass("fts-jal-fb-vid-image"))o="iframe";else if(e.hasClass("fts-instagram-video-link"))o="inline";else var o="image";if("inline"==o)var i="",s=ivc+'<video controls width="100%;" style="max-width:100%;" allowfullscreen controls><source src="'+e.attr("href")+'" type="video/mp4"></video><script>jQuery(".fts-instagram-styles-popup video").get(0).play();jQuery(".fts-instagram-styles-popup video").click(function(){ jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause") });<\/script>';else i=e.attr("href"),s="";var a={src:i,type:o,html5videolink:s};a.title=ic+jQuery(this).parents(".fts-instagram-wrapper").find(".fts-instagram-popup-profile-wrap").html()+jQuery(this).parents(".fts-instagram-wrapper").find(".slicker-date").html()+jQuery(this).parents(".fts-instagram-wrapper").find(".fts-insta-likes-comments-grab-popup").html()+jQuery(this).parents(".fts-instagram-wrapper").find(".fts-instagram-caption").html(),t.push(a)}),e.magnificPopup({mainClass:"fts-facebook-popup fts-instagram-styles-popup",items:t,removalDelay:150,preloader:!1,closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!1,enableEscapeKey:!0,autoFocusLast:!1,gallery:{enabled:!0,navigateByImgClick:!1,tCounter:'<span class="mfp-counter">%curr% of %total%</span>',preload:[0,1],arrowMarkup:""},callbacks:{beforeOpen:function(){var t=e.index(this.st.el);-1!==t&&this.goTo(t)},open:function(){console.log("Popup is opened"),jQuery.fn.ftsShare(),jQuery(window).resize(function(){jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())}),jQuery(window).trigger("resize")},change:function(){console.log("Content changed"),console.log(this.content),jQuery.fn.ftsShare(),jQuery("body").hasClass("fts-using-arrows")},imageLoadComplete:function(){jQuery(".fts-instagram-popup-second-half .fts-carousel-image").length?(jQuery(".fts-instagram-styles-popup .fts-carousel-image").remove(),jQuery(".fts-instagram-popup-half").prepend("<div class='fts-carousel-image'></div>")):jQuery(".fts-instagram-styles-popup .fts-carousel-image").remove(),jQuery.fn.ftsShare(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())},beforeAppend:function(){jQuery(".fts-instagram-popup-half").prepend("<div class='fts-carousel-image'></div>"),jQuery(".fts-instagram-popup-second-half .fts-carousel-image").length&&alert("wtg")},markupParse:function(e,t,o){console.log("Parsing:",e,t,o)},afterClose:function(){jQuery("body").removeClass("fts-using-arrows"),console.log("Popup is completely closed")}},inline:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half fts-instagram-popup-half"> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <div class="mfp-iframe-scaler mfp-html5videolink" id="fts-html5videolink"> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button> </div> </div><div class="fts-popup-second-half fts-instagram-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>'},image:{markup:'><div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half fts-instagram-popup-half"> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <span class="fts-position-helper"></span><div class="mfp-img"></div> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button> </div><div class="fts-popup-second-half fts-instagram-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://feedthemsocial.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',tError:'<a href="%url%">The image #%curr%</a> could not be loaded.'},iframe:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half fts-instagram-popup-half"> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" frameborder="0" allowfullscreen></iframe><video class="mfp-iframe fts-video-popup-element" allowfullscreen autoplay controls></video> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button><script>if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); } jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")});<\/script> </div> </div><div class="fts-popup-second-half fts-instagram-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://feedthemsocial.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',srcAction:"iframe_src"}})})},jQuery.fn.slickInstagramPopUpFunction(),jQuery.fn.slickYoutubePopUpFunction=function(){jQuery(".fts-youtube-popup-gallery").each(function(){var e=jQuery(this).find("a.fts-yt-popup-open"),t=[];e.each(function(){var e=jQuery(this);type="iframe";var o={src:e.attr("href"),type:type};o.title=jQuery(this).parents(".slicker-youtube-placeholder").find(".youtube-social-btn-top").html()||jQuery(this).parents(".slicker-youtube-placeholder").find(".entriestitle").html(),t.push(o)}),e.magnificPopup({mainClass:"fts-facebook-popup fts-facebook-styles-popup fts-youtube-popup",items:t,removalDelay:150,preloader:!1,closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!1,enableEscapeKey:!0,autoFocusLast:!1,gallery:{enabled:!0,navigateByImgClick:!1,tCounter:'<span class="mfp-counter">%curr% of %total%</span>',preload:[0,1],arrowMarkup:""},callbacks:{beforeOpen:function(){var t=e.index(this.st.el);-1!==t&&this.goTo(t)},open:function(){console.log("Popup is opened"),jQuery.fn.ftsShare(),jQuery(window).resize(function(){jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())}),jQuery(window).trigger("resize")},change:function(){console.log("Content changed"),console.log(this.content),jQuery.fn.ftsShare(),jQuery("body").hasClass("fts-using-arrows")},imageLoadComplete:function(){jQuery.fn.ftsShare(),jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").height()<jQuery(".mfp-img").height()?jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".mfp-img").height()):jQuery(".fts-popup-second-half .mfp-bottom-bar").css("height",jQuery(".fts-popup-image-position").height())},markupParse:function(e,t,o){console.log("Parsing:",e,t,o)},afterClose:function(){jQuery("body").removeClass("fts-using-arrows"),console.log("Popup is completely closed")}},iframe:{markup:'<div class="mfp-figure"><div class="mfp-close">X</div><div class="fts-popup-wrap"> <div class="fts-popup-half "> <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button> <div class="fts-popup-image-position"> <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" frameborder="0" allowfullscreen></iframe><video class="mfp-iframe fts-video-popup-element" allowfullscreen autoplay controls></video> </div> <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button><script>if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); } jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")}); <\/script> </div> </div><div class="fts-popup-second-half"><div class="mfp-bottom-bar"><div class="mfp-title"></div><a class="fts-powered-by-text" href="https://slickremix.com" target="_blank">Powered by Feed Them Social</a><div class="mfp-counter"></div></div></div></div></div>',srcAction:"iframe_src"}})})},jQuery.fn.slickYoutubePopUpFunction()});
includes/feed-them-functions.php CHANGED
@@ -1089,6 +1089,8 @@ class feed_them_social_functions {
1089
  'fb_events_title_size',
1090
  'fb_events_map_link_color',
1091
  'fb_hide_shared_by_etc_text',
 
 
1092
  'fts_facebook_custom_api_token_biz',
1093
  'fb_reviews_text_color',
1094
  'fb_reviews_backg_color',
1089
  'fb_events_title_size',
1090
  'fb_events_map_link_color',
1091
  'fb_hide_shared_by_etc_text',
1092
+ 'fb_title_htag',
1093
+ 'fb_title_htag_size',
1094
  'fts_facebook_custom_api_token_biz',
1095
  'fb_reviews_text_color',
1096
  'fb_reviews_backg_color',
includes/trim-words.php CHANGED
@@ -94,7 +94,7 @@ class FeedThemSocialTruncateHTML {
94
  }
95
 
96
  private static function insertEllipsis(DOMNode $domNode, $ellipsis) {
97
- $avoid = array('a', 'strong', 'em', 'h1', 'h2', 'h3', 'h4', 'h5'); //html tags to avoid appending the ellipsis to
98
 
99
  if( in_array($domNode->parentNode->nodeName, $avoid) && $domNode->parentNode->parentNode !== NULL) {
100
  // Append as text node to parent instead
94
  }
95
 
96
  private static function insertEllipsis(DOMNode $domNode, $ellipsis) {
97
+ $avoid = array('a', 'strong', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'); //html tags to avoid appending the ellipsis to
98
 
99
  if( in_array($domNode->parentNode->nodeName, $avoid) && $domNode->parentNode->parentNode !== NULL) {
100
  // Append as text node to parent instead
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: slickremix, slickchris
3
  Tags: Facebook, Instagram, Twitter, YouTube, Feed
4
  Requires at least: 3.6.0
5
  Tested up to: 5.4.2
6
- Stable tag: 2.8.5
7
  License: GPLv2 or later
8
 
9
  Display a Custom Facebook feed, Instagram feed, Twitter feed, Pinterest feed & YouTube feed on pages, posts or widgets.
@@ -75,6 +75,16 @@ Feed Them Social was Developed By SlickRemix --> [https://www.slickremix.com/](h
75
  * Log into WordPress dashboard then click **Plugins** > **Add new** > Then under the title "Install Plugins" click **Upload** > **choose the zip** > **Activate the plugin!**
76
 
77
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
78
  = Version 2.8.5 Friday, June 26th, 2020 =
79
  * NEW: Works with WordPress 5.4.2
80
  * FTS BAR EXTENSION NEW: Instagram: Now includes, Basic, Business and Hashtag Feed options.
3
  Tags: Facebook, Instagram, Twitter, YouTube, Feed
4
  Requires at least: 3.6.0
5
  Tested up to: 5.4.2
6
+ Stable tag: 2.8.6
7
  License: GPLv2 or later
8
 
9
  Display a Custom Facebook feed, Instagram feed, Twitter feed, Pinterest feed & YouTube feed on pages, posts or widgets.
75
  * Log into WordPress dashboard then click **Plugins** > **Add new** > Then under the title "Install Plugins" click **Upload** > **choose the zip** > **Activate the plugin!**
76
 
77
  == Changelog ==
78
+ = Version 2.8.6 Thursday, July 23rd, 2020 =
79
+ * NEW: Facebook Feed: All target="_blank" a tag elements now have rel="noreferrer" for better SEO results.
80
+ * NEW: Facebook Options: Option to change the main page title htag (h1-h6) and font size.
81
+ * REMOVE: G+ from the share options since the Google Plus social network has been shutdown.
82
+ * REMOVE: Facebook Albums Feed: Date the Album was created.
83
+ * PREMIUM NEW: Facebook Albums: Now you can see 25 photos per album using the popup option. On the 25th photo a link will appear to see the rest of the Album on Facebook.
84
+ * PREMIUM FIX: Facebook Photo & Album Feed: The popup description was missing link and tag conversions to clickable links.
85
+ * PREMIUM FIX: Add h6 in the list of tags to avoid appending the ellipsis. This works when using the words=45 shortcode option.
86
+ * FACEBOOK REVIEWS FIX: If no profile photo set on Facebook use our default fts icon so the profile image does not appear broken.
87
+
88
  = Version 2.8.5 Friday, June 26th, 2020 =
89
  * NEW: Works with WordPress 5.4.2
90
  * FTS BAR EXTENSION NEW: Instagram: Now includes, Basic, Business and Hashtag Feed options.