Social Media Share Buttons | MashShare - Version 3.3.5

Version Description

  • New: Add new Facebook Access Token to bypass the rate limit issue
  • New: Add filter 'mashsb_hide_addons' to hide add-on related sections
  • New: Add new option to hide buttons when they appear in widgets or not in main query (is_main_query conditions)
  • New: Add French language
  • New: Add Arabic language
  • New: Add Dutch language
  • New: Add Brazil language
  • New: Add Indonesia language

  • Fix: Do not remove backslash from custom css

  • Fix: Change general admin class panel-container to a more unique one

  • Fix: Check if image exists before detecting image size for twitter image

  • Fix: Twitter shortcode custom url value is ignored

  • Fix: Rate Limit Notice not working

  • Fix: Undefined var is_main_query

Download this release

Release Info

Developer ReneHermi
Plugin Icon 128x128 Social Media Share Buttons | MashShare
Version 3.3.5
Comparing to
See all releases

Code changes from version 3.3.4 to 3.3.5

assets/css/mashsb-admin.css CHANGED
@@ -764,7 +764,7 @@ font-weight: bold;
764
/* Layout of admin table and rows
765
*/
766
767
- #mashsb_container .panel-container {
768
background: #FFF;
769
padding:20px;
770
padding-top:0px;
@@ -1097,7 +1097,7 @@ text-align: right;
1097
margin:0px;
1098
}
1099
1100
- .mashsb_admin .panel-container{
1101
float:left;
1102
}
1103
764
/* Layout of admin table and rows
765
*/
766
767
+ #mashsb_container .mashsb-panel-container {
768
background: #FFF;
769
padding:20px;
770
padding-top:0px;
1097
margin:0px;
1098
}
1099
1100
+ .mashsb_admin .mashsb-panel-container{
1101
float:left;
1102
}
1103
assets/css/mashsb-admin.min.css CHANGED
@@ -1 +1 @@
1
- .chosen-container .chosen-drop,.chosen-container-active .chosen-choices{border-color:#aaa;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.1);box-shadow:1px 1px 2px rgba(0,0,0,.1)}.colpick_hue_larr,.colpick_hue_rarr{border-bottom:6px solid transparent;width:0;height:0;border-top:6px solid transparent}.colpick,.mashsb-admin-onoffswitch{-webkit-user-select:none;-moz-user-select:none}#mashsb_network_list tr,.mashsb_list_item td{cursor:move}#mashsb_network_list td{padding:5px 10px;line-height:20px}@media screen and (max-width:783px){#mashsb_network_list td{display:inline-block;width:auto;vertical-align:middle;min-width:110px}}.mashsb-richeditor,.mashsb-textarea{font-size:11px}@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-"] .icon,[class*=" mashicon-"] .text,[class^=mashicon-] .icon,[class^=mashicon-] .text{color:#fff}[class*=" mashicon-"],[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:18px;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}#mash-social-admin-head a,#mashsb-tabs-sidebar li a,.mashsb-wrap a,.mashsb_admin a{text-decoration: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-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-whatsapp .icon:before{content:'\e814'}.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'}.mashicon-facebook{background:#2d5f9a}.mashicon-twitter{background:#00c3f3}.mashicon-google{background:#d73d32}.mashicon-subscribe{background:#fff120}.mashicon-subscribe .icon,.mashicon-subscribe .text{color:#000}.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-flipboard{background:#b31f17}.mashicon-hackernews{background:#f60}.mashsb-hidden{display:none}.mashsb-clearfix:after{display:block;visibility:hidden;content:".";text-indent:-9999px;height:0}#mashsb-add-ons .mashshare-addons .third-party,.colpick,.colpick_full_ns .colpick_current_color,.colpick_full_ns .colpick_submit,.colpick_hex .colpick_hsb_b,.colpick_hex .colpick_hsb_h,.colpick_hex .colpick_hsb_s,.colpick_hex .colpick_rgb_b,.colpick_hex .colpick_rgb_g,.colpick_hex .colpick_rgb_r,.colpick_hex_ns .colpick_current_color,.colpick_hex_ns .colpick_submit,.colpick_rgbhex .colpick_hsb_b,.colpick_rgbhex .colpick_hsb_h,.colpick_rgbhex .colpick_hsb_s,.colpick_rgbhex_ns .colpick_current_color,.colpick_rgbhex_ns .colpick_submit{display:none}a.mashsb-delete{color:#a00}a.mashsb-delete:hover{color:red}#mashsb-add-ons h2{margin:0 0 15px}#mashsb-add-ons .mashshare-addons{float:left;margin:0 15px 15px 0;background:#f0f0f0;border:1px solid #ccc;width:320px;padding:8px;height:315px;position:relative}#mashsb-add-ons .mashshare-addons h3{margin:0 0 8px;font-size:13px}#mashsb-add-ons .mashshare-addons .button-secondary{position:absolute;bottom:8px;left:8px}#system-info-textarea{width:800px;height:400px;font-family:Menlo,Monaco,monospace;background:0 0;white-space:pre;overflow:auto;display:block}.mashsb-select-chosen{width:300px}.chosen-container-multi .chosen-choices{-webkit-border-radius:3px;border-radius:3px;border-color:#dfdfdf;background-image:none}.chosen-container-multi .chosen-choices input{margin:2px;height:27px!important;border-color:#dfdfdf}.chosen-container-active .chosen-choices{-webkit-border-top-left-radius:3px;border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0}.mashsb-license-error-notice,.mashsb-license-expires-soon-notice,.mashsb-notice{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.download_page_mashsb-tools .tablenav .actions{overflow:visible}.mashsb_user_search_wrap{position:relative;overflow:visible}.mashsb_user_search_results{position:absolute;left:0;top:27px}.mashsb_user_search_results ul{padding:10px 10px 4px;margin:0;background:#f0f0f0;border:1px solid #DFDFDF;width:300px;max-height:200px;overflow-y:scroll}.mashsb-graph .y1Axis{color:#edc240!important}.mashsb-graph .y2Axis{color:#afd8f8!important}input.large-text,textarea.large-text{max-width:600px}#css3lightboxpicker{margin:0;padding:0;border:0;width:70px;height:20px;line-height:20px}.colpick{position:absolute;width:346px;height:170px;overflow:hidden;font-family:Arial,Helvetica,sans-serif;background:#ebebeb;border:1px solid #bbb;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-ms-user-select:none;-o-user-select:none;user-select:none}.colpick_color{position:absolute;left:7px;top:7px;width:156px;height:156px;overflow:hidden;outline:#aaa solid 1px;cursor:crosshair}.colpick_color_overlay1{position:absolute;left:0;top:0;width:156px;height:156px;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:-moz-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:-o-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:-ms-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:linear-gradient(to right,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff')}.colpick_color_overlay2{position:absolute;left:0;top:0;width:156px;height:156px;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:-moz-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,0)),color-stop(100%,rgba(0,0,0,1)));background:-webkit-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:-o-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:-ms-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:linear-gradient(to bottom,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#000000', GradientType=0)}.colpick_selector_outer{background:0 0;position:absolute;width:11px;height:11px;margin:-6px 0 0 -6px;border:1px solid #000;border-radius:50%}.colpick_selector_inner{position:absolute;width:9px;height:9px;border:1px solid #fff;border-radius:50%}.colpick_field,.colpick_hex_field,.colpick_submit{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.colpick_hue{position:absolute;top:6px;left:175px;width:19px;height:156px;border:1px solid #aaa;cursor:n-resize}.colpick_current_color,.colpick_new_color{width:60px;height:27px;border:1px solid #8f8f8f}.colpick_hue_arrs{position:absolute;left:-8px;width:35px;height:7px;margin:-7px 0 0}.colpick_hue_larr{position:absolute;border-left:7px solid #858585}.colpick_hue_rarr{position:absolute;right:0;border-right:7px solid #858585}.colpick_new_color{position:absolute;left:207px;top:6px;background:red}.colpick_current_color{position:absolute;left:277px;top:6px;background:red}.colpick_field,.colpick_hex_field{position:absolute;height:20px;width:60px;overflow:hidden;background:#f3f3f3;color:#b8b8b8;font-size:12px;border:1px solid #bdbdbd}.colpick_rgb_r{top:40px;left:207px}.colpick_rgb_g{top:67px;left:207px}.colpick_rgb_b{top:94px;left:207px}.colpick_hsb_h{top:40px;left:277px}.colpick_hsb_s{top:67px;left:277px}.colpick_hsb_b{top:94px;left:277px}.colpick_hex_field{width:68px;left:207px;top:121px}.colpick_focus{border-color:#999}.colpick_field_letter{position:absolute;width:12px;height:20px;line-height:20px;padding-left:4px;background:#efefef;border-right:1px solid #bdbdbd;font-weight:700;color:#777}.colpick_field_darr,.colpick_field_uarr{width:0;height:0;border-right:4px solid transparent}.colpick_field input,.colpick_hex_field input{position:absolute;right:11px;margin:0;padding:0;height:20px;line-height:20px;background:0 0;border:none;font-size:12px;font-family:Arial,Helvetica,sans-serif;color:#555;text-align:right;outline:0}.colpick_hex_field input{right:4px}.colpick_field_arrs{position:absolute;top:0;right:0;width:9px;height:21px;cursor:n-resize}.colpick_field_uarr{position:absolute;top:5px;border-left:4px solid transparent;border-bottom:4px solid #959595}.colpick_field_darr{position:absolute;bottom:5px;border-left:4px solid transparent;border-top:4px solid #959595}.colpick_submit{position:absolute;left:207px;top:149px;width:130px;height:22px;line-height:22px;background:#efefef;text-align:center;color:#555;font-size:12px;font-weight:700;border:1px solid #bdbdbd}.colpick_hex .colpick_hex_field div,.colpick_hex .colpick_hex_field input,.colpick_hex .colpick_submit{height:25px;line-height:25px}.colpick_submit:hover{background:#f3f3f3;border-color:#999;cursor:pointer}.colpick_full_ns .colpick_new_color{width:130px;height:25px}.colpick_full_ns .colpick_hsb_h,.colpick_full_ns .colpick_rgb_r{top:42px}.colpick_full_ns .colpick_hsb_s,.colpick_full_ns .colpick_rgb_g{top:73px}.colpick_full_ns .colpick_hsb_b,.colpick_full_ns .colpick_rgb_b{top:104px}.colpick_full_ns .colpick_hex_field{top:135px}.colpick_rgbhex{width:282px}.colpick_rgbhex .colpick_field,.colpick_rgbhex .colpick_submit{width:68px}.colpick_rgbhex .colpick_new_color{width:34px;border-right:none}.colpick_rgbhex .colpick_current_color{width:34px;left:240px;border-left:none}.colpick_rgbhex_ns .colpick_new_color{width:68px;border:1px solid #8f8f8f}.colpick_rgbhex_ns .colpick_rgb_r{top:42px}.colpick_rgbhex_ns .colpick_rgb_g{top:73px}.colpick_rgbhex_ns .colpick_rgb_b{top:104px}.colpick_rgbhex_ns .colpick_hex_field{top:135px}.colpick_hex{width:206px;height:201px}.colpick_hex .colpick_hex_field{width:72px;height:25px;top:168px;left:80px}.colpick_hex .colpick_new_color{left:9px;top:168px;width:30px;border-right:none}.colpick_hex .colpick_current_color{left:39px;top:168px;width:30px;border-left:none}.colpick_hex .colpick_submit{left:164px;top:168px;width:30px}.colpick_hex_ns .colpick_hex_field{width:80px}.colpick_hex_ns .colpick_new_color{width:60px;border:1px solid #8f8f8f}.colpick_dark{background:#161616;border-color:#2a2a2a}.colpick_dark .colpick_color{outline-color:#333}.colpick_dark .colpick_hue{border-color:#555}.colpick_dark .colpick_field,.colpick_dark .colpick_hex_field{background:#101010;border-color:#2d2d2d}.colpick_dark .colpick_field_letter{background:#131313;border-color:#2d2d2d;color:#696969}.colpick_dark .colpick_field input,.colpick_dark .colpick_hex_field input{color:#7a7a7a}.colpick_dark .colpick_field_uarr{border-bottom-color:#696969}.colpick_dark .colpick_field_darr{border-top-color:#696969}.colpick_dark .colpick_focus{border-color:#444}.colpick_dark .colpick_submit{background:#131313;border-color:#2d2d2d;color:#7a7a7a}.colpick_dark .colpick_submit:hover{background-color:#101010;border-color:#444}#mashsb-tabs-sidebar{list-style:none;margin:0;padding:0;background:#f1f1f1;float:left;max-width:200px}#mashsb-tabs-sidebar li:first-child.selected-tab{border-top:none}#mashsb-tabs-sidebar li a.selected-tab{font-weight:700;text-decoration:none}#mashsb_container .row{padding-top:10px;padding-bottom:12px}#mashsb_container .row label strong,#mashsb_container .row strong{font-weight:700}.mashsb-tabs a{padding:5px}#mashsb_container>ul>li.mashsb-tabs.active{background-color:#fff}#mashsb_container .panel-container{background:#FFF;padding:0 20px 20px;overflow:auto;min-width:550px}#mashsb_container .form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;line-height:1.3;font-weight:600;font-size:15px;color:#484848}#mashsb_container span.description{display:block;font-weight:400;font-style:normal;font-size:13px;margin-top:7px;color:#484848}#mashsb_container .col-title{color:#484848}@media only screen and (max-width:680px){#mashsb_container ul{float:none}#mashsb_container .form-table tr>th{width:100%}#mashsb_container span.description{font-size:14px}#mashsb_container .form-table tr>td,#mashsb_container .form-table tr>th{padding:10px}}#mashsb_container ul li{margin-bottom:0}#mashsb-tabs-sidebar li a{display:block;padding:10px 4px 10px 14px;border-width:1px 0;border-style:solid;border-top-color:#fff;border-bottom-color:#e7e7e7;color:#0097DF;text-transform:uppercase;min-width:120px}#mashsb_container ul li a:hover{background-color:#e5e5e5;color:#777}#mashtabcontainer>.mashtabs,.mashsb.nav-tab-wrapper .nav-tab-active{background-color:#fff}.mashsb_admin .mashsharelogo{display:block;float:left;color:#0097DF;font-weight:700;font-size:36px;padding-top:20px;padding-bottom:20px;margin-right:14px}.mashsb_admin .nav-tab{color:#0097DF;border-left:1px solid #fff;border-right:1px solid #fff;border-top:1px solid #fff}.mashsb.nav-tab-wrapper{border-bottom:none!important;margin:0;clear:both}h2.mashsb.nav-tab-wrapper a{font-weight:700}.mashsb_hidden{display:none}#mashtabcontainer ul .active{background-color:#00adef;color:#fff;border-bottom-color:#0098D2}#mashtabcontainer ul .active:hover{background-color:#00A4E2;color:#fff;border-bottom-color:#0098D2}#mashtabcontainer ul li a{padding:10px 14px;background-color:#f3f3f3}#mashtabcontainer .mashtab-container{border:0 solid #ececec}.mashsb-admin-settings-header{font-size:20px;font-weight:700}.mashsb-version{display:block;padding-top:28px;font-size:15px}#mash-social-admin-head>li{float:left;margin-right:5px;padding-bottom:20px}#mash-social-admin-head .icon:before,#mash-social-admin-head a{font-size:12px;font-weight:400;float:none}#mash-social-admin-head a{padding:2px 5px}.mashsb-admin-onoffswitch{position:relative;width:55px;-ms-user-select:none}.mashsb-admin-onoffswitch-checkbox{display:none!important}.mashsb-admin-onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #D6D6D6;border-radius:0}.mashsb-admin-onoffswitch-inner{display:block;width:200%;margin-left:-100%;transition:margin .3s ease-in 0s}.mashsb-admin-onoffswitch-inner:after,.mashsb-admin-onoffswitch-inner:before{display:block;float:left;width:50%;height:22px;padding:0;line-height:22px;font-size:12px;font-family:Trebuchet,Arial,sans-serif;font-weight:700;box-sizing:border-box}.mashsb-admin-onoffswitch-inner:before{content:"ON";padding-left:10px;background-color:#0097DF;color:#FFF}.mashsb-admin-onoffswitch-inner:after{content:"OFF";padding-right:10px;background-color:#EEE;color:#D6D6D6;text-align:right}.mashsb-admin-onoffswitch-switch{display:block;width:12px;max-height:12px;margin:5.5px;background:#FFF;position:absolute;top:0;bottom:0;right:33px;border:0 solid #D6D6D6;border-radius:0;transition:all .3s ease-in 0s}.mashsb-admin-onoffswitch-checkbox:checked+.mashsb-admin-onoffswitch-label .mashsb-admin-onoffswitch-inner{margin-left:0}.mashsb-admin-onoffswitch-checkbox:checked+.mashsb-admin-onoffswitch-label .mashsb-admin-onoffswitch-switch{right:2px}#wpbody-content>div.wrap.mashsb_admin>h2>a.nav-tab.nav-tab-active{background-color:#fff}.mashsb_admin .mashsb-helper{border-radius:50%;border:2px solid #fff;background-color:#0097df;width:15px;height:15px;display:inline-block;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.mashsb_admin .mashsb-helper:after{height:20px;font-family:sans-serif;content:"?";color:#fff;font-size:11px;font-weight:700;left:4px;position:absolute}.mashsb_admin .mashsb-message{padding:10px;border:1px solid #FBFBFB;border-radius:2px;background-color:#F8F8F8;position:absolute;max-width:500px;z-index:9999;display:none;box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:400}.mashsb-sidebar{float:left;max-width:299px;border-left:2px solid #fff;border-right:2px solid #fff;border-bottom:2px solid #fff;margin-left:1px}.mashsb-sidebar h2{margin:0}.mashsb-sidebar .author,.mashsb-sidebar .via{text-align:right;margin:0}.mashsb_admin .panel-container{float:left}.mashsb_admin .subscribe.block{padding:20px}.mashsb_admin .block.testimonial{padding:20px;background-color:#E9E9E9}.mashsb_admin .block.testimonial a,.mashsb_admin .dashicons-star-filled:before{color:#0097df}.mashsb_admin .testimonial .via a:before{content:"\f301";display:inline-block;-webkit-font-smoothing:antialiased;font:400 18px/1 dashicons;vertical-align:top;margin-right:3px}.mashsb-license-error-notice,.mashsb-license-expires-soon-notice{background-color:#fff;padding:10px;overflow:auto;border:1px solid #ECECEC;border-radius:3px}.mashsb-license-error-notice a{color:#0097df;text-decoration:underline}.mashsb-license-error-notice{border-left:4px solid #dd3d36}.mashsb-license-expiration-date-notice,.mashsb-license-lifetime-notice,.mashsb-license-null{padding:0 0 0 14px}.mashsb-license-expiration-date-notice .mashsb-license-data p,.mashsb-license-lifetime-notice .mashsb-license-data p{color:#666;font-size:14px;font-style:italic;margin:4px 0 0}#mashsb_settingslicenses_header-nav{display:none}#mashsb_settingslicenses_header{max-width:640px}#mashsb_settingslicenses_header .row.th{min-width:250px}.mashsb-notice{background:#fff;border-left:4px solid #46b450;margin:5px 15px 2px;padding:1px 12px}#mashsb_container .form-table th.mashsb-status-col{width:50px}#mashsb_container .form-table th.mashsb-network-col{width:150px}.mashsb-about-wrap img{max-width:99%}.mashsb-about-wrap p{font-size:16px}.token_status{line-height:19px;margin-top:5px}
1
+ .chosen-container .chosen-drop,.chosen-container-active .chosen-choices{border-color:#aaa;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.1);box-shadow:1px 1px 2px rgba(0,0,0,.1)}.colpick_hue_larr,.colpick_hue_rarr{border-bottom:6px solid transparent;width:0;height:0;border-top:6px solid transparent}.colpick,.mashsb-admin-onoffswitch{-webkit-user-select:none;-moz-user-select:none}#mashsb_network_list tr,.mashsb_list_item td{cursor:move}#mashsb_network_list td{padding:5px 10px;line-height:20px}@media screen and (max-width:783px){#mashsb_network_list td{display:inline-block;width:auto;vertical-align:middle;min-width:110px}}.mashsb-richeditor,.mashsb-textarea{font-size:11px}@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-"] .icon,[class*=" mashicon-"] .text,[class^=mashicon-] .icon,[class^=mashicon-] .text{color:#fff}[class*=" mashicon-"],[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:18px;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}#mash-social-admin-head a,#mashsb-tabs-sidebar li a,.mashsb-wrap a,.mashsb_admin a{text-decoration: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-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-whatsapp .icon:before{content:'\e814'}.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'}.mashicon-facebook{background:#2d5f9a}.mashicon-twitter{background:#00c3f3}.mashicon-google{background:#d73d32}.mashicon-subscribe{background:#fff120}.mashicon-subscribe .icon,.mashicon-subscribe .text{color:#000}.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-flipboard{background:#b31f17}.mashicon-hackernews{background:#f60}.mashsb-hidden{display:none}.mashsb-clearfix:after{display:block;visibility:hidden;content:".";text-indent:-9999px;height:0}#mashsb-add-ons .mashshare-addons .third-party,.colpick,.colpick_full_ns .colpick_current_color,.colpick_full_ns .colpick_submit,.colpick_hex .colpick_hsb_b,.colpick_hex .colpick_hsb_h,.colpick_hex .colpick_hsb_s,.colpick_hex .colpick_rgb_b,.colpick_hex .colpick_rgb_g,.colpick_hex .colpick_rgb_r,.colpick_hex_ns .colpick_current_color,.colpick_hex_ns .colpick_submit,.colpick_rgbhex .colpick_hsb_b,.colpick_rgbhex .colpick_hsb_h,.colpick_rgbhex .colpick_hsb_s,.colpick_rgbhex_ns .colpick_current_color,.colpick_rgbhex_ns .colpick_submit{display:none}a.mashsb-delete{color:#a00}a.mashsb-delete:hover{color:red}#mashsb-add-ons h2{margin:0 0 15px}#mashsb-add-ons .mashshare-addons{float:left;margin:0 15px 15px 0;background:#f0f0f0;border:1px solid #ccc;width:320px;padding:8px;height:315px;position:relative}#mashsb-add-ons .mashshare-addons h3{margin:0 0 8px;font-size:13px}#mashsb-add-ons .mashshare-addons .button-secondary{position:absolute;bottom:8px;left:8px}#system-info-textarea{width:800px;height:400px;font-family:Menlo,Monaco,monospace;background:0 0;white-space:pre;overflow:auto;display:block}.mashsb-select-chosen{width:300px}.chosen-container-multi .chosen-choices{-webkit-border-radius:3px;border-radius:3px;border-color:#dfdfdf;background-image:none}.chosen-container-multi .chosen-choices input{margin:2px;height:27px!important;border-color:#dfdfdf}.chosen-container-active .chosen-choices{-webkit-border-top-left-radius:3px;border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0}.mashsb-license-error-notice,.mashsb-license-expires-soon-notice,.mashsb-notice{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.download_page_mashsb-tools .tablenav .actions{overflow:visible}.mashsb_user_search_wrap{position:relative;overflow:visible}.mashsb_user_search_results{position:absolute;left:0;top:27px}.mashsb_user_search_results ul{padding:10px 10px 4px;margin:0;background:#f0f0f0;border:1px solid #DFDFDF;width:300px;max-height:200px;overflow-y:scroll}.mashsb-graph .y1Axis{color:#edc240!important}.mashsb-graph .y2Axis{color:#afd8f8!important}input.large-text,textarea.large-text{max-width:600px}#css3lightboxpicker{margin:0;padding:0;border:0;width:70px;height:20px;line-height:20px}.colpick{position:absolute;width:346px;height:170px;overflow:hidden;font-family:Arial,Helvetica,sans-serif;background:#ebebeb;border:1px solid #bbb;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-ms-user-select:none;-o-user-select:none;user-select:none}.colpick_color{position:absolute;left:7px;top:7px;width:156px;height:156px;overflow:hidden;outline:#aaa solid 1px;cursor:crosshair}.colpick_color_overlay1{position:absolute;left:0;top:0;width:156px;height:156px;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:-moz-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:-o-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:-ms-linear-gradient(left,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);background:linear-gradient(to right,rgba(255,255,255,1)0,rgba(255,255,255,0)100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff')}.colpick_color_overlay2{position:absolute;left:0;top:0;width:156px;height:156px;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:-moz-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,0)),color-stop(100%,rgba(0,0,0,1)));background:-webkit-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:-o-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:-ms-linear-gradient(top,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);background:linear-gradient(to bottom,rgba(0,0,0,0)0,rgba(0,0,0,1)100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#000000', GradientType=0)}.colpick_selector_outer{background:0 0;position:absolute;width:11px;height:11px;margin:-6px 0 0 -6px;border:1px solid #000;border-radius:50%}.colpick_selector_inner{position:absolute;width:9px;height:9px;border:1px solid #fff;border-radius:50%}.colpick_field,.colpick_hex_field,.colpick_submit{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.colpick_hue{position:absolute;top:6px;left:175px;width:19px;height:156px;border:1px solid #aaa;cursor:n-resize}.colpick_current_color,.colpick_new_color{width:60px;height:27px;border:1px solid #8f8f8f}.colpick_hue_arrs{position:absolute;left:-8px;width:35px;height:7px;margin:-7px 0 0}.colpick_hue_larr{position:absolute;border-left:7px solid #858585}.colpick_hue_rarr{position:absolute;right:0;border-right:7px solid #858585}.colpick_new_color{position:absolute;left:207px;top:6px;background:red}.colpick_current_color{position:absolute;left:277px;top:6px;background:red}.colpick_field,.colpick_hex_field{position:absolute;height:20px;width:60px;overflow:hidden;background:#f3f3f3;color:#b8b8b8;font-size:12px;border:1px solid #bdbdbd}.colpick_rgb_r{top:40px;left:207px}.colpick_rgb_g{top:67px;left:207px}.colpick_rgb_b{top:94px;left:207px}.colpick_hsb_h{top:40px;left:277px}.colpick_hsb_s{top:67px;left:277px}.colpick_hsb_b{top:94px;left:277px}.colpick_hex_field{width:68px;left:207px;top:121px}.colpick_focus{border-color:#999}.colpick_field_letter{position:absolute;width:12px;height:20px;line-height:20px;padding-left:4px;background:#efefef;border-right:1px solid #bdbdbd;font-weight:700;color:#777}.colpick_field_darr,.colpick_field_uarr{width:0;height:0;border-right:4px solid transparent}.colpick_field input,.colpick_hex_field input{position:absolute;right:11px;margin:0;padding:0;height:20px;line-height:20px;background:0 0;border:none;font-size:12px;font-family:Arial,Helvetica,sans-serif;color:#555;text-align:right;outline:0}.colpick_hex_field input{right:4px}.colpick_field_arrs{position:absolute;top:0;right:0;width:9px;height:21px;cursor:n-resize}.colpick_field_uarr{position:absolute;top:5px;border-left:4px solid transparent;border-bottom:4px solid #959595}.colpick_field_darr{position:absolute;bottom:5px;border-left:4px solid transparent;border-top:4px solid #959595}.colpick_submit{position:absolute;left:207px;top:149px;width:130px;height:22px;line-height:22px;background:#efefef;text-align:center;color:#555;font-size:12px;font-weight:700;border:1px solid #bdbdbd}.colpick_hex .colpick_hex_field div,.colpick_hex .colpick_hex_field input,.colpick_hex .colpick_submit{height:25px;line-height:25px}.colpick_submit:hover{background:#f3f3f3;border-color:#999;cursor:pointer}.colpick_full_ns .colpick_new_color{width:130px;height:25px}.colpick_full_ns .colpick_hsb_h,.colpick_full_ns .colpick_rgb_r{top:42px}.colpick_full_ns .colpick_hsb_s,.colpick_full_ns .colpick_rgb_g{top:73px}.colpick_full_ns .colpick_hsb_b,.colpick_full_ns .colpick_rgb_b{top:104px}.colpick_full_ns .colpick_hex_field{top:135px}.colpick_rgbhex{width:282px}.colpick_rgbhex .colpick_field,.colpick_rgbhex .colpick_submit{width:68px}.colpick_rgbhex .colpick_new_color{width:34px;border-right:none}.colpick_rgbhex .colpick_current_color{width:34px;left:240px;border-left:none}.colpick_rgbhex_ns .colpick_new_color{width:68px;border:1px solid #8f8f8f}.colpick_rgbhex_ns .colpick_rgb_r{top:42px}.colpick_rgbhex_ns .colpick_rgb_g{top:73px}.colpick_rgbhex_ns .colpick_rgb_b{top:104px}.colpick_rgbhex_ns .colpick_hex_field{top:135px}.colpick_hex{width:206px;height:201px}.colpick_hex .colpick_hex_field{width:72px;height:25px;top:168px;left:80px}.colpick_hex .colpick_new_color{left:9px;top:168px;width:30px;border-right:none}.colpick_hex .colpick_current_color{left:39px;top:168px;width:30px;border-left:none}.colpick_hex .colpick_submit{left:164px;top:168px;width:30px}.colpick_hex_ns .colpick_hex_field{width:80px}.colpick_hex_ns .colpick_new_color{width:60px;border:1px solid #8f8f8f}.colpick_dark{background:#161616;border-color:#2a2a2a}.colpick_dark .colpick_color{outline-color:#333}.colpick_dark .colpick_hue{border-color:#555}.colpick_dark .colpick_field,.colpick_dark .colpick_hex_field{background:#101010;border-color:#2d2d2d}.colpick_dark .colpick_field_letter{background:#131313;border-color:#2d2d2d;color:#696969}.colpick_dark .colpick_field input,.colpick_dark .colpick_hex_field input{color:#7a7a7a}.colpick_dark .colpick_field_uarr{border-bottom-color:#696969}.colpick_dark .colpick_field_darr{border-top-color:#696969}.colpick_dark .colpick_focus{border-color:#444}.colpick_dark .colpick_submit{background:#131313;border-color:#2d2d2d;color:#7a7a7a}.colpick_dark .colpick_submit:hover{background-color:#101010;border-color:#444}#mashsb-tabs-sidebar{list-style:none;margin:0;padding:0;background:#f1f1f1;float:left;max-width:200px}#mashsb-tabs-sidebar li:first-child.selected-tab{border-top:none}#mashsb-tabs-sidebar li a.selected-tab{font-weight:700;text-decoration:none}#mashsb_container .row{padding-top:10px;padding-bottom:12px}#mashsb_container .row label strong,#mashsb_container .row strong{font-weight:700}.mashsb-tabs a{padding:5px}#mashsb_container>ul>li.mashsb-tabs.active{background-color:#fff}#mashsb_container .mashsb-panel-container{background:#FFF;padding:0 20px 20px;overflow:auto;min-width:550px}#mashsb_container .form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;line-height:1.3;font-weight:600;font-size:15px;color:#484848}#mashsb_container span.description{display:block;font-weight:400;font-style:normal;font-size:13px;margin-top:7px;color:#484848}#mashsb_container .col-title{color:#484848}@media only screen and (max-width:680px){#mashsb_container ul{float:none}#mashsb_container .form-table tr>th{width:100%}#mashsb_container span.description{font-size:14px}#mashsb_container .form-table tr>td,#mashsb_container .form-table tr>th{padding:10px}}#mashsb_container ul li{margin-bottom:0}#mashsb-tabs-sidebar li a{display:block;padding:10px 4px 10px 14px;border-width:1px 0;border-style:solid;border-top-color:#fff;border-bottom-color:#e7e7e7;color:#0097DF;text-transform:uppercase;min-width:120px}#mashsb_container ul li a:hover{background-color:#e5e5e5;color:#777}#mashtabcontainer>.mashtabs,.mashsb.nav-tab-wrapper .nav-tab-active{background-color:#fff}.mashsb_admin .mashsharelogo{display:block;float:left;color:#0097DF;font-weight:700;font-size:36px;padding-top:20px;padding-bottom:20px;margin-right:14px}.mashsb_admin .nav-tab{color:#0097DF;border-left:1px solid #fff;border-right:1px solid #fff;border-top:1px solid #fff}.mashsb.nav-tab-wrapper{border-bottom:none!important;margin:0;clear:both}h2.mashsb.nav-tab-wrapper a{font-weight:700}.mashsb_hidden{display:none}#mashtabcontainer ul .active{background-color:#00adef;color:#fff;border-bottom-color:#0098D2}#mashtabcontainer ul .active:hover{background-color:#00A4E2;color:#fff;border-bottom-color:#0098D2}#mashtabcontainer ul li a{padding:10px 14px;background-color:#f3f3f3}#mashtabcontainer .mashtab-container{border:0 solid #ececec}.mashsb-admin-settings-header{font-size:20px;font-weight:700}.mashsb-version{display:block;padding-top:28px;font-size:15px}#mash-social-admin-head>li{float:left;margin-right:5px;padding-bottom:20px}#mash-social-admin-head .icon:before,#mash-social-admin-head a{font-size:12px;font-weight:400;float:none}#mash-social-admin-head a{padding:2px 5px}.mashsb-admin-onoffswitch{position:relative;width:55px;-ms-user-select:none}.mashsb-admin-onoffswitch-checkbox{display:none!important}.mashsb-admin-onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #D6D6D6;border-radius:0}.mashsb-admin-onoffswitch-inner{display:block;width:200%;margin-left:-100%;transition:margin .3s ease-in 0s}.mashsb-admin-onoffswitch-inner:after,.mashsb-admin-onoffswitch-inner:before{display:block;float:left;width:50%;height:22px;padding:0;line-height:22px;font-size:12px;font-family:Trebuchet,Arial,sans-serif;font-weight:700;box-sizing:border-box}.mashsb-admin-onoffswitch-inner:before{content:"ON";padding-left:10px;background-color:#0097DF;color:#FFF}.mashsb-admin-onoffswitch-inner:after{content:"OFF";padding-right:10px;background-color:#EEE;color:#D6D6D6;text-align:right}.mashsb-admin-onoffswitch-switch{display:block;width:12px;max-height:12px;margin:5.5px;background:#FFF;position:absolute;top:0;bottom:0;right:33px;border:0 solid #D6D6D6;border-radius:0;transition:all .3s ease-in 0s}.mashsb-admin-onoffswitch-checkbox:checked+.mashsb-admin-onoffswitch-label .mashsb-admin-onoffswitch-inner{margin-left:0}.mashsb-admin-onoffswitch-checkbox:checked+.mashsb-admin-onoffswitch-label .mashsb-admin-onoffswitch-switch{right:2px}#wpbody-content>div.wrap.mashsb_admin>h2>a.nav-tab.nav-tab-active{background-color:#fff}.mashsb_admin .mashsb-helper{border-radius:50%;border:2px solid #fff;background-color:#0097df;width:15px;height:15px;display:inline-block;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.mashsb_admin .mashsb-helper:after{height:20px;font-family:sans-serif;content:"?";color:#fff;font-size:11px;font-weight:700;left:4px;position:absolute}.mashsb_admin .mashsb-message{padding:10px;border:1px solid #FBFBFB;border-radius:2px;background-color:#F8F8F8;position:absolute;max-width:500px;z-index:9999;display:none;box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:400}.mashsb-sidebar{float:left;max-width:299px;border-left:2px solid #fff;border-right:2px solid #fff;border-bottom:2px solid #fff;margin-left:1px}.mashsb-sidebar h2{margin:0}.mashsb-sidebar .author,.mashsb-sidebar .via{text-align:right;margin:0}.mashsb_admin .mashsb-panel-container{float:left}.mashsb_admin .subscribe.block{padding:20px}.mashsb_admin .block.testimonial{padding:20px;background-color:#E9E9E9}.mashsb_admin .block.testimonial a,.mashsb_admin .dashicons-star-filled:before{color:#0097df}.mashsb_admin .testimonial .via a:before{content:"\f301";display:inline-block;-webkit-font-smoothing:antialiased;font:400 18px/1 dashicons;vertical-align:top;margin-right:3px}.mashsb-license-error-notice,.mashsb-license-expires-soon-notice{background-color:#fff;padding:10px;overflow:auto;border:1px solid #ECECEC;border-radius:3px}.mashsb-license-error-notice a{color:#0097df;text-decoration:underline}.mashsb-license-error-notice{border-left:4px solid #dd3d36}.mashsb-license-expiration-date-notice,.mashsb-license-lifetime-notice,.mashsb-license-null{padding:0 0 0 14px}.mashsb-license-expiration-date-notice .mashsb-license-data p,.mashsb-license-lifetime-notice .mashsb-license-data p{color:#666;font-size:14px;font-style:italic;margin:4px 0 0}#mashsb_settingslicenses_header-nav{display:none}#mashsb_settingslicenses_header{max-width:640px}#mashsb_settingslicenses_header .row.th{min-width:250px}.mashsb-notice{background:#fff;border-left:4px solid #46b450;margin:5px 15px 2px;padding:1px 12px}#mashsb_container .form-table th.mashsb-status-col{width:50px}#mashsb_container .form-table th.mashsb-network-col{width:150px}.mashsb-about-wrap img{max-width:99%}.mashsb-about-wrap p{font-size:16px}.token_status{line-height:19px;margin-top:5px}
assets/js/mashsb-admin.js CHANGED
@@ -32,30 +32,24 @@ jQuery(document).ready(function ($) {
32
});
33
34
35
- $('#mashsb_settings\\[fb_access_token\\]').on("change paste keyup",function(){
36
-
37
- var two_month = 60 * 60 * 24 * 60 * 1000; // timestamp in miliseconds
38
- var expiration_timestamp = (new Date().getTime()) + two_month; // time in miliseconds
39
-
40
- var unixtimestamp = (new Date().getTime() + (60 * 60 * 24 * 60 * 1000)) / 1000; // timestamp in seconds
41
-
42
- var human_date = new Date(expiration_timestamp);
43
-
44
- if ($('#mashsb_settings\\[fb_access_token\\]').val()){
45
check_access_token();
46
- document.getElementById('mashsb_expire_token_status').innerHTML = 'Token needs renewal on ' + human_date + '<br>MashShare will notify you shortly before the access token expires.';
47
- $('#mashsb_settings\\[expire_fb_access_token\\]').val(unixtimestamp.toFixed(0));
48
- }else {
49
- document.getElementById('mashsb_expire_token_status').innerHTML = '';
50
}
51
});
52
53
-
54
function check_access_token()
55
{
56
- $.ajax("https://graph.facebook.com/v2.7/?id=http://www.google.de&access_token=" + $('#mashsb_settings\\[fb_access_token\\]').val())
57
.done(function (e) {
58
- $('#mashsb_token_notice').html('');
59
console.log(e);
60
})
61
.fail(function (e) {
32
});
33
34
35
+ $('#mashsb_verify_fbtoken').on("click",function(e){
36
+ e.preventDefault();
37
+ console.log('test');
38
+ if ($('#mashsb_settings\\[fb_access_token_new\\]').val()){
39
check_access_token();
40
}
41
});
42
43
+ /**
44
+ * Check if access token is valid and api returns a valid result
45
+ *
46
+ * @returns {undefined}
47
+ */
48
function check_access_token()
49
{
50
+ $.ajax("https://graph.facebook.com/v2.7/?id=http://www.google.com&access_token=" + $('#mashsb_settings\\[fb_access_token_new\\]').val())
51
.done(function (e) {
52
+ $('#mashsb_token_notice').html('<strong>Token valid:</strong> Facebook share count for http://google.com: ' + e.share.share_count );
53
console.log(e);
54
})
55
.fail(function (e) {
assets/js/mashsb-admin.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(a){function b(){a.ajax("https://graph.facebook.com/v2.7/?id=http://www.google.de&access_token="+a("#mashsb_settings\\[fb_access_token\\]").val()).done(function(b){a("#mashsb_token_notice").html(""),console.log(b)}).fail(function(b){a("#mashsb_token_notice").html('<span style="color:red;"> <strong>Error:</strong> Access Token Invalid!</span>'),console.log(b)})}function c(a,b,c){if(c){var d=new Date;d.setTime(d.getTime()+24*c*60*60*1e3);var e="; expires="+d.toGMTString()}else var e="";document.cookie=a+"="+b+e+"; path=/"}function d(a){for(var b=a+"=",c=document.cookie.split(";"),d=0;d<c.length;d++){for(var e=c[d];" "==e.charAt(0);)e=e.substring(1,e.length);if(0==e.indexOf(b))return e.substring(b.length,e.length)}return null}function e(){var a=jQuery(".mashsb-tabs.active").find("a").attr("href");c("mashsb_active_tab",a)}function f(){var a=d("mashsb_active_tab");return null==a&&(a="#mashsb_settingsgeneral_header"),a}function g(){var a,b;return a=jQuery(".mashsb.nav-tab-wrapper a.nav-tab-active:nth-child(2)"),b=jQuery(".mashsb.nav-tab-wrapper a.nav-tab-active:nth-child(3)"),a.length>0||b.length>0?void 0:f()+"-nav"}a(".mashsb-color-box").each(function(){a(this).colpick({layout:"hex",submit:0,colorScheme:"light",onChange:function(b,c,d,e,f){a(e).css("border-color","#"+c),f||a(e).val(c)}}).keyup(function(){a(this).colpickSetColor(this.value)}),a(this).colpick({layout:"hex",submit:0,colorScheme:"light",onChange:function(b,c,d,e,f){a(e).css("border-color","#"+c),f||a(e).val(c)}}).keyup(function(){a(this).colpickSetColor(this.value)})}),a("#mashsb_settings\\[fb_access_token\\]").on("change paste keyup",function(){var c=5184e6,d=(new Date).getTime()+c,e=((new Date).getTime()+5184e6)/1e3,f=new Date(d);a("#mashsb_settings\\[fb_access_token\\]").val()?(b(),document.getElementById("mashsb_expire_token_status").innerHTML="Token needs renewal on "+f+"<br>MashShare will notify you shortly before the access token expires.",a("#mashsb_settings\\[expire_fb_access_token\\]").val(e.toFixed(0))):document.getElementById("mashsb_expire_token_status").innerHTML=""}),a("#mashsb_fb_auth").click(function(b){b.preventDefault(),winWidth=520,winHeight=350;var c=screen.height/2-winHeight/2,d=screen.width/2-winWidth/2,e=a(this).attr("href");mashsb_fb_auth=window.open(e,"mashsb_fb_auth","top="+c+",left="+d+",toolbar=0,status=0,width="+winWidth+",height="+winHeight+",resizable=yes")}),a("#mashsb_settings\\[responsive_buttons\\]").attr("checked")?a("#mashsb_settings\\[button_width\\]").closest(".row").css("display","none"):a("#mashsb_settings\\[button_width\\]").closest(".row").fadeIn(300).css("display","table-row"),a("#mashsb_settings\\[responsive_buttons\\]").click(function(){a(this).attr("checked")?a("#mashsb_settings\\[button_width\\]").closest(".row").css("display","none"):a("#mashsb_settings\\[button_width\\]").closest(".row").fadeIn(300).css("display","table-row")}),a(".mashsb-chosen-select").chosen({width:"400px"}),a("#mashsb_settings\\[caching_method\\]").change(function(){"refresh_loading"===a("#mashsb_settings\\[caching_method\\]").val()?a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").fadeIn(300).css("display","table-row"):a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").css("display","none")}),"refresh_loading"===a("#mashsb_settings\\[caching_method\\]").val()?a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").fadeIn(300).css("display","table-row"):a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").css("display","none"),a(".mashsb-tabs").length&&a("#mashsb_container").easytabs({animate:!0,updateHash:!0,defaultTab:g()}),a("#mashsb_container").bind("easytabs:after",function(){0==jQuery(".mashsb.nav-tab-wrapper a.nav-tab-active:nth-child(2)").length&&e()}),a(".mashtab").length&&a(".tabcontent_container").easytabs({animate:!0}),a("#mashsb_network_list").sortable({items:".mashsb_list_item",opacity:.6,cursor:"move",axis:"y",update:function(){var b=a(this).sortable("serialize")+"&action=mashsb_update_order";a.post(ajaxurl,b,function(){})}}),a(".mashsb-helper").click(function(b){b.preventDefault();var c=a(this),d=a(this).next();a(".mashsb-message").not(d).hide();var e=c.position();d.css(d.hasClass("bottom")?{left:e.left-d.width()/2+"px",top:e.top+c.height()+9+"px"}:{left:e.left+c.width()+9+"px",top:e.top+c.height()/2-18+"px"}),d.toggle(),b.stopPropagation()}),a("body").click(function(){a(".mashsb-message").hide()}),a(".mashsb-message").click(function(a){a.stopPropagation()})}),function(a,b,c){function d(a){return a=a||location.href,"#"+a.replace(/^[^#]*#?(.*)#x2F;,"$1")}var e,f="hashchange",g=document,h=a.event.special,i=g.documentMode,j="on"+f in b&&(i===c||i>7);a.fn[f]=function(a){return a?this.bind(f,a):this.trigger(f)},a.fn[f].delay=50,h[f]=a.extend(h[f],{setup:function(){return j?!1:void a(e.start)},teardown:function(){return j?!1:void a(e.stop)}}),e=function(){function e(){var c=d(),g=n(k);c!==k?(m(k=c,g),a(b).trigger(f)):g!==k&&(location.href=location.href.replace(/#.*/,"")+g),h=setTimeout(e,a.fn[f].delay)}var h,i={},k=d(),l=function(a){return a},m=l,n=l;return i.start=function(){h||e()},i.stop=function(){h&&clearTimeout(h),h=c},a.browser.msie&&!j&&function(){var b,c;i.start=function(){b||(c=a.fn[f].src,c=c&&c+d(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){c||m(d()),e()}).attr("src",c||"javascript:0").insertAfter("body")[0].contentWindow,g.onpropertychange=function(){try{"title"===event.propertyName&&(b.document.title=g.title)}catch(a){}})},i.stop=l,n=function(){return d(b.location.href)},m=function(c,d){var e=b.document,h=a.fn[f].domain;c!==d&&(e.title=g.title,e.open(),h&&e.write('<script>document.domain="'+h+'"</script>'),e.close(),b.location.hash=c)}}(),i}()}(jQuery,this),function(a){a.easytabs=function(b,c){var d,e,f,g,h,i,j=this,k=a(b),l={animate:!0,panelActiveClass:"active",tabActiveClass:"active",defaultTab:"li:first-child",animationSpeed:"normal",tabs:"> ul > li",updateHash:!0,cycle:!1,collapsible:!1,collapsedClass:"collapsed",collapsedByDefault:!0,uiTabs:!1,transitionIn:"fadeIn",transitionOut:"fadeOut",transitionInEasing:"swing",transitionOutEasing:"swing",transitionCollapse:"slideUp",transitionUncollapse:"slideDown",transitionCollapseEasing:"swing",transitionUncollapseEasing:"swing",containerClass:"",tabsClass:"",tabClass:"",panelClass:"",cache:!0,event:"click",panelContext:k},m={fast:200,normal:400,slow:600};j.init=function(){j.settings=i=a.extend({},l,c),i.bind_str=i.event+".easytabs",i.uiTabs&&(i.tabActiveClass="ui-tabs-selected",i.containerClass="ui-tabs ui-widget ui-widget-content ui-corner-all",i.tabsClass="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all",i.tabClass="ui-state-default ui-corner-top",i.panelClass="ui-tabs-panel ui-widget-content ui-corner-bottom"),i.collapsible&&void 0!==c.defaultTab&&void 0===c.collpasedByDefault&&(i.collapsedByDefault=!1),"string"==typeof i.animationSpeed&&(i.animationSpeed=m[i.animationSpeed]),a("a.anchor").remove().prependTo("body"),k.data("easytabs",{}),j.setTransitions(),j.getTabs(),o(),p(),r(),v(),w(),k.attr("data-easytabs",!0)},j.setTransitions=function(){f=i.animate?{show:i.transitionIn,hide:i.transitionOut,speed:i.animationSpeed,collapse:i.transitionCollapse,uncollapse:i.transitionUncollapse,halfSpeed:i.animationSpeed/2}:{show:"show",hide:"hide",speed:0,collapse:"hide",uncollapse:"show",halfSpeed:0}},j.getTabs=function(){var b;j.tabs=k.find(i.tabs),j.panels=a(),j.tabs.each(function(){var c=a(this),d=c.children("a"),e=c.children("a").data("target");c.data("easytabs",{}),void 0!==e&&null!==e?c.data("easytabs").ajax=d.attr("href"):e=d.attr("href"),e=e.match(/#([^\?]+)/)[1],b=i.panelContext.find("#"+e),b.length?(b.data("easytabs",{position:b.css("position"),visibility:b.css("visibility")}),b.not(i.panelActiveClass).hide(),j.panels=j.panels.add(b),c.data("easytabs").panel=b):(j.tabs=j.tabs.not(c),"console"in window&&console.warn("Warning: tab without matching panel for selector '#"+e+"' removed from set"))})},j.selectTab=function(a,b){var c=window.location,d=(c.hash.match(/^[^\?]*/)[0],a.parent().data("easytabs").panel),e=a.parent().data("easytabs").ajax;i.collapsible&&!h&&(a.hasClass(i.tabActiveClass)||a.hasClass(i.collapsedClass))?j.toggleTabCollapse(a,d,e,b):a.hasClass(i.tabActiveClass)&&d.hasClass(i.panelActiveClass)?i.cache||s(a,d,e,b):s(a,d,e,b)},j.toggleTabCollapse=function(a,b,c,d){j.panels.stop(!0,!0),n(k,"easytabs:before",[a,b,i])&&(j.tabs.filter("."+i.tabActiveClass).removeClass(i.tabActiveClass).children().removeClass(i.tabActiveClass),a.hasClass(i.collapsedClass)?(!c||i.cache&&a.parent().data("easytabs").cached||(k.trigger("easytabs:ajax:beforeSend",[a,b]),b.load(c,function(c,d,e){a.parent().data("easytabs").cached=!0,k.trigger("easytabs:ajax:complete",[a,b,c,d,e])})),a.parent().removeClass(i.collapsedClass).addClass(i.tabActiveClass).children().removeClass(i.collapsedClass).addClass(i.tabActiveClass),b.addClass(i.panelActiveClass)[f.uncollapse](f.speed,i.transitionUncollapseEasing,function(){k.trigger("easytabs:midTransition",[a,b,i]),"function"==typeof d&&d()})):(a.addClass(i.collapsedClass).parent().addClass(i.collapsedClass),b.removeClass(i.panelActiveClass)[f.collapse](f.speed,i.transitionCollapseEasing,function(){k.trigger("easytabs:midTransition",[a,b,i]),"function"==typeof d&&d()})))},j.matchTab=function(a){return j.tabs.find("[href='"+a+"'],[data-target='"+a+"']").first()},j.matchInPanel=function(a){return a&&j.validId(a)?j.panels.filter(":has("+a+")").first():[]},j.validId=function(a){return a.substr(1).match(/^[A-Za-z][A-Za-z0-9\-_:\.]*#x2F;)},j.selectTabFromHashChange=function(){var a,b=window.location.hash.match(/^[^\?]*/)[0],c=j.matchTab(b);i.updateHash&&(c.length?(h=!0,j.selectTab(c)):(a=j.matchInPanel(b),a.length?(b="#"+a.attr("id"),c=j.matchTab(b),h=!0,j.selectTab(c)):d.hasClass(i.tabActiveClass)||i.cycle||(""===b||j.matchTab(g).length||k.closest(b).length)&&(h=!0,j.selectTab(e))))},j.cycleTabs=function(b){i.cycle&&(b%=j.tabs.length,$tab=a(j.tabs[b]).children("a").first(),h=!0,j.selectTab($tab,function(){setTimeout(function(){j.cycleTabs(b+1)},i.cycle)}))},j.publicMethods={select:function(b){var c;0===(c=j.tabs.filter(b)).length?0===(c=j.tabs.find("a[href='"+b+"']")).length&&0===(c=j.tabs.find("a"+b)).length&&0===(c=j.tabs.find("[data-target='"+b+"']")).length&&0===(c=j.tabs.find("a[href$='"+b+"']")).length&&a.error("Tab '"+b+"' does not exist in tab set"):c=c.children("a").first(),j.selectTab(c)}};var n=function(b,c,d){var e=a.Event(c);return b.trigger(e,d),e.result!==!1},o=function(){k.addClass(i.containerClass),j.tabs.parent().addClass(i.tabsClass),j.tabs.addClass(i.tabClass),j.panels.addClass(i.panelClass)},p=function(){var b,c=window.location.hash.match(/^[^\?]*/)[0],f=j.matchTab(c).parent();1===f.length?(d=f,i.cycle=!1):(b=j.matchInPanel(c),b.length?(c="#"+b.attr("id"),d=j.matchTab(c).parent()):(d=j.tabs.parent().find(i.defaultTab),0===d.length&&a.error("The specified default tab ('"+i.defaultTab+"') could not be found in the tab set ('"+i.tabs+"') out of "+j.tabs.length+" tabs."))),e=d.children("a").first(),q(f)},q=function(b){var c,f;i.collapsible&&0===b.length&&i.collapsedByDefault?d.addClass(i.collapsedClass).children().addClass(i.collapsedClass):(c=a(d.data("easytabs").panel),f=d.data("easytabs").ajax,!f||i.cache&&d.data("easytabs").cached||(k.trigger("easytabs:ajax:beforeSend",[e,c]),c.load(f,function(a,b,f){d.data("easytabs").cached=!0,k.trigger("easytabs:ajax:complete",[e,c,a,b,f])})),d.data("easytabs").panel.show().addClass(i.panelActiveClass),d.addClass(i.tabActiveClass).children().addClass(i.tabActiveClass)),k.trigger("easytabs:initialised",[e,c])},r=function(){j.tabs.children("a").bind(i.bind_str,function(b){i.cycle=!1,h=!1,j.selectTab(a(this)),b.preventDefault?b.preventDefault():b.returnValue=!1})},s=function(a,b,c,d){if(j.panels.stop(!0,!0),n(k,"easytabs:before",[a,b,i])){var e,l,m,o,p=j.panels.filter(":visible"),q=b.parent(),r=window.location.hash.match(/^[^\?]*/)[0];i.animate&&(e=t(b),l=p.length?u(p):0,m=e-l),g=r,o=function(){k.trigger("easytabs:midTransition",[a,b,i]),i.animate&&"fadeIn"==i.transitionIn&&0>m&&q.animate({height:q.height()+m},f.halfSpeed).css({"min-height":""}),i.updateHash&&!h?window.history.pushState?window.history.pushState(null,null,"#"+b.attr("id")):window.location.hash="#"+b.attr("id"):h=!1,b[f.show](f.speed,i.transitionInEasing,function(){q.css({height:"","min-height":""}),k.trigger("easytabs:after",[a,b,i]),"function"==typeof d&&d()})},!c||i.cache&&a.parent().data("easytabs").cached||(k.trigger("easytabs:ajax:beforeSend",[a,b]),b.load(c,function(c,d,e){a.parent().data("easytabs").cached=!0,k.trigger("easytabs:ajax:complete",[a,b,c,d,e])})),i.animate&&"fadeOut"==i.transitionOut&&(m>0?q.animate({height:q.height()+m},f.halfSpeed):q.css({"min-height":q.height()})),j.tabs.filter("."+i.tabActiveClass).removeClass(i.tabActiveClass).children().removeClass(i.tabActiveClass),j.tabs.filter("."+i.collapsedClass).removeClass(i.collapsedClass).children().removeClass(i.collapsedClass),a.parent().addClass(i.tabActiveClass).children().addClass(i.tabActiveClass),j.panels.filter("."+i.panelActiveClass).removeClass(i.panelActiveClass),b.addClass(i.panelActiveClass),p.length?p[f.hide](f.speed,i.transitionOutEasing,o):b[f.uncollapse](f.speed,i.transitionUncollapseEasing,o)}},t=function(b){if(b.data("easytabs")&&b.data("easytabs").lastHeight)return b.data("easytabs").lastHeight;var c,d,e=b.css("display");try{c=a("<div></div>",{position:"absolute",visibility:"hidden",overflow:"hidden"})}catch(f){c=a("<div></div>",{visibility:"hidden",overflow:"hidden"})}return d=b.wrap(c).css({position:"relative",visibility:"hidden",display:"block"}).outerHeight(),b.unwrap(),b.css({position:b.data("easytabs").position,visibility:b.data("easytabs").visibility,display:e}),b.data("easytabs").lastHeight=d,d},u=function(a){var b=a.outerHeight();return a.data("easytabs")?a.data("easytabs").lastHeight=b:a.data("easytabs",{lastHeight:b}),b},v=function(){"function"==typeof a(window).hashchange?a(window).hashchange(function(){j.selectTabFromHashChange()}):a.address&&"function"==typeof a.address.change&&a.address.change(function(){j.selectTabFromHashChange()})},w=function(){var a;i.cycle&&(a=j.tabs.index(d),setTimeout(function(){j.cycleTabs(a+1)},i.cycle))};j.init()},a.fn.easytabs=function(b){var c=arguments;return this.each(function(){var d=a(this),e=d.data("easytabs");return void 0===e&&(e=new a.easytabs(this,b),d.data("easytabs",e)),e.publicMethods[b]?e.publicMethods[b](Array.prototype.slice.call(c,1)):void 0})}}(jQuery),function(a){var b=function(){var b='<div class="colpick"><div class="colpick_color"><div class="colpick_color_overlay1"><div class="colpick_color_overlay2"><div class="colpick_selector_outer"><div class="colpick_selector_inner"></div></div></div></div></div><div class="colpick_hue"><div class="colpick_hue_arrs"><div class="colpick_hue_larr"></div><div class="colpick_hue_rarr"></div></div></div><div class="colpick_new_color"></div><div class="colpick_current_color"></div><div class="colpick_hex_field"><div class="colpick_field_letter">#</div><input type="text" maxlength="6" size="6" /></div><div class="colpick_rgb_r colpick_field"><div class="colpick_field_letter">R</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_rgb_g colpick_field"><div class="colpick_field_letter">G</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_rgb_b colpick_field"><div class="colpick_field_letter">B</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_h colpick_field"><div class="colpick_field_letter">H</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_s colpick_field"><div class="colpick_field_letter">S</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_b colpick_field"><div class="colpick_field_letter">B</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_submit"></div></div>',c={showEvent:"click",onShow:function(){},onBeforeShow:function(){},onHide:function(){},onChange:function(){},onSubmit:function(){},colorScheme:"light",color:"3289c7",livePreview:!0,flat:!1,layout:"full",submit:1,submitText:"OK",height:156},g=function(b,c){var d=f(b);a(c).data("colpick").fields.eq(1).val(d.r).end().eq(2).val(d.g).end().eq(3).val(d.b).end()},i=function(b,c){a(c).data("colpick").fields.eq(4).val(Math.round(b.h)).end().eq(5).val(Math.round(b.s)).end().eq(6).val(Math.round(b.b)).end()},j=function(b,c){a(c).data("colpick").fields.eq(0).val(h(b))},k=function(b,c){a(c).data("colpick").selector.css("backgroundColor","#"+h({h:b.h,s:100,b:100})),a(c).data("colpick").selectorIndic.css({left:parseInt(a(c).data("colpick").height*b.s/100,10),top:parseInt(a(c).data("colpick").height*(100-b.b)/100,10)})},l=function(b,c){a(c).data("colpick").hue.css("top",parseInt(a(c).data("colpick").height-a(c).data("colpick").height*b.h/360,10))},m=function(b,c){a(c).data("colpick").currentColor.css("backgroundColor","#"+h(b))},n=function(b,c){a(c).data("colpick").newColor.css("backgroundColor","#"+h(b))},o=function(){var b,c=a(this).parent().parent();this.parentNode.className.indexOf("_hex")>0?(c.data("colpick").color=b=d(G(this.value)),g(b,c.get(0)),i(b,c.get(0))):this.parentNode.className.indexOf("_hsb")>0?(c.data("colpick").color=b=E({h:parseInt(c.data("colpick").fields.eq(4).val(),10),s:parseInt(c.data("colpick").fields.eq(5).val(),10),b:parseInt(c.data("colpick").fields.eq(6).val(),10)}),g(b,c.get(0)),j(b,c.get(0))):(c.data("colpick").color=b=e(F({r:parseInt(c.data("colpick").fields.eq(1).val(),10),g:parseInt(c.data("colpick").fields.eq(2).val(),10),b:parseInt(c.data("colpick").fields.eq(3).val(),10)})),j(b,c.get(0)),i(b,c.get(0))),k(b,c.get(0)),l(b,c.get(0)),n(b,c.get(0)),c.data("colpick").onChange.apply(c.parent(),[b,h(b),f(b),c.data("colpick").el,0])},p=function(){a(this).parent().removeClass("colpick_focus")},q=function(){a(this).parent().parent().data("colpick").fields.parent().removeClass("colpick_focus"),a(this).parent().addClass("colpick_focus")},r=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1;var c=a(this).parent().find("input").focus(),d={el:a(this).parent().addClass("colpick_slider"),max:this.parentNode.className.indexOf("_hsb_h")>0?360:this.parentNode.className.indexOf("_hsb")>0?100:255,y:b.pageY,field:c,val:parseInt(c.val(),10),preview:a(this).parent().parent().data("colpick").livePreview};a(document).mouseup(d,t),a(document).mousemove(d,s)},s=function(a){return a.data.field.val(Math.max(0,Math.min(a.data.max,parseInt(a.data.val-a.pageY+a.data.y,10)))),a.data.preview&&o.apply(a.data.field.get(0),[!0]),!1},t=function(b){return o.apply(b.data.field.get(0),[!0]),b.data.el.removeClass("colpick_slider").find("input").focus(),a(document).off("mouseup",t),a(document).off("mousemove",s),!1},u=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1;var c={cal:a(this).parent(),y:a(this).offset().top};a(document).on("mouseup touchend",c,w),a(document).on("mousemove touchmove",c,v);var d="touchstart"==b.type?b.originalEvent.changedTouches[0].pageY:b.pageY;return o.apply(c.cal.data("colpick").fields.eq(4).val(parseInt(360*(c.cal.data("colpick").height-(d-c.y))/c.cal.data("colpick").height,10)).get(0),[c.cal.data("colpick").livePreview]),!1},v=function(a){var b="touchmove"==a.type?a.originalEvent.changedTouches[0].pageY:a.pageY;return o.apply(a.data.cal.data("colpick").fields.eq(4).val(parseInt(360*(a.data.cal.data("colpick").height-Math.max(0,Math.min(a.data.cal.data("colpick").height,b-a.data.y)))/a.data.cal.data("colpick").height,10)).get(0),[a.data.preview]),!1},w=function(b){return g(b.data.cal.data("colpick").color,b.data.cal.get(0)),j(b.data.cal.data("colpick").color,b.data.cal.get(0)),a(document).off("mouseup touchend",w),a(document).off("mousemove touchmove",v),!1},x=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1;var c={cal:a(this).parent(),pos:a(this).offset()};c.preview=c.cal.data("colpick").livePreview,a(document).on("mouseup touchend",c,z),a(document).on("mousemove touchmove",c,y);var d;return"touchstart"==b.type?(pageX=b.originalEvent.changedTouches[0].pageX,d=b.originalEvent.changedTouches[0].pageY):(pageX=b.pageX,d=b.pageY),o.apply(c.cal.data("colpick").fields.eq(6).val(parseInt(100*(c.cal.data("colpick").height-(d-c.pos.top))/c.cal.data("colpick").height,10)).end().eq(5).val(parseInt(100*(pageX-c.pos.left)/c.cal.data("colpick").height,10)).get(0),[c.preview]),!1},y=function(a){var b;return"touchmove"==a.type?(pageX=a.originalEvent.changedTouches[0].pageX,b=a.originalEvent.changedTouches[0].pageY):(pageX=a.pageX,b=a.pageY),o.apply(a.data.cal.data("colpick").fields.eq(6).val(parseInt(100*(a.data.cal.data("colpick").height-Math.max(0,Math.min(a.data.cal.data("colpick").height,b-a.data.pos.top)))/a.data.cal.data("colpick").height,10)).end().eq(5).val(parseInt(100*Math.max(0,Math.min(a.data.cal.data("colpick").height,pageX-a.data.pos.left))/a.data.cal.data("colpick").height,10)).get(0),[a.data.preview]),!1},z=function(b){return g(b.data.cal.data("colpick").color,b.data.cal.get(0)),j(b.data.cal.data("colpick").color,b.data.cal.get(0)),a(document).off("mouseup touchend",z),a(document).off("mousemove touchmove",y),!1},A=function(){var b=a(this).parent(),c=b.data("colpick").color;b.data("colpick").origColor=c,m(c,b.get(0)),b.data("colpick").onSubmit(c,h(c),f(c),b.data("colpick").el)},B=function(b){b.stopPropagation();var c=a("#"+a(this).data("colpickId"));c.data("colpick").onBeforeShow.apply(this,[c.get(0)]);var d=a(this).offset(),e=d.top+this.offsetHeight,f=d.left,g=D(),h=c.width();f+h>g.l+g.w&&(f-=h),c.css({left:f+"px",top:e+"px"}),0!=c.data("colpick").onShow.apply(this,[c.get(0)])&&c.show(),a("html").mousedown({cal:c},C),c.mousedown(function(a){a.stopPropagation()})},C=function(b){0!=b.data.cal.data("colpick").onHide.apply(this,[b.data.cal.get(0)])&&b.data.cal.hide(),a("html").off("mousedown",C)},D=function(){var a="CSS1Compat"==document.compatMode;return{l:window.pageXOffset||(a?document.documentElement.scrollLeft:document.body.scrollLeft),w:window.innerWidth||(a?document.documentElement.clientWidth:document.body.clientWidth)}},E=function(a){return{h:Math.min(360,Math.max(0,a.h)),s:Math.min(100,Math.max(0,a.s)),b:Math.min(100,Math.max(0,a.b))}},F=function(a){return{r:Math.min(255,Math.max(0,a.r)),g:Math.min(255,Math.max(0,a.g)),b:Math.min(255,Math.max(0,a.b))}},G=function(a){var b=6-a.length;if(b>0){for(var c=[],d=0;b>d;d++)c.push("0");c.push(a),a=c.join("")}return a},H=function(){var b=a(this).parent(),c=b.data("colpick").origColor;b.data("colpick").color=c,g(c,b.get(0)),j(c,b.get(0)),i(c,b.get(0)),k(c,b.get(0)),l(c,b.get(0)),n(c,b.get(0))};return{init:function(f){if(f=a.extend({},c,f||{}),"string"==typeof f.color)f.color=d(f.color);else if(void 0!=f.color.r&&void 0!=f.color.g&&void 0!=f.color.b)f.color=e(f.color);else{if(void 0==f.color.h||void 0==f.color.s||void 0==f.color.b)return this;f.color=E(f.color)}return this.each(function(){if(!a(this).data("colpickId")){var c=a.extend({},f);c.origColor=f.color;var d="collorpicker_"+parseInt(1e3*Math.random());a(this).data("colpickId",d);var e=a(b).attr("id",d);e.addClass("colpick_"+c.layout+(c.submit?"":" colpick_"+c.layout+"_ns")),"light"!=c.colorScheme&&e.addClass("colpick_"+c.colorScheme),e.find("div.colpick_submit").html(c.submitText).click(A),c.fields=e.find("input").change(o).blur(p).focus(q),e.find("div.colpick_field_arrs").mousedown(r).end().find("div.colpick_current_color").click(H),c.selector=e.find("div.colpick_color").on("mousedown touchstart",x),c.selectorIndic=c.selector.find("div.colpick_selector_outer"),c.el=this,c.hue=e.find("div.colpick_hue_arrs"),huebar=c.hue.parent();var h=navigator.userAgent.toLowerCase(),s="Microsoft Internet Explorer"===navigator.appName,t=s?parseFloat(h.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,v=s&&10>t,w=["#ff0000","#ff0080","#ff00ff","#8000ff","#0000ff","#0080ff","#00ffff","#00ff80","#00ff00","#80ff00","#ffff00","#ff8000","#ff0000"];if(v){var y,z;for(y=0;11>=y;y++)z=a("<div></div>").attr("style","height:8.333333%; filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr="+w[y]+", endColorstr="+w[y+1]+'); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+w[y]+", endColorstr="+w[y+1]+')";'),huebar.append(z)}else stopList=w.join(","),huebar.attr("style","background:-webkit-linear-gradient(top,"+stopList+"); background: -o-linear-gradient(top,"+stopList+"); background: -ms-linear-gradient(top,"+stopList+"); background:-moz-linear-gradient(top,"+stopList+"); -webkit-linear-gradient(top,"+stopList+"); background:linear-gradient(to bottom,"+stopList+"); ");e.find("div.colpick_hue").on("mousedown touchstart",u),c.newColor=e.find("div.colpick_new_color"),c.currentColor=e.find("div.colpick_current_color"),e.data("colpick",c),g(c.color,e.get(0)),i(c.color,e.get(0)),j(c.color,e.get(0)),l(c.color,e.get(0)),k(c.color,e.get(0)),m(c.color,e.get(0)),n(c.color,e.get(0)),c.flat?(e.appendTo(this).show(),e.css({position:"relative",display:"block"})):(e.appendTo(document.body),a(this).on(c.showEvent,B),e.css({position:"absolute"}))}})},showPicker:function(){return this.each(function(){a(this).data("colpickId")&&B.apply(this)})},hidePicker:function(){return this.each(function(){a(this).data("colpickId")&&a("#"+a(this).data("colpickId")).hide()})},setColor:function(b,c){if(c="undefined"==typeof c?1:c,"string"==typeof b)b=d(b);else if(void 0!=b.r&&void 0!=b.g&&void 0!=b.b)b=e(b);else{if(void 0==b.h||void 0==b.s||void 0==b.b)return this;b=E(b)}return this.each(function(){if(a(this).data("colpickId")){var d=a("#"+a(this).data("colpickId"));d.data("colpick").color=b,d.data("colpick").origColor=b,g(b,d.get(0)),i(b,d.get(0)),j(b,d.get(0)),l(b,d.get(0)),k(b,d.get(0)),n(b,d.get(0)),d.data("colpick").onChange.apply(d.parent(),[b,h(b),f(b),d.data("colpick").el,1]),c&&m(b,d.get(0))}})}}}(),c=function(a){var a=parseInt(a.indexOf("#")>-1?a.substring(1):a,16);return{r:a>>16,g:(65280&a)>>8,b:255&a}},d=function(a){return e(c(a))},e=function(a){var b={h:0,s:0,b:0},c=Math.min(a.r,a.g,a.b),d=Math.max(a.r,a.g,a.b),e=d-c;return b.b=d,b.s=0!=d?255*e/d:0,b.h=0!=b.s?a.r==d?(a.g-a.b)/e:a.g==d?2+(a.b-a.r)/e:4+(a.r-a.g)/e:-1,b.h*=60,b.h<0&&(b.h+=360),b.s*=100/255,b.b*=100/255,b},f=function(a){var b={},c=a.h,d=255*a.s/100,e=255*a.b/100;if(0==d)b.r=b.g=b.b=e;else{var f=e,g=(255-d)*e/255,h=(f-g)*(c%60)/60;360==c&&(c=0),60>c?(b.r=f,b.b=g,b.g=g+h):120>c?(b.g=f,b.b=g,b.r=f-h):180>c?(b.g=f,b.r=g,b.b=g+h):240>c?(b.b=f,b.r=g,b.g=f-h):300>c?(b.b=f,b.g=g,b.r=g+h):360>c?(b.r=f,b.g=g,b.b=f-h):(b.r=0,b.g=0,b.b=0)}return{r:Math.round(b.r),g:Math.round(b.g),b:Math.round(b.b)}},g=function(b){var c=[b.r.toString(16),b.g.toString(16),b.b.toString(16)];return a.each(c,function(a,b){1==b.length&&(c[a]="0"+b)}),c.join("")},h=function(a){return g(f(a))};a.fn.extend({colpick:b.init,colpickHide:b.hidePicker,colpickShow:b.showPicker,colpickSetColor:b.setColor}),a.extend({colpick:{rgbToHex:g,rgbToHsb:e,hsbToHex:h,hsbToRgb:f,hexToHsb:d,hexToRgb:c}})}(jQuery),window.twttr=function(a,b,c){var d,e=a.getElementsByTagName(b)[0],f=window.twttr||{};return a.getElementById(c)?f:(d=a.createElement(b),d.id=c,d.src="https://platform.twitter.com/widgets.js",e.parentNode.insertBefore(d,e),f._e=[],f.ready=function(a){f._e.push(a)},f)}(document,"script","twitter-wjs");
1
+ jQuery(document).ready(function(a){function b(){a.ajax("https://graph.facebook.com/v2.7/?id=http://www.google.com&access_token="+a("#mashsb_settings\\[fb_access_token_new\\]").val()).done(function(b){a("#mashsb_token_notice").html("<strong>Token valid:</strong> Facebook share count for http://google.com: "+b.share.share_count),console.log(b)}).fail(function(b){a("#mashsb_token_notice").html('<span style="color:red;"> <strong>Error:</strong> Access Token Invalid!</span>'),console.log(b)})}function c(a,b,c){if(c){var d=new Date;d.setTime(d.getTime()+24*c*60*60*1e3);var e="; expires="+d.toGMTString()}else var e="";document.cookie=a+"="+b+e+"; path=/"}function d(a){for(var b=a+"=",c=document.cookie.split(";"),d=0;d<c.length;d++){for(var e=c[d];" "==e.charAt(0);)e=e.substring(1,e.length);if(0==e.indexOf(b))return e.substring(b.length,e.length)}return null}function e(){var a=jQuery(".mashsb-tabs.active").find("a").attr("href");c("mashsb_active_tab",a)}function f(){var a=d("mashsb_active_tab");return null==a&&(a="#mashsb_settingsgeneral_header"),a}function g(){var a,b;return a=jQuery(".mashsb.nav-tab-wrapper a.nav-tab-active:nth-child(2)"),b=jQuery(".mashsb.nav-tab-wrapper a.nav-tab-active:nth-child(3)"),a.length>0||b.length>0?void 0:f()+"-nav"}a(".mashsb-color-box").each(function(){a(this).colpick({layout:"hex",submit:0,colorScheme:"light",onChange:function(b,c,d,e,f){a(e).css("border-color","#"+c),f||a(e).val(c)}}).keyup(function(){a(this).colpickSetColor(this.value)}),a(this).colpick({layout:"hex",submit:0,colorScheme:"light",onChange:function(b,c,d,e,f){a(e).css("border-color","#"+c),f||a(e).val(c)}}).keyup(function(){a(this).colpickSetColor(this.value)})}),a("#mashsb_verify_fbtoken").on("click",function(c){c.preventDefault(),console.log("test"),a("#mashsb_settings\\[fb_access_token_new\\]").val()&&b()}),a("#mashsb_fb_auth").click(function(b){b.preventDefault(),winWidth=520,winHeight=350;var c=screen.height/2-winHeight/2,d=screen.width/2-winWidth/2,e=a(this).attr("href");mashsb_fb_auth=window.open(e,"mashsb_fb_auth","top="+c+",left="+d+",toolbar=0,status=0,width="+winWidth+",height="+winHeight+",resizable=yes")}),a("#mashsb_settings\\[responsive_buttons\\]").attr("checked")?a("#mashsb_settings\\[button_width\\]").closest(".row").css("display","none"):a("#mashsb_settings\\[button_width\\]").closest(".row").fadeIn(300).css("display","table-row"),a("#mashsb_settings\\[responsive_buttons\\]").click(function(){a(this).attr("checked")?a("#mashsb_settings\\[button_width\\]").closest(".row").css("display","none"):a("#mashsb_settings\\[button_width\\]").closest(".row").fadeIn(300).css("display","table-row")}),a(".mashsb-chosen-select").chosen({width:"400px"}),a("#mashsb_settings\\[caching_method\\]").change(function(){"refresh_loading"===a("#mashsb_settings\\[caching_method\\]").val()?a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").fadeIn(300).css("display","table-row"):a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").css("display","none")}),"refresh_loading"===a("#mashsb_settings\\[caching_method\\]").val()?a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").fadeIn(300).css("display","table-row"):a("#mashsb_settings\\[mashsharer_cache\\]").closest(".row").css("display","none"),a(".mashsb-tabs").length&&a("#mashsb_container").easytabs({animate:!0,updateHash:!0,defaultTab:g()}),a("#mashsb_container").bind("easytabs:after",function(){0==jQuery(".mashsb.nav-tab-wrapper a.nav-tab-active:nth-child(2)").length&&e()}),a(".mashtab").length&&a(".tabcontent_container").easytabs({animate:!0}),a("#mashsb_network_list").sortable({items:".mashsb_list_item",opacity:.6,cursor:"move",axis:"y",update:function(){var b=a(this).sortable("serialize")+"&action=mashsb_update_order";a.post(ajaxurl,b,function(){})}}),a(".mashsb-helper").click(function(b){b.preventDefault();var c=a(this),d=a(this).next();a(".mashsb-message").not(d).hide();var e=c.position();d.css(d.hasClass("bottom")?{left:e.left-d.width()/2+"px",top:e.top+c.height()+9+"px"}:{left:e.left+c.width()+9+"px",top:e.top+c.height()/2-18+"px"}),d.toggle(),b.stopPropagation()}),a("body").click(function(){a(".mashsb-message").hide()}),a(".mashsb-message").click(function(a){a.stopPropagation()})}),function(a,b,c){function d(a){return a=a||location.href,"#"+a.replace(/^[^#]*#?(.*)#x2F;,"$1")}var e,f="hashchange",g=document,h=a.event.special,i=g.documentMode,j="on"+f in b&&(i===c||i>7);a.fn[f]=function(a){return a?this.bind(f,a):this.trigger(f)},a.fn[f].delay=50,h[f]=a.extend(h[f],{setup:function(){return j?!1:void a(e.start)},teardown:function(){return j?!1:void a(e.stop)}}),e=function(){function e(){var c=d(),g=n(k);c!==k?(m(k=c,g),a(b).trigger(f)):g!==k&&(location.href=location.href.replace(/#.*/,"")+g),h=setTimeout(e,a.fn[f].delay)}var h,i={},k=d(),l=function(a){return a},m=l,n=l;return i.start=function(){h||e()},i.stop=function(){h&&clearTimeout(h),h=c},a.browser.msie&&!j&&function(){var b,c;i.start=function(){b||(c=a.fn[f].src,c=c&&c+d(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){c||m(d()),e()}).attr("src",c||"javascript:0").insertAfter("body")[0].contentWindow,g.onpropertychange=function(){try{"title"===event.propertyName&&(b.document.title=g.title)}catch(a){}})},i.stop=l,n=function(){return d(b.location.href)},m=function(c,d){var e=b.document,h=a.fn[f].domain;c!==d&&(e.title=g.title,e.open(),h&&e.write('<script>document.domain="'+h+'"</script>'),e.close(),b.location.hash=c)}}(),i}()}(jQuery,this),function(a){a.easytabs=function(b,c){var d,e,f,g,h,i,j=this,k=a(b),l={animate:!0,panelActiveClass:"active",tabActiveClass:"active",defaultTab:"li:first-child",animationSpeed:"normal",tabs:"> ul > li",updateHash:!0,cycle:!1,collapsible:!1,collapsedClass:"collapsed",collapsedByDefault:!0,uiTabs:!1,transitionIn:"fadeIn",transitionOut:"fadeOut",transitionInEasing:"swing",transitionOutEasing:"swing",transitionCollapse:"slideUp",transitionUncollapse:"slideDown",transitionCollapseEasing:"swing",transitionUncollapseEasing:"swing",containerClass:"",tabsClass:"",tabClass:"",panelClass:"",cache:!0,event:"click",panelContext:k},m={fast:200,normal:400,slow:600};j.init=function(){j.settings=i=a.extend({},l,c),i.bind_str=i.event+".easytabs",i.uiTabs&&(i.tabActiveClass="ui-tabs-selected",i.containerClass="ui-tabs ui-widget ui-widget-content ui-corner-all",i.tabsClass="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all",i.tabClass="ui-state-default ui-corner-top",i.panelClass="ui-tabs-panel ui-widget-content ui-corner-bottom"),i.collapsible&&void 0!==c.defaultTab&&void 0===c.collpasedByDefault&&(i.collapsedByDefault=!1),"string"==typeof i.animationSpeed&&(i.animationSpeed=m[i.animationSpeed]),a("a.anchor").remove().prependTo("body"),k.data("easytabs",{}),j.setTransitions(),j.getTabs(),o(),p(),r(),v(),w(),k.attr("data-easytabs",!0)},j.setTransitions=function(){f=i.animate?{show:i.transitionIn,hide:i.transitionOut,speed:i.animationSpeed,collapse:i.transitionCollapse,uncollapse:i.transitionUncollapse,halfSpeed:i.animationSpeed/2}:{show:"show",hide:"hide",speed:0,collapse:"hide",uncollapse:"show",halfSpeed:0}},j.getTabs=function(){var b;j.tabs=k.find(i.tabs),j.panels=a(),j.tabs.each(function(){var c=a(this),d=c.children("a"),e=c.children("a").data("target");c.data("easytabs",{}),void 0!==e&&null!==e?c.data("easytabs").ajax=d.attr("href"):e=d.attr("href"),e=e.match(/#([^\?]+)/)[1],b=i.panelContext.find("#"+e),b.length?(b.data("easytabs",{position:b.css("position"),visibility:b.css("visibility")}),b.not(i.panelActiveClass).hide(),j.panels=j.panels.add(b),c.data("easytabs").panel=b):(j.tabs=j.tabs.not(c),"console"in window&&console.warn("Warning: tab without matching panel for selector '#"+e+"' removed from set"))})},j.selectTab=function(a,b){var c=window.location,d=(c.hash.match(/^[^\?]*/)[0],a.parent().data("easytabs").panel),e=a.parent().data("easytabs").ajax;i.collapsible&&!h&&(a.hasClass(i.tabActiveClass)||a.hasClass(i.collapsedClass))?j.toggleTabCollapse(a,d,e,b):a.hasClass(i.tabActiveClass)&&d.hasClass(i.panelActiveClass)?i.cache||s(a,d,e,b):s(a,d,e,b)},j.toggleTabCollapse=function(a,b,c,d){j.panels.stop(!0,!0),n(k,"easytabs:before",[a,b,i])&&(j.tabs.filter("."+i.tabActiveClass).removeClass(i.tabActiveClass).children().removeClass(i.tabActiveClass),a.hasClass(i.collapsedClass)?(!c||i.cache&&a.parent().data("easytabs").cached||(k.trigger("easytabs:ajax:beforeSend",[a,b]),b.load(c,function(c,d,e){a.parent().data("easytabs").cached=!0,k.trigger("easytabs:ajax:complete",[a,b,c,d,e])})),a.parent().removeClass(i.collapsedClass).addClass(i.tabActiveClass).children().removeClass(i.collapsedClass).addClass(i.tabActiveClass),b.addClass(i.panelActiveClass)[f.uncollapse](f.speed,i.transitionUncollapseEasing,function(){k.trigger("easytabs:midTransition",[a,b,i]),"function"==typeof d&&d()})):(a.addClass(i.collapsedClass).parent().addClass(i.collapsedClass),b.removeClass(i.panelActiveClass)[f.collapse](f.speed,i.transitionCollapseEasing,function(){k.trigger("easytabs:midTransition",[a,b,i]),"function"==typeof d&&d()})))},j.matchTab=function(a){return j.tabs.find("[href='"+a+"'],[data-target='"+a+"']").first()},j.matchInPanel=function(a){return a&&j.validId(a)?j.panels.filter(":has("+a+")").first():[]},j.validId=function(a){return a.substr(1).match(/^[A-Za-z][A-Za-z0-9\-_:\.]*#x2F;)},j.selectTabFromHashChange=function(){var a,b=window.location.hash.match(/^[^\?]*/)[0],c=j.matchTab(b);i.updateHash&&(c.length?(h=!0,j.selectTab(c)):(a=j.matchInPanel(b),a.length?(b="#"+a.attr("id"),c=j.matchTab(b),h=!0,j.selectTab(c)):d.hasClass(i.tabActiveClass)||i.cycle||(""===b||j.matchTab(g).length||k.closest(b).length)&&(h=!0,j.selectTab(e))))},j.cycleTabs=function(b){i.cycle&&(b%=j.tabs.length,$tab=a(j.tabs[b]).children("a").first(),h=!0,j.selectTab($tab,function(){setTimeout(function(){j.cycleTabs(b+1)},i.cycle)}))},j.publicMethods={select:function(b){var c;0===(c=j.tabs.filter(b)).length?0===(c=j.tabs.find("a[href='"+b+"']")).length&&0===(c=j.tabs.find("a"+b)).length&&0===(c=j.tabs.find("[data-target='"+b+"']")).length&&0===(c=j.tabs.find("a[href$='"+b+"']")).length&&a.error("Tab '"+b+"' does not exist in tab set"):c=c.children("a").first(),j.selectTab(c)}};var n=function(b,c,d){var e=a.Event(c);return b.trigger(e,d),e.result!==!1},o=function(){k.addClass(i.containerClass),j.tabs.parent().addClass(i.tabsClass),j.tabs.addClass(i.tabClass),j.panels.addClass(i.panelClass)},p=function(){var b,c=window.location.hash.match(/^[^\?]*/)[0],f=j.matchTab(c).parent();1===f.length?(d=f,i.cycle=!1):(b=j.matchInPanel(c),b.length?(c="#"+b.attr("id"),d=j.matchTab(c).parent()):(d=j.tabs.parent().find(i.defaultTab),0===d.length&&a.error("The specified default tab ('"+i.defaultTab+"') could not be found in the tab set ('"+i.tabs+"') out of "+j.tabs.length+" tabs."))),e=d.children("a").first(),q(f)},q=function(b){var c,f;i.collapsible&&0===b.length&&i.collapsedByDefault?d.addClass(i.collapsedClass).children().addClass(i.collapsedClass):(c=a(d.data("easytabs").panel),f=d.data("easytabs").ajax,!f||i.cache&&d.data("easytabs").cached||(k.trigger("easytabs:ajax:beforeSend",[e,c]),c.load(f,function(a,b,f){d.data("easytabs").cached=!0,k.trigger("easytabs:ajax:complete",[e,c,a,b,f])})),d.data("easytabs").panel.show().addClass(i.panelActiveClass),d.addClass(i.tabActiveClass).children().addClass(i.tabActiveClass)),k.trigger("easytabs:initialised",[e,c])},r=function(){j.tabs.children("a").bind(i.bind_str,function(b){i.cycle=!1,h=!1,j.selectTab(a(this)),b.preventDefault?b.preventDefault():b.returnValue=!1})},s=function(a,b,c,d){if(j.panels.stop(!0,!0),n(k,"easytabs:before",[a,b,i])){var e,l,m,o,p=j.panels.filter(":visible"),q=b.parent(),r=window.location.hash.match(/^[^\?]*/)[0];i.animate&&(e=t(b),l=p.length?u(p):0,m=e-l),g=r,o=function(){k.trigger("easytabs:midTransition",[a,b,i]),i.animate&&"fadeIn"==i.transitionIn&&0>m&&q.animate({height:q.height()+m},f.halfSpeed).css({"min-height":""}),i.updateHash&&!h?window.history.pushState?window.history.pushState(null,null,"#"+b.attr("id")):window.location.hash="#"+b.attr("id"):h=!1,b[f.show](f.speed,i.transitionInEasing,function(){q.css({height:"","min-height":""}),k.trigger("easytabs:after",[a,b,i]),"function"==typeof d&&d()})},!c||i.cache&&a.parent().data("easytabs").cached||(k.trigger("easytabs:ajax:beforeSend",[a,b]),b.load(c,function(c,d,e){a.parent().data("easytabs").cached=!0,k.trigger("easytabs:ajax:complete",[a,b,c,d,e])})),i.animate&&"fadeOut"==i.transitionOut&&(m>0?q.animate({height:q.height()+m},f.halfSpeed):q.css({"min-height":q.height()})),j.tabs.filter("."+i.tabActiveClass).removeClass(i.tabActiveClass).children().removeClass(i.tabActiveClass),j.tabs.filter("."+i.collapsedClass).removeClass(i.collapsedClass).children().removeClass(i.collapsedClass),a.parent().addClass(i.tabActiveClass).children().addClass(i.tabActiveClass),j.panels.filter("."+i.panelActiveClass).removeClass(i.panelActiveClass),b.addClass(i.panelActiveClass),p.length?p[f.hide](f.speed,i.transitionOutEasing,o):b[f.uncollapse](f.speed,i.transitionUncollapseEasing,o)}},t=function(b){if(b.data("easytabs")&&b.data("easytabs").lastHeight)return b.data("easytabs").lastHeight;var c,d,e=b.css("display");try{c=a("<div></div>",{position:"absolute",visibility:"hidden",overflow:"hidden"})}catch(f){c=a("<div></div>",{visibility:"hidden",overflow:"hidden"})}return d=b.wrap(c).css({position:"relative",visibility:"hidden",display:"block"}).outerHeight(),b.unwrap(),b.css({position:b.data("easytabs").position,visibility:b.data("easytabs").visibility,display:e}),b.data("easytabs").lastHeight=d,d},u=function(a){var b=a.outerHeight();return a.data("easytabs")?a.data("easytabs").lastHeight=b:a.data("easytabs",{lastHeight:b}),b},v=function(){"function"==typeof a(window).hashchange?a(window).hashchange(function(){j.selectTabFromHashChange()}):a.address&&"function"==typeof a.address.change&&a.address.change(function(){j.selectTabFromHashChange()})},w=function(){var a;i.cycle&&(a=j.tabs.index(d),setTimeout(function(){j.cycleTabs(a+1)},i.cycle))};j.init()},a.fn.easytabs=function(b){var c=arguments;return this.each(function(){var d=a(this),e=d.data("easytabs");return void 0===e&&(e=new a.easytabs(this,b),d.data("easytabs",e)),e.publicMethods[b]?e.publicMethods[b](Array.prototype.slice.call(c,1)):void 0})}}(jQuery),function(a){var b=function(){var b='<div class="colpick"><div class="colpick_color"><div class="colpick_color_overlay1"><div class="colpick_color_overlay2"><div class="colpick_selector_outer"><div class="colpick_selector_inner"></div></div></div></div></div><div class="colpick_hue"><div class="colpick_hue_arrs"><div class="colpick_hue_larr"></div><div class="colpick_hue_rarr"></div></div></div><div class="colpick_new_color"></div><div class="colpick_current_color"></div><div class="colpick_hex_field"><div class="colpick_field_letter">#</div><input type="text" maxlength="6" size="6" /></div><div class="colpick_rgb_r colpick_field"><div class="colpick_field_letter">R</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_rgb_g colpick_field"><div class="colpick_field_letter">G</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_rgb_b colpick_field"><div class="colpick_field_letter">B</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_h colpick_field"><div class="colpick_field_letter">H</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_s colpick_field"><div class="colpick_field_letter">S</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_b colpick_field"><div class="colpick_field_letter">B</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_submit"></div></div>',c={showEvent:"click",onShow:function(){},onBeforeShow:function(){},onHide:function(){},onChange:function(){},onSubmit:function(){},colorScheme:"light",color:"3289c7",livePreview:!0,flat:!1,layout:"full",submit:1,submitText:"OK",height:156},g=function(b,c){var d=f(b);a(c).data("colpick").fields.eq(1).val(d.r).end().eq(2).val(d.g).end().eq(3).val(d.b).end()},i=function(b,c){a(c).data("colpick").fields.eq(4).val(Math.round(b.h)).end().eq(5).val(Math.round(b.s)).end().eq(6).val(Math.round(b.b)).end()},j=function(b,c){a(c).data("colpick").fields.eq(0).val(h(b))},k=function(b,c){a(c).data("colpick").selector.css("backgroundColor","#"+h({h:b.h,s:100,b:100})),a(c).data("colpick").selectorIndic.css({left:parseInt(a(c).data("colpick").height*b.s/100,10),top:parseInt(a(c).data("colpick").height*(100-b.b)/100,10)})},l=function(b,c){a(c).data("colpick").hue.css("top",parseInt(a(c).data("colpick").height-a(c).data("colpick").height*b.h/360,10))},m=function(b,c){a(c).data("colpick").currentColor.css("backgroundColor","#"+h(b))},n=function(b,c){a(c).data("colpick").newColor.css("backgroundColor","#"+h(b))},o=function(){var b,c=a(this).parent().parent();this.parentNode.className.indexOf("_hex")>0?(c.data("colpick").color=b=d(G(this.value)),g(b,c.get(0)),i(b,c.get(0))):this.parentNode.className.indexOf("_hsb")>0?(c.data("colpick").color=b=E({h:parseInt(c.data("colpick").fields.eq(4).val(),10),s:parseInt(c.data("colpick").fields.eq(5).val(),10),b:parseInt(c.data("colpick").fields.eq(6).val(),10)}),g(b,c.get(0)),j(b,c.get(0))):(c.data("colpick").color=b=e(F({r:parseInt(c.data("colpick").fields.eq(1).val(),10),g:parseInt(c.data("colpick").fields.eq(2).val(),10),b:parseInt(c.data("colpick").fields.eq(3).val(),10)})),j(b,c.get(0)),i(b,c.get(0))),k(b,c.get(0)),l(b,c.get(0)),n(b,c.get(0)),c.data("colpick").onChange.apply(c.parent(),[b,h(b),f(b),c.data("colpick").el,0])},p=function(){a(this).parent().removeClass("colpick_focus")},q=function(){a(this).parent().parent().data("colpick").fields.parent().removeClass("colpick_focus"),a(this).parent().addClass("colpick_focus")},r=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1;var c=a(this).parent().find("input").focus(),d={el:a(this).parent().addClass("colpick_slider"),max:this.parentNode.className.indexOf("_hsb_h")>0?360:this.parentNode.className.indexOf("_hsb")>0?100:255,y:b.pageY,field:c,val:parseInt(c.val(),10),preview:a(this).parent().parent().data("colpick").livePreview};a(document).mouseup(d,t),a(document).mousemove(d,s)},s=function(a){return a.data.field.val(Math.max(0,Math.min(a.data.max,parseInt(a.data.val-a.pageY+a.data.y,10)))),a.data.preview&&o.apply(a.data.field.get(0),[!0]),!1},t=function(b){return o.apply(b.data.field.get(0),[!0]),b.data.el.removeClass("colpick_slider").find("input").focus(),a(document).off("mouseup",t),a(document).off("mousemove",s),!1},u=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1;var c={cal:a(this).parent(),y:a(this).offset().top};a(document).on("mouseup touchend",c,w),a(document).on("mousemove touchmove",c,v);var d="touchstart"==b.type?b.originalEvent.changedTouches[0].pageY:b.pageY;return o.apply(c.cal.data("colpick").fields.eq(4).val(parseInt(360*(c.cal.data("colpick").height-(d-c.y))/c.cal.data("colpick").height,10)).get(0),[c.cal.data("colpick").livePreview]),!1},v=function(a){var b="touchmove"==a.type?a.originalEvent.changedTouches[0].pageY:a.pageY;return o.apply(a.data.cal.data("colpick").fields.eq(4).val(parseInt(360*(a.data.cal.data("colpick").height-Math.max(0,Math.min(a.data.cal.data("colpick").height,b-a.data.y)))/a.data.cal.data("colpick").height,10)).get(0),[a.data.preview]),!1},w=function(b){return g(b.data.cal.data("colpick").color,b.data.cal.get(0)),j(b.data.cal.data("colpick").color,b.data.cal.get(0)),a(document).off("mouseup touchend",w),a(document).off("mousemove touchmove",v),!1},x=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1;var c={cal:a(this).parent(),pos:a(this).offset()};c.preview=c.cal.data("colpick").livePreview,a(document).on("mouseup touchend",c,z),a(document).on("mousemove touchmove",c,y);var d;return"touchstart"==b.type?(pageX=b.originalEvent.changedTouches[0].pageX,d=b.originalEvent.changedTouches[0].pageY):(pageX=b.pageX,d=b.pageY),o.apply(c.cal.data("colpick").fields.eq(6).val(parseInt(100*(c.cal.data("colpick").height-(d-c.pos.top))/c.cal.data("colpick").height,10)).end().eq(5).val(parseInt(100*(pageX-c.pos.left)/c.cal.data("colpick").height,10)).get(0),[c.preview]),!1},y=function(a){var b;return"touchmove"==a.type?(pageX=a.originalEvent.changedTouches[0].pageX,b=a.originalEvent.changedTouches[0].pageY):(pageX=a.pageX,b=a.pageY),o.apply(a.data.cal.data("colpick").fields.eq(6).val(parseInt(100*(a.data.cal.data("colpick").height-Math.max(0,Math.min(a.data.cal.data("colpick").height,b-a.data.pos.top)))/a.data.cal.data("colpick").height,10)).end().eq(5).val(parseInt(100*Math.max(0,Math.min(a.data.cal.data("colpick").height,pageX-a.data.pos.left))/a.data.cal.data("colpick").height,10)).get(0),[a.data.preview]),!1},z=function(b){return g(b.data.cal.data("colpick").color,b.data.cal.get(0)),j(b.data.cal.data("colpick").color,b.data.cal.get(0)),a(document).off("mouseup touchend",z),a(document).off("mousemove touchmove",y),!1},A=function(){var b=a(this).parent(),c=b.data("colpick").color;b.data("colpick").origColor=c,m(c,b.get(0)),b.data("colpick").onSubmit(c,h(c),f(c),b.data("colpick").el)},B=function(b){b.stopPropagation();var c=a("#"+a(this).data("colpickId"));c.data("colpick").onBeforeShow.apply(this,[c.get(0)]);var d=a(this).offset(),e=d.top+this.offsetHeight,f=d.left,g=D(),h=c.width();f+h>g.l+g.w&&(f-=h),c.css({left:f+"px",top:e+"px"}),0!=c.data("colpick").onShow.apply(this,[c.get(0)])&&c.show(),a("html").mousedown({cal:c},C),c.mousedown(function(a){a.stopPropagation()})},C=function(b){0!=b.data.cal.data("colpick").onHide.apply(this,[b.data.cal.get(0)])&&b.data.cal.hide(),a("html").off("mousedown",C)},D=function(){var a="CSS1Compat"==document.compatMode;return{l:window.pageXOffset||(a?document.documentElement.scrollLeft:document.body.scrollLeft),w:window.innerWidth||(a?document.documentElement.clientWidth:document.body.clientWidth)}},E=function(a){return{h:Math.min(360,Math.max(0,a.h)),s:Math.min(100,Math.max(0,a.s)),b:Math.min(100,Math.max(0,a.b))}},F=function(a){return{r:Math.min(255,Math.max(0,a.r)),g:Math.min(255,Math.max(0,a.g)),b:Math.min(255,Math.max(0,a.b))}},G=function(a){var b=6-a.length;if(b>0){for(var c=[],d=0;b>d;d++)c.push("0");c.push(a),a=c.join("")}return a},H=function(){var b=a(this).parent(),c=b.data("colpick").origColor;b.data("colpick").color=c,g(c,b.get(0)),j(c,b.get(0)),i(c,b.get(0)),k(c,b.get(0)),l(c,b.get(0)),n(c,b.get(0))};return{init:function(f){if(f=a.extend({},c,f||{}),"string"==typeof f.color)f.color=d(f.color);else if(void 0!=f.color.r&&void 0!=f.color.g&&void 0!=f.color.b)f.color=e(f.color);else{if(void 0==f.color.h||void 0==f.color.s||void 0==f.color.b)return this;f.color=E(f.color)}return this.each(function(){if(!a(this).data("colpickId")){var c=a.extend({},f);c.origColor=f.color;var d="collorpicker_"+parseInt(1e3*Math.random());a(this).data("colpickId",d);var e=a(b).attr("id",d);e.addClass("colpick_"+c.layout+(c.submit?"":" colpick_"+c.layout+"_ns")),"light"!=c.colorScheme&&e.addClass("colpick_"+c.colorScheme),e.find("div.colpick_submit").html(c.submitText).click(A),c.fields=e.find("input").change(o).blur(p).focus(q),e.find("div.colpick_field_arrs").mousedown(r).end().find("div.colpick_current_color").click(H),c.selector=e.find("div.colpick_color").on("mousedown touchstart",x),c.selectorIndic=c.selector.find("div.colpick_selector_outer"),c.el=this,c.hue=e.find("div.colpick_hue_arrs"),huebar=c.hue.parent();var h=navigator.userAgent.toLowerCase(),s="Microsoft Internet Explorer"===navigator.appName,t=s?parseFloat(h.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,v=s&&10>t,w=["#ff0000","#ff0080","#ff00ff","#8000ff","#0000ff","#0080ff","#00ffff","#00ff80","#00ff00","#80ff00","#ffff00","#ff8000","#ff0000"];if(v){var y,z;for(y=0;11>=y;y++)z=a("<div></div>").attr("style","height:8.333333%; filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr="+w[y]+", endColorstr="+w[y+1]+'); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+w[y]+", endColorstr="+w[y+1]+')";'),huebar.append(z)}else stopList=w.join(","),huebar.attr("style","background:-webkit-linear-gradient(top,"+stopList+"); background: -o-linear-gradient(top,"+stopList+"); background: -ms-linear-gradient(top,"+stopList+"); background:-moz-linear-gradient(top,"+stopList+"); -webkit-linear-gradient(top,"+stopList+"); background:linear-gradient(to bottom,"+stopList+"); ");e.find("div.colpick_hue").on("mousedown touchstart",u),c.newColor=e.find("div.colpick_new_color"),c.currentColor=e.find("div.colpick_current_color"),e.data("colpick",c),g(c.color,e.get(0)),i(c.color,e.get(0)),j(c.color,e.get(0)),l(c.color,e.get(0)),k(c.color,e.get(0)),m(c.color,e.get(0)),n(c.color,e.get(0)),c.flat?(e.appendTo(this).show(),e.css({position:"relative",display:"block"})):(e.appendTo(document.body),a(this).on(c.showEvent,B),e.css({position:"absolute"}))}})},showPicker:function(){return this.each(function(){a(this).data("colpickId")&&B.apply(this)})},hidePicker:function(){return this.each(function(){a(this).data("colpickId")&&a("#"+a(this).data("colpickId")).hide()})},setColor:function(b,c){if(c="undefined"==typeof c?1:c,"string"==typeof b)b=d(b);else if(void 0!=b.r&&void 0!=b.g&&void 0!=b.b)b=e(b);else{if(void 0==b.h||void 0==b.s||void 0==b.b)return this;b=E(b)}return this.each(function(){if(a(this).data("colpickId")){var d=a("#"+a(this).data("colpickId"));d.data("colpick").color=b,d.data("colpick").origColor=b,g(b,d.get(0)),i(b,d.get(0)),j(b,d.get(0)),l(b,d.get(0)),k(b,d.get(0)),n(b,d.get(0)),d.data("colpick").onChange.apply(d.parent(),[b,h(b),f(b),d.data("colpick").el,1]),c&&m(b,d.get(0))}})}}}(),c=function(a){var a=parseInt(a.indexOf("#")>-1?a.substring(1):a,16);return{r:a>>16,g:(65280&a)>>8,b:255&a}},d=function(a){return e(c(a))},e=function(a){var b={h:0,s:0,b:0},c=Math.min(a.r,a.g,a.b),d=Math.max(a.r,a.g,a.b),e=d-c;return b.b=d,b.s=0!=d?255*e/d:0,b.h=0!=b.s?a.r==d?(a.g-a.b)/e:a.g==d?2+(a.b-a.r)/e:4+(a.r-a.g)/e:-1,b.h*=60,b.h<0&&(b.h+=360),b.s*=100/255,b.b*=100/255,b},f=function(a){var b={},c=a.h,d=255*a.s/100,e=255*a.b/100;if(0==d)b.r=b.g=b.b=e;else{var f=e,g=(255-d)*e/255,h=(f-g)*(c%60)/60;360==c&&(c=0),60>c?(b.r=f,b.b=g,b.g=g+h):120>c?(b.g=f,b.b=g,b.r=f-h):180>c?(b.g=f,b.r=g,b.b=g+h):240>c?(b.b=f,b.r=g,b.g=f-h):300>c?(b.b=f,b.g=g,b.r=g+h):360>c?(b.r=f,b.g=g,b.b=f-h):(b.r=0,b.g=0,b.b=0)}return{r:Math.round(b.r),g:Math.round(b.g),b:Math.round(b.b)}},g=function(b){var c=[b.r.toString(16),b.g.toString(16),b.b.toString(16)];return a.each(c,function(a,b){1==b.length&&(c[a]="0"+b)}),c.join("")},h=function(a){return g(f(a))};a.fn.extend({colpick:b.init,colpickHide:b.hidePicker,colpickShow:b.showPicker,colpickSetColor:b.setColor}),a.extend({colpick:{rgbToHex:g,rgbToHsb:e,hsbToHex:h,hsbToRgb:f,hexToHsb:d,hexToRgb:c}})}(jQuery),window.twttr=function(a,b,c){var d,e=a.getElementsByTagName(b)[0],f=window.twttr||{};return a.getElementById(c)?f:(d=a.createElement(b),d.id=c,d.src="https://platform.twitter.com/widgets.js",e.parentNode.insertBefore(d,e),f._e=[],f.ready=function(a){f._e.push(a)},f)}(document,"script","twitter-wjs");
includes/admin/settings/display-settings.php CHANGED
@@ -171,7 +171,7 @@ function mashsb_options_page() {
171
</h2>
172
<div id="mashsb_container" class="mashsb_container">
173
<?php getTabHeader( 'mashsb_settings_' . $active_tab, 'mashsb_settings_' . $active_tab ); ?>
174
- <div class="panel-container"> <!-- new //-->
175
<form method="post" action="options.php">
176
<?php
177
settings_fields( 'mashsb_settings' );
@@ -189,7 +189,11 @@ function mashsb_options_page() {
189
</div> <!-- new //-->
190
</div><!-- #tab_container-->
191
<div class="mashsb-sidebar">
192
- <?php echo MASHSB()->template->get_template('sidebar') ?>
193
</div> <!-- #sidebar-->
194
</div><!-- .mashsb_admin -->
195
<?php
171
</h2>
172
<div id="mashsb_container" class="mashsb_container">
173
<?php getTabHeader( 'mashsb_settings_' . $active_tab, 'mashsb_settings_' . $active_tab ); ?>
174
+ <div class="mashsb-panel-container"> <!-- new //-->
175
<form method="post" action="options.php">
176
<?php
177
settings_fields( 'mashsb_settings' );
189
</div> <!-- new //-->
190
</div><!-- #tab_container-->
191
<div class="mashsb-sidebar">
192
+ <?php
193
+ if (false === mashsb_hide_addons()){
194
+ echo MASHSB()->template->get_template('sidebar');
195
+ }
196
+ ?>
197
</div> <!-- #sidebar-->
198
</div><!-- .mashsb_admin -->
199
<?php
includes/admin/settings/register-settings.php CHANGED
@@ -240,9 +240,15 @@ function mashsb_get_registered_settings() {
240
'desc' => sprintf( __( 'Allow Mashshare to track plugin usage? Opt-in to tracking and our newsletter and immediately be emailed a <strong>20%% discount to the Mashshare shop</strong>, valid towards the <a href="%s" target="_blank">purchase of Add-Ons</a>. No sensitive data is tracked.', 'mashsb' ), 'https://www.mashshare.net/add-ons/?utm_source=' . substr( md5( get_bloginfo( 'name' ) ), 0, 10 ) . '&utm_medium=admin&utm_term=setting&utm_campaign=MASHSBUsageTracking' ),
241
'type' => 'checkbox'
242
),
243
"user_roles_for_sharing_options" => array(
244
"id" => "user_roles_for_sharing_options",
245
- "name" => __("Meta Box Permission", "mashsb"),
246
"desc" => __("Select user roles which can only see MashShare Social Sharing Meta Box Options on posts and pages edit screen and User Meta Box on user profiles. If nothing is set meta boxes are shown for all user roles", "mashsb"),
247
"type" => "multiselect",
248
"options" => mashsb_get_user_roles(),
@@ -255,6 +261,13 @@ function mashsb_get_registered_settings() {
255
'desc' => '',
256
'type' => 'header'
257
),
258
array(
259
'id' => 'fb_publisher_url',
260
'name' => __( 'Facebook page url', 'mashsb' ),
@@ -275,13 +288,6 @@ function mashsb_get_registered_settings() {
275
// 'desc' => sprintf( __( 'Required for getting accurate facebook share numbers. Where do i find the facebook APP Secret?', 'mashsb' ), 'https://developers.facebook.com/docs/apps/register' ),
276
// 'type' => 'text',
277
// 'size' => 'medium'
278
- // ),
279
- // array(
280
- // 'id' => 'fb_access_token',
281
- // 'name' => __( 'Facebook Access Token', 'mashsb' ),
282
- // 'desc' => __( 'Required for getting accurate facebook share numbers! Connecting with facebook increases the facebook API call rate limit to 200 calls per hour. This is enough for even huge websites with a lot of traffic as MashShare is caching the calls.', 'mashsb' ),
283
- // 'type' => 'fboauth',
284
- // 'size' => 'medium'
285
// ),
286
'mashsharer_hashtag' => array(
287
'id' => 'mashsharer_hashtag',
@@ -549,10 +555,10 @@ So the MashShare open graph data will be containing the same social meta data th
549
'type' => 'add_content',
550
'options' => array(
551
'box1' => array(
552
- 'id' => 'custom_css',
553
'name' => __( 'General CSS', 'mashsb' ),
554
'desc' => __( 'This css is loaded on all pages where the Mashshare buttons are enabled and it\'s loaded as an additonal inline css on your site', 'mashsb' ),
555
- 'type' => 'textarea',
556
'textarea_rows' => '3',
557
'size' => 15
558
),
@@ -566,14 +572,7 @@ So the MashShare open graph data will be containing the same social meta data th
566
),
567
)
568
),
569
- /* 'custom_css' => array(
570
- 'id' => 'custom_css',
571
- 'name' => __( 'Custom CSS', 'mashsb' ),
572
- 'desc' => __( '<br>Use Mashshare custom styles here', 'mashsb' ),
573
- 'type' => 'textarea',
574
- 'size' => 15
575
-
576
- ), */
577
'location_header' => array(
578
'id' => 'location_header',
579
'name' => '<strong>' . __( 'Position', 'mashsb' ) . '</strong>',
@@ -673,7 +672,7 @@ So the MashShare open graph data will be containing the same social meta data th
673
'delete_cache_objects' => array(
674
'id' => 'delete_cache_objects',
675
'name' => __( 'Attention: Purge DB Cache', 'mashsb' ),
676
- 'desc' => __( '<strong>Note: </strong>Use this with caution only when you think your share counts are totally wrong. <strong>This will delete all your twitter counts. They can not be restored!</strong> Checking this and using the save button will delete all stored mashshare post_meta objects.<br>' . mashsb_delete_cache_objects(), 'mashsb' ),
677
'type' => 'checkbox'
678
),
679
'debug_mode' => array(
@@ -789,7 +788,6 @@ function mashsb_settings_sanitize( $input = array() ) {
789
function mashsb_sanitize_text_field( $input ) {
790
return trim( $input );
791
}
792
-
793
add_filter( 'mashsb_settings_sanitize_text', 'mashsb_sanitize_text_field' );
794
795
/**
@@ -820,8 +818,10 @@ function mashsb_get_settings_tabs() {
820
if( !empty( $settings['licenses'] ) ) {
821
$tabs['licenses'] = __( 'Licenses', 'mashsb' );
822
}
823
$tabs['addons'] = __( 'Get More Add-Ons', 'mashsb' );
824
-
825
//$tabs['misc'] = __( 'Misc', 'mashsb' );
826
827
return apply_filters( 'mashsb_settings_tabs', $tabs );
@@ -1045,6 +1045,30 @@ function mashsb_textarea_callback( $args ) {
1045
1046
echo $html;
1047
}
1048
1049
/**
1050
* Password Callback
@@ -1648,7 +1672,7 @@ function mashsb_add_content_callback( $args ) {
1648
$html .= '<div class="mashtab-container">';
1649
foreach ( $args['options'] as $option => $name ) :
1650
$value = isset( $mashsb_options[$name['id']] ) ? $mashsb_options[$name['id']] : '';
1651
- $textarea = '<textarea class="large-text mashsb-textarea" cols="50" rows="15" id="mashsb_settings[' . $name['id'] . ']" name="mashsb_settings[' . $name['id'] . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
1652
$html .= '<div id="' . $name['id'] . '" style="max-width:500px;"><span style="padding-top:60px;display:block;">' . $name['desc'] . '</span><br>' . $textarea . '</div>';
1653
endforeach;
1654
$html .= '</div>';
@@ -1847,8 +1871,10 @@ function mashsb_get_user_roles() {
1847
return $roles;
1848
}
1849
1850
- /*
1851
- *
1852
*/
1853
function mashsb_fboauth_callback( $args ) {
1854
global $mashsb_options;
@@ -1865,13 +1891,10 @@ function mashsb_fboauth_callback( $args ) {
1865
$expire = '';
1866
}
1867
1868
- $button_label = empty($mashsb_options[$args['id']]) ? __('Get Access Token | Facebook Login', 'mashsb') : __('Renew Access Token', 'mashsb');
1869
-
1870
- $auth_url = 'https://www.mashshare.net/oauth/login.html'; // production
1871
1872
- $html = '<a href="'.$auth_url.'" id="mashsb_fb_auth" class="button button-primary">'.$button_label.'</a>';
1873
- //$html .= empty($mashsb_options[$args['id']]) ? $verify_button : '';
1874
- $html .= '&nbsp; <input type="text" class="medium-text" id="mashsb_settings[' . $args['id'] . ']" name="mashsb_settings[' . $args['id'] . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1875
$html .= '&nbsp; <input type="hidden" class="medium-text" id="mashsb_settings[expire_' . $args['id'] . ']" name="mashsb_settings[expire_' . $args['id'] . ']" value="' . esc_attr( stripslashes( $expire ) ) . '"/>';
1876
$html .= '<div class="token_status">'
1877
. '<span id="mashsb_expire_token_status"></span>'
@@ -1881,27 +1904,89 @@ function mashsb_fboauth_callback( $args ) {
1881
echo $html;
1882
1883
}
1884
1885
- function mashsb_ratelimit_callback(){
1886
- global $mashsb_options;
1887
-
1888
-
1889
- if (!mashsb_is_admin_page() || !isset($mashsb_options['debug_mode']) || !function_exists('curl_init')){
1890
- return '';
1891
}
1892
- $url = 'http://graph.facebook.com/?id=http://www.google.com';
1893
- //$url = 'http://graph.facebook.com/';
1894
-
1895
- $curl_handle=curl_init();
1896
- curl_setopt($curl_handle,CURLOPT_URL,$url);
1897
- curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
1898
- curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
1899
- $buffer = curl_exec($curl_handle);
1900
- curl_close($curl_handle);
1901
- if (empty($buffer)){
1902
- print "Nothing returned from url.<p>";
1903
- }
1904
- else{
1905
- print '<div style="max-width:200px;">'.$buffer . '</div>';
1906
- }
1907
}
240
'desc' => sprintf( __( 'Allow Mashshare to track plugin usage? Opt-in to tracking and our newsletter and immediately be emailed a <strong>20%% discount to the Mashshare shop</strong>, valid towards the <a href="%s" target="_blank">purchase of Add-Ons</a>. No sensitive data is tracked.', 'mashsb' ), 'https://www.mashshare.net/add-ons/?utm_source=' . substr( md5( get_bloginfo( 'name' ) ), 0, 10 ) . '&utm_medium=admin&utm_term=setting&utm_campaign=MASHSBUsageTracking' ),
241
'type' => 'checkbox'
242
),
243
+ 'is_main_query' => array(
244
+ 'id' => 'is_main_query',
245
+ 'name' => __( 'Hide Buttons in Widgets (is_main_query)', 'mashsb' ),
246
+ 'desc' => __( 'If Share Buttons are shown in widgets enable this option. For devs: This uses the is_main_query condition. ' ) ,
247
+ 'type' => 'checkbox'
248
+ ),
249
"user_roles_for_sharing_options" => array(
250
"id" => "user_roles_for_sharing_options",
251
+ "name" => __("Show Share Options Meta Box", "mashsb"),
252
"desc" => __("Select user roles which can only see MashShare Social Sharing Meta Box Options on posts and pages edit screen and User Meta Box on user profiles. If nothing is set meta boxes are shown for all user roles", "mashsb"),
253
"type" => "multiselect",
254
"options" => mashsb_get_user_roles(),
261
'desc' => '',
262
'type' => 'header'
263
),
264
+ array(
265
+ 'id' => 'fb_access_token_new',
266
+ 'name' => __( 'Facebook User Access Token', 'mashsb' ),
267
+ 'desc' => sprintf( __( 'Required if your website hits the facebook rate limit of 200 calls per hour. <a href="%s" target="_blank">Read here</a> how to get the access token.', 'mashsb' ), 'http://docs.mashshare.net/article/132-how-to-create-a-facebook-access-token' ),
268
+ 'type' => 'fboauth',
269
+ 'size' => 'large'
270
+ ),
271
array(
272
'id' => 'fb_publisher_url',
273
'name' => __( 'Facebook page url', 'mashsb' ),
288
// 'desc' => sprintf( __( 'Required for getting accurate facebook share numbers. Where do i find the facebook APP Secret?', 'mashsb' ), 'https://developers.facebook.com/docs/apps/register' ),
289
// 'type' => 'text',
290
// 'size' => 'medium'
291
// ),
292
'mashsharer_hashtag' => array(
293
'id' => 'mashsharer_hashtag',
555
'type' => 'add_content',
556
'options' => array(
557
'box1' => array(
558
+ 'id' => 'textarea',
559
'name' => __( 'General CSS', 'mashsb' ),
560
'desc' => __( 'This css is loaded on all pages where the Mashshare buttons are enabled and it\'s loaded as an additonal inline css on your site', 'mashsb' ),
561
+ 'type' => 'customcss',
562
'textarea_rows' => '3',
563
'size' => 15
564
),
572
),
573
)
574
),
575
+
576
'location_header' => array(
577
'id' => 'location_header',
578
'name' => '<strong>' . __( 'Position', 'mashsb' ) . '</strong>',
672
'delete_cache_objects' => array(
673
'id' => 'delete_cache_objects',
674
'name' => __( 'Attention: Purge DB Cache', 'mashsb' ),
675
+ 'desc' => __( '<strong>Note: </strong>Use this with caution. <strong>This will delete all your twitter counts. They can not be restored!</strong> Activating this option will delete all stored mashshare post_meta objects.<br>' . mashsb_delete_cache_objects(), 'mashsb' ),
676
'type' => 'checkbox'
677
),
678
'debug_mode' => array(
788
function mashsb_sanitize_text_field( $input ) {
789
return trim( $input );
790
}
791
add_filter( 'mashsb_settings_sanitize_text', 'mashsb_sanitize_text_field' );
792
793
/**
818
if( !empty( $settings['licenses'] ) ) {
819
$tabs['licenses'] = __( 'Licenses', 'mashsb' );
820
}
821
+ if (false === mashsb_hide_addons()){
822
$tabs['addons'] = __( 'Get More Add-Ons', 'mashsb' );
823
+ }
824
+
825
//$tabs['misc'] = __( 'Misc', 'mashsb' );
826
827
return apply_filters( 'mashsb_settings_tabs', $tabs );
1045
1046
echo $html;
1047
}
1048
+ /**
1049
+ * Custom CSS Callback
1050
+ *
1051
+ * Renders textarea fields.
1052
+ *
1053
+ * @since 1.0
1054
+ * @param array $args Arguments passed by the setting
1055
+ * @global $mashsb_options Array of all the MASHSB Options
1056
+ * @return void
1057
+ */
1058
+ function mashsb_customcss1_callback( $args ) {
1059
+ global $mashsb_options;
1060
+
1061
+ if( isset( $mashsb_options[$args['id']] ) )
1062
+ $value = $mashsb_options[$args['id']];
1063
+ else
1064
+ $value = isset( $args['std'] ) ? $args['std'] : '';
1065
+
1066
+ $size = ( isset( $args['size'] ) && !is_null( $args['size'] ) ) ? $args['size'] : '40';
1067
+ $html = '<textarea class="large-text mashsb-textarea" cols="50" rows="' . $size . '" id="mashsb_settings[' . $args['id'] . ']" name="mashsb_settings[' . $args['id'] . ']">' . esc_textarea( $value ) . '</textarea>';
1068
+ $html .= '<label class="mashsb_hidden" for="mashsb_settings[' . $args['id'] . ']"> ' . $args['desc'] . '</label>';
1069
+
1070
+ echo $html;
1071
+ }
1072
1073
/**
1074
* Password Callback
1672
$html .= '<div class="mashtab-container">';
1673
foreach ( $args['options'] as $option => $name ) :
1674
$value = isset( $mashsb_options[$name['id']] ) ? $mashsb_options[$name['id']] : '';
1675
+ $textarea = '<textarea class="large-text mashsb-textarea" cols="50" rows="15" id="mashsb_settings[' . $name['id'] . ']" name="mashsb_settings[' . $name['id'] . ']">' . esc_textarea( $value ) . '</textarea>';
1676
$html .= '<div id="' . $name['id'] . '" style="max-width:500px;"><span style="padding-top:60px;display:block;">' . $name['desc'] . '</span><br>' . $textarea . '</div>';
1677
endforeach;
1678
$html .= '</div>';
1871
return $roles;
1872
}
1873
1874
+ /**
1875
+ * Render Button for oauth authentication and access token generation
1876
+ * @global $mashsb_options $mashsb_options
1877
+ * @param type $args
1878
*/
1879
function mashsb_fboauth_callback( $args ) {
1880
global $mashsb_options;
1891
$expire = '';
1892
}
1893
1894
+ $button_label = __('Verify Access Token', 'mashsb');
1895
1896
+ $html = '<a href="#" id="mashsb_verify_fbtoken" class="button button-primary">'.$button_label.'</a>';
1897
+ $html .= '&nbsp; <input type="text" class="medium-text" style="width:333px;" id="mashsb_settings[' . $args['id'] . ']" name="mashsb_settings[' . $args['id'] . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1898
$html .= '&nbsp; <input type="hidden" class="medium-text" id="mashsb_settings[expire_' . $args['id'] . ']" name="mashsb_settings[expire_' . $args['id'] . ']" value="' . esc_attr( stripslashes( $expire ) ) . '"/>';
1899
$html .= '<div class="token_status">'
1900
. '<span id="mashsb_expire_token_status"></span>'
1904
echo $html;
1905
1906
}
1907
+ //function mashsb_fboauth_callback( $args ) {
1908
+ // global $mashsb_options;
1909
+ //
1910
+ // if( isset( $mashsb_options[$args['id']] ) ){
1911
+ // $value = $mashsb_options[$args['id']];
1912
+ // }else{
1913
+ // $value = isset( $args['std'] ) ? $args['std'] : '';
1914
+ // }
1915
+ // // Change expiration date
1916
+ // if( isset( $mashsb_options['expire_'.$args['id']] ) ){
1917
+ // $expire = $mashsb_options['expire_'.$args['id']];
1918
+ // }else{
1919
+ // $expire = '';
1920
+ // }
1921
+ //
1922
+ // $button_label = empty($mashsb_options[$args['id']]) ? __('Get Access Token | Facebook Login', 'mashsb') : __('Renew Access Token', 'mashsb');
1923
+ //
1924
+ // $auth_url = 'https://www.mashshare.net/oauth/login.html'; // production
1925
+ //
1926
+ // $html = '<a href="'.$auth_url.'" id="mashsb_fb_auth" class="button button-primary">'.$button_label.'</a>';
1927
+ // //$html .= empty($mashsb_options[$args['id']]) ? $verify_button : '';
1928
+ // $html .= '&nbsp; <input type="text" class="medium-text" id="mashsb_settings[' . $args['id'] . ']" name="mashsb_settings[' . $args['id'] . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1929
+ // $html .= '&nbsp; <input type="hidden" class="medium-text" id="mashsb_settings[expire_' . $args['id'] . ']" name="mashsb_settings[expire_' . $args['id'] . ']" value="' . esc_attr( stripslashes( $expire ) ) . '"/>';
1930
+ // $html .= '<div class="token_status">'
1931
+ // . '<span id="mashsb_expire_token_status"></span>'
1932
+ // . '<span id="mashsb_token_notice"></span>'
1933
+ // . '</div>';
1934
+ //
1935
+ //echo $html;
1936
+ //
1937
+ //}
1938
1939
+ /**
1940
+ * Test facebook api and check if site is rate limited
1941
+ *
1942
+ * @global array $mashsb_options
1943
+ * @return string
1944
+ */
1945
+ function mashsb_ratelimit_callback() {
1946
+ global $mashsb_options;
1947
+
1948
+
1949
+ if( !mashsb_is_admin_page() || !isset( $mashsb_options['debug_mode'] ) || !function_exists( 'curl_init' ) ) {
1950
+ return '';
1951
+ }
1952
+ // Test open facebook api endpoint
1953
+ $url = 'http://graph.facebook.com/?id=http://www.google.com';
1954
+ $curl_handle = curl_init();
1955
+ curl_setopt( $curl_handle, CURLOPT_URL, $url );
1956
+ curl_setopt( $curl_handle, CURLOPT_CONNECTTIMEOUT, 2 );
1957
+ curl_setopt( $curl_handle, CURLOPT_RETURNTRANSFER, 1 );
1958
+ $buffer = curl_exec( $curl_handle );
1959
+ curl_close( $curl_handle );
1960
+ echo '<div style="min-width:500px;"><strong>Testing facebook public API <br><br>Result for google.com: </strong></div>';
1961
+ if( empty( $buffer ) ) {
1962
+ print "Nothing returned from url.<p>";
1963
+ } else {
1964
+ print '<div style="max-width:200px;">' . $buffer . '</div>';
1965
+ }
1966
+
1967
+ // Test facebook api with access token
1968
+ $url = 'https://graph.facebook.com/v2.7/?id=http://www.google.com&access_token=' . $mashsb_options['fb_access_token_new'];
1969
+ $curl_handle = curl_init();
1970
+ curl_setopt( $curl_handle, CURLOPT_URL, $url );
1971
+ curl_setopt( $curl_handle, CURLOPT_CONNECTTIMEOUT, 2 );
1972
+ curl_setopt( $curl_handle, CURLOPT_RETURNTRANSFER, 1 );
1973
+ $buffer = curl_exec( $curl_handle );
1974
+ curl_close( $curl_handle );
1975
+ echo '<br><strong>Testing facebook API <br>with access token<br><br>Result for google.com: </strong>';
1976
+ if( empty( $buffer ) ) {
1977
+ print "Nothing returned from url.<p>";
1978
+ } else {
1979
+ print '<div style="max-width:200px;">' . $buffer . '</div>';
1980
+ }
1981
+
1982
+
1983
}
1984
+
1985
+ /**
1986
+ * Helper function to determine if adverts and add-on ressources are hidden
1987
+ *
1988
+ * @return bool
1989
+ */
1990
+ function mashsb_hide_addons(){
1991
+ return apply_filters('mashsb_hide_addons', false);
1992
}
includes/header-meta-tags.php CHANGED
@@ -267,7 +267,9 @@ class MASHSB_HEADER_META_TAGS {
267
268
$upload_dir = wp_upload_dir();
269
$img_src = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $this->get_og_image() );
270
- $imagesize = getimagesize( $img_src );
271
if(!empty($imagesize)){
272
return $imagesize;
273
}
@@ -297,9 +299,6 @@ class MASHSB_HEADER_META_TAGS {
297
* @return mixed string | boolean false on failure or no featured image available
298
*/
299
public function get_featured_image() {
300
- // Return post thumbnail
301
- // rawurlencode() Must be tested for images with non lating characters
302
- //return rawurlencode( wp_get_attachment_url( get_post_thumbnail_id( $this->postID ) ) );
303
return wp_get_attachment_url( get_post_thumbnail_id( $this->postID ) );
304
}
305
@@ -323,6 +322,7 @@ class MASHSB_HEADER_META_TAGS {
323
*/
324
public function get_pinterest_image_url() {
325
$image = get_post_meta( $this->postID, 'mashsb_pinterest_image', true );
326
if( $image ) {
327
//return rawurlencode( wp_get_attachment_url( $og_image ) );
328
return wp_get_attachment_url( $image );
267
268
$upload_dir = wp_upload_dir();
269
$img_src = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $this->get_og_image() );
270
+
271
+ $imagesize = is_readable($img_src) ? getimagesize( $img_src ) : '';
272
+
273
if(!empty($imagesize)){
274
return $imagesize;
275
}
299
* @return mixed string | boolean false on failure or no featured image available
300
*/
301
public function get_featured_image() {
302
return wp_get_attachment_url( get_post_thumbnail_id( $this->postID ) );
303
}
304
322
*/
323
public function get_pinterest_image_url() {
324
$image = get_post_meta( $this->postID, 'mashsb_pinterest_image', true );
325
+
326
if( $image ) {
327
//return rawurlencode( wp_get_attachment_url( $og_image ) );
328
return wp_get_attachment_url( $image );
includes/libraries/browser.php CHANGED
@@ -1,1097 +1,1097 @@
1
- <?php
2
- /**
3
- * Modified to remove var
4
- * Chris Christoff on 12/26/2012
5
- * Changes: Changes vars to publics
6
- *
7
- * Modified to work for EDD by
8
- * Chris Christoff on 12/23/2012
9
- * Changes: Removed the browser string return and added spacing. Also removed return HTML formatting.
10
- *
11
- * Modified to add formatted User Agent string for EDD System Info by
12
- * Chris Christoff on 12/23/2012
13
- * Changes: Split user string and add formatting so we can print a nicely
14
- * formatted user agent string on the EDD System Info
15
- *
16
- * File: Browser.php
17
- * Author: Chris Schuld (http://chrisschuld.com/)
18
- * Last Modified: August 20th, 2010
19
- * @version 1.9
20
- * @package PegasusPHP
21
- *
22
- * Copyright (C) 2008-2010 Chris Schuld (chris@chrisschuld.com)
23
- *
24
- * This program is free software; you can redistribute it and/or
25
- * modify it under the terms of the GNU General Public License as
26
- * published by the Free Software Foundation; either version 2 of
27
- * the License, or (at your option) any later version.
28
- *
29
- * This program is distributed in the hope that it will be useful,
30
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
31
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
- * GNU General Public License for more details at:
33
- * http://www.gnu.org/copyleft/gpl.html
34
- *
35
- *
36
- * Typical Usage:
37
- *
38
- * $browser = new Browser();
39
- * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
40
- * echo 'You have FireFox version 2 or greater';
41
- * }
42
- *
43
- * User Agents Sampled from: http://www.useragentstring.com/
44
- *
45
- * This implementation is based on the original work from Gary White
46
- * http://apptools.com/phptools/browser/
47
- *
48
- * UPDATES:
49
- *
50
- * 2010-08-20 (v1.9):
51
- * + Added MSN Explorer Browser (legacy)
52
- * + Added Bing/MSN Robot (Thanks Rob MacDonald)
53
- * + Added the Android Platform (PLATFORM_ANDROID)
54
- * + Fixed issue with Android 1.6/2.2 (Thanks Tom Hirashima)
55
- *
56
- * 2010-04-27 (v1.8):
57
- * + Added iPad Support
58
- *
59
- * 2010-03-07 (v1.7):
60
- * + *MAJOR* Rebuild (preg_match and other "slow" routine removal(s))
61
- * + Almost allof Gary's original code has been replaced
62
- * + Large PHPUNIT testing environment created to validate new releases and additions
63
- * + Added FreeBSD Platform
64
- * + Added OpenBSD Platform
65
- * + Added NetBSD Platform
66
- * + Added SunOS Platform
67
- * + Added OpenSolaris Platform
68
- * + Added support of the Iceweazel Browser
69
- * + Added isChromeFrame() call to check if chromeframe is in use
70
- * + Moved the Opera check in front of the Firefox check due to legacy Opera User Agents
71
- * + Added the __toString() method (Thanks Deano)
72
- *
73
- * 2009-11-15:
74
- * + Updated the checkes for Firefox
75
- * + Added the NOKIA platform
76
- * + Added Checks for the NOKIA brower(s)
77
- *
78
- * 2009-11-08:
79
- * + PHP 5.3 Support
80
- * + Added support for BlackBerry OS and BlackBerry browser
81
- * + Added support for the Opera Mini browser
82
- * + Added additional documenation
83
- * + Added support for isRobot() and isMobile()
84
- * + Added support for Opera version 10
85
- * + Added support for deprecated Netscape Navigator version 9
86
- * + Added support for IceCat
87
- * + Added support for Shiretoko
88
- *
89
- * 2010-04-27 (v1.8):
90
- * + Added iPad Support
91
- *
92
- * 2009-08-18:
93
- * + Updated to support PHP 5.3 - removed all deprecated function calls
94
- * + Updated to remove all double quotes (") -- converted to single quotes (')
95
- *
96
- * 2009-04-27:
97
- * + Updated the IE check to remove a typo and bug (thanks John)
98
- *
99
- * 2009-04-22:
100
- * + Added detection for GoogleBot
101
- * + Added detection for the W3C Validator.
102
- * + Added detection for Yahoo! Slurp
103
- *
104
- * 2009-03-14:
105
- * + Added detection for iPods.
106
- * + Added Platform detection for iPhones
107
- * + Added Platform detection for iPods
108
- *
109
- * 2009-02-16: (Rick Hale)
110
- * + Added version detection for Android phones.
111
- *
112
- * 2008-12-09:
113
- * + Removed unused constant
114
- *
115
- * 2008-11-07:
116
- * + Added Google's Chrome to the detection list
117
- * + Added isBrowser(string) to the list of functions special thanks to
118
- * Daniel 'mavrick' Lang for the function concept (http://mavrick.id.au)
119
- *
120
- *
121
- * Gary White noted: "Since browser detection is so unreliable, I am
122
- * no longer maintaining this script. You are free to use and or
123
- * modify/update it as you want, however the author assumes no
124
- * responsibility for the accuracy of the detected values."
125
- *
126
- * Anyone experienced with Gary's script might be interested in these notes:
127
- *
128
- * Added class constants
129
- * Added detection and version detection for Google's Chrome
130
- * Updated the version detection for Amaya
131
- * Updated the version detection for Firefox
132
- * Updated the version detection for Lynx
133
- * Updated the version detection for WebTV
134
- * Updated the version detection for NetPositive
135
- * Updated the version detection for IE
136
- * Updated the version detection for OmniWeb
137
- * Updated the version detection for iCab
138
- * Updated the version detection for Safari
139
- * Updated Safari to remove mobile devices (iPhone)
140
- * Added detection for iPhone
141
- * Added detection for robots
142
- * Added detection for mobile devices
143
- * Added detection for BlackBerry
144
- * Removed Netscape checks (matches heavily with firefox & mozilla)
145
- *
146
- */
147
-
148
- class Browser {
149
- public $_agent = '';
150
- public $_browser_name = '';
151
- public $_version = '';
152
- public $_platform = '';
153
- public $_os = '';
154
- public $_is_aol = false;
155
- public $_is_mobile = false;
156
- public $_is_robot = false;
157
- public $_aol_version = '';
158
-
159
- public $BROWSER_UNKNOWN = 'unknown';
160
- public $VERSION_UNKNOWN = 'unknown';
161
-
162
- public $BROWSER_OPERA = 'Opera'; // Http://www.opera.com/
163
- public $BROWSER_OPERA_MINI = 'Opera Mini'; // Http://www.opera.com/mini/
164
- public $BROWSER_WEBTV = 'WebTV'; // Http://www.webtv.net/pc/
165
- public $BROWSER_IE = 'Internet Explorer'; // Http://www.microsoft.com/ie/
166
- public $BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // Http://en.wikipedia.org/wiki/Internet_Explorer_Mobile
167
- public $BROWSER_KONQUEROR = 'Konqueror'; // Http://www.konqueror.org/
168
- public $BROWSER_ICAB = 'iCab'; // Http://www.icab.de/
169
- public $BROWSER_OMNIWEB = 'OmniWeb'; // Http://www.omnigroup.com/applications/omniweb/
170
- public $BROWSER_FIREBIRD = 'Firebird'; // Http://www.ibphoenix.com/
171
- public $BROWSER_FIREFOX = 'Firefox'; // Http://www.mozilla.com/en-US/firefox/firefox.html
172
- public $BROWSER_ICEWEASEL = 'Iceweasel'; // Http://www.geticeweasel.org/
173
- public $BROWSER_SHIRETOKO = 'Shiretoko'; // Http://wiki.mozilla.org/Projects/shiretoko
174
- public $BROWSER_MOZILLA = 'Mozilla'; // Http://www.mozilla.com/en-US/
175
- public $BROWSER_AMAYA = 'Amaya'; // Http://www.w3.org/Amaya/
176
- public $BROWSER_LYNX = 'Lynx'; // Http://en.wikipedia.org/wiki/Lynx
177
- public $BROWSER_SAFARI = 'Safari'; // Http://apple.com
178
- public $BROWSER_IPHONE = 'iPhone'; // Http://apple.com
179
- public $BROWSER_IPOD = 'iPod'; // Http://apple.com
180
- public $BROWSER_IPAD = 'iPad'; // Http://apple.com
181
- public $BROWSER_CHROME = 'Chrome'; // Http://www.google.com/chrome
182
- public $BROWSER_ANDROID = 'Android'; // Http://www.android.com/
183
- public $BROWSER_GOOGLEBOT = 'GoogleBot'; // Http://en.wikipedia.org/wiki/Googlebot
184
- public $BROWSER_SLURP = 'Yahoo! Slurp'; // Http://en.wikipedia.org/wiki/Yahoo!_Slurp
185
- public $BROWSER_W3CVALIDATOR = 'W3C Validator'; // Http://validator.w3.org/
186
- public $BROWSER_BLACKBERRY = 'BlackBerry'; // Http://www.blackberry.com/
187
- public $BROWSER_ICECAT = 'IceCat'; // Http://en.wikipedia.org/wiki/GNU_IceCat
188
- public $BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // Http://en.wikipedia.org/wiki/Web_Browser_for_S60
189
- public $BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform
190
- public $BROWSER_MSN = 'MSN Browser'; // Http://explorer.msn.com/
191
- public $BROWSER_MSNBOT = 'MSN Bot'; // Http://search.msn.com/msnbot.htm
192
- // Http://en.wikipedia.org/wiki/Msnbot (used for Bing as well)
193
-
194
- public $BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // Http://browser.netscape.com/ (DEPRECATED)
195
- public $BROWSER_GALEON = 'Galeon'; // Http://galeon.sourceforge.net/ (DEPRECATED)
196
- public $BROWSER_NETPOSITIVE = 'NetPositive'; // Http://en.wikipedia.org/wiki/NetPositive (DEPRECATED)
197
- public $BROWSER_PHOENIX = 'Phoenix'; // Http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED)
198
-
199
- public $PLATFORM_UNKNOWN = 'unknown';
200
- public $PLATFORM_WINDOWS = 'Windows';
201
- public $PLATFORM_WINDOWS_CE = 'Windows CE';
202
- public $PLATFORM_APPLE = 'Apple';
203
- public $PLATFORM_LINUX = 'Linux';
204
- public $PLATFORM_OS2 = 'OS/2';
205
- public $PLATFORM_BEOS = 'BeOS';
206
- public $PLATFORM_IPHONE = 'iPhone';
207
- public $PLATFORM_IPOD = 'iPod';
208
- public $PLATFORM_IPAD = 'iPad';
209
- public $PLATFORM_BLACKBERRY = 'BlackBerry';
210
- public $PLATFORM_NOKIA = 'Nokia';
211
- public $PLATFORM_FREEBSD = 'FreeBSD';
212
- public $PLATFORM_OPENBSD = 'OpenBSD';
213
- public $PLATFORM_NETBSD = 'NetBSD';
214
- public $PLATFORM_SUNOS = 'SunOS';
215
- public $PLATFORM_OPENSOLARIS = 'OpenSolaris';
216
- public $PLATFORM_ANDROID = 'Android';
217
-
218
- public $OPERATING_SYSTEM_UNKNOWN = 'unknown';
219
-
220
- // PHP 7 compatible constructor
221
- public function __construct($useragent="") {
222
- $this->reset();
223
- if( $useragent != "" ) {
224
- $this->setUserAgent($useragent);
225
- }
226
- else {
227
- $this->determine();
228
- }
229
- }
230
- // PHP 4 compatible constructor
231
- public function Browser(){
232
- self::__construct();
233
- }
234
-
235
- // function Browser($useragent="") {
236
- // $this->reset();
237
- // if( $useragent != "" ) {
238
- // $this->setUserAgent($useragent);
239
- // }
240
- // else {
241
- // $this->determine();
242
- // }
243
- // }
244
-
245
- /**
246
- * Reset all properties
247
- */
248
- function reset() {
249
- $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
250
- $this->_browser_name = $this->BROWSER_UNKNOWN;
251
- $this->_version = $this->VERSION_UNKNOWN;
252
- $this->_platform = $this->PLATFORM_UNKNOWN;
253
- $this->_os = $this->OPERATING_SYSTEM_UNKNOWN;
254
- $this->_is_aol = false;
255
- $this->_is_mobile = false;
256
- $this->_is_robot = false;
257
- $this->_aol_version = $this->VERSION_UNKNOWN;
258
- }
259
-
260
- /**
261
- * Check to see if the specific browser is valid
262
- * @param string $browserName
263
- * @return True if the browser is the specified browser
264
- */
265
- function isBrowser($browserName) { return( 0 == strcasecmp($this->_browser_name, trim($browserName))); }
266
-
267
- /**
268
- * The name of the browser. All return types are from the class contants
269
- * @return string Name of the browser
270
- */
271
- function getBrowser() { return $this->_browser_name; }
272
- /**
273
- * Set the name of the browser
274
- * @param $browser The name of the Browser
275
- */
276
- function setBrowser($browser) { return $this->_browser_name = $browser; }
277
- /**
278
- * The name of the platform. All return types are from the class contants
279
- * @return string Name of the browser
280
- */
281
- function getPlatform() { return $this->_platform; }
282
- /**
283
- * Set the name of the platform
284
- * @param $platform The name of the Platform
285
- */
286
- function setPlatform($platform) { return $this->_platform = $platform; }
287
- /**
288
- * The version of the browser.
289
- * @return string Version of the browser (will only contain alpha-numeric characters and a period)
290
- */
291
- function getVersion() { return $this->_version; }
292
- /**
293
- * Set the version of the browser
294
- * @param $version The version of the Browser
295
- */
296
- function setVersion($version) { $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/','',$version); }
297
- /**
298
- * The version of AOL.
299
- * @return string Version of AOL (will only contain alpha-numeric characters and a period)
300
- */
301
- function getAolVersion() { return $this->_aol_version; }
302
- /**
303
- * Set the version of AOL
304
- * @param $version The version of AOL
305
- */
306
- function setAolVersion($version) { $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/','',$version); }
307
- /**
308
- * Is the browser from AOL?
309
- * @return boolean True if the browser is from AOL otherwise false
310
- */
311
- function isAol() { return $this->_is_aol; }
312
- /**
313
- * Is the browser from a mobile device?
314
- * @return boolean True if the browser is from a mobile device otherwise false
315
- */
316
- function isMobile() { return $this->_is_mobile; }
317
- /**
318
- * Is the browser from a robot (ex Slurp,GoogleBot)?
319
- * @return boolean True if the browser is from a robot otherwise false
320
- */
321
- function isRobot() { return $this->_is_robot; }
322
- /**
323
- * Set the browser to be from AOL
324
- * @param $isAol
325
- */
326
- function setAol($isAol) { $this->_is_aol = $isAol; }
327
- /**
328
- * Set the Browser to be mobile
329
- * @param boolean $value is the browser a mobile brower or not
330
- */
331
- function setMobile($value=true) { $this->_is_mobile = $value; }
332
- /**
333
- * Set the Browser to be a robot
334
- * @param boolean $value is the browser a robot or not
335
- */
336
- function setRobot($value=true) { $this->_is_robot = $value; }
337
- /**
338
- * Get the user agent value in use to determine the browser
339
- * @return string The user agent from the HTTP header
340
- */
341
- function getUserAgent() { return $this->_agent; }
342
- /**
343
- * Set the user agent value (the construction will use the HTTP header value - this will overwrite it)
344
- * @param $agent_string The value for the User Agent
345
- */
346
- function setUserAgent($agent_string) {
347
- $this->reset();
348
- $this->_agent = $agent_string;
349
- $this->determine();
350
- }
351
- /**
352
- * Used to determine if the browser is actually "chromeframe"
353
- * @since 1.7
354
- * @return boolean True if the browser is using chromeframe
355
- */
356
- function isChromeFrame() {
357
- return( strpos($this->_agent,"chromeframe") !== false );
358
- }
359
- /**
360
- * Returns a formatted string with a summary of the details of the browser.
361
- * @return string formatted string with a summary of the browser
362
- */
363
- function __toString() {
364
- $text1 = $this->getUserAgent(); //grabs the UA (user agent) string
365
- $UAline1 = substr($text1, 0, 32); //the first line we print should only be the first 32 characters of the UA string
366
- $text2 = $this->getUserAgent();//now we grab it again and save it to a string
367
- $towrapUA = str_replace($UAline1, '', $text2);//the rest of the printoff (other than first line) is equivolent
368
- // To the whole string minus the part we printed off. IE
369
- // User Agent: thefirst32charactersfromUAline1
370
- // the rest of it is now stored in
371
- // $text2 to be printed off
372
- // But we need to add spaces before each line that is split other than line 1
373
- $space = '';
374
- for($i = 0; $i < 25; $i++) {
375
- $space .= ' ';
376
- }
377
- // Now we split the remaining string of UA ($text2) into lines that are prefixed by spaces for formatting
378
- $wordwrapped = chunk_split($towrapUA, 32, "\n $space");
379
- return "Platform: {$this->getPlatform()} \n".
380
- "Browser Name: {$this->getBrowser()} \n" .
381
- "Browser Version: {$this->getVersion()} \n" .
382
- "User Agent String: $UAline1 \n\t\t\t " .
383
- "$wordwrapped";
384
- }
385
- /**
386
- * Protected routine to calculate and determine what the browser is in use (including platform)
387
- */
388
- function determine() {
389
- $this->checkPlatform();
390
- $this->checkBrowsers();
391
- $this->checkForAol();
392
- }
393
- /**
394
- * Protected routine to determine the browser type
395
- * @return boolean True if the browser was detected otherwise false
396
- */
397
- function checkBrowsers() {
398
- return (
399
- // Well-known, well-used
400
- // Special Notes:
401
- // (1) Opera must be checked before FireFox due to the odd
402
- // user agents used in some older versions of Opera
403
- // (2) WebTV is strapped onto Internet Explorer so we must
404
- // check for WebTV before IE
405
- // (3) (deprecated) Galeon is based on Firefox and needs to be
406
- // tested before Firefox is tested
407
- // (4) OmniWeb is based on Safari so OmniWeb check must occur
408
- // before Safari
409
- // (5) Netscape 9+ is based on Firefox so Netscape checks
410
- // before FireFox are necessary
411
- $this->checkBrowserWebTv() ||
412
- $this->checkBrowserInternetExplorer() ||
413
- $this->checkBrowserOpera() ||
414
- $this->checkBrowserGaleon() ||
415
- $this->checkBrowserNetscapeNavigator9Plus() ||
416
- $this->checkBrowserFirefox() ||
417
- $this->checkBrowserChrome() ||
418
- $this->checkBrowserOmniWeb() ||
419
-
420
- // Common mobile
421
- $this->checkBrowserAndroid() ||
422
- $this->checkBrowseriPad() ||
423
- $this->checkBrowseriPod() ||
424
- $this->checkBrowseriPhone() ||
425
- $this->checkBrowserBlackBerry() ||
426
- $this->checkBrowserNokia() ||
427
-
428
- // Common bots
429
- $this->checkBrowserGoogleBot() ||
430
- $this->checkBrowserMSNBot() ||
431
- $this->checkBrowserSlurp() ||
432
-
433
- // WebKit base check (post mobile and others)
434
- $this->checkBrowserSafari() ||
435
-
436
- // Everyone else
437
- $this->checkBrowserNetPositive() ||
438
- $this->checkBrowserFirebird() ||
439
- $this->checkBrowserKonqueror() ||
440
- $this->checkBrowserIcab() ||
441
- $this->checkBrowserPhoenix() ||
442
- $this->checkBrowserAmaya() ||
443
- $this->checkBrowserLynx() ||
444
-
445
- $this->checkBrowserShiretoko() ||
446
- $this->checkBrowserIceCat() ||
447
- $this->checkBrowserW3CValidator() ||
448
- $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */
449
- );
450
- }
451
-
452
- /**
453
- * Determine if the user is using a BlackBerry (last updated 1.7)
454
- * @return boolean True if the browser is the BlackBerry browser otherwise false
455
- */
456
- function checkBrowserBlackBerry() {
457
- if( stripos($this->_agent,'blackberry') !== false ) {
458
- $aresult = explode("/",stristr($this->_agent,"BlackBerry"));
459
- $aversion = explode(' ',$aresult[1]);
460
- $this->setVersion($aversion[0]);
461
- $this->_browser_name = $this->BROWSER_BLACKBERRY;
462
- $this->setMobile(true);
463
- return true;
464
- }
465
- return false;
466
- }
467
-
468
- /**
469
- * Determine if the user is using an AOL User Agent (last updated 1.7)
470
- * @return boolean True if the browser is from AOL otherwise false
471
- */
472
- function checkForAol() {
473
- $this->setAol(false);
474
- $this->setAolVersion($this->VERSION_UNKNOWN);
475
-
476
- if( stripos($this->_agent,'aol') !== false ) {
477
- $aversion = explode(' ',stristr($this->_agent, 'AOL'));
478
- $this->setAol(true);
479
- $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1]));
480
- return true;
481
- }
482
- return false;
483
- }
484
-
485
- /**
486
- * Determine if the browser is the GoogleBot or not (last updated 1.7)
487
- * @return boolean True if the browser is the GoogletBot otherwise false
488
- */
489
- function checkBrowserGoogleBot() {
490
- if( stripos($this->_agent,'googlebot') !== false ) {
491
- $aresult = explode('/',stristr($this->_agent,'googlebot'));
492
- $aversion = explode(' ',$aresult[1]);
493
- $this->setVersion(str_replace(';','',$aversion[0]));
494
- $this->_browser_name = $this->BROWSER_GOOGLEBOT;
495
- $this->setRobot(true);
496
- return true;
497
- }
498
- return false;
499
- }
500
-
501
- /**
502
- * Determine if the browser is the MSNBot or not (last updated 1.9)
503
- * @return boolean True if the browser is the MSNBot otherwise false
504
- */
505
- function checkBrowserMSNBot() {
506
- if( stripos($this->_agent,"msnbot") !== false ) {
507
- $aresult = explode("/",stristr($this->_agent,"msnbot"));
508
- $aversion = explode(" ",$aresult[1]);
509
- $this->setVersion(str_replace(";","",$aversion[0]));
510
- $this->_browser_name = $this->BROWSER_MSNBOT;
511
- $this->setRobot(true);
512
- return true;
513
- }
514
- return false;
515
- }
516
-
517
- /**
518
- * Determine if the browser is the W3C Validator or not (last updated 1.7)
519
- * @return boolean True if the browser is the W3C Validator otherwise false
520
- */
521
- function checkBrowserW3CValidator() {
522
- if( stripos($this->_agent,'W3C-checklink') !== false ) {
523
- $aresult = explode('/',stristr($this->_agent,'W3C-checklink'));
524
- $aversion = explode(' ',$aresult[1]);
525
- $this->setVersion($aversion[0]);
526
- $this->_browser_name = $this->BROWSER_W3CVALIDATOR;
527
- return true;
528
- }
529
- else if( stripos($this->_agent,'W3C_Validator') !== false ) {
530
- // Some of the Validator versions do not delineate w/ a slash - add it back in
531
- $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent);
532
- $aresult = explode('/',stristr($ua,'W3C_Validator'));
533
- $aversion = explode(' ',$aresult[1]);
534
- $this->setVersion($aversion[0]);
535
- $this->_browser_name = $this->BROWSER_W3CVALIDATOR;
536
- return true;
537
- }
538
- return false;
539
- }
540
-
541
- /**
542
- * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7)
543
- * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false
544
- */
545
- function checkBrowserSlurp() {
546
- if( stripos($this->_agent,'slurp') !== false ) {
547
- $aresult = explode('/',stristr($this->_agent,'Slurp'));
548
- $aversion = explode(' ',$aresult[1]);
549
- $this->setVersion($aversion[0]);
550
- $this->_browser_name = $this->BROWSER_SLURP;
551
- $this->setRobot(true);
552
- $this->setMobile(false);
553
- return true;
554
- }
555
- return false;
556
- }
557
-
558
- /**
559
- * Determine if the browser is Internet Explorer or not (last updated 1.7)
560
- * @return boolean True if the browser is Internet Explorer otherwise false
561
- */
562
- function checkBrowserInternetExplorer() {
563
-
564
- // Test for v1 - v1.5 IE
565
- if( stripos($this->_agent,'microsoft internet explorer') !== false ) {
566
- $this->setBrowser($this->BROWSER_IE);
567
- $this->setVersion('1.0');
568
- $aresult = stristr($this->_agent, '/');
569
- if( preg_match('/308|425|426|474|0b1/i', $aresult) ) {
570
- $this->setVersion('1.5');
571
- }
572
- return true;
573
- }
574
- // Test for versions > 1.5
575
- else if( stripos($this->_agent,'msie') !== false && stripos($this->_agent,'opera') === false ) {
576
- // See if the browser is the odd MSN Explorer
577
- if( stripos($this->_agent,'msnb') !== false ) {
578
- $aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'MSN'));
579
- $this->setBrowser( $this->BROWSER_MSN );
580
- $this->setVersion(str_replace(array('(',')',';'),'',$aresult[1]));
581
- return true;
582
- }
583
- $aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'msie'));
584
- $this->setBrowser( $this->BROWSER_IE );
585
- $this->setVersion(str_replace(array('(',')',';'),'',$aresult[1]));
586
- return true;
587
- }
588
- // Test for Pocket IE
589
- else if( stripos($this->_agent,'mspie') !== false || stripos($this->_agent,'pocket') !== false ) {
590
- $aresult = explode(' ',stristr($this->_agent,'mspie'));
591
- $this->setPlatform( $this->PLATFORM_WINDOWS_CE );
592
- $this->setBrowser( $this->BROWSER_POCKET_IE );
593
- $this->setMobile(true);
594
-
595
- if( stripos($this->_agent,'mspie') !== false ) {
596
- $this->setVersion($aresult[1]);
597
- }
598
- else {
599
- $aversion = explode('/',$this->_agent);
600
- $this->setVersion($aversion[1]);
601
- }
602
- return true;
603
- }
604
- return false;
605
- }
606
-
607
- /**
608
- * Determine if the browser is Opera or not (last updated 1.7)
609
- * @return boolean True if the browser is Opera otherwise false
610
- */
611
- function checkBrowserOpera() {
612
- if( stripos($this->_agent,'opera mini') !== false ) {
613
- $resultant = stristr($this->_agent, 'opera mini');
614
- if( preg_match('/\//',$resultant) ) {
615
- $aresult = explode('/',$resultant);
616
- $aversion = explode(' ',$aresult[1]);
617
- $this->setVersion($aversion[0]);
618
- }
619
- else {
620
- $aversion = explode(' ',stristr($resultant,'opera mini'));
621
- $this->setVersion($aversion[1]);
622
- }
623
- $this->_browser_name = $this->BROWSER_OPERA_MINI;
624
- $this->setMobile(true);
625
- return true;
626
- }
627
- else if( stripos($this->_agent,'opera') !== false ) {
628
- $resultant = stristr($this->_agent, 'opera');
629
- if( preg_match('/Version\/(10.*)#x2F;',$resultant,$matches) ) {
630
- $this->setVersion($matches[1]);
631
- }
632
- else if( preg_match('/\//',$resultant) ) {
633
- $aresult = explode('/',str_replace("("," ",$resultant));
634
- $aversion = explode(' ',$aresult[1]);
635
- $this->setVersion($aversion[0]);
636
- }
637
- else {
638
- $aversion = explode(' ',stristr($resultant,'opera'));
639
- $this->setVersion(isset($aversion[1])?$aversion[1]:"");
640
- }
641
- $this->_browser_name = $this->BROWSER_OPERA;
642
- return true;
643
- }
644
- return false;
645
- }
646
-
647
- /**
648
- * Determine if the browser is Chrome or not (last updated 1.7)
649
- * @return boolean True if the browser is Chrome otherwise false
650
- */
651
- function checkBrowserChrome() {
652
- if( stripos($this->_agent,'Chrome') !== false ) {
653
- $aresult = explode('/',stristr($this->_agent,'Chrome'));
654
- $aversion = explode(' ',$aresult[1]);
655
- $this->setVersion($aversion[0]);
656
- $this->setBrowser($this->BROWSER_CHROME);
657
- return true;
658
- }
659
- return false;
660
- }
661
-
662
-
663
- /**
664
- * Determine if the browser is WebTv or not (last updated 1.7)
665
- * @return boolean True if the browser is WebTv otherwise false
666
- */
667
- function checkBrowserWebTv() {
668
- if( stripos($this->_agent,'webtv') !== false ) {
669
- $aresult = explode('/',stristr($this->_agent,'webtv'));
670
- $aversion = explode(' ',$aresult[1]);
671
- $this->setVersion($aversion[0]);
672
- $this->setBrowser($this->BROWSER_WEBTV);
673
- return true;
674
- }
675
- return false;
676
- }
677
-
678
- /**
679
- * Determine if the browser is NetPositive or not (last updated 1.7)
680
- * @return boolean True if the browser is NetPositive otherwise false
681
- */
682
- function checkBrowserNetPositive() {
683
- if( stripos($this->_agent,'NetPositive') !== false ) {
684
- $aresult = explode('/',stristr($this->_agent,'NetPositive'));
685
- $aversion = explode(' ',$aresult[1]);
686
- $this->setVersion(str_replace(array('(',')',';'),'',$aversion[0]));
687
- $this->setBrowser($this->BROWSER_NETPOSITIVE);
688
- return true;
689
- }
690
- return false;
691
- }
692
-
693
- /**
694
- * Determine if the browser is Galeon or not (last updated 1.7)
695
- * @return boolean True if the browser is Galeon otherwise false
696
- */
697
- function checkBrowserGaleon() {
698
- if( stripos($this->_agent,'galeon') !== false ) {
699
- $aresult = explode(' ',stristr($this->_agent,'galeon'));
700
- $aversion = explode('/',$aresult[0]);
701
- $this->setVersion($aversion[1]);
702
- $this->setBrowser($this->BROWSER_GALEON);
703
- return true;
704
- }
705
- return false;
706
- }
707
-
708
- /**
709
- * Determine if the browser is Konqueror or not (last updated 1.7)
710
- * @return boolean True if the browser is Konqueror otherwise false
711
- */
712
- function checkBrowserKonqueror() {
713
- if( stripos($this->_agent,'Konqueror') !== false ) {
714
- $aresult = explode(' ',stristr($this->_agent,'Konqueror'));
715
- $aversion = explode('/',$aresult[0]);
716
- $this->setVersion($aversion[1]);
717
- $this->setBrowser($this->BROWSER_KONQUEROR);
718
- return true;
719
- }
720
- return false;
721
- }
722
-
723
- /**
724
- * Determine if the browser is iCab or not (last updated 1.7)
725
- * @return boolean True if the browser is iCab otherwise false
726
- */
727
- function checkBrowserIcab() {
728
- if( stripos($this->_agent,'icab') !== false ) {
729
- $aversion = explode(' ',stristr(str_replace('/',' ',$this->_agent),'icab'));
730
- $this->setVersion($aversion[1]);
731
- $this->setBrowser($this->BROWSER_ICAB);
732
- return true;
733
- }
734
- return false;
735
- }
736
-
737
- /**
738
- * Determine if the browser is OmniWeb or not (last updated 1.7)
739
- * @return boolean True if the browser is OmniWeb otherwise false
740
- */
741
- function checkBrowserOmniWeb() {
742
- if( stripos($this->_agent,'omniweb') !== false ) {
743
- $aresult = explode('/',stristr($this->_agent,'omniweb'));
744
- $aversion = explode(' ',isset($aresult[1])?$aresult[1]:"");
745
- $this->setVersion($aversion[0]);
746
- $this->setBrowser($this->BROWSER_OMNIWEB);
747
- return true;
748
- }
749
- return false;
750
- }
751
-
752
- /**
753
- * Determine if the browser is Phoenix or not (last updated 1.7)
754
- * @return boolean True if the browser is Phoenix otherwise false
755
- */
756
- function checkBrowserPhoenix() {
757
- if( stripos($this->_agent,'Phoenix') !== false ) {
758
- $aversion = explode('/',stristr($this->_agent,'Phoenix'));
759
- $this->setVersion($aversion[1]);
760
- $this->setBrowser($this->BROWSER_PHOENIX);
761
- return true;
762
- }
763
- return false;
764
- }
765
-
766
- /**
767
- * Determine if the browser is Firebird or not (last updated 1.7)
768
- * @return boolean True if the browser is Firebird otherwise false
769
- */
770
- function checkBrowserFirebird() {
771
- if( stripos($this->_agent,'Firebird') !== false ) {
772
- $aversion = explode('/',stristr($this->_agent,'Firebird'));
773
- $this->setVersion($aversion[1]);
774
- $this->setBrowser($this->BROWSER_FIREBIRD);
775
- return true;
776
- }
777
- return false;
778
- }
779
-
780
- /**
781
- * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7)
782
- * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008)
783
- * @return boolean True if the browser is Netscape Navigator 9+ otherwise false
784
- */
785
- function checkBrowserNetscapeNavigator9Plus() {
786
- if( stripos($this->_agent,'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i',$this->_agent,$matches) ) {
787
- $this->setVersion($matches[1]);
788
- $this->setBrowser($this->BROWSER_NETSCAPE_NAVIGATOR);
789
- return true;
790
- }
791
- else if( stripos($this->_agent,'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i',$this->_agent,$matches) ) {
792
- $this->setVersion($matches[1]);
793
- $this->setBrowser($this->BROWSER_NETSCAPE_NAVIGATOR);
794
- return true;
795
- }
796
- return false;
797
- }
798
-
799
- /**
800
- * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7)
801
- * @return boolean True if the browser is Shiretoko otherwise false
802
- */
803
- function checkBrowserShiretoko() {
804
- if( stripos($this->_agent,'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i',$this->_agent,$matches) ) {
805
- $this->setVersion($matches[1]);
806
- $this->setBrowser($this->BROWSER_SHIRETOKO);
807
- return true;
808
- }
809
- return false;
810
- }
811
-
812
- /**
813
- * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7)
814
- * @return boolean True if the browser is Ice Cat otherwise false
815
- */
816
- function checkBrowserIceCat() {
817
- if( stripos($this->_agent,'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i',$this->_agent,$matches) ) {
818
- $this->setVersion($matches[1]);
819
- $this->setBrowser($this->BROWSER_ICECAT);
820
- return true;
821
- }
822
- return false;
823
- }
824
-
825
- /**
826
- * Determine if the browser is Nokia or not (last updated 1.7)
827
- * @return boolean True if the browser is Nokia otherwise false
828
- */
829
- function checkBrowserNokia() {
830
- if( preg_match("/Nokia([^\/]+)\/([^ SP]+)/i",$this->_agent,$matches) ) {
831
- $this->setVersion($matches[2]);
832
- if( stripos($this->_agent,'Series60') !== false || strpos($this->_agent,'S60') !== false ) {
833
- $this->setBrowser($this->BROWSER_NOKIA_S60);
834
- }
835
- else {
836
- $this->setBrowser( $this->BROWSER_NOKIA );
837
- }
838
- $this->setMobile(true);
839
- return true;
840
- }
841
- return false;
842
- }
843
-
844
- /**
845
- * Determine if the browser is Firefox or not (last updated 1.7)
846
- * @return boolean True if the browser is Firefox otherwise false
847
- */
848
- function checkBrowserFirefox() {
849
- if( stripos($this->_agent,'safari') === false ) {
850
- if( preg_match("/Firefox[\/ \(]([^ ;\)]+)/i",$this->_agent,$matches) ) {
851
- $this->setVersion($matches[1]);
852
- $this->setBrowser($this->BROWSER_FIREFOX);
853
- return true;
854
- }
855
- else if( preg_match("/Firefox#x2F;i",$this->_agent,$matches) ) {
856
- $this->setVersion("");
857
- $this->setBrowser($this->BROWSER_FIREFOX);
858
- return true;
859
- }
860
- }
861
- return false;
862
- }
863
-
864
- /**
865
- * Determine if the browser is Firefox or not (last updated 1.7)
866
- * @return boolean True if the browser is Firefox otherwise false
867
- */
868
- function checkBrowserIceweasel() {
869
- if( stripos($this->_agent,'Iceweasel') !== false ) {
870
- $aresult = explode('/',stristr($this->_agent,'Iceweasel'));
871
- $aversion = explode(' ',$aresult[1]);
872
- $this->setVersion($aversion[0]);
873
- $this->setBrowser($this->BROWSER_ICEWEASEL);
874
- return true;
875
- }
876
- return false;
877
- }
878
- /**
879
- * Determine if the browser is Mozilla or not (last updated 1.7)
880
- * @return boolean True if the browser is Mozilla otherwise false
881
- */
882
- function checkBrowserMozilla() {
883
- if( stripos($this->_agent,'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i',$this->_agent) && stripos($this->_agent,'netscape') === false) {
884
- $aversion = explode(' ',stristr($this->_agent,'rv:'));
885
- preg_match('/rv:[0-9].[0-9][a-b]?/i',$this->_agent,$aversion);
886
- $this->setVersion(str_replace('rv:','',$aversion[0]));
887
- $this->setBrowser($this->BROWSER_MOZILLA);
888
- return true;
889
- }
890
- else if( stripos($this->_agent,'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i',$this->_agent) && stripos($this->_agent,'netscape') === false ) {
891
- $aversion = explode('',stristr($this->_agent,'rv:'));
892
- $this->setVersion(str_replace('rv:','',$aversion[0]));
893
- $this->setBrowser($this->BROWSER_MOZILLA);
894
- return true;
895
- }
896
- else if( stripos($this->_agent,'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i',$this->_agent,$matches) && stripos($this->_agent,'netscape') === false ) {
897
- $this->setVersion($matches[1]);
898
- $this->setBrowser($this->BROWSER_MOZILLA);
899
- return true;
900
- }
901
- return false;
902
- }
903
-
904
- /**
905
- * Determine if the browser is Lynx or not (last updated 1.7)
906
- * @return boolean True if the browser is Lynx otherwise false
907
- */
908
- function checkBrowserLynx() {
909
- if( stripos($this->_agent,'lynx') !== false ) {
910
- $aresult = explode('/',stristr($this->_agent,'Lynx'));
911
- $aversion = explode(' ',(isset($aresult[1])?$aresult[1]:""));
912
- $this->setVersion($aversion[0]);
913
- $this->setBrowser($this->BROWSER_LYNX);
914
- return true;
915
- }
916
- return false;
917
- }
918
-
919
- /**
920
- * Determine if the browser is Amaya or not (last updated 1.7)
921
- * @return boolean True if the browser is Amaya otherwise false
922
- */
923
- function checkBrowserAmaya() {
924
- if( stripos($this->_agent,'amaya') !== false ) {
925
- $aresult = explode('/',stristr($this->_agent,'Amaya'));
926
- $aversion = explode(' ',$aresult[1]);
927
- $this->setVersion($aversion[0]);
928
- $this->setBrowser($this->BROWSER_AMAYA);
929
- return true;
930
- }
931
- return false;
932
- }
933
-
934
- /**
935
- * Determine if the browser is Safari or not (last updated 1.7)
936
- * @return boolean True if the browser is Safari otherwise false
937
- */
938
- function checkBrowserSafari() {
939
- if( stripos($this->_agent,'Safari') !== false && stripos($this->_agent,'iPhone') === false && stripos($this->_agent,'iPod') === false ) {
940
- $aresult = explode('/',stristr($this->_agent,'Version'));
941
- if( isset($aresult[1]) ) {
942
- $aversion = explode(' ',$aresult[1]);
943
- $this->setVersion($aversion[0]);
944
- }
945
- else {
946
- $this->setVersion($this->VERSION_UNKNOWN);
947
- }
948
- $this->setBrowser($this->BROWSER_SAFARI);
949
- return true;
950
- }
951
- return false;
952
- }
953
-
954
- /**
955
- * Determine if the browser is iPhone or not (last updated 1.7)
956
- * @return boolean True if the browser is iPhone otherwise false
957
- */
958
- function checkBrowseriPhone() {
959
- if( stripos($this->_agent,'iPhone') !== false ) {
960
- $aresult = explode('/',stristr($this->_agent,'Version'));
961
- if( isset($aresult[1]) ) {
962
- $aversion = explode(' ',$aresult[1]);
963
- $this->setVersion($aversion[0]);
964
- }
965
- else {
966
- $this->setVersion($this->VERSION_UNKNOWN);
967
- }
968
- $this->setMobile(true);
969
- $this->setBrowser($this->BROWSER_IPHONE);
970
- return true;
971
- }
972
- return false;
973
- }
974
-
975
- /**
976
- * Determine if the browser is iPod or not (last updated 1.7)
977
- * @return boolean True if the browser is iPod otherwise false
978
- */
979
- function checkBrowseriPad() {
980
- if( stripos($this->_agent,'iPad') !== false ) {
981
- $aresult = explode('/',stristr($this->_agent,'Version'));
982
- if( isset($aresult[1]) ) {
983
- $aversion = explode(' ',$aresult[1]);
984
- $this->setVersion($aversion[0]);
985
- }
986
- else {
987
- $this->setVersion($this->VERSION_UNKNOWN);
988
- }
989
- $this->setMobile(true);
990
- $this->setBrowser($this->BROWSER_IPAD);
991
- return true;
992
- }
993
- return false;
994
- }
995
-
996
- /**
997
- * Determine if the browser is iPod or not (last updated 1.7)
998
- * @return boolean True if the browser is iPod otherwise false
999
- */
1000
- function checkBrowseriPod() {
1001
- if( stripos($this->_agent,'iPod') !== false ) {
1002
- $aresult = explode('/',stristr($this->_agent,'Version'));
1003
- if( isset($aresult[1]) ) {
1004
- $aversion = explode(' ',$aresult[1]);
1005
- $this->setVersion($aversion[0]);
1006
- }
1007
- else {
1008
- $this->setVersion($this->VERSION_UNKNOWN);
1009
- }
1010
- $this->setMobile(true);
1011
- $this->setBrowser($this->BROWSER_IPOD);
1012
- return true;
1013
- }
1014
- return false;
1015
- }
1016
-
1017
- /**
1018
- * Determine if the browser is Android or not (last updated 1.7)
1019
- * @return boolean True if the browser is Android otherwise false
1020
- */
1021
- function checkBrowserAndroid() {
1022
- if( stripos($this->_agent,'Android') !== false ) {
1023
- $aresult = explode(' ',stristr($this->_agent,'Android'));
1024
- if( isset($aresult[1]) ) {
1025
- $aversion = explode(' ',$aresult[1]);
1026
- $this->setVersion($aversion[0]);
1027
- }
1028
- else {
1029
- $this->setVersion($this->VERSION_UNKNOWN);
1030
- }
1031
- $this->setMobile(true);
1032
- $this->setBrowser($this->BROWSER_ANDROID);
1033
- return true;
1034
- }
1035
- return false;
1036
- }
1037
-
1038
- /**
1039
- * Determine the user's platform (last updated 1.7)
1040
- */
1041
- function checkPlatform() {
1042
- if( stripos($this->_agent, 'windows') !== false ) {
1043
- $this->_platform = $this->PLATFORM_WINDOWS;
1044
- }
1045
- else if( stripos($this->_agent, 'iPad') !== false ) {
1046
- $this->_platform = $this->PLATFORM_IPAD;
1047
- }
1048
- else if( stripos($this->_agent, 'iPod') !== false ) {
1049
- $this->_platform = $this->PLATFORM_IPOD;
1050
- }
1051
- else if( stripos($this->_agent, 'iPhone') !== false ) {
1052
- $this->_platform = $this->PLATFORM_IPHONE;
1053
- }
1054
- elseif( stripos($this->_agent, 'mac') !== false ) {
1055
- $this->_platform = $this->PLATFORM_APPLE;
1056
- }
1057
- elseif( stripos($this->_agent, 'android') !== false ) {
1058
- $this->_platform = $this->PLATFORM_ANDROID;
1059
- }
1060
- elseif( stripos($this->_agent, 'linux') !== false ) {
1061
- $this->_platform = $this->PLATFORM_LINUX;
1062
- }
1063
- else if( stripos($this->_agent, 'Nokia') !== false ) {
1064
- $this->_platform = $this->PLATFORM_NOKIA;
1065
- }
1066
- else if( stripos($this->_agent, 'BlackBerry') !== false ) {
1067
- $this->_platform = $this->PLATFORM_BLACKBERRY;
1068
- }
1069
- elseif( stripos($this->_agent,'FreeBSD') !== false ) {
1070
- $this->_platform = $this->PLATFORM_FREEBSD;
1071
- }
1072
- elseif( stripos($this->_agent,'OpenBSD') !== false ) {
1073
- $this->_platform = $this->PLATFORM_OPENBSD;
1074
- }
1075
- elseif( stripos($this->_agent,'NetBSD') !== false ) {
1076
- $this->_platform = $this->PLATFORM_NETBSD;
1077
- }
1078
- elseif( stripos($this->_agent, 'OpenSolaris') !== false ) {
1079
- $this->_platform = $this->PLATFORM_OPENSOLARIS;
1080
- }
1081
- elseif( stripos($this->_agent, 'SunOS') !== false ) {
1082
- $this->_platform = $this->PLATFORM_SUNOS;
1083
- }
1084
- elseif( stripos($this->_agent, 'OS\/2') !== false ) {
1085
- $this->_platform = $this->PLATFORM_OS2;
1086
- }
1087
- elseif( stripos($this->_agent, 'BeOS') !== false ) {
1088
- $this->_platform = $this->PLATFORM_BEOS;
1089
- }
1090
- elseif( stripos($this->_agent, 'win') !== false ) {
1091
- $this->_platform = $this->PLATFORM_WINDOWS;
1092
- }
1093
-
1094
- }
1095
- }
1096
-
1097
- ?>
1
+ <?php
2
+ /**
3
+ * Modified to remove var
4
+ * Chris Christoff on 12/26/2012
5
+ * Changes: Changes vars to publics
6
+ *
7
+ * Modified to work for EDD by
8
+ * Chris Christoff on 12/23/2012
9
+ * Changes: Removed the browser string return and added spacing. Also removed return HTML formatting.
10
+ *
11
+ * Modified to add formatted User Agent string for EDD System Info by
12
+ * Chris Christoff on 12/23/2012
13
+ * Changes: Split user string and add formatting so we can print a nicely
14
+ * formatted user agent string on the EDD System Info
15
+ *
16
+ * File: Browser.php
17
+ * Author: Chris Schuld (http://chrisschuld.com/)
18
+ * Last Modified: August 20th, 2010
19
+ * @version 1.9
20
+ * @package PegasusPHP
21
+ *
22
+ * Copyright (C) 2008-2010 Chris Schuld (chris@chrisschuld.com)
23
+ *
24
+ * This program is free software; you can redistribute it and/or
25
+ * modify it under the terms of the GNU General Public License as
26
+ * published by the Free Software Foundation; either version 2 of
27
+ * the License, or (at your option) any later version.
28
+ *
29
+ * This program is distributed in the hope that it will be useful,
30
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
31
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
+ * GNU General Public License for more details at:
33
+ * http://www.gnu.org/copyleft/gpl.html
34
+ *
35
+ *
36
+ * Typical Usage:
37
+ *
38
+ * $browser = new Browser();
39
+ * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
40
+ * echo 'You have FireFox version 2 or greater';
41
+ * }
42
+ *
43
+ * User Agents Sampled from: http://www.useragentstring.com/
44
+ *
45
+ * This implementation is based on the original work from Gary White
46
+ * http://apptools.com/phptools/browser/
47
+ *
48
+ * UPDATES:
49
+ *
50
+ * 2010-08-20 (v1.9):
51
+ * + Added MSN Explorer Browser (legacy)
52
+ * + Added Bing/MSN Robot (Thanks Rob MacDonald)
53
+ * + Added the Android Platform (PLATFORM_ANDROID)
54
+ * + Fixed issue with Android 1.6/2.2 (Thanks Tom Hirashima)
55
+ *
56
+ * 2010-04-27 (v1.8):
57
+ * + Added iPad Support
58
+ *
59
+ * 2010-03-07 (v1.7):
60
+ * + *MAJOR* Rebuild (preg_match and other "slow" routine removal(s))
61
+ * + Almost allof Gary's original code has been replaced
62
+ * + Large PHPUNIT testing environment created to validate new releases and additions
63
+ * + Added FreeBSD Platform
64
+ * + Added OpenBSD Platform
65
+ * + Added NetBSD Platform
66
+ * + Added SunOS Platform
67
+ * + Added OpenSolaris Platform
68
+ * + Added support of the Iceweazel Browser
69
+ * + Added isChromeFrame() call to check if chromeframe is in use
70
+ * + Moved the Opera check in front of the Firefox check due to legacy Opera User Agents
71
+ * + Added the __toString() method (Thanks Deano)
72
+ *
73
+ * 2009-11-15:
74
+ * + Updated the checkes for Firefox
75
+ * + Added the NOKIA platform
76
+ * + Added Checks for the NOKIA brower(s)
77
+ *
78
+ * 2009-11-08:
79
+ * + PHP 5.3 Support
80
+ * + Added support for BlackBerry OS and BlackBerry browser
81
+ * + Added support for the Opera Mini browser
82
+ * + Added additional documenation
83
+ * + Added support for isRobot() and isMobile()
84
+ * + Added support for Opera version 10
85
+ * + Added support for deprecated Netscape Navigator version 9
86
+ * + Added support for IceCat
87
+ * + Added support for Shiretoko
88
+ *
89
+ * 2010-04-27 (v1.8):
90
+ * + Added iPad Support
91
+ *
92
+ * 2009-08-18:
93
+ * + Updated to support PHP 5.3 - removed all deprecated function calls
94
+ * + Updated to remove all double quotes (") -- converted to single quotes (')
95
+ *
96
+ * 2009-04-27:
97
+ * + Updated the IE check to remove a typo and bug (thanks John)
98
+ *
99
+ * 2009-04-22:
100
+ * + Added detection for GoogleBot
101
+ * + Added detection for the W3C Validator.
102
+ * + Added detection for Yahoo! Slurp
103
+ *
104
+ * 2009-03-14:
105
+ * + Added detection for iPods.
106
+ * + Added Platform detection for iPhones
107
+ * + Added Platform detection for iPods
108
+ *
109
+ * 2009-02-16: (Rick Hale)
110
+ * + Added version detection for Android phones.
111
+ *
112
+ * 2008-12-09:
113
+ * + Removed unused constant
114
+ *
115
+ * 2008-11-07:
116
+ * + Added Google's Chrome to the detection list
117
+ * + Added isBrowser(string) to the list of functions special thanks to
118
+ * Daniel 'mavrick' Lang for the function concept (http://mavrick.id.au)
119
+ *
120
+ *
121
+ * Gary White noted: "Since browser detection is so unreliable, I am
122
+ * no longer maintaining this script. You are free to use and or
123
+ * modify/update it as you want, however the author assumes no
124
+ * responsibility for the accuracy of the detected values."
125
+ *
126
+ * Anyone experienced with Gary's script might be interested in these notes:
127
+ *
128
+ * Added class constants
129
+ * Added detection and version detection for Google's Chrome
130
+ * Updated the version detection for Amaya
131
+ * Updated the version detection for Firefox
132
+ * Updated the version detection for Lynx
133
+ * Updated the version detection for WebTV
134
+ * Updated the version detection for NetPositive
135
+ * Updated the version detection for IE
136
+ * Updated the version detection for OmniWeb
137
+ * Updated the version detection for iCab
138
+ * Updated the version detection for Safari
139
+ * Updated Safari to remove mobile devices (iPhone)
140
+ * Added detection for iPhone
141
+ * Added detection for robots
142
+ * Added detection for mobile devices
143
+ * Added detection for BlackBerry
144
+ * Removed Netscape checks (matches heavily with firefox & mozilla)
145
+ *
146
+ */
147
+
148
+ class Browser {
149
+ public $_agent = '';
150
+ public $_browser_name = '';
151
+ public $_version = '';
152
+ public $_platform = '';
153
+ public $_os = '';
154
+ public $_is_aol = false;
155
+ public $_is_mobile = false;
156
+ public $_is_robot = false;
157
+ public $_aol_version = '';
158
+
159
+ public $BROWSER_UNKNOWN = 'unknown';
160
+ public $VERSION_UNKNOWN = 'unknown';
161
+
162
+ public $BROWSER_OPERA = 'Opera'; // Http://www.opera.com/
163
+ public $BROWSER_OPERA_MINI = 'Opera Mini'; // Http://www.opera.com/mini/
164
+ public $BROWSER_WEBTV = 'WebTV'; // Http://www.webtv.net/pc/
165
+ public $BROWSER_IE = 'Internet Explorer'; // Http://www.microsoft.com/ie/
166
+ public $BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // Http://en.wikipedia.org/wiki/Internet_Explorer_Mobile
167
+ public $BROWSER_KONQUEROR = 'Konqueror'; // Http://www.konqueror.org/
168
+ public $BROWSER_ICAB = 'iCab'; // Http://www.icab.de/
169
+ public $BROWSER_OMNIWEB = 'OmniWeb'; // Http://www.omnigroup.com/applications/omniweb/
170
+ public $BROWSER_FIREBIRD = 'Firebird'; // Http://www.ibphoenix.com/
171
+ public $BROWSER_FIREFOX = 'Firefox'; // Http://www.mozilla.com/en-US/firefox/firefox.html
172
+ public $BROWSER_ICEWEASEL = 'Iceweasel'; // Http://www.geticeweasel.org/
173
+ public $BROWSER_SHIRETOKO = 'Shiretoko'; // Http://wiki.mozilla.org/Projects/shiretoko
174
+ public $BROWSER_MOZILLA = 'Mozilla'; // Http://www.mozilla.com/en-US/
175
+ public $BROWSER_AMAYA = 'Amaya'; // Http://www.w3.org/Amaya/
176
+ public $BROWSER_LYNX = 'Lynx'; // Http://en.wikipedia.org/wiki/Lynx
177
+ public $BROWSER_SAFARI = 'Safari'; // Http://apple.com
178
+ public $BROWSER_IPHONE = 'iPhone'; // Http://apple.com
179
+ public $BROWSER_IPOD = 'iPod'; // Http://apple.com
180
+ public $BROWSER_IPAD = 'iPad'; // Http://apple.com
181
+ public $BROWSER_CHROME = 'Chrome'; // Http://www.google.com/chrome
182
+ public $BROWSER_ANDROID = 'Android'; // Http://www.android.com/
183
+ public $BROWSER_GOOGLEBOT = 'GoogleBot'; // Http://en.wikipedia.org/wiki/Googlebot
184
+ public $BROWSER_SLURP = 'Yahoo! Slurp'; // Http://en.wikipedia.org/wiki/Yahoo!_Slurp
185
+ public $BROWSER_W3CVALIDATOR = 'W3C Validator'; // Http://validator.w3.org/
186
+ public $BROWSER_BLACKBERRY = 'BlackBerry'; // Http://www.blackberry.com/
187
+ public $BROWSER_ICECAT = 'IceCat'; // Http://en.wikipedia.org/wiki/GNU_IceCat
188
+ public $BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // Http://en.wikipedia.org/wiki/Web_Browser_for_S60
189
+ public $BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform
190
+ public $BROWSER_MSN = 'MSN Browser'; // Http://explorer.msn.com/
191
+ public $BROWSER_MSNBOT = 'MSN Bot'; // Http://search.msn.com/msnbot.htm
192
+ // Http://en.wikipedia.org/wiki/Msnbot (used for Bing as well)
193
+
194
+ public $BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // Http://browser.netscape.com/ (DEPRECATED)
195
+ public $BROWSER_GALEON = 'Galeon'; // Http://galeon.sourceforge.net/ (DEPRECATED)
196
+ public $BROWSER_NETPOSITIVE = 'NetPositive'; // Http://en.wikipedia.org/wiki/NetPositive (DEPRECATED)
197
+ public $BROWSER_PHOENIX = 'Phoenix'; // Http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED)
198
+
199
+ public $PLATFORM_UNKNOWN = 'unknown';
200
+ public $PLATFORM_WINDOWS = 'Windows';
201
+ public $PLATFORM_WINDOWS_CE = 'Windows CE';
202
+ public $PLATFORM_APPLE = 'Apple';
203
+ public $PLATFORM_LINUX = 'Linux';
204
+ public $PLATFORM_OS2 = 'OS/2';
205
+ public $PLATFORM_BEOS = 'BeOS';
206
+ public $PLATFORM_IPHONE = 'iPhone';
207
+ public $PLATFORM_IPOD = 'iPod';
208
+ public $PLATFORM_IPAD = 'iPad';
209
+ public $PLATFORM_BLACKBERRY = 'BlackBerry';
210
+ public $PLATFORM_NOKIA = 'Nokia';
211
+ public $PLATFORM_FREEBSD = 'FreeBSD';
212
+ public $PLATFORM_OPENBSD = 'OpenBSD';
213
+ public $PLATFORM_NETBSD = 'NetBSD';
214
+ public $PLATFORM_SUNOS = 'SunOS';
215
+ public $PLATFORM_OPENSOLARIS = 'OpenSolaris';
216
+ public $PLATFORM_ANDROID = 'Android';
217
+
218
+ public $OPERATING_SYSTEM_UNKNOWN = 'unknown';
219
+
220
+ // PHP 7 compatible constructor
221
+ public function __construct($useragent="") {
222
+ $this->reset();
223
+ if( $useragent != "" ) {
224
+ $this->setUserAgent($useragent);
225
+ }
226
+ else {
227
+ $this->determine();
228
+ }
229
+ }
230
+ // PHP 4 compatible constructor
231
+ public function Browser(){
232
+ self::__construct();
233
+ }
234
+
235
+ // function Browser($useragent="") {
236
+ // $this->reset();
237
+ // if( $useragent != "" ) {
238
+ // $this->setUserAgent($useragent);
239
+ // }
240
+ // else {
241
+ // $this->determine();
242
+ // }
243
+ // }
244
+
245
+ /**
246
+ * Reset all properties
247
+ */
248
+ function reset() {
249
+ $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
250
+ $this->_browser_name = $this->BROWSER_UNKNOWN;
251
+ $this->_version = $this->VERSION_UNKNOWN;
252
+ $this->_platform = $this->PLATFORM_UNKNOWN;
253
+ $this->_os = $this->OPERATING_SYSTEM_UNKNOWN;
254
+ $this->_is_aol = false;
255
+ $this->_is_mobile = false;
256
+ $this->_is_robot = false;
257
+ $this->_aol_version = $this->VERSION_UNKNOWN;
258
+ }
259
+
260
+ /**
261
+ * Check to see if the specific browser is valid
262
+ * @param string $browserName
263
+ * @return True if the browser is the specified browser
264
+ */
265
+ function isBrowser($browserName) { return( 0 == strcasecmp($this->_browser_name, trim($browserName))); }
266
+
267
+ /**
268
+ * The name of the browser. All return types are from the class contants
269
+ * @return string Name of the browser
270
+ */
271
+ function getBrowser() { return $this->_browser_name; }
272
+ /**
273
+ * Set the name of the browser
274
+ * @param $browser The name of the Browser
275
+ */
276
+ function setBrowser($browser) { return $this->_browser_name = $browser; }
277
+ /**
278
+ * The name of the platform. All return types are from the class contants
279
+ * @return string Name of the browser
280
+ */
281
+ function getPlatform() { return $this->_platform; }
282
+ /**
283
+ * Set the name of the platform
284
+ * @param $platform The name of the Platform
285
+ */
286
+ function setPlatform($platform) { return $this->_platform = $platform; }
287
+ /**
288
+ * The version of the browser.
289
+ * @return string Version of the browser (will only contain alpha-numeric characters and a period)
290
+ */
291
+ function getVersion() { return $this->_version; }
292
+ /**
293
+ * Set the version of the browser
294
+ * @param $version The version of the Browser
295
+ */
296
+ function setVersion($version) { $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/','',$version); }
297
+ /**
298
+ * The version of AOL.
299
+ * @return string Version of AOL (will only contain alpha-numeric characters and a period)
300
+ */
301
+ function getAolVersion() { return $this->_aol_version; }
302
+ /**
303
+ * Set the version of AOL
304
+ * @param $version The version of AOL
305
+ */
306
+ function setAolVersion($version) { $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/','',$version); }
307
+ /**
308
+ * Is the browser from AOL?
309
+ * @return boolean True if the browser is from AOL otherwise false
310
+ */
311
+ function isAol() { return $this->_is_aol; }
312
+ /**
313
+ * Is the browser from a mobile device?
314
+ * @return boolean True if the browser is from a mobile device otherwise false
315
+ */
316
+ function isMobile() { return $this->_is_mobile; }
317
+ /**
318
+ * Is the browser from a robot (ex Slurp,GoogleBot)?
319
+ * @return boolean True if the browser is from a robot otherwise false
320
+ */
321
+ function isRobot() { return $this->_is_robot; }
322
+ /**
323
+ * Set the browser to be from AOL
324
+ * @param $isAol
325
+ */
326
+ function setAol($isAol) { $this->_is_aol = $isAol; }
327
+ /**
328
+ * Set the Browser to be mobile
329
+ * @param boolean $value is the browser a mobile brower or not
330
+ */
331
+ function setMobile($value=true) { $this->_is_mobile = $value; }
332
+ /**
333
+ * Set the Browser to be a robot
334
+ * @param boolean $value is the browser a robot or not
335
+ */
336
+ function setRobot($value=true) { $this->_is_robot = $value; }
337
+ /**
338
+ * Get the user agent value in use to determine the browser
339
+ * @return string The user agent from the HTTP header
340
+ */
341
+ function getUserAgent() { return $this->_agent; }
342
+ /**
343
+ * Set the user agent value (the construction will use the HTTP header value - this will overwrite it)
344
+ * @param $agent_string The value for the User Agent
345
+ */
346
+ function setUserAgent($agent_string) {
347
+ $this->reset();
348
+ $this->_agent = $agent_string;
349
+ $this->determine();
350
+ }
351
+ /**
352
+ * Used to determine if the browser is actually "chromeframe"
353
+ * @since 1.7
354
+ * @return boolean True if the browser is using chromeframe
355
+ */
356
+ function isChromeFrame() {
357
+ return( strpos($this->_agent,"chromeframe") !== false );
358
+ }
359
+ /**
360
+ * Returns a formatted string with a summary of the details of the browser.
361
+ * @return string formatted string with a summary of the browser
362
+ */
363
+ function __toString() {
364
+ $text1 = $this->getUserAgent(); //grabs the UA (user agent) string
365
+ $UAline1 = substr($text1, 0, 32); //the first line we print should only be the first 32 characters of the UA string
366
+ $text2 = $this->getUserAgent();//now we grab it again and save it to a string
367
+ $towrapUA = str_replace($UAline1, '', $text2);//the rest of the printoff (other than first line) is equivolent
368
+ // To the whole string minus the part we printed off. IE
369
+ // User Agent: thefirst32charactersfromUAline1
370
+ // the rest of it is now stored in
371
+ // $text2 to be printed off
372
+ // But we need to add spaces before each line that is split other than line 1
373
+ $space = '';
374
+ for($i = 0; $i < 25; $i++) {
375
+ $space .= ' ';
376
+ }
377
+ // Now we split the remaining string of UA ($text2) into lines that are prefixed by spaces for formatting
378
+ $wordwrapped = chunk_split($towrapUA, 32, "\n $space");
379
+ return "Platform: {$this->getPlatform()} \n".
380
+ "Browser Name: {$this->getBrowser()} \n" .
381
+ "Browser Version: {$this->getVersion()} \n" .
382
+ "User Agent String: $UAline1 \n\t\t\t " .
383
+ "$wordwrapped";
384
+ }
385
+ /**
386
+ * Protected routine to calculate and determine what the browser is in use (including platform)
387
+ */
388
+ function determine() {
389
+ $this->checkPlatform();
390
+ $this->checkBrowsers();
391
+ $this->checkForAol();
392
+ }
393
+ /**
394
+ * Protected routine to determine the browser type
395
+ * @return boolean True if the browser was detected otherwise false
396
+ */
397
+ function checkBrowsers() {
398
+ return (
399
+ // Well-known, well-used
400
+ // Special Notes:
401
+ // (1) Opera must be checked before FireFox due to the odd
402
+ // user agents used in some older versions of Opera
403
+ // (2) WebTV is strapped onto Internet Explorer so we must
404
+ // check for WebTV before IE
405
+ // (3) (deprecated) Galeon is based on Firefox and needs to be
406
+ // tested before Firefox is tested
407
+ // (4) OmniWeb is based on Safari so OmniWeb check must occur
408
+ // before Safari
409
+ // (5) Netscape 9+ is based on Firefox so Netscape checks
410
+ // before FireFox are necessary
411
+ $this->checkBrowserWebTv() ||
412
+ $this->checkBrowserInternetExplorer() ||
413
+ $this->checkBrowserOpera() ||
414
+ $this->checkBrowserGaleon() ||
415
+ $this->checkBrowserNetscapeNavigator9Plus() ||
416
+ $this->checkBrowserFirefox() ||
417
+ $this->checkBrowserChrome() ||
418
+ $this->checkBrowserOmniWeb() ||
419
+
420
+ // Common mobile
421
+ $this->checkBrowserAndroid() ||
422
+ $this->checkBrowseriPad() ||
423
+ $this->checkBrowseriPod() ||
424
+ $this->checkBrowseriPhone() ||
425
+ $this->checkBrowserBlackBerry() ||
426
+ $this->checkBrowserNokia() ||
427
+
428
+ // Common bots
429
+ $this->checkBrowserGoogleBot() ||
430
+ $this->checkBrowserMSNBot() ||
431
+ $this->checkBrowserSlurp() ||
432
+
433
+ // WebKit base check (post mobile and others)
434
+ $this->checkBrowserSafari() ||
435
+
436
+ // Everyone else
437
+ $this->checkBrowserNetPositive() ||
438
+ $this->checkBrowserFirebird() ||
439
+ $this->checkBrowserKonqueror() ||
440
+ $this->checkBrowserIcab() ||
441
+ $this->checkBrowserPhoenix() ||
442
+ $this->checkBrowserAmaya() ||
443
+ $this->checkBrowserLynx() ||
444
+
445
+ $this->checkBrowserShiretoko() ||
446
+ $this->checkBrowserIceCat() ||
447
+ $this->checkBrowserW3CValidator() ||
448
+ $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */
449
+ );
450
+ }
451
+
452
+ /**
453
+ * Determine if the user is using a BlackBerry (last updated 1.7)
454
+ * @return boolean True if the browser is the BlackBerry browser otherwise false
455
+ */
456
+ function checkBrowserBlackBerry() {
457
+ if( stripos($this->_agent,'blackberry') !== false ) {
458
+ $aresult = explode("/",stristr($this->_agent,"BlackBerry"));
459
+ $aversion = explode(' ',$aresult[1]);
460
+ $this->setVersion($aversion[0]);
461
+ $this->_browser_name = $this->BROWSER_BLACKBERRY;
462
+ $this->setMobile(true);
463
+ return true;
464
+ }
465
+ return false;
466
+ }
467
+
468
+ /**
469
+ * Determine if the user is using an AOL User Agent (last updated 1.7)
470
+ * @return boolean True if the browser is from AOL otherwise false
471
+ */
472
+ function checkForAol() {
473
+ $this->setAol(false);
474
+ $this->setAolVersion($this->VERSION_UNKNOWN);
475
+
476
+ if( stripos($this->_agent,'aol') !== false ) {
477
+ $aversion = explode(' ',stristr($this->_agent, 'AOL'));
478
+ $this->setAol(true);
479
+ $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1]));
480
+ return true;
481
+ }
482
+ return false;
483
+ }
484
+
485
+ /**
486
+ * Determine if the browser is the GoogleBot or not (last updated 1.7)
487
+ * @return boolean True if the browser is the GoogletBot otherwise false
488
+ */
489
+ function checkBrowserGoogleBot() {
490
+ if( stripos($this->_agent,'googlebot') !== false ) {
491
+ $aresult = explode('/',stristr($this->_agent,'googlebot'));
492
+ $aversion = explode(' ',$aresult[1]);
493
+ $this->setVersion(str_replace(';','',$aversion[0]));
494
+ $this->_browser_name = $this->BROWSER_GOOGLEBOT;
495
+ $this->setRobot(true);
496
+ return true;
497
+ }
498
+ return false;
499
+ }
500
+
501
+ /**
502
+ * Determine if the browser is the MSNBot or not (last updated 1.9)
503
+ * @return boolean True if the browser is the MSNBot otherwise false
504
+ */
505
+ function checkBrowserMSNBot() {
506
+ if( stripos($this->_agent,"msnbot") !== false ) {
507
+ $aresult = explode("/",stristr($this->_agent,"msnbot"));
508
+ $aversion = explode(" ",$aresult[1]);
509
+ $this->setVersion(str_replace(";","",$aversion[0]));
510
+ $this->_browser_name = $this->BROWSER_MSNBOT;
511
+ $this->setRobot(true);
512
+ return true;
513
+ }
514
+ return false;
515
+ }
516
+
517
+ /**
518
+ * Determine if the browser is the W3C Validator or not (last updated 1.7)
519
+ * @return boolean True if the browser is the W3C Validator otherwise false
520
+ */
521
+ function checkBrowserW3CValidator() {
522
+ if( stripos($this->_agent,'W3C-checklink') !== false ) {
523
+ $aresult = explode('/',stristr($this->_agent,'W3C-checklink'));
524
+ $aversion = explode(' ',$aresult[1]);
525
+ $this->setVersion($aversion[0]);
526
+ $this->_browser_name = $this->BROWSER_W3CVALIDATOR;
527
+ return true;
528
+ }
529
+ else if( stripos($this->_agent,'W3C_Validator') !== false ) {
530
+ // Some of the Validator versions do not delineate w/ a slash - add it back in
531
+ $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent);
532
+ $aresult = explode('/',stristr($ua,'W3C_Validator'));
533
+ $aversion = explode(' ',$aresult[1]);
534
+ $this->setVersion($aversion[0]);
535
+ $this->_browser_name = $this->BROWSER_W3CVALIDATOR;
536
+ return true;
537
+ }
538
+ return false;
539
+ }
540
+
541
+ /**
542
+ * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7)
543
+ * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false
544
+ */
545
+ function checkBrowserSlurp() {
546
+ if( stripos($this->_agent,'slurp') !== false ) {
547
+ $aresult = explode('/',stristr($this->_agent,'Slurp'));
548
+ $aversion = explode(' ',$aresult[1]);
549
+ $this->setVersion($aversion[0]);
550
+ $this->_browser_name = $this->BROWSER_SLURP;
551
+ $this->setRobot(true);
552
+ $this->setMobile(false);
553
+ return true;
554
+ }
555
+ return false;
556
+ }
557
+
558
+ /**
559
+ * Determine if the browser is Internet Explorer or not (last updated 1.7)
560
+ * @return boolean True if the browser is Internet Explorer otherwise false
561
+ */
562
+ function checkBrowserInternetExplorer() {
563
+
564
+ // Test for v1 - v1.5 IE
565
+ if( stripos($this->_agent,'microsoft internet explorer') !== false ) {
566
+ $this->setBrowser($this->BROWSER_IE);
567
+ $this->setVersion('1.0');
568
+ $aresult = stristr($this->_agent, '/');
569
+ if( preg_match('/308|425|426|474|0b1/i', $aresult) ) {
570
+ $this->setVersion('1.5');
571
+ }
572
+ return true;
573
+ }
574
+ // Test for versions > 1.5
575
+ else if( stripos($this->_agent,'msie') !== false && stripos($this->_agent,'opera') === false ) {
576
+ // See if the browser is the odd MSN Explorer
577
+ if( stripos($this->_agent,'msnb') !== false ) {
578
+ $aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'MSN'));
579
+ $this->setBrowser( $this->BROWSER_MSN );
580
+ $this->setVersion(str_replace(array('(',')',';'),'',$aresult[1]));
581
+ return true;
582
+ }
583
+ $aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'msie'));
584
+ $this->setBrowser( $this->BROWSER_IE );
585
+ $this->setVersion(str_replace(array('(',')',';'),'',$aresult[1]));
586
+ return true;
587
+ }
588
+ // Test for Pocket IE
589
+ else if( stripos($this->_agent,'mspie') !== false || stripos($this->_agent,'pocket') !== false ) {
590
+ $aresult = explode(' ',stristr($this->_agent,'mspie'));
591
+ $this->setPlatform( $this->PLATFORM_WINDOWS_CE );
592
+ $this->setBrowser( $this->BROWSER_POCKET_IE );
593
+ $this->setMobile(true);
594
+
595
+ if( stripos($this->_agent,'mspie') !== false ) {
596
+ $this->setVersion($aresult[1]);
597
+ }
598
+ else {
599
+ $aversion = explode('/',$this->_agent);
600
+ $this->setVersion($aversion[1]);
601
+ }
602
+ return true;
603
+ }
604
+ return false;
605
+ }
606
+
607
+ /**
608
+ * Determine if the browser is Opera or not (last updated 1.7)
609
+ * @return boolean True if the browser is Opera otherwise false
610
+ */
611
+ function checkBrowserOpera() {
612
+ if( stripos($this->_agent,'opera mini') !== false ) {
613
+ $resultant = stristr($this->_agent, 'opera mini');
614
+ if( preg_match('/\//',$resultant) ) {
615
+ $aresult = explode('/',$resultant);
616
+ $aversion = explode(' ',$aresult[1]);
617
+ $this->setVersion($aversion[0]);
618
+ }
619
+ else {
620
+ $aversion = explode(' ',stristr($resultant,'opera mini'));
621
+ $this->setVersion($aversion[1]);
622
+ }
623
+ $this->_browser_name = $this->BROWSER_OPERA_MINI;
624
+ $this->setMobile(true);
625
+ return true;
626
+ }
627
+ else if( stripos($this->_agent,'opera') !== false ) {
628
+ $resultant = stristr($this->_agent, 'opera');
629
+ if( preg_match('/Version\/(10.*)#x2F;',$resultant,$matches) ) {
630
+ $this->setVersion($matches[1]);
631
+ }
632
+ else if( preg_match('/\//',$resultant) ) {
633
+ $aresult = explode('/',str_replace("("," ",$resultant));
634
+ $aversion = explode(' ',$aresult[1]);
635
+ $this->setVersion($aversion[0]);
636
+ }
637
+ else {
638
+ $aversion = explode(' ',stristr($resultant,'opera'));
639
+ $this->setVersion(isset($aversion[1])?$aversion[1]:"");
640
+ }
641
+ $this->_browser_name = $this->BROWSER_OPERA;
642
+ return true;
643
+ }
644
+ return false;
645
+ }
646
+
647
+ /**
648
+ * Determine if the browser is Chrome or not (last updated 1.7)
649
+ * @return boolean True if the browser is Chrome otherwise false
650
+ */
651
+ function checkBrowserChrome() {
652
+ if( stripos($this->_agent,'Chrome') !== false ) {
653
+ $aresult = explode('/',stristr($this->_agent,'Chrome'));
654
+ $aversion = explode(' ',$aresult[1]);
655
+ $this->setVersion($aversion[0]);
656
+ $this->setBrowser($this->BROWSER_CHROME);
657
+ return true;
658
+ }
659
+ return false;
660
+ }
661
+
662
+
663
+ /**
664
+ * Determine if the browser is WebTv or not (last updated 1.7)
665
+ * @return boolean True if the browser is WebTv otherwise false
666
+ */
667
+ function checkBrowserWebTv() {
668
+ if( stripos($this->_agent,'webtv') !== false ) {
669
+ $aresult = explode('/',stristr($this->_agent,'webtv'));
670
+ $aversion = explode(' ',$aresult[1]);
671
+ $this->setVersion($aversion[0]);
672
+ $this->setBrowser($this->BROWSER_WEBTV);
673
+ return true;
674
+ }
675
+ return false;
676
+ }
677
+
678
+ /**
679
+ * Determine if the browser is NetPositive or not (last updated 1.7)
680
+ * @return boolean True if the browser is NetPositive otherwise false
681
+ */
682
+ function checkBrowserNetPositive() {
683
+ if( stripos($this->_agent,'NetPositive') !== false ) {
684
+ $aresult = explode('/',stristr($this->_agent,'NetPositive'));
685
+ $aversion = explode(' ',$aresult[1]);
686
+ $this->setVersion(str_replace(array('(',')',';'),'',$aversion[0]));
687
+ $this->setBrowser($this->BROWSER_NETPOSITIVE);
688
+ return true;
689
+ }
690
+ return false;
691
+ }
692
+
693
+ /**
694
+ * Determine if the browser is Galeon or not (last updated 1.7)
695
+ * @return boolean True if the browser is Galeon otherwise false
696
+ */
697
+ function checkBrowserGaleon() {
698
+ if( stripos($this->_agent,'galeon') !== false ) {
699
+ $aresult = explode(' ',stristr($this->_agent,'galeon'));
700
+ $aversion = explode('/',$aresult[0]);
701
+ $this->setVersion($aversion[1]);
702
+ $this->setBrowser($this->BROWSER_GALEON);
703
+ return true;
704
+ }
705
+ return false;
706
+ }
707
+
708
+ /**
709
+ * Determine if the browser is Konqueror or not (last updated 1.7)
710
+ * @return boolean True if the browser is Konqueror otherwise false
711
+ */
712
+ function checkBrowserKonqueror() {
713
+ if( stripos($t