Custom Facebook Feed - Version 2.7.1

Version Description

  • Tweak: Made some adjustments to the Access Token login process
Download this release

Release Info

Developer smashballoon
Plugin Icon 128x128 Custom Facebook Feed
Version 2.7.1
Comparing to
See all releases

Code changes from version 2.7 to 2.7.1

README.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: smashballoon
3
  Tags: Facebook, Facebook feed, Facebook posts, Facebook wall, Facebook page
4
  Requires at least: 3.0
5
  Tested up to: 4.9
6
- Stable tag: 2.7
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -265,6 +265,9 @@ You no longer need your own Access Token to use the Custom Facebook Feed Plugin,
265
 
266
  == Changelog ==
267
 
 
 
 
268
  = 2.7 =
269
  * New: Now easily get your own Access Token to avoid any Facebook connection issues. Simply click the blue "Log in and get my Access Token" button on the plugin's settings page and connect your Facebook account to get your token. The Access Token will work to get posts from ANY Facebook page. Thanks to our friends at SlickRemix for powering our new login and getting the plugin back up and running again!
270
  * Tweak: Removed the minimum caching time if you're using your own Page Access Token
3
  Tags: Facebook, Facebook feed, Facebook posts, Facebook wall, Facebook page
4
  Requires at least: 3.0
5
  Tested up to: 4.9
6
+ Stable tag: 2.7.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
265
 
266
  == Changelog ==
267
 
268
+ = 2.7.1 =
269
+ * Tweak: Made some adjustments to the Access Token login process
270
+
271
  = 2.7 =
272
  * New: Now easily get your own Access Token to avoid any Facebook connection issues. Simply click the blue "Log in and get my Access Token" button on the plugin's settings page and connect your Facebook account to get your token. The Access Token will work to get posts from ANY Facebook page. Thanks to our friends at SlickRemix for powering our new login and getting the plugin back up and running again!
273
  * Tweak: Removed the minimum caching time if you're using your own Page Access Token
css/cff-admin-style.css CHANGED
@@ -801,7 +801,7 @@
801
 
802
  /* FB login button */
803
  #cff-admin .cff_admin_btn,
804
- #cff-admin #cff_admin_cancel_btn{
805
  display: inline-block;
806
  clear: both;
807
  padding: 0 21px 0 20px;
@@ -822,7 +822,7 @@
822
  transition: all 0.5s ease-in-out;
823
  }
824
  #cff-admin .cff_admin_btn:hover,
825
- #cff-admin #cff_admin_cancel_btn:hover{
826
  background-color: #3880c4;
827
  color: #fff;
828
 
@@ -906,12 +906,12 @@
906
  #cff-admin .cff_modal_box .cff_admin_btn{
907
  margin-top: 10px;
908
  }
909
- #cff-admin #cff_admin_cancel_btn{
910
  margin-right: 5px;
911
  background: #ddd;
912
  color: #555;
913
  }
914
- #cff-admin #cff_admin_cancel_btn:hover{
915
  background: #ccc;
916
  color: #333;
917
  }
@@ -935,4 +935,42 @@
935
  #cff-admin .cff_modal_box p{
936
  font-size: 14px;
937
  line-height: 1.6;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
938
  }
801
 
802
  /* FB login button */
803
  #cff-admin .cff_admin_btn,
804
+ #cff-admin .cff-admin-cancel-btn{
805
  display: inline-block;
806
  clear: both;
807
  padding: 0 21px 0 20px;
822
  transition: all 0.5s ease-in-out;
823
  }
824
  #cff-admin .cff_admin_btn:hover,
825
+ #cff-admin .cff-admin-cancel-btn:hover{
826
  background-color: #3880c4;
827
  color: #fff;
828
 
906
  #cff-admin .cff_modal_box .cff_admin_btn{
907
  margin-top: 10px;
908
  }
909
+ #cff-admin .cff-admin-cancel-btn{
910
  margin-right: 5px;
911
  background: #ddd;
912
  color: #555;
913
  }
914
+ #cff-admin .cff-admin-cancel-btn:hover{
915
  background: #ccc;
916
  color: #333;
917
  }
935
  #cff-admin .cff_modal_box p{
936
  font-size: 14px;
937
  line-height: 1.6;
938
+ }
939
+
940
+ /* Choose token */
941
+ #cff-admin #cff-own, #cff-admin #cff-public{
942
+ display: none;
943
+ }
944
+ #cff-admin .cff-token-radios{
945
+ width: 265px;
946
+ text-align: left;
947
+ margin-left: 110px;
948
+ }
949
+ #cff-admin .cff-token-radios input{
950
+ position: relative;
951
+ top: 2px;
952
+ }
953
+ #cff-admin .cff_modal_box .cff-disabled{
954
+ background: #EEE;
955
+ color: #aaa;
956
+ cursor: default;
957
+ }
958
+ #cff-admin .cff-token-question-own,
959
+ #cff-admin .cff-token-question-public{
960
+ position: relative;
961
+ top: 2px;
962
+ left: 3px;
963
+ font-size: 15px;
964
+ opacity: 0.8;
965
+ margin: 0;
966
+ }
967
+ #cff-admin .cff-token-question-own:hover,
968
+ #cff-admin .cff-token-question-public:hover{
969
+ opacity: 1;
970
+ color: #005e8c;
971
+ }
972
+ #cff-admin #cff-token-intro .cff-tooltip{
973
+ font-size: 13px;
974
+ background: #f0f0f0;
975
+ padding: 10px 15px;
976
  }
css/cff-style.css CHANGED
@@ -117,9 +117,12 @@
117
  #cff .cff-author-img{
118
  float: left;
119
  width: 40px;
 
120
  margin: 0 0 0 -100% !important;
121
  font-size: 0;
122
  background: #eee;
 
 
123
  }
124
  #cff .cff-author img{
125
  float: left;
@@ -127,7 +130,6 @@
127
  padding: 0 !important;
128
  border: none !important;
129
  font-size: 0;
130
- background: #eee;
131
  }
132
  #cff .cff-author .cff-author-text span.cff-page-name{
133
  display: table-cell;
117
  #cff .cff-author-img{
118
  float: left;
119
  width: 40px;
120
+ height: 40px;
121
  margin: 0 0 0 -100% !important;
122
  font-size: 0;
123
  background: #eee;
124
+
125
+ background: url('../img/cff-avatar.png') no-repeat;
126
  }
127
  #cff .cff-author img{
128
  float: left;
130
  padding: 0 !important;
131
  border: none !important;
132
  font-size: 0;
 
133
  }
134
  #cff .cff-author .cff-author-text span.cff-page-name{
135
  display: table-cell;
css/cff-style.min.css CHANGED
@@ -1 +1 @@
1
- .cff-wrapper:after{content:"";display:table;clear:both}#cff{float:left;width:100%;margin:0 auto;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cff .cff-item{float:left;width:100%;clear:both;padding:20px 0 15px;margin:0;border-bottom:1px solid #ddd}#cff .cff-item:first-child{padding-top:0}#cff .cff-item.cff-box,#cff .cff-item.cff-box:first-child{padding:15px;margin:5px 0;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cff-header{width:100%;margin:0 0 15px;padding:0;line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cff .cff-share-tooltip,#cff .cff-shared-link{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.cff-header .fa,.cff-header svg{margin:0 10px 0 0;padding:0}#cff .cff-less{display:none}#cff.cff-default-styles a{text-decoration:none}#cff.cff-default-styles a:focus,#cff.cff-default-styles a:hover{text-decoration:underline}#cff .cff-author a,#cff.cff-default-styles .cff-author a,#cff.cff-default-styles .cff-credit a{text-decoration:none}#cff .cff-post-text-link{display:block}#cff .cff-post-desc,#cff h3,#cff h4,#cff h5,#cff h6,#cff p{float:left;width:100%;clear:both;padding:0;margin:5px 0;white-space:pre;white-space:pre-wrap;white-space:pre-line;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:-moz-pre-wrap;white-space:-hp-pre-wrap;word-wrap:break-word}#cff.cff-default-styles .cff-post-desc,#cff.cff-default-styles h3,#cff.cff-default-styles h4,#cff.cff-default-styles h5,#cff.cff-default-styles h6,#cff.cff-default-styles p{line-height:1.4}#cff .cff-date{float:left;min-width:50px;width:auto}#cff.cff-default-styles .cff-date{font-size:11px}#cff .cff-author{float:left;clear:both;margin:0 0 15px;padding:0;line-height:1.2;width:100%}#cff .cff-author a{border:none}#cff .cff-author-img{float:left;width:40px;margin:0 0 0 -100%!important;font-size:0;background:#eee}#cff .cff-author img{float:left;margin:0!important;padding:0!important;border:none!important;font-size:0;background:#eee}#cff .cff-author .cff-author-text span.cff-page-name{display:table-cell;vertical-align:middle;height:40px;margin:0;font-weight:700;padding-left:50px;float:none}#cff .cff-author .cff-story{font-weight:400}#cff.cff-default-styles .cff-author .cff-author-text span{font-weight:1.2}#cff .cff-author.cff-no-author-info .cff-date{margin-top:14px!important}#cff .cff-author.cff-no-author-info .cff-author-img{width:40px;height:40px;background:url(../img/cff-avatar.png) no-repeat}#cff .cff-author .cff-author-text{float:left;width:100%}#cff .cff-author .cff-date,#cff .cff-author .cff-page-name{float:left;clear:both;width:auto;margin:0 0 0 50px!important}#cff.cff-default-styles .cff-author .cff-author-text *{font-weight:700;line-height:1.2}#cff .cff-author .cff-date{color:#9197a3;font-size:11px;margin-top:0!important;margin-bottom:0!important}#cff.cff-default-styles .cff-author .cff-date{font-weight:400}#cff .cff-author .cff-page-name.cff-author-date{float:left;padding:2px 0 0;font-size:14px}#cff .cff-break-word{word-break:break-all}#cff .cff-expand{display:none}#cff.cff-default-styles .cff-expand a{font-size:11px;font-weight:400}#cff .cff-shared-link{float:left;clear:both;width:100%;padding:5px 10px;margin:10px 0 5px;border:1px solid #d9d9d9;background:rgba(0,0,0,.02);border:1px solid rgba(0,0,0,.07);box-sizing:border-box}#cff .cff-no-styles{background:0 0;border:none;padding:0}#cff .cff-link{float:left;clear:both;max-width:20%;margin:10px 0 0}#cff .cff-link img{max-width:100%}#cff .cff-link-title{float:left;clear:both;width:100%;display:block}#cff.cff-default-styles .cff-link-title{font-weight:700}#cff p.cff-link-title{margin:5px 0 0}#cff .cff-text-link{float:left;clear:none;width:72%;margin-left:3%;padding:0 0 5px}#cff .cff-link-caption{margin:0}#cff.cff-default-styles .cff-link-caption{font-size:12px}#cff .cff-text-link.cff-no-image{width:100%;margin-left:0}#cff .cff-post-desc{margin:5px 0 0}#cff .cff-details{float:left;clear:none;width:100%;margin:0;padding:0}#cff .cff-details h5{margin:0 0 5px}#cff.cff-default-styles .cff-details h5{padding:0;font-size:16px}#cff.cff-default-styles .cff-details p{font-size:14px}#cff.cff-default-styles .cff-post-links,#cff.cff-default-styles .cff-post-links a{font-size:11px}#cff .cff-timeline-event .cff-date,#cff .cff-timeline-event .cff-info,#cff .cff-timeline-event .cff-timeline-event-title,#cff .cff-timeline-event .cff-where{display:block;width:100%;clear:both}#cff .cff-details .cff-info{padding:10px 0 0}#cff.cff-default-styles .cff-details .cff-info{line-height:1.2}#cff .cff-desc-wrap{float:left;width:100%}#cff .cff-post-links{float:left;clear:none;padding:5px 0 0;margin:0}#cff .cff-post-links.cff-left{float:left;margin:8px 0}#cff .cff-post-links a:first-child{padding-left:0;margin:0}#cff .cff-dot{padding:0 5px}#cff .cff-share-container{position:relative;display:inline}#cff .cff-share-tooltip{display:none;position:absolute;z-index:1000;bottom:22px;right:-54px;width:140px;padding:5px 5px 4px;margin:0;background:#333;color:#eee;font-size:12px;line-height:1.3;box-sizing:border-box}#cff .cff-share-tooltip .fa-play{position:absolute;font-size:8px;bottom:-6px;left:50%;margin-left:-3px;color:#333}#cff .cff-share-tooltip a .fa,#cff .cff-share-tooltip a svg{font-size:16px;margin:0;padding:5px}#cff .cff-share-tooltip a{display:block;float:left;margin:0!important;padding:0!important;color:#eee!important;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#cff .cff-share-tooltip a:hover{color:#fff}#cff .cff-share-tooltip .cff-facebook-icon:hover{background:#3b5998}#cff .cff-share-tooltip .cff-twitter-icon:hover{background:#00aced}#cff .cff-share-tooltip .cff-google-icon:hover{background:#dd4b39}#cff .cff-share-tooltip .cff-linkedin-icon:hover{background:#007bb6}#cff .cff-share-tooltip .cff-pinterest-icon:hover{background:#cb2027}#cff .cff-share-tooltip .cff-email-icon:hover{background:#666}.cff-likebox{float:left;width:100%;position:relative;margin:20px 0 0}.cff-likebox .fb_iframe_widget{width:100%}.cff-likebox .fb_iframe_widget span,.cff-likebox iframe{width:100%!important}.cff-likebox iframe{margin:0;position:relative;top:0;left:0;height:100%}.cff-likebox.cff-top.cff-outside{margin-bottom:10px}.cff-likebox.cff-bottom.cff-outside{margin-top:10px}#cff.cff-fixed-height{overflow:hidden;overflow-y:auto;padding:5px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cff .cff-error-msg{display:none;font-size:12px;font-family:sans-serif}#cff #cff-error-reason{display:none;padding:5px 0 0;clear:both}#cff.cff-default-styles .cff-credit{font-size:11px}#cff .cff-credit img{float:left;margin:-2px 5px 0 0}#cff .cff-credit .fa{padding-right:5px;font-size:13px}@media all and (max-width:640px){#cff.cff-width-resp{width:100%!important}}#cff .cff-comment .cff-comment-text img,#cff img.emoji,#cff-lightbox-wrapper .cff-comment .cff-comment-text img,#cff-lightbox-wrapper img.emoji{float:none;max-width:100%}#cff .cff-linebreak{display:block;height:5px}
1
+ .cff-wrapper:after{content:"";display:table;clear:both}#cff{float:left;width:100%;margin:0 auto;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cff .cff-item{float:left;width:100%;clear:both;padding:20px 0 15px;margin:0;border-bottom:1px solid #ddd}#cff .cff-item:first-child{padding-top:0}#cff .cff-item.cff-box,#cff .cff-item.cff-box:first-child{padding:15px;margin:5px 0;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cff-header{width:100%;margin:0 0 15px;padding:0;line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cff .cff-share-tooltip,#cff .cff-shared-link{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.cff-header .fa,.cff-header svg{margin:0 10px 0 0;padding:0}#cff .cff-less{display:none}#cff.cff-default-styles a{text-decoration:none}#cff.cff-default-styles a:focus,#cff.cff-default-styles a:hover{text-decoration:underline}#cff .cff-author a,#cff.cff-default-styles .cff-author a,#cff.cff-default-styles .cff-credit a{text-decoration:none}#cff .cff-post-text-link{display:block}#cff .cff-post-desc,#cff h3,#cff h4,#cff h5,#cff h6,#cff p{float:left;width:100%;clear:both;padding:0;margin:5px 0;white-space:pre;white-space:pre-wrap;white-space:pre-line;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:-moz-pre-wrap;white-space:-hp-pre-wrap;word-wrap:break-word}#cff.cff-default-styles .cff-post-desc,#cff.cff-default-styles h3,#cff.cff-default-styles h4,#cff.cff-default-styles h5,#cff.cff-default-styles h6,#cff.cff-default-styles p{line-height:1.4}#cff .cff-date{float:left;min-width:50px;width:auto}#cff.cff-default-styles .cff-date{font-size:11px}#cff .cff-author{float:left;clear:both;margin:0 0 15px;padding:0;line-height:1.2;width:100%}#cff .cff-author-img,#cff .cff-author.cff-no-author-info .cff-author-img{width:40px;height:40px;background:url(../img/cff-avatar.png) no-repeat}#cff .cff-author a{border:none}#cff .cff-author-img{float:left;margin:0 0 0 -100%!important;font-size:0}#cff .cff-author img{float:left;margin:0!important;padding:0!important;border:none!important;font-size:0}#cff .cff-author .cff-author-text span.cff-page-name{display:table-cell;vertical-align:middle;height:40px;margin:0;font-weight:700;padding-left:50px;float:none}#cff .cff-author .cff-story{font-weight:400}#cff.cff-default-styles .cff-author .cff-author-text span{font-weight:1.2}#cff .cff-author.cff-no-author-info .cff-date{margin-top:14px!important}#cff .cff-author .cff-author-text{float:left;width:100%}#cff .cff-author .cff-date,#cff .cff-author .cff-page-name{float:left;clear:both;width:auto;margin:0 0 0 50px!important}#cff.cff-default-styles .cff-author .cff-author-text *{font-weight:700;line-height:1.2}#cff .cff-author .cff-date{color:#9197a3;font-size:11px;margin-top:0!important;margin-bottom:0!important}#cff.cff-default-styles .cff-author .cff-date{font-weight:400}#cff .cff-author .cff-page-name.cff-author-date{float:left;padding:2px 0 0;font-size:14px}#cff .cff-break-word{word-break:break-all}#cff .cff-expand{display:none}#cff.cff-default-styles .cff-expand a{font-size:11px;font-weight:400}#cff .cff-shared-link{float:left;clear:both;width:100%;padding:5px 10px;margin:10px 0 5px;border:1px solid #d9d9d9;background:rgba(0,0,0,.02);border:1px solid rgba(0,0,0,.07);box-sizing:border-box}#cff .cff-no-styles{background:0 0;border:none;padding:0}#cff .cff-link{float:left;clear:both;max-width:20%;margin:10px 0 0}#cff .cff-link img{max-width:100%}#cff .cff-link-title{float:left;clear:both;width:100%;display:block}#cff.cff-default-styles .cff-link-title{font-weight:700}#cff p.cff-link-title{margin:5px 0 0}#cff .cff-text-link{float:left;clear:none;width:72%;margin-left:3%;padding:0 0 5px}#cff .cff-link-caption{margin:0}#cff.cff-default-styles .cff-link-caption{font-size:12px}#cff .cff-text-link.cff-no-image{width:100%;margin-left:0}#cff .cff-post-desc{margin:5px 0 0}#cff .cff-details{float:left;clear:none;width:100%;margin:0;padding:0}#cff .cff-details h5{margin:0 0 5px}#cff.cff-default-styles .cff-details h5{padding:0;font-size:16px}#cff.cff-default-styles .cff-details p{font-size:14px}#cff.cff-default-styles .cff-post-links,#cff.cff-default-styles .cff-post-links a{font-size:11px}#cff .cff-timeline-event .cff-date,#cff .cff-timeline-event .cff-info,#cff .cff-timeline-event .cff-timeline-event-title,#cff .cff-timeline-event .cff-where{display:block;width:100%;clear:both}#cff .cff-details .cff-info{padding:10px 0 0}#cff.cff-default-styles .cff-details .cff-info{line-height:1.2}#cff .cff-desc-wrap{float:left;width:100%}#cff .cff-post-links{float:left;clear:none;padding:5px 0 0;margin:0}#cff .cff-post-links.cff-left{float:left;margin:8px 0}#cff .cff-post-links a:first-child{padding-left:0;margin:0}#cff .cff-dot{padding:0 5px}#cff .cff-share-container{position:relative;display:inline}#cff .cff-share-tooltip{display:none;position:absolute;z-index:1000;bottom:22px;right:-54px;width:140px;padding:5px 5px 4px;margin:0;background:#333;color:#eee;font-size:12px;line-height:1.3;box-sizing:border-box}#cff .cff-share-tooltip .fa-play{position:absolute;font-size:8px;bottom:-6px;left:50%;margin-left:-3px;color:#333}#cff .cff-share-tooltip a .fa,#cff .cff-share-tooltip a svg{font-size:16px;margin:0;padding:5px}#cff .cff-share-tooltip a{display:block;float:left;margin:0!important;padding:0!important;color:#eee!important;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#cff .cff-share-tooltip a:hover{color:#fff}#cff .cff-share-tooltip .cff-facebook-icon:hover{background:#3b5998}#cff .cff-share-tooltip .cff-twitter-icon:hover{background:#00aced}#cff .cff-share-tooltip .cff-google-icon:hover{background:#dd4b39}#cff .cff-share-tooltip .cff-linkedin-icon:hover{background:#007bb6}#cff .cff-share-tooltip .cff-pinterest-icon:hover{background:#cb2027}#cff .cff-share-tooltip .cff-email-icon:hover{background:#666}.cff-likebox{float:left;width:100%;position:relative;margin:20px 0 0}.cff-likebox .fb_iframe_widget{width:100%}.cff-likebox .fb_iframe_widget span{width:100%!important}.cff-likebox .fb_iframe_widget iframe{margin:0;position:relative;top:0;left:0;width:100%!important;height:100%}.cff-likebox.cff-top.cff-outside{margin-bottom:10px}.cff-likebox.cff-bottom.cff-outside{margin-top:10px}#cff.cff-fixed-height{overflow:hidden;overflow-y:auto;padding:5px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cff .cff-error-msg{display:none;font-size:12px;font-family:sans-serif}#cff #cff-error-reason{display:none;padding:5px 0 0;clear:both}#cff.cff-default-styles .cff-credit{font-size:11px}#cff .cff-credit img{float:left;margin:-2px 5px 0 0}#cff .cff-credit .fa{padding-right:5px;font-size:13px}@media all and (max-width:640px){#cff.cff-width-resp{width:100%!important}}#cff .cff-comment .cff-comment-text img,#cff img.emoji,#cff-lightbox-wrapper .cff-comment .cff-comment-text img,#cff-lightbox-wrapper img.emoji{float:none;max-width:100%}#cff .cff-linebreak{display:block;height:5px}
custom-facebook-feed-admin.php CHANGED
@@ -47,7 +47,7 @@ function cff_settings_page() {
47
  $cff_cache_time_unit = 'cff_cache_time_unit';
48
  $cff_locale = 'cff_locale';
49
  // Read in existing option value from database
50
- $show_access_token_val = get_option( $show_access_token );
51
  $access_token_val = get_option( $access_token );
52
  $page_id_val = get_option( $page_id );
53
  $cff_page_type_val = get_option( $cff_page_type, 'page' );
@@ -73,7 +73,7 @@ function cff_settings_page() {
73
  // See if the user has posted us some information. If they did, this hidden field will be set to 'Y'.
74
  if( isset($_POST[ $hidden_field_name ]) && $_POST[ $hidden_field_name ] == 'Y' ) {
75
  // Read their posted value
76
- isset( $_POST[ $show_access_token ] ) ? $show_access_token_val = sanitize_text_field( $_POST[ $show_access_token ] ) : $show_access_token_val = '';
77
  isset( $_POST[ $access_token ] ) ? $access_token_val = sanitize_text_field( $_POST[ $access_token ] ) : $access_token_val = '';
78
  isset( $_POST[ $page_id ] ) ? $page_id_val = sanitize_text_field( $_POST[ $page_id ] ) : $page_id_val = '';
79
  isset( $_POST[ $cff_page_type ] ) ? $cff_page_type_val = sanitize_text_field( $_POST[ $cff_page_type ] ) : $cff_page_type_val = '';
@@ -86,7 +86,7 @@ function cff_settings_page() {
86
  if (isset($_POST[ 'cff_timezone' ]) ) $cff_timezone = sanitize_text_field( $_POST[ 'cff_timezone' ] );
87
 
88
  // Save the posted value in the database
89
- update_option( $show_access_token, $show_access_token_val );
90
  update_option( $access_token, $access_token_val );
91
  update_option( $page_id, $page_id_val );
92
  update_option( $cff_page_type, $cff_page_type_val );
@@ -135,13 +135,65 @@ function cff_settings_page() {
135
 
136
  <div id="cff_fb_login_modal">
137
  <div class="cff_modal_box">
138
- <p>We're teaming up with our good friends at <span class="cff_srlogo">SlickRemix</b> <img src="<?php echo plugins_url( 'img/slick-remix.png' , __FILE__ ) ?>"></span> to provide you with an easy way to connect to Facebook. Simply log into your Facebook account using the button below and approve the plugin to connect your account.</p>
139
 
140
- <p><a href="javascript:void(0);" id="cff_admin_cancel_btn">Cancel</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
 
142
- <a href="https://www.facebook.com/dialog/oauth?scope=manage_pages&client_id=1123168491105924&redirect_uri=https://www.slickremix.com/facebook-token/&state=<?php echo admin_url('admin.php?page=cff-top'); ?>" class="cff_admin_btn"><i class="fa fa-facebook-square"></i> <?php _e( 'Continue', 'custom-facebook-feed' ); ?></a></p>
143
 
144
- <p style="font-size: 11px; margin-top: 25px;"><b>Please note:</b> this does not give us permission to manage your Facebook pages, it simply allows the plugin to see a list of the pages you manage and retrieve an Access Token.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  </div>
146
  </div>
147
 
@@ -176,7 +228,12 @@ function cff_settings_page() {
176
  <?php
177
  } else {
178
  //Show the pages they manage
179
- echo '<p style="background: #dceada; border: 1px solid #6ca365; padding: 15px 20px; border-radius: 5px;">Select one of the pages below to get an Access Token.<br /><b><u>Important:</u> This Access Token will allow you to display posts from <u>any</u> public Facebook page, not just the one selected.</b></p>';
 
 
 
 
 
180
 
181
  foreach ( $pages_data_arr->data as $page => $page_data ) {
182
  echo '<div class="cff-managed-page ';
@@ -220,26 +277,11 @@ function cff_settings_page() {
220
  </td>
221
  </tr>
222
 
223
- <!-- <tr valign="top">
224
- <th scope="row" style="padding-bottom: 10px;"><?php _e('Enter my own Access Token', 'custom-facebook-feed'); ?><br /><i style="font-weight: normal; font-size: 12px;"><?php _e('This is Recommended', 'custom-facebook-feed'); ?></i></th>
225
- <td>
226
- <input name="cff_show_access_token" type="checkbox" id="cff_show_access_token" <?php if($show_access_token_val == true) echo "checked"; ?> />&nbsp;<a class="cff-tooltip-link" href="JavaScript:void(0);"><?php _e("What is this?", 'custom-facebook-feed'); ?></a>
227
- <p class="cff-tooltip cff-more-info"><?php _e("A Facebook Access Token is not required to use this plugin, but we recommend it so that you're not reliant on the token built into the plugin. If you have your own token then you can check this box and enter it here. To get your own Access Token you can follow these <a href='https://smashballoon.com/custom-facebook-feed/access-token/' target='_blank'>step-by-step instructions</a>", 'custom-facebook-feed'); ?>.</p>
228
- </td>
229
- </tr> -->
230
-
231
  <tr valign="top">
232
- <th scope="row" style="padding-bottom: 10px;"><?php _e('Enter my Access Token', 'custom-facebook-feed'); ?><br /><i style="font-weight: normal; font-size: 12px; color: red;"><?php _e('Required', 'custom-facebook-feed'); ?></i></th>
233
  <td>
234
- <input name="cff_show_access_token" type="checkbox" id="cff_show_access_token" <?php if($show_access_token_val == true) echo "checked"; ?> />&nbsp;<a class="cff-tooltip-link" href="JavaScript:void(0);"><?php _e("What is this?", 'custom-facebook-feed'); ?></a>
235
  <p class="cff-tooltip cff-more-info"><?php _e("In order to connect to Facebook and get a feed, you need to use an Access Token. To get one, simply use the blue button above to log into your Facebook account. You will then receive a token that will be used to connect to Facebook's API. If you already have an Access Token then you can enter it here.", 'custom-facebook-feed'); ?></p>
236
- </td>
237
- </tr>
238
-
239
- <tr valign="top" class="cff-access-token-hidden">
240
- <th scope="row" style="padding-bottom: 10px;"><?php _e('Facebook Access Token', 'custom-facebook-feed'); ?></th>
241
- <td>
242
- <textarea name="cff_access_token" id="cff_access_token" style="min-width: 60%;"><?php esc_attr_e( $access_token_val ); ?></textarea>
243
 
244
  <div class="cff-notice cff-profile-error cff-access-token">
245
  <?php _e("<p>This doesn't appear to be an Access Token. Please be sure that you didn't enter your App Secret instead of your Access Token.<br />Your App ID and App Secret are used to obtain your Access Token; simply paste them into the fields in the last step of the <a href='https://smashballoon.com/custom-facebook-feed/access-token/' target='_blank'>Access Token instructions</a> and click '<b>Get my Access Token</b>'.</p>", 'custom-facebook-feed'); ?>
@@ -654,7 +696,6 @@ foreach ( $plugins as $plugin_path => $plugin ) {
654
  ?>
655
 
656
  ## PLUGIN SETTINGS: ##
657
- Use own Access Token: <?php echo get_option( 'cff_show_access_token' ) ."\n"; ?>
658
  Access Token: <?php echo get_option( 'cff_access_token' ) ."\n"; ?>
659
  Page ID: <?php echo get_option( 'cff_page_id' ) ."\n"; ?>
660
  Page Type: <?php echo get_option( 'cff_page_type' ) ."\n"; ?>
47
  $cff_cache_time_unit = 'cff_cache_time_unit';
48
  $cff_locale = 'cff_locale';
49
  // Read in existing option value from database
50
+ $show_access_token_val = true;
51
  $access_token_val = get_option( $access_token );
52
  $page_id_val = get_option( $page_id );
53
  $cff_page_type_val = get_option( $cff_page_type, 'page' );
73
  // See if the user has posted us some information. If they did, this hidden field will be set to 'Y'.
74
  if( isset($_POST[ $hidden_field_name ]) && $_POST[ $hidden_field_name ] == 'Y' ) {
75
  // Read their posted value
76
+ isset( $_POST[ $show_access_token ] ) ? $show_access_token_val = true : $show_access_token_val = true;
77
  isset( $_POST[ $access_token ] ) ? $access_token_val = sanitize_text_field( $_POST[ $access_token ] ) : $access_token_val = '';
78
  isset( $_POST[ $page_id ] ) ? $page_id_val = sanitize_text_field( $_POST[ $page_id ] ) : $page_id_val = '';
79
  isset( $_POST[ $cff_page_type ] ) ? $cff_page_type_val = sanitize_text_field( $_POST[ $cff_page_type ] ) : $cff_page_type_val = '';
86
  if (isset($_POST[ 'cff_timezone' ]) ) $cff_timezone = sanitize_text_field( $_POST[ 'cff_timezone' ] );
87
 
88
  // Save the posted value in the database
89
+ update_option( $show_access_token, true );
90
  update_option( $access_token, $access_token_val );
91
  update_option( $page_id, $page_id_val );
92
  update_option( $cff_page_type, $cff_page_type_val );
135
 
136
  <div id="cff_fb_login_modal">
137
  <div class="cff_modal_box">
 
138
 
139
+ <div id="cff-token-intro">
140
+ <p>I am displaying a feed from a Facebook page that:</p>
141
+ <div class="cff-token-radios">
142
+ <div>
143
+ <input type="radio" id="cff-token-own" name="token-perm" value="own" />
144
+ <label for="cff-token-own">I am an admin of</label>&nbsp;<a href="javascript:void(0);" class="cff-tooltip-link cff-token-question-own"><i class="fa fa-info-circle" aria-hidden="true"></i></a>
145
+
146
+ <p class="cff-tooltip cff-more-info"><?php _e("Select this option if you are an admin of the Facebook page you want to display a feed from.", 'custom-facebook-feed'); ?></p>
147
+ </div>
148
+ <div>
149
+ <input type="radio" id="cff-token-public" name="token-perm" value="public" />
150
+ <label for="cff-token-public">I am <b>NOT</b> an admin of</label>&nbsp;<a href="javascript:void(0);" class="cff-tooltip-link cff-token-question-public"><i class="fa fa-info-circle" aria-hidden="true"></i></a>
151
+
152
+ <p class="cff-tooltip cff-more-info"><?php _e("Select this option if you need to display a feed from a Facebook page that you are not an admin of.", 'custom-facebook-feed'); ?></p>
153
+ </div>
154
+ </div>
155
+
156
+ <p>
157
+ <a href="javascript:void(0);" id="cff_admin_cancel_btn_2" class="cff-admin-cancel-btn">Cancel</a>
158
+ <a href="javascript:void(0);" class="cff_admin_btn cff-disabled" id="cff_token_perm_selected"><?php _e( 'Continue', 'custom-facebook-feed' ); ?></a>
159
+ </p>
160
+ </div>
161
+
162
+ <div id="cff-own">
163
+ <p>Log into your Facebook account using the button below and approve the plugin to connect your account.</p>
164
+
165
+ <p><a href="javascript:void(0);" id="cff_admin_cancel_btn_3" class="cff-admin-cancel-btn">Cancel</a>
166
+
167
+ <?php
168
+ $admin_url_state = admin_url('admin.php?page=cff-top');
169
+ //If the admin_url isn't returned correctly then use a fallback
170
+ if( $admin_url_state == '/wp-admin/admin.php?page=cff-top' || $admin_url_state == '/wp-admin/admin.php?page=cff-top&tab=configuration' ){
171
+ $admin_url_state = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
172
+ }
173
+ ?>
174
+ <a href="https://www.facebook.com/dialog/oauth?client_id=1332798716823516&redirect_uri=https://smashballoon.com/fb-1332798716823516-redirect/&scope=manage_pages&state=<?php echo $admin_url_state; ?>" class="cff_admin_btn"><i class="fa fa-facebook-square"></i> <?php _e( 'Continue', 'custom-facebook-feed' ); ?></a></p>
175
+
176
+ <p style="font-size: 11px; margin-top: 25px;"><b>Please note:</b> this does not give us permission to manage your Facebook pages, it simply allows the plugin to see a list of the pages you manage and retrieve an Access Token.</p>
177
+ </div>
178
+
179
+ <div id="cff-public">
180
+ <p>We're teaming up with our good friends at <span class="cff_srlogo">SlickRemix</b> <img src="<?php echo plugins_url( 'img/slick-remix.png' , __FILE__ ) ?>"></span> to provide you with an easy way to connect to Facebook. Simply log into your Facebook account using the button below and approve the plugin to connect your account.</p>
181
 
 
182
 
183
+ <p><a href="javascript:void(0);" id="cff_admin_cancel_btn" class="cff-admin-cancel-btn">Cancel</a>
184
+
185
+ <?php
186
+ $admin_url_state = admin_url('admin.php?page=cff-top');
187
+ //If the admin_url isn't returned correctly then use a fallback
188
+ if( $admin_url_state == '/wp-admin/admin.php?page=cff-top' || $admin_url_state == '/wp-admin/admin.php?page=cff-top&tab=configuration' ){
189
+ $admin_url_state = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
190
+ }
191
+ ?>
192
+ <a href="https://www.facebook.com/dialog/oauth?scope=manage_pages&client_id=1123168491105924&redirect_uri=https://www.slickremix.com/facebook-token/&state=<?php echo $admin_url_state; ?>" class="cff_admin_btn"><i class="fa fa-facebook-square"></i> <?php _e( 'Continue', 'custom-facebook-feed' ); ?></a></p>
193
+
194
+ <p style="font-size: 11px; margin-top: 25px;"><b>Please note:</b> this does not give us permission to manage your Facebook pages, it simply allows the plugin to see a list of the pages you manage and retrieve an Access Token.</p>
195
+ </div>
196
+
197
  </div>
198
  </div>
199
 
228
  <?php
229
  } else {
230
  //Show the pages they manage
231
+
232
+ if( isset($_GET['own']) ){
233
+ echo '<p style="background: #F7E6E6; border: 1px solid #BA7B7B; padding: 15px 20px; border-radius: 5px;">Select one of the pages below to get an Access Token for that page.<br /><b><u>Important:</u></b> This Access Token will only be able to display content from the <b>selected page</b>.</p>';
234
+ } else {
235
+ echo '<p style="background: #dceada; border: 1px solid #6ca365; padding: 15px 20px; border-radius: 5px;">Select one of the pages below to get an Access Token.<br /><b><u>Important:</u> This Access Token will allow you to display posts from <u>any</u> public Facebook page, not just the one selected.</b></p>';
236
+ }
237
 
238
  foreach ( $pages_data_arr->data as $page => $page_data ) {
239
  echo '<div class="cff-managed-page ';
277
  </td>
278
  </tr>
279
 
 
 
 
 
 
 
 
 
280
  <tr valign="top">
281
+ <th scope="row" style="padding-bottom: 10px;"><?php _e('Facebook Access Token', 'custom-facebook-feed'); ?><br /><i style="font-weight: normal; font-size: 12px; color: red;"><?php _e('Required', 'custom-facebook-feed'); ?></i></th>
282
  <td>
283
+ <textarea name="cff_access_token" id="cff_access_token" style="min-width: 60%;"><?php esc_attr_e( $access_token_val ); ?></textarea><br /><a class="cff-tooltip-link" style="margin-left: 3px;" href="JavaScript:void(0);"><?php _e("What is this?", 'custom-facebook-feed'); ?></a>
284
  <p class="cff-tooltip cff-more-info"><?php _e("In order to connect to Facebook and get a feed, you need to use an Access Token. To get one, simply use the blue button above to log into your Facebook account. You will then receive a token that will be used to connect to Facebook's API. If you already have an Access Token then you can enter it here.", 'custom-facebook-feed'); ?></p>
 
 
 
 
 
 
 
285
 
286
  <div class="cff-notice cff-profile-error cff-access-token">
287
  <?php _e("<p>This doesn't appear to be an Access Token. Please be sure that you didn't enter your App Secret instead of your Access Token.<br />Your App ID and App Secret are used to obtain your Access Token; simply paste them into the fields in the last step of the <a href='https://smashballoon.com/custom-facebook-feed/access-token/' target='_blank'>Access Token instructions</a> and click '<b>Get my Access Token</b>'.</p>", 'custom-facebook-feed'); ?>
696
  ?>
697
 
698
  ## PLUGIN SETTINGS: ##
 
699
  Access Token: <?php echo get_option( 'cff_access_token' ) ."\n"; ?>
700
  Page ID: <?php echo get_option( 'cff_page_id' ) ."\n"; ?>
701
  Page Type: <?php echo get_option( 'cff_page_type' ) ."\n"; ?>
custom-facebook-feed.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Custom Facebook Feed
4
  Plugin URI: http://smashballoon.com/custom-facebook-feed
5
  Description: Add completely customizable Facebook feeds to your WordPress site
6
- Version: 2.7
7
  Author: Smash Balloon
8
  Author URI: http://smashballoon.com/
9
  License: GPLv2 or later
@@ -24,7 +24,7 @@ along with this program; if not, write to the Free Software
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
 
27
- define('CFFVER', '2.7');
28
 
29
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
30
  //Include admin
@@ -1311,7 +1311,7 @@ function display_cff($atts) {
1311
  //Set the author image as a variable. If it already exists then don't query the api for it again.
1312
  $cff_author_img_var = '$cff_author_img_' . $cff_from_id;
1313
  if ( !isset($$cff_author_img_var) ) $$cff_author_img_var = 'https://graph.facebook.com/' . $cff_from_id . '/picture?type=square';
1314
- $cff_author .= '<div class="cff-author-img"><a '.$cff_author_link_atts.'><img src="'.$$cff_author_img_var.'" title="'.$cff_author_name.'" alt="'.$cff_author_name.'" width=40 height=40></a></div>';
1315
 
1316
  $cff_author .= '</div>'; //End .cff-author
1317
 
3
  Plugin Name: Custom Facebook Feed
4
  Plugin URI: http://smashballoon.com/custom-facebook-feed
5
  Description: Add completely customizable Facebook feeds to your WordPress site
6
+ Version: 2.7.1
7
  Author: Smash Balloon
8
  Author URI: http://smashballoon.com/
9
  License: GPLv2 or later
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
 
27
+ define('CFFVER', '2.7.1');
28
 
29
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
30
  //Include admin
1311
  //Set the author image as a variable. If it already exists then don't query the api for it again.
1312
  $cff_author_img_var = '$cff_author_img_' . $cff_from_id;
1313
  if ( !isset($$cff_author_img_var) ) $$cff_author_img_var = 'https://graph.facebook.com/' . $cff_from_id . '/picture?type=square';
1314
+ $cff_author .= '<div class="cff-author-img"><a '.$cff_author_link_atts.'><img src="'.$$cff_author_img_var.'" title="'.$cff_author_name.'" alt="'.$cff_author_name.'" width=40 height=40 onerror="this.style.display=\'none\'"></a></div>';
1315
 
1316
  $cff_author .= '</div>'; //End .cff-author
1317
 
js/cff-admin-scripts.js CHANGED
@@ -191,14 +191,15 @@ jQuery(document).ready(function($) {
191
  $('#cff_fb_login').on('click', function(){
192
  $('#cff_fb_login_modal').show();
193
  });
194
- $('#cff_admin_cancel_btn').on('click', function(){
195
- $('#cff_fb_login_modal').hide();
 
196
  });
197
 
198
  //Select a page for token
199
  $('.cff-managed-page').on('click', function(){
200
  $('#cff_access_token, #cff_page_access_token').val( $(this).attr('data-token') ).addClass('cff-success');
201
- // $('#cff_page_id').val( $(this).attr('data-page-id') );
202
  $(this).siblings().removeClass('cff-page-selected');
203
  $(this).addClass('cff-page-selected');
204
  // $('.cff-save-page-token').show();
@@ -208,4 +209,21 @@ jQuery(document).ready(function($) {
208
  }
209
  });
210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  });
191
  $('#cff_fb_login').on('click', function(){
192
  $('#cff_fb_login_modal').show();
193
  });
194
+ $('#cff_admin_cancel_btn, #cff_admin_cancel_btn_2, #cff_admin_cancel_btn_3').on('click', function(){
195
+ $('#cff_fb_login_modal, #cff-public, #cff-own').hide();
196
+ $('#cff-token-intro').show();
197
  });
198
 
199
  //Select a page for token
200
  $('.cff-managed-page').on('click', function(){
201
  $('#cff_access_token, #cff_page_access_token').val( $(this).attr('data-token') ).addClass('cff-success');
202
+ if( $('#cff_page_id').val().trim() == '' ) $('#cff_page_id').val( $(this).attr('data-page-id') );
203
  $(this).siblings().removeClass('cff-page-selected');
204
  $(this).addClass('cff-page-selected');
205
  // $('.cff-save-page-token').show();
209
  }
210
  });
211
 
212
+ //Token radio change event
213
+ $('input[type=radio][name=token-perm]').change(function() {
214
+ $('.cff_admin_btn').removeClass('cff-disabled');
215
+ });
216
+ if( $('input[type=radio][name=token-perm]').is(":checked") ){
217
+ $('.cff_admin_btn').removeClass('cff-disabled');
218
+ }
219
+
220
+ $('#cff_token_perm_selected').on('click', function(){
221
+ if( !$(this).hasClass('cff-disabled') ){
222
+ var cffTokenRadioVal = $('input[name=token-perm]:checked').val();
223
+ if( cffTokenRadioVal == 'own' ) $('#cff-own').show();
224
+ if( cffTokenRadioVal == 'public' ) $('#cff-public').show();
225
+ $('#cff-token-intro').hide();
226
+ }
227
+ });
228
+
229
  });