Version Description
- New: Compatible up to WordPress 5.9
- Fix: Make MashShare compatible with PHP 8.x
- Fix: Don't request share count for preview pages. This fixes an artificially high share count on initial post creation
Download this release
Release Info
Developer | ReneHermi |
Plugin | Social Media Share Buttons | MashShare |
Version | 3.8.1 |
Comparing to | |
See all releases |
Code changes from version 3.7.9 to 3.8.1
- assets/css/mashsb-amp.min.css +1 -1
- assets/css/mashsb.min.css +1 -1
- includes/admin/admin-notices.php +4 -48
- includes/admin/welcome.php +2 -2
- includes/template-functions.php +518 -476
- mashshare.php +2 -2
- readme.txt +8 -3
assets/css/mashsb-amp.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.mashicon-buffer .text,[class*=" mashicon-"],[class*=" mashicon-"] .text,[class^=mashicon-] .icon,[class^=mashicon-] .text,mashicon-buffer .icon{color:#fff}.mashsb-buttons .secondary-shares a .text{text-indent:-9999px;line-height:0;display:block}.mashsb-buttons .secondary-shares a .text:after{content:" ";text-indent:0;font-size:13px;display:block}.mashsb-buttons .secondary-shares a{min-width:0;font-size:0}.mashsb-buttons .secondary-shares a .icon:before{margin-right:0}.mashsb-buttons .mashsb-hide{display:none}[class*=" mashicon-"]:hover,[class^=mashicon-]:hover{opacity:.8}[class*=" mashicon-"] .onoffswitch-label,[class^=mashicon-]{font-size:15px;border-radius:0;cursor:pointer}.mashicon-share:before,[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{font-family:mashsb-font;font-style:normal;font-weight:400;speak:none;font-size:16px;display:inline-block;text-decoration:inherit;width:1em;margin-right:.7em;text-align:center;font-variant:normal;text-transform:none;margin-top:0;float:left}.mashicon-facebook .icon:before{content:'\e800'}.mashicon-google .icon:before{content:'\e801'}.mashicon-pinterest .icon:before{content:'\e802'}.mashicon-linkedin .icon:before{content:'\e803'}.mashicon-digg .icon:before{content:'\e804'}.mashicon-reddit .icon:before{content:'\e805'}.mashicon-stumbleupon .icon:before{content:'\e806'}.mashicon-twitter .icon:before{content:'\e807'}.mashicon-mail .icon:before{content:'\e808'}.mashicon-vk .icon:before{content:'\e809'}.mashicon-print .icon:before{content:'\e80a'}.mashicon-delicious .icon:before{content:'\e80b'}.mashicon-buffer .icon:before{content:'\e80c'}.mashicon-heart .icon:before{content:'\e80d'}.mashicon-weibo .icon:before{content:'\e80e'}.mashicon-pocket .icon:before{content:'\e80f'}.mashicon-xing .icon:before{content:'\e810'}.mashicon-flattr .icon:before{content:'\e811'}.mashicon-odnoklassniki .icon:before{content:'\e812'}.mashicon-tumblr .icon:before{content:'\e813'}.mashicon-subscribe .icon:before{content:'\e808'}.mashicon-whatsapp .icon:before{content:'\e814'}.mashicon-meneame .icon:before{content:'\e815'}.mashicon-managewp .icon:before{content:'\e816'}.mashicon-mailru .icon:before{content:'\E819'}.mashicon-line .icon:before{content:'\E81A'}.mashicon-yummly .icon:before{content:'\E81B'}.mashicon-frype .icon:before{content:'\e81c'}.mashicon-skype .icon:before{content:'\e81d'}.mashicon-telegram .icon:before{content:'\e81f'}.mashicon-hackernews .icon:before{content:'\e820'}.mashicon-flipboard .icon:before{content:'\e821'}.mashicon-share:before{content:'\e81E'}.mashsb-container{padding-top:10px;padding-bottom:10px}.mashsb-buttons a{min-width:177px}.mashsb-box .mashsb-buttons a{padding:13px;margin-right:3px;margin-bottom:3px;float:left;text-decoration:none;border:0;box-shadow:none}.mashsb-buttons .float-right{float:right}.mashsb-buttons .float-left{float:left}.mashicon-facebook{background:#2d5f9a}.mashicon-twitter{background:#00c3f3}.mashicon-google{background:#d73d32}.mashicon-subscribe{background:#fff120}.mashicon-pinterest{background:#cd252b}.mashicon-linkedin{background:#2ba3e1}.mashicon-digg{background:#1b5791}.mashicon-stumbleupon{background:#eb4723}.mashicon-vk{background:#5d83aa}.mashicon-mail{background:#888}.mashicon-print{background:#666}.mashicon-reddit{background:#333}.mashicon-delicious{background:#39f}.mashicon-weibo{background:#ed1c24}.mashicon-pocket{background:#ee4055}.mashicon-xing{background:#135a5b}.mashicon-flattr{background:#8cb55b}.mashicon-odnoklassniki{background:#f4731c}.mashicon-managewp{background:#056cad}.mashicon-tumblr{background:#2c4762}.mashicon-meneame{background:#ff7d12}.mashicon-whatsapp{background:#1d9e11}.mashicon-buffer{background:#000}.mashicon-mailru{background:#044b89}.mashicon-line{background:#1dcd00}.mashicon-yummly{background:#e16120}.mashicon-frype{background:#f60}.mashicon-skype{background:#00afef}.mashicon-telegram{background:#1d94d3}.mashicon-hackernews{background:#f60}.mashicon-flipboard{background:#b31f17}.mashicon-subscribe .icon,.mashicon-subscribe .text{color:#000}.mashsb-count{display:block;padding-bottom:0;font-size:43px;font-weight:700;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#7FC04C;border:0 solid #FFF;text-align:center;margin-right:10px;margin-top:10px;float:left;line-height:13px}.mashsb-sharetext{font-size:11px;font-family:Arial,sans-serif;color:#8A8C8E}.mashsb-toggle-container{display:none;padding:11px 2% 8px;border:10px solid #FFF120;position:relative;margin-bottom:10px;margin-top:0}[class*=" mashicon-"],[class^=mashicon-]{position:relative;display:inline-block}[class*=" mashicon-"] .text,[class^=mashicon-] .text{padding:0;margin:0}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{line-height:10px}.mashsb-box{line-height:1}.onoffswitch,.onoffswitch2{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;float:left;margin-right:3px;margin-bottom:3px;margin-left:0;cursor:pointer;background-color:#C5C5C5;color:#FFF;width:42px;height:42px;line-height:42px;text-align:center;display:inline-block}.mashsb-count>counts{clear:both}.onoffswitch:before{content:"+";display:inline-block;
|
1 |
+
.mashicon-buffer .text,[class*=" mashicon-"],[class*=" mashicon-"] .text,[class^=mashicon-] .icon,[class^=mashicon-] .text,mashicon-buffer .icon{color:#fff}.mashsb-buttons .secondary-shares a .text{text-indent:-9999px;line-height:0;display:block}.mashsb-buttons .secondary-shares a .text:after{content:" ";text-indent:0;font-size:13px;display:block}.mashsb-buttons .secondary-shares a{min-width:0;font-size:0}.mashsb-buttons .secondary-shares a .icon:before{margin-right:0}.mashsb-buttons .mashsb-hide{display:none}[class*=" mashicon-"]:hover,[class^=mashicon-]:hover{opacity:.8}[class*=" mashicon-"] .onoffswitch-label,[class^=mashicon-]{font-size:15px;border-radius:0;cursor:pointer}.mashicon-share:before,[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{font-family:mashsb-font;font-style:normal;font-weight:400;speak:none;font-size:16px;display:inline-block;text-decoration:inherit;width:1em;margin-right:.7em;text-align:center;font-variant:normal;text-transform:none;margin-top:0;float:left}.mashicon-facebook .icon:before{content:'\e800'}.mashicon-google .icon:before{content:'\e801'}.mashicon-pinterest .icon:before{content:'\e802'}.mashicon-linkedin .icon:before{content:'\e803'}.mashicon-digg .icon:before{content:'\e804'}.mashicon-reddit .icon:before{content:'\e805'}.mashicon-stumbleupon .icon:before{content:'\e806'}.mashicon-twitter .icon:before{content:'\e807'}.mashicon-mail .icon:before{content:'\e808'}.mashicon-vk .icon:before{content:'\e809'}.mashicon-print .icon:before{content:'\e80a'}.mashicon-delicious .icon:before{content:'\e80b'}.mashicon-buffer .icon:before{content:'\e80c'}.mashicon-heart .icon:before{content:'\e80d'}.mashicon-weibo .icon:before{content:'\e80e'}.mashicon-pocket .icon:before{content:'\e80f'}.mashicon-xing .icon:before{content:'\e810'}.mashicon-flattr .icon:before{content:'\e811'}.mashicon-odnoklassniki .icon:before{content:'\e812'}.mashicon-tumblr .icon:before{content:'\e813'}.mashicon-subscribe .icon:before{content:'\e808'}.mashicon-whatsapp .icon:before{content:'\e814'}.mashicon-meneame .icon:before{content:'\e815'}.mashicon-managewp .icon:before{content:'\e816'}.mashicon-mailru .icon:before{content:'\E819'}.mashicon-line .icon:before{content:'\E81A'}.mashicon-yummly .icon:before{content:'\E81B'}.mashicon-frype .icon:before{content:'\e81c'}.mashicon-skype .icon:before{content:'\e81d'}.mashicon-telegram .icon:before{content:'\e81f'}.mashicon-hackernews .icon:before{content:'\e820'}.mashicon-flipboard .icon:before{content:'\e821'}.mashicon-share:before{content:'\e81E'}.mashsb-container{padding-top:10px;padding-bottom:10px}.mashsb-buttons a{min-width:177px}.mashsb-box .mashsb-buttons a{padding:13px;margin-right:3px;margin-bottom:3px;float:left;text-decoration:none;border:0;box-shadow:none}.mashsb-buttons .float-right{float:right}.mashsb-buttons .float-left{float:left}.mashicon-facebook{background:#2d5f9a}.mashicon-twitter{background:#00c3f3}.mashicon-google{background:#d73d32}.mashicon-subscribe{background:#fff120}.mashicon-pinterest{background:#cd252b}.mashicon-linkedin{background:#2ba3e1}.mashicon-digg{background:#1b5791}.mashicon-stumbleupon{background:#eb4723}.mashicon-vk{background:#5d83aa}.mashicon-mail{background:#888}.mashicon-print{background:#666}.mashicon-reddit{background:#333}.mashicon-delicious{background:#39f}.mashicon-weibo{background:#ed1c24}.mashicon-pocket{background:#ee4055}.mashicon-xing{background:#135a5b}.mashicon-flattr{background:#8cb55b}.mashicon-odnoklassniki{background:#f4731c}.mashicon-managewp{background:#056cad}.mashicon-tumblr{background:#2c4762}.mashicon-meneame{background:#ff7d12}.mashicon-whatsapp{background:#1d9e11}.mashicon-buffer{background:#000}.mashicon-mailru{background:#044b89}.mashicon-line{background:#1dcd00}.mashicon-yummly{background:#e16120}.mashicon-frype{background:#f60}.mashicon-skype{background:#00afef}.mashicon-telegram{background:#1d94d3}.mashicon-hackernews{background:#f60}.mashicon-flipboard{background:#b31f17}.mashicon-subscribe .icon,.mashicon-subscribe .text{color:#000}.mashsb-count{display:block;padding-bottom:0;font-size:43px;font-weight:700;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#7FC04C;border:0 solid #FFF;text-align:center;margin-right:10px;margin-top:10px;float:left;line-height:13px}.mashsb-sharetext{font-size:11px;font-family:Arial,sans-serif;color:#8A8C8E}.onoffswitch2:before,.onoffswitch:before{font-weight:700;font-size:30px;font-family:arial}.mashsb-toggle-container{display:none;padding:11px 2% 8px;border:10px solid #FFF120;position:relative;margin-bottom:10px;margin-top:0}[class*=" mashicon-"],[class^=mashicon-]{position:relative;display:inline-block}[class*=" mashicon-"] .text,[class^=mashicon-] .text{padding:0;margin:0}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{line-height:10px}.mashsb-box{line-height:1}.onoffswitch,.onoffswitch2{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;float:left;margin-right:3px;margin-bottom:3px;margin-left:0;cursor:pointer;background-color:#C5C5C5;color:#FFF;width:42px;height:42px;line-height:42px;text-align:center;display:inline-block}.mashsb-count>counts{clear:both}.onoffswitch:before{content:"+";display:inline-block;vertical-align:middle}.onoffswitch2:before{content:"-";display:inline-block;vertical-align:super}.widget_mashsb_mostshared_posts_widget li{padding:.4688em 0;list-style:none}.widget_mashsb_mostshared_posts_widget li:first-child{border-top:0;padding-top:0}@media only screen and (max-width:568px){[class*=" mashicon-"] .text,[class^=mashicon-] .text{text-indent:-9999px;line-height:0;display:block}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{content:"";text-indent:0;font-size:13px;display:block}[class*=" mashicon-"],[class^=mashicon-]{text-align:center}[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{float:none;margin-right:0}.mashsb-buttons a{margin-right:3px;margin-bottom:3px;min-width:0;width:41px}.onoffswitch,.onoffswitch-inner:after .onoffswitch2,.onoffswitch-inner:before,.onoffswitch2-inner:after,.onoffswitch2-inner:before{margin-right:0;width:41px}}
|
assets/css/mashsb.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.mashsb-buttons a.mash-center,.mashsb-count{text-align:center}.mashsb-buttons .secondary-shares a .text{text-indent:-9999px;line-height:0;display:block}.mashsb-buttons .secondary-shares a .text:after{content:" ";text-indent:0;font-size:13px;display:block}.mashsb-buttons .secondary-shares a{min-width:0;display:block}.mashsb-buttons .secondary-shares a .icon:before{margin-right:0}.mashsb-buttons .mashsb-hide{display:none}@font-face{font-family:mashsb-font;src:url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,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) format('truetype')}[class*=" mashicon-"]:hover,[class^=mashicon-]:hover{opacity:.8}[class*=" mashicon-"],[class^=mashicon-] .icon{display:initial;color:#fff}[class*=" mashicon-"] .text,[class^=mashicon-] .text{font-family:sans-serif;color:#fff}[class*=" mashicon-"] .onoffswitch-label,[class^=mashicon-]{font-size:15px;border-radius:0;cursor:pointer}.mashicon-share:before,[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{font-family:mashsb-font;font-style:normal;font-weight:400;speak:none;font-size:16px;display:inline-block;text-decoration:inherit;width:1em;margin-right:.7em;text-align:center;font-variant:normal;text-transform:none;margin-top:0;float:left}[class^=mashicon-].mash-center .icon:before{float:none}.mashicon-facebook .icon:before{content:'\e800'}.mashicon-google .icon:before{content:'\e801'}.mashicon-pinterest .icon:before{content:'\e802'}.mashicon-linkedin .icon:before{content:'\e803'}.mashicon-digg .icon:before{content:'\e804'}.mashicon-reddit .icon:before{content:'\e805'}.mashicon-stumbleupon .icon:before{content:'\e806'}.mashicon-twitter .icon:before{content:'\e807'}.mashicon-mail .icon:before{content:'\e808'}.mashicon-vk .icon:before{content:'\e809'}.mashicon-print .icon:before{content:'\e80a'}.mashicon-delicious .icon:before{content:'\e80b'}.mashicon-buffer .icon:before{content:'\e80c'}.mashicon-heart .icon:before{content:'\e80d'}.mashicon-weibo .icon:before{content:'\e80e'}.mashicon-pocket .icon:before{content:'\e80f'}.mashicon-xing .icon:before{content:'\e810'}.mashicon-flattr .icon:before{content:'\e811'}.mashicon-odnoklassniki .icon:before{content:'\e812'}.mashicon-tumblr .icon:before{content:'\e813'}.mashicon-subscribe .icon:before{content:'\e808'}.mashicon-whatsapp .icon:before{content:'\e814'}.mashicon-meneame .icon:before{content:'\e815'}.mashicon-managewp .icon:before{content:'\e816'}.mashicon-mailru .icon:before{content:'\E819'}.mashicon-line .icon:before{content:'\E81A'}.mashicon-yummly .icon:before{content:'\E81B'}.mashicon-frype .icon:before{content:'\e81c'}.mashicon-skype .icon:before{content:'\e81d'}.mashicon-share:before{content:'\e81E'}.mashicon-telegram .icon:before{content:'\e81F'}.mashicon-hackernews .icon:before{content:'\e820'}.mashicon-flipboard .icon:before{content:'\e821'}.mashsb-container{padding-top:10px;padding-bottom:10px}.mashsb-buttons a{min-width:177px}.mashsb-box .mashsb-buttons a{padding:13px;margin-right:3px;margin-bottom:3px;float:left;border:0;text-decoration:none}.mashsb-box .mashsb-buttons a:hover{text-decoration:none}.mashsb-box .mashsb-buttons a.mash-nomargin{margin-right:0}.mashsb-box .mashsb-buttons a.mash-medium{padding:10px}.mashsb-box .mashsb-buttons a.mash-small{padding:6px}.mashsb-buttons .float-right{float:right}.mashsb-buttons .float-left{float:left}.mashicon-facebook{background:#2d5f9a}.mashicon-twitter{background:#00c3f3}.mashicon-google{background:#d73d32}.mashicon-subscribe{background:#fff120}.mashicon-pinterest{background:#cd252b}.mashicon-linkedin{background:#2ba3e1}.mashicon-digg{background:#1b5791}.mashicon-stumbleupon{background:#eb4723}.mashicon-vk{background:#5d83aa}.mashicon-mail{background:#888}.mashicon-print{background:#666}.mashicon-reddit{background:#333}.mashicon-delicious{background:#39f}.mashicon-weibo{background:#ed1c24}.mashicon-pocket{background:#ee4055}.mashicon-xing{background:#135a5b}.mashicon-flattr{background:#8cb55b}.mashicon-odnoklassniki{background:#f4731c}.mashicon-managewp{background:#056cad}.mashicon-tumblr{background:#2c4762}.mashicon-meneame{background:#ff7d12}.mashicon-whatsapp{background:#1d9e11}.mashicon-buffer{background:#000}.mashicon-mailru{background:#044b89}.mashicon-line{background:#1dcd00}.mashicon-yummly{background:#e16120}.mashicon-frype{background:#f60}.mashicon-skype{background:#00afef}.mashicon-telegram{background:#1d94d3}.mashicon-hackernews{background:#f60}.mashicon-flipboard{background:#b31f17}.mashicon-buffer .icon,.mashicon-buffer .text{color:#fff}.mashicon-subscribe .icon,.mashicon-subscribe .text{color:#000}.mashsb-count{display:block;padding-bottom:0;font-size:43px;font-weight:700;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#ccc;border:0 solid #FFF;margin-right:10px;margin-top:10px;float:left;line-height:13px}.mashsb-count.mash-medium{font-size:30px;margin-top:5px}.mashsb-count.mash-small{font-size:20px;margin-top:1px}.mashsb-sharetext{font-size:11px;font-family:Arial,sans-serif;color:#8A8C8E}.mashsb-toggle-container{display:none;padding:11px 2% 8px;border:10px solid #FFF120;position:relative;margin-bottom:10px;margin-top:0}[class*=" mashicon-"],[class^=mashicon-]{position:relative;display:inline-block}[class*=" mashicon-"] .text,[class^=mashicon-] .text{padding:0;margin:0}.onoffswitch,.onoffswitch2{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;float:left;margin-bottom:3px;margin-left:0;cursor:pointer;background-color:#C5C5C5;color:#FFF;text-align:center;display:inline-block}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{line-height:10px}.mashsb-box{line-height:1}.mashsb-count>.counts{clear:both}.onoffswitch{margin-right:0;width:42px;height:42px;line-height:42px}.onoffswitch.mash-medium{width:36px;height:36px;line-height:36px}.onoffswitch.mash-small{width:28px;height:28px;line-height:28px}.onoffswitch:before{content:"+";display:inline-block;font-weight:700;font-size:30px;font-family:arial;vertical-align:middle}.onoffswitch2{margin-right:3px;width:42px;height:42px;line-height:42px}.onoffswitch2.mash-medium{width:36px;height:36px;line-height:36px}.onoffswitch2.mash-small{width:28px;height:28px;line-height:28px}.onoffswitch2:before{content:"-";display:inline-block;font-weight:700;font-size:30px;font-family:arial;vertical-align:super}@media only screen and (max-width:568px){[class*=" mashicon-"] .text,[class^=mashicon-] .text{text-indent:-9999px;line-height:0;display:block}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{content:"";text-indent:0;font-size:13px;display:block}[class*=" mashicon-"],[class^=mashicon-]{text-align:center}[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{float:none;margin-right:0}.mashsb-buttons a{margin-right:3px;margin-bottom:3px;min-width:0;width:41px}.onoffswitch,.onoffswitch-inner:after .onoffswitch2,.onoffswitch-inner:before,.onoffswitch2-inner:after,.onoffswitch2-inner:before{margin-right:0;width:41px}}.mashsb-widget-img{border:1px solid #ccc;margin-right:5px;margin-top:5px;float:left}.mashsb-widget-post-title{font-weight:700}.mashsb-share-widget li{clear:both;min-height:90px;border-bottom:1px solid #f5f5f5;list-style:none;padding-top:8px;padding-bottom:8px}.mashsb-share-widget{margin:0}.mashsb-excerpt{font-size:12px}.mashicon-share{font-size:12px;cursor:default}.mashicon-share:before{font-size:12px;margin-right:5px}.mashicon-share:hover{opacity:1}.mashsb-stretched .mashsb-buttons{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.mashsb-stretched .mashsb-buttons a{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;box-shadow:0 0}.mashsb-buttons .mashsb-shadow{-webkit-box-shadow:1px 2px 5px 0 rgba(0,0,0,.51);-moz-box-shadow:1px 2px 5px 0 rgba(0,0,0,.51);box-shadow:1px 2px 5px 0 rgba(0,0,0,.51)}.mashsb-main .mashsb-buttons .mashsb-noshadow,.mashsb-main .mashsb-buttons .mashsb-noshadow:hover{box-shadow:none;-webkit-box-shadow:none}.mashsb-main .mashsb-buttons .mashsb-pure-icons{min-width:0;flex:none;-webkit-flex:none}.mashsb-main .mashsb-buttons .mashsb-pure-icons .icon:before{margin-right:0}
|
1 |
+
.mashsb-buttons a.mash-center,.mashsb-count{text-align:center}.mashsb-buttons .secondary-shares a .text{text-indent:-9999px;line-height:0;display:block}.mashsb-buttons .secondary-shares a .text:after{content:" ";text-indent:0;font-size:13px;display:block}.mashsb-buttons .secondary-shares a{min-width:0;display:block}.mashsb-buttons .secondary-shares a .icon:before{margin-right:0}.mashsb-buttons .mashsb-hide{display:none}@font-face{font-family:mashsb-font;src:url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,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) format('truetype')}[class*=" mashicon-"]:hover,[class^=mashicon-]:hover{opacity:.8}[class*=" mashicon-"],[class^=mashicon-] .icon{display:initial;color:#fff}[class*=" mashicon-"] .text,[class^=mashicon-] .text{font-family:sans-serif;color:#fff}[class*=" mashicon-"] .onoffswitch-label,[class^=mashicon-]{font-size:15px;border-radius:0;cursor:pointer}.mashicon-share:before,[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{font-family:mashsb-font;font-style:normal;font-weight:400;speak:none;font-size:16px;display:inline-block;text-decoration:inherit;width:1em;margin-right:.7em;text-align:center;font-variant:normal;text-transform:none;margin-top:0;float:left}[class^=mashicon-].mash-center .icon:before{float:none}.mashicon-facebook .icon:before{content:'\e800'}.mashicon-google .icon:before{content:'\e801'}.mashicon-pinterest .icon:before{content:'\e802'}.mashicon-linkedin .icon:before{content:'\e803'}.mashicon-digg .icon:before{content:'\e804'}.mashicon-reddit .icon:before{content:'\e805'}.mashicon-stumbleupon .icon:before{content:'\e806'}.mashicon-twitter .icon:before{content:'\e807'}.mashicon-mail .icon:before{content:'\e808'}.mashicon-vk .icon:before{content:'\e809'}.mashicon-print .icon:before{content:'\e80a'}.mashicon-delicious .icon:before{content:'\e80b'}.mashicon-buffer .icon:before{content:'\e80c'}.mashicon-heart .icon:before{content:'\e80d'}.mashicon-weibo .icon:before{content:'\e80e'}.mashicon-pocket .icon:before{content:'\e80f'}.mashicon-xing .icon:before{content:'\e810'}.mashicon-flattr .icon:before{content:'\e811'}.mashicon-odnoklassniki .icon:before{content:'\e812'}.mashicon-tumblr .icon:before{content:'\e813'}.mashicon-subscribe .icon:before{content:'\e808'}.mashicon-whatsapp .icon:before{content:'\e814'}.mashicon-meneame .icon:before{content:'\e815'}.mashicon-managewp .icon:before{content:'\e816'}.mashicon-mailru .icon:before{content:'\E819'}.mashicon-line .icon:before{content:'\E81A'}.mashicon-yummly .icon:before{content:'\E81B'}.mashicon-frype .icon:before{content:'\e81c'}.mashicon-skype .icon:before{content:'\e81d'}.mashicon-share:before{content:'\e81E'}.mashicon-telegram .icon:before{content:'\e81F'}.mashicon-hackernews .icon:before{content:'\e820'}.mashicon-flipboard .icon:before{content:'\e821'}.mashsb-container{padding-top:10px;padding-bottom:10px}.mashsb-buttons a{min-width:177px}.mashsb-box .mashsb-buttons a{padding:13px;margin-right:3px;margin-bottom:3px;float:left;border:0;text-decoration:none}.mashsb-box .mashsb-buttons a:hover{text-decoration:none}.mashsb-box .mashsb-buttons a.mash-nomargin{margin-right:0}.mashsb-box .mashsb-buttons a.mash-medium{padding:10px}.mashsb-box .mashsb-buttons a.mash-small{padding:6px}.mashsb-buttons .float-right{float:right}.mashsb-buttons .float-left{float:left}.mashicon-facebook{background:#2d5f9a}.mashicon-twitter{background:#00c3f3}.mashicon-google{background:#d73d32}.mashicon-subscribe{background:#fff120}.mashicon-pinterest{background:#cd252b}.mashicon-linkedin{background:#2ba3e1}.mashicon-digg{background:#1b5791}.mashicon-stumbleupon{background:#eb4723}.mashicon-vk{background:#5d83aa}.mashicon-mail{background:#888}.mashicon-print{background:#666}.mashicon-reddit{background:#333}.mashicon-delicious{background:#39f}.mashicon-weibo{background:#ed1c24}.mashicon-pocket{background:#ee4055}.mashicon-xing{background:#135a5b}.mashicon-flattr{background:#8cb55b}.mashicon-odnoklassniki{background:#f4731c}.mashicon-managewp{background:#056cad}.mashicon-tumblr{background:#2c4762}.mashicon-meneame{background:#ff7d12}.mashicon-whatsapp{background:#1d9e11}.mashicon-buffer{background:#000}.mashicon-mailru{background:#044b89}.mashicon-line{background:#1dcd00}.mashicon-yummly{background:#e16120}.mashicon-frype{background:#f60}.mashicon-skype{background:#00afef}.mashicon-telegram{background:#1d94d3}.mashicon-hackernews{background:#f60}.mashicon-flipboard{background:#b31f17}.mashicon-buffer .icon,.mashicon-buffer .text{color:#fff}.mashicon-subscribe .icon,.mashicon-subscribe .text{color:#000}.mashsb-count{display:block;padding-bottom:0;font-size:43px;font-weight:700;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#ccc;border:0 solid #FFF;margin-right:10px;margin-top:10px;float:left;line-height:13px}.mashsb-count.mash-medium{font-size:30px;margin-top:5px}.mashsb-count.mash-small{font-size:20px;margin-top:1px}.mashsb-sharetext{font-size:11px;font-family:Arial,sans-serif;color:#8A8C8E}.onoffswitch2:before,.onoffswitch:before{font-size:30px;font-family:arial;font-weight:700}.mashsb-toggle-container{display:none;padding:11px 2% 8px;border:10px solid #FFF120;position:relative;margin-bottom:10px;margin-top:0}[class*=" mashicon-"],[class^=mashicon-]{position:relative;display:inline-block}[class*=" mashicon-"] .text,[class^=mashicon-] .text{padding:0;margin:0}.onoffswitch,.onoffswitch2{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;float:left;margin-bottom:3px;margin-left:0;cursor:pointer;background-color:#C5C5C5;color:#FFF;text-align:center;display:inline-block}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{line-height:10px}.mashsb-box{line-height:1}.mashsb-count>.counts{clear:both}.onoffswitch{margin-right:0;width:42px;height:42px;line-height:42px}.onoffswitch.mash-medium{width:36px;height:36px;line-height:36px}.onoffswitch.mash-small{width:28px;height:28px;line-height:28px}.onoffswitch:before{content:"+";display:inline-block;vertical-align:middle}.onoffswitch2{margin-right:3px;width:42px;height:42px;line-height:42px}.onoffswitch2.mash-medium{width:36px;height:36px;line-height:36px}.onoffswitch2.mash-small{width:28px;height:28px;line-height:28px}.onoffswitch2:before{content:"-";display:inline-block;vertical-align:super}@media only screen and (max-width:568px){[class*=" mashicon-"] .text,[class^=mashicon-] .text{text-indent:-9999px;line-height:0;display:block}[class*=" mashicon-"] .text:after,[class^=mashicon-] .text:after{content:"";text-indent:0;font-size:13px;display:block}[class*=" mashicon-"],[class^=mashicon-]{text-align:center}[class*=" mashicon-"] .icon:before,[class^=mashicon-] .icon:before{float:none;margin-right:0}.mashsb-buttons a{margin-right:3px;margin-bottom:3px;min-width:0;width:41px}.onoffswitch,.onoffswitch-inner:after .onoffswitch2,.onoffswitch-inner:before,.onoffswitch2-inner:after,.onoffswitch2-inner:before{margin-right:0;width:41px}}.mashsb-widget-img{border:1px solid #ccc;margin-right:5px;margin-top:5px;float:left}.mashsb-widget-post-title{font-weight:700}.mashsb-share-widget li{clear:both;min-height:90px;border-bottom:1px solid #f5f5f5;list-style:none;padding-top:8px;padding-bottom:8px}.mashsb-share-widget{margin:0}.mashsb-excerpt{font-size:12px}.mashicon-share{font-size:12px;cursor:default}.mashicon-share:before{font-size:12px;margin-right:5px}.mashicon-share:hover{opacity:1}.mashsb-stretched .mashsb-buttons{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.mashsb-stretched .mashsb-buttons a{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;box-shadow:0 0}.mashsb-buttons .mashsb-shadow{-webkit-box-shadow:1px 2px 5px 0 rgba(0,0,0,.51);-moz-box-shadow:1px 2px 5px 0 rgba(0,0,0,.51);box-shadow:1px 2px 5px 0 rgba(0,0,0,.51)}.mashsb-main .mashsb-buttons .mashsb-noshadow,.mashsb-main .mashsb-buttons .mashsb-noshadow:hover{box-shadow:none;-webkit-box-shadow:none}.mashsb-main .mashsb-buttons .mashsb-pure-icons{min-width:0;flex:none;-webkit-flex:none}.mashsb-main .mashsb-buttons .mashsb-pure-icons .icon:before{margin-right:0}
|
includes/admin/admin-notices.php
CHANGED
@@ -49,20 +49,7 @@ function mashsb_admin_messages() {
|
|
49 |
|
50 |
mashsb_show_update_notice_gdpr();
|
51 |
|
52 |
-
mashsb_show_new_fb_api();
|
53 |
-
|
54 |
-
// Rate Limit warning
|
55 |
-
// if( mashsb_is_admin_page() && mashsb_rate_limit_exceeded() ) {
|
56 |
-
// echo '<div class="error">';
|
57 |
-
// echo '<p>' . sprintf(__('Your website exceeded the Facebook rate limit. Share count requests to Facebook and other networks will be delayed for 60min and the Share Count will not grow during this time. If you get this notice often consider to change <strong>MashShare Caching Method</strong> to <a href="%s">Refresh while Loading</a> and use a higher cache expiration. MashShare tries again to get shares in ' . mashsbGetRemainingRateLimitTime() , 'mashsb'), admin_url() . 'admin.php?page=mashsb-settings#mashsb_settingsgeneral_header', admin_url() . 'admin.php?page=mashsb-settings#mashsb_settingsservices_header') . '</p>';
|
58 |
-
// echo '</div>';
|
59 |
-
// }
|
60 |
-
// Access Token expired
|
61 |
-
// if( mashsb_is_invalid_fb_api_key() ) {
|
62 |
-
// echo '<div class="error">';
|
63 |
-
// echo '<p>' . sprintf(__('<strong>Error: </strong>'.mashsb_is_invalid_fb_api_key().' <br> Your <strong>Facebook Access Token</strong> has been expired or is invalid. Remove the invalid access token from <a href="%s">MashShare->Settings->Networks</a> or generate a new one. Your MashShare Facebook Shares will not be refreshed any longer. <a href="%s" target="_blank">Read here</a> how to renew the Facebook access token. Fix it and press the button: | <a href="%s" class="button">CHECK AGAIN</a>', 'mashsb'), admin_url() . 'admin.php?page=mashsb-settings#mashsb_settingsservices_header', 'http://docs.mashshare.net/article/132-how-to-create-a-facebook-access-token', admin_url() . 'admin.php?mashsb_action=check_access_token&page=mashsb-settings') . '</p>';
|
64 |
-
// echo '</div>';
|
65 |
-
// }
|
66 |
|
67 |
// Cache warning
|
68 |
if( mashsb_is_deactivated_cache() ) {
|
@@ -130,7 +117,7 @@ function mashsb_admin_messages() {
|
|
130 |
// Share count is deactivated when permalinks are not used
|
131 |
if( mashsb_is_admin_page() && !mashsb_is_enabled_permalinks() ) {
|
132 |
echo '<div class="error">';
|
133 |
-
echo '<p>' . sprintf( __( '<strong>No Share Count aggregation possible!</strong> <a href="%s">Permalinks</a> must be enabled to count shares. Share count is deactivated until you have
|
134 |
echo '</div>';
|
135 |
}
|
136 |
|
@@ -444,9 +431,8 @@ function mashsb_is_invalid_fb_api_key(){
|
|
444 |
*/
|
445 |
function mashsb_show_update_notice_gdpr() {
|
446 |
|
447 |
-
|
448 |
$message = sprintf(__( '<h2 style="color:white;">MashShare GDPR Compliance</h2>'
|
449 |
-
. 'MashShare uses
|
450 |
, 'mashsb' ),
|
451 |
admin_url() . 'admin.php?page=mashsb-settings'
|
452 |
);
|
@@ -457,7 +443,7 @@ function mashsb_show_update_notice_gdpr() {
|
|
457 |
|
458 |
// admin notice after updating Mashshare
|
459 |
echo '<div class="mashsb-notice-gdpr mashsb_update_notice_gdpr update-nag" style="background-color: #00abed;color: white;padding: 20px;margin-top: 20px;border: 3px solid white;">' . $message .
|
460 |
-
'<p><a href="'.admin_url().'admin.php?page=mashsb-settings&mashsb-action=hide_gdpr_notice" class="mashsb_hide_gdpr" title="I got it" style="text-decoration:none;color:white;">- I Understand! Do Not Show This Message Again -</a></a>'.
|
461 |
'</div>';
|
462 |
|
463 |
|
@@ -469,47 +455,17 @@ function mashsb_show_update_notice_gdpr() {
|
|
469 |
* @global array $mashsb_options
|
470 |
*/
|
471 |
function mashsb_hide_gdpr_notice(){
|
472 |
-
global $mashsb_options;
|
473 |
-
// Get all settings
|
474 |
update_option( 'mashsb_show_update_notice_gdpr1', 'no' );
|
475 |
}
|
476 |
add_action ('mashsb_hide_gdpr_notice', 'mashsb_hide_gdpr_notice');
|
477 |
|
478 |
|
479 |
-
|
480 |
-
/**
|
481 |
-
* Show notice for new FB API
|
482 |
-
* @since 3.5.3.0
|
483 |
-
*/
|
484 |
-
function mashsb_show_new_fb_api() {
|
485 |
-
|
486 |
-
|
487 |
-
$message = sprintf(__( '<h2 style="color:white;">MashShare: Facebook API Changes</h2>'
|
488 |
-
. 'Facebook shut down its old API endpoint so you need to switch over to sharedcount.com integration to get the latest Facebook share count. <br>Add sharedcount.com API key at <a href="'.admin_url().'admin.php?page=mashsb-settings#mashsb_settingsgeneral_header" style="color:white;">MashShare > Settings > General > Share Count</a><br>'
|
489 |
-
, 'mashsb' ),
|
490 |
-
admin_url() . 'admin.php?page=mashsb-settings'
|
491 |
-
);
|
492 |
-
|
493 |
-
if( get_option( 'mashsb_show_new_fb_api' ) === 'no' ) {
|
494 |
-
return false;
|
495 |
-
}
|
496 |
-
|
497 |
-
// admin notice after updating Mashshare
|
498 |
-
echo '<div class="mashsb-notice-gdpr mashsb_update_notice_gdpr update-nag" style="background-color: red;color: white;padding: 20px;margin-top: 20px;border: 3px solid white;">' . $message .
|
499 |
-
'<p><a href="'.admin_url().'admin.php?page=mashsb-settings&mashsb-action=hide_fb_api_notice" class="mashsb_hide_fb_api" title="I got it" style="text-decoration:none;color:white;">- I Understand! Do Not Show This Message Again -</a></a>'.
|
500 |
-
'</div>';
|
501 |
-
|
502 |
-
|
503 |
-
}
|
504 |
-
|
505 |
/**
|
506 |
* Hide FB API notice
|
507 |
*
|
508 |
* @global array $mashsb_options
|
509 |
*/
|
510 |
function mashsb_hide_fb_api_notice(){
|
511 |
-
global $mashsb_options;
|
512 |
-
// Get all settings
|
513 |
update_option( 'mashsb_show_new_fb_api', 'no' );
|
514 |
}
|
515 |
add_action ('mashsb_hide_fb_api_notice', 'mashsb_hide_fb_api_notice');
|
49 |
|
50 |
mashsb_show_update_notice_gdpr();
|
51 |
|
52 |
+
//mashsb_show_new_fb_api();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
// Cache warning
|
55 |
if( mashsb_is_deactivated_cache() ) {
|
117 |
// Share count is deactivated when permalinks are not used
|
118 |
if( mashsb_is_admin_page() && !mashsb_is_enabled_permalinks() ) {
|
119 |
echo '<div class="error">';
|
120 |
+
echo '<p>' . sprintf( __( '<strong>No Share Count aggregation possible!</strong> <a href="%s">Permalinks</a> must be enabled to count shares. Share count is deactivated until you have changed this.', 'mashsb' ), admin_url( 'options-permalink.php' ) ) . '</p>';
|
121 |
echo '</div>';
|
122 |
}
|
123 |
|
431 |
*/
|
432 |
function mashsb_show_update_notice_gdpr() {
|
433 |
|
|
|
434 |
$message = sprintf(__( '<h2 style="color:white;">MashShare GDPR Compliance</h2>'
|
435 |
+
. 'MashShare uses sharedcount.com integration to be GDPR compliant. <br>Activate sharedcount.com at <a href="'.admin_url().'admin.php?page=mashsb-settings#mashsb_settingsgeneral_header" style="color:white;">MashShare > Settings > General > Share Count</a><br><br>For collecting Twitter shares get the <a href="https://mashshare.net/downloads/mashshare-social-networks-addon/?utm_source=wp-admin&utm_medium=gdpr-notice&utm_campaign=gdpr-notice" target="_blank" style="color:white;text-decoration:underline;">Social Network Add-On</a>'
|
436 |
, 'mashsb' ),
|
437 |
admin_url() . 'admin.php?page=mashsb-settings'
|
438 |
);
|
443 |
|
444 |
// admin notice after updating Mashshare
|
445 |
echo '<div class="mashsb-notice-gdpr mashsb_update_notice_gdpr update-nag" style="background-color: #00abed;color: white;padding: 20px;margin-top: 20px;border: 3px solid white;">' . $message .
|
446 |
+
'<p><a href="'.admin_url().'admin.php?page=mashsb-settings&mashsb-action=hide_gdpr_notice" class="mashsb_hide_gdpr" title="I got it" style="text-decoration:none;color:white;text-decoration:underline;">- I Understand! Do Not Show This Message Again -</a></a>'.
|
447 |
'</div>';
|
448 |
|
449 |
|
455 |
* @global array $mashsb_options
|
456 |
*/
|
457 |
function mashsb_hide_gdpr_notice(){
|
|
|
|
|
458 |
update_option( 'mashsb_show_update_notice_gdpr1', 'no' );
|
459 |
}
|
460 |
add_action ('mashsb_hide_gdpr_notice', 'mashsb_hide_gdpr_notice');
|
461 |
|
462 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
463 |
/**
|
464 |
* Hide FB API notice
|
465 |
*
|
466 |
* @global array $mashsb_options
|
467 |
*/
|
468 |
function mashsb_hide_fb_api_notice(){
|
|
|
|
|
469 |
update_option( 'mashsb_show_new_fb_api', 'no' );
|
470 |
}
|
471 |
add_action ('mashsb_hide_fb_api_notice', 'mashsb_hide_fb_api_notice');
|
includes/admin/welcome.php
CHANGED
@@ -131,8 +131,8 @@ class MASHSB_Welcome {
|
|
131 |
$this->tabs();
|
132 |
?>
|
133 |
<?php if (isset($_GET['redirect'])) {?>
|
134 |
-
<p class="about-description mashsb-notice" style="background-color:#00abed;color:white;padding:20px;margin-top:20px;border:3px solid white;"><?php _e( '<strong>Facebook</strong> and <strong>Twitter Share Buttons</strong> have been enabled on all your posts! <br>Use the instructions below to customize MashShare.<br><br
|
135 |
-
Register for sharedcount.com
|
136 |
<?php } ?>
|
137 |
<div class="changelog clear">
|
138 |
<h1><?php _e( 'Create Your First Social Sharing Button', 'mashsb' ); ?></h1>
|
131 |
$this->tabs();
|
132 |
?>
|
133 |
<?php if (isset($_GET['redirect'])) {?>
|
134 |
+
<p class="about-description mashsb-notice" style="background-color:#00abed;color:white;padding:20px;margin-top:20px;border:3px solid white;"><?php _e( '<strong>Facebook</strong> and <strong>Twitter Share Buttons</strong> have been enabled on all your posts! <br>Use the instructions below to customize MashShare.<br><br>- </strong>MashShare uses sharedcount.com integration to be GDPR compliant.
|
135 |
+
Register for sharedcount.com on <a href="'.admin_url().'admin.php?page=mashsb-settings" style="color:white;">MashShare > Settings > Sharecount</a>', 'mashsb' ); ?></p>
|
136 |
<?php } ?>
|
137 |
<div class="changelog clear">
|
138 |
<h1><?php _e( 'Create Your First Social Sharing Button', 'mashsb' ); ?></h1>
|
includes/template-functions.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
* @since 2.0.0
|
11 |
*/
|
12 |
// Exit if accessed directly
|
13 |
-
if(
|
14 |
exit;
|
15 |
|
16 |
|
@@ -19,11 +19,11 @@ if( !defined( 'ABSPATH' ) )
|
|
19 |
* return void
|
20 |
*/
|
21 |
|
22 |
-
add_shortcode(
|
23 |
-
add_filter(
|
24 |
-
add_filter(
|
25 |
-
add_action(
|
26 |
-
add_filter(
|
27 |
|
28 |
|
29 |
/* Get Execution order of injected Share Buttons in $content
|
@@ -32,9 +32,10 @@ add_filter( 'mash_share_title', 'mashsb_get_title', 10, 2 );
|
|
32 |
* @return int
|
33 |
*/
|
34 |
|
35 |
-
function getExecutionOrder()
|
|
|
36 |
global $mashsb_options;
|
37 |
-
isset(
|
38 |
return $priority;
|
39 |
}
|
40 |
|
@@ -47,28 +48,29 @@ function getExecutionOrder() {
|
|
47 |
* @changed 3.1.8
|
48 |
*/
|
49 |
|
50 |
-
function mashsbGetShareObj(
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
72 |
}
|
73 |
|
74 |
/*
|
@@ -78,8 +80,9 @@ function mashsbGetShareObj( $url ) {
|
|
78 |
* @returns int share count
|
79 |
*/
|
80 |
|
81 |
-
function mashsbGetShareMethod(
|
82 |
-
|
|
|
83 |
$mashsbShareCounts = $mashsbSharesObj->getAllCounts();
|
84 |
return $mashsbShareCounts;
|
85 |
}
|
@@ -89,15 +92,16 @@ function mashsbGetShareMethod( $mashsbSharesObj ) {
|
|
89 |
|
90 |
/**
|
91 |
* Get share count for all non singular pages where $post is empty or a custom url is used E.g. category or blog list pages or for shortcodes
|
92 |
-
* Uses transients
|
93 |
-
*
|
94 |
* @param string $url
|
95 |
-
*
|
96 |
* @returns integer $shares
|
97 |
*/
|
98 |
-
function mashsbGetNonPostShares(
|
|
|
99 |
global $mashsb_debug;
|
100 |
-
|
101 |
/*
|
102 |
* Deactivate share count on:
|
103 |
* - 404 pages
|
@@ -109,54 +113,56 @@ function mashsbGetNonPostShares( $url ) {
|
|
109 |
* - deprecated: admin pages (we need to remove this for themes which are using a bad infinite scroll implementation where is_admin() is always true)
|
110 |
*/
|
111 |
|
112 |
-
|
113 |
-
if(
|
114 |
$mashsb_debug[] = 'MashShare: Share count (temporary) disabled';
|
115 |
-
return apply_filters(
|
116 |
}
|
117 |
-
|
118 |
-
|
119 |
// Expiration
|
120 |
$expiration = mashsb_get_expiration();
|
121 |
-
|
122 |
// Remove variables, parameters and trailingslash
|
123 |
-
$url_clean = mashsb_sanitize_url(
|
124 |
|
125 |
// Get any existing copy of our transient data and fill the cache
|
126 |
-
if(
|
127 |
-
|
128 |
// Its request limited
|
129 |
-
if (
|
130 |
mashsbGetShareCountFromTransient($url_clean);
|
131 |
}
|
132 |
|
133 |
// Regenerate the data and save the transient
|
134 |
// Get the share Object
|
135 |
-
$mashsbSharesObj = mashsbGetShareObj(
|
136 |
// Get the share counts object
|
137 |
-
$mashsbShareCounts = mashsbGetShareMethod(
|
138 |
|
139 |
// Set the transient and return shares
|
140 |
-
set_transient(
|
141 |
-
MASHSB()->logger->info(
|
142 |
return $mashsbShareCounts->total + getFakecount();
|
143 |
} else {
|
144 |
-
|
145 |
}
|
146 |
}
|
|
|
147 |
/**
|
148 |
* get share count from transient
|
149 |
* @param type string
|
150 |
* @return int
|
151 |
*/
|
152 |
-
function mashsbGetShareCountFromTransient($url)
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
|
|
160 |
xdebug_break();
|
161 |
}
|
162 |
|
@@ -164,18 +170,19 @@ function mashsbGetShareCountFromTransient($url){
|
|
164 |
* Allow or disable share counts for particular posts types to lower the api requests to sharedcount.com
|
165 |
* @return boolean
|
166 |
*/
|
167 |
-
function mashsbIsPostTypeAllowed()
|
|
|
168 |
$postType = get_post_type();
|
169 |
-
|
170 |
-
$allowedPostTypes = apply_filters('mashsb_allowed_post_types', array()
|
171 |
-
|
172 |
// If $allowedPostTypes is not defined all post types are allowed
|
173 |
-
if(empty($allowedPostTypes)
|
174 |
return true;
|
175 |
}
|
176 |
-
|
177 |
// If filter is used check if current post type is in array of allowed ones
|
178 |
-
if (in_array($postType, $allowedPostTypes)){
|
179 |
return true;
|
180 |
}
|
181 |
return false;
|
@@ -190,11 +197,13 @@ function mashsbIsPostTypeAllowed(){
|
|
190 |
*/
|
191 |
|
192 |
|
193 |
-
function getSharedcount(
|
|
|
194 |
global $mashsb_options, $post, $mashsb_sharecount, $mashsb_debug; // todo test a global share count var if it reduces the amount of requests
|
195 |
|
196 |
/*
|
197 |
* Deactivate share count on:
|
|
|
198 |
* - 404 pages
|
199 |
* - search page
|
200 |
* - empty url
|
@@ -205,29 +214,27 @@ function getSharedcount( $url ) {
|
|
205 |
*/
|
206 |
|
207 |
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
// return (int) get_post_meta($post->ID, 'mashsb_shares', true) + getFakecount();
|
212 |
-
// }
|
213 |
|
214 |
|
215 |
-
if(
|
216 |
$mashsb_debug[] = 'MashShare: Share count (temporary) disabled';
|
217 |
-
return apply_filters(
|
218 |
}
|
219 |
-
|
220 |
$mashsb_debug[] = 'Trying to get share count!';
|
221 |
-
|
222 |
// Return global share count variable to prevent multiple execution
|
223 |
-
if (is_array($mashsb_sharecount) && array_key_exists($url, $mashsb_sharecount) && !empty($mashsb_sharecount[$url]) && !mashsb_is_cache_refresh()
|
224 |
return $mashsb_sharecount[$url] + getFakecount();
|
225 |
}
|
226 |
-
|
227 |
-
|
228 |
// Remove mashsb-refresh query parameter
|
229 |
$url = mashsb_sanitize_url($url);
|
230 |
-
|
231 |
|
232 |
/*
|
233 |
* Return share count on non singular pages when url is defined
|
@@ -235,78 +242,79 @@ function getSharedcount( $url ) {
|
|
235 |
*/
|
236 |
|
237 |
|
238 |
-
if(
|
239 |
$mashsb_debug[] = '$url or $post is empty. Return share count with mashsbGetNonPostShares';
|
240 |
-
return apply_filters(
|
241 |
}
|
242 |
|
243 |
/*
|
244 |
* Refresh Cache
|
245 |
*/
|
246 |
-
if(
|
247 |
-
|
248 |
$mashsb_debug[] = 'Force Cache Refresh for page type singular()';
|
249 |
-
|
250 |
// Its request limited
|
251 |
-
if (
|
252 |
-
$mashsb_debug[] = 'Rate limit reached: Return Share from custom meta field.';
|
253 |
-
return (int)get_post_meta(
|
254 |
}
|
255 |
|
256 |
// free some memory
|
257 |
-
unset (
|
258 |
-
|
259 |
// Write timestamp (Use this on top of this condition. If this is not on top following return statements will be skipped and ignored - possible bug?)
|
260 |
-
update_post_meta(
|
261 |
|
262 |
-
MASHSB()->logger->info(
|
263 |
$mashsb_debug[] = 'Refresh Cache: Update Timestamp: ' . time();
|
264 |
// Get the share Object
|
265 |
-
$mashsbSharesObj = mashsbGetShareObj(
|
266 |
// Get the share count Method
|
267 |
-
$mashsbShareCounts = mashsbGetShareMethod(
|
268 |
// Get stored share count
|
269 |
-
$mashsbStoredShareCount = get_post_meta(
|
270 |
|
271 |
// Create global sharecount
|
272 |
$mashsb_sharecount = array($url => $mashsbShareCounts->total);
|
273 |
-
|
274 |
$mashsb_debug[] = 'Get Share count for URL: ' . $url . ' Shares: ' . $mashsbShareCounts->total;
|
275 |
-
MASHSB()->logger->info(
|
276 |
/*
|
277 |
* Update post_meta only when API is requested and
|
278 |
* API share count is greater than real fresh requested share count ->
|
279 |
*/
|
280 |
-
|
281 |
-
if(
|
282 |
-
update_post_meta(
|
283 |
-
update_post_meta(
|
284 |
-
MASHSB()->logger->info(
|
285 |
-
|
286 |
/* return counts from getAllCounts() after DB update */
|
287 |
-
return apply_filters(
|
288 |
}
|
289 |
-
|
290 |
/* return previous counts from DB Cache | this happens when API has a hiccup and does not return any results as expected */
|
291 |
-
return apply_filters(
|
292 |
} else {
|
293 |
// Return cached results
|
294 |
-
$cachedCountsMeta = is_numeric($var = get_post_meta(
|
295 |
$cachedCounts = $cachedCountsMeta + getFakecount();
|
296 |
$mashsb_debug[] = 'Cached Results: ' . $cachedCounts . ' url:' . $url;
|
297 |
-
MASHSB()->logger->info(
|
298 |
-
return apply_filters(
|
299 |
}
|
300 |
}
|
301 |
|
302 |
-
function mashsb_subscribe_button()
|
|
|
303 |
global $mashsb_options;
|
304 |
-
if(
|
305 |
-
$subscribebutton = '<a href="javascript:void(0)" class="mashicon-subscribe" id="mash-subscribe-control"><span class="icon"><span class="text">' . __(
|
306 |
} else {
|
307 |
$subscribebutton = '';
|
308 |
}
|
309 |
-
return apply_filters(
|
310 |
}
|
311 |
|
312 |
/* Put the Subscribe container under the share buttons
|
@@ -314,14 +322,15 @@ function mashsb_subscribe_button() {
|
|
314 |
* @return string
|
315 |
*/
|
316 |
|
317 |
-
function mashsb_subscribe_content()
|
|
|
318 |
global $mashsb_options;
|
319 |
-
if(
|
320 |
-
$container = '<div class="mashsb-toggle-container">' . mashsb_cleanShortcode(
|
321 |
} else {
|
322 |
$container = '';
|
323 |
}
|
324 |
-
return apply_filters(
|
325 |
}
|
326 |
|
327 |
/* Check if [mashshare] shortcode is used in subscribe field and deletes it
|
@@ -331,14 +340,15 @@ function mashsb_subscribe_content() {
|
|
331 |
* @return string / shortcodes parsed
|
332 |
*/
|
333 |
|
334 |
-
function mashsb_cleanShortcode(
|
|
|
335 |
global $shortcode_tags;
|
336 |
$stack = $shortcode_tags;
|
337 |
$shortcode_tags = array($code => 1);
|
338 |
-
$content = strip_shortcodes(
|
339 |
$shortcode_tags = $stack;
|
340 |
|
341 |
-
return do_shortcode(
|
342 |
}
|
343 |
|
344 |
/* Round the totalshares
|
@@ -348,13 +358,14 @@ function mashsb_cleanShortcode( $code, $content ) {
|
|
348 |
* @return string
|
349 |
*/
|
350 |
|
351 |
-
function roundshares(
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
|
|
356 |
}
|
357 |
-
return apply_filters(
|
358 |
}
|
359 |
|
360 |
/* Return the more networks button
|
@@ -362,20 +373,21 @@ function roundshares( $totalshares ) {
|
|
362 |
* @return string
|
363 |
*/
|
364 |
|
365 |
-
function onOffSwitch($size = false)
|
|
|
366 |
global $mashsb_options;
|
367 |
-
|
368 |
// Get class names for buttons size
|
369 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
370 |
-
|
371 |
// Override size with shortcode argument
|
372 |
-
$class_size = $size ? ' mash-'
|
373 |
-
|
374 |
// Get class names for button style
|
375 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
376 |
-
|
377 |
$output = '<div class="onoffswitch' . $class_size . $class_style . '"></div>';
|
378 |
-
return apply_filters(
|
379 |
}
|
380 |
|
381 |
/* Return the second more networks button after
|
@@ -386,20 +398,21 @@ function onOffSwitch($size = false) {
|
|
386 |
* @return string
|
387 |
*/
|
388 |
|
389 |
-
function onOffSwitch2(
|
|
|
390 |
global $mashsb_options;
|
391 |
-
|
392 |
// Get class names for buttons size
|
393 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
394 |
-
|
395 |
// Override size with shortcode argument
|
396 |
-
$class_size = $size ? ' mash-'
|
397 |
-
|
398 |
// Get class names for button style
|
399 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
400 |
-
|
401 |
-
$output = '<div class="onoffswitch2'
|
402 |
-
return apply_filters(
|
403 |
}
|
404 |
|
405 |
/*
|
@@ -408,8 +421,9 @@ function onOffSwitch2( $size = false) {
|
|
408 |
* @return callback
|
409 |
*/
|
410 |
|
411 |
-
function isStatus(
|
412 |
-
|
|
|
413 |
}
|
414 |
|
415 |
/*
|
@@ -422,22 +436,23 @@ function isStatus( $var ) {
|
|
422 |
* @return string
|
423 |
*/
|
424 |
|
425 |
-
function arrNetworks(
|
|
|
426 |
global $mashsb_custom_url, $mashsb_custom_text, $mashsb_twitter_url;
|
427 |
|
428 |
-
if(
|
429 |
-
$url = !empty(
|
430 |
-
$title = !empty(
|
431 |
-
$twitter_title = !empty(
|
432 |
}
|
433 |
-
if(
|
434 |
$url = urlencode(mashsb_get_url());
|
435 |
$title = mashsb_get_title();
|
436 |
$twitter_title = mashsb_get_twitter_title();
|
437 |
}
|
438 |
|
439 |
$via = mashsb_get_twitter_username() ? '&via=' . mashsb_get_twitter_username() : '';
|
440 |
-
|
441 |
$networks_arr = array(
|
442 |
'facebook' => 'https://www.facebook.com/sharer.php?u=' . mashsb_append_tracking_param($url, 'facebook'),
|
443 |
'twitter' => 'https://twitter.com/intent/tweet?text=' . $twitter_title . '&url=' . $mashsb_twitter_url . $via,
|
@@ -445,15 +460,15 @@ function arrNetworks( $name, $is_shortcode ) {
|
|
445 |
'url' => mashsb_append_tracking_param($url),
|
446 |
'title' => $title
|
447 |
);
|
448 |
-
|
449 |
-
|
450 |
// Delete custom text
|
451 |
unset ($mashsb_custom_text);
|
452 |
// Delete custom url
|
453 |
unset ($mashsb_custom_url);
|
454 |
|
455 |
-
$networks = apply_filters(
|
456 |
-
return isset(
|
457 |
}
|
458 |
|
459 |
/* Returns all available networks
|
@@ -466,30 +481,31 @@ function arrNetworks( $name, $is_shortcode ) {
|
|
466 |
* @return string html
|
467 |
*/
|
468 |
|
469 |
-
function mashsb_getNetworks(
|
|
|
470 |
global $mashsb_options, $mashsb_custom_url, $enablednetworks, $mashsb_twitter_url;
|
471 |
-
|
472 |
-
|
473 |
// define globals
|
474 |
-
if(
|
475 |
-
$mashsb_twitter_url = !empty(
|
476 |
|
477 |
-
}else{
|
478 |
$mashsb_twitter_url = mashsb_get_twitter_url();
|
479 |
}
|
480 |
-
|
481 |
// Get class names for buttons size
|
482 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
483 |
-
|
484 |
// Override size with shortcode argument
|
485 |
//$class_size = $size ? ' mash-'.$size : $class_size;
|
486 |
-
|
487 |
// Get class names for buttons margin
|
488 |
$class_margin = isset($mashsb_options['button_margin']) ? '' : ' mash-nomargin';
|
489 |
|
490 |
// Get class names for center align
|
491 |
$class_center = isset($mashsb_options['text_align_center']) ? ' mash-center' : '';
|
492 |
-
|
493 |
// Get class names for button style
|
494 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
495 |
|
@@ -503,9 +519,9 @@ function mashsb_getNetworks( $is_shortcode = false, $services = 0 ) {
|
|
503 |
/* counter for 'Visible Services' */
|
504 |
$startcounter = 1;
|
505 |
|
506 |
-
$maxcounter = isset(
|
507 |
$maxcounter = ($maxcounter === 'all') ? 'all' : ($maxcounter + 1); // plus 1 to get networks correct counted (array's starting counting from zero)
|
508 |
-
$maxcounter = apply_filters(
|
509 |
|
510 |
/* Overwrite maxcounter with shortcode attribute */
|
511 |
$maxcounter = ($services === 0) ? $maxcounter : $services;
|
@@ -514,15 +530,15 @@ function mashsb_getNetworks( $is_shortcode = false, $services = 0 ) {
|
|
514 |
* Our list of available services, includes the disabled ones!
|
515 |
* We have to clean this array first!
|
516 |
*/
|
517 |
-
$getnetworks = isset(
|
518 |
-
|
519 |
-
|
520 |
/* Delete disabled services from array. Use callback function here. Do this only once because array_filter is slow!
|
521 |
* Use the newly created array and bypass the callback function
|
522 |
*/
|
523 |
-
if(
|
524 |
-
if(
|
525 |
-
$enablednetworks = array_filter(
|
526 |
} else {
|
527 |
$enablednetworks = $enablednetworks;
|
528 |
}
|
@@ -530,49 +546,49 @@ function mashsb_getNetworks( $is_shortcode = false, $services = 0 ) {
|
|
530 |
$enablednetworks = $getnetworks;
|
531 |
}
|
532 |
|
533 |
-
|
534 |
// Use custom networks if available and override default networks
|
535 |
//$enablednetworks = $networks ? $networks : $enablednetworks;
|
536 |
-
|
537 |
//var_dump($enablednetworks);
|
538 |
-
|
539 |
// Start Primary Buttons
|
540 |
-
|
541 |
-
if(
|
542 |
-
foreach (
|
543 |
-
|
544 |
-
if(
|
545 |
-
if(
|
546 |
$onoffswitch = onOffSwitch(); // Start More Button
|
547 |
//$startsecondaryshares = '</div>'; // End Primary Buttons
|
548 |
$visibility = mashsb_is_amp_page() ? '' : 'display:none;';
|
549 |
-
$startsecondaryshares .= '<div class="secondary-shares" style="'
|
550 |
} else {
|
551 |
$onoffswitch = '';
|
552 |
$onoffswitch2 = '';
|
553 |
$startsecondaryshares = '';
|
554 |
}
|
555 |
-
if(
|
556 |
$endsecondaryshares = '</div>';
|
557 |
} else {
|
558 |
$endsecondaryshares = '';
|
559 |
}
|
560 |
}
|
561 |
|
562 |
-
if(
|
563 |
/* replace all spaces with $nbsp; This prevents error in css style content: text-intend */
|
564 |
-
$name = preg_replace(
|
565 |
} else {
|
566 |
-
$name = ucfirst(
|
567 |
}
|
568 |
-
|
569 |
$enablednetworks[$key]['id'] == 'whatsapp' && !mashsb_is_amp_page() ? $display = 'style="display:none;"' : $display = ''; // Whatsapp button is made visible via js when opened on mobile devices
|
570 |
|
571 |
// Lets use the data attribute to prevent that pininit.js is overwriting our pinterest button - PR: https://secure.helpscout.net/conversation/257066283/954/?folderId=924740
|
572 |
-
if ('pinterest' === $enablednetworks[$key]['id'] && !mashsb_is_amp_page()
|
573 |
-
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . '" href="#" data-mashsb-url="'. arrNetworks(
|
574 |
} else {
|
575 |
-
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . '" href="' . arrNetworks(
|
576 |
}
|
577 |
$output .= $onoffswitch;
|
578 |
$output .= $startsecondaryshares;
|
@@ -583,9 +599,10 @@ function mashsb_getNetworks( $is_shortcode = false, $services = 0 ) {
|
|
583 |
$output .= $endsecondaryshares;
|
584 |
}
|
585 |
|
586 |
-
return apply_filters(
|
587 |
}
|
588 |
-
|
|
|
589 |
* Return all available networks for Shortcode generated buttons
|
590 |
*
|
591 |
* @since 2.0
|
@@ -596,36 +613,37 @@ function mashsb_getNetworks( $is_shortcode = false, $services = 0 ) {
|
|
596 |
* @return string html
|
597 |
*/
|
598 |
|
599 |
-
function mashsb_getNetworksShortcode(
|
|
|
600 |
//global $mashsb_options, $mashsb_custom_url, $enablednetworks, $mashsb_twitter_url;
|
601 |
global $mashsb_options, $mashsb_custom_url, $mashsb_twitter_url;
|
602 |
-
|
603 |
-
|
604 |
// define globals
|
605 |
-
if(
|
606 |
-
$mashsb_twitter_url = !empty(
|
607 |
|
608 |
-
}else{
|
609 |
$mashsb_twitter_url = mashsb_get_twitter_url();
|
610 |
}
|
611 |
-
|
612 |
// Get class names for buttons size
|
613 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
614 |
-
|
615 |
// Override size with shortcode argument
|
616 |
-
$class_size = $size ? ' mash-'
|
617 |
-
|
618 |
// Get class names for buttons margin
|
619 |
$class_margin = isset($mashsb_options['button_margin']) ? '' : ' mash-nomargin';
|
620 |
|
621 |
// Get class names for center align
|
622 |
$class_center = isset($mashsb_options['text_align_center']) ? ' mash-center' : '';
|
623 |
-
|
624 |
// Get class names for button style
|
625 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
626 |
-
|
627 |
-
$class_icons = $icons ? ' mashsb-pure-icons' : '';
|
628 |
-
|
629 |
//$style = $fullwidth ? '' : 'style="min-width:0;flex:none;-webkit-flex:none;"';
|
630 |
|
631 |
$output = '';
|
@@ -638,9 +656,9 @@ function mashsb_getNetworksShortcode( $is_shortcode = false, $services = 0, $net
|
|
638 |
/* counter for 'Visible Services' */
|
639 |
$startcounter = 1;
|
640 |
|
641 |
-
$maxcounter = isset(
|
642 |
$maxcounter = ($maxcounter === 'all') ? 'all' : ($maxcounter + 1); // plus 1 to get networks correct counted (array's starting counting from zero)
|
643 |
-
$maxcounter = apply_filters(
|
644 |
|
645 |
/* Overwrite maxcounter with shortcode attribute */
|
646 |
$maxcounter = ($services === 0) ? $maxcounter : $services;
|
@@ -649,15 +667,15 @@ function mashsb_getNetworksShortcode( $is_shortcode = false, $services = 0, $net
|
|
649 |
* Our list of available services, includes the disabled ones!
|
650 |
* We have to clean this array first!
|
651 |
*/
|
652 |
-
$getnetworks = isset(
|
653 |
|
654 |
/*
|
655 |
* Delete disabled services from array. Use callback function here. Do this only once because array_filter is slow!
|
656 |
* Use the newly created array and bypass the callback function
|
657 |
*/
|
658 |
-
if(
|
659 |
-
if(
|
660 |
-
$enablednetworks = array_filter(
|
661 |
} else {
|
662 |
$enablednetworks = $enablednetworks;
|
663 |
}
|
@@ -665,19 +683,19 @@ function mashsb_getNetworksShortcode( $is_shortcode = false, $services = 0, $net
|
|
665 |
$enablednetworks = $getnetworks;
|
666 |
}
|
667 |
|
668 |
-
|
669 |
// Use custom networks if available and override default networks
|
670 |
$enablednetworks = $networks ? $networks : $enablednetworks;
|
671 |
-
|
672 |
//var_dump($enablednetworks);
|
673 |
-
|
674 |
// Start Primary Buttons
|
675 |
-
|
676 |
-
if(
|
677 |
-
foreach (
|
678 |
-
|
679 |
-
if(
|
680 |
-
if(
|
681 |
$onoffswitch = onOffSwitch($size); // Start More Button
|
682 |
//$startsecondaryshares = '</div>'; // End Primary Buttons
|
683 |
$startsecondaryshares .= '<div class="secondary-shares" style="display:none;">'; // Start secondary-shares
|
@@ -686,27 +704,27 @@ function mashsb_getNetworksShortcode( $is_shortcode = false, $services = 0, $net
|
|
686 |
$onoffswitch2 = '';
|
687 |
$startsecondaryshares = '';
|
688 |
}
|
689 |
-
if(
|
690 |
$endsecondaryshares = '</div>';
|
691 |
} else {
|
692 |
$endsecondaryshares = '';
|
693 |
}
|
694 |
}
|
695 |
|
696 |
-
if(
|
697 |
/* replace all spaces with $nbsp; This prevents error in css style content: text-intend */
|
698 |
-
$name = !$icons ? preg_replace(
|
699 |
} else {
|
700 |
-
$name = !$icons ? ucfirst(
|
701 |
}
|
702 |
-
|
703 |
//$enablednetworks[$key]['id'] == 'whatsapp' ? $display = 'style="display:none;"' : $display = ''; // Whatsapp button is made visible via js when opened on mobile devices
|
704 |
|
705 |
// Lets use the data attribute to prevent that pininit.js is overwriting our pinterest button - PR: https://secure.helpscout.net/conversation/257066283/954/?folderId=924740
|
706 |
-
if ('pinterest' === $enablednetworks[$key]['id'] && !mashsb_is_amp_page()
|
707 |
-
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . $class_icons . '" href="#" data-mashsb-url="'. arrNetworks(
|
708 |
} else {
|
709 |
-
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . $class_icons . '" href="' . arrNetworks(
|
710 |
}
|
711 |
$output .= $onoffswitch;
|
712 |
$output .= $startsecondaryshares;
|
@@ -717,7 +735,7 @@ function mashsb_getNetworksShortcode( $is_shortcode = false, $services = 0, $net
|
|
717 |
$output .= $endsecondaryshares;
|
718 |
}
|
719 |
|
720 |
-
return apply_filters(
|
721 |
}
|
722 |
|
723 |
|
@@ -729,67 +747,69 @@ function mashsb_getNetworksShortcode( $is_shortcode = false, $services = 0, $net
|
|
729 |
* @returns string html
|
730 |
*/
|
731 |
|
732 |
-
function mashshareShow()
|
|
|
733 |
global $mashsb_options;
|
734 |
-
|
735 |
$class_stretched = isset($mashsb_options['responsive_buttons']) ? 'mashsb-stretched' : '';
|
736 |
|
737 |
$return = '<aside class="mashsb-container mashsb-main ' . $class_stretched . '">'
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
</div>
|
745 |
<div style="clear:both;"></div>'
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
<!-- Share buttons by mashshare.net - Version: ' . MASHSB_VERSION . '-->';
|
750 |
-
return apply_filters(
|
751 |
}
|
752 |
|
753 |
/**
|
754 |
* Render the sharecount template
|
755 |
-
*
|
756 |
* @param string $customurl default empty
|
757 |
* @param string alignment default left
|
758 |
* @return string html
|
759 |
*/
|
760 |
-
function mashsb_render_sharecounts(
|
|
|
761 |
global $mashsb_options;
|
762 |
-
|
763 |
// Share count disabled
|
764 |
-
if (false === mashsbIsPostTypeAllowed()){
|
765 |
return '';
|
766 |
}
|
767 |
|
768 |
-
if(
|
769 |
return '';
|
770 |
}
|
771 |
|
772 |
-
$url = empty(
|
773 |
-
$sharetitle = isset(
|
774 |
|
775 |
-
$shares = getSharedcount(
|
776 |
-
$sharecount = isset(
|
777 |
|
778 |
// do not show shares after x shares
|
779 |
-
if(
|
780 |
return;
|
781 |
}
|
782 |
-
|
783 |
// Get class names for buttons size
|
784 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
785 |
-
|
786 |
// Override size with shortcode argument
|
787 |
-
$class_size = $size ? ' mash-'
|
788 |
-
|
789 |
// No inline style if it's amp
|
790 |
$style = !mashsb_is_amp_page() ? 'style="float:' . $align . ';"' : '';
|
791 |
|
792 |
-
$html = '<div class="mashsb-count'
|
793 |
return apply_filters('mashsb_share_count', $html);
|
794 |
}
|
795 |
|
@@ -801,15 +821,16 @@ function mashsb_render_sharecounts( $customurl = '', $align = 'left', $size = fa
|
|
801 |
* @returns string
|
802 |
*/
|
803 |
|
804 |
-
function mashshareShortcodeShow(
|
|
|
805 |
global $mashsb_options, $mashsb_custom_url, $mashsb_custom_text;
|
806 |
|
807 |
$sharecount = '';
|
808 |
|
809 |
//Filter shortcode args to add an option for developers to change (add) some args
|
810 |
-
apply_filters(
|
811 |
|
812 |
-
extract(
|
813 |
'cache' => '3600',
|
814 |
'shares' => 'true',
|
815 |
'buttons' => 'true',
|
@@ -820,14 +841,14 @@ function mashshareShortcodeShow( $args ) {
|
|
820 |
'networks' => '', // List of networks separated by comma
|
821 |
'size' => '', // small, medium, large button size
|
822 |
'icons' => '0' // 1
|
823 |
-
|
824 |
-
|
825 |
// Visible services
|
826 |
$count_services = !empty($services) ? $services : 0;
|
827 |
-
|
828 |
// Enable specific networks
|
829 |
$networks = !empty($networks) ? explode(",", $networks) : false;
|
830 |
-
|
831 |
// Convert into appropriate array structure
|
832 |
if ($networks) {
|
833 |
$new = array();
|
@@ -838,43 +859,43 @@ function mashshareShortcodeShow( $args ) {
|
|
838 |
}
|
839 |
$networks = $new;
|
840 |
}
|
841 |
-
|
842 |
//var_dump( $new );
|
843 |
-
|
844 |
// Define custom url var to share
|
845 |
//$mashsb_custom_url = empty( $url ) ? mashsb_get_url() : $url;
|
846 |
// The global available custom url to share
|
847 |
-
$mashsb_custom_url = !empty(
|
848 |
// local url
|
849 |
-
$mashsb_url = empty(
|
850 |
|
851 |
// Define custom text to share
|
852 |
-
$mashsb_custom_text = !empty(
|
853 |
|
854 |
-
if(
|
855 |
-
$sharecount = mashsb_render_sharecounts(
|
856 |
// shortcode [mashshare shares="true" buttons="false"]
|
857 |
-
if(
|
858 |
return $sharecount;
|
859 |
}
|
860 |
}
|
861 |
-
|
862 |
$class_stretched = isset($mashsb_options['responsive_buttons']) ? 'mashsb-stretched' : '';
|
863 |
|
864 |
$return = '<aside class="mashsb-container mashsb-main ' . $class_stretched . '">'
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
<div style="clear:both;"></div>'
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
<!-- Share buttons made by mashshare.net - Version: ' . MASHSB_VERSION . '-->';
|
876 |
|
877 |
-
return apply_filters(
|
878 |
}
|
879 |
|
880 |
|
@@ -885,70 +906,72 @@ function mashshareShortcodeShow( $args ) {
|
|
885 |
* @TODO: Check if shortcode [mashshare] is used in widget
|
886 |
*/
|
887 |
|
888 |
-
function mashsbGetActiveStatus()
|
|
|
889 |
global $mashsb_options, $post;
|
890 |
|
891 |
-
$frontpage = isset(
|
892 |
$current_post_type = get_post_type();
|
893 |
-
$enabled_post_types = isset(
|
894 |
-
$singular = isset(
|
895 |
-
$loadall = isset(
|
896 |
|
897 |
|
898 |
-
if(
|
899 |
-
mashdebug()->info(
|
900 |
-
return apply_filters(
|
901 |
}
|
902 |
|
903 |
-
if(
|
904 |
-
mashdebug()->info(
|
905 |
-
return apply_filters(
|
906 |
}
|
907 |
|
908 |
// Load on frontpage
|
909 |
-
if(
|
910 |
-
mashdebug()->info(
|
911 |
-
return apply_filters(
|
912 |
}
|
913 |
|
914 |
// Load scripts when shortcode is used
|
915 |
/* Check if shortcode is used */
|
916 |
-
if(
|
917 |
-
mashdebug()->info(
|
918 |
-
return apply_filters(
|
919 |
}
|
920 |
|
921 |
// No scripts on non singular page
|
922 |
-
if(
|
923 |
-
mashdebug()->info(
|
924 |
-
return apply_filters(
|
925 |
}
|
926 |
|
927 |
|
928 |
// Load scripts when post_type is defined (for automatic embeding)
|
929 |
-
if(
|
930 |
-
mashdebug()->info(
|
931 |
-
return apply_filters(
|
932 |
}
|
933 |
|
934 |
-
mashdebug()->info(
|
935 |
-
return apply_filters(
|
936 |
}
|
937 |
|
938 |
/**
|
939 |
* Get the post meta value of position
|
940 |
-
*
|
941 |
-
* @global int $post
|
942 |
* @return mixed string|bool false
|
|
|
943 |
*/
|
944 |
-
function mashsb_get_post_meta_position()
|
|
|
945 |
global $post;
|
946 |
-
|
947 |
-
if(
|
948 |
-
$check_position_meta_post = get_post_meta(
|
949 |
-
if(
|
950 |
return $check_position_meta_post;
|
951 |
-
}else{
|
952 |
return false;
|
953 |
}
|
954 |
}
|
@@ -961,55 +984,56 @@ function mashsb_get_post_meta_position() {
|
|
961 |
* @return string
|
962 |
*/
|
963 |
|
964 |
-
function mashshare_filter_content(
|
|
|
965 |
global $mashsb_options, $wp_current_filter;
|
966 |
-
|
967 |
// Default position
|
968 |
-
$position = !empty(
|
969 |
// Check if we have a post meta setting which overrides the global position than we use that one instead
|
970 |
-
if (
|
971 |
$position = $position_meta;
|
972 |
}
|
973 |
|
974 |
-
|
975 |
-
$enabled_post_types = isset(
|
976 |
$current_post_type = get_post_type();
|
977 |
-
$frontpage = isset(
|
978 |
-
$excluded = isset(
|
979 |
-
$singular = isset(
|
980 |
|
981 |
-
|
982 |
-
if(
|
983 |
return $content;
|
984 |
}
|
985 |
-
|
986 |
-
if(
|
987 |
return $content;
|
988 |
}
|
989 |
-
|
990 |
-
if (is_feed()){
|
991 |
return $content;
|
992 |
}
|
993 |
|
994 |
-
if(
|
995 |
return $content;
|
996 |
}
|
997 |
|
998 |
-
if(
|
999 |
return $content;
|
1000 |
}
|
1001 |
|
1002 |
-
if(
|
1003 |
return $content;
|
1004 |
}
|
1005 |
|
1006 |
-
if(
|
1007 |
return $content;
|
1008 |
}
|
1009 |
-
|
1010 |
// Get one instance (prevents multiple similar calls)
|
1011 |
$mashsb_instance = apply_filters('mashsb_the_content', mashshareShow());
|
1012 |
-
switch (
|
1013 |
case 'manual':
|
1014 |
break;
|
1015 |
|
@@ -1024,7 +1048,7 @@ function mashshare_filter_content( $content ) {
|
|
1024 |
case 'after':
|
1025 |
$content .= $mashsb_instance;
|
1026 |
break;
|
1027 |
-
|
1028 |
case 'disable':
|
1029 |
break;
|
1030 |
}
|
@@ -1036,7 +1060,8 @@ function mashshare_filter_content( $content ) {
|
|
1036 |
* @return string
|
1037 |
*/
|
1038 |
|
1039 |
-
function mashshare()
|
|
|
1040 |
//global $atts;
|
1041 |
echo mashshareShow();
|
1042 |
}
|
@@ -1046,7 +1071,8 @@ function mashshare() {
|
|
1046 |
* @return string
|
1047 |
*/
|
1048 |
|
1049 |
-
function mashsharer()
|
|
|
1050 |
//global $atts;
|
1051 |
echo mashshareShow();
|
1052 |
}
|
@@ -1054,81 +1080,84 @@ function mashsharer() {
|
|
1054 |
/**
|
1055 |
* Get Thumbnail featured image if existed
|
1056 |
*
|
1057 |
-
* @since 1.0
|
1058 |
* @param int $postID
|
1059 |
* @return string
|
|
|
1060 |
*/
|
1061 |
-
function mashsb_get_image(
|
|
|
1062 |
global $post;
|
1063 |
|
1064 |
-
if(
|
1065 |
return '';
|
1066 |
}
|
1067 |
|
1068 |
-
if(
|
1069 |
-
$image = wp_get_attachment_image_src(
|
1070 |
return isset($image[0]) ? $image[0] : '';
|
1071 |
}
|
1072 |
}
|
1073 |
|
1074 |
-
add_action(
|
1075 |
|
1076 |
/**
|
1077 |
* Get the excerpt
|
1078 |
*
|
1079 |
-
* @since 1.0
|
1080 |
* @param int $postID
|
1081 |
* @changed 3.0.0
|
1082 |
* @return string
|
|
|
1083 |
*/
|
1084 |
-
function mashsb_get_excerpt_by_id(
|
|
|
1085 |
// Check if the post has an excerpt
|
1086 |
-
if(
|
1087 |
return get_the_excerpt();
|
1088 |
}
|
1089 |
|
1090 |
-
if(
|
1091 |
return "";
|
1092 |
}
|
1093 |
|
1094 |
-
$the_post = get_post(
|
1095 |
|
1096 |
/*
|
1097 |
* If post_content isn't set
|
1098 |
*/
|
1099 |
-
if(
|
1100 |
return "";
|
1101 |
}
|
1102 |
|
1103 |
$the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt
|
1104 |
// Strip all shortcodes
|
1105 |
$excerpt_length = 35; //Sets excerpt length by word count
|
1106 |
-
$the_excerpt = strip_tags(
|
1107 |
-
$words = explode(
|
1108 |
-
if(
|
1109 |
-
array_pop(
|
1110 |
-
array_push(
|
1111 |
-
$the_excerpt = implode(
|
1112 |
endif;
|
1113 |
$the_excerpt = '<p>' . $the_excerpt . '</p>';
|
1114 |
-
return wp_strip_all_tags(
|
1115 |
}
|
1116 |
|
1117 |
-
add_action(
|
1118 |
|
1119 |
/**
|
1120 |
-
* Create a factor for calculating individual fake counts
|
1121 |
* based on the number of word within a page title
|
1122 |
*
|
1123 |
-
* @since 2.0
|
1124 |
* @return int
|
|
|
1125 |
*/
|
1126 |
-
function mashsb_get_fake_factor()
|
|
|
1127 |
// str_word_count is not working for hebraic and arabic languages
|
1128 |
//$wordcount = str_word_count(the_title_attribute('echo=0')); //Gets title to be used as a basis for the count
|
1129 |
-
$wordcount = count(
|
1130 |
$factor = $wordcount / 10;
|
1131 |
-
return apply_filters(
|
1132 |
}
|
1133 |
|
1134 |
/*
|
@@ -1139,13 +1168,14 @@ function mashsb_get_fake_factor() {
|
|
1139 |
*
|
1140 |
*/
|
1141 |
|
1142 |
-
function getFakecount()
|
|
|
1143 |
global $mashsb_options;
|
1144 |
|
1145 |
-
|
1146 |
-
$fakecount = isset($mashsb_options['fake_count']) && is_numeric
|
1147 |
-
|
1148 |
-
|
1149 |
return (int)$fakecount;
|
1150 |
|
1151 |
}
|
@@ -1160,17 +1190,18 @@ function getFakecount() {
|
|
1160 |
*
|
1161 |
*/
|
1162 |
|
1163 |
-
function mashsb_hide_shares(
|
|
|
1164 |
global $mashsb_options, $post;
|
1165 |
|
1166 |
-
if(
|
1167 |
return false;
|
1168 |
}
|
1169 |
|
1170 |
-
$url = get_permalink(
|
1171 |
-
$sharelimit = isset(
|
1172 |
|
1173 |
-
if(
|
1174 |
return false;
|
1175 |
}
|
1176 |
// Hide share count per default when it is not a valid number
|
@@ -1183,10 +1214,11 @@ function mashsb_hide_shares( $sharecount ) {
|
|
1183 |
* @scince 2.3.2
|
1184 |
*/
|
1185 |
|
1186 |
-
function mashsb_content_above()
|
|
|
1187 |
global $mashsb_options;
|
1188 |
-
$html = !empty(
|
1189 |
-
return apply_filters(
|
1190 |
}
|
1191 |
|
1192 |
/* Additional content above share buttons
|
@@ -1195,36 +1227,38 @@ function mashsb_content_above() {
|
|
1195 |
* @scince 2.3.2
|
1196 |
*/
|
1197 |
|
1198 |
-
function mashsb_content_below()
|
|
|
1199 |
global $mashsb_options;
|
1200 |
-
$html = !empty(
|
1201 |
-
return apply_filters(
|
1202 |
}
|
1203 |
|
1204 |
/**
|
1205 |
* Check if buttons are excluded from a specific post id
|
1206 |
-
*
|
1207 |
* @return true if post is excluded
|
1208 |
*/
|
1209 |
-
function mashsb_is_excluded()
|
|
|
1210 |
global $post, $mashsb_options;
|
1211 |
|
1212 |
-
if(
|
1213 |
return false;
|
1214 |
}
|
1215 |
|
1216 |
-
$excluded = isset(
|
1217 |
|
1218 |
// Load scripts when page is not excluded
|
1219 |
-
if(
|
1220 |
-
$excluded = explode(
|
1221 |
-
if(
|
1222 |
-
mashdebug()->info(
|
1223 |
return true;
|
1224 |
}
|
1225 |
}
|
1226 |
-
if(
|
1227 |
-
mashdebug()->info(
|
1228 |
return true;
|
1229 |
}
|
1230 |
|
@@ -1234,20 +1268,21 @@ function mashsb_is_excluded() {
|
|
1234 |
|
1235 |
/**
|
1236 |
* Return general post title
|
1237 |
-
*
|
1238 |
* @param string $title default post title
|
1239 |
-
* @global obj $mashsb_meta_tags
|
1240 |
-
*
|
1241 |
* @return string the default post title, shortcode title or custom twitter title
|
|
|
|
|
1242 |
*/
|
1243 |
-
function mashsb_get_title()
|
|
|
1244 |
global $post, $mashsb_meta_tags;
|
1245 |
-
if(
|
1246 |
$title = $mashsb_meta_tags->get_og_title();
|
1247 |
-
$title = html_entity_decode(
|
1248 |
-
$title = urlencode(
|
1249 |
-
$title = str_replace(
|
1250 |
-
$title = esc_html(
|
1251 |
} else {
|
1252 |
$title = mashsb_get_document_title();
|
1253 |
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
|
@@ -1255,34 +1290,35 @@ function mashsb_get_title() {
|
|
1255 |
$title = str_replace('#', '%23', $title);
|
1256 |
$title = esc_html($title);
|
1257 |
}
|
1258 |
-
return apply_filters(
|
1259 |
}
|
1260 |
|
1261 |
/**
|
1262 |
* Return twitter custom title
|
1263 |
-
*
|
|
|
1264 |
* @global object $mashsb_meta_tags
|
1265 |
* @changed 3.0.0
|
1266 |
-
*
|
1267 |
-
* @return string the custom twitter title
|
1268 |
*/
|
1269 |
-
function mashsb_get_twitter_title()
|
|
|
1270 |
global $mashsb_meta_tags;
|
1271 |
// $mashsb_meta_tags is only available on singular pages
|
1272 |
-
if(
|
1273 |
$title = $mashsb_meta_tags->get_twitter_title();
|
1274 |
-
$title = html_entity_decode(
|
1275 |
-
$title = urlencode(
|
1276 |
-
$title = str_replace(
|
1277 |
-
$title = str_replace(
|
1278 |
-
$title = str_replace('|',''
|
1279 |
-
$title = esc_html(
|
1280 |
-
|
1281 |
} else {
|
1282 |
// title for non singular pages
|
1283 |
$title = mashsb_get_title();
|
1284 |
-
$title = str_replace(
|
1285 |
-
$title = str_replace('|',''
|
1286 |
}
|
1287 |
return apply_filters('mashsb_twitter_title', $title);
|
1288 |
}
|
@@ -1294,21 +1330,22 @@ function mashsb_get_twitter_title() {
|
|
1294 |
* @scince 2.2.8
|
1295 |
*/
|
1296 |
|
1297 |
-
function mashsb_get_url()
|
|
|
1298 |
global $post;
|
1299 |
-
|
1300 |
-
if(
|
1301 |
// The permalink for singular pages!
|
1302 |
// Do not check here for is_singular() (like e.g. the sharebar addon does.)
|
1303 |
// Need to check for post id because on category and archiv pages
|
1304 |
// we want the pageID within the loop instead the first appearing one.
|
1305 |
-
$url = mashsb_sanitize_url(get_permalink(
|
1306 |
} else {
|
1307 |
-
|
1308 |
$url = mashsb_get_main_url();
|
1309 |
}
|
1310 |
-
|
1311 |
-
return apply_filters(
|
1312 |
}
|
1313 |
|
1314 |
/*
|
@@ -1318,28 +1355,30 @@ function mashsb_get_url() {
|
|
1318 |
* @scince 2.2.8
|
1319 |
*/
|
1320 |
|
1321 |
-
function mashsb_get_twitter_url()
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
|
|
1325 |
$get_url = mashsb_get_url();
|
1326 |
-
$url = mashsuGetShortURL(
|
1327 |
} else {
|
1328 |
$url = mashsb_get_url();
|
1329 |
}
|
1330 |
-
return apply_filters(
|
1331 |
}
|
1332 |
|
1333 |
/**
|
1334 |
* Wrapper for mashsb_get_shorturl_singular()
|
1335 |
-
*
|
1336 |
* @param string $url
|
1337 |
* @return string
|
1338 |
*/
|
1339 |
-
function mashsb_get_shorturl(
|
|
|
1340 |
|
1341 |
-
if(
|
1342 |
-
$url = mashsb_get_shorturl_singular(
|
1343 |
} else {
|
1344 |
$url = "";
|
1345 |
}
|
@@ -1350,22 +1389,23 @@ function mashsb_get_shorturl( $url ) {
|
|
1350 |
|
1351 |
/**
|
1352 |
* Get sanitized twitter handle
|
1353 |
-
*
|
1354 |
-
* @global array $mashsb_options
|
1355 |
* @return mixed string | bool false
|
|
|
1356 |
*/
|
1357 |
-
function mashsb_get_twitter_username()
|
|
|
1358 |
global $mashsb_options;
|
1359 |
|
1360 |
-
if(
|
1361 |
return;
|
1362 |
}
|
1363 |
|
1364 |
// If plugin is not running on mashshare.net or dev environment replace @mashshare
|
1365 |
-
if (
|
1366 |
//Sanitize it
|
1367 |
-
$replace_first = str_ireplace(
|
1368 |
-
$replace_second = str_ireplace(
|
1369 |
return $replace_second;
|
1370 |
} else {
|
1371 |
return $mashsb_options['mashsharer_hashtag'];
|
@@ -1375,70 +1415,71 @@ function mashsb_get_twitter_username() {
|
|
1375 |
/**
|
1376 |
* Returns document title for the current page.
|
1377 |
*
|
1378 |
-
* @
|
1379 |
-
*
|
1380 |
* @global int $post Page number of a list of posts.
|
1381 |
*
|
1382 |
-
* @
|
|
|
1383 |
*/
|
1384 |
-
function mashsb_get_document_title()
|
1385 |
-
|
|
|
1386 |
/**
|
1387 |
* Filter the document title before it is generated.
|
1388 |
*
|
1389 |
* Passing a non-empty value will short-circuit wp_get_document_title(),
|
1390 |
* returning that value instead.
|
1391 |
*
|
|
|
1392 |
* @since 4.4.0
|
1393 |
*
|
1394 |
-
* @param string $title The document title. Default empty string.
|
1395 |
*/
|
1396 |
-
|
1397 |
-
|
1398 |
|
1399 |
// If it's a 404 page, use a "Page not found" title.
|
1400 |
-
if(
|
1401 |
-
$title = __(
|
1402 |
|
1403 |
// If it's a search, use a dynamic search results title.
|
1404 |
-
} elseif(
|
1405 |
/* translators: %s: search phrase */
|
1406 |
-
$title = sprintf(
|
1407 |
|
1408 |
// If on a post type archive, use the post type archive title.
|
1409 |
-
} elseif(
|
1410 |
-
$title = post_type_archive_title(
|
1411 |
-
|
1412 |
// If on a taxonomy archive, use the term title.
|
1413 |
-
} elseif(
|
1414 |
-
$title = single_term_title(
|
1415 |
|
1416 |
/*
|
1417 |
* If we're on the blog page that is not the homepage or
|
1418 |
* a single post of any post type, use the post title.
|
1419 |
*/
|
1420 |
-
|
1421 |
-
} elseif(
|
1422 |
$title = the_title_attribute('echo=0');
|
1423 |
|
1424 |
// If on the front page, use the site title.
|
1425 |
-
} elseif(
|
1426 |
-
$title = get_bloginfo(
|
1427 |
-
|
1428 |
// If on a category or tag archive, use the term title.
|
1429 |
-
} elseif(
|
1430 |
-
$title = single_term_title(
|
1431 |
|
1432 |
// If on an author archive, use the author's display name.
|
1433 |
-
} elseif(
|
1434 |
$title = $author->display_name;
|
1435 |
|
1436 |
// If it's a date archive, use the date as the title.
|
1437 |
-
} elseif(
|
1438 |
-
$title = get_the_date(
|
1439 |
-
} elseif(
|
1440 |
-
$title = get_the_date(
|
1441 |
-
} elseif(
|
1442 |
$title = get_the_date();
|
1443 |
}
|
1444 |
|
@@ -1448,16 +1489,17 @@ function mashsb_get_document_title() {
|
|
1448 |
|
1449 |
/**
|
1450 |
* Append tracking parameter to shared url
|
1451 |
-
*
|
1452 |
* @param string $url
|
1453 |
* @return string
|
1454 |
*/
|
1455 |
-
function mashsb_append_tracking_param($url, $network = 'mashshare')
|
|
|
1456 |
global $mashsb_options;
|
1457 |
-
|
1458 |
-
if (!isset($mashsb_options['tracking_params'])){
|
1459 |
return $url;
|
1460 |
}
|
1461 |
-
|
1462 |
-
return $url . urlencode('?utm_source=sharebuttons&utm_medium='
|
1463 |
}
|
10 |
* @since 2.0.0
|
11 |
*/
|
12 |
// Exit if accessed directly
|
13 |
+
if (!defined('ABSPATH'))
|
14 |
exit;
|
15 |
|
16 |
|
19 |
* return void
|
20 |
*/
|
21 |
|
22 |
+
add_shortcode('mashshare', 'mashshareShortcodeShow');
|
23 |
+
add_filter('the_content', 'mashshare_filter_content', getExecutionOrder(), 1);
|
24 |
+
add_filter('widget_text', 'do_shortcode');
|
25 |
+
add_action('mashshare', 'mashshare');
|
26 |
+
add_filter('mash_share_title', 'mashsb_get_title', 10, 2);
|
27 |
|
28 |
|
29 |
/* Get Execution order of injected Share Buttons in $content
|
32 |
* @return int
|
33 |
*/
|
34 |
|
35 |
+
function getExecutionOrder()
|
36 |
+
{
|
37 |
global $mashsb_options;
|
38 |
+
isset($mashsb_options['execution_order']) && is_numeric($mashsb_options['execution_order']) ? $priority = trim($mashsb_options['execution_order']) : $priority = 1000;
|
39 |
return $priority;
|
40 |
}
|
41 |
|
48 |
* @changed 3.1.8
|
49 |
*/
|
50 |
|
51 |
+
function mashsbGetShareObj($url)
|
52 |
+
{
|
53 |
+
global $mashsb_options;
|
54 |
+
|
55 |
+
// Sharedcount.com is default option
|
56 |
+
$mashengine = isset($mashsb_options['mashsb_sharemethod']) && $mashsb_options['mashsb_sharemethod'] === 'mashengine' ? true : false;
|
57 |
+
if (!$mashengine) {
|
58 |
+
require_once(MASHSB_PLUGIN_DIR . 'includes/sharedcount.class.php');
|
59 |
+
$apikey = isset($mashsb_options['mashsharer_apikey']) ? $mashsb_options['mashsharer_apikey'] : '';
|
60 |
+
$mashsbSharesObj = new mashsbSharedcount($url, 10, $apikey);
|
61 |
+
return $mashsbSharesObj;
|
62 |
+
}
|
63 |
+
|
64 |
+
if (!class_exists('RollingCurlX')) {
|
65 |
+
require_once MASHSB_PLUGIN_DIR . 'includes/libraries/RolingCurlX.php';
|
66 |
+
}
|
67 |
+
if (!class_exists('mashengine')) {
|
68 |
+
require_once(MASHSB_PLUGIN_DIR . 'includes/mashengine.php');
|
69 |
+
}
|
70 |
+
|
71 |
+
MASHSB()->logger->info('mashsbGetShareObj() url: ' . $url);
|
72 |
+
$mashsbSharesObj = new mashengine($url);
|
73 |
+
return $mashsbSharesObj;
|
74 |
}
|
75 |
|
76 |
/*
|
80 |
* @returns int share count
|
81 |
*/
|
82 |
|
83 |
+
function mashsbGetShareMethod($mashsbSharesObj)
|
84 |
+
{
|
85 |
+
if (class_exists('MashshareNetworks')) {
|
86 |
$mashsbShareCounts = $mashsbSharesObj->getAllCounts();
|
87 |
return $mashsbShareCounts;
|
88 |
}
|
92 |
|
93 |
/**
|
94 |
* Get share count for all non singular pages where $post is empty or a custom url is used E.g. category or blog list pages or for shortcodes
|
95 |
+
* Uses transients
|
96 |
+
*
|
97 |
* @param string $url
|
98 |
+
*
|
99 |
* @returns integer $shares
|
100 |
*/
|
101 |
+
function mashsbGetNonPostShares($url)
|
102 |
+
{
|
103 |
global $mashsb_debug;
|
104 |
+
|
105 |
/*
|
106 |
* Deactivate share count on:
|
107 |
* - 404 pages
|
113 |
* - deprecated: admin pages (we need to remove this for themes which are using a bad infinite scroll implementation where is_admin() is always true)
|
114 |
*/
|
115 |
|
116 |
+
|
117 |
+
if (is_404() || is_search() || empty($url) || !mashsb_is_enabled_permalinks() || isset($mashsb_options['disable_sharecount']) || mashsb_rate_limit_exceeded()) {
|
118 |
$mashsb_debug[] = 'MashShare: Share count (temporary) disabled';
|
119 |
+
return apply_filters('filter_get_sharedcount', 0);
|
120 |
}
|
121 |
+
|
122 |
+
|
123 |
// Expiration
|
124 |
$expiration = mashsb_get_expiration();
|
125 |
+
|
126 |
// Remove variables, parameters and trailingslash
|
127 |
+
$url_clean = mashsb_sanitize_url($url);
|
128 |
|
129 |
// Get any existing copy of our transient data and fill the cache
|
130 |
+
if (mashsb_force_cache_refresh()) {
|
131 |
+
|
132 |
// Its request limited
|
133 |
+
if (mashsb_is_req_limited()) {
|
134 |
mashsbGetShareCountFromTransient($url_clean);
|
135 |
}
|
136 |
|
137 |
// Regenerate the data and save the transient
|
138 |
// Get the share Object
|
139 |
+
$mashsbSharesObj = mashsbGetShareObj($url_clean);
|
140 |
// Get the share counts object
|
141 |
+
$mashsbShareCounts = mashsbGetShareMethod($mashsbSharesObj);
|
142 |
|
143 |
// Set the transient and return shares
|
144 |
+
set_transient('mashcount_' . md5($url_clean), $mashsbShareCounts->total, $expiration);
|
145 |
+
MASHSB()->logger->info('mashsbGetNonPostShares set_transient - shares:' . $mashsbShareCounts->total . ' url: ' . $url_clean);
|
146 |
return $mashsbShareCounts->total + getFakecount();
|
147 |
} else {
|
148 |
+
mashsbGetShareCountFromTransient($url_clean);
|
149 |
}
|
150 |
}
|
151 |
+
|
152 |
/**
|
153 |
* get share count from transient
|
154 |
* @param type string
|
155 |
* @return int
|
156 |
*/
|
157 |
+
function mashsbGetShareCountFromTransient($url)
|
158 |
+
{
|
159 |
+
$shares = get_transient('mashcount_' . md5($url));
|
160 |
+
if (isset($shares) && is_numeric($shares)) {
|
161 |
+
MASHSB()->logger->info('mashsbGetNonPostShares() get shares from get_transient. URL: ' . $url . ' SHARES: ' . $shares);
|
162 |
+
return $shares + getFakecount();
|
163 |
+
} else {
|
164 |
+
return 0 + getFakecount(); // we need a result
|
165 |
+
}
|
166 |
xdebug_break();
|
167 |
}
|
168 |
|
170 |
* Allow or disable share counts for particular posts types to lower the api requests to sharedcount.com
|
171 |
* @return boolean
|
172 |
*/
|
173 |
+
function mashsbIsPostTypeAllowed()
|
174 |
+
{
|
175 |
$postType = get_post_type();
|
176 |
+
|
177 |
+
$allowedPostTypes = apply_filters('mashsb_allowed_post_types', array());
|
178 |
+
|
179 |
// If $allowedPostTypes is not defined all post types are allowed
|
180 |
+
if (empty($allowedPostTypes)) {
|
181 |
return true;
|
182 |
}
|
183 |
+
|
184 |
// If filter is used check if current post type is in array of allowed ones
|
185 |
+
if (in_array($postType, $allowedPostTypes)) {
|
186 |
return true;
|
187 |
}
|
188 |
return false;
|
197 |
*/
|
198 |
|
199 |
|
200 |
+
function getSharedcount($url)
|
201 |
+
{
|
202 |
global $mashsb_options, $post, $mashsb_sharecount, $mashsb_debug; // todo test a global share count var if it reduces the amount of requests
|
203 |
|
204 |
/*
|
205 |
* Deactivate share count on:
|
206 |
+
* - preview pages
|
207 |
* - 404 pages
|
208 |
* - search page
|
209 |
* - empty url
|
214 |
*/
|
215 |
|
216 |
|
217 |
+
if (is_preview()) {
|
218 |
+
return 0;
|
219 |
+
}
|
|
|
|
|
220 |
|
221 |
|
222 |
+
if (is_404() || is_search() || empty($url) || !mashsb_is_enabled_permalinks() || isset($mashsb_options['disable_sharecount']) || isset($_GET['preview_id'])) {
|
223 |
$mashsb_debug[] = 'MashShare: Share count (temporary) disabled';
|
224 |
+
return apply_filters('filter_get_sharedcount', 0);
|
225 |
}
|
226 |
+
|
227 |
$mashsb_debug[] = 'Trying to get share count!';
|
228 |
+
|
229 |
// Return global share count variable to prevent multiple execution
|
230 |
+
if (is_array($mashsb_sharecount) && array_key_exists($url, $mashsb_sharecount) && !empty($mashsb_sharecount[$url]) && !mashsb_is_cache_refresh()) {
|
231 |
return $mashsb_sharecount[$url] + getFakecount();
|
232 |
}
|
233 |
+
|
234 |
+
|
235 |
// Remove mashsb-refresh query parameter
|
236 |
$url = mashsb_sanitize_url($url);
|
237 |
+
|
238 |
|
239 |
/*
|
240 |
* Return share count on non singular pages when url is defined
|
242 |
*/
|
243 |
|
244 |
|
245 |
+
if (!empty($url) && is_null($post)) {
|
246 |
$mashsb_debug[] = '$url or $post is empty. Return share count with mashsbGetNonPostShares';
|
247 |
+
return apply_filters('filter_get_sharedcount', mashsbGetNonPostShares($url));
|
248 |
}
|
249 |
|
250 |
/*
|
251 |
* Refresh Cache
|
252 |
*/
|
253 |
+
if (mashsb_force_cache_refresh() && is_singular()) {
|
254 |
+
|
255 |
$mashsb_debug[] = 'Force Cache Refresh for page type singular()';
|
256 |
+
|
257 |
// Its request limited
|
258 |
+
if (mashsb_is_req_limited()) {
|
259 |
+
$mashsb_debug[] = 'Rate limit reached: Return Share from custom meta field.';
|
260 |
+
return (int)get_post_meta($post->ID, 'mashsb_shares', true) + getFakecount();
|
261 |
}
|
262 |
|
263 |
// free some memory
|
264 |
+
unset ($mashsb_sharecount[$url]);
|
265 |
+
|
266 |
// Write timestamp (Use this on top of this condition. If this is not on top following return statements will be skipped and ignored - possible bug?)
|
267 |
+
update_post_meta($post->ID, 'mashsb_timestamp', time());
|
268 |
|
269 |
+
MASHSB()->logger->info('Refresh Cache: Update Timestamp: ' . time());
|
270 |
$mashsb_debug[] = 'Refresh Cache: Update Timestamp: ' . time();
|
271 |
// Get the share Object
|
272 |
+
$mashsbSharesObj = mashsbGetShareObj($url);
|
273 |
// Get the share count Method
|
274 |
+
$mashsbShareCounts = mashsbGetShareMethod($mashsbSharesObj);
|
275 |
// Get stored share count
|
276 |
+
$mashsbStoredShareCount = get_post_meta($post->ID, 'mashsb_shares', true);
|
277 |
|
278 |
// Create global sharecount
|
279 |
$mashsb_sharecount = array($url => $mashsbShareCounts->total);
|
280 |
+
|
281 |
$mashsb_debug[] = 'Get Share count for URL: ' . $url . ' Shares: ' . $mashsbShareCounts->total;
|
282 |
+
MASHSB()->logger->info('Get Share count for URL: ' . $url . ' Shares: ' . $mashsbShareCounts->total);
|
283 |
/*
|
284 |
* Update post_meta only when API is requested and
|
285 |
* API share count is greater than real fresh requested share count ->
|
286 |
*/
|
287 |
+
|
288 |
+
if (is_numeric($mashsbShareCounts->total) && $mashsbShareCounts->total >= $mashsbStoredShareCount) {
|
289 |
+
update_post_meta($post->ID, 'mashsb_shares', $mashsbShareCounts->total);
|
290 |
+
update_post_meta($post->ID, 'mashsb_jsonshares', json_encode($mashsbShareCounts));
|
291 |
+
MASHSB()->logger->info("Refresh Cache: Update database with share count: " . $mashsbShareCounts->total);
|
292 |
+
|
293 |
/* return counts from getAllCounts() after DB update */
|
294 |
+
return apply_filters('filter_get_sharedcount', $mashsbShareCounts->total + getFakecount());
|
295 |
}
|
296 |
+
|
297 |
/* return previous counts from DB Cache | this happens when API has a hiccup and does not return any results as expected */
|
298 |
+
return apply_filters('filter_get_sharedcount', $mashsbStoredShareCount + getFakecount());
|
299 |
} else {
|
300 |
// Return cached results
|
301 |
+
$cachedCountsMeta = is_numeric($var = get_post_meta($post->ID, 'mashsb_shares', true)) ? (int)$var : 0;
|
302 |
$cachedCounts = $cachedCountsMeta + getFakecount();
|
303 |
$mashsb_debug[] = 'Cached Results: ' . $cachedCounts . ' url:' . $url;
|
304 |
+
MASHSB()->logger->info('Cached Results: ' . $cachedCounts . ' url:' . $url);
|
305 |
+
return apply_filters('filter_get_sharedcount', $cachedCounts);
|
306 |
}
|
307 |
}
|
308 |
|
309 |
+
function mashsb_subscribe_button()
|
310 |
+
{
|
311 |
global $mashsb_options;
|
312 |
+
if ($mashsb_options['networks'][2]) {
|
313 |
+
$subscribebutton = '<a href="javascript:void(0)" class="mashicon-subscribe" id="mash-subscribe-control"><span class="icon"><span class="text">' . __('Subscribe', 'mashsb') . '</span></span></a>';
|
314 |
} else {
|
315 |
$subscribebutton = '';
|
316 |
}
|
317 |
+
return apply_filters('mashsb_filter_subscribe_button', $subscribebutton);
|
318 |
}
|
319 |
|
320 |
/* Put the Subscribe container under the share buttons
|
322 |
* @return string
|
323 |
*/
|
324 |
|
325 |
+
function mashsb_subscribe_content()
|
326 |
+
{
|
327 |
global $mashsb_options;
|
328 |
+
if (isset($mashsb_options['networks'][2]) && isset($mashsb_options['subscribe_behavior']) && $mashsb_options['subscribe_behavior'] === 'content') { //Subscribe content enabled
|
329 |
+
$container = '<div class="mashsb-toggle-container">' . mashsb_cleanShortcode('mashshare', $mashsb_options['subscribe_content']) . '</div>';
|
330 |
} else {
|
331 |
$container = '';
|
332 |
}
|
333 |
+
return apply_filters('mashsb_toggle_container', $container);
|
334 |
}
|
335 |
|
336 |
/* Check if [mashshare] shortcode is used in subscribe field and deletes it
|
340 |
* @return string / shortcodes parsed
|
341 |
*/
|
342 |
|
343 |
+
function mashsb_cleanShortcode($code, $content)
|
344 |
+
{
|
345 |
global $shortcode_tags;
|
346 |
$stack = $shortcode_tags;
|
347 |
$shortcode_tags = array($code => 1);
|
348 |
+
$content = strip_shortcodes($content);
|
349 |
$shortcode_tags = $stack;
|
350 |
|
351 |
+
return do_shortcode($content);
|
352 |
}
|
353 |
|
354 |
/* Round the totalshares
|
358 |
* @return string
|
359 |
*/
|
360 |
|
361 |
+
function roundshares($totalshares)
|
362 |
+
{
|
363 |
+
if ($totalshares > 1000000) {
|
364 |
+
$totalshares = round($totalshares / 1000000, 1) . 'M';
|
365 |
+
} elseif ($totalshares > 1000) {
|
366 |
+
$totalshares = round($totalshares / 1000, 1) . 'k';
|
367 |
}
|
368 |
+
return apply_filters('get_rounded_shares', $totalshares);
|
369 |
}
|
370 |
|
371 |
/* Return the more networks button
|
373 |
* @return string
|
374 |
*/
|
375 |
|
376 |
+
function onOffSwitch($size = false)
|
377 |
+
{
|
378 |
global $mashsb_options;
|
379 |
+
|
380 |
// Get class names for buttons size
|
381 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
382 |
+
|
383 |
// Override size with shortcode argument
|
384 |
+
$class_size = $size ? ' mash-' . $size : $class_size;
|
385 |
+
|
386 |
// Get class names for button style
|
387 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
388 |
+
|
389 |
$output = '<div class="onoffswitch' . $class_size . $class_style . '"></div>';
|
390 |
+
return apply_filters('mashsh_onoffswitch', $output);
|
391 |
}
|
392 |
|
393 |
/* Return the second more networks button after
|
398 |
* @return string
|
399 |
*/
|
400 |
|
401 |
+
function onOffSwitch2($size = false)
|
402 |
+
{
|
403 |
global $mashsb_options;
|
404 |
+
|
405 |
// Get class names for buttons size
|
406 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
407 |
+
|
408 |
// Override size with shortcode argument
|
409 |
+
$class_size = $size ? ' mash-' . $size : $class_size;
|
410 |
+
|
411 |
// Get class names for button style
|
412 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
413 |
+
|
414 |
+
$output = '<div class="onoffswitch2' . $class_size . $class_style . '" style="display:none;"></div>';
|
415 |
+
return apply_filters('mashsh_onoffswitch2', $output);
|
416 |
}
|
417 |
|
418 |
/*
|
421 |
* @return callback
|
422 |
*/
|
423 |
|
424 |
+
function isStatus($var)
|
425 |
+
{
|
426 |
+
return (!empty($var["status"]));
|
427 |
}
|
428 |
|
429 |
/*
|
436 |
* @return string
|
437 |
*/
|
438 |
|
439 |
+
function arrNetworks($name, $is_shortcode)
|
440 |
+
{
|
441 |
global $mashsb_custom_url, $mashsb_custom_text, $mashsb_twitter_url;
|
442 |
|
443 |
+
if ($is_shortcode) {
|
444 |
+
$url = !empty($mashsb_custom_url) ? urlencode($mashsb_custom_url) : urlencode(mashsb_get_url());
|
445 |
+
$title = !empty($mashsb_custom_text) ? $mashsb_custom_text : mashsb_get_title();
|
446 |
+
$twitter_title = !empty($mashsb_custom_text) ? $mashsb_custom_text : mashsb_get_twitter_title();
|
447 |
}
|
448 |
+
if (!$is_shortcode) {
|
449 |
$url = urlencode(mashsb_get_url());
|
450 |
$title = mashsb_get_title();
|
451 |
$twitter_title = mashsb_get_twitter_title();
|
452 |
}
|
453 |
|
454 |
$via = mashsb_get_twitter_username() ? '&via=' . mashsb_get_twitter_username() : '';
|
455 |
+
|
456 |
$networks_arr = array(
|
457 |
'facebook' => 'https://www.facebook.com/sharer.php?u=' . mashsb_append_tracking_param($url, 'facebook'),
|
458 |
'twitter' => 'https://twitter.com/intent/tweet?text=' . $twitter_title . '&url=' . $mashsb_twitter_url . $via,
|
460 |
'url' => mashsb_append_tracking_param($url),
|
461 |
'title' => $title
|
462 |
);
|
463 |
+
|
464 |
+
|
465 |
// Delete custom text
|
466 |
unset ($mashsb_custom_text);
|
467 |
// Delete custom url
|
468 |
unset ($mashsb_custom_url);
|
469 |
|
470 |
+
$networks = apply_filters('mashsb_array_networks', $networks_arr);
|
471 |
+
return isset($networks[$name]) ? $networks[$name] : '';
|
472 |
}
|
473 |
|
474 |
/* Returns all available networks
|
481 |
* @return string html
|
482 |
*/
|
483 |
|
484 |
+
function mashsb_getNetworks($is_shortcode = false, $services = 0)
|
485 |
+
{
|
486 |
global $mashsb_options, $mashsb_custom_url, $enablednetworks, $mashsb_twitter_url;
|
487 |
+
|
488 |
+
|
489 |
// define globals
|
490 |
+
if ($is_shortcode) {
|
491 |
+
$mashsb_twitter_url = !empty($mashsb_custom_url) ? mashsb_get_shorturl($mashsb_custom_url) : mashsb_get_twitter_url();
|
492 |
|
493 |
+
} else {
|
494 |
$mashsb_twitter_url = mashsb_get_twitter_url();
|
495 |
}
|
496 |
+
|
497 |
// Get class names for buttons size
|
498 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
499 |
+
|
500 |
// Override size with shortcode argument
|
501 |
//$class_size = $size ? ' mash-'.$size : $class_size;
|
502 |
+
|
503 |
// Get class names for buttons margin
|
504 |
$class_margin = isset($mashsb_options['button_margin']) ? '' : ' mash-nomargin';
|
505 |
|
506 |
// Get class names for center align
|
507 |
$class_center = isset($mashsb_options['text_align_center']) ? ' mash-center' : '';
|
508 |
+
|
509 |
// Get class names for button style
|
510 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
511 |
|
519 |
/* counter for 'Visible Services' */
|
520 |
$startcounter = 1;
|
521 |
|
522 |
+
$maxcounter = isset($mashsb_options['visible_services']) ? $mashsb_options['visible_services'] : 0;
|
523 |
$maxcounter = ($maxcounter === 'all') ? 'all' : ($maxcounter + 1); // plus 1 to get networks correct counted (array's starting counting from zero)
|
524 |
+
$maxcounter = apply_filters('mashsb_visible_services', $maxcounter);
|
525 |
|
526 |
/* Overwrite maxcounter with shortcode attribute */
|
527 |
$maxcounter = ($services === 0) ? $maxcounter : $services;
|
530 |
* Our list of available services, includes the disabled ones!
|
531 |
* We have to clean this array first!
|
532 |
*/
|
533 |
+
$getnetworks = isset($mashsb_options['networks']) ? apply_filters('mashsb_filter_networks', $mashsb_options['networks']) : apply_filters('mashsb_filter_networks', '');
|
534 |
+
|
535 |
+
|
536 |
/* Delete disabled services from array. Use callback function here. Do this only once because array_filter is slow!
|
537 |
* Use the newly created array and bypass the callback function
|
538 |
*/
|
539 |
+
if (is_array($getnetworks)) {
|
540 |
+
if (!is_array($enablednetworks)) {
|
541 |
+
$enablednetworks = array_filter($getnetworks, 'isStatus');
|
542 |
} else {
|
543 |
$enablednetworks = $enablednetworks;
|
544 |
}
|
546 |
$enablednetworks = $getnetworks;
|
547 |
}
|
548 |
|
549 |
+
|
550 |
// Use custom networks if available and override default networks
|
551 |
//$enablednetworks = $networks ? $networks : $enablednetworks;
|
552 |
+
|
553 |
//var_dump($enablednetworks);
|
554 |
+
|
555 |
// Start Primary Buttons
|
556 |
+
|
557 |
+
if (!empty($enablednetworks)) {
|
558 |
+
foreach ($enablednetworks as $key => $network):
|
559 |
+
|
560 |
+
if ($maxcounter !== 'all' && $maxcounter < count($enablednetworks)) { // $maxcounter + 1 for correct comparision with count()
|
561 |
+
if ($startcounter == $maxcounter) {
|
562 |
$onoffswitch = onOffSwitch(); // Start More Button
|
563 |
//$startsecondaryshares = '</div>'; // End Primary Buttons
|
564 |
$visibility = mashsb_is_amp_page() ? '' : 'display:none;';
|
565 |
+
$startsecondaryshares .= '<div class="secondary-shares" style="' . $visibility . '">'; // Start secondary-shares
|
566 |
} else {
|
567 |
$onoffswitch = '';
|
568 |
$onoffswitch2 = '';
|
569 |
$startsecondaryshares = '';
|
570 |
}
|
571 |
+
if ($startcounter === (count($enablednetworks))) {
|
572 |
$endsecondaryshares = '</div>';
|
573 |
} else {
|
574 |
$endsecondaryshares = '';
|
575 |
}
|
576 |
}
|
577 |
|
578 |
+
if (isset($enablednetworks[$key]['name']) && !empty($enablednetworks[$key]['name'])) {
|
579 |
/* replace all spaces with $nbsp; This prevents error in css style content: text-intend */
|
580 |
+
$name = preg_replace('/\040{1,}/', ' ', $enablednetworks[$key]['name']); // The custom share label
|
581 |
} else {
|
582 |
+
$name = ucfirst($enablednetworks[$key]['id']); // Use the id as share label. Capitalize it!
|
583 |
}
|
584 |
+
|
585 |
$enablednetworks[$key]['id'] == 'whatsapp' && !mashsb_is_amp_page() ? $display = 'style="display:none;"' : $display = ''; // Whatsapp button is made visible via js when opened on mobile devices
|
586 |
|
587 |
// Lets use the data attribute to prevent that pininit.js is overwriting our pinterest button - PR: https://secure.helpscout.net/conversation/257066283/954/?folderId=924740
|
588 |
+
if ('pinterest' === $enablednetworks[$key]['id'] && !mashsb_is_amp_page()) {
|
589 |
+
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . '" href="#" data-mashsb-url="' . arrNetworks($enablednetworks[$key]['id'], $is_shortcode) . '" target="_blank" rel="nofollow"><span class="icon"></span><span class="text">' . $name . '</span></a>';
|
590 |
} else {
|
591 |
+
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . '" href="' . arrNetworks($enablednetworks[$key]['id'], $is_shortcode) . '" target="_top" rel="nofollow"><span class="icon"></span><span class="text">' . $name . '</span></a>';
|
592 |
}
|
593 |
$output .= $onoffswitch;
|
594 |
$output .= $startsecondaryshares;
|
599 |
$output .= $endsecondaryshares;
|
600 |
}
|
601 |
|
602 |
+
return apply_filters('return_networks', $output);
|
603 |
}
|
604 |
+
|
605 |
+
/*
|
606 |
* Return all available networks for Shortcode generated buttons
|
607 |
*
|
608 |
* @since 2.0
|
613 |
* @return string html
|
614 |
*/
|
615 |
|
616 |
+
function mashsb_getNetworksShortcode($is_shortcode = false, $services = 0, $networks = false, $size = false, $icons = false)
|
617 |
+
{
|
618 |
//global $mashsb_options, $mashsb_custom_url, $enablednetworks, $mashsb_twitter_url;
|
619 |
global $mashsb_options, $mashsb_custom_url, $mashsb_twitter_url;
|
620 |
+
|
621 |
+
|
622 |
// define globals
|
623 |
+
if ($is_shortcode) {
|
624 |
+
$mashsb_twitter_url = !empty($mashsb_custom_url) ? mashsb_get_shorturl($mashsb_custom_url) : mashsb_get_twitter_url();
|
625 |
|
626 |
+
} else {
|
627 |
$mashsb_twitter_url = mashsb_get_twitter_url();
|
628 |
}
|
629 |
+
|
630 |
// Get class names for buttons size
|
631 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
632 |
+
|
633 |
// Override size with shortcode argument
|
634 |
+
$class_size = $size ? ' mash-' . $size : $class_size;
|
635 |
+
|
636 |
// Get class names for buttons margin
|
637 |
$class_margin = isset($mashsb_options['button_margin']) ? '' : ' mash-nomargin';
|
638 |
|
639 |
// Get class names for center align
|
640 |
$class_center = isset($mashsb_options['text_align_center']) ? ' mash-center' : '';
|
641 |
+
|
642 |
// Get class names for button style
|
643 |
$class_style = isset($mashsb_options['mash_style']) && $mashsb_options['mash_style'] === 'shadow' ? ' mashsb-shadow' : ' mashsb-noshadow';
|
644 |
+
|
645 |
+
$class_icons = $icons ? ' mashsb-pure-icons' : '';
|
646 |
+
|
647 |
//$style = $fullwidth ? '' : 'style="min-width:0;flex:none;-webkit-flex:none;"';
|
648 |
|
649 |
$output = '';
|
656 |
/* counter for 'Visible Services' */
|
657 |
$startcounter = 1;
|
658 |
|
659 |
+
$maxcounter = isset($mashsb_options['visible_services']) ? $mashsb_options['visible_services'] : 0;
|
660 |
$maxcounter = ($maxcounter === 'all') ? 'all' : ($maxcounter + 1); // plus 1 to get networks correct counted (array's starting counting from zero)
|
661 |
+
$maxcounter = apply_filters('mashsb_visible_services', $maxcounter);
|
662 |
|
663 |
/* Overwrite maxcounter with shortcode attribute */
|
664 |
$maxcounter = ($services === 0) ? $maxcounter : $services;
|
667 |
* Our list of available services, includes the disabled ones!
|
668 |
* We have to clean this array first!
|
669 |
*/
|
670 |
+
$getnetworks = isset($mashsb_options['networks']) ? apply_filters('mashsb_filter_networks', $mashsb_options['networks']) : apply_filters('mashsb_filter_networks', '');
|
671 |
|
672 |
/*
|
673 |
* Delete disabled services from array. Use callback function here. Do this only once because array_filter is slow!
|
674 |
* Use the newly created array and bypass the callback function
|
675 |
*/
|
676 |
+
if (is_array($getnetworks)) {
|
677 |
+
if (!isset($enablednetworks) || !is_array($enablednetworks)) {
|
678 |
+
$enablednetworks = array_filter($getnetworks, 'isStatus');
|
679 |
} else {
|
680 |
$enablednetworks = $enablednetworks;
|
681 |
}
|
683 |
$enablednetworks = $getnetworks;
|
684 |
}
|
685 |
|
686 |
+
|
687 |
// Use custom networks if available and override default networks
|
688 |
$enablednetworks = $networks ? $networks : $enablednetworks;
|
689 |
+
|
690 |
//var_dump($enablednetworks);
|
691 |
+
|
692 |
// Start Primary Buttons
|
693 |
+
|
694 |
+
if (!empty($enablednetworks)) {
|
695 |
+
foreach ($enablednetworks as $key => $network):
|
696 |
+
|
697 |
+
if ($maxcounter !== 'all' && $maxcounter < count($enablednetworks)) { // $maxcounter + 1 for correct comparision with count()
|
698 |
+
if ($startcounter == $maxcounter) {
|
699 |
$onoffswitch = onOffSwitch($size); // Start More Button
|
700 |
//$startsecondaryshares = '</div>'; // End Primary Buttons
|
701 |
$startsecondaryshares .= '<div class="secondary-shares" style="display:none;">'; // Start secondary-shares
|
704 |
$onoffswitch2 = '';
|
705 |
$startsecondaryshares = '';
|
706 |
}
|
707 |
+
if ($startcounter === (count($enablednetworks))) {
|
708 |
$endsecondaryshares = '</div>';
|
709 |
} else {
|
710 |
$endsecondaryshares = '';
|
711 |
}
|
712 |
}
|
713 |
|
714 |
+
if (isset($enablednetworks[$key]['name']) && !empty($enablednetworks[$key]['name'])) {
|
715 |
/* replace all spaces with $nbsp; This prevents error in css style content: text-intend */
|
716 |
+
$name = !$icons ? preg_replace('/\040{1,}/', ' ', $enablednetworks[$key]['name']) : ''; // The custom share label
|
717 |
} else {
|
718 |
+
$name = !$icons ? ucfirst($enablednetworks[$key]['id']) : ''; // Use the id as share label. Capitalize it!
|
719 |
}
|
720 |
+
|
721 |
//$enablednetworks[$key]['id'] == 'whatsapp' ? $display = 'style="display:none;"' : $display = ''; // Whatsapp button is made visible via js when opened on mobile devices
|
722 |
|
723 |
// Lets use the data attribute to prevent that pininit.js is overwriting our pinterest button - PR: https://secure.helpscout.net/conversation/257066283/954/?folderId=924740
|
724 |
+
if ('pinterest' === $enablednetworks[$key]['id'] && !mashsb_is_amp_page()) {
|
725 |
+
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . $class_icons . '" href="#" data-mashsb-url="' . arrNetworks($enablednetworks[$key]['id'], $is_shortcode) . '" target="_blank" rel="nofollow"><span class="icon"></span><span class="text">' . $name . '</span></a>';
|
726 |
} else {
|
727 |
+
$output .= '<a class="mashicon-' . $enablednetworks[$key]['id'] . $class_size . $class_margin . $class_center . $class_style . $class_icons . '" href="' . arrNetworks($enablednetworks[$key]['id'], $is_shortcode) . '" target="_top" rel="nofollow"><span class="icon"></span><span class="text">' . $name . '</span></a>';
|
728 |
}
|
729 |
$output .= $onoffswitch;
|
730 |
$output .= $startsecondaryshares;
|
735 |
$output .= $endsecondaryshares;
|
736 |
}
|
737 |
|
738 |
+
return apply_filters('return_networks', $output);
|
739 |
}
|
740 |
|
741 |
|
747 |
* @returns string html
|
748 |
*/
|
749 |
|
750 |
+
function mashshareShow()
|
751 |
+
{
|
752 |
global $mashsb_options;
|
753 |
+
|
754 |
$class_stretched = isset($mashsb_options['responsive_buttons']) ? 'mashsb-stretched' : '';
|
755 |
|
756 |
$return = '<aside class="mashsb-container mashsb-main ' . $class_stretched . '">'
|
757 |
+
. mashsb_content_above() .
|
758 |
+
'<div class="mashsb-box">'
|
759 |
+
. apply_filters('mashsb_sharecount_filter', mashsb_render_sharecounts()) .
|
760 |
+
'<div class="mashsb-buttons">'
|
761 |
+
. mashsb_getNetworks() .
|
762 |
+
'</div>
|
763 |
</div>
|
764 |
<div style="clear:both;"></div>'
|
765 |
+
. mashsb_subscribe_content()
|
766 |
+
. mashsb_content_below() .
|
767 |
+
'</aside>
|
768 |
<!-- Share buttons by mashshare.net - Version: ' . MASHSB_VERSION . '-->';
|
769 |
+
return apply_filters('mashsb_output_buttons', $return);
|
770 |
}
|
771 |
|
772 |
/**
|
773 |
* Render the sharecount template
|
774 |
+
*
|
775 |
* @param string $customurl default empty
|
776 |
* @param string alignment default left
|
777 |
* @return string html
|
778 |
*/
|
779 |
+
function mashsb_render_sharecounts($customurl = '', $align = 'left', $size = false)
|
780 |
+
{
|
781 |
global $mashsb_options;
|
782 |
+
|
783 |
// Share count disabled
|
784 |
+
if (false === mashsbIsPostTypeAllowed()) {
|
785 |
return '';
|
786 |
}
|
787 |
|
788 |
+
if (isset($mashsb_options['disable_sharecount']) || !mashsb_curl_installed() || !mashsb_is_enabled_permalinks()) {
|
789 |
return '';
|
790 |
}
|
791 |
|
792 |
+
$url = empty($customurl) ? mashsb_get_url() : $customurl;
|
793 |
+
$sharetitle = isset($mashsb_options['sharecount_title']) ? $mashsb_options['sharecount_title'] : __('SHARES', 'mashsb');
|
794 |
|
795 |
+
$shares = getSharedcount($url);
|
796 |
+
$sharecount = isset($mashsb_options['mashsharer_round']) ? roundshares($shares) : $shares;
|
797 |
|
798 |
// do not show shares after x shares
|
799 |
+
if (mashsb_hide_shares($shares)) {
|
800 |
return;
|
801 |
}
|
802 |
+
|
803 |
// Get class names for buttons size
|
804 |
$class_size = isset($mashsb_options['buttons_size']) ? ' ' . $mashsb_options['buttons_size'] : '';
|
805 |
+
|
806 |
// Override size with shortcode argument
|
807 |
+
$class_size = $size ? ' mash-' . $size : $class_size;
|
808 |
+
|
809 |
// No inline style if it's amp
|
810 |
$style = !mashsb_is_amp_page() ? 'style="float:' . $align . ';"' : '';
|
811 |
|
812 |
+
$html = '<div class="mashsb-count' . $class_size . '" ' . $style . '><div class="counts mashsbcount">' . $sharecount . '</div><span class="mashsb-sharetext">' . $sharetitle . '</span></div>';
|
813 |
return apply_filters('mashsb_share_count', $html);
|
814 |
}
|
815 |
|
821 |
* @returns string
|
822 |
*/
|
823 |
|
824 |
+
function mashshareShortcodeShow($args)
|
825 |
+
{
|
826 |
global $mashsb_options, $mashsb_custom_url, $mashsb_custom_text;
|
827 |
|
828 |
$sharecount = '';
|
829 |
|
830 |
//Filter shortcode args to add an option for developers to change (add) some args
|
831 |
+
apply_filters('mashsb_shortcode_atts', $args);
|
832 |
|
833 |
+
extract(shortcode_atts(array(
|
834 |
'cache' => '3600',
|
835 |
'shares' => 'true',
|
836 |
'buttons' => 'true',
|
841 |
'networks' => '', // List of networks separated by comma
|
842 |
'size' => '', // small, medium, large button size
|
843 |
'icons' => '0' // 1
|
844 |
+
), $args));
|
845 |
+
|
846 |
// Visible services
|
847 |
$count_services = !empty($services) ? $services : 0;
|
848 |
+
|
849 |
// Enable specific networks
|
850 |
$networks = !empty($networks) ? explode(",", $networks) : false;
|
851 |
+
|
852 |
// Convert into appropriate array structure
|
853 |
if ($networks) {
|
854 |
$new = array();
|
859 |
}
|
860 |
$networks = $new;
|
861 |
}
|
862 |
+
|
863 |
//var_dump( $new );
|
864 |
+
|
865 |
// Define custom url var to share
|
866 |
//$mashsb_custom_url = empty( $url ) ? mashsb_get_url() : $url;
|
867 |
// The global available custom url to share
|
868 |
+
$mashsb_custom_url = !empty($url) ? $url : '';
|
869 |
// local url
|
870 |
+
$mashsb_url = empty($url) ? mashsb_get_url() : $url;
|
871 |
|
872 |
// Define custom text to share
|
873 |
+
$mashsb_custom_text = !empty($text) ? $text : false;
|
874 |
|
875 |
+
if ($shares != 'false') {
|
876 |
+
$sharecount = mashsb_render_sharecounts($mashsb_url, $align, $size);
|
877 |
// shortcode [mashshare shares="true" buttons="false"]
|
878 |
+
if ($shares === "true" && $buttons === 'false') {
|
879 |
return $sharecount;
|
880 |
}
|
881 |
}
|
882 |
+
|
883 |
$class_stretched = isset($mashsb_options['responsive_buttons']) ? 'mashsb-stretched' : '';
|
884 |
|
885 |
$return = '<aside class="mashsb-container mashsb-main ' . $class_stretched . '">'
|
886 |
+
. mashsb_content_above() .
|
887 |
+
'<div class="mashsb-box">'
|
888 |
+
. $sharecount .
|
889 |
+
'<div class="mashsb-buttons">'
|
890 |
+
. mashsb_getNetworksShortcode(true, $count_services, $networks, $size, $icons) .
|
891 |
+
'</div></div>
|
892 |
<div style="clear:both;"></div>'
|
893 |
+
. mashsb_subscribe_content()
|
894 |
+
. mashsb_content_below() .
|
895 |
+
'</aside>
|
896 |
<!-- Share buttons made by mashshare.net - Version: ' . MASHSB_VERSION . '-->';
|
897 |
|
898 |
+
return apply_filters('mashsb_output_buttons', $return);
|
899 |
}
|
900 |
|
901 |
|
906 |
* @TODO: Check if shortcode [mashshare] is used in widget
|
907 |
*/
|
908 |
|
909 |
+
function mashsbGetActiveStatus()
|
910 |
+
{
|
911 |
global $mashsb_options, $post;
|
912 |
|
913 |
+
$frontpage = isset($mashsb_options['frontpage']) ? true : false;
|
914 |
$current_post_type = get_post_type();
|
915 |
+
$enabled_post_types = isset($mashsb_options['post_types']) ? $mashsb_options['post_types'] : array();
|
916 |
+
$singular = isset($mashsb_options['singular']) ? true : false;
|
917 |
+
$loadall = isset($mashsb_options['loadall']) ? $loadall = true : $loadall = false;
|
918 |
|
919 |
|
920 |
+
if (mashsb_is_excluded()) {
|
921 |
+
mashdebug()->info("mashsb_is_excluded()");
|
922 |
+
return apply_filters('mashsb_active', false);
|
923 |
}
|
924 |
|
925 |
+
if ($loadall) {
|
926 |
+
mashdebug()->info("load all mashsb scripts");
|
927 |
+
return apply_filters('mashsb_active', true);
|
928 |
}
|
929 |
|
930 |
// Load on frontpage
|
931 |
+
if ($frontpage === true && is_front_page()) {
|
932 |
+
mashdebug()->info("allow frontpage and is frontpage");
|
933 |
+
return apply_filters('mashsb_active', true);
|
934 |
}
|
935 |
|
936 |
// Load scripts when shortcode is used
|
937 |
/* Check if shortcode is used */
|
938 |
+
if (function_exists('has_shortcode') && is_object($post) && has_shortcode($post->post_content, 'mashshare')) {
|
939 |
+
mashdebug()->info("has_shortcode");
|
940 |
+
return apply_filters('mashsb_active', true);
|
941 |
}
|
942 |
|
943 |
// No scripts on non singular page
|
944 |
+
if (!is_singular() && !$singular) {
|
945 |
+
mashdebug()->info("No scripts on non singular page");
|
946 |
+
return apply_filters('mashsb_active', false);
|
947 |
}
|
948 |
|
949 |
|
950 |
// Load scripts when post_type is defined (for automatic embeding)
|
951 |
+
if (in_array($current_post_type, $enabled_post_types)) {
|
952 |
+
mashdebug()->info("automatic post_type enabled");
|
953 |
+
return apply_filters('mashsb_active', true);
|
954 |
}
|
955 |
|
956 |
+
mashdebug()->info("mashsbGetActiveStatus false");
|
957 |
+
return apply_filters('mashsb_active', false);
|
958 |
}
|
959 |
|
960 |
/**
|
961 |
* Get the post meta value of position
|
962 |
+
*
|
|
|
963 |
* @return mixed string|bool false
|
964 |
+
* @global int $post
|
965 |
*/
|
966 |
+
function mashsb_get_post_meta_position()
|
967 |
+
{
|
968 |
global $post;
|
969 |
+
|
970 |
+
if (isset($post->ID) && !empty($post->ID)) {
|
971 |
+
$check_position_meta_post = get_post_meta($post->ID, 'mashsb_position', true);
|
972 |
+
if (!empty($check_position_meta_post)) {
|
973 |
return $check_position_meta_post;
|
974 |
+
} else {
|
975 |
return false;
|
976 |
}
|
977 |
}
|
984 |
* @return string
|
985 |
*/
|
986 |
|
987 |
+
function mashshare_filter_content($content)
|
988 |
+
{
|
989 |
global $mashsb_options, $wp_current_filter;
|
990 |
+
|
991 |
// Default position
|
992 |
+
$position = !empty($mashsb_options['mashsharer_position']) ? $mashsb_options['mashsharer_position'] : '';
|
993 |
// Check if we have a post meta setting which overrides the global position than we use that one instead
|
994 |
+
if (true == ($position_meta = mashsb_get_post_meta_position())) {
|
995 |
$position = $position_meta;
|
996 |
}
|
997 |
|
998 |
+
|
999 |
+
$enabled_post_types = isset($mashsb_options['post_types']) ? $mashsb_options['post_types'] : null;
|
1000 |
$current_post_type = get_post_type();
|
1001 |
+
$frontpage = isset($mashsb_options['frontpage']) ? true : false;
|
1002 |
+
$excluded = isset($mashsb_options['excluded_from']) ? $mashsb_options['excluded_from'] : null;
|
1003 |
+
$singular = isset($mashsb_options['singular']) ? $singular = true : $singular = false;
|
1004 |
|
1005 |
+
|
1006 |
+
if (isset($mashsb_options['is_main_query']) && !is_main_query()) {
|
1007 |
return $content;
|
1008 |
}
|
1009 |
+
|
1010 |
+
if (mashsb_is_excluded()) {
|
1011 |
return $content;
|
1012 |
}
|
1013 |
+
|
1014 |
+
if (is_feed()) {
|
1015 |
return $content;
|
1016 |
}
|
1017 |
|
1018 |
+
if ($frontpage == false && is_front_page()) {
|
1019 |
return $content;
|
1020 |
}
|
1021 |
|
1022 |
+
if (!is_singular() == 1 && $singular !== true) {
|
1023 |
return $content;
|
1024 |
}
|
1025 |
|
1026 |
+
if ($enabled_post_types == null or !in_array($current_post_type, $enabled_post_types)) {
|
1027 |
return $content;
|
1028 |
}
|
1029 |
|
1030 |
+
if (in_array('get_the_excerpt', $wp_current_filter)) {
|
1031 |
return $content;
|
1032 |
}
|
1033 |
+
|
1034 |
// Get one instance (prevents multiple similar calls)
|
1035 |
$mashsb_instance = apply_filters('mashsb_the_content', mashshareShow());
|
1036 |
+
switch ($position) {
|
1037 |
case 'manual':
|
1038 |
break;
|
1039 |
|
1048 |
case 'after':
|
1049 |
$content .= $mashsb_instance;
|
1050 |
break;
|
1051 |
+
|
1052 |
case 'disable':
|
1053 |
break;
|
1054 |
}
|
1060 |
* @return string
|
1061 |
*/
|
1062 |
|
1063 |
+
function mashshare()
|
1064 |
+
{
|
1065 |
//global $atts;
|
1066 |
echo mashshareShow();
|
1067 |
}
|
1071 |
* @return string
|
1072 |
*/
|
1073 |
|
1074 |
+
function mashsharer()
|
1075 |
+
{
|
1076 |
//global $atts;
|
1077 |
echo mashshareShow();
|
1078 |
}
|
1080 |
/**
|
1081 |
* Get Thumbnail featured image if existed
|
1082 |
*
|
|
|
1083 |
* @param int $postID
|
1084 |
* @return string
|
1085 |
+
* @since 1.0
|
1086 |
*/
|
1087 |
+
function mashsb_get_image($postID)
|
1088 |
+
{
|
1089 |
global $post;
|
1090 |
|
1091 |
+
if (!isset($post)) {
|
1092 |
return '';
|
1093 |
}
|
1094 |
|
1095 |
+
if (has_post_thumbnail($post->ID)) {
|
1096 |
+
$image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail');
|
1097 |
return isset($image[0]) ? $image[0] : '';
|
1098 |
}
|
1099 |
}
|
1100 |
|
1101 |
+
add_action('mashsb_get_image', 'mashsb_get_image');
|
1102 |
|
1103 |
/**
|
1104 |
* Get the excerpt
|
1105 |
*
|
|
|
1106 |
* @param int $postID
|
1107 |
* @changed 3.0.0
|
1108 |
* @return string
|
1109 |
+
* @since 1.0
|
1110 |
*/
|
1111 |
+
function mashsb_get_excerpt_by_id($post_id)
|
1112 |
+
{
|
1113 |
// Check if the post has an excerpt
|
1114 |
+
if (has_excerpt()) {
|
1115 |
return get_the_excerpt();
|
1116 |
}
|
1117 |
|
1118 |
+
if (!isset($post_id)) {
|
1119 |
return "";
|
1120 |
}
|
1121 |
|
1122 |
+
$the_post = get_post($post_id); //Gets post ID
|
1123 |
|
1124 |
/*
|
1125 |
* If post_content isn't set
|
1126 |
*/
|
1127 |
+
if (!isset($the_post->post_content)) {
|
1128 |
return "";
|
1129 |
}
|
1130 |
|
1131 |
$the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt
|
1132 |
// Strip all shortcodes
|
1133 |
$excerpt_length = 35; //Sets excerpt length by word count
|
1134 |
+
$the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images
|
1135 |
+
$words = explode(' ', $the_excerpt, $excerpt_length + 1);
|
1136 |
+
if (count($words) > $excerpt_length) :
|
1137 |
+
array_pop($words);
|
1138 |
+
array_push($words, '…');
|
1139 |
+
$the_excerpt = implode(' ', $words);
|
1140 |
endif;
|
1141 |
$the_excerpt = '<p>' . $the_excerpt . '</p>';
|
1142 |
+
return wp_strip_all_tags($the_excerpt);
|
1143 |
}
|
1144 |
|
1145 |
+
add_action('mashsb_get_excerpt_by_id', 'mashsb_get_excerpt_by_id');
|
1146 |
|
1147 |
/**
|
1148 |
+
* Create a factor for calculating individual fake counts
|
1149 |
* based on the number of word within a page title
|
1150 |
*
|
|
|
1151 |
* @return int
|
1152 |
+
* @since 2.0
|
1153 |
*/
|
1154 |
+
function mashsb_get_fake_factor()
|
1155 |
+
{
|
1156 |
// str_word_count is not working for hebraic and arabic languages
|
1157 |
//$wordcount = str_word_count(the_title_attribute('echo=0')); //Gets title to be used as a basis for the count
|
1158 |
+
$wordcount = count(explode(' ', the_title_attribute('echo=0')));
|
1159 |
$factor = $wordcount / 10;
|
1160 |
+
return apply_filters('mashsb_fake_factor', $factor);
|
1161 |
}
|
1162 |
|
1163 |
/*
|
1168 |
*
|
1169 |
*/
|
1170 |
|
1171 |
+
function getFakecount()
|
1172 |
+
{
|
1173 |
global $mashsb_options;
|
1174 |
|
1175 |
+
|
1176 |
+
$fakecount = isset($mashsb_options['fake_count']) && is_numeric($mashsb_options['fake_count']) ?
|
1177 |
+
round($mashsb_options['fake_count'] * mashsb_get_fake_factor(), 0) : 0;
|
1178 |
+
|
1179 |
return (int)$fakecount;
|
1180 |
|
1181 |
}
|
1190 |
*
|
1191 |
*/
|
1192 |
|
1193 |
+
function mashsb_hide_shares($sharecount)
|
1194 |
+
{
|
1195 |
global $mashsb_options, $post;
|
1196 |
|
1197 |
+
if (empty($mashsb_options['hide_sharecount'])) {
|
1198 |
return false;
|
1199 |
}
|
1200 |
|
1201 |
+
$url = get_permalink(isset($post->ID));
|
1202 |
+
$sharelimit = isset($mashsb_options['hide_sharecount']) ? $mashsb_options['hide_sharecount'] : 0;
|
1203 |
|
1204 |
+
if ($sharecount >= $sharelimit) {
|
1205 |
return false;
|
1206 |
}
|
1207 |
// Hide share count per default when it is not a valid number
|
1214 |
* @scince 2.3.2
|
1215 |
*/
|
1216 |
|
1217 |
+
function mashsb_content_above()
|
1218 |
+
{
|
1219 |
global $mashsb_options;
|
1220 |
+
$html = !empty($mashsb_options['content_above']) ? '<div class="mashsb_above_buttons">' . mashsb_cleanShortcode('mashshare', $mashsb_options['content_above']) . '</div>' : '';
|
1221 |
+
return apply_filters('mashsb_above_buttons', $html);
|
1222 |
}
|
1223 |
|
1224 |
/* Additional content above share buttons
|
1227 |
* @scince 2.3.2
|
1228 |
*/
|
1229 |
|
1230 |
+
function mashsb_content_below()
|
1231 |
+
{
|
1232 |
global $mashsb_options;
|
1233 |
+
$html = !empty($mashsb_options['content_below']) ? '<div class="mashsb_below_buttons">' . mashsb_cleanShortcode('mashshare', $mashsb_options['content_below']) . '</div>' : '';
|
1234 |
+
return apply_filters('mashsb_below_buttons', $html);
|
1235 |
}
|
1236 |
|
1237 |
/**
|
1238 |
* Check if buttons are excluded from a specific post id
|
1239 |
+
*
|
1240 |
* @return true if post is excluded
|
1241 |
*/
|
1242 |
+
function mashsb_is_excluded()
|
1243 |
+
{
|
1244 |
global $post, $mashsb_options;
|
1245 |
|
1246 |
+
if (!isset($post)) {
|
1247 |
return false;
|
1248 |
}
|
1249 |
|
1250 |
+
$excluded = isset($mashsb_options['excluded_from']) ? $mashsb_options['excluded_from'] : null;
|
1251 |
|
1252 |
// Load scripts when page is not excluded
|
1253 |
+
if (strpos($excluded, ',') !== false) {
|
1254 |
+
$excluded = explode(',', $excluded);
|
1255 |
+
if (in_array($post->ID, $excluded)) {
|
1256 |
+
mashdebug()->info("is excluded");
|
1257 |
return true;
|
1258 |
}
|
1259 |
}
|
1260 |
+
if ($post->ID == $excluded) {
|
1261 |
+
mashdebug()->info("is single excluded");
|
1262 |
return true;
|
1263 |
}
|
1264 |
|
1268 |
|
1269 |
/**
|
1270 |
* Return general post title
|
1271 |
+
*
|
1272 |
* @param string $title default post title
|
|
|
|
|
1273 |
* @return string the default post title, shortcode title or custom twitter title
|
1274 |
+
* @global obj $mashsb_meta_tags
|
1275 |
+
*
|
1276 |
*/
|
1277 |
+
function mashsb_get_title()
|
1278 |
+
{
|
1279 |
global $post, $mashsb_meta_tags;
|
1280 |
+
if (is_singular() && !empty($mashsb_meta_tags) && method_exists($mashsb_meta_tags, 'get_og_title')) {
|
1281 |
$title = $mashsb_meta_tags->get_og_title();
|
1282 |
+
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
|
1283 |
+
$title = urlencode($title);
|
1284 |
+
$title = str_replace('#', '%23', $title);
|
1285 |
+
$title = esc_html($title);
|
1286 |
} else {
|
1287 |
$title = mashsb_get_document_title();
|
1288 |
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
|
1290 |
$title = str_replace('#', '%23', $title);
|
1291 |
$title = esc_html($title);
|
1292 |
}
|
1293 |
+
return apply_filters('mashsb_get_title', $title);
|
1294 |
}
|
1295 |
|
1296 |
/**
|
1297 |
* Return twitter custom title
|
1298 |
+
*
|
1299 |
+
* @return string the custom twitter title
|
1300 |
* @global object $mashsb_meta_tags
|
1301 |
* @changed 3.0.0
|
1302 |
+
*
|
|
|
1303 |
*/
|
1304 |
+
function mashsb_get_twitter_title()
|
1305 |
+
{
|
1306 |
global $mashsb_meta_tags;
|
1307 |
// $mashsb_meta_tags is only available on singular pages
|
1308 |
+
if (is_singular() && !empty($mashsb_meta_tags) && method_exists($mashsb_meta_tags, 'get_twitter_title')) {
|
1309 |
$title = $mashsb_meta_tags->get_twitter_title();
|
1310 |
+
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
|
1311 |
+
$title = urlencode($title);
|
1312 |
+
$title = str_replace('#', '%23', $title);
|
1313 |
+
$title = str_replace('+', '%20', $title);
|
1314 |
+
$title = str_replace('|', '', $title);
|
1315 |
+
$title = esc_html($title);
|
1316 |
+
|
1317 |
} else {
|
1318 |
// title for non singular pages
|
1319 |
$title = mashsb_get_title();
|
1320 |
+
$title = str_replace('+', '%20', $title);
|
1321 |
+
$title = str_replace('|', '', $title);
|
1322 |
}
|
1323 |
return apply_filters('mashsb_twitter_title', $title);
|
1324 |
}
|
1330 |
* @scince 2.2.8
|
1331 |
*/
|
1332 |
|
1333 |
+
function mashsb_get_url()
|
1334 |
+
{
|
1335 |
global $post;
|
1336 |
+
|
1337 |
+
if (isset($post->ID)) {
|
1338 |
// The permalink for singular pages!
|
1339 |
// Do not check here for is_singular() (like e.g. the sharebar addon does.)
|
1340 |
// Need to check for post id because on category and archiv pages
|
1341 |
// we want the pageID within the loop instead the first appearing one.
|
1342 |
+
$url = mashsb_sanitize_url(get_permalink($post->ID));
|
1343 |
} else {
|
1344 |
+
// The main URL
|
1345 |
$url = mashsb_get_main_url();
|
1346 |
}
|
1347 |
+
|
1348 |
+
return apply_filters('mashsb_get_url', $url);
|
1349 |
}
|
1350 |
|
1351 |
/*
|
1355 |
* @scince 2.2.8
|
1356 |
*/
|
1357 |
|
1358 |
+
function mashsb_get_twitter_url()
|
1359 |
+
{
|
1360 |
+
if (function_exists('mashsb_get_shorturl_singular')) {
|
1361 |
+
$url = mashsb_get_shorturl_singular(mashsb_get_url());
|
1362 |
+
} else if (function_exists('mashsuGetShortURL')) { // compatibility mode for MashShare earlier than 3.0
|
1363 |
$get_url = mashsb_get_url();
|
1364 |
+
$url = mashsuGetShortURL($get_url);
|
1365 |
} else {
|
1366 |
$url = mashsb_get_url();
|
1367 |
}
|
1368 |
+
return apply_filters('mashsb_get_twitter_url', $url);
|
1369 |
}
|
1370 |
|
1371 |
/**
|
1372 |
* Wrapper for mashsb_get_shorturl_singular()
|
1373 |
+
*
|
1374 |
* @param string $url
|
1375 |
* @return string
|
1376 |
*/
|
1377 |
+
function mashsb_get_shorturl($url)
|
1378 |
+
{
|
1379 |
|
1380 |
+
if (!empty($url)) {
|
1381 |
+
$url = mashsb_get_shorturl_singular($url);
|
1382 |
} else {
|
1383 |
$url = "";
|
1384 |
}
|
1389 |
|
1390 |
/**
|
1391 |
* Get sanitized twitter handle
|
1392 |
+
*
|
|
|
1393 |
* @return mixed string | bool false
|
1394 |
+
* @global array $mashsb_options
|
1395 |
*/
|
1396 |
+
function mashsb_get_twitter_username()
|
1397 |
+
{
|
1398 |
global $mashsb_options;
|
1399 |
|
1400 |
+
if (empty($mashsb_options['mashsharer_hashtag'])) {
|
1401 |
return;
|
1402 |
}
|
1403 |
|
1404 |
// If plugin is not running on mashshare.net or dev environment replace @mashshare
|
1405 |
+
if (empty($_SERVER['HTTP_HOST']) || ($_SERVER['HTTP_HOST'] !== 'www.mashshare.net' && $_SERVER['HTTP_HOST'] !== 'src.wordpress-develop.dev')) {
|
1406 |
//Sanitize it
|
1407 |
+
$replace_first = str_ireplace('mashshare', '', $mashsb_options['mashsharer_hashtag']);
|
1408 |
+
$replace_second = str_ireplace('@', '', $replace_first);
|
1409 |
return $replace_second;
|
1410 |
} else {
|
1411 |
return $mashsb_options['mashsharer_hashtag'];
|
1415 |
/**
|
1416 |
* Returns document title for the current page.
|
1417 |
*
|
1418 |
+
* @return string Tag with the document title.
|
|
|
1419 |
* @global int $post Page number of a list of posts.
|
1420 |
*
|
1421 |
+
* @since 3.0
|
1422 |
+
*
|
1423 |
*/
|
1424 |
+
function mashsb_get_document_title()
|
1425 |
+
{
|
1426 |
+
|
1427 |
/**
|
1428 |
* Filter the document title before it is generated.
|
1429 |
*
|
1430 |
* Passing a non-empty value will short-circuit wp_get_document_title(),
|
1431 |
* returning that value instead.
|
1432 |
*
|
1433 |
+
* @param string $title The document title. Default empty string.
|
1434 |
* @since 4.4.0
|
1435 |
*
|
|
|
1436 |
*/
|
1437 |
+
|
1438 |
+
$title = '';
|
1439 |
|
1440 |
// If it's a 404 page, use a "Page not found" title.
|
1441 |
+
if (is_404()) {
|
1442 |
+
$title = __('Page not found');
|
1443 |
|
1444 |
// If it's a search, use a dynamic search results title.
|
1445 |
+
} elseif (is_search()) {
|
1446 |
/* translators: %s: search phrase */
|
1447 |
+
$title = sprintf(__('Search Results for “%s”'), get_search_query());
|
1448 |
|
1449 |
// If on a post type archive, use the post type archive title.
|
1450 |
+
} elseif (is_post_type_archive()) {
|
1451 |
+
$title = post_type_archive_title('', false);
|
1452 |
+
|
1453 |
// If on a taxonomy archive, use the term title.
|
1454 |
+
} elseif (is_tax()) {
|
1455 |
+
$title = single_term_title('', false);
|
1456 |
|
1457 |
/*
|
1458 |
* If we're on the blog page that is not the homepage or
|
1459 |
* a single post of any post type, use the post title.
|
1460 |
*/
|
1461 |
+
//} elseif( !is_home() || is_singular() ) {
|
1462 |
+
} elseif (is_singular()) {
|
1463 |
$title = the_title_attribute('echo=0');
|
1464 |
|
1465 |
// If on the front page, use the site title.
|
1466 |
+
} elseif (is_front_page()) {
|
1467 |
+
$title = get_bloginfo('name', 'display');
|
1468 |
+
|
1469 |
// If on a category or tag archive, use the term title.
|
1470 |
+
} elseif (is_category() || is_tag()) {
|
1471 |
+
$title = single_term_title('', false);
|
1472 |
|
1473 |
// If on an author archive, use the author's display name.
|
1474 |
+
} elseif (is_author() && $author = get_queried_object()) {
|
1475 |
$title = $author->display_name;
|
1476 |
|
1477 |
// If it's a date archive, use the date as the title.
|
1478 |
+
} elseif (is_year()) {
|
1479 |
+
$title = get_the_date(_x('Y', 'yearly archives date format'));
|
1480 |
+
} elseif (is_month()) {
|
1481 |
+
$title = get_the_date(_x('F Y', 'monthly archives date format'));
|
1482 |
+
} elseif (is_day()) {
|
1483 |
$title = get_the_date();
|
1484 |
}
|
1485 |
|
1489 |
|
1490 |
/**
|
1491 |
* Append tracking parameter to shared url
|
1492 |
+
*
|
1493 |
* @param string $url
|
1494 |
* @return string
|
1495 |
*/
|
1496 |
+
function mashsb_append_tracking_param($url, $network = 'mashshare')
|
1497 |
+
{
|
1498 |
global $mashsb_options;
|
1499 |
+
|
1500 |
+
if (!isset($mashsb_options['tracking_params'])) {
|
1501 |
return $url;
|
1502 |
}
|
1503 |
+
|
1504 |
+
return $url . urlencode('?utm_source=sharebuttons&utm_medium=' . $network . '&utm_campaign=mashshare');
|
1505 |
}
|
mashshare.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* Description: Mashshare is a Share functionality inspired by the the great website Mashable for Facebook and Twitter. More networks available.
|
7 |
* Author: René Hermenau
|
8 |
* Author URI: https://www.mashshare.net
|
9 |
-
* Version: 3.8.
|
10 |
* Text Domain: mashsb
|
11 |
* Domain Path: /languages
|
12 |
|
@@ -35,7 +35,7 @@ if( !defined( 'ABSPATH' ) )
|
|
35 |
|
36 |
// Plugin version
|
37 |
if( !defined( 'MASHSB_VERSION' ) ) {
|
38 |
-
define( 'MASHSB_VERSION', '3.8.
|
39 |
}
|
40 |
|
41 |
// Debug mode
|
6 |
* Description: Mashshare is a Share functionality inspired by the the great website Mashable for Facebook and Twitter. More networks available.
|
7 |
* Author: René Hermenau
|
8 |
* Author URI: https://www.mashshare.net
|
9 |
+
* Version: 3.8.1
|
10 |
* Text Domain: mashsb
|
11 |
* Domain Path: /languages
|
12 |
|
35 |
|
36 |
// Plugin version
|
37 |
if( !defined( 'MASHSB_VERSION' ) ) {
|
38 |
+
define( 'MASHSB_VERSION', '3.8.1' );
|
39 |
}
|
40 |
|
41 |
// Debug mode
|
readme.txt
CHANGED
@@ -8,9 +8,9 @@ License: GPLv2 or later
|
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
Tags: Share buttons, Social Sharing, social media, Facebook, Twitter, Subscribe, social share buttons
|
10 |
Requires at least: 3.6+
|
11 |
-
Tested up to: 5.
|
12 |
-
Stable tag: 3.8.
|
13 |
-
Requires PHP: 5.
|
14 |
|
15 |
Social Media Share Buttons for Twitter, Facebook, and other social networks. Highly customizable Social Media ecosystem
|
16 |
|
@@ -249,6 +249,11 @@ Read here more about this: http://docs.mashshare.net/article/10-facebook-is-show
|
|
249 |
|
250 |
== Changelog ==
|
251 |
|
|
|
|
|
|
|
|
|
|
|
252 |
= 3.8.0 =
|
253 |
* New: Compatible up to WordPress 5.8
|
254 |
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
Tags: Share buttons, Social Sharing, social media, Facebook, Twitter, Subscribe, social share buttons
|
10 |
Requires at least: 3.6+
|
11 |
+
Tested up to: 5.9
|
12 |
+
Stable tag: 3.8.1
|
13 |
+
Requires PHP: 5.6
|
14 |
|
15 |
Social Media Share Buttons for Twitter, Facebook, and other social networks. Highly customizable Social Media ecosystem
|
16 |
|
249 |
|
250 |
== Changelog ==
|
251 |
|
252 |
+
= 3.8.1 =
|
253 |
+
* New: Compatible up to WordPress 5.9
|
254 |
+
* Fix: Make MashShare compatible with PHP 8.x
|
255 |
+
* Fix: Don't request share count for preview pages. This fixes an artificially high share count on initial post creation
|
256 |
+
|
257 |
= 3.8.0 =
|
258 |
* New: Compatible up to WordPress 5.8
|
259 |
|