WordPress Social Sharing Plugin – Social Warfare - Version 3.5.3

Version Description

(21 MAR 2019) = * Immediate security patch for 3.5.x

Download this release

Release Info

Developer WarfarePlugins
Plugin Icon 128x128 WordPress Social Sharing Plugin – Social Warfare
Version 3.5.3
Comparing to
See all releases

Code changes from version 3.5.2 to 3.5.3

.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ functions/admin/SWP_Options_Pseudo_Code.php
2
+ functions/options/options-page-working.php
3
+ functions/options/options.txt
4
+ remote-sync.json
5
+ .remote-sync.json
6
+ .DS_Store
7
+ functions/utilities/testing.php
8
+ .imdone/config.json
9
+ node_modules
10
+ assets/css/style.scss
11
+ assets/css/converted_style.tmp
assets/css/admin-options-page.css CHANGED
@@ -907,3 +907,8 @@ div.error {
907
  .swp-authorization-button:hover {
908
  color: white;
909
  }
 
 
 
 
 
907
  .swp-authorization-button:hover {
908
  color: white;
909
  }
910
+
911
+ .sw-grid.sw-col-940.sw-top-menu {
912
+ width: 100%;
913
+ box-sizing: border-box;
914
+ }
assets/css/admin-options-page.min.css CHANGED
@@ -1 +1 @@
1
- .sw-grid{float:left;margin-bottom:2.127659574468%;padding-top:0}.sw-grid-right{float:right;margin-bottom:2.127659574468%;padding-top:0}.sw-col-60,.sw-col-140,.sw-col-220,.sw-col-300,.sw-col-380,.sw-col-460,.sw-col-540,.sw-col-620,.sw-col-700,.sw-col-780,.sw-col-860{margin-right:2.127659574468%}.sw-col-60{width:6.382978723404%}.sw-col-140{width:14.893617021277%}.sw-col-220{width:23.404255319149%}.sw-col-300{width:31.914893617021%}.sw-col-380{width:40.425531914894%}.sw-col-460{width:48.936170212766%}.sw-col-540{width:57.446808510638%}.sw-col-620{width:65.957446808511%}.sw-col-700{width:74.468085106383%}.sw-col-780{width:82.978723404255%}.sw-col-860{width:91.489361702128%}.sw-col-940{width:100%}.sw-fit{margin-left:0!important;margin-right:0!important}.sw-option-container *:last-child{margin-left:0!important;margin-right:0!important}.sw-clearfix:after,.sw-clearfix:before{content:' ';display:table}.sw-clearfix:after{clear:both}.sw-clearfix{clear:both;width:100%}img{-ms-interpolation-mode:bicubic;border:0;height:auto;max-width:100%;vertical-align:middle}.sw-admin-divider{width:100%;height:1px;border-bottom:1px solid #CED3DC;margin:20px 0 40px 0}.sw-hidden{display:none!important}.swp_support_link{border:1px solid #ccc;font-size:18px;line-height:20px;text-decoration:none;-webkit-border-radius:50%;border-radius:50%;width:20px;display:block;float:right;text-align:center;color:#ccc;margin-right:20px;margin-top:4px;padding:2px;font-weight:bold}.swp_support_link:hover{color:#6BCCE9;border-color:#6BCCE9}.swp_support_link.swp_four_fourths{margin-left:20px;margin-top:13px}#screen-meta-links .screen-meta-toggle{display:none!important}#wpwrap,#wpcontent{background:#fff;padding-left:0}.sw-top-menu{border-bottom:1px solid #CED3DC;float:none;background:#fff;z-index:5;margin:0}.sw-top-menu[sw-registered="0"] .sw-header-logo{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo-pro{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo{display:none}.sw-top-menu[sw-registered="0"] .sw-header-logo-pro{display:none}.sw-header-menu{height:65px;margin:0}.sw-header-menu li{float:left;margin:0 15px;font-size:14px;display:table;height:65px}.sw-header-menu li:focus,.sw-header-menu li a:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.sw-header-menu li span{padding:0 5px 5px 5px}.sw-header-menu li.sw-active-tab span,.sw-header-menu li:hover span{border-bottom:4px solid #30394f}.sw-header-menu li a{color:#30394f;text-decoration:none;display:table-cell;vertical-align:middle;padding:30px 0}.sw-top-menu .sw-grid{margin-bottom:0}.sw-admin-wrapper,.sw-header-wrapper{clear:both;margin:20px auto 20px auto;padding:0 40px 20px 40px;position:relative}.sw-header-wrapper{margin:0}.sw-tabs-container .sw-admin-tab{display:none}.sw-tabs-container .sw-admin-tab:nth-child(1){display:block}.sw-admin-tab h2{font-size:26px;line-height:1.2;margin:0}.sw-admin-tab h2.sw-h-label{line-height:56px}p.sw-subtitle{font-size:16px;line-height:1.2;margin:10px 0 30px 0}p.sw-checkbox-label,p.sw-input-label,p.sw-select-label,p.sw-authenticate-label{font-size:16px;font-weight:bold;padding-left:10%}.sw-select-label.sw-no-padding{padding-left:0}p.sw-short{margin:1em 0 0 0}p.sw-subtext-label{margin-top:-10px}.sw-admin-sidebar img{margin:5px 0 10px 0}.system-status-wrapper{display:none}.system-status-container{width:90%;height:250px;overflow:hidden;border:1px solid #CED3DC;padding:5%}h3.sw-buttons-toggle{width:100px;float:left;clear:left;margin:15px 0 30px 0;padding-left:10%}input.sw-admin-input{padding:15px;border:1px solid #ced3cd;-webkit-border-radius:4px;border-radius:4px;float:right;-webkit-box-shadow:none;box-shadow:none;margin:2px 0 1px 0;width:100%}.sw-grid select{width:100%;-webkit-box-shadow:none;box-shadow:none;border:1px solid #ced3cd;height:51px;padding:15px;margin:2px 1px 3px 0;-webkit-border-radius:4px;border-radius:4px}a.button.sw-navy-button,a.button.sw-blue-button,a.button.sw-green-button,a.button.sw-red-button,.swp-button{padding:15px 30px;height:auto;line-height:1;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:none;box-shadow:none;float:right;margin:15px 0}a.button.sw-navy-button,a.button.sw-navy-button:focus{background:#30394f;color:#fff;border-color:#2a2d34;-webkit-box-shadow:none;box-shadow:none}a.button.sw-navy-button:hover,a.button.sw-blue-button:hover{background:#2a2d34;border-color:#2a2d34;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-blue-button,a.button.sw-blue-button:focus{background:#6bcce9;border-color:#6bcce9;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-green-button,a.button.sw-green-button:focus{background:#71C069;color:#fff;border-color:#71C069;-webkit-box-shadow:none;box-shadow:none}a.button.sw-red-button,a.button.sw-red-button:focus,a.button.sw-red-button:hover{background:#ee464f;color:#fff;border-color:#ee464f;-webkit-box-shadow:none;box-shadow:none}.sw-admin-tab a.button{margin:5px 0 15px 0}.sw-save-settings{width:100%;text-align:center}.sw-red-notice,.sw-green-notice{color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0}.sw-red-notice,.sw-loading-message{background:#ee464f}.sw-green-notice,.sw-loading-complete{background:#71C069}.sw-loading-bg{width:100%;position:fixed;top:0;left:0;height:100%;background:rgba(0,0,0,0.8);z-index:999999999999}.sw-loading-message:before,.sw-green-notice:before,.sw-loading-complete:before{font-family:'Dashicons';font-size:26px;margin:0 15px 0 0;vertical-align:middle}.sw-red-notice:before,.sw-red-notice:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E'}.sw-red-notice a{color:#fff;font-weight:bold;text-decoration:none;border-bottom:2px solid #fff}.sw-red-notice a:hover{color:#30394f;border-bottom:2px solid #30394f}.sw-loading-message:before{content:"\f158"}.sw-green-notice:before,.sw-loading-complete:before{content:"\f147"}.sw-admin-tab .two-thirds-advanced h2.sw-h-label{line-height:1.2;margin-bottom:15px}.sw-italic{font-style:italic}p.sw-subtitle.sw-registration-text{padding:20px 0 0 0;font-size:120%;line-height:175%}.registration-wrapper[registration="1"] .swp_is_not_registered{display:none}.registration-wrapper[registration="0"] .swp_is_registered{display:none}.tweet-count-wrapper[registration="true"] .swp_tweets_not_activated{display:none}.sw-tweet-count-demo{margin:20px 0}.sw-loading-message,.sw-loading-complete{position:fixed;top:50%;left:50%;-webkit-border-radius:3px;border-radius:3px;padding:25px;text-align:center;font-size:20px;color:white;width:240px;margin-top:-46px;margin-left:-120px}.sw-grid textarea{width:100%;height:120px}.sw-active,.sw-inactive{margin:0 0 5px 0;min-width:50px;min-height:40px;border:1px dashed #ced3dc;padding:0;-webkit-border-radius:4px;border-radius:4px;width:auto;height:auto;display:inline-block;max-width:520px}.sw-s{font-family:'sw-icon-font';color:#fff;padding:5px 30px 4px;margin:7px 5px 7px;-webkit-border-radius:2px;border-radius:2px;display:inline-block;font-style:normal;font-size:15px;line-height:15px;cursor:pointer;max-width:15px}.sw-twitter-icon:before{content:'s'}.sw-s.sw-twitter-icon{background-color:#429cd6;border-color:#3c87b2}.sw-google_plus-icon:before{content:'h'}.sw-s.sw-google_plus-icon{background-color:#df4b37;border-color:#c44133}.sw-facebook-icon:before{content:'j'}.sw-s.sw-facebook-icon{background-color:#3a589e;border-color:#2e4675}.sw-pinterest-icon:before{content:'b'}.sw-s.sw-pinterest-icon{background-color:#cd2029;border-color:#aa1b29}.sw-linkedin-icon:before{content:'f'}.sw-s.sw-linkedin-icon{background-color:#0d77b7;border-color:#0c6591}.sw-tumblr-icon:before{content:'r'}.sw-s.sw-tumblr-icon{background-color:#39475d;border-color:#27313f}.sw-mix-icon:before{content:'g'}.sw-s.sw-mix-icon{background-color:#f4812c;border-color:#c96a29}.sw-reddit-icon:before{content:'a'}.sw-s.sw-reddit-icon{background-color:#f04b23;border-color:#d33f27}.sw-yummly-icon:before{content:'x'}.sw-s.sw-yummly-icon{background-color:#e26426;border-color:#b65027}.sw-whatsapp-icon:before{content:'y'}.sw-s.sw-whatsapp-icon{background-color:#71c169;border-color:#28b04b}.sw-pocket-icon:before{content:'B'}.sw-s.sw-pocket-icon{background-color:#ef4056;border-color:#ce3d55}.sw-buffer-icon:before{content:'z'}.sw-s.sw-buffer-icon{background-color:#323b43;border-color:#59626a}.sw-email-icon:before{content:'k'}.sw-s.sw-email-icon{background-color:#6bcce9;border-color:#6bcce9}.sw-hacker_news-icon:before{content:'D'}.sw-s.sw-hacker_news-icon{background-color:#f16522;border-color:#d85623}.sw-flipboard-icon:before{content:'C'}.sw-s.sw-flipboard-icon{background-color:#e02828;border-color:#bf2626}@media screen and (max-width:1350px){.sw-header-menu li{font-size:14px;margin:0 10px}}@media screen and (max-width:1080px){.sw-header-logo{display:none}}.sw-admin-wrapper[sw-registered="0"] [premium="1"]{display:none!important}.sw-admin-wrapper[sw-registered="0"] .sw-option-container{position:relative}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker{display:none}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker:not(.no-icon):before{font-family:'sw-icon-font';content:'E';font-size:24px;float:right;margin:20px 20px 0 0}.sw-admin-wrapper[sw-registered="0"] i[premium-button="1"]{display:none}.sw-admin-wrapper[sw-registered="1"] .sw-premium-buttons{display:none}.sw-admin-wrapper[swp-addons*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"] [premium]{display:none}.sw-admin-wrapper[swp-addons*="pro"][swp-registrations*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"][swp-registrations*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"][swp-registrations*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"][swp-registrations*="advanced_display"] [premium]{display:inherit}.ui-tooltip.sw-admin-hover-notice{background:#ee464f;color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0;border:0;-webkit-box-shadow:none;box-shadow:none;max-width:none;padding:20px}.sw-admin-hover-notice i:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E';float:left;font-style:normal}.swp_upload_image_field{display:none}.sw-admin-image-preview{max-height:50px;float:right}.toplevel_page_social-warfare .notice-error,.toplevel_page_social-warfare .notice-warning,.toplevel_page_social-warfare .notice-success,.toplevel_page_social-warfare .notice-info,.toplevel_page_social-warfare .is-dismissible,.toplevel_page_social-warfare .update-nag,.toplevel_page_social-warfare #notice-error,.toplevel_page_social-warfare #notice-warning,.toplevel_page_social-warfare #notice-success,.toplevel_page_social-warfare #notice-info,.toplevel_page_social-warfare #is-dismissible,.toplevel_page_social-warfare #update-nag,div.error{display:none}.toplevel_page_social-warfare .sw-admin-wrapper .notice-error,.toplevel_page_social-warfare .sw-admin-wrapper .notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper .notice-success,.toplevel_page_social-warfare .sw-admin-wrapper .notice-info,.toplevel_page_social-warfare .sw-admin-wrapper .is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper .update-nag,.toplevel_page_social-warfare .sw-admin-wrapper #notice-error,.toplevel_page_social-warfare .sw-admin-wrapper #notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper #notice-success,.toplevel_page_social-warfare .sw-admin-wrapper #notice-info,.toplevel_page_social-warfare .sw-admin-wrapper #is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper #update-nag,div.error{display:block}.sw-grid-textarea{border:rgb(221,221,221);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);height:120px;width:97%}#color-notice{position:fixed;bottom:15px;margin:0 auto;left:25%;right:25%;background:rgba( 255,225,255,.37 );background-color:#ced3dc;color:#30394f;padding:20px;border-radius:4px;text-align:left;width:650px}#color-notice p{font-size:16px;padding:0;margin:0}#color-notice .color-dismiss{float:right;color:#fff;font-weight:600}#color-notice .color-dismiss:before{content:'x';background:#30394f;border-radius:50%;width:26px;display:block;text-align:center;height:26px;line-height:22px;font-size:22px;cursor:pointer;padding:0;opacity:.4}.swp-icon-tooltip{position:absolute;padding:10px;text-align:center;min-width:75px;background:#ced3dc;color:#fff;border-radius:3px;font-size:13px;letter-spacing:1.2px;font-family:"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.swp-authorization-button{width:200px;color:white;text-decoration:none;font-size:15px;line-height:15px}.swp-authorization-button > div{display:flex;width:100%;text-align:right;justify-content:space-between;align-items:center}.swp-authorization-button i.sw{padding-right:10px;font-size:24px}.swp-authorization-button:hover{color:white}
1
+ .sw-grid{float:left;margin-bottom:2.127659574468%;padding-top:0}.sw-grid-right{float:right;margin-bottom:2.127659574468%;padding-top:0}.sw-col-60,.sw-col-140,.sw-col-220,.sw-col-300,.sw-col-380,.sw-col-460,.sw-col-540,.sw-col-620,.sw-col-700,.sw-col-780,.sw-col-860{margin-right:2.127659574468%}.sw-col-60{width:6.382978723404%}.sw-col-140{width:14.893617021277%}.sw-col-220{width:23.404255319149%}.sw-col-300{width:31.914893617021%}.sw-col-380{width:40.425531914894%}.sw-col-460{width:48.936170212766%}.sw-col-540{width:57.446808510638%}.sw-col-620{width:65.957446808511%}.sw-col-700{width:74.468085106383%}.sw-col-780{width:82.978723404255%}.sw-col-860{width:91.489361702128%}.sw-col-940{width:100%}.sw-fit{margin-left:0!important;margin-right:0!important}.sw-option-container *:last-child{margin-left:0!important;margin-right:0!important}.sw-clearfix:after,.sw-clearfix:before{content:' ';display:table}.sw-clearfix:after{clear:both}.sw-clearfix{clear:both;width:100%}img{-ms-interpolation-mode:bicubic;border:0;height:auto;max-width:100%;vertical-align:middle}.sw-admin-divider{width:100%;height:1px;border-bottom:1px solid #CED3DC;margin:20px 0 40px 0}.sw-hidden{display:none!important}.swp_support_link{border:1px solid #ccc;font-size:18px;line-height:20px;text-decoration:none;-webkit-border-radius:50%;border-radius:50%;width:20px;display:block;float:right;text-align:center;color:#ccc;margin-right:20px;margin-top:4px;padding:2px;font-weight:bold}.swp_support_link:hover{color:#6BCCE9;border-color:#6BCCE9}.swp_support_link.swp_four_fourths{margin-left:20px;margin-top:13px}#screen-meta-links .screen-meta-toggle{display:none!important}#wpwrap,#wpcontent{background:#fff;padding-left:0}.sw-top-menu{border-bottom:1px solid #CED3DC;float:none;background:#fff;z-index:5;margin:0}.sw-top-menu[sw-registered="0"] .sw-header-logo{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo-pro{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo{display:none}.sw-top-menu[sw-registered="0"] .sw-header-logo-pro{display:none}.sw-header-menu{height:65px;margin:0}.sw-header-menu li{float:left;margin:0 15px;font-size:14px;display:table;height:65px}.sw-header-menu li:focus,.sw-header-menu li a:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.sw-header-menu li span{padding:0 5px 5px 5px}.sw-header-menu li.sw-active-tab span,.sw-header-menu li:hover span{border-bottom:4px solid #30394f}.sw-header-menu li a{color:#30394f;text-decoration:none;display:table-cell;vertical-align:middle;padding:30px 0}.sw-top-menu .sw-grid{margin-bottom:0}.sw-admin-wrapper,.sw-header-wrapper{clear:both;margin:20px auto 20px auto;padding:0 40px 20px 40px;position:relative}.sw-header-wrapper{margin:0}.sw-tabs-container .sw-admin-tab{display:none}.sw-tabs-container .sw-admin-tab:nth-child(1){display:block}.sw-admin-tab h2{font-size:26px;line-height:1.2;margin:0}.sw-admin-tab h2.sw-h-label{line-height:56px}p.sw-subtitle{font-size:16px;line-height:1.2;margin:10px 0 30px 0}p.sw-checkbox-label,p.sw-input-label,p.sw-select-label,p.sw-authenticate-label{font-size:16px;font-weight:bold;padding-left:10%}.sw-select-label.sw-no-padding{padding-left:0}p.sw-short{margin:1em 0 0 0}p.sw-subtext-label{margin-top:-10px}.sw-admin-sidebar img{margin:5px 0 10px 0}.system-status-wrapper{display:none}.system-status-container{width:90%;height:250px;overflow:hidden;border:1px solid #CED3DC;padding:5%}h3.sw-buttons-toggle{width:100px;float:left;clear:left;margin:15px 0 30px 0;padding-left:10%}input.sw-admin-input{padding:15px;border:1px solid #ced3cd;-webkit-border-radius:4px;border-radius:4px;float:right;-webkit-box-shadow:none;box-shadow:none;margin:2px 0 1px 0;width:100%}.sw-grid select{width:100%;-webkit-box-shadow:none;box-shadow:none;border:1px solid #ced3cd;height:51px;padding:15px;margin:2px 1px 3px 0;-webkit-border-radius:4px;border-radius:4px}a.button.sw-navy-button,a.button.sw-blue-button,a.button.sw-green-button,a.button.sw-red-button,.swp-button{padding:15px 30px;height:auto;line-height:1;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:none;box-shadow:none;float:right;margin:15px 0}a.button.sw-navy-button,a.button.sw-navy-button:focus{background:#30394f;color:#fff;border-color:#2a2d34;-webkit-box-shadow:none;box-shadow:none}a.button.sw-navy-button:hover,a.button.sw-blue-button:hover{background:#2a2d34;border-color:#2a2d34;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-blue-button,a.button.sw-blue-button:focus{background:#6bcce9;border-color:#6bcce9;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-green-button,a.button.sw-green-button:focus{background:#71C069;color:#fff;border-color:#71C069;-webkit-box-shadow:none;box-shadow:none}a.button.sw-red-button,a.button.sw-red-button:focus,a.button.sw-red-button:hover{background:#ee464f;color:#fff;border-color:#ee464f;-webkit-box-shadow:none;box-shadow:none}.sw-admin-tab a.button{margin:5px 0 15px 0}.sw-save-settings{width:100%;text-align:center}.sw-red-notice,.sw-green-notice{color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0}.sw-red-notice,.sw-loading-message{background:#ee464f}.sw-green-notice,.sw-loading-complete{background:#71C069}.sw-loading-bg{width:100%;position:fixed;top:0;left:0;height:100%;background:rgba(0,0,0,0.8);z-index:999999999999}.sw-loading-message:before,.sw-green-notice:before,.sw-loading-complete:before{font-family:'Dashicons';font-size:26px;margin:0 15px 0 0;vertical-align:middle}.sw-red-notice:before,.sw-red-notice:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E'}.sw-red-notice a{color:#fff;font-weight:bold;text-decoration:none;border-bottom:2px solid #fff}.sw-red-notice a:hover{color:#30394f;border-bottom:2px solid #30394f}.sw-loading-message:before{content:"\f158"}.sw-green-notice:before,.sw-loading-complete:before{content:"\f147"}.sw-admin-tab .two-thirds-advanced h2.sw-h-label{line-height:1.2;margin-bottom:15px}.sw-italic{font-style:italic}p.sw-subtitle.sw-registration-text{padding:20px 0 0 0;font-size:120%;line-height:175%}.registration-wrapper[registration="1"] .swp_is_not_registered{display:none}.registration-wrapper[registration="0"] .swp_is_registered{display:none}.tweet-count-wrapper[registration="true"] .swp_tweets_not_activated{display:none}.sw-tweet-count-demo{margin:20px 0}.sw-loading-message,.sw-loading-complete{position:fixed;top:50%;left:50%;-webkit-border-radius:3px;border-radius:3px;padding:25px;text-align:center;font-size:20px;color:white;width:240px;margin-top:-46px;margin-left:-120px}.sw-grid textarea{width:100%;height:120px}.sw-active,.sw-inactive{margin:0 0 5px 0;min-width:50px;min-height:40px;border:1px dashed #ced3dc;padding:0;-webkit-border-radius:4px;border-radius:4px;width:auto;height:auto;display:inline-block;max-width:520px}.sw-s{font-family:'sw-icon-font';color:#fff;padding:5px 30px 4px;margin:7px 5px 7px;-webkit-border-radius:2px;border-radius:2px;display:inline-block;font-style:normal;font-size:15px;line-height:15px;cursor:pointer;max-width:15px}.sw-twitter-icon:before{content:'s'}.sw-s.sw-twitter-icon{background-color:#429cd6;border-color:#3c87b2}.sw-google_plus-icon:before{content:'h'}.sw-s.sw-google_plus-icon{background-color:#df4b37;border-color:#c44133}.sw-facebook-icon:before{content:'j'}.sw-s.sw-facebook-icon{background-color:#3a589e;border-color:#2e4675}.sw-pinterest-icon:before{content:'b'}.sw-s.sw-pinterest-icon{background-color:#cd2029;border-color:#aa1b29}.sw-linkedin-icon:before{content:'f'}.sw-s.sw-linkedin-icon{background-color:#0d77b7;border-color:#0c6591}.sw-tumblr-icon:before{content:'r'}.sw-s.sw-tumblr-icon{background-color:#39475d;border-color:#27313f}.sw-mix-icon:before{content:'g'}.sw-s.sw-mix-icon{background-color:#f4812c;border-color:#c96a29}.sw-reddit-icon:before{content:'a'}.sw-s.sw-reddit-icon{background-color:#f04b23;border-color:#d33f27}.sw-yummly-icon:before{content:'x'}.sw-s.sw-yummly-icon{background-color:#e26426;border-color:#b65027}.sw-whatsapp-icon:before{content:'y'}.sw-s.sw-whatsapp-icon{background-color:#71c169;border-color:#28b04b}.sw-pocket-icon:before{content:'B'}.sw-s.sw-pocket-icon{background-color:#ef4056;border-color:#ce3d55}.sw-buffer-icon:before{content:'z'}.sw-s.sw-buffer-icon{background-color:#323b43;border-color:#59626a}.sw-email-icon:before{content:'k'}.sw-s.sw-email-icon{background-color:#6bcce9;border-color:#6bcce9}.sw-hacker_news-icon:before{content:'D'}.sw-s.sw-hacker_news-icon{background-color:#f16522;border-color:#d85623}.sw-flipboard-icon:before{content:'C'}.sw-s.sw-flipboard-icon{background-color:#e02828;border-color:#bf2626}@media screen and (max-width:1350px){.sw-header-menu li{font-size:14px;margin:0 10px}}@media screen and (max-width:1080px){.sw-header-logo{display:none}}.sw-admin-wrapper[sw-registered="0"] [premium="1"]{display:none!important}.sw-admin-wrapper[sw-registered="0"] .sw-option-container{position:relative}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker{display:none}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker:not(.no-icon):before{font-family:'sw-icon-font';content:'E';font-size:24px;float:right;margin:20px 20px 0 0}.sw-admin-wrapper[sw-registered="0"] i[premium-button="1"]{display:none}.sw-admin-wrapper[sw-registered="1"] .sw-premium-buttons{display:none}.sw-admin-wrapper[swp-addons*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"] [premium]{display:none}.sw-admin-wrapper[swp-addons*="pro"][swp-registrations*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"][swp-registrations*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"][swp-registrations*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"][swp-registrations*="advanced_display"] [premium]{display:inherit}.ui-tooltip.sw-admin-hover-notice{background:#ee464f;color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0;border:0;-webkit-box-shadow:none;box-shadow:none;max-width:none;padding:20px}.sw-admin-hover-notice i:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E';float:left;font-style:normal}.swp_upload_image_field{display:none}.sw-admin-image-preview{max-height:50px;float:right}.toplevel_page_social-warfare .notice-error,.toplevel_page_social-warfare .notice-warning,.toplevel_page_social-warfare .notice-success,.toplevel_page_social-warfare .notice-info,.toplevel_page_social-warfare .is-dismissible,.toplevel_page_social-warfare .update-nag,.toplevel_page_social-warfare #notice-error,.toplevel_page_social-warfare #notice-warning,.toplevel_page_social-warfare #notice-success,.toplevel_page_social-warfare #notice-info,.toplevel_page_social-warfare #is-dismissible,.toplevel_page_social-warfare #update-nag,div.error{display:none}.toplevel_page_social-warfare .sw-admin-wrapper .notice-error,.toplevel_page_social-warfare .sw-admin-wrapper .notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper .notice-success,.toplevel_page_social-warfare .sw-admin-wrapper .notice-info,.toplevel_page_social-warfare .sw-admin-wrapper .is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper .update-nag,.toplevel_page_social-warfare .sw-admin-wrapper #notice-error,.toplevel_page_social-warfare .sw-admin-wrapper #notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper #notice-success,.toplevel_page_social-warfare .sw-admin-wrapper #notice-info,.toplevel_page_social-warfare .sw-admin-wrapper #is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper #update-nag,div.error{display:block}.sw-grid-textarea{border:rgb(221,221,221);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);height:120px;width:97%}#color-notice{position:fixed;bottom:15px;margin:0 auto;left:25%;right:25%;background:rgba( 255,225,255,.37 );background-color:#ced3dc;color:#30394f;padding:20px;border-radius:4px;text-align:left;width:650px}#color-notice p{font-size:16px;padding:0;margin:0}#color-notice .color-dismiss{float:right;color:#fff;font-weight:600}#color-notice .color-dismiss:before{content:'x';background:#30394f;border-radius:50%;width:26px;display:block;text-align:center;height:26px;line-height:22px;font-size:22px;cursor:pointer;padding:0;opacity:.4}.swp-icon-tooltip{position:absolute;padding:10px;text-align:center;min-width:75px;background:#ced3dc;color:#fff;border-radius:3px;font-size:13px;letter-spacing:1.2px;font-family:"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.swp-authorization-button{width:200px;color:white;text-decoration:none;font-size:15px;line-height:15px}.swp-authorization-button > div{display:flex;width:100%;text-align:right;justify-content:space-between;align-items:center}.swp-authorization-button i.sw{padding-right:10px;font-size:24px}.swp-authorization-button:hover{color:white}.sw-grid.sw-col-940.sw-top-menu{width:100%;box-sizing:border-box}
assets/fonts/bak/sw-icon-font.eot ADDED
Binary file
assets/fonts/bak/sw-icon-font.svg ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by Fontastic.me</metadata>
5
+ <defs>
6
+ <font id="social-warfare-icons" horiz-adv-x="512">
7
+ <font-face font-family="social-warfare-icons" units-per-em="512" ascent="480" descent="-32"/>
8
+ <missing-glyph horiz-adv-x="512" />
9
+
10
+ <glyph glyph-name="reddit" unicode="&#97;" d="M448 338c-19 0-38-10-51-26l-3-3c-31 21-72 33-117 37l21 64 56-13c3-27 25-48 54-48 30 0 54 24 54 54 0 31-24 55-54 55-21 0-38-12-48-29l-69 16c-8 1-16-3-19-11l-27-87c-50-1-95-16-128-37l-3 5c-13 15-31 24-50 24-35 0-64-29-64-64 0-27 18-51 43-61l11-4 0 3c0 0 0-2 0-2 0-75 90-136 202-136 110 0 200 61 202 136l11 3c27 8 45 34 45 61-2 34-31 63-66 63z m-40 86c11 0 19-10 19-19 0-11-9-21-19-21-11 0-19 10-19 21 0 9 8 19 19 19z m-355-178c-11 5-18 16-18 28 0 17 13 30 29 30 8 0 16-3 22-10l4-4c-15-13-24-29-31-45z m201-139c-92 0-168 47-168 104 0 58 76 104 168 104 93 0 168-46 168-104 0-57-75-104-168-104z m204 139l-8-3c-7 16-16 32-29 45l5 6c6 7 14 10 22 10 16 0 30-13 30-30-1-12-9-23-20-28z m-237-4c0 16-13 30-31 30-17 0-30-14-30-30 0-16 14-31 30-31 16 0 31 15 31 31z m101 30c-16 0-31-14-31-30 0-16 15-31 31-31 16 0 30 13 30 31-2 17-14 30-30 30z m-2-93c-5 0-8-1-11-5-10-9-27-14-53-14-26 0-42 5-53 14-6 7-17 7-22 0-3-3-5-6-5-11 0-5 2-8 5-11 16-16 40-24 75-24 34 0 59 8 75 24 3 3 5 6 5 11 0 5-2 8-5 11-3 4-6 5-11 5z"/>
11
+ <glyph glyph-name="pinterest" unicode="&#98;" d="M256 450c-107 0-194-87-194-194 0-78 48-147 116-178 0 13 0 31 3 45 3 16 25 106 25 106 0 0-6 13-6 30 0 29 16 50 37 50 17 0 25-13 25-29 0-18-11-45-17-69-5-21 9-37 30-37 37 0 61 47 61 103 0 41-29 73-80 73-59 0-94-43-94-92 0-18 4-29 12-39 4-5 5-6 4-11-2-3-4-13-4-16-1-5-4-6-9-5-27 11-40 40-40 74 0 54 46 120 137 120 74 0 122-53 122-111 0-75-42-132-104-132-21 0-40 11-46 24 0 0-12-45-15-53-5-15-13-31-19-42 18-5 35-8 54-8 108 0 194 87 194 194 2 110-85 197-192 197z"/>
12
+ <glyph glyph-name="periscope" unicode="&#99;" d="M258 464c-93 0-167-77-167-171 0-98 130-245 167-245 32 0 161 147 161 245 2 94-72 171-161 171z m1-261c-57 0-102 45-102 96 0 24 8 47 21 63 0-21 17-39 40-39 22 0 38 18 38 39 0 16-10 28-24 35 8 1 18 3 26 3 52 0 97-45 97-102 0-50-45-95-96-95z"/>
13
+ <glyph glyph-name="linkedin" unicode="&#102;" d="M115 443c-25 0-46-21-46-46 0-26 21-47 46-47 26 2 45 23 45 47 0 25-19 46-45 46z m-40-374l79 0 0 249-79 0z m282 257c0 0-63 5-77-41l0 33-78 0 0-249 78 0 0 133c0 4 2 54 48 54 43 0 40-58 40-58l0-128 77 0 0 144c-2-1 8 112-88 112z"/>
14
+ <glyph glyph-name="google-plus" unicode="&#104;" d="M168 280l0-58 96 0c-5-24-29-72-96-72-58 0-102 48-102 106 0 58 44 106 102 106 34 0 54-15 67-26l45 43c-29 29-67 45-112 45-94 0-168-75-168-168 0-93 74-168 168-168 96 0 160 67 160 163 0 11 0 19-2 29z m344 0l-48 0 0 48-48 0 0-48-48 0 0-48 48 0 0-48 48 0 0 48 48 0"/>
15
+ <glyph glyph-name="flickr" unicode="&#105;" d="M510 256c0-66-52-118-118-118-66 0-118 52-118 118 0 66 52 118 118 118 66 0 118-52 118-118z m-270 0c0-66-53-118-118-118-66 0-120 52-120 118 0 66 52 118 118 118 66 0 120-52 120-118z"/>
16
+ <glyph glyph-name="facebook" unicode="&#106;" d="M288 48l0 190 64 0 10 74-74 0 0 48c0 21 6 37 37 37l40 0 0 64c-8 1-31 3-58 3-56 0-96-35-96-98l0-54-64 0 0-74 64 0 0-190z"/>
17
+ <glyph glyph-name="email" unicode="&#107;" d="M166 277l-152 120 0-275z m330 147l-480 0 240-184z m-173-162l-67-51-67 51-175-174 482 0z m21 13l154-153 0 273z"/>
18
+ <glyph glyph-name="ello" unicode="&#108;" d="M256 454c-109 0-198-89-198-198 0-109 89-198 198-198 109 0 198 89 198 198 0 109-89 198-198 198z m-3-321c-82 0-114 67-119 102-1 8 5 16 13 18 8 1 16-5 18-13 0-3 13-75 88-75 75 0 91 73 93 77 1 8 9 14 17 12 8-1 15-9 13-17-6-39-42-104-123-104z"/>
19
+ <glyph glyph-name="blogger" unicode="&#109;" d="M442 288l-4 6-4 5c-7 5-42 0-52 8-6 7-8 18-9 32-5 29-7 31-11 40-16 35-61 61-92 64l-83 0c-65 0-118-53-118-118l0-138c0-65 53-118 118-118l136 0c66 0 119 53 119 118z m-253 59l65 0c13 0 23-9 23-22 0-13-10-23-23-23l-65 0c-13 0-23 10-23 23 0 11 10 22 23 22z m134-181l-133 0c-12 0-22 10-22 23 0 13 10 22 22 22l133 0c13 0 23-9 23-22 0-13-12-23-23-23z"/>
20
+ <glyph glyph-name="rss" unicode="&#110;" d="M166 114c0-29-24-53-52-53-29 0-53 24-53 53 0 28 24 52 53 52 30 0 52-22 52-52z m-104 204l0-78c98-2 178-80 178-178l78 0c-1 141-115 255-256 256z m0 55c84 0 160-32 220-91 59-60 91-136 91-220l78 0c0 215-174 388-387 389l0-78z"/>
21
+ <glyph glyph-name="share" unicode="&#111;" d="M382 170c-16 0-30-7-41-16l-149 86c2 5 2 10 2 14 0 5 0 10-2 15l147 86c11-11 26-17 43-17 36 0 63 28 63 62 0 34-29 64-63 64-33 0-62-29-62-62 0-5 0-10 2-15l-148-86c-11 11-25 17-43 17-35 0-62-28-62-62 0-34 27-64 61-64 16 0 32 6 43 18l149-87c-2-5-2-9-2-14 0-34 27-61 61-61 33 0 61 27 61 61 0 33-26 61-60 61z"/>
22
+ <glyph glyph-name="social-warfare" unicode="&#112;" d="M138 354c3 12 28 67 88 100-96-14-170-97-170-196 0-26 5-52 14-74 4 3 8 5 13 5l74 14c13 3 17-3 14-16-8-29 8-46 37-46 29 0 58 17 59 33 7 53-179 42-129 180z m297-8c-5-5-9-10-17-12l-76-14c-12-3-17 3-14 14 5 24-10 40-38 40-24 0-44-14-45-27-8-46 182-46 134-184-5-13-37-73-109-105 104 6 188 92 188 198-2 32-10 62-23 90z"/>
23
+ <glyph glyph-name="stumble-upon" unicode="&#113;" d="M282 302l33-16 50 15 0 35c-2 59-50 106-109 106-59 0-107-47-109-106l0-158c0-15-11-26-25-26-15 0-26 11-26 26l0 67-85 0c0 0 0-67 0-69 0-61 50-110 111-110 60 0 108 48 108 108l0 157c0 15 12 26 26 26 14 0 26-11 26-26z m136-56l0-70c0-14-12-26-26-26-14 0-26 12-26 26l0 69-49-15-34 16 0-68c0-61 50-109 111-109 60 0 110 49 110 110 0 0 0 69 0 69l-86 0z"/>
24
+ <glyph glyph-name="tumblr" unicode="&#114;" d="M355 133c-65-29-73 24-73 24l0 131 78 0 0 70-78 0 0 106-64 0c0 0-8-94-82-115l0-61 46 0 0-136c0-67 56-104 116-104 59 0 78 26 78 26z"/>
25
+ <glyph glyph-name="twitter" unicode="&#115;" d="M491 402c-17-8-35-13-56-15 19 11 35 31 43 53-19-11-40-19-60-24-18 19-44 30-71 30-62 0-109-57-94-118-80 5-152 43-199 101-25-43-12-101 31-130-16 0-31 5-43 13-2-45 30-86 76-96-12-3-28-5-43-2 13-38 48-65 90-67-40-32-91-46-143-40 44-27 93-43 148-43 179 0 280 152 273 286 19 15 35 32 48 52z"/>
26
+ <glyph glyph-name="vimeo" unicode="&#116;" d="M11 354l19-26c0 0 42 32 55 16 14-16 65-211 83-248 16-32 58-74 104-43 46 30 198 160 227 315 27 154-184 122-206-13 56 34 86-14 57-67-28-53-54-88-68-88-15 0-24 35-40 98-16 64-16 180-84 168-64-13-147-112-147-112z"/>
27
+ <glyph glyph-name="warfare-plugins" unicode="&#118;" d="M424 365l-32-163c-2-7 3-7 6 0l52 104c-4 20-13 41-26 59z m-155 86l-55-249c-1-7 4-7 7 0l120 233c-23 10-47 16-74 18 2 0 2 0 2-2z m38-240l-85-147c0 0-1-2-1-2 13-1 25-3 38-3 13 0 24 2 37 3 0 0 0 2 0 2l19 147c0 5-5 5-8 0z m-246 45c0-50 17-94 48-130l48 300c-58-34-96-98-96-170z"/>
28
+ <glyph glyph-name="youtube" unicode="&#119;" d="M365 437l-218 0c-123 0-142-7-142-127l0-108c0-120 19-127 142-127l216 0c123 0 143 7 143 127l0 108c1 120-18 127-141 127z m-160-271l0 188 142-95z"/>
29
+ <glyph glyph-name="yummly" unicode="&#120;" d="M91 430c2 7 8 12 13 15 19 13 42 21 64 19 19-2 34-11 37-34 3-14 0-28-3-43-8-30-16-61-24-91-2-6-2-11-2-18 0-8 5-12 13-12 9-2 17 0 25 3 15 3 28 9 40 16 2 1 4 3 4 5 3 19 6 36 9 56 3 19 7 36 10 56 1 12 5 24 6 36 0 4 0 8-1 13-2 5 0 7 3 8 9 5 21 7 32 3 9-1 14-8 14-17 0-10-1-19-3-31-3-20-6-40-11-60-3-21-8-44-11-64-4-21-8-44-12-64-1-8-3-18-4-26 0-2 0-3 1-3 35-5 71-15 103-29 4-3 11-3 17-5 5-1 7-3 7-6 0-8-2-15-7-23-8-11-21-16-35-11-10 3-18 8-26 13-19 11-38 18-60 21-2 0-5 0-7 0-1 0-3 0-3-3-3-20-10-37-18-53-6-13-16-26-27-35-11-10-24-15-38-16-3 0-7-2-10-2-3 0-6 0-9 0-2 0-4 0-4 0-14 2-28 8-38 19-11 15-13 31-10 47 5 27 21 48 45 62 21 11 43 18 66 21 1 0 3 0 3 3 2 5 2 10 3 14 2 7 2 12 3 18-3-2-4-3-6-3-26-15-53-21-83-18-15 2-26 8-32 21-7 13-8 26-5 38 6 28 14 56 22 84 8 16 12 30 15 44 1 12-2 20-16 15-10-2-18-8-24-15-2-3-5-3-8 0-7 5-10 10-13 16-2 4-3 7-5 12 0 1 0 3 0 4z m144-273c-17-3-32-8-45-21-6-6-9-14-9-24 0-10 8-16 17-13 8 2 15 7 20 13 6 10 9 19 12 30 4 4 4 10 5 15z"/>
30
+ <glyph glyph-name="whatsapp" unicode="&#121;" d="M400 402c-38 38-90 59-144 59-112 0-203-91-203-203 0-36 9-71 27-101l-29-106 109 29c29-16 62-24 98-24 112 0 203 91 203 203-2 53-23 104-61 143z m-142-312c-31 0-60 8-87 24l-6 3-64-16 17 62-4 7c-18 27-26 57-26 89 0 93 75 168 168 168 45 0 88-17 118-49 32-32 50-74 50-119 2-94-74-169-166-169z m91 126c-5 3-31 14-35 16-5 2-8 3-12-3-3-5-12-16-16-19-3-4-6-4-11-2-5 3-21 8-40 26-14 12-25 30-29 35-3 5 0 8 2 9 2 2 5 7 8 10 3 3 3 5 5 8 1 3 1 6 0 10-2 3-11 27-16 36-3 8-8 8-11 8-4 0-7 0-10 0-3 0-10-1-13-6-5-5-17-18-17-42 0-25 17-49 20-52 4-4 36-56 87-77 43-18 51-13 61-13 9 2 30 13 33 24 5 11 5 22 3 24 0 3-4 5-9 8z"/>
31
+ <glyph glyph-name="buffer" unicode="&#122;" d="M72 357l170-80c9-5 20-5 28 0l170 80c3 1 3 6 0 8l-168 80c-10 5-22 5-32 0l-170-80c-1-3-1-7 2-8z m368-98l-35 16c-7 3-15 3-23 0l-112-53c-9-4-20-4-28 0l-112 53c-7 3-15 3-21 0l-37-17c-3-2-3-7 0-8l170-80c9-5 20-5 28 0l170 80c3 3 3 8 0 9z m0-102l-35 16c-7 3-15 3-23 0l-112-53c-9-5-20-5-28 0l-112 53c-7 3-15 3-21 0l-37-18c-3-1-3-6 0-8l170-80c9-5 20-5 28 0l170 80c3 2 3 8 0 10z"/>
32
+ <glyph glyph-name="print" unicode="&#65;" d="M378 326l0 106-244 0 0-106-44 0 0-180 40 0 0-66 252 0 0 66 40 0 0 180z m-26-216l-192 0 0 36 192 0z m5 133l-202 0 0 168 202 0z m25-77c-3 0-4 0-8 2-1 0-3 2-3 2-1 0-1 1-3 1-2 2-2 2-3 3 0 0 0 2-2 2-1 2-1 3-3 5 0 1-2 5-2 6 0 13 10 23 23 23 13 0 22-10 22-23 0-13-8-21-21-21z m-44 204l-164 0 0-21 164 0z m0-37l-164 0 0-21 164 0z m0-39l-164 0 0-20 164 0z"/>
33
+ <glyph glyph-name="pocket" unicode="&#66;" d="M462 418c-4 14-19 25-35 25l-342 0c-16 0-31-9-35-24-2-5-4-9-4-14l0-127 2-25c6-58 35-107 82-141 1 0 1-2 3-2 24-17 53-30 81-36 15-4 28-5 42-5 13 0 26 1 38 3 2 0 4 0 5 2 0 0 2 0 2 0 29 6 54 17 78 35 2 0 2 1 3 1 47 36 76 85 82 141l2 26 0 128c0 5-2 8-4 13z m-88-132l-97-94c-5-5-13-8-19-8-7 0-15 3-20 8l-97 94c-11 12-11 29-2 40 11 12 29 12 40 2l79-75 78 75c11 11 29 11 40-2 10-11 10-28-2-40z"/>
34
+ <glyph glyph-name="flipboard" unicode="&#67;" d="M69 443l0-374 125 0 0 125 124 0 0 124 125 0 0 125z"/>
35
+ <glyph glyph-name="hacker-news" unicode="&#68;" d="M96 464l61 0 78-160c11-24 21-46 21-46 0 0 10 22 22 46l80 160 58 0-136-254 0-162-51 0 0 165z"/>
36
+ <glyph glyph-name="upgrade" unicode="&#69;" d="M376 298l0 40c0 62-46 118-109 123-64 5-118-40-128-99 5 0 45 0 48 0 10 35 47 60 87 49 32-8 52-38 52-72l0-40c0-1 0-1 0-1l-190 0c-26-2-45-23-45-48l0-152c0-28 23-48 48-48l231 0c27 0 48 22 48 48l0 152c1 25-18 46-42 48z m-35-159c-7-6-18-6-26 0l-59 59-61-60c-3-4-8-5-13-5-4 0-9 1-12 5-7 6-7 17 0 25l73 74c7 6 18 6 26 0l72-72c8-8 8-19 0-26z"/>
37
+ <glyph glyph-name="pin" unicode="&#70;" d="M366 222c-1 39-20 71-49 90l0 112c24 18 37 40 37 40l-196 0c0 0 13-24 39-42l0-110c-31-19-50-53-50-90l90 0 0-112c0-11 9-62 21-62 11 0 20 51 20 62l0 112z"/>
38
+ <glyph glyph-name="medium" unicode="&#101;" d="M109 347c0 5-2 10-5 13l-35 43 0 7 112 0 86-189 75 189 106 0 0-7-30-29c-2-3-4-6-4-9l0-216c0-3 0-7 4-8l30-29 0-6-150 0 0 6 30 30c3 4 3 4 3 8l0 173-86-219-11 0-101 219 0-147c-2-6 1-13 5-18l40-49 0-7-114 0 0 7 40 51c5 5 6 11 5 18z"/>
39
+ <glyph glyph-name="mix" unicode="&#103;" d="M70 418l0-288c0-47 72-48 72 0l0 196c7 44 72 42 72-4l0-144c0-48 80-48 80 0l0 96c5 44 72 43 72-4l0-19c0-49 72-46 72 0l0 167z"/>
40
+ <glyph glyph-name="instagram" unicode="&#100;" d="M448 333c-2 19-3 33-10 48-4 14-11 24-22 35-11 11-21 18-35 22-15 7-29 10-48 10-21 2-27 2-77 2-51 0-58 0-77-2-19 0-33-3-48-10-14-4-24-11-35-22-11-11-18-21-22-35-7-15-10-29-10-48-2-21-2-27-2-77 0-51 0-58 2-77 2-19 3-33 10-48 4-14 11-24 22-35 11-11 21-18 35-22 15-5 29-8 48-10 19-2 27-2 77-2 51 0 58 0 77 2 19 2 33 3 48 10 14 4 24 12 35 22 11 11 18 21 22 35 5 15 8 29 10 48 2 19 2 27 2 77 0 51 0 58-2 77z m-45-152c0-18-3-27-6-34-3-8-7-13-13-19-6-6-11-10-19-13-7-1-16-5-34-6-19-2-25-2-75-2-50 0-56 0-75 2-18 0-27 3-34 6-8 3-13 7-19 13-6 6-10 11-13 19-1 7-5 16-6 34-2 19-2 25-2 75 0 50 0 56 2 75 0 18 3 27 6 34 3 8 7 13 13 19 6 6 11 10 19 13 7 1 16 5 34 6 19 2 25 2 75 2 50 0 56 0 75-2 18 0 27-3 34-6 8-3 13-7 19-13 6-6 10-11 13-19 1-7 5-16 6-34 2-19 2-25 2-75-2-50-2-56-2-75z m-147 177c-56 0-102-46-102-102 0-56 46-102 102-102 56 0 102 46 102 102 0 56-46 102-102 102z m0-158c-30 0-56 26-56 56 0 30 26 56 56 56 30 0 56-26 56-56 0-30-26-56-56-56z m99 184c-16 0-29-13-29-29 0-16 13-29 29-29 16 0 29 15 29 29 0 15-13 29-29 29z"/>
41
+ <glyph glyph-name="snapchat" unicode="&#117;" d="M259 64c-1 0-1 0-3 0 0 0-2 0-2 0-24 0-40 11-54 22-10 8-21 15-32 16-6 2-11 2-16 2-10 0-18-2-22-3-4 0-7-2-8-2-2 0-5 0-7 5-1 3-1 6-1 10-2 8-4 12-7 12-38 7-49 15-51 20 0 1 0 1 0 3 0 1 2 5 3 5 59 9 85 70 87 72 0 8 0 14-2 19-5 9-18 14-26 16-1 0-4 1-6 1-18 7-19 15-18 18 2 6 10 11 16 11 2 0 4 0 5-1 8-4 15-5 21-5 8 0 13 3 13 5 0 3 0 8 0 12-3 28-5 63 3 82 27 59 83 64 99 64 0 0 8 0 8 0l2 0c16 0 73-5 99-64 10-19 6-54 5-83l0-2c0-3 0-8 0-11 0 0 3-3 11-3 6 0 13 1 19 5 2 1 5 1 7 1 3 0 4 0 6-1 6-2 10-7 10-12 0-4-4-9-18-16-2 0-3-1-6-1-8-3-23-7-26-16-2-5-2-11 2-19 1-4 27-63 86-72 2 0 3-2 3-5 0-2 0-2 0-3-3-7-13-15-51-20-3 0-5-4-6-12 0-4-2-7-2-10-2-3-3-5-5-5-1 0-5 0-8 2-6 1-14 3-22 3-5 0-11 0-16-2-11-1-21-9-32-16-19-11-34-22-58-22z"/>
42
+ </font></defs></svg>
assets/fonts/bak/sw-icon-font.ttf ADDED
Binary file
assets/fonts/bak/sw-icon-font.woff ADDED
Binary file
assets/js/admin-options-page.js CHANGED
@@ -682,7 +682,7 @@
682
  response = JSON.parse(response);
683
 
684
  if (!response.success) {
685
- var message = 'Sorry, we had trouble deactivating your key. Please let us know about this at https://warfareplugins.com/subit-ticket';
686
  alert(message);
687
  } else {
688
  // If the response was a success
682
  response = JSON.parse(response);
683
 
684
  if (!response.success) {
685
+ var message = 'Sorry, we had trouble deactivating your key. Please let us know about this at https://warfareplugins.com/submit-ticket';
686
  alert(message);
687
  } else {
688
  // If the response was a success
assets/js/admin-options-page.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"use strict";function o(e,t,o,s){var r={customColor:!1,customOutlines:!1};jQuery(t).each(function(e,t){var o=jQuery(t).val();-1!==o.indexOf("custom")&&(o.indexOf("outlines")>0?r.customOutlines=!0:r.customColor=!0)}),r.customColor?o.slideDown():o.slideUp(),r.customOutlines?s.slideDown():s.slideUp(),r.customColor||r.customOutlines?(jQuery("body").append('<div id="color-notice"><p><span class="color-dismiss"></span><b>Note:</b> Custom colors will not show up in the preview, but will on your site.</p></div>'),jQuery(".color-dismiss").on("click",function(){jQuery("#color-notice").fadeOut("slow")})):jQuery("#color-notice").length&&jQuery("#color-notice").fadeOut("slow")}function s(t){var o,s;document.body.createTextRange?(o=document.body.createTextRange(),o.moveToElementText(t),o.select()):e.getSelection&&(s=e.getSelection(),o=document.createRange(),o.selectNodeContents(t),s.removeAllRanges(),s.addRange(o))}function r(){var e={};return jQuery("form.sw-admin-settings-form input, form.sw-admin-settings-form select, form.sw-admin-settings-form textarea").each(function(){var t,o=jQuery(this),s=o.attr("name");t="checkbox"===o.attr("type")?o.prop("checked"):o.val(),e[s]=t}),e.order_of_icons={},jQuery(".sw-active i").each(function(){var t=jQuery(this).data("network");e.order_of_icons[t]=t}),e}function a(){var e=jQuery(".sw-top-menu").offset(),t=jQuery(".sw-top-menu").width();jQuery(".sw-top-menu").css({position:"fixed",left:e.left,top:e.top,width:t}),jQuery(".sw-admin-wrapper").css("padding-top","75px")}function n(){jQuery(".sw-tab-selector").on("click",function(e){e.preventDefault(),jQuery("html, body").animate({scrollTop:0},300);var t=jQuery(this).attr("data-link");jQuery(".sw-admin-tab").hide(),jQuery("#"+t).show(),jQuery(".sw-header-menu li").removeClass("sw-active-tab"),jQuery(this).parents("li").addClass("sw-active-tab"),"swp_styles"===t&&socialWarfare.activateHoverStates(),swpConditionalFields()})}function l(){jQuery(".sw-checkbox-toggle").on("click",function(){var e=jQuery(this).attr("status"),t=jQuery(this).attr("field");"on"===e?(jQuery(this).attr("status","off"),jQuery(t).prop("checked",!1)):(jQuery(this).attr("status","on"),jQuery(t).prop("checked",!0)),u(),swpConditionalFields()})}function i(){jQuery("form.sw-admin-settings-form input, form.sw-admin-settings-form select").on("change",function(){swpConditionalFields(),socialWarfare.newOptions=r(),u()}),socialWarfare.defaultOptions=r()}function u(){socialWarfare.newOptions=r(),JSON.stringify(socialWarfare.newOptions)!==JSON.stringify(socialWarfare.defaultOptions)?jQuery(".sw-save-settings").removeClass("sw-navy-button").addClass("sw-red-button"):jQuery(".sw-save-settings").removeClass("sw-red-button").addClass("sw-navy-button")}function c(){jQuery(".sw-save-settings").on("click",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,_();var t=r(),o={action:"swp_store_settings",security:swpAdminOptionsData.optionsNonce,settings:t};jQuery.post({url:ajaxurl,data:o,success:function(e){p(!0),socialWarfare.defaultOptions=r(),u()}})})}function _(){jQuery("body").append('<div class="sw-loading-bg"><div class="sw-loading-message">Saving Changes</div></div>')}function p(e){var t=e?"Success!":"";jQuery(".sw-loading-message").html(t).removeClass("sw-loading-message").addClass("sw-loading-complete"),jQuery(".sw-loading-bg").delay(1e3).fadeOut(1e3),setTimeout(function(){jQuery(".sw-loading-bg").remove()},2e3)}function m(){var e=(jQuery('select[name="button_shape"]').val(),jQuery('select[name="default_colors"]').val()),t=jQuery('select[name="single_colors"]').val(),o=jQuery('select[name="hover_colors"]').val();jQuery("style.swp_customColorStuff").remove();var s=jQuery('input[name="custom_color"]').val(),r="";"custom_color"!=e&&"custom_color"!=t&&"custom_color"!=o||(r=".swp_social_panel.swp_default_customColor a, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_customColor:hover a {color:white} .swp_social_panel.swp_default_customColor .nc_tweetContainer, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover, body .swp_social_panel.swp_other_customColor:hover .nc_tweetContainer {background-color:"+s+";border:1px solid "+s+";}"),"custom_color_outlines"!=e&&"custom_color_outlines"!=t&&"custom_color_outlines"!=o||(r=r+" .swp_social_panel.swp_default_custom_color_outlines a, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_custom_color_outlines:hover a { color:"+s+"; } .swp_social_panel.swp_default_custom_color_outlines .nc_tweetContainer, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover, body .swp_social_panel.swp_other_custom_color_outlines:hover .nc_tweetContainer { background:transparent; border:1px solid "+s+"; }"),jQuery("head").append('<style type="text/css" class="swp_customColorStuff">'+r+"</style>")}function y(){function e(e){var t=jQuery('select[name="'+e+'"]').val();if(0===t.indexOf("custom")){return e.slice(0,e.indexOf("_"))+"_full_color"}return t}var o=e("button_shape"),s=e("default_colors"),r=e("single_colors"),a=e("hover_colors"),n="swp_"+o+" swp_default_"+s+" swp_individual_"+r+" swp_other_"+a;if(void 0===socialWarfare.lastClass){var l=t(".swp_social_panel");if(!l.length)return;socialWarfare.lastClass=l.get().className}var n="swp_"+o+" swp_default_"+s+" swp_individual_"+r+" swp_other_"+a;jQuery(".swp_social_panel").removeClass("swp_other_medium_gray"),jQuery(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(n),socialWarfare.lastClass=n}function d(){if(0!==jQuery('select[name="button_shape"]').length){var e={full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},t={flat_fresh:e,leaf:e,pill:e,three_dee:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray"},connected:e,shift:e,boxed:e,modern:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},dark:{light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"}},o=jQuery('select[name="button_shape"]').val(),s=jQuery('select[name="default_colors"]').val(),r=jQuery('select[name="single_colors"]').val(),a=jQuery('select[name="hover_colors"]').val(),n=jQuery('select[name="button_shape"]').find("option").map(function(e,t){return t.value});jQuery('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),jQuery.each(t[o],function(e,t){e===s?jQuery('select[name="default_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="default_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===r?jQuery('select[name="single_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="single_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===a?jQuery('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="hover_colors"]').append('<option value="'+e+'">'+t+"</option>"),"custom_color"==s||"custom_color_outlines"==s||"custom_color"==r||"custom_color_outlines"==r||"custom_color"==a||"custom_color_outlines"==a?(jQuery(".customColor_wrapper").slideDown(),m()):jQuery(".customColor_wrapper").slideUp()}),jQuery('select[name="default_colors"], select[name="single_colors"], select[name="hover_colors"]').on("change",y),jQuery('select[name="button_shape"]').on("change",function(){var e=jQuery('select[name="button_shape"]').val(),o=jQuery('select[name="default_colors"]').val(),s=jQuery('select[name="single_colors"]').val(),r=jQuery('select[name="hover_colors"]').val(),a=0,l=t[e],i=l.hasOwnProperty(o),u=l.hasOwnProperty(s),c=l.hasOwnProperty(r);jQuery('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),jQuery.each(t[e],function(e,t){e===o||0==i&&0==a?jQuery('select[name="default_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="default_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===s||0==u&&0==a?jQuery('select[name="single_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="single_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===r||0==c&&0==a?jQuery('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="hover_colors"]').append('<option value="'+e+'">'+t+"</option>"),++a}),void 0===socialWarfare.lastClass&&(socialWarfare.lastClass="swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color");var _="swp_"+e+" swp_default_"+o+" swp_individual_"+s+" swp_other_"+r;n.map(function(e,t){jQuery(".swp_social_panel").removeClass("swp_"+t.value)}),jQuery(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(_),socialWarfare.lastClass=_})}}function f(){jQuery('select[name="button_size"],select[name="button_alignment"]').on("change",function(){jQuery(".swp_social_panel").css({width:"100%"});var e,t=jQuery(".swp_social_panel").width(),o=jQuery('select[name="button_size"]').val(),s=jQuery('select[name="button_alignment"]').val();"full_width"==s&&1!=o||o>=1?(e=t/o,jQuery(".swp_social_panel").css("cssText","width:"+e+"px!important;"),jQuery(".swp_social_panel").css({transform:"scale("+o+")","transform-origin":"left"})):"full_width"!=s&&o<1&&(e=t/o,jQuery(".swp_social_panel").css({transform:"scale("+o+")","transform-origin":s})),socialWarfare.activateHoverStates()})}function w(){var e=jQuery('select[name="ctt_theme"]');e.on("change",function(){var e=jQuery('select[name="ctt_theme"]').val();jQuery(".swp_CTT").attr("class","swp_CTT").addClass(e)}),e.trigger("change")}function v(e,t){var o=jQuery(".sw-admin-wrapper");o.attr("swp-addons"),o.attr("swp-registrations");jQuery(".registration-wrapper."+t).attr("registration",e),1===parseInt(e)?(o.attr("sw-registered",e),jQuery(".sw-top-menu").attr("sw-registered",e),Q(o,"swp-registrations",t)):j(o,"swp-registrations",t)}function j(e,t,o){var s=jQuery(e).attr(t),r=s.indexOf(o);if(-1!==r){var a=r+o.length,n=s.slice(0,r)+s.slice(a);jQuery(e).attr(t,n)}}function Q(e,t,o){var s=jQuery(e).attr(t);s.includes(o)||jQuery(e).attr(t,s+o)}function h(t,o){var s=!1,r={action:"swp_register_plugin",security:swpAdminOptionsData.registerNonce,activity:"register",name_key:t,item_id:o,license_key:jQuery('input[name="'+t+'_license_key"]').val()};return _(),jQuery.post(ajaxurl,r,function(o){if("object"!=typeof(o=JSON.parse(o)))throw o;if(o.success)v("1",t),s=!0;else{alert("This license key is not currently active. Please check the status of your key at https://warfareplugins.com/my-account/license-keys/")}p(s),e.location.reload(!0)}),s}function g(t,o){var s=!1,r={action:"swp_unregister_plugin",security:swpAdminOptionsData.registerNonce,activity:"unregister",name_key:t,item_id:o};return _(),jQuery.post(ajaxurl,r,function(o){if(o=JSON.parse(o),o.success)jQuery('input[name="'+t+'_license_key"]').val(""),v("0",t),s=!0;else{alert("Sorry, we had trouble deactivating your key. Please let us know about this at https://warfareplugins.com/subit-ticket")}p(s),e.location.reload(!0)}),s}function C(){jQuery(".register-plugin").on("click",function(){return h(jQuery(this).attr("swp-addon"),jQuery(this).attr("swp-item-id").trim()),!1}),jQuery(".unregister-plugin").on("click",function(){return g(jQuery(this).attr("swp-addon"),jQuery(this).attr("swp-item-id").trim()),!1})}function b(){jQuery(".sw-buttons-sort.sw-active").sortable({connectWith:".sw-buttons-sort.sw-inactive",update:function(){u()}}),jQuery(".sw-buttons-sort.sw-inactive").sortable({connectWith:".sw-buttons-sort.sw-active",update:function(){u()}})}function O(){jQuery(".sw-system-status").on("click",function(e){e.preventDefault(),jQuery(".system-status-wrapper").slideToggle(),s(jQuery(".system-status-container").get(0))})}function k(){var e;jQuery(".swp_upload_image_button").click(function(t){t.preventDefault();var o=jQuery(this).attr("for");if(e)return void e.open();e=wp.media.frames.file_frame=wp.media({title:"Choose Image",button:{text:"Choose Image"},multiple:!1}),e.on("select",function(){var t=e.state().get("selection").first().toJSON();jQuery('input[name="'+o+'"').val(t.url)}),e.open()})}function x(){var e=jQuery("#ctt_preview"),t=jQuery("select[name=ctt_theme]");e.length||(e=jQuery('<style id="ctt_preview"></style>'),jQuery("head").append(e)),"none"===jQuery(t).val()&&W(),jQuery(t).on("change",function(e){"none"===e.target.value&&W()}),jQuery("textarea[name=ctt_css]").on("keyup",W)}function W(){var e=jQuery("#ctt_preview"),t=jQuery("textarea[name=ctt_css]");jQuery(e).text(jQuery(t).val())}function G(e){var t,o=e.target,s=jQuery(o).data("network"),r=(o.getBoundingClientRect(),{top:jQuery(o).position().top-50,left:jQuery(o).position().left+4});if(s.indexOf("_")>0){s=s.split("_").map(function(e){return e[0].toUpperCase()+e.slice(1,e.length)}).join(" ")}if(s=s[0].toUpperCase()+s.slice(1,s.length),t=jQuery('<span class="swp-icon-tooltip">'+s+"</span>").css(r).get(0),jQuery(this).parents(".sw-grid").first().append(t),jQuery(t).outerWidth()>jQuery(o).outerWidth()){var a=jQuery(t).outerWidth()-jQuery(o).outerWidth();r.left=r.left-a/2,jQuery(t).css(r)}jQuery(o).on("mousedown",function(e){jQuery("body").mousemove(function(){D(),jQuery("body").off("mousemove")})})}function D(e){jQuery(".swp-icon-tooltip").remove()}function S(){jQuery("[class*='sw-'][class*='-icon']").each(function(e,t){jQuery(t).hover(G,D)})}e.onload=function(){var e="[name=default_colors],[name=hover_colors], [name=single_colors]",t="[name=float_default_colors], [name=float_hover_colors], [name=float_single_colors]";jQuery("[name=custom_color],[name=custom_color_outlines],[name=float_custom_color],[name=float_custom_color_outlines]").parent().parent().hide(),jQuery(e).each(function(e,t){var o=jQuery(t).val(),s=jQuery("[name=custom_color]").parent().parent(),r=jQuery("[name=custom_color_outlines]").parent().parent();-1!==o.indexOf("custom")&&(o.indexOf("outlines")>0?r.show():s.show())}),jQuery(t).each(function(e,t){var o=jQuery(t).val(),s=jQuery("[name=float_custom_color]").parent().parent(),r=jQuery("[name=float_custom_color_outlines]").parent().parent();-1!==o.indexOf("custom")&&(o.indexOf("outlines")>0?r.show():s.show())}),jQuery(e).on("change",function(t){var s=(t.target.value,jQuery("[name=custom_color]").parent().parent()),r=jQuery("[name=custom_color_outlines]").parent().parent();o(t,e,s,r)}),jQuery(t).on("change",function(e){var s=(e.target.value,jQuery("[name=float_custom_color]").parent().parent()),r=jQuery("[name=float_custom_color_outlines]").parent().parent();s.hide(),r.hide(),o(e,t,s,r)})},jQuery(document).ready(function(){c(),i(),a(),n(),l(),d(),swpConditionalFields(),w(),f(),C(),b(),O(),k(),x(),S()})}(this,jQuery);
1
+ !function(e,t){"use strict";function o(e,t,o,s){var r={customColor:!1,customOutlines:!1};jQuery(t).each(function(e,t){var o=jQuery(t).val();-1!==o.indexOf("custom")&&(o.indexOf("outlines")>0?r.customOutlines=!0:r.customColor=!0)}),r.customColor?o.slideDown():o.slideUp(),r.customOutlines?s.slideDown():s.slideUp(),r.customColor||r.customOutlines?(jQuery("body").append('<div id="color-notice"><p><span class="color-dismiss"></span><b>Note:</b> Custom colors will not show up in the preview, but will on your site.</p></div>'),jQuery(".color-dismiss").on("click",function(){jQuery("#color-notice").fadeOut("slow")})):jQuery("#color-notice").length&&jQuery("#color-notice").fadeOut("slow")}function s(t){var o,s;document.body.createTextRange?(o=document.body.createTextRange(),o.moveToElementText(t),o.select()):e.getSelection&&(s=e.getSelection(),o=document.createRange(),o.selectNodeContents(t),s.removeAllRanges(),s.addRange(o))}function r(){var e={};return jQuery("form.sw-admin-settings-form input, form.sw-admin-settings-form select, form.sw-admin-settings-form textarea").each(function(){var t,o=jQuery(this),s=o.attr("name");t="checkbox"===o.attr("type")?o.prop("checked"):o.val(),e[s]=t}),e.order_of_icons={},jQuery(".sw-active i").each(function(){var t=jQuery(this).data("network");e.order_of_icons[t]=t}),e}function a(){var e=jQuery(".sw-top-menu").offset(),t=jQuery(".sw-top-menu").width();jQuery(".sw-top-menu").css({position:"fixed",left:e.left,top:e.top,width:t}),jQuery(".sw-admin-wrapper").css("padding-top","75px")}function n(){jQuery(".sw-tab-selector").on("click",function(e){e.preventDefault(),jQuery("html, body").animate({scrollTop:0},300);var t=jQuery(this).attr("data-link");jQuery(".sw-admin-tab").hide(),jQuery("#"+t).show(),jQuery(".sw-header-menu li").removeClass("sw-active-tab"),jQuery(this).parents("li").addClass("sw-active-tab"),"swp_styles"===t&&socialWarfare.activateHoverStates(),swpConditionalFields()})}function l(){jQuery(".sw-checkbox-toggle").on("click",function(){var e=jQuery(this).attr("status"),t=jQuery(this).attr("field");"on"===e?(jQuery(this).attr("status","off"),jQuery(t).prop("checked",!1)):(jQuery(this).attr("status","on"),jQuery(t).prop("checked",!0)),u(),swpConditionalFields()})}function i(){jQuery("form.sw-admin-settings-form input, form.sw-admin-settings-form select").on("change",function(){swpConditionalFields(),socialWarfare.newOptions=r(),u()}),socialWarfare.defaultOptions=r()}function u(){socialWarfare.newOptions=r(),JSON.stringify(socialWarfare.newOptions)!==JSON.stringify(socialWarfare.defaultOptions)?jQuery(".sw-save-settings").removeClass("sw-navy-button").addClass("sw-red-button"):jQuery(".sw-save-settings").removeClass("sw-red-button").addClass("sw-navy-button")}function c(){jQuery(".sw-save-settings").on("click",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,_();var t=r(),o={action:"swp_store_settings",security:swpAdminOptionsData.optionsNonce,settings:t};jQuery.post({url:ajaxurl,data:o,success:function(e){p(!0),socialWarfare.defaultOptions=r(),u()}})})}function _(){jQuery("body").append('<div class="sw-loading-bg"><div class="sw-loading-message">Saving Changes</div></div>')}function p(e){var t=e?"Success!":"";jQuery(".sw-loading-message").html(t).removeClass("sw-loading-message").addClass("sw-loading-complete"),jQuery(".sw-loading-bg").delay(1e3).fadeOut(1e3),setTimeout(function(){jQuery(".sw-loading-bg").remove()},2e3)}function m(){var e=(jQuery('select[name="button_shape"]').val(),jQuery('select[name="default_colors"]').val()),t=jQuery('select[name="single_colors"]').val(),o=jQuery('select[name="hover_colors"]').val();jQuery("style.swp_customColorStuff").remove();var s=jQuery('input[name="custom_color"]').val(),r="";"custom_color"!=e&&"custom_color"!=t&&"custom_color"!=o||(r=".swp_social_panel.swp_default_customColor a, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_customColor:hover a {color:white} .swp_social_panel.swp_default_customColor .nc_tweetContainer, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover, body .swp_social_panel.swp_other_customColor:hover .nc_tweetContainer {background-color:"+s+";border:1px solid "+s+";}"),"custom_color_outlines"!=e&&"custom_color_outlines"!=t&&"custom_color_outlines"!=o||(r=r+" .swp_social_panel.swp_default_custom_color_outlines a, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_custom_color_outlines:hover a { color:"+s+"; } .swp_social_panel.swp_default_custom_color_outlines .nc_tweetContainer, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover, body .swp_social_panel.swp_other_custom_color_outlines:hover .nc_tweetContainer { background:transparent; border:1px solid "+s+"; }"),jQuery("head").append('<style type="text/css" class="swp_customColorStuff">'+r+"</style>")}function y(){function e(e){var t=jQuery('select[name="'+e+'"]').val();if(0===t.indexOf("custom")){return e.slice(0,e.indexOf("_"))+"_full_color"}return t}var o=e("button_shape"),s=e("default_colors"),r=e("single_colors"),a=e("hover_colors"),n="swp_"+o+" swp_default_"+s+" swp_individual_"+r+" swp_other_"+a;if(void 0===socialWarfare.lastClass){var l=t(".swp_social_panel");if(!l.length)return;socialWarfare.lastClass=l.get().className}var n="swp_"+o+" swp_default_"+s+" swp_individual_"+r+" swp_other_"+a;jQuery(".swp_social_panel").removeClass("swp_other_medium_gray"),jQuery(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(n),socialWarfare.lastClass=n}function d(){if(0!==jQuery('select[name="button_shape"]').length){var e={full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},t={flat_fresh:e,leaf:e,pill:e,three_dee:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray"},connected:e,shift:e,boxed:e,modern:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},dark:{light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"}},o=jQuery('select[name="button_shape"]').val(),s=jQuery('select[name="default_colors"]').val(),r=jQuery('select[name="single_colors"]').val(),a=jQuery('select[name="hover_colors"]').val(),n=jQuery('select[name="button_shape"]').find("option").map(function(e,t){return t.value});jQuery('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),jQuery.each(t[o],function(e,t){e===s?jQuery('select[name="default_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="default_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===r?jQuery('select[name="single_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="single_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===a?jQuery('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="hover_colors"]').append('<option value="'+e+'">'+t+"</option>"),"custom_color"==s||"custom_color_outlines"==s||"custom_color"==r||"custom_color_outlines"==r||"custom_color"==a||"custom_color_outlines"==a?(jQuery(".customColor_wrapper").slideDown(),m()):jQuery(".customColor_wrapper").slideUp()}),jQuery('select[name="default_colors"], select[name="single_colors"], select[name="hover_colors"]').on("change",y),jQuery('select[name="button_shape"]').on("change",function(){var e=jQuery('select[name="button_shape"]').val(),o=jQuery('select[name="default_colors"]').val(),s=jQuery('select[name="single_colors"]').val(),r=jQuery('select[name="hover_colors"]').val(),a=0,l=t[e],i=l.hasOwnProperty(o),u=l.hasOwnProperty(s),c=l.hasOwnProperty(r);jQuery('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),jQuery.each(t[e],function(e,t){e===o||0==i&&0==a?jQuery('select[name="default_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="default_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===s||0==u&&0==a?jQuery('select[name="single_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="single_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===r||0==c&&0==a?jQuery('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):jQuery('select[name="hover_colors"]').append('<option value="'+e+'">'+t+"</option>"),++a}),void 0===socialWarfare.lastClass&&(socialWarfare.lastClass="swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color");var _="swp_"+e+" swp_default_"+o+" swp_individual_"+s+" swp_other_"+r;n.map(function(e,t){jQuery(".swp_social_panel").removeClass("swp_"+t.value)}),jQuery(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(_),socialWarfare.lastClass=_})}}function f(){jQuery('select[name="button_size"],select[name="button_alignment"]').on("change",function(){jQuery(".swp_social_panel").css({width:"100%"});var e,t=jQuery(".swp_social_panel").width(),o=jQuery('select[name="button_size"]').val(),s=jQuery('select[name="button_alignment"]').val();"full_width"==s&&1!=o||o>=1?(e=t/o,jQuery(".swp_social_panel").css("cssText","width:"+e+"px!important;"),jQuery(".swp_social_panel").css({transform:"scale("+o+")","transform-origin":"left"})):"full_width"!=s&&o<1&&(e=t/o,jQuery(".swp_social_panel").css({transform:"scale("+o+")","transform-origin":s})),socialWarfare.activateHoverStates()})}function w(){var e=jQuery('select[name="ctt_theme"]');e.on("change",function(){var e=jQuery('select[name="ctt_theme"]').val();jQuery(".swp_CTT").attr("class","swp_CTT").addClass(e)}),e.trigger("change")}function v(e,t){var o=jQuery(".sw-admin-wrapper");o.attr("swp-addons"),o.attr("swp-registrations");jQuery(".registration-wrapper."+t).attr("registration",e),1===parseInt(e)?(o.attr("sw-registered",e),jQuery(".sw-top-menu").attr("sw-registered",e),Q(o,"swp-registrations",t)):j(o,"swp-registrations",t)}function j(e,t,o){var s=jQuery(e).attr(t),r=s.indexOf(o);if(-1!==r){var a=r+o.length,n=s.slice(0,r)+s.slice(a);jQuery(e).attr(t,n)}}function Q(e,t,o){var s=jQuery(e).attr(t);s.includes(o)||jQuery(e).attr(t,s+o)}function h(t,o){var s=!1,r={action:"swp_register_plugin",security:swpAdminOptionsData.registerNonce,activity:"register",name_key:t,item_id:o,license_key:jQuery('input[name="'+t+'_license_key"]').val()};return _(),jQuery.post(ajaxurl,r,function(o){if("object"!=typeof(o=JSON.parse(o)))throw o;if(o.success)v("1",t),s=!0;else{alert("This license key is not currently active. Please check the status of your key at https://warfareplugins.com/my-account/license-keys/")}p(s),e.location.reload(!0)}),s}function g(t,o){var s=!1,r={action:"swp_unregister_plugin",security:swpAdminOptionsData.registerNonce,activity:"unregister",name_key:t,item_id:o};return _(),jQuery.post(ajaxurl,r,function(o){if(o=JSON.parse(o),o.success)jQuery('input[name="'+t+'_license_key"]').val(""),v("0",t),s=!0;else{alert("Sorry, we had trouble deactivating your key. Please let us know about this at https://warfareplugins.com/submit-ticket")}p(s),e.location.reload(!0)}),s}function C(){jQuery(".register-plugin").on("click",function(){return h(jQuery(this).attr("swp-addon"),jQuery(this).attr("swp-item-id").trim()),!1}),jQuery(".unregister-plugin").on("click",function(){return g(jQuery(this).attr("swp-addon"),jQuery(this).attr("swp-item-id").trim()),!1})}function b(){jQuery(".sw-buttons-sort.sw-active").sortable({connectWith:".sw-buttons-sort.sw-inactive",update:function(){u()}}),jQuery(".sw-buttons-sort.sw-inactive").sortable({connectWith:".sw-buttons-sort.sw-active",update:function(){u()}})}function O(){jQuery(".sw-system-status").on("click",function(e){e.preventDefault(),jQuery(".system-status-wrapper").slideToggle(),s(jQuery(".system-status-container").get(0))})}function k(){var e;jQuery(".swp_upload_image_button").click(function(t){t.preventDefault();var o=jQuery(this).attr("for");if(e)return void e.open();e=wp.media.frames.file_frame=wp.media({title:"Choose Image",button:{text:"Choose Image"},multiple:!1}),e.on("select",function(){var t=e.state().get("selection").first().toJSON();jQuery('input[name="'+o+'"').val(t.url)}),e.open()})}function x(){var e=jQuery("#ctt_preview"),t=jQuery("select[name=ctt_theme]");e.length||(e=jQuery('<style id="ctt_preview"></style>'),jQuery("head").append(e)),"none"===jQuery(t).val()&&W(),jQuery(t).on("change",function(e){"none"===e.target.value&&W()}),jQuery("textarea[name=ctt_css]").on("keyup",W)}function W(){var e=jQuery("#ctt_preview"),t=jQuery("textarea[name=ctt_css]");jQuery(e).text(jQuery(t).val())}function G(e){var t,o=e.target,s=jQuery(o).data("network"),r=(o.getBoundingClientRect(),{top:jQuery(o).position().top-50,left:jQuery(o).position().left+4});if(s.indexOf("_")>0){s=s.split("_").map(function(e){return e[0].toUpperCase()+e.slice(1,e.length)}).join(" ")}if(s=s[0].toUpperCase()+s.slice(1,s.length),t=jQuery('<span class="swp-icon-tooltip">'+s+"</span>").css(r).get(0),jQuery(this).parents(".sw-grid").first().append(t),jQuery(t).outerWidth()>jQuery(o).outerWidth()){var a=jQuery(t).outerWidth()-jQuery(o).outerWidth();r.left=r.left-a/2,jQuery(t).css(r)}jQuery(o).on("mousedown",function(e){jQuery("body").mousemove(function(){D(),jQuery("body").off("mousemove")})})}function D(e){jQuery(".swp-icon-tooltip").remove()}function S(){jQuery("[class*='sw-'][class*='-icon']").each(function(e,t){jQuery(t).hover(G,D)})}e.onload=function(){var e="[name=default_colors],[name=hover_colors], [name=single_colors]",t="[name=float_default_colors], [name=float_hover_colors], [name=float_single_colors]";jQuery("[name=custom_color],[name=custom_color_outlines],[name=float_custom_color],[name=float_custom_color_outlines]").parent().parent().hide(),jQuery(e).each(function(e,t){var o=jQuery(t).val(),s=jQuery("[name=custom_color]").parent().parent(),r=jQuery("[name=custom_color_outlines]").parent().parent();-1!==o.indexOf("custom")&&(o.indexOf("outlines")>0?r.show():s.show())}),jQuery(t).each(function(e,t){var o=jQuery(t).val(),s=jQuery("[name=float_custom_color]").parent().parent(),r=jQuery("[name=float_custom_color_outlines]").parent().parent();-1!==o.indexOf("custom")&&(o.indexOf("outlines")>0?r.show():s.show())}),jQuery(e).on("change",function(t){var s=(t.target.value,jQuery("[name=custom_color]").parent().parent()),r=jQuery("[name=custom_color_outlines]").parent().parent();o(t,e,s,r)}),jQuery(t).on("change",function(e){var s=(e.target.value,jQuery("[name=float_custom_color]").parent().parent()),r=jQuery("[name=float_custom_color_outlines]").parent().parent();s.hide(),r.hide(),o(e,t,s,r)})},jQuery(document).ready(function(){c(),i(),a(),n(),l(),d(),swpConditionalFields(),w(),f(),C(),b(),O(),k(),x(),S()})}(this,jQuery);
lib/Social_Warfare_Addon.php CHANGED
@@ -6,6 +6,7 @@ class Social_Warfare_Addon {
6
  $this->establish_license_key();
7
  $this->is_registered = $this->establish_resgistration();
8
 
 
9
  add_action( 'wp_ajax_swp_register_plugin', [$this, 'register_plugin'] );
10
  add_action( 'wp_ajax_swp_unregister_plugin', [$this, 'unregister_plugin'] );
11
  add_action( 'wp_ajax_swp_ajax_passthrough', [$this, 'ajax_passthrough'] );
@@ -216,7 +217,6 @@ class Social_Warfare_Addon {
216
  *
217
  */
218
  public function unregister_plugin() {
219
-
220
  // Setup the variables needed for processing
221
  $options = get_option( 'social_warfare_settings' );
222
  $key = $_POST['name_key'];
@@ -249,7 +249,7 @@ class Social_Warfare_Addon {
249
 
250
  $response = json_decode( $response );
251
 
252
- if ( $response->license == 'deactivated' ) {
253
  $options = get_option( 'social_warfare_settings' );
254
  $options[$key.'_license_key'] = '';
255
  update_option( 'social_warfare_settings' , $options );
@@ -259,6 +259,7 @@ class Social_Warfare_Addon {
259
  }
260
 
261
  public function ajax_passthrough() {
 
262
  if ( ! check_ajax_referer( 'swp_plugin_registration', 'security', false ) ) {
263
  wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
264
  die;
6
  $this->establish_license_key();
7
  $this->is_registered = $this->establish_resgistration();
8
 
9
+ // Verify the user can perform these types of actions.
10
  add_action( 'wp_ajax_swp_register_plugin', [$this, 'register_plugin'] );
11
  add_action( 'wp_ajax_swp_unregister_plugin', [$this, 'unregister_plugin'] );
12
  add_action( 'wp_ajax_swp_ajax_passthrough', [$this, 'ajax_passthrough'] );
217
  *
218
  */
219
  public function unregister_plugin() {
 
220
  // Setup the variables needed for processing
221
  $options = get_option( 'social_warfare_settings' );
222
  $key = $_POST['name_key'];
249
 
250
  $response = json_decode( $response );
251
 
252
+ if ( $response->license == 'deactivated' || $response->license == 'failed' ) {
253
  $options = get_option( 'social_warfare_settings' );
254
  $options[$key.'_license_key'] = '';
255
  update_option( 'social_warfare_settings' , $options );
259
  }
260
 
261
  public function ajax_passthrough() {
262
+
263
  if ( ! check_ajax_referer( 'swp_plugin_registration', 'security', false ) ) {
264
  wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
265
  die;
lib/frontend-output/SWP_Header_Output.php CHANGED
@@ -124,7 +124,13 @@ class SWP_Header_Output {
124
  *
125
  */
126
  function output_font_css( $meta_html ) {
127
- //* Make sure we only output the style once.
 
 
 
 
 
 
128
  if ( !empty( $meta_html ) && strpos( $meta_html, 'font-family: "sw-icon-font"' ) ) :
129
  return $meta_html;
130
  endif;
124
  *
125
  */
126
  function output_font_css( $meta_html ) {
127
+ // The var $meta_html is passed to both string and array filters.
128
+ // The solution is to re-wire those filters appropriately. This is the patch.
129
+ if ( is_array( $meta_html ) ) {
130
+ return $meta_html;
131
+ }
132
+
133
+ // Make sure we only output the style once.
134
  if ( !empty( $meta_html ) && strpos( $meta_html, 'font-family: "sw-icon-font"' ) ) :
135
  return $meta_html;
136
  endif;
lib/frontend-output/SWP_Shortcode.php CHANGED
@@ -119,38 +119,8 @@ class SWP_Shortcode {
119
  }
120
 
121
 
122
- /**
123
- * Fetch a Twitter Username for the Via parameter.
124
- *
125
- * We'll fetch the Twitter username at the global level, the author
126
- * level and the post level and then use the lowest level available.
127
- *
128
- */
129
- $twitter_handle = SWP_Utility::get_option( 'twitter_id' );
130
- $author_twitter_handle = get_the_author_meta( 'swp_twitter', $post->post_author );
131
-
132
-
133
- /**
134
- * If the author of thist post has an assigned Twitter username, we will
135
- * override the global Twitter username with the author level username.
136
- *
137
- */
138
- if ( false !== $author_twitter_handle && !empty( $author_twitter_handle ) ) {
139
- $twitter_handle = $author_twitter_handle;
140
- }
141
-
142
-
143
- /**
144
- * If after all three checks, we were able to find a Twitter username,
145
- * then we'll create the via parameter of the link. If not, it will be
146
- * an empty string.
147
- *
148
- */
149
- $via = '';
150
- if( !empty( $twitter_handle ) ) {
151
- $via = '&via=' . $twitter_handle;
152
- }
153
-
154
 
155
  /**
156
  * If a theme was passed into the shortcode via a parameter, we'll use
119
  }
120
 
121
 
122
+ // Generate the @via for the author of this $post, or an empty string.
123
+ $via = SWP_Twitter::get_via_parameter( $post );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
  /**
126
  * If a theme was passed into the shortcode via a parameter, we'll use
lib/options/SWP_User_Options.php CHANGED
@@ -41,13 +41,13 @@ class SWP_User_Options {
41
  */
42
  public function __construct() {
43
 
44
- $this->establish_option_data();
45
  $this->filter_option_data();
46
  $this->globalize_option_data();
47
 
48
  // Defered to End of Cycle: Add all relevant option info to the database.
49
  add_action( 'wp_loaded', array( $this , 'store_registered_options_data' ), 10000 );
50
- add_action( 'admin_footer', array( $this, 'debug' ) );
51
  add_action( 'wp_footer', array( $this, 'debug' ) );
52
  }
53
 
@@ -57,7 +57,7 @@ class SWP_User_Options {
57
  * them in a local property.
58
  *
59
  * @since 3.4.0 | 19 SEP 2018 | Created
60
- * @param void
61
  * @return void
62
  *
63
  */
@@ -68,13 +68,13 @@ class SWP_User_Options {
68
  }
69
 
70
 
71
- /**
72
- * Compares what the admin wants to what is available to the admin.
73
- *
74
- * @return void
75
- *
76
- */
77
- protected function filter_option_data() {
78
 
79
 
80
  /**
@@ -82,14 +82,14 @@ class SWP_User_Options {
82
  * run any of the filters.
83
  *
84
  */
85
- if( false === $this->registered_options ) {
86
  return;
87
  }
88
 
89
- $this->remove_unavailable_options();
90
  $this->correct_invalid_values();
91
  $this->add_option_defaults();
92
- }
93
 
94
 
95
  /**
@@ -137,7 +137,7 @@ class SWP_User_Options {
137
  * need to be whitelisted.
138
  *
139
  */
140
- $whitelist = $this->generate_whitelist();
141
 
142
 
143
  /**
@@ -147,10 +147,10 @@ class SWP_User_Options {
147
  * indeed a valid value.
148
  *
149
  */
150
- $new_registered_options = array(
151
- 'defaults' => apply_filters( 'swp_options_page_defaults', array() ),
152
- 'values' => apply_filters( 'swp_options_page_values', array() )
153
- );
154
 
155
 
156
  /**
@@ -160,7 +160,7 @@ class SWP_User_Options {
160
  * are not filtered out.
161
  *
162
  */
163
- $registrations = apply_filters( 'swp_registrations', array() );
164
 
165
 
166
  /**
@@ -170,7 +170,7 @@ class SWP_User_Options {
170
  * options array.
171
  *
172
  */
173
- foreach( $whitelist as $key ) {
174
 
175
 
176
  /**
@@ -178,15 +178,15 @@ class SWP_User_Options {
178
  * we don't actually need to whitelist it.
179
  *
180
  */
181
- if ( !isset( $this->unfiltered_options[$key] ) ) {
182
  continue;
183
  }
184
 
185
- $new_registered_options['defaults'][$key] = $this->unfiltered_options[$key];
186
- $new_registered_options['values'][$key]['type'] = 'none';
187
- $new_registered_options['values'][$key]['values'] = $this->unfiltered_options[$key];
188
 
189
- }
190
 
191
 
192
  /**
@@ -222,8 +222,8 @@ class SWP_User_Options {
222
  * registered from the options page, so we manually whitelist them.
223
  *
224
  */
225
- $addons = apply_filters( 'swp_registrations', array() );
226
- $whitelist = array(
227
  'last_migrated',
228
  'bitly_access_token',
229
  'bitly_access_login',
@@ -236,9 +236,9 @@ class SWP_User_Options {
236
  * return the existing whitelist from above.
237
  *
238
  */
239
- if ( empty( $addons) ) {
240
- return $whitelist;
241
- }
242
 
243
 
244
  /**
@@ -247,10 +247,10 @@ class SWP_User_Options {
247
  * that we don't filter it out.
248
  *
249
  */
250
- foreach( $addons as $addon ) {
251
- $whitelist[] = $addon->key . '_license_key';
252
- $whitelist[] = $addon->key . '_license_key_timestamp';
253
- }
254
 
255
  return $whitelist;
256
  }
@@ -278,9 +278,9 @@ class SWP_User_Options {
278
  * saved in the database. Only save those keys that are registered.
279
  *
280
  */
281
- $defaults = array_keys( $this->registered_options['defaults'] );
282
- $options = array_keys ( $this->user_options );
283
- $available_options = array_intersect( $defaults, $options );
284
 
285
 
286
  /**
@@ -288,7 +288,7 @@ class SWP_User_Options {
288
  * that it is setup properly and doesn't need filtered out.
289
  *
290
  */
291
- foreach( $this->user_options as $key => $value ) {
292
 
293
 
294
  /**
@@ -296,11 +296,11 @@ class SWP_User_Options {
296
  * the logic that controls it's filtering to a separate method.
297
  *
298
  */
299
- if ( $key == 'order_of_icons' ) {
300
- $value = $this->filter_order_of_icons( $value );
301
- $this->user_icons[$key] = $value;
302
- continue;
303
- }
304
 
305
 
306
  /**
@@ -308,10 +308,10 @@ class SWP_User_Options {
308
  * options, we need to filter it out of the user options.
309
  *
310
  */
311
- if ( !in_array( $key, $available_options ) ) {
312
- unset( $this->user_options[$key] );
313
- }
314
- }
315
  }
316
 
317
 
@@ -328,7 +328,7 @@ class SWP_User_Options {
328
  * @return array The modified array of social networks.
329
  *
330
  */
331
- private function filter_order_of_icons( $user_icons = array() ) {
332
 
333
 
334
  /**
@@ -336,8 +336,8 @@ class SWP_User_Options {
336
  * so that we can compare them to each other below.
337
  *
338
  */
339
- $networks = $this->registered_options['values']['order_of_icons']['values'];
340
- $user_icons = $this->user_options['order_of_icons'];
341
 
342
 
343
  /**
@@ -346,24 +346,24 @@ class SWP_User_Options {
346
  * but pro is not longer installed, these will need to be filtered out.
347
  *
348
  */
349
- foreach( $user_icons as $network_key ) {
350
- if ( empty( $networks[$network_key] ) ) {
351
- unset( $user_icons[$network_key] );
352
- }
353
- }
354
 
355
 
356
- /**
357
- * If the user does not have any networks selected (like on a fresh
358
- * install) then simply create some defaults for them and then return.
359
- *
360
- */
361
- if ( empty ( $user_icons ) ) {
362
- $user_icons = $this->registered_options['defaults']['order_of_icons'];
363
- }
364
 
365
- return $user_icons;
366
- }
367
 
368
 
369
  /**
@@ -375,10 +375,34 @@ class SWP_User_Options {
375
  *
376
  */
377
  private function correct_invalid_values() {
378
- $defaults = $this->registered_options['defaults'];
379
  $values = $this->registered_options['values'];
380
 
381
  foreach( $this->user_options as $key => $value ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  if( $values[$key]['type'] == 'select' && !array_key_exists( $value, $values[$key]['values']) ) {
383
  $this->user_options[$key] = $defaults[$key];
384
  }
@@ -405,5 +429,5 @@ class SWP_User_Options {
405
  $this->user_options[$key] = $value;
406
  }
407
  }
408
- }
409
  }
41
  */
42
  public function __construct() {
43
 
44
+ $this->establish_option_data();
45
  $this->filter_option_data();
46
  $this->globalize_option_data();
47
 
48
  // Defered to End of Cycle: Add all relevant option info to the database.
49
  add_action( 'wp_loaded', array( $this , 'store_registered_options_data' ), 10000 );
50
+ add_action( 'admin_footer', array( $this, 'debug' ) );
51
  add_action( 'wp_footer', array( $this, 'debug' ) );
52
  }
53
 
57
  * them in a local property.
58
  *
59
  * @since 3.4.0 | 19 SEP 2018 | Created
60
+ * @param void
61
  * @return void
62
  *
63
  */
68
  }
69
 
70
 
71
+ /**
72
+ * Compares what the admin wants to what is available to the admin.
73
+ *
74
+ * @return void
75
+ *
76
+ */
77
+ protected function filter_option_data() {
78
 
79
 
80
  /**
82
  * run any of the filters.
83
  *
84
  */
85
+ if( false === $this->registered_options ) {
86
  return;
87
  }
88
 
89
+ $this->remove_unavailable_options();
90
  $this->correct_invalid_values();
91
  $this->add_option_defaults();
92
+ }
93
 
94
 
95
  /**
137
  * need to be whitelisted.
138
  *
139
  */
140
+ $whitelist = $this->generate_whitelist();
141
 
142
 
143
  /**
147
  * indeed a valid value.
148
  *
149
  */
150
+ $new_registered_options = array(
151
+ 'defaults' => apply_filters( 'swp_options_page_defaults', array() ),
152
+ 'values' => apply_filters( 'swp_options_page_values', array() )
153
+ );
154
 
155
 
156
  /**
160
  * are not filtered out.
161
  *
162
  */
163
+ $registrations = apply_filters( 'swp_registrations', array() );
164
 
165
 
166
  /**
170
  * options array.
171
  *
172
  */
173
+ foreach( $whitelist as $key ) {
174
 
175
 
176
  /**
178
  * we don't actually need to whitelist it.
179
  *
180
  */
181
+ if ( !isset( $this->unfiltered_options[$key] ) ) {
182
  continue;
183
  }
184
 
185
+ $new_registered_options['defaults'][$key] = $this->unfiltered_options[$key];
186
+ $new_registered_options['values'][$key]['type'] = 'none';
187
+ $new_registered_options['values'][$key]['values'] = $this->unfiltered_options[$key];
188
 
189
+ }
190
 
191
 
192
  /**
222
  * registered from the options page, so we manually whitelist them.
223
  *
224
  */
225
+ $addons = apply_filters( 'swp_registrations', array() );
226
+ $whitelist = array(
227
  'last_migrated',
228
  'bitly_access_token',
229
  'bitly_access_login',
236
  * return the existing whitelist from above.
237
  *
238
  */
239
+ if ( empty( $addons) ) {
240
+ return $whitelist;
241
+ }
242
 
243
 
244
  /**
247
  * that we don't filter it out.
248
  *
249
  */
250
+ foreach( $addons as $addon ) {
251
+ $whitelist[] = $addon->key . '_license_key';
252
+ $whitelist[] = $addon->key . '_license_key_timestamp';
253
+ }
254
 
255
  return $whitelist;
256
  }
278
  * saved in the database. Only save those keys that are registered.
279
  *
280
  */
281
+ $defaults = array_keys( $this->registered_options['defaults'] );
282
+ $options = array_keys ( $this->user_options );
283
+ $available_options = array_intersect( $defaults, $options );
284
 
285
 
286
  /**
288
  * that it is setup properly and doesn't need filtered out.
289
  *
290
  */
291
+ foreach( $this->user_options as $key => $value ) {
292
 
293
 
294
  /**
296
  * the logic that controls it's filtering to a separate method.
297
  *
298
  */
299
+ if ( $key == 'order_of_icons' ) {
300
+ $value = $this->filter_order_of_icons( $value );
301
+ $this->user_icons[$key] = $value;
302
+ continue;
303
+ }
304
 
305
 
306
  /**
308
  * options, we need to filter it out of the user options.
309
  *
310
  */
311
+ if ( !in_array( $key, $available_options ) ) {
312
+ unset( $this->user_options[$key] );
313
+ }
314
+ }
315
  }
316
 
317
 
328
  * @return array The modified array of social networks.
329
  *
330
  */
331
+ private function filter_order_of_icons( $user_icons = array() ) {
332
 
333
 
334
  /**
336
  * so that we can compare them to each other below.
337
  *
338
  */
339
+ $networks = $this->registered_options['values']['order_of_icons']['values'];
340
+ $user_icons = $this->user_options['order_of_icons'];
341
 
342
 
343
  /**
346
  * but pro is not longer installed, these will need to be filtered out.
347
  *
348
  */
349
+ foreach( $user_icons as $network_key ) {
350
+ if ( empty( $networks[$network_key] ) ) {
351
+ unset( $user_icons[$network_key] );
352
+ }
353
+ }
354
 
355
 
356
+ /**
357
+ * If the user does not have any networks selected (like on a fresh
358
+ * install) then simply create some defaults for them and then return.
359
+ *
360
+ */
361
+ if ( empty ( $user_icons ) ) {
362
+ $user_icons = $this->registered_options['defaults']['order_of_icons'];
363
+ }
364
 
365
+ return $user_icons;
366
+ }
367
 
368
 
369
  /**
375
  *
376
  */
377
  private function correct_invalid_values() {
378
+ $defaults = $this->registered_options['defaults'];
379
  $values = $this->registered_options['values'];
380
 
381
  foreach( $this->user_options as $key => $value ) {
382
+
383
+ // For the Zero Day bug catch
384
+ if ( 'twitter_id' == $key ) {
385
+ if ( strpos( $value, '<' ) || strlen( $value ) > 15 ) {
386
+ $this->user_options['twitter_id'] = '';
387
+ SWP_Utility::update_option( 'twitter_id' , '' );
388
+ }
389
+ }
390
+
391
+ // Looking for suspicious texts
392
+ if ( is_string( $value ) && !is_numeric( $value ) ) {
393
+ if ( strpos( $value, 'script' )
394
+ || ( strpos( $value, '(' ) && strpos( $value, '<' ) )
395
+ || strpos( $value, 'fromCharCode' ) > -1 ) {
396
+ $this->user_options[$key] = '';
397
+ SWP_Utility::update_option( $key , '' );
398
+ }
399
+ }
400
+
401
+ // Sanitize string inputs before storing in the db.
402
+ if ( is_string( $value ) && !is_numeric( $value ) ) {
403
+ $this->user_options[$key] = htmlspecialchars( $value );
404
+ }
405
+
406
  if( $values[$key]['type'] == 'select' && !array_key_exists( $value, $values[$key]['values']) ) {
407
  $this->user_options[$key] = $defaults[$key];
408
  }
429
  $this->user_options[$key] = $value;
430
  }
431
  }
432
+ }
433
  }
lib/social-networks/SWP_Twitter.php CHANGED
@@ -155,11 +155,16 @@ class SWP_Twitter extends SWP_Social_Network {
155
  * This is the method that generates the via=username section of the share link.
156
  *
157
  * @since 3.4.0 | 19 NOV 2018 | Created
 
158
  * @param array $post_data The array of information passed in from the buttons panel.
159
  * @return sting The via=username section of the share link.
160
  *
161
  */
162
- protected function get_via_parameter( $post_data ) {
 
 
 
 
163
 
164
 
165
  /**
155
  * This is the method that generates the via=username section of the share link.
156
  *
157
  * @since 3.4.0 | 19 NOV 2018 | Created
158
+ * @since 3.5.2 | 21 MAR 2018 | Changed access from protected to public.
159
  * @param array $post_data The array of information passed in from the buttons panel.
160
  * @return sting The via=username section of the share link.
161
  *
162
  */
163
+ public function get_via_parameter( $post_data ) {
164
+ if ( is_object( $post_data ) ) {
165
+ // A global $post, for example
166
+ $post_data = (array) $post_data;
167
+ }
168
 
169
 
170
  /**
lib/update-checker/Puc/v4p4/Plugin/Package.php CHANGED
@@ -160,15 +160,24 @@ if ( !class_exists('Puc_v4p4_Plugin_Package', false) ):
160
  static $cachedResult = null;
161
 
162
  if ( $cachedResult === null ) {
 
 
 
 
 
163
  //Convert both paths to the canonical form before comparison.
164
  $muPluginDir = realpath(WPMU_PLUGIN_DIR);
165
  $pluginPath = realpath($this->pluginAbsolutePath);
166
 
167
- $cachedResult = (strpos($pluginPath, $muPluginDir) === 0);
 
 
 
 
168
  }
169
 
170
  return $cachedResult;
171
  }
172
  }
173
 
174
- endif;
160
  static $cachedResult = null;
161
 
162
  if ( $cachedResult === null ) {
163
+ if ( !defined('WPMU_PLUGIN_DIR') || !is_string(WPMU_PLUGIN_DIR) ) {
164
+ $cachedResult = false;
165
+ return $cachedResult;
166
+ }
167
+
168
  //Convert both paths to the canonical form before comparison.
169
  $muPluginDir = realpath(WPMU_PLUGIN_DIR);
170
  $pluginPath = realpath($this->pluginAbsolutePath);
171
 
172
+ //If realpath() fails, just normalize the syntax instead.
173
+ if (($muPluginDir === false) || ($pluginPath === false)) {
174
+ $muPluginDir = Puc_v4p4_Factory::normalizePath(WPMU_PLUGIN_DIR);
175
+ $pluginPath = Puc_v4p4_Factory::normalizePath($this->pluginAbsolutePath);
176
+ }
177
  }
178
 
179
  return $cachedResult;
180
  }
181
  }
182
 
183
+ endif;
lib/utilities/SWP_Database_Migration.php CHANGED
@@ -218,70 +218,6 @@ class SWP_Database_Migration {
218
  // }
219
 
220
 
221
- /**
222
- * Migrates options from $_GET['swp_url'] to the current site.
223
- *
224
- * @since 3.4.2
225
- */
226
- if ( true == SWP_Utility::debug('load_options') ) {
227
- if (!is_admin()) {
228
- wp_die('You do not have authorization to view this page.');
229
- }
230
-
231
- $options = file_get_contents($_GET['swp_url'] . '?swp_debug=get_user_options');
232
-
233
- //* Bad url.
234
- if (!$options) {
235
- wp_die('nothing found');
236
- }
237
-
238
- $pre = strpos($options, '<pre>');
239
- if ($pre != 0) {
240
- wp_die('No Social Warfare found.');
241
- }
242
-
243
- $options = str_replace('<pre>', '', $options);
244
- $cutoff = strpos($options, '</pre>');
245
- $options = substr($options, 0, $cutoff);
246
-
247
- $array = 'return ' . $options . ';';
248
-
249
- try {
250
- $fetched_options = eval( $array );
251
- }
252
- catch (ParseError $e) {
253
- $message = 'Error evaluating fetched data. <br/>';
254
- $message .= 'Message from error: ' . $e->getMessage() . '<br/>';
255
- $message .= 'Fetched data: <br/>';
256
- $message .= var_export($fetched_options, 1);
257
- wp_die($message);
258
- }
259
-
260
- if (is_array( $fetched_options) ) {
261
- foreach( $fetched_options as $key => $value) {
262
- if (strpos( $key, 'license' ) > 0) {
263
- unset( $fetched_options[$key] );
264
- }
265
- if (strpos( $key, 'token' ) > 0) {
266
- unset( $fetched_options[$key] );
267
- }
268
- if (strpos( $key, 'login' ) > 0) {
269
- unset( $fetched_options[$key] );
270
- }
271
- }
272
- //* Preserve filtered data, such as license keys.
273
- $new_options = array_merge( get_option('social_warfare_settings'), $fetched_options );
274
-
275
- if (update_option( 'social_warfare_settings', $new_options )) {
276
- wp_die('Social Warfare settings updated to match ' . $_GET['swp_url']);
277
- }
278
- else {
279
- wp_die('Tried to update settings to match ' . $_GET['swp_url'] . ', but something went wrong or no options changed.');
280
- }
281
- }
282
-
283
- wp_die('No changes made.');
284
- }
285
 
286
  if ( true === SWP_Utility::debug('get_filtered_options') ) :
287
  global $swp_user_options;
@@ -292,9 +228,7 @@ class SWP_Database_Migration {
292
  endif;
293
 
294
  if ( true == SWP_Utility::debug('get_post_meta') ) :
295
-
296
  add_action( 'template_redirect', array( $this, 'print_post_meta' ) );
297
-
298
  endif;
299
 
300
  /**
218
  // }
219
 
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
 
222
  if ( true === SWP_Utility::debug('get_filtered_options') ) :
223
  global $swp_user_options;
228
  endif;
229
 
230
  if ( true == SWP_Utility::debug('get_post_meta') ) :
 
231
  add_action( 'template_redirect', array( $this, 'print_post_meta' ) );
 
232
  endif;
233
 
234
  /**
lib/utilities/SWP_Notice.php CHANGED
@@ -30,22 +30,22 @@ class SWP_Notice {
30
  * @param string $message The message for this notice
31
  *
32
  */
33
- public function __construct( $key = "", $message = "", $ctas = array() ) {
34
- $this->set_key( $key );
35
- $this->init();
36
- $this->set_message( $message );
37
- $this->actions = $ctas;
38
- $this->no_cta = false;
39
 
40
  // Add hooks to display our admin notices in the dashbaord and on our settings page.
41
- add_action( 'admin_notices', array( $this, 'print_HTML' ) );
42
- add_action( 'swp_admin_notices', array( $this, 'get_HTML' ) );
43
 
44
  // Add a hook for permanently dismissing a notice via admin-ajax.php
45
- add_action( 'wp_ajax_dismiss', array( $this, 'dismiss' ) );
46
- add_action( 'wp_ajax_nopriv_dismiss', array( $this, 'dismiss' ) );
47
 
48
- }
49
 
50
 
51
  /**
@@ -63,20 +63,20 @@ class SWP_Notice {
63
  * @return null
64
  *
65
  */
66
- public function init() {
67
- $notices = get_option( 'social_warfare_dismissed_notices', false );
68
 
69
- if ( false === $notices ) {
70
- update_option( 'social_warfare_dismissed_notices', array() );
71
- $notices = array();
72
- }
73
 
74
- $this->notices = $notices;
75
 
76
- if ( isset( $notices[$this->key] ) ) :
77
- $this->data = $notices[$this->key];
78
- endif;
79
- }
80
 
81
 
82
  /**
@@ -92,11 +92,11 @@ class SWP_Notice {
92
  * @return bool Default true.
93
  *
94
  */
95
- public function should_display_notice() {
96
- $now = new DateTime();
97
  $now = $now->format('Y-m-d H:i:s');
98
 
99
- // If the start date has not been reached.
100
  if ( isset( $this->start_date ) && $now < $this->start_date ) {
101
  return false;
102
  }
@@ -106,26 +106,26 @@ class SWP_Notice {
106
  return false;
107
  }
108
 
109
- //* No dismissal has happened yet.
110
- if ( empty( $this->data['timestamp']) ) :
111
- return true;
112
- endif;
113
 
114
- //* They have dismissed a permadismiss.
115
- if ( isset( $this->data['timestamp'] ) && $this->data['timeframe'] == 0) {
116
- return false;
117
- }
118
 
119
- //* They have dismissed with a temp CTA.
120
- if ( isset( $this->data['timeframe'] ) && $this->data['timeframe'] > 0 ) {
121
 
122
- $expiry = $this->data['timestamp'];
123
 
124
- return $now > $expiry;
125
- }
126
 
127
- return true;
128
- }
129
 
130
 
131
  /**
@@ -139,23 +139,26 @@ class SWP_Notice {
139
  * @return null The response from update_option is echoed.
140
  *
141
  */
142
- public function dismiss() {
143
- $key = $_POST['key'];
144
- $timeframe = $_POST['timeframe'];
145
- $now = new DateTime();
 
 
 
146
 
147
- if ( 0 < $timeframe ) {
148
- $timestamp = $now->modify("+$timeframe days")->format('Y-m-d H:i:s');
149
- } else {
150
- $timestamp = $now->format('Y-m-d H:i:s');
151
- }
152
 
153
- $this->notices[$key]['timestamp'] = $timestamp;
154
- $this->notices[$key]['timeframe'] = $timeframe;
155
 
156
- echo json_encode( update_option( 'social_warfare_dismissed_notices', $this->notices ) );
157
- wp_die();
158
- }
159
 
160
 
161
  /**
@@ -167,15 +170,15 @@ class SWP_Notice {
167
  * @return object $this Allows for method chaining.
168
  *
169
  */
170
- public function set_message( $message ) {
171
- if ( !is_string( $message ) ) :
172
- throw("Please provide a string for your database key.");
173
- endif;
174
 
175
- $this->message = $message;
176
 
177
- return $this;
178
- }
179
 
180
 
181
  /**
@@ -187,15 +190,15 @@ class SWP_Notice {
187
  * @return object $this Allows for method chaining.
188
  *
189
  */
190
- protected function set_key( $key ) {
191
- if ( !is_string ( $key ) ) :
192
- throw("Please provide a string for your database key.");
193
- endif;
194
 
195
- $this->key = $key;
196
 
197
- return $this;
198
- }
199
 
200
 
201
  /**
@@ -214,9 +217,9 @@ class SWP_Notice {
214
  *
215
  */
216
  public function set_start_date( $start_date ) {
217
- if ( $this->is_date( $start_date ) ) :
218
- $this->start_date = $start_date;
219
- endif;
220
 
221
  return $this;
222
  }
@@ -242,38 +245,38 @@ class SWP_Notice {
242
  *
243
  */
244
  public function set_end_date( $end_date ) {
245
- if ( $this->is_date( $end_date ) ) :
246
- $this->end_date = $end_date;
247
- endif;
248
 
249
  return $this;
250
  }
251
 
252
 
253
- /**
254
- * Creates the interactive CTA for the notice.
255
- *
256
- * @since 3.0.9 | 07 JUN 2018 | Created
257
- * @access public
258
- * @param string $action Optional. The message to be displayed. Default "Thanks, I understand."
259
- * @param string $href Optional. The outbound href.
260
- * @param string $class Optional. The CSS classname to assign to the CTA.
261
- * @param string $timeframe
262
- * @return $this Allows for method chaining.
263
- *
264
- */
265
- public function add_default_cta() {
266
- $cta = array();
267
- $cta['action'] = "Thanks, I understand.";
268
- $cta['href'] = '';
269
- $cta['target'] = '_self';
270
- $cta['class'] = '';
271
  $cta['timeframe'] = 0;
272
 
273
- $this->actions[] = $cta;
274
 
275
- return $this;
276
- }
277
 
278
 
279
  /**
@@ -288,32 +291,32 @@ class SWP_Notice {
288
  * @return string The compiled HTML of the dashboard notice.
289
  *
290
  */
291
- public function render_HTML() {
292
- if ( empty( $this->actions ) && false === $this->no_cta) :
293
- $this->add_default_cta();
294
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
 
296
- $html = '<div class="swp-dismiss-notice notice notice-info " data-key="' . $this->key . '">';
297
- $html .= '<p>' . $this->message . ' - Warfare Plugins Team</p>';
298
- $html .= '<div class="swp-actions">';
299
-
300
- foreach( $this->actions as $cta) {
301
- $class = isset( $cta['class'] ) ? $cta['class'] : '';
302
- $href = isset( $cta['href'] ) ? $cta['href'] : '';
303
- $target = isset( $cta['target'] ) ? $cta['target'] : '';
304
- $timeframe = isset( $cta['timeframe'] ) ? $cta['timeframe'] : 0;
305
- $html .= '<a class="swp-notice-cta ' . $class . '" href="' . $href . '" target="' . $target . '" data-timeframe="' . $timeframe .'">';
306
- $html .= $cta['action'];
307
- $html .= "</a>";
308
- }
309
-
310
- $html .= '</div>';
311
- $html .= '</div>';
312
-
313
- $this->html = $html;
314
-
315
- return $this;
316
- }
317
 
318
 
319
  /**
@@ -328,14 +331,14 @@ class SWP_Notice {
328
  * @return string The modified string of notices' html.
329
  *
330
  */
331
- public function get_HTML( $notices = '' ) {
332
 
333
- if ( !$this->should_display_notice() ) :
334
- return $notices;
335
- endif;
336
 
337
- return $this->html;
338
- }
339
 
340
 
341
  /**
@@ -350,49 +353,49 @@ class SWP_Notice {
350
  * @return string The modified string of notices' html.
351
  *
352
  */
353
- public function print_HTML() {
354
- if ( !$this->should_display_notice() ) :
355
- return;
356
- endif;
357
-
358
- if ( empty( $this->html ) ) :
359
- $this->render_HTML();
360
- endif;
361
-
362
- echo $this->html;
363
-
364
- return $this;
365
- }
366
-
367
- /**
368
- * Checks whether a string is formatted as our default Date format.
369
- *
370
- * @since 3.0.9 | 08 JUN 2018 | Created
371
- * @param string $string The datetime string in question.
372
- * @return bool True iff the string is of the format 'Y-m-d h:i:s'.
373
- *
374
- */
375
- private function is_date( $string ) {
376
- return DateTime::createFromFormat( 'Y-m-d h:i:s', $string ) !== false;
377
- }
378
-
379
-
380
- /**
381
- * Prevents a CTA from being displayed on the notice.
382
- *
383
- * In cases where we require the user to take action, we need them
384
- * to follow the directions in the message before removing the notice.
385
- *
386
- * @since 3.1.0 | 05 JUL 2018 | Created the method.
387
- * @return SWP_Notice $this, for method chaining.
388
- *
389
- */
390
- public function remove_cta() {
391
- //* Force the ctas to an empty array so render can still loop over it.
392
- $this->actions = array();
393
-
394
- $this->no_cta = true;
395
-
396
- return $this;
397
- }
398
  }
30
  * @param string $message The message for this notice
31
  *
32
  */
33
+ public function __construct( $key = "", $message = "", $ctas = array() ) {
34
+ $this->set_key( $key );
35
+ $this->init();
36
+ $this->set_message( $message );
37
+ $this->actions = $ctas;
38
+ $this->no_cta = false;
39
 
40
  // Add hooks to display our admin notices in the dashbaord and on our settings page.
41
+ add_action( 'admin_notices', array( $this, 'print_HTML' ) );
42
+ add_action( 'swp_admin_notices', array( $this, 'get_HTML' ) );
43
 
44
  // Add a hook for permanently dismissing a notice via admin-ajax.php
45
+ add_action( 'wp_ajax_dismiss', array( $this, 'dismiss' ) );
46
+ add_action( 'wp_ajax_nopriv_dismiss', array( $this, 'dismiss' ) );
47
 
48
+ }
49
 
50
 
51
  /**
63
  * @return null
64
  *
65
  */
66
+ public function init() {
67
+ $notices = get_option( 'social_warfare_dismissed_notices', false );
68
 
69
+ if ( false === $notices ) {
70
+ update_option( 'social_warfare_dismissed_notices', array() );
71
+ $notices = array();
72
+ }
73
 
74
+ $this->notices = $notices;
75
 
76
+ if ( isset( $notices[$this->key] ) ) :
77
+ $this->data = $notices[$this->key];
78
+ endif;
79
+ }
80
 
81
 
82
  /**
92
  * @return bool Default true.
93
  *
94
  */
95
+ public function should_display_notice() {
96
+ $now = new DateTime();
97
  $now = $now->format('Y-m-d H:i:s');
98
 
99
+ // If the start date has not been reached.
100
  if ( isset( $this->start_date ) && $now < $this->start_date ) {
101
  return false;
102
  }
106
  return false;
107
  }
108
 
109
+ //* No dismissal has happened yet.
110
+ if ( empty( $this->data['timestamp']) ) :
111
+ return true;
112
+ endif;
113
 
114
+ //* They have dismissed a permadismiss.
115
+ if ( isset( $this->data['timestamp'] ) && $this->data['timeframe'] == 0) {
116
+ return false;
117
+ }
118
 
119
+ //* They have dismissed with a temp CTA.
120
+ if ( isset( $this->data['timeframe'] ) && $this->data['timeframe'] > 0 ) {
121
 
122
+ $expiry = $this->data['timestamp'];
123
 
124
+ return $now > $expiry;
125
+ }
126
 
127
+ return true;
128
+ }
129
 
130
 
131
  /**
139
  * @return null The response from update_option is echoed.
140
  *
141
  */
142
+ public function dismiss() {
143
+
144
+ SWP_Utility::auth();
145
+
146
+ $key = $_POST['key'];
147
+ $timeframe = $_POST['timeframe'];
148
+ $now = new DateTime();
149
 
150
+ if ( 0 < $timeframe ) {
151
+ $timestamp = $now->modify("+$timeframe days")->format('Y-m-d H:i:s');
152
+ } else {
153
+ $timestamp = $now->format('Y-m-d H:i:s');
154
+ }
155
 
156
+ $this->notices[$key]['timestamp'] = $timestamp;
157
+ $this->notices[$key]['timeframe'] = $timeframe;
158
 
159
+ echo json_encode( update_option( 'social_warfare_dismissed_notices', $this->notices ) );
160
+ wp_die();
161
+ }
162
 
163
 
164
  /**
170
  * @return object $this Allows for method chaining.
171
  *
172
  */
173
+ public function set_message( $message ) {
174
+ if ( !is_string( $message ) ) :
175
+ throw("Please provide a string for your database key.");
176
+ endif;
177
 
178
+ $this->message = $message;
179
 
180
+ return $this;
181
+ }
182
 
183
 
184
  /**
190
  * @return object $this Allows for method chaining.
191
  *
192
  */
193
+ protected function set_key( $key ) {
194
+ if ( !is_string ( $key ) ) :
195
+ throw("Please provide a string for your database key.");
196
+ endif;
197
 
198
+ $this->key = $key;
199
 
200
+ return $this;
201
+ }
202
 
203
 
204
  /**
217
  *
218
  */
219
  public function set_start_date( $start_date ) {
220
+ if ( $this->is_date( $start_date ) ) :
221
+ $this->start_date = $start_date;
222
+ endif;
223
 
224
  return $this;
225
  }
245
  *
246
  */
247
  public function set_end_date( $end_date ) {
248
+ if ( $this->is_date( $end_date ) ) :
249
+ $this->end_date = $end_date;
250
+ endif;
251
 
252
  return $this;
253
  }
254
 
255
 
256
+ /**
257
+ * Creates the interactive CTA for the notice.
258
+ *
259
+ * @since 3.0.9 | 07 JUN 2018 | Created
260
+ * @access public
261
+ * @param string $action Optional. The message to be displayed. Default "Thanks, I understand."
262
+ * @param string $href Optional. The outbound href.
263
+ * @param string $class Optional. The CSS classname to assign to the CTA.
264
+ * @param string $timeframe
265
+ * @return $this Allows for method chaining.
266
+ *
267
+ */
268
+ public function add_default_cta() {
269
+ $cta = array();
270
+ $cta['action'] = "Thanks, I understand.";
271
+ $cta['href'] = '';
272
+ $cta['target'] = '_self';
273
+ $cta['class'] = '';
274
  $cta['timeframe'] = 0;
275
 
276
+ $this->actions[] = $cta;
277
 
278
+ return $this;
279
+ }
280
 
281
 
282
  /**
291
  * @return string The compiled HTML of the dashboard notice.
292
  *
293
  */
294
+ public function render_HTML() {
295
+ if ( empty( $this->actions ) && false === $this->no_cta) :
296
+ $this->add_default_cta();
297
+ endif;
298
+
299
+ $html = '<div class="swp-dismiss-notice notice notice-info " data-key="' . $this->key . '">';
300
+ $html .= '<p>' . $this->message . ' - Warfare Plugins Team</p>';
301
+ $html .= '<div class="swp-actions">';
302
+
303
+ foreach( $this->actions as $cta) {
304
+ $class = isset( $cta['class'] ) ? $cta['class'] : '';
305
+ $href = isset( $cta['href'] ) ? $cta['href'] : '';
306
+ $target = isset( $cta['target'] ) ? $cta['target'] : '';
307
+ $timeframe = isset( $cta['timeframe'] ) ? $cta['timeframe'] : 0;
308
+ $html .= '<a class="swp-notice-cta ' . $class . '" href="' . $href . '" target="' . $target . '" data-timeframe="' . $timeframe .'">';
309
+ $html .= $cta['action'];
310
+ $html .= "</a>";
311
+ }
312
+
313
+ $html .= '</div>';
314
+ $html .= '</div>';
315
+
316
+ $this->html = $html;
317
 
318
+ return $this;
319
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
 
321
 
322
  /**
331
  * @return string The modified string of notices' html.
332
  *
333
  */
334
+ public function get_HTML( $notices = '' ) {
335
 
336
+ if ( !$this->should_display_notice() ) :
337
+ return $notices;
338
+ endif;
339
 
340
+ return $this->html;
341
+ }
342
 
343
 
344
  /**
353
  * @return string The modified string of notices' html.
354
  *
355
  */
356
+ public function print_HTML() {
357
+ if ( !$this->should_display_notice() ) :
358
+ return;
359
+ endif;
360
+
361
+ if ( empty( $this->html ) ) :
362
+ $this->render_HTML();
363
+ endif;
364
+
365
+ echo $this->html;
366
+
367
+ return $this;
368
+ }
369
+
370
+ /**
371
+ * Checks whether a string is formatted as our default Date format.
372
+ *
373
+ * @since 3.0.9 | 08 JUN 2018 | Created
374
+ * @param string $string The datetime string in question.
375
+ * @return bool True iff the string is of the format 'Y-m-d h:i:s'.
376
+ *
377
+ */
378
+ private function is_date( $string ) {
379
+ return DateTime::createFromFormat( 'Y-m-d h:i:s', $string ) !== false;
380
+ }
381
+
382
+
383
+ /**
384
+ * Prevents a CTA from being displayed on the notice.
385
+ *
386
+ * In cases where we require the user to take action, we need them
387
+ * to follow the directions in the message before removing the notice.
388
+ *
389
+ * @since 3.1.0 | 05 JUL 2018 | Created the method.
390
+ * @return SWP_Notice $this, for method chaining.
391
+ *
392
+ */
393
+ public function remove_cta() {
394
+ //* Force the ctas to an empty array so render can still loop over it.
395
+ $this->actions = array();
396
+
397
+ $this->no_cta = true;
398
+
399
+ return $this;
400
+ }
401
  }
lib/utilities/SWP_Post_Cache.php CHANGED
@@ -357,16 +357,16 @@ class SWP_Post_Cache {
357
  * previously cached image so that we can see if anything has changed.
358
  *
359
  */
360
- $new_data = wp_get_attachment_image_src( $new_id, 'full_size' );
361
  $old_data = SWP_Utility::get_meta_array( $this->post_id, $meta_key.'_data' );
362
 
363
- if ( false == $new_data || is_array($new_data) && $new_data[0] === $old_data[0] ) {
364
  return;
365
  }
366
 
367
  delete_post_meta( $this->post_id, $meta_key.'_data' );
368
  delete_post_meta( $this->post_id, $meta_key.'_url' );
369
-
370
 
371
  update_post_meta( $this->post_id, $meta_key.'_data', json_encode( $new_data ) );
372
  update_post_meta( $this->post_id, $meta_key.'_url', $new_data[0] );
357
  * previously cached image so that we can see if anything has changed.
358
  *
359
  */
360
+ $new_data = wp_get_attachment_image_src( $new_id, 'full_size' );
361
  $old_data = SWP_Utility::get_meta_array( $this->post_id, $meta_key.'_data' );
362
 
363
+ if ( false == $new_data || $new_data === $old_data ) {
364
  return;
365
  }
366
 
367
  delete_post_meta( $this->post_id, $meta_key.'_data' );
368
  delete_post_meta( $this->post_id, $meta_key.'_url' );
369
+ delete_post_meta( $this->post_id, $meta_key );
370
 
371
  update_post_meta( $this->post_id, $meta_key.'_data', json_encode( $new_data ) );
372
  update_post_meta( $this->post_id, $meta_key.'_url', $new_data[0] );
lib/utilities/SWP_Utility.php CHANGED
@@ -131,16 +131,18 @@ class SWP_Utility {
131
  * @return bool Whether or not the options were updated in the database.
132
  */
133
  public static function store_settings() {
 
 
134
  if ( !check_ajax_referer( 'swp_plugin_options_save', 'security', false ) ) {
135
- wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
136
- die;
137
  }
138
 
139
  $data = wp_unslash( $_POST );
140
 
141
  if ( empty( $data['settings'] ) ) {
142
  wp_send_json_error( esc_html__( 'No settings to save.', 'social-warfare' ) );
143
- die;
144
  }
145
 
146
  $options = get_option( 'social_warfare_settings', array() );
@@ -164,6 +166,24 @@ class SWP_Utility {
164
  wp_die();
165
  }
166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
 
168
  /**
169
  * Rounds a number to the appropriate thousands.
131
  * @return bool Whether or not the options were updated in the database.
132
  */
133
  public static function store_settings() {
134
+
135
+
136
  if ( !check_ajax_referer( 'swp_plugin_options_save', 'security', false ) ) {
137
+ wp_send_json_error( esc_html__( 'Security failed 1.', 'social-warfare' ) );
138
+ wp_die();
139
  }
140
 
141
  $data = wp_unslash( $_POST );
142
 
143
  if ( empty( $data['settings'] ) ) {
144
  wp_send_json_error( esc_html__( 'No settings to save.', 'social-warfare' ) );
145
+ wp_die();
146
  }
147
 
148
  $options = get_option( 'social_warfare_settings', array() );
166
  wp_die();
167
  }
168
 
169
+ /**
170
+ * Handle the options save request inside of admin-ajax.php
171
+ *
172
+ * @since 2.x.x | Unknown | Created.
173
+ * @since 3.5.3 | 21 MAR 2019 | Created the method.
174
+ *
175
+ * @return bool True if it is good, else it dies.
176
+ *
177
+ */
178
+ public static function auth() {
179
+ if ( !is_admin() || !current_user_can( 'administrator' ) ) {
180
+ wp_send_json_error( esc_html__( 'Security failed 2.', 'social-warfare' ) );
181
+ wp_die();
182
+ }
183
+
184
+ return true;
185
+ }
186
+
187
 
188
  /**
189
  * Rounds a number to the appropriate thousands.
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === WordPress Social Sharing Plugin - Social Warfare ===
2
- Contributors: holas84, dustinwstout, webinator, warfareplugins, nutsandboltsmedia, cdegraff1, ckmahoney
3
  Tags: sharing buttons, social media share, floating share buttons, facebook share, google plus share, linkedin share, pin it, pinterest save, mix button, tweet button, twitter share, click to tweet, social sharing buttons, social share, social sharing, social media sharing, wordpress social sharing plugin, social sharing plugin, share buttons, share counts
4
  Requires at least: 4.5.0
5
  Tested up to: 5.1
6
- Stable tag: 3.5.2
7
  Requires PHP: 5.6
8
  License: GNU General Public License v2.0 or later
9
 
@@ -194,8 +194,11 @@ We have a growing archive of <a href="https://warfareplugins.com/support/" rel="
194
 
195
  == Changelog ==
196
 
 
 
 
197
  = 3.5.2 (19 MAR 2019) =
198
- * Fixed <meta> tags for OG and Twitter Card.
199
  * Fixed source of Pinterest description when pinning from Save or Pinterest button.
200
  * Fixed empty 'via' being added to Pinterest description and Click to Tweet.
201
  * Updated addon registration and unregistration messages.
1
  === WordPress Social Sharing Plugin - Social Warfare ===
2
+ Contributors: holas84, dustinwstout, webinator, warfareplugins, cdegraff1, ckmahoney
3
  Tags: sharing buttons, social media share, floating share buttons, facebook share, google plus share, linkedin share, pin it, pinterest save, mix button, tweet button, twitter share, click to tweet, social sharing buttons, social share, social sharing, social media sharing, wordpress social sharing plugin, social sharing plugin, share buttons, share counts
4
  Requires at least: 4.5.0
5
  Tested up to: 5.1
6
+ Stable tag: 3.5.3
7
  Requires PHP: 5.6
8
  License: GNU General Public License v2.0 or later
9
 
194
 
195
  == Changelog ==
196
 
197
+ = 3.5.3 (21 MAR 2019) =
198
+ * Immediate security patch for 3.5.x
199
+
200
  = 3.5.2 (19 MAR 2019) =
201
+ * Fixed <meta> tags for OG and Twitter Card.
202
  * Fixed source of Pinterest description when pinning from Save or Pinterest button.
203
  * Fixed empty 'via' being added to Pinterest description and Click to Tweet.
204
  * Updated addon registration and unregistration messages.
social-warfare.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Social Warfare
4
  * Plugin URI: https://warfareplugins.com
5
  * Description: A plugin to maximize social shares and drive more traffic using the fastest and most intelligent share buttons on the market, calls to action via in-post click-to-tweets, popular posts widgets based on share popularity, link-shortening, Google Analytics and much, much more!
6
- * Version: 3.5.2
7
  * Author: Warfare Plugins
8
  * Author URI: https://warfareplugins.com
9
  * Text Domain: social-warfare
@@ -16,7 +16,7 @@ defined( 'WPINC' ) || die;
16
  * Define plugin constants for use throughout the plugin (Version and Directories)
17
  *
18
  */
19
- define( 'SWP_VERSION' , '3.5.2' );
20
  define( 'SWP_PLUGIN_FILE', __FILE__ );
21
  define( 'SWP_PLUGIN_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
22
  define( 'SWP_PLUGIN_DIR', dirname( __FILE__ ) );
3
  * Plugin Name: Social Warfare
4
  * Plugin URI: https://warfareplugins.com
5
  * Description: A plugin to maximize social shares and drive more traffic using the fastest and most intelligent share buttons on the market, calls to action via in-post click-to-tweets, popular posts widgets based on share popularity, link-shortening, Google Analytics and much, much more!
6
+ * Version: 3.5.3
7
  * Author: Warfare Plugins
8
  * Author URI: https://warfareplugins.com
9
  * Text Domain: social-warfare
16
  * Define plugin constants for use throughout the plugin (Version and Directories)
17
  *
18
  */
19
+ define( 'SWP_VERSION' , '3.5.3' );
20
  define( 'SWP_PLUGIN_FILE', __FILE__ );
21
  define( 'SWP_PLUGIN_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
22
  define( 'SWP_PLUGIN_DIR', dirname( __FILE__ ) );