Popup Maker – Popup Forms, Optins & More - Version 1.5.3

Version Description

Download this release

Release Info

Developer danieliser
Plugin Icon 128x128 Popup Maker – Popup Forms, Optins & More
Version 1.5.3
Comparing to
See all releases

Code changes from version 1.5.2 to 1.5.3

Files changed (80) hide show
  1. assets/js/site.js +25 -0
  2. assets/js/site.min.js +2 -2
  3. includes/admin/popups/class-metabox-triggers.php +2 -2
  4. includes/class-pum-fields.php +1 -1
  5. includes/class-pum.php +1 -1
  6. includes/pum-sdk/freemius/assets/css/admin/checkout.css +1 -0
  7. includes/pum-sdk/freemius/assets/css/admin/common.css +1 -0
  8. includes/pum-sdk/freemius/assets/css/admin/debug.css +1 -1
  9. includes/pum-sdk/freemius/assets/css/admin/dialog-boxes.css +1 -1
  10. includes/pum-sdk/freemius/assets/index.php +3 -0
  11. includes/pum-sdk/freemius/assets/scss/_load.scss +4 -4
  12. includes/pum-sdk/freemius/assets/scss/_start.scss +3 -3
  13. includes/pum-sdk/freemius/assets/scss/_vars.scss +6 -5
  14. includes/pum-sdk/freemius/assets/scss/admin/_license-key-resend.scss +54 -30
  15. includes/pum-sdk/freemius/assets/scss/admin/checkout.scss +5 -0
  16. includes/pum-sdk/freemius/assets/scss/admin/common.scss +13 -0
  17. includes/pum-sdk/freemius/assets/scss/admin/connect.scss +471 -471
  18. includes/pum-sdk/freemius/assets/scss/admin/debug.scss +44 -0
  19. includes/pum-sdk/freemius/config.php +19 -1
  20. includes/pum-sdk/freemius/gulpfile.js +19 -3
  21. includes/pum-sdk/freemius/includes/class-freemius-abstract.php +33 -7
  22. includes/pum-sdk/freemius/includes/class-freemius.php +456 -178
  23. includes/pum-sdk/freemius/includes/class-fs-api.php +1 -1
  24. includes/pum-sdk/freemius/includes/class-fs-logger.php +493 -12
  25. includes/pum-sdk/freemius/includes/class-fs-plugin-updater.php +93 -15
  26. includes/pum-sdk/freemius/includes/class-fs-security.php +7 -1
  27. includes/pum-sdk/freemius/includes/debug/index.php +3 -0
  28. includes/pum-sdk/freemius/includes/entities/class-fs-plugin-license.php +9 -1
  29. includes/pum-sdk/freemius/includes/entities/index.php +3 -0
  30. includes/pum-sdk/freemius/includes/fs-core-functions.php +94 -5
  31. includes/pum-sdk/freemius/includes/fs-essential-functions.php +21 -9
  32. includes/pum-sdk/freemius/includes/fs-plugin-info-dialog.php +368 -356
  33. includes/pum-sdk/freemius/includes/i18n.php +518 -534
  34. includes/pum-sdk/freemius/includes/index.php +3 -0
  35. includes/pum-sdk/freemius/includes/l10n.php +250 -0
  36. includes/pum-sdk/freemius/includes/managers/class-fs-admin-menu-manager.php +85 -21
  37. includes/pum-sdk/freemius/includes/managers/class-fs-admin-notice-manager.php +312 -312
  38. includes/pum-sdk/freemius/includes/managers/index.php +3 -0
  39. includes/pum-sdk/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php +8 -8
  40. includes/pum-sdk/freemius/includes/sdk/Exceptions/EmptyArgumentException.php +8 -8
  41. includes/pum-sdk/freemius/includes/sdk/Exceptions/Exception.php +73 -73
  42. includes/pum-sdk/freemius/includes/sdk/Exceptions/InvalidArgumentException.php +7 -7
  43. includes/pum-sdk/freemius/includes/sdk/Exceptions/OAuthException.php +11 -11
  44. includes/pum-sdk/freemius/includes/sdk/Exceptions/index.php +3 -0
  45. includes/pum-sdk/freemius/includes/sdk/Freemius.php +582 -582
  46. includes/pum-sdk/freemius/includes/sdk/FreemiusBase.php +188 -188
  47. includes/pum-sdk/freemius/includes/sdk/index.php +3 -0
  48. includes/pum-sdk/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +1 -1
  49. includes/pum-sdk/freemius/includes/supplements/index.php +3 -0
  50. includes/pum-sdk/freemius/index.php +3 -0
  51. includes/pum-sdk/freemius/languages/freemius-en.mo +0 -0
  52. includes/pum-sdk/freemius/languages/freemius-en.po +581 -376
  53. includes/pum-sdk/freemius/languages/freemius-it_IT.mo +0 -0
  54. includes/pum-sdk/freemius/languages/freemius-it_IT.po +578 -375
  55. includes/pum-sdk/freemius/languages/freemius-ja_JP.mo +0 -0
  56. includes/pum-sdk/freemius/languages/freemius-ja_JP.po +1662 -0
  57. includes/pum-sdk/freemius/languages/freemius.pot +568 -369
  58. includes/pum-sdk/freemius/languages/index.php +3 -0
  59. includes/pum-sdk/freemius/package.json +2 -2
  60. includes/pum-sdk/freemius/start.php +307 -307
  61. includes/pum-sdk/freemius/templates/account.php +53 -46
  62. includes/pum-sdk/freemius/templates/add-ons.php +11 -0
  63. includes/pum-sdk/freemius/templates/checkout-legacy.php +242 -0
  64. includes/pum-sdk/freemius/templates/checkout.php +43 -24
  65. includes/pum-sdk/freemius/templates/connect.php +406 -404
  66. includes/pum-sdk/freemius/templates/debug.php +289 -113
  67. includes/pum-sdk/freemius/templates/debug/index.php +3 -0
  68. includes/pum-sdk/freemius/templates/debug/logger.php +3 -3
  69. includes/pum-sdk/freemius/templates/email.php +3 -3
  70. includes/pum-sdk/freemius/templates/forms/deactivation/index.php +3 -0
  71. includes/pum-sdk/freemius/templates/forms/index.php +3 -0
  72. includes/pum-sdk/freemius/templates/forms/license-activation.php +6 -6
  73. includes/pum-sdk/freemius/templates/forms/optout.php +18 -13
  74. includes/pum-sdk/freemius/templates/forms/resend-key.php +108 -58
  75. includes/pum-sdk/freemius/templates/forms/trial-start.php +11 -7
  76. includes/pum-sdk/freemius/templates/index.php +3 -0
  77. includes/pum-sdk/freemius/templates/plugin-icon.php +1 -1
  78. includes/pum-sdk/freemius/templates/plugin-info/index.php +3 -0
  79. popup-maker.php +2 -2
  80. readme.txt +9 -5
assets/js/site.js CHANGED
@@ -2426,6 +2426,26 @@ var pum_debug_mode = false,
2426
  .data('do-default', settings.do_default)
2427
  .attr('data-do-default', settings.do_default)
2428
  .css({cursor: "pointer"});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2429
  },
2430
  admin_debug: function () {
2431
  PUM.getPopup(this).popmake('open');
@@ -2459,6 +2479,11 @@ var pum_debug_mode = false,
2459
  return;
2460
  }
2461
 
 
 
 
 
 
2462
  // If cookie exists or conditions fail return.
2463
  if ($popup.popmake('checkCookies', settings) || !$popup.popmake('checkConditions')) {
2464
  return;
2426
  .data('do-default', settings.do_default)
2427
  .attr('data-do-default', settings.do_default)
2428
  .css({cursor: "pointer"});
2429
+
2430
+ // Catches and initializes any triggers added to the page late.
2431
+ $(document).on('click', trigger_selector+':not(.pum-trigger)', function (event) {
2432
+ var $this = $(this);
2433
+
2434
+ $this
2435
+ .addClass('pum-trigger')
2436
+ .data('popup', popup_settings.id)
2437
+ .attr('data-popup', popup_settings.id)
2438
+ .data('settings', settings)
2439
+ .data('do-default', settings.do_default)
2440
+ .attr('data-do-default', settings.do_default)
2441
+ .css({cursor: "pointer"});
2442
+
2443
+ event.preventDefault();
2444
+ event.stopPropagation();
2445
+
2446
+ // TODO test this.
2447
+ $this.trigger('click');
2448
+ });
2449
  },
2450
  admin_debug: function () {
2451
  PUM.getPopup(this).popmake('open');
2479
  return;
2480
  }
2481
 
2482
+ // If the popup is already open return.
2483
+ if ($popup.popmake('state', 'isOpen')) {
2484
+ return;
2485
+ }
2486
+
2487
  // If cookie exists or conditions fail return.
2488
  if ($popup.popmake('checkCookies', settings) || !$popup.popmake('checkConditions')) {
2489
  return;
assets/js/site.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){"use strict";void 0===e.fn.on&&(e.fn.on=function(e,t,o){return this.delegate(t,e,o)}),void 0===e.fn.off&&(e.fn.off=function(e,t,o){return this.undelegate(t,e,o)}),void 0===e.fn.bindFirst&&(e.fn.bindFirst=function(t,o){var n,i,p=e(this);p.unbind(t,o),p.bind(t,o),n=e._data(p[0]).events,i=n[t],i.unshift(i.pop()),n[t]=i}),void 0===e.fn.outerHtml&&(e.fn.outerHtml=function(){var t=e(this).clone(),o=e("<div/>").append(t);return o.html()}),void 0===Date.now&&(Date.now=function(){return(new Date).getTime()})}(jQuery);var PUM;!function(e,t,o){"use strict";function n(e){return!isNaN(e)&&parseInt(Number(e))==e&&!isNaN(parseInt(e,10))}function i(){var e={},t=function(t,n,i){"boolean"==typeof n&&(i=n,n=!1);var p=n?n.selector+" "+t:t;return(o===e[p]||i)&&(e[p]=n?n.find(t):jQuery(t)),e[p]};return t.elementCache=e,t}function p(e,t){function o(e,t,o){return t?e[t.slice(0,o?-1:t.length)]:e}function n(e,t){return t?t.split("[").reduce(o,e):e}return t.split(".").reduce(n,e)}PUM={get:new i,getPopup:function(t){var o;return o=n(t)?PUM.get("#pum-"+t):"current"===t?PUM.get(".pum-overlay.pum-active:eq(0)",!0):"open"===t?PUM.get(".pum-overlay.pum-active",!0):"closed"===t?PUM.get(".pum-overlay:not(.pum-active)",!0):t instanceof jQuery?t:e(t),o.hasClass("pum-overlay")?o:o.hasClass("popmake")?o.parents(".pum-overlay"):o.parents(".pum-overlay").length?o.parents(".pum-overlay"):e()},open:function(e,t){PUM.getPopup(e).popmake("open",t)},close:function(e,t){PUM.getPopup(e).popmake("close",t)},preventOpen:function(e){PUM.getPopup(e).addClass("preventOpen")},getSettings:function(e){var t=PUM.getPopup(e);return t.popmake("getSettings")},getSetting:function(e,t,n){var i=PUM.getSettings(e),a=p(i,t);return"undefined"!=typeof a?a:n!==o?n:null},checkConditions:function(e){return PUM.getPopup(e).popmake("checkConditions")},getCookie:function(t){return e.pm_cookie(t)},clearCookie:function(t,o){e.pm_remove_cookie(t),"function"==typeof o&&o()},clearCookies:function(t,n){var i,p=PUM.getPopup(t),a=p.popmake("getSettings"),s=a.cookies;if(s!==o&&s.length)for(i=0;s.length>i;i+=1)e.pm_remove_cookie(s[i].settings.name);"function"==typeof n&&n()}},e.fn.popmake=function(o){return e.fn.popmake.methods[o]?(e(t).trigger("pumMethodCall",arguments),e.fn.popmake.methods[o].apply(this,Array.prototype.slice.call(arguments,1))):"object"!=typeof o&&o?void(window.console&&console.warn("Method "+o+" does not exist on $.fn.popmake")):e.fn.popmake.methods.init.apply(this,arguments)},e.fn.popmake.methods={init:function(t){return this.each(function(){var n=PUM.getPopup(this),i=e.extend(!0,{},e.fn.popmake.defaults,n.data("popmake"),t);return i.theme_id<=0&&(i.theme_id=popmake_default_theme),i.meta.display.disable_reposition===o&&e(window).on("resize",function(){(n.hasClass("pum-active")||n.find(".popmake.active").length)&&e.fn.popmake.utilities.throttle(setTimeout(function(){n.popmake("reposition")},25),500,!1)}),n.find(".pum-container").data("popmake",i),n.data("popmake",i).trigger("pumInit"),this})},getOverlay:function(){return e(this)},getContainer:function(){return e(this).find(".pum-container")},getTitle:function(){return e(this).find(".pum-title")||null},getContent:function(){return e(this).find(".pum-content")||null},getClose:function(){return e(this).find(".pum-content + .pum-close")||null},getSettings:function(){return e(this).data("popmake")},state:function(e){var t=PUM.getPopup(this);if(o!==e)switch(e){case"isOpen":return t.hasClass("pum-open")||t.popmake("getContainer").hasClass("active");case"isClosed":return!t.hasClass("pum-open")&&!t.popmake("getContainer").hasClass("active")}},open:function(t){var n=PUM.getPopup(this),i=n.popmake("getContainer"),p=n.popmake("getClose"),a=n.popmake("getSettings"),s=e("html");return n.trigger("pumBeforeOpen"),n.hasClass("preventOpen")||i.hasClass("preventOpen")?(console.log("prevented"),n.removeClass("preventOpen").removeClass("pum-active").trigger("pumOpenPrevented"),this):(a.meta.display.stackable||n.popmake("close_all"),n.addClass("pum-active"),a.meta.close.button_delay>0&&p.fadeOut(0),s.addClass("pum-open"),a.meta.display.overlay_disabled?s.addClass("pum-open-overlay-disabled"):s.addClass("pum-open-overlay"),a.meta.display.position_fixed!==o&&a.meta.display.position_fixed?s.addClass("pum-open-fixed"):s.addClass("pum-open-scrollable"),n.popmake("setup_close").popmake("reposition").css({"z-index":a.meta.display.overlay_zindex||1999999998}).popmake("animate",a.meta.display.animation_type,function(){a.meta.close.button_delay>0&&setTimeout(function(){p.fadeIn()},a.meta.close.button_delay),n.trigger("pumAfterOpen"),e.fn.popmake.last_open_popup=n,t!==o&&t()}),this)},setup_close:function(){var t=PUM.getPopup(this),n=t.popmake("getClose").add(e(".popmake-close",t).not(t.popmake("getClose"))),i=t.popmake("getSettings");return n.off("click.pum").on("click.pum",function(n){var i=e(this),p=i.hasClass("pum-do-default")||i.data("do-default")!==o&&i.data("do-default");p||n.preventDefault(),e.fn.popmake.last_close_trigger="Close Button",t.popmake("close")}),(i.meta.close.esc_press||i.meta.close.f4_press)&&e(window).off("keyup.popmake").on("keyup.popmake",function(o){27===o.keyCode&&i.meta.close.esc_press&&(e.fn.popmake.last_close_trigger="ESC Key",t.popmake("close")),115===o.keyCode&&i.meta.close.f4_press&&(e.fn.popmake.last_close_trigger="F4 Key",t.popmake("close"))}),i.meta.close.overlay_click&&t.off("click.popmake").on("click.popmake",function(o){o.target===t[0]&&(e.fn.popmake.last_close_trigger="Overlay Click",t.popmake("close"))}),t.trigger("pumSetupClose"),this},close:function(t){return this.each(function(){var n=PUM.getPopup(this),i=n.popmake("getContainer"),p=n.popmake("getClose").add(e(".popmake-close",n).not(n.popmake("getClose")));return n.trigger("pumBeforeClose"),n.hasClass("preventClose")||i.hasClass("preventClose")?(n.removeClass("preventClose").trigger("pumClosePrevented"),this):(i.fadeOut("fast",function(){n.is(":visible")&&n.fadeOut("fast"),e(window).off("keyup.popmake"),n.off("click.popmake"),p.off("click.popmake"),1===e(".pum-active").length&&e("html").removeClass("pum-open").removeClass("pum-open-scrollable").removeClass("pum-open-overlay").removeClass("pum-open-overlay-disabled").removeClass("pum-open-fixed"),n.removeClass("pum-active").trigger("pumAfterClose"),i.find("iframe").filter('[src*="youtube"],[src*="vimeo"]').each(function(){var t=e(this),o=t.attr("src"),n=o.replace("autoplay=1","1=1");n!==o&&(o=n),t.prop("src",o)}),i.find("video").each(function(){this.pause()}),t!==o&&t()}),this)})},close_all:function(){return e(".pum-active").popmake("close"),this},reposition:function(t){var o=PUM.getPopup(this).trigger("pumBeforeReposition"),n=o.popmake("getContainer"),i=o.popmake("getSettings"),p=i.meta.display,a=p.location,s={my:"",at:"",of:window,collision:"none",using:"function"==typeof t?t:e.fn.popmake.callbacks.reposition_using},r={overlay:null,container:null},l=null;try{l=e(e.fn.popmake.last_open_trigger)}catch(c){l=e()}return p.position_from_trigger&&l.length?(s.of=l,a.indexOf("left")>=0&&(s.my+=" right",s.at+=" left"+(0!==p.position_left?"-"+p.position_left:"")),a.indexOf("right")>=0&&(s.my+=" left",s.at+=" right"+(0!==p.position_right?"+"+p.position_right:"")),a.indexOf("center")>=0&&(s.my="center"===a?"center":s.my+" center",s.at="center"===a?"center":s.at+" center"),a.indexOf("top")>=0&&(s.my+=" bottom",s.at+=" top"+(0!==p.position_top?"-"+p.position_top:"")),a.indexOf("bottom")>=0&&(s.my+=" top",s.at+=" bottom"+(0!==p.position_bottom?"+"+p.position_bottom:""))):(a.indexOf("left")>=0&&(s.my+=" left"+(0!==p.position_left?"+"+p.position_left:""),s.at+=" left"),a.indexOf("right")>=0&&(s.my+=" right"+(0!==p.position_right?"-"+p.position_right:""),s.at+=" right"),a.indexOf("center")>=0&&(s.my="center"===a?"center":s.my+" center",s.at="center"===a?"center":s.at+" center"),a.indexOf("top")>=0&&(s.my+=" top"+(0!==p.position_top?"+"+(e("body").hasClass("admin-bar")?parseInt(p.position_top,10)+32:p.position_top):""),s.at+=" top"),a.indexOf("bottom")>=0&&(s.my+=" bottom"+(0!==p.position_bottom?"-"+p.position_bottom:""),s.at+=" bottom")),s.my=e.trim(s.my),s.at=e.trim(s.at),o.is(":hidden")&&(r.overlay=o.css("opacity"),o.css({opacity:0}).show()),n.is(":hidden")&&(r.container=n.css("opacity"),n.css({opacity:0}).show()),p.position_fixed&&n.addClass("fixed"),"custom"===i.meta.display.size?n.css({width:i.meta.display.custom_width+i.meta.display.custom_width_unit,height:i.meta.display.custom_height_auto?"auto":i.meta.display.custom_height+i.meta.display.custom_height_unit}):"auto"!==i.meta.display.size&&n.addClass("responsive").css({minWidth:""!==i.meta.display.responsive_min_width?i.meta.display.responsive_min_width+i.meta.display.responsive_min_width_unit:"auto",maxWidth:""!==i.meta.display.responsive_max_width?i.meta.display.responsive_max_width+i.meta.display.responsive_max_width_unit:"auto"}),o.trigger("pumAfterReposition"),n.addClass("custom-position").position(s).trigger("popmakeAfterReposition"),r.overlay&&o.css({opacity:r.overlay}).hide(),r.container&&n.css({opacity:r.container}).hide(),this},retheme:function(t){e(this).trigger("popmakeBeforeRetheme");var n,i,p=PUM.getPopup(this),a=p.popmake("getContainer"),s=p.popmake("getTitle"),r=p.popmake("getContent"),l=p.popmake("getClose"),c=p.popmake("getSettings");switch(t===o&&(t=e.fn.popmake.themes[c.theme_id],t===o&&(t=e.fn.popmake.themes[1])),n="yes"===t.container.boxshadow_inset?"inset ":"",i="yes"===t.close.boxshadow_inset?"inset ":"",p.removeAttr("style").css({backgroundColor:e.fn.popmake.utilities.convert_hex(t.overlay.background_color,t.overlay.background_opacity),zIndex:c.meta.display.overlay_zindex||998}),a.css({padding:t.container.padding+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.container.background_color,t.container.background_opacity),borderStyle:t.container.border_style,borderColor:t.container.border_color,borderWidth:t.container.border_width+"px",borderRadius:t.container.border_radius+"px",boxShadow:n+t.container.boxshadow_horizontal+"px "+t.container.boxshadow_vertical+"px "+t.container.boxshadow_blur+"px "+t.container.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.container.boxshadow_color,t.container.boxshadow_opacity),zIndex:c.meta.display.zindex||999}),s.css({color:t.title.font_color,lineHeight:t.title.line_height+"px",fontSize:t.title.font_size+"px",fontFamily:t.title.font_family,fontWeight:t.title.font_weight,fontStyle:t.title.font_style,textAlign:t.title.text_align,textShadow:t.title.textshadow_horizontal+"px "+t.title.textshadow_vertical+"px "+t.title.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.title.textshadow_color,t.title.textshadow_opacity)}),r.css({color:t.content.font_color,fontFamily:t.content.font_family,fontWeight:t.content.font_weight,fontStyle:t.content.font_style}),e("p, label",r).css({color:t.content.font_color,fontFamily:t.content.font_family}),l.html(t.close.text).css({padding:t.close.padding+"px",height:t.close.height+"px",width:t.close.width+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.close.background_color,t.close.background_opacity),color:t.close.font_color,lineHeight:t.close.line_height+"px",fontSize:t.close.font_size+"px",fontWeight:t.close.font_weight,fontStyle:t.close.font_style,fontFamily:t.close.font_family,borderStyle:t.close.border_style,borderColor:t.close.border_color,borderWidth:t.close.border_width+"px",borderRadius:t.close.border_radius+"px",boxShadow:i+t.close.boxshadow_horizontal+"px "+t.close.boxshadow_vertical+"px "+t.close.boxshadow_blur+"px "+t.close.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.close.boxshadow_color,t.close.boxshadow_opacity),textShadow:t.close.textshadow_horizontal+"px "+t.close.textshadow_vertical+"px "+t.close.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.close.textshadow_color,t.close.textshadow_opacity),left:"auto",right:"auto",bottom:"auto",top:"auto"}),t.close.location){case"topleft":l.css({top:t.close.position_top+"px",left:t.close.position_left+"px"});break;case"topright":l.css({top:t.close.position_top+"px",right:t.close.position_right+"px"});break;case"bottomleft":l.css({bottom:t.close.position_bottom+"px",left:t.close.position_left+"px"});break;case"bottomright":l.css({bottom:t.close.position_bottom+"px",right:t.close.position_right+"px"})}return p.trigger("popmakeAfterRetheme",[t]),this},animation_origin:function(t){var o=PUM.getPopup(this),n=o.popmake("getContainer"),i={my:"",at:""};switch(t){case"top":i={my:"left+"+n.offset().left+" bottom-100",at:"left top"};break;case"bottom":i={my:"left+"+n.offset().left+" top+100",at:"left bottom"};break;case"left":i={my:"right top+"+n.offset().top,at:"left top"};break;case"right":i={my:"left top+"+n.offset().top,at:"right top"};break;default:t.indexOf("left")>=0&&(i={my:i.my+" right",at:i.at+" left"}),t.indexOf("right")>=0&&(i={my:i.my+" left",at:i.at+" right"}),t.indexOf("center")>=0&&(i={my:i.my+" center",at:i.at+" center"}),t.indexOf("top")>=0&&(i={my:i.my+" bottom-100",at:i.at+" top"}),t.indexOf("bottom")>=0&&(i={my:i.my+" top+100",at:i.at+" bottom"}),i.my=e.trim(i.my),i.at=e.trim(i.at)}return i.of=window,i.collision="none",i}}}(jQuery,document);var PUM_Accessibility;!function(e,t,o){"use strict";var n,i,p,a="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";PUM_Accessibility={forceFocus:function(t){p&&!e.contains(p,t.target)&&(t.stopPropagation(),PUM_Accessibility.setFocusToFirstItem())},trapTabKey:function(t){if(9===t.keyCode){var o=p.find(".pum-container *").filter(a).filter(":visible"),n=e(":focus"),i=o.length,s=o.index(n);t.shiftKey?0===s&&(o.get(i-1).focus(),t.preventDefault()):s===i-1&&(o.get(0).focus(),t.preventDefault())}},setFocusToFirstItem:function(){p.find(".pum-container *").filter(a).filter(":visible").filter(":not(.pum-close)").first().focus()}},e(t).on("pumInit",".pum",function(){PUM.getPopup(this).find("[tabindex]").each(function(){var t=e(this);t.data("tabindex",t.attr("tabindex")).prop("tabindex","0")})}).on("pumBeforeOpen",".pum",function(){var o=PUM.getPopup(this),a=e(":focus");o.has(a).length||(i=a),p=o.on("keydown.pum_accessibility",PUM_Accessibility.trapTabKey).attr("aria-hidden","false"),n=e("body > *").filter(":visible").not(p),n.attr("aria-hidden","true"),e(t).on("focus.pum_accessibility",PUM_Accessibility.forceFocus),PUM_Accessibility.setFocusToFirstItem()}).on("pumAfterOpen",".pum",function(){}).on("pumBeforeClose",".pum",function(){}).on("pumAfterClose",".pum",function(){var a=PUM.getPopup(this);a.off("keydown.pum_accessibility").attr("aria-hidden","true"),n&&(n.attr("aria-hidden","false"),n=null),i!==o&&i.length&&i.focus(),p=null,e(t).off("focus.pum_accessibility")}).on("pumSetupClose",".pum",function(){}).on("pumOpenPrevented",".pum",function(){}).on("pumClosePrevented",".pum",function(){}).on("pumBeforeReposition",".pum",function(){})}(jQuery,document);var PUM_Analytics;!function(e,t,o){"use strict";e.fn.popmake.last_open_trigger=null,e.fn.popmake.last_close_trigger=null,e.fn.popmake.conversion_trigger=null;var n=!("undefined"==typeof pum_vars.restapi||!pum_vars.restapi);PUM_Analytics={beacon:function(t){var o=new Image,i=n?pum_vars.restapi:pum_vars.ajaxurl;t=e.extend(!0,{route:"/analytics/open",type:"open",data:{pid:null,_cache:+new Date},callback:function(){}},t),n?i+=t.route:(t.data.action="pum_analytics",t.data.type=t.type),i&&(e(o).on("error success load done",t.callback),o.src=i+"?"+e.param(t.data))}},pum_vars.disable_open_tracking!==o&&pum_vars.disable_open_tracking||e(t).on("pumAfterOpen.core_analytics","body > .pum",function(){var t=PUM.getPopup(this),o={pid:parseInt(t.popmake("getSettings").id,10)||null};o.pid>0&&!e("body").hasClass("single-popup")&&PUM_Analytics.beacon({data:o})})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.methods.animate_overlay=function(t,o,n){var i=PUM.getPopup(this).popmake("getSettings");return i.meta.display.overlay_disabled?e.fn.popmake.overlay_animations.none.apply(this,[o,n]):e.fn.popmake.overlay_animations[t]?e.fn.popmake.overlay_animations[t].apply(this,[o,n]):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.methods.animate=function(t){return e.fn.popmake.animations[t]?e.fn.popmake.animations[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.animations={none:function(e){var t=PUM.getPopup(this);return t.popmake("getContainer").show(0),t.popmake("animate_overlay","none",0,function(){e!==o&&e()}),this},slide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),p=i.meta.display.animation_speed/2,a=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(a).css({opacity:1}),t.css({opacity:1}).popmake("animate_overlay","fade",p,function(){n.popmake("reposition",function(t){n.animate(t,p,"swing",function(){e!==o&&e()})})}),this},fade:function(e){var t=PUM.getPopup(this),n=t.popmake("getContainer"),i=t.popmake("getSettings"),p=i.meta.display.animation_speed/2;return n.show(0).css({opacity:0}),t.popmake("animate_overlay","fade",p,function(){n.animate({opacity:1},p,"swing",function(){e!==o&&e()})}),this},fadeAndSlide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),p=i.meta.display.animation_speed/2,a=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(a),t.hide().css({opacity:1}).popmake("animate_overlay","fade",p,function(){n.popmake("reposition",function(t){t.opacity=1,n.animate(t,p,"swing",function(){e!==o&&e()})})}),this},grow:function(t){return e.fn.popmake.animations.fade.apply(this,arguments)},growAndSlide:function(t){return e.fn.popmake.animations.fadeAndSlide.apply(this,arguments)}},e.fn.popmake.overlay_animations={none:function(e,t){PUM.getPopup(this).show(e,t)},fade:function(e,t){PUM.getPopup(this).fadeIn(e,t)},slide:function(e,t){PUM.getPopup(this).slideDown(e,t)}}}(jQuery,document),function(e,t,o){"use strict";e(t).on("pumInit",".pum",function(){e(this).popmake("getContainer").trigger("popmakeInit")}).on("pumBeforeOpen",".pum",function(){e(this).popmake("getContainer").addClass("active").trigger("popmakeBeforeOpen")}).on("pumAfterOpen",".pum",function(){e(this).popmake("getContainer").trigger("popmakeAfterOpen")}).on("pumBeforeClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeClose")}).on("pumAfterClose",".pum",function(){e(this).popmake("getContainer").removeClass("active").trigger("popmakeAfterClose")}).on("pumSetupClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeSetupClose")}).on("pumOpenPrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventOpen").removeClass("active")}).on("pumClosePrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventClose")}).on("pumBeforeReposition",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeReposition")})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.callbacks={reposition_using:function(t){e(this).css(t)}}}(jQuery,document),function(e,t,o){"use strict";var n;e.extend(e.fn.popmake.methods,{checkConditions:function(){var t,i,p,a,s,r=PUM.getPopup(this),l=r.popmake("getSettings"),c=!0;if(l.mobile_disabled!==o&&l.mobile_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.phone()))return!1;if(l.tablet_disabled!==o&&l.tablet_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.tablet()))return!1;if(l.conditions!==o&&l.conditions.length)for(i=0;l.conditions.length>i;i++){for(a=l.conditions[i],t=!1,p=0;a.length>p&&(s=e.extend({},{not_operand:!1},a[p]),!s.not_operand&&r.popmake("checkCondition",s)?t=!0:s.not_operand&&!r.popmake("checkCondition",s)&&(t=!0),e(this).trigger("pumCheckingCondition",[t,s]),!t);p++);t||(c=!1)}return c},checkCondition:function(t){var o=t.target||null;return o?e.fn.popmake.conditions[o]?e.fn.popmake.conditions[o].apply(this,[t]):window.console?(console.warn("Condition "+o+" does not exist."),!0):void 0:(console.warn("Condition type not set."),!1)}}),e.fn.popmake.conditions={device_is_mobile:function(e){return n.mobile()}}}(jQuery,document);var pm_cookie,pm_cookie_json,pm_remove_cookie;!function(e){"use strict";function t(t){function o(n,i,p){var a,s=new Date;if("undefined"!=typeof document){if(arguments.length>1){switch(p=e.extend({path:"/"},o.defaults,p),typeof p.expires){case"number":s.setMilliseconds(s.getMilliseconds()+864e5*p.expires),p.expires=s;break;case"string":s.setTime(1e3*e.fn.popmake.utilities.strtotime("+"+p.expires)),p.expires=s}try{a=JSON.stringify(i),/^[\{\[]/.test(a)&&(i=a)}catch(r){}return i=t.write?t.write(i,n):encodeURIComponent(String(i)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",i,p.expires?"; expires="+p.expires.toUTCString():"",p.path?"; path="+p.path:"",p.domain?"; domain="+p.domain:"",p.secure?"; secure":""].join("")}n||(a={});for(var l=document.cookie?document.cookie.split("; "):[],c=/(%[0-9A-Z]{2})+/g,u=0;u<l.length;u++){var m=l[u].split("="),d=m.slice(1).join("=");'"'===d.charAt(0)&&(d=d.slice(1,-1));try{var f=m[0].replace(c,decodeURIComponent);if(d=t.read?t.read(d,f):t(d,f)||d.replace(c,decodeURIComponent),this.json)try{d=JSON.parse(d)}catch(r){}if(n===f){a=d;break}n||(a[f]=d)}catch(r){}}return a}}return void 0===t&&(t=function(){}),o.set=o,o.get=function(e){return o.call(o,e)},o.getJSON=function(){return o.apply({json:!0},[].slice.call(arguments))},o.defaults={},o.remove=function(t,n){o(t,"",e.extend({},n,{expires:-1,path:""})),o(t,"",e.extend({},n,{expires:-1}))},o.process=function(e,t,n,i){return arguments.length>3&&"object"!=typeof arguments[2]&&void 0!==t?o.apply(o,[e,t,{expires:n,path:i}]):o.apply(o,[].slice.call(arguments,[0,2]))},o.withConverter=e.fn.popmake.cookie,o}e.extend(e.fn.popmake,{cookie:t()}),pm_cookie=e.pm_cookie=e.fn.popmake.cookie.process,pm_cookie_json=e.pm_cookie_json=e.fn.popmake.cookie.getJSON,pm_remove_cookie=e.pm_remove_cookie=e.fn.popmake.cookie.remove}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addCookie:function(t){return pum.hooks.doAction("popmake.addCookie",arguments),e.fn.popmake.cookies[t]?e.fn.popmake.cookies[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Cookie type "+t+" does not exist."),this)},setCookie:function(t){e.pm_cookie(t.name,!0,t.session?null:t.time,t.path?"/":null),pum.hooks.doAction("popmake.setCookie",t)},checkCookies:function(t){var n,i=!1;if(t.cookie===o||t.cookie.name===o||null===t.cookie.name)return!1;switch(typeof t.cookie.name){case"object":case"array":for(n=0;t.cookie.name.length>n;n+=1)e.pm_cookie(t.cookie.name[n])!==o&&(i=!0);break;case"string":e.pm_cookie(t.cookie.name)!==o&&(i=!0)}return pum.hooks.doAction("popmake.checkCookies",t,i),i}}),e.fn.popmake.cookies={on_popup_open:function(e){var t=PUM.getPopup(this);t.on("pumAfterOpen",function(){t.popmake("setCookie",e)})},on_popup_close:function(e){var t=PUM.getPopup(this);t.on("pumBeforeClose",function(){t.popmake("setCookie",e)})},manual:function(e){var t=PUM.getPopup(this);t.on("pumSetCookie",function(){t.popmake("setCookie",e)})},ninja_form_success:function(e){var t=PUM.getPopup(this);t.on("pum_nf.success",function(){t.popmake("setCookie",e)})}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.cookies,p=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)p=i[e],t.popmake("addCookie",p.event,p.settings)})}(jQuery,document);var pum_debug_mode=!1,pum_debug;!function(e,t){if(t=window.pum_vars||{debug_mode:!1},pum_debug_mode=void 0!==t.debug_mode&&t.debug_mode,pum_debug_mode||window.location.href.indexOf("pum_debug")===-1||(pum_debug_mode=!0),pum_debug_mode){var o=!1,n=!1,i=window.pum_debug_vars||{};pum_debug={odump:function(t){return e.extend({},t)},logo:function(){console.log(" -------------------------------------------------------------\n| ____ __ __ _ |\n| | _ \\ ___ _ __ _ _ _ __ | \\/ | __ _| | _____ _ __ |\n| | |_) / _ \\| '_ \\| | | | '_ \\ | |\\/| |/ _` | |/ / _ \\ '__| |\n| | __/ (_) | |_) | |_| | |_) | | | | | (_| | < __/ | |\n| |_| \\___/| .__/ \\__,_| .__/ |_| |_|\\__,_|_|\\_\\___|_| |\n| |_| |_| |\n -------------------------------------------------------------")},initialize:function(){o=!0,pum_debug.logo(),console.debug(i.debug_mode_enabled),console.log(i.debug_started_at,new Date),console.info(i.debug_more_info),pum_debug.divider(i.global_info),console.groupCollapsed(i.localized_vars),console.log("pum_vars:",pum_debug.odump(t)),e(document).trigger("pum_debug_initialize_localized_vars"),console.groupEnd(),e(document).trigger("pum_debug_initialize")},popup_event_header:function(e){var t=e.popmake("getSettings");n!==t.id&&(n=t.id,pum_debug.divider(i.single_popup_label+t.id+" - "+t.slug))},divider:function(e){var t=62,o=62,n=0,i=" "+new Array(t+1).join("-")+" ";"string"==typeof e?(o=t-e.length,n={left:Math.floor(o/2),right:Math.floor(o/2)},n.left+n.right===o-1&&n.right++,n.left=new Array(n.left+1).join(" "),n.right=new Array(n.right+1).join(" "),console.log(""+i+"\n|"+n.left+e+n.right+"|\n"+i)):console.log(i)},click_trigger:function(e,t){var o,n=e.popmake("getSettings"),p=[".popmake-"+n.id,".popmake-"+decodeURIComponent(n.slug),'a[href$="#popmake-'+n.id+'"]'];t.extra_selectors&&""!==t.extra_selectors&&p.push(t.extra_selectors),p=pum.hooks.applyFilters("pum.trigger.click_open.selectors",p,t,e),o=p.join(", "),console.log(i.label_selector,o)},trigger:function(t,o){switch(console.groupCollapsed(i.triggers[o.type].name),o.type){case"auto_open":console.log(i.label_delay,o.settings.delay),console.log(i.label_cookie,o.settings.cookie.name);break;case"click_open":pum_debug.click_trigger(t,o.settings),console.log(i.label_cookie,o.settings.cookie.name)}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()},cookie:function(t,o){switch(console.groupCollapsed(i.cookies[o.event].name),o.event){case"on_popup_open":case"on_popup_close":case"manual":case"ninja_form_success":console.log(i.label_settings,pum_debug.odump(o.settings))}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()}},e(document).on("pumInit",".pum",function(){var t=PUM.getPopup(e(this)),n=t.popmake("getSettings"),p=0;if(o||(pum_debug.initialize(),pum_debug.divider(i.popups_initializing)),console.groupCollapsed(i.single_popup_label+n.id+" - "+n.slug),console.log(i.theme_id,n.theme_id),void 0!==n.triggers&&n.triggers.length){for(console.groupCollapsed(i.label_triggers),p=0;n.triggers.length>p;p++)pum_debug.trigger(t,n.triggers[p]);console.groupEnd()}if(void 0!==n.cookies&&n.cookies.length){for(console.groupCollapsed(i.label_cookies),p=0;n.cookies.length>p;p+=1)pum_debug.cookie(t,n.cookies[p]);console.groupEnd()}void 0!==n.conditions&&n.conditions.length&&(console.groupCollapsed(i.label_conditions),console.log(n.conditions),console.groupEnd()),console.groupCollapsed(i.label_popup_settings),console.log(i.label_mobile_disabled,null!==n.mobile_disabled),console.log(i.label_tablet_disabled,null!==n.tablet_disabled),console.log(i.label_display_settings,pum_debug.odump(n.meta.display)),console.log(i.label_close_settings,pum_debug.odump(n.meta.close)),t.trigger("pum_debug_popup_settings");var a=pum.hooks.applyFilters("pum_debug.popup_settings.cleaned_meta",pum_debug.odump(n.meta),t);delete a.display,delete a.close,delete a.click_open,a.length&&console.log("Meta: ",a),console.groupEnd(),console.groupEnd()}).on("pumBeforeOpen",".pum",function(){var t=PUM.getPopup(e(this)),o=(t.popmake("getSettings"),e.fn.popmake.last_open_trigger);pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_open);try{o=e(e.fn.popmake.last_open_trigger)}catch(n){o=e()}finally{o=o.length?o:e.fn.popmake.last_open_trigger.toString(),console.log(i.label_triggers,[o])}console.groupEnd()}).on("pumOpenPrevented",".pum",function(){var t=PUM.getPopup(e(this));pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_open_prevented),console.groupEnd()}).on("pumAfterOpen",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_open),console.groupEnd()}).on("pumSetupClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_setup_close),console.groupEnd()}).on("pumClosePrevented",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_close_prevented),console.groupEnd()}).on("pumBeforeClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_close),console.groupEnd()}).on("pumAfterClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_close),console.groupEnd()}).on("pumBeforeReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_reposition),console.groupEnd()}).on("pumAfterReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_reposition),console.groupEnd()}).on("pumCheckingCondition",".pum",function(t,o,n){var p=PUM.getPopup(e(this));p.popmake("getSettings");pum_debug.popup_event_header(p),console.groupCollapsed(i.label_event_checking_condition),console.log((n.not_operand?"(!) ":"")+n.target+": "+o,n),console.groupEnd()})}}(jQuery),function(e,t,o){"use strict";e.fn.popmake.defaults={meta:{display:{stackable:0,overlay_disabled:0,size:"medium",responsive_max_width:"",responsive_max_width_unit:"%",responsive_min_width:"",responsive_min_width_unit:"%",custom_width:"",custom_width_unit:"%",custom_height:"",custom_height_unit:"em",custom_height_auto:0,location:"center top",position_top:100,position_left:0,position_bottom:0,position_right:0,position_fixed:0,animation_type:"fade",animation_speed:350,animation_origin:"center top"},close:{overlay_click:0,esc_press:0,f4_press:0}},container:{active_class:"active",attr:{"class":"popmake"}},title:{attr:{"class":"popmake-title"}},content:{attr:{"class":"popmake-content"}},close:{close_speed:0,attr:{"class":"popmake-close"}},overlay:{attr:{id:"popmake-overlay","class":"popmake-overlay"}}}}(jQuery,document),function(e,t){"use strict";var o=function(){function e(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("actions",e,t,o,n)),u}function t(){var e=c.call(arguments),t=e.shift();return"string"==typeof t&&l("actions",t,e),u}function o(e,t){return"string"==typeof e&&a("actions",e,t),u}function n(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("filters",e,t,o,n)),u}function i(){var e=c.call(arguments),t=e.shift();return"string"==typeof t?l("filters",t,e):u}function p(e,t){return"string"==typeof e&&a("filters",e,t),u}function a(e,t,o,n){var i,p,a;if(m[e][t])if(o)if(i=m[e][t],n)for(a=i.length;a--;)p=i[a],p.callback===o&&p.context===n&&i.splice(a,1);else for(a=i.length;a--;)i[a].callback===o&&i.splice(a,1);else m[e][t]=[]}function s(e,t,o,n,i){var p={callback:o,priority:n,context:i},a=m[e][t];a?(a.push(p),a=r(a)):a=[p],m[e][t]=a}function r(e){for(var t,o,n,i=1,p=e.length;i<p;i++){for(t=e[i],o=i;(n=e[o-1])&&n.priority>t.priority;)e[o]=e[o-1],
2
- --o;e[o]=t}return e}function l(e,t,o){var n,i,p=m[e][t];if(!p)return"filters"===e&&o[0];if(i=p.length,"filters"===e)for(n=0;n<i;n++)o[0]=p[n].callback.apply(p[n].context,o);else for(n=0;n<i;n++)p[n].callback.apply(p[n].context,o);return"filters"!==e||o[0]}var c=Array.prototype.slice,u={removeFilter:p,applyFilters:i,addFilter:n,removeAction:o,doAction:t,addAction:e},m={actions:{},filters:{}};return u};e.pum=e.pum||{},e.pum.hooks=e.pum.hooks||new o}(window),function(e){"use strict";if("undefined"!=typeof Marionette&&"undefined"!=typeof nfRadio){var t=Marionette.Object.extend({initialize:function(){this.listenTo(nfRadio.channel("forms"),"submit:response",this.closePopup),this.listenTo(nfRadio.channel("forms"),"submit:response",this.openPopup),this.listenTo(nfRadio.channel("forms"),"submit:response",this.popupTriggers)},popupTriggers:function(t,o,n,i){var p;p=e("#nf-form-"+i+"-cont").parents(".pum"),p.length&&(p.trigger("pum_nf.success"),t.errors.length?p.trigger("pum_nf.error"):p.trigger("pum_nf.success"))},closePopup:function(t,o,n,i){var p;"undefined"==typeof t.data.actions||t.errors.length||"undefined"!=typeof t.data.actions.closepopup&&(p=e("#nf-form-"+i+"-cont").parents(".pum"),p.length&&setTimeout(function(){p.popmake("close")},parseInt(t.data.actions.closepopup)))},openPopup:function(t){var o;"undefined"==typeof t.data.actions||t.errors.length||"undefined"!=typeof t.data.actions.openpopup&&(o=e("#pum-"+parseInt(t.data.actions.openpopup)),o.length&&o.popmake("open"))}});jQuery(document).ready(function(){new t})}}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addTrigger:function(t){return e.fn.popmake.triggers[t]?e.fn.popmake.triggers[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Trigger type "+t+" does not exist."),this)}}),e.fn.popmake.triggers={auto_open:function(t){var o=PUM.getPopup(this);setTimeout(function(){o.popmake("state","isOpen")||!o.popmake("checkCookies",t)&&o.popmake("checkConditions")&&(e.fn.popmake.last_open_trigger="Auto Open - Delay: "+t.delay,o.popmake("open"))},t.delay)},click_open:function(t){var o,n=PUM.getPopup(this),i=n.popmake("getSettings"),p=[".popmake-"+i.id,".popmake-"+decodeURIComponent(i.slug),'a[href$="#popmake-'+i.id+'"]'];t.extra_selectors&&""!==t.extra_selectors&&p.push(t.extra_selectors),p=pum.hooks.applyFilters("pum.trigger.click_open.selectors",p,t,n),o=p.join(", "),e(o).addClass("pum-trigger").data("popup",i.id).attr("data-popup",i.id).data("settings",t).data("do-default",t.do_default).attr("data-do-default",t.do_default).css({cursor:"pointer"})},admin_debug:function(){PUM.getPopup(this).popmake("open")}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.triggers,p=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)p=i[e],t.popmake("addTrigger",p.type,p.settings)}).on("click.pumTrigger",".pum-trigger[data-popup]",function(t){var o=e(this),n=PUM.getPopup(o.data("popup")),i=o.data("settings"),p=i.do_default||!1;n.has(o).length>0||!n.popmake("checkCookies",i)&&n.popmake("checkConditions")&&(o.data("do-default")?p=o.data("do-default"):o.hasClass("do-default")&&(p=!0),pum.hooks.applyFilters("pum.trigger.click_open.do_default",p,n,o)||(t.preventDefault(),t.stopPropagation()),e.fn.popmake.last_open_trigger=o,n.popmake("open"))})}(jQuery,document),function(e,t,o){"use strict";function n(t,o){return e.inArray(o,t)!==-1}function i(e,t,o){var n=t[0];t.length>1?(e[n]||(e[n]=t[1]?{}:[]),i(e[n],t.slice(1),o)):(n||(n=e.length),e[n]=o)}var p="color,date,datetime,datetime-local,email,hidden,month,number,password,range,search,tel,text,time,url,week".split(","),a="select,textarea".split(","),s=/\[([^\]]*)\]/g;e.fn.popmake.utilities={convert_hex:function(e,t){e=e.replace("#","");var o=parseInt(e.substring(0,2),16),n=parseInt(e.substring(2,4),16),i=parseInt(e.substring(4,6),16);return"rgba("+o+","+n+","+i+","+t/100+")"},debounce:function(e,t){var o;return function(){var n=this,i=arguments;window.clearTimeout(o),o=window.setTimeout(function(){e.apply(n,i)},t)}},throttle:function(e,t){var o=!1,n=function(){o=!1};return function(){o||(e.apply(this,arguments),window.setTimeout(n,t),o=!0)}},getXPath:function(t){var o,n,i,p,a,s=[];return e.each(e(t).parents(),function(t,r){return o=e(r),n=o.attr("id")||"",i=o.attr("class")||"",p=o.get(0).tagName.toLowerCase(),a=o.parent().children(p).index(o),"body"!==p&&(i.length>0&&(i=i.split(" "),i=i[0]),void s.push(p+(n.length>0?"#"+n:i.length>0?"."+i.split(" ").join("."):":eq("+a+")")))}),s.reverse().join(" > ")},strtotime:function(e,t){function n(e,t,n){var i,p=c[t];p!==o&&(i=p-l.getDay(),0===i?i=7*n:i>0&&"last"===e?i-=7:i<0&&"next"===e&&(i+=7),l.setDate(l.getDate()+i))}function i(e){var t=e.split(" "),o=t[0],i=t[1].substring(0,3),p=/\d+/.test(o),a="ago"===t[2],s=("last"===o?-1:1)*(a?-1:1);if(p&&(s*=parseInt(o,10)),u.hasOwnProperty(i)&&!t[1].match(/^mon(day|\.)?$/i))return l["set"+u[i]](l["get"+u[i]]()+s);if("wee"===i)return l.setDate(l.getDate()+7*s);if("next"===o||"last"===o)n(o,i,s);else if(!p)return!1;return!0}var p,a,s,r,l,c,u,m,d,f,g,_=!1;if(!e)return _;if(e=e.replace(/^\s+|\s+$/g,"").replace(/\s{2,}/g," ").replace(/[\t\r\n]/g,"").toLowerCase(),a=e.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/),a&&a[2]===a[4])if(a[1]>1901)switch(a[2]){case"-":return a[3]>12||a[5]>31?_:new Date(a[1],parseInt(a[3],10)-1,a[5],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3;case".":return _;case"/":return a[3]>12||a[5]>31?_:new Date(a[1],parseInt(a[3],10)-1,a[5],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3}else if(a[5]>1901)switch(a[2]){case"-":return a[3]>12||a[1]>31?_:new Date(a[5],parseInt(a[3],10)-1,a[1],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3;case".":return a[3]>12||a[1]>31?_:new Date(a[5],parseInt(a[3],10)-1,a[1],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3;case"/":return a[1]>12||a[3]>31?_:new Date(a[5],parseInt(a[1],10)-1,a[3],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3}else switch(a[2]){case"-":return a[3]>12||a[5]>31||a[1]<70&&a[1]>38?_:(r=a[1]>=0&&a[1]<=38?+a[1]+2e3:a[1],new Date(r,parseInt(a[3],10)-1,a[5],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3);case".":return a[5]>=70?a[3]>12||a[1]>31?_:new Date(a[5],parseInt(a[3],10)-1,a[1],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3:a[5]<60&&!a[6]?a[1]>23||a[3]>59?_:(s=new Date,new Date(s.getFullYear(),s.getMonth(),s.getDate(),a[1]||0,a[3]||0,a[5]||0,a[9]||0)/1e3):_;case"/":return a[1]>12||a[3]>31||a[5]<70&&a[5]>38?_:(r=a[5]>=0&&a[5]<=38?+a[5]+2e3:a[5],new Date(r,parseInt(a[1],10)-1,a[3],a[6]||0,a[7]||0,a[8]||0,a[9]||0)/1e3);case":":return a[1]>23||a[3]>59||a[5]>59?_:(s=new Date,new Date(s.getFullYear(),s.getMonth(),s.getDate(),a[1]||0,a[3]||0,a[5]||0)/1e3)}if("now"===e)return null===t||isNaN(t)?(new Date).getTime()/1e3||0:t||0;if(p=Date.parse(e),!isNaN(p))return p/1e3||0;if(l=t?new Date(1e3*t):new Date,c={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},u={yea:"FullYear",mon:"Month",day:"Date",hou:"Hours",min:"Minutes",sec:"Seconds"},d="(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)",f="([+-]?\\d+\\s"+d+"|(last|next)\\s"+d+")(\\sago)?",a=e.match(new RegExp(f,"gi")),!a)return _;for(g=0,m=a.length;g<m;g+=1)if(!i(a[g]))return _;return l.getTime()/1e3},serializeObject:function(t){e.extend({},t);var o={},r=e.extend(!0,{include:[],exclude:[],includeByClass:""},t);return this.find(":input").each(function(){var t;!this.name||this.disabled||n(r.exclude,this.name)||r.include.length&&!n(r.include,this.name)||this.className.indexOf(r.includeByClass)===-1||(t=this.name.replace(s,"[$1").split("["),t[0]&&(this.checked||n(p,this.type)||n(a,this.nodeName.toLowerCase()))&&("checkbox"===this.type&&t.push(""),i(o,t,e(this).val())))}),o}},e.fn.pumSerializeObject=e.fn.popmake.utilities.serializeObject,e.fn.popmake.utilies=e.fn.popmake.utilities}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.version=1.4,e.fn.popmake.last_open_popup=null,e(t).ready(function(){e(".popmake").popmake()})}(jQuery);
1
+ !function(e){"use strict";void 0===e.fn.on&&(e.fn.on=function(e,t,o){return this.delegate(t,e,o)}),void 0===e.fn.off&&(e.fn.off=function(e,t,o){return this.undelegate(t,e,o)}),void 0===e.fn.bindFirst&&(e.fn.bindFirst=function(t,o){var n,i,a=e(this);a.unbind(t,o),a.bind(t,o),n=e._data(a[0]).events,i=n[t],i.unshift(i.pop()),n[t]=i}),void 0===e.fn.outerHtml&&(e.fn.outerHtml=function(){var t=e(this).clone(),o=e("<div/>").append(t);return o.html()}),void 0===Date.now&&(Date.now=function(){return(new Date).getTime()})}(jQuery);var PUM;!function(e,t,o){"use strict";function n(e){return!isNaN(e)&&parseInt(Number(e))==e&&!isNaN(parseInt(e,10))}function i(){var e={},t=function(t,n,i){"boolean"==typeof n&&(i=n,n=!1);var a=n?n.selector+" "+t:t;return(o===e[a]||i)&&(e[a]=n?n.find(t):jQuery(t)),e[a]};return t.elementCache=e,t}function a(e,t){function o(e,t,o){return t?e[t.slice(0,o?-1:t.length)]:e}function n(e,t){return t?t.split("[").reduce(o,e):e}return t.split(".").reduce(n,e)}PUM={get:new i,getPopup:function(t){var o;return o=n(t)?PUM.get("#pum-"+t):"current"===t?PUM.get(".pum-overlay.pum-active:eq(0)",!0):"open"===t?PUM.get(".pum-overlay.pum-active",!0):"closed"===t?PUM.get(".pum-overlay:not(.pum-active)",!0):t instanceof jQuery?t:e(t),o.hasClass("pum-overlay")?o:o.hasClass("popmake")?o.parents(".pum-overlay"):o.parents(".pum-overlay").length?o.parents(".pum-overlay"):e()},open:function(e,t){PUM.getPopup(e).popmake("open",t)},close:function(e,t){PUM.getPopup(e).popmake("close",t)},preventOpen:function(e){PUM.getPopup(e).addClass("preventOpen")},getSettings:function(e){var t=PUM.getPopup(e);return t.popmake("getSettings")},getSetting:function(e,t,n){var i=PUM.getSettings(e),p=a(i,t);return"undefined"!=typeof p?p:n!==o?n:null},checkConditions:function(e){return PUM.getPopup(e).popmake("checkConditions")},getCookie:function(t){return e.pm_cookie(t)},clearCookie:function(t,o){e.pm_remove_cookie(t),"function"==typeof o&&o()},clearCookies:function(t,n){var i,a=PUM.getPopup(t),p=a.popmake("getSettings"),s=p.cookies;if(s!==o&&s.length)for(i=0;s.length>i;i+=1)e.pm_remove_cookie(s[i].settings.name);"function"==typeof n&&n()}},e.fn.popmake=function(o){return e.fn.popmake.methods[o]?(e(t).trigger("pumMethodCall",arguments),e.fn.popmake.methods[o].apply(this,Array.prototype.slice.call(arguments,1))):"object"!=typeof o&&o?void(window.console&&console.warn("Method "+o+" does not exist on $.fn.popmake")):e.fn.popmake.methods.init.apply(this,arguments)},e.fn.popmake.methods={init:function(t){return this.each(function(){var n=PUM.getPopup(this),i=e.extend(!0,{},e.fn.popmake.defaults,n.data("popmake"),t);return i.theme_id<=0&&(i.theme_id=popmake_default_theme),i.meta.display.disable_reposition===o&&e(window).on("resize",function(){(n.hasClass("pum-active")||n.find(".popmake.active").length)&&e.fn.popmake.utilities.throttle(setTimeout(function(){n.popmake("reposition")},25),500,!1)}),n.find(".pum-container").data("popmake",i),n.data("popmake",i).trigger("pumInit"),this})},getOverlay:function(){return e(this)},getContainer:function(){return e(this).find(".pum-container")},getTitle:function(){return e(this).find(".pum-title")||null},getContent:function(){return e(this).find(".pum-content")||null},getClose:function(){return e(this).find(".pum-content + .pum-close")||null},getSettings:function(){return e(this).data("popmake")},state:function(e){var t=PUM.getPopup(this);if(o!==e)switch(e){case"isOpen":return t.hasClass("pum-open")||t.popmake("getContainer").hasClass("active");case"isClosed":return!t.hasClass("pum-open")&&!t.popmake("getContainer").hasClass("active")}},open:function(t){var n=PUM.getPopup(this),i=n.popmake("getContainer"),a=n.popmake("getClose"),p=n.popmake("getSettings"),s=e("html");return n.trigger("pumBeforeOpen"),n.hasClass("preventOpen")||i.hasClass("preventOpen")?(console.log("prevented"),n.removeClass("preventOpen").removeClass("pum-active").trigger("pumOpenPrevented"),this):(p.meta.display.stackable||n.popmake("close_all"),n.addClass("pum-active"),p.meta.close.button_delay>0&&a.fadeOut(0),s.addClass("pum-open"),p.meta.display.overlay_disabled?s.addClass("pum-open-overlay-disabled"):s.addClass("pum-open-overlay"),p.meta.display.position_fixed!==o&&p.meta.display.position_fixed?s.addClass("pum-open-fixed"):s.addClass("pum-open-scrollable"),n.popmake("setup_close").popmake("reposition").css({"z-index":p.meta.display.overlay_zindex||1999999998}).popmake("animate",p.meta.display.animation_type,function(){p.meta.close.button_delay>0&&setTimeout(function(){a.fadeIn()},p.meta.close.button_delay),n.trigger("pumAfterOpen"),e.fn.popmake.last_open_popup=n,t!==o&&t()}),this)},setup_close:function(){var t=PUM.getPopup(this),n=t.popmake("getClose").add(e(".popmake-close",t).not(t.popmake("getClose"))),i=t.popmake("getSettings");return n.off("click.pum").on("click.pum",function(n){var i=e(this),a=i.hasClass("pum-do-default")||i.data("do-default")!==o&&i.data("do-default");a||n.preventDefault(),e.fn.popmake.last_close_trigger="Close Button",t.popmake("close")}),(i.meta.close.esc_press||i.meta.close.f4_press)&&e(window).off("keyup.popmake").on("keyup.popmake",function(o){27===o.keyCode&&i.meta.close.esc_press&&(e.fn.popmake.last_close_trigger="ESC Key",t.popmake("close")),115===o.keyCode&&i.meta.close.f4_press&&(e.fn.popmake.last_close_trigger="F4 Key",t.popmake("close"))}),i.meta.close.overlay_click&&t.off("click.popmake").on("click.popmake",function(o){o.target===t[0]&&(e.fn.popmake.last_close_trigger="Overlay Click",t.popmake("close"))}),t.trigger("pumSetupClose"),this},close:function(t){return this.each(function(){var n=PUM.getPopup(this),i=n.popmake("getContainer"),a=n.popmake("getClose").add(e(".popmake-close",n).not(n.popmake("getClose")));return n.trigger("pumBeforeClose"),n.hasClass("preventClose")||i.hasClass("preventClose")?(n.removeClass("preventClose").trigger("pumClosePrevented"),this):(i.fadeOut("fast",function(){n.is(":visible")&&n.fadeOut("fast"),e(window).off("keyup.popmake"),n.off("click.popmake"),a.off("click.popmake"),1===e(".pum-active").length&&e("html").removeClass("pum-open").removeClass("pum-open-scrollable").removeClass("pum-open-overlay").removeClass("pum-open-overlay-disabled").removeClass("pum-open-fixed"),n.removeClass("pum-active").trigger("pumAfterClose"),i.find("iframe").filter('[src*="youtube"],[src*="vimeo"]').each(function(){var t=e(this),o=t.attr("src"),n=o.replace("autoplay=1","1=1");n!==o&&(o=n),t.prop("src",o)}),i.find("video").each(function(){this.pause()}),t!==o&&t()}),this)})},close_all:function(){return e(".pum-active").popmake("close"),this},reposition:function(t){var o=PUM.getPopup(this).trigger("pumBeforeReposition"),n=o.popmake("getContainer"),i=o.popmake("getSettings"),a=i.meta.display,p=a.location,s={my:"",at:"",of:window,collision:"none",using:"function"==typeof t?t:e.fn.popmake.callbacks.reposition_using},r={overlay:null,container:null},l=null;try{l=e(e.fn.popmake.last_open_trigger)}catch(c){l=e()}return a.position_from_trigger&&l.length?(s.of=l,p.indexOf("left")>=0&&(s.my+=" right",s.at+=" left"+(0!==a.position_left?"-"+a.position_left:"")),p.indexOf("right")>=0&&(s.my+=" left",s.at+=" right"+(0!==a.position_right?"+"+a.position_right:"")),p.indexOf("center")>=0&&(s.my="center"===p?"center":s.my+" center",s.at="center"===p?"center":s.at+" center"),p.indexOf("top")>=0&&(s.my+=" bottom",s.at+=" top"+(0!==a.position_top?"-"+a.position_top:"")),p.indexOf("bottom")>=0&&(s.my+=" top",s.at+=" bottom"+(0!==a.position_bottom?"+"+a.position_bottom:""))):(p.indexOf("left")>=0&&(s.my+=" left"+(0!==a.position_left?"+"+a.position_left:""),s.at+=" left"),p.indexOf("right")>=0&&(s.my+=" right"+(0!==a.position_right?"-"+a.position_right:""),s.at+=" right"),p.indexOf("center")>=0&&(s.my="center"===p?"center":s.my+" center",s.at="center"===p?"center":s.at+" center"),p.indexOf("top")>=0&&(s.my+=" top"+(0!==a.position_top?"+"+(e("body").hasClass("admin-bar")?parseInt(a.position_top,10)+32:a.position_top):""),s.at+=" top"),p.indexOf("bottom")>=0&&(s.my+=" bottom"+(0!==a.position_bottom?"-"+a.position_bottom:""),s.at+=" bottom")),s.my=e.trim(s.my),s.at=e.trim(s.at),o.is(":hidden")&&(r.overlay=o.css("opacity"),o.css({opacity:0}).show()),n.is(":hidden")&&(r.container=n.css("opacity"),n.css({opacity:0}).show()),a.position_fixed&&n.addClass("fixed"),"custom"===i.meta.display.size?n.css({width:i.meta.display.custom_width+i.meta.display.custom_width_unit,height:i.meta.display.custom_height_auto?"auto":i.meta.display.custom_height+i.meta.display.custom_height_unit}):"auto"!==i.meta.display.size&&n.addClass("responsive").css({minWidth:""!==i.meta.display.responsive_min_width?i.meta.display.responsive_min_width+i.meta.display.responsive_min_width_unit:"auto",maxWidth:""!==i.meta.display.responsive_max_width?i.meta.display.responsive_max_width+i.meta.display.responsive_max_width_unit:"auto"}),o.trigger("pumAfterReposition"),n.addClass("custom-position").position(s).trigger("popmakeAfterReposition"),r.overlay&&o.css({opacity:r.overlay}).hide(),r.container&&n.css({opacity:r.container}).hide(),this},retheme:function(t){e(this).trigger("popmakeBeforeRetheme");var n,i,a=PUM.getPopup(this),p=a.popmake("getContainer"),s=a.popmake("getTitle"),r=a.popmake("getContent"),l=a.popmake("getClose"),c=a.popmake("getSettings");switch(t===o&&(t=e.fn.popmake.themes[c.theme_id],t===o&&(t=e.fn.popmake.themes[1])),n="yes"===t.container.boxshadow_inset?"inset ":"",i="yes"===t.close.boxshadow_inset?"inset ":"",a.removeAttr("style").css({backgroundColor:e.fn.popmake.utilities.convert_hex(t.overlay.background_color,t.overlay.background_opacity),zIndex:c.meta.display.overlay_zindex||998}),p.css({padding:t.container.padding+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.container.background_color,t.container.background_opacity),borderStyle:t.container.border_style,borderColor:t.container.border_color,borderWidth:t.container.border_width+"px",borderRadius:t.container.border_radius+"px",boxShadow:n+t.container.boxshadow_horizontal+"px "+t.container.boxshadow_vertical+"px "+t.container.boxshadow_blur+"px "+t.container.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.container.boxshadow_color,t.container.boxshadow_opacity),zIndex:c.meta.display.zindex||999}),s.css({color:t.title.font_color,lineHeight:t.title.line_height+"px",fontSize:t.title.font_size+"px",fontFamily:t.title.font_family,fontWeight:t.title.font_weight,fontStyle:t.title.font_style,textAlign:t.title.text_align,textShadow:t.title.textshadow_horizontal+"px "+t.title.textshadow_vertical+"px "+t.title.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.title.textshadow_color,t.title.textshadow_opacity)}),r.css({color:t.content.font_color,fontFamily:t.content.font_family,fontWeight:t.content.font_weight,fontStyle:t.content.font_style}),e("p, label",r).css({color:t.content.font_color,fontFamily:t.content.font_family}),l.html(t.close.text).css({padding:t.close.padding+"px",height:t.close.height+"px",width:t.close.width+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.close.background_color,t.close.background_opacity),color:t.close.font_color,lineHeight:t.close.line_height+"px",fontSize:t.close.font_size+"px",fontWeight:t.close.font_weight,fontStyle:t.close.font_style,fontFamily:t.close.font_family,borderStyle:t.close.border_style,borderColor:t.close.border_color,borderWidth:t.close.border_width+"px",borderRadius:t.close.border_radius+"px",boxShadow:i+t.close.boxshadow_horizontal+"px "+t.close.boxshadow_vertical+"px "+t.close.boxshadow_blur+"px "+t.close.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.close.boxshadow_color,t.close.boxshadow_opacity),textShadow:t.close.textshadow_horizontal+"px "+t.close.textshadow_vertical+"px "+t.close.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.close.textshadow_color,t.close.textshadow_opacity),left:"auto",right:"auto",bottom:"auto",top:"auto"}),t.close.location){case"topleft":l.css({top:t.close.position_top+"px",left:t.close.position_left+"px"});break;case"topright":l.css({top:t.close.position_top+"px",right:t.close.position_right+"px"});break;case"bottomleft":l.css({bottom:t.close.position_bottom+"px",left:t.close.position_left+"px"});break;case"bottomright":l.css({bottom:t.close.position_bottom+"px",right:t.close.position_right+"px"})}return a.trigger("popmakeAfterRetheme",[t]),this},animation_origin:function(t){var o=PUM.getPopup(this),n=o.popmake("getContainer"),i={my:"",at:""};switch(t){case"top":i={my:"left+"+n.offset().left+" bottom-100",at:"left top"};break;case"bottom":i={my:"left+"+n.offset().left+" top+100",at:"left bottom"};break;case"left":i={my:"right top+"+n.offset().top,at:"left top"};break;case"right":i={my:"left top+"+n.offset().top,at:"right top"};break;default:t.indexOf("left")>=0&&(i={my:i.my+" right",at:i.at+" left"}),t.indexOf("right")>=0&&(i={my:i.my+" left",at:i.at+" right"}),t.indexOf("center")>=0&&(i={my:i.my+" center",at:i.at+" center"}),t.indexOf("top")>=0&&(i={my:i.my+" bottom-100",at:i.at+" top"}),t.indexOf("bottom")>=0&&(i={my:i.my+" top+100",at:i.at+" bottom"}),i.my=e.trim(i.my),i.at=e.trim(i.at)}return i.of=window,i.collision="none",i}}}(jQuery,document);var PUM_Accessibility;!function(e,t,o){"use strict";var n,i,a,p="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";PUM_Accessibility={forceFocus:function(t){a&&!e.contains(a,t.target)&&(t.stopPropagation(),PUM_Accessibility.setFocusToFirstItem())},trapTabKey:function(t){if(9===t.keyCode){var o=a.find(".pum-container *").filter(p).filter(":visible"),n=e(":focus"),i=o.length,s=o.index(n);t.shiftKey?0===s&&(o.get(i-1).focus(),t.preventDefault()):s===i-1&&(o.get(0).focus(),t.preventDefault())}},setFocusToFirstItem:function(){a.find(".pum-container *").filter(p).filter(":visible").filter(":not(.pum-close)").first().focus()}},e(t).on("pumInit",".pum",function(){PUM.getPopup(this).find("[tabindex]").each(function(){var t=e(this);t.data("tabindex",t.attr("tabindex")).prop("tabindex","0")})}).on("pumBeforeOpen",".pum",function(){var o=PUM.getPopup(this),p=e(":focus");o.has(p).length||(i=p),a=o.on("keydown.pum_accessibility",PUM_Accessibility.trapTabKey).attr("aria-hidden","false"),n=e("body > *").filter(":visible").not(a),n.attr("aria-hidden","true"),e(t).on("focus.pum_accessibility",PUM_Accessibility.forceFocus),PUM_Accessibility.setFocusToFirstItem()}).on("pumAfterOpen",".pum",function(){}).on("pumBeforeClose",".pum",function(){}).on("pumAfterClose",".pum",function(){var p=PUM.getPopup(this);p.off("keydown.pum_accessibility").attr("aria-hidden","true"),n&&(n.attr("aria-hidden","false"),n=null),i!==o&&i.length&&i.focus(),a=null,e(t).off("focus.pum_accessibility")}).on("pumSetupClose",".pum",function(){}).on("pumOpenPrevented",".pum",function(){}).on("pumClosePrevented",".pum",function(){}).on("pumBeforeReposition",".pum",function(){})}(jQuery,document);var PUM_Analytics;!function(e,t,o){"use strict";e.fn.popmake.last_open_trigger=null,e.fn.popmake.last_close_trigger=null,e.fn.popmake.conversion_trigger=null;var n=!("undefined"==typeof pum_vars.restapi||!pum_vars.restapi);PUM_Analytics={beacon:function(t){var o=new Image,i=n?pum_vars.restapi:pum_vars.ajaxurl;t=e.extend(!0,{route:"/analytics/open",type:"open",data:{pid:null,_cache:+new Date},callback:function(){}},t),n?i+=t.route:(t.data.action="pum_analytics",t.data.type=t.type),i&&(e(o).on("error success load done",t.callback),o.src=i+"?"+e.param(t.data))}},pum_vars.disable_open_tracking!==o&&pum_vars.disable_open_tracking||e(t).on("pumAfterOpen.core_analytics","body > .pum",function(){var t=PUM.getPopup(this),o={pid:parseInt(t.popmake("getSettings").id,10)||null};o.pid>0&&!e("body").hasClass("single-popup")&&PUM_Analytics.beacon({data:o})})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.methods.animate_overlay=function(t,o,n){var i=PUM.getPopup(this).popmake("getSettings");return i.meta.display.overlay_disabled?e.fn.popmake.overlay_animations.none.apply(this,[o,n]):e.fn.popmake.overlay_animations[t]?e.fn.popmake.overlay_animations[t].apply(this,[o,n]):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.methods.animate=function(t){return e.fn.popmake.animations[t]?e.fn.popmake.animations[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.animations={none:function(e){var t=PUM.getPopup(this);return t.popmake("getContainer").show(0),t.popmake("animate_overlay","none",0,function(){e!==o&&e()}),this},slide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),a=i.meta.display.animation_speed/2,p=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(p).css({opacity:1}),t.css({opacity:1}).popmake("animate_overlay","fade",a,function(){n.popmake("reposition",function(t){n.animate(t,a,"swing",function(){e!==o&&e()})})}),this},fade:function(e){var t=PUM.getPopup(this),n=t.popmake("getContainer"),i=t.popmake("getSettings"),a=i.meta.display.animation_speed/2;return n.show(0).css({opacity:0}),t.popmake("animate_overlay","fade",a,function(){n.animate({opacity:1},a,"swing",function(){e!==o&&e()})}),this},fadeAndSlide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),a=i.meta.display.animation_speed/2,p=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(p),t.hide().css({opacity:1}).popmake("animate_overlay","fade",a,function(){n.popmake("reposition",function(t){t.opacity=1,n.animate(t,a,"swing",function(){e!==o&&e()})})}),this},grow:function(t){return e.fn.popmake.animations.fade.apply(this,arguments)},growAndSlide:function(t){return e.fn.popmake.animations.fadeAndSlide.apply(this,arguments)}},e.fn.popmake.overlay_animations={none:function(e,t){PUM.getPopup(this).show(e,t)},fade:function(e,t){PUM.getPopup(this).fadeIn(e,t)},slide:function(e,t){PUM.getPopup(this).slideDown(e,t)}}}(jQuery,document),function(e,t,o){"use strict";e(t).on("pumInit",".pum",function(){e(this).popmake("getContainer").trigger("popmakeInit")}).on("pumBeforeOpen",".pum",function(){e(this).popmake("getContainer").addClass("active").trigger("popmakeBeforeOpen")}).on("pumAfterOpen",".pum",function(){e(this).popmake("getContainer").trigger("popmakeAfterOpen")}).on("pumBeforeClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeClose")}).on("pumAfterClose",".pum",function(){e(this).popmake("getContainer").removeClass("active").trigger("popmakeAfterClose")}).on("pumSetupClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeSetupClose")}).on("pumOpenPrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventOpen").removeClass("active")}).on("pumClosePrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventClose")}).on("pumBeforeReposition",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeReposition")})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.callbacks={reposition_using:function(t){e(this).css(t)}}}(jQuery,document),function(e,t,o){"use strict";var n;e.extend(e.fn.popmake.methods,{checkConditions:function(){var t,i,a,p,s,r=PUM.getPopup(this),l=r.popmake("getSettings"),c=!0;if(l.mobile_disabled!==o&&l.mobile_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.phone()))return!1;if(l.tablet_disabled!==o&&l.tablet_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.tablet()))return!1;if(l.conditions!==o&&l.conditions.length)for(i=0;l.conditions.length>i;i++){for(p=l.conditions[i],t=!1,a=0;p.length>a&&(s=e.extend({},{not_operand:!1},p[a]),!s.not_operand&&r.popmake("checkCondition",s)?t=!0:s.not_operand&&!r.popmake("checkCondition",s)&&(t=!0),e(this).trigger("pumCheckingCondition",[t,s]),!t);a++);t||(c=!1)}return c},checkCondition:function(t){var o=t.target||null;return o?e.fn.popmake.conditions[o]?e.fn.popmake.conditions[o].apply(this,[t]):window.console?(console.warn("Condition "+o+" does not exist."),!0):void 0:(console.warn("Condition type not set."),!1)}}),e.fn.popmake.conditions={device_is_mobile:function(e){return n.mobile()}}}(jQuery,document);var pm_cookie,pm_cookie_json,pm_remove_cookie;!function(e){"use strict";function t(t){function o(n,i,a){var p,s=new Date;if("undefined"!=typeof document){if(arguments.length>1){switch(a=e.extend({path:"/"},o.defaults,a),typeof a.expires){case"number":s.setMilliseconds(s.getMilliseconds()+864e5*a.expires),a.expires=s;break;case"string":s.setTime(1e3*e.fn.popmake.utilities.strtotime("+"+a.expires)),a.expires=s}try{p=JSON.stringify(i),/^[\{\[]/.test(p)&&(i=p)}catch(r){}return i=t.write?t.write(i,n):encodeURIComponent(String(i)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",i,a.expires?"; expires="+a.expires.toUTCString():"",a.path?"; path="+a.path:"",a.domain?"; domain="+a.domain:"",a.secure?"; secure":""].join("")}n||(p={});for(var l=document.cookie?document.cookie.split("; "):[],c=/(%[0-9A-Z]{2})+/g,u=0;u<l.length;u++){var d=l[u].split("="),m=d.slice(1).join("=");'"'===m.charAt(0)&&(m=m.slice(1,-1));try{var f=d[0].replace(c,decodeURIComponent);if(m=t.read?t.read(m,f):t(m,f)||m.replace(c,decodeURIComponent),this.json)try{m=JSON.parse(m)}catch(r){}if(n===f){p=m;break}n||(p[f]=m)}catch(r){}}return p}}return void 0===t&&(t=function(){}),o.set=o,o.get=function(e){return o.call(o,e)},o.getJSON=function(){return o.apply({json:!0},[].slice.call(arguments))},o.defaults={},o.remove=function(t,n){o(t,"",e.extend({},n,{expires:-1,path:""})),o(t,"",e.extend({},n,{expires:-1}))},o.process=function(e,t,n,i){return arguments.length>3&&"object"!=typeof arguments[2]&&void 0!==t?o.apply(o,[e,t,{expires:n,path:i}]):o.apply(o,[].slice.call(arguments,[0,2]))},o.withConverter=e.fn.popmake.cookie,o}e.extend(e.fn.popmake,{cookie:t()}),pm_cookie=e.pm_cookie=e.fn.popmake.cookie.process,pm_cookie_json=e.pm_cookie_json=e.fn.popmake.cookie.getJSON,pm_remove_cookie=e.pm_remove_cookie=e.fn.popmake.cookie.remove}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addCookie:function(t){return pum.hooks.doAction("popmake.addCookie",arguments),e.fn.popmake.cookies[t]?e.fn.popmake.cookies[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Cookie type "+t+" does not exist."),this)},setCookie:function(t){e.pm_cookie(t.name,!0,t.session?null:t.time,t.path?"/":null),pum.hooks.doAction("popmake.setCookie",t)},checkCookies:function(t){var n,i=!1;if(t.cookie===o||t.cookie.name===o||null===t.cookie.name)return!1;switch(typeof t.cookie.name){case"object":case"array":for(n=0;t.cookie.name.length>n;n+=1)e.pm_cookie(t.cookie.name[n])!==o&&(i=!0);break;case"string":e.pm_cookie(t.cookie.name)!==o&&(i=!0)}return pum.hooks.doAction("popmake.checkCookies",t,i),i}}),e.fn.popmake.cookies={on_popup_open:function(e){var t=PUM.getPopup(this);t.on("pumAfterOpen",function(){t.popmake("setCookie",e)})},on_popup_close:function(e){var t=PUM.getPopup(this);t.on("pumBeforeClose",function(){t.popmake("setCookie",e)})},manual:function(e){var t=PUM.getPopup(this);t.on("pumSetCookie",function(){t.popmake("setCookie",e)})},ninja_form_success:function(e){var t=PUM.getPopup(this);t.on("pum_nf.success",function(){t.popmake("setCookie",e)})}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.cookies,a=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)a=i[e],t.popmake("addCookie",a.event,a.settings)})}(jQuery,document);var pum_debug_mode=!1,pum_debug;!function(e,t){if(t=window.pum_vars||{debug_mode:!1},pum_debug_mode=void 0!==t.debug_mode&&t.debug_mode,pum_debug_mode||window.location.href.indexOf("pum_debug")===-1||(pum_debug_mode=!0),pum_debug_mode){var o=!1,n=!1,i=window.pum_debug_vars||{};pum_debug={odump:function(t){return e.extend({},t)},logo:function(){console.log(" -------------------------------------------------------------\n| ____ __ __ _ |\n| | _ \\ ___ _ __ _ _ _ __ | \\/ | __ _| | _____ _ __ |\n| | |_) / _ \\| '_ \\| | | | '_ \\ | |\\/| |/ _` | |/ / _ \\ '__| |\n| | __/ (_) | |_) | |_| | |_) | | | | | (_| | < __/ | |\n| |_| \\___/| .__/ \\__,_| .__/ |_| |_|\\__,_|_|\\_\\___|_| |\n| |_| |_| |\n -------------------------------------------------------------")},initialize:function(){o=!0,pum_debug.logo(),console.debug(i.debug_mode_enabled),console.log(i.debug_started_at,new Date),console.info(i.debug_more_info),pum_debug.divider(i.global_info),console.groupCollapsed(i.localized_vars),console.log("pum_vars:",pum_debug.odump(t)),e(document).trigger("pum_debug_initialize_localized_vars"),console.groupEnd(),e(document).trigger("pum_debug_initialize")},popup_event_header:function(e){var t=e.popmake("getSettings");n!==t.id&&(n=t.id,pum_debug.divider(i.single_popup_label+t.id+" - "+t.slug))},divider:function(e){var t=62,o=62,n=0,i=" "+new Array(t+1).join("-")+" ";"string"==typeof e?(o=t-e.length,n={left:Math.floor(o/2),right:Math.floor(o/2)},n.left+n.right===o-1&&n.right++,n.left=new Array(n.left+1).join(" "),n.right=new Array(n.right+1).join(" "),console.log(""+i+"\n|"+n.left+e+n.right+"|\n"+i)):console.log(i)},click_trigger:function(e,t){var o,n=e.popmake("getSettings"),a=[".popmake-"+n.id,".popmake-"+decodeURIComponent(n.slug),'a[href$="#popmake-'+n.id+'"]'];t.extra_selectors&&""!==t.extra_selectors&&a.push(t.extra_selectors),a=pum.hooks.applyFilters("pum.trigger.click_open.selectors",a,t,e),o=a.join(", "),console.log(i.label_selector,o)},trigger:function(t,o){switch(console.groupCollapsed(i.triggers[o.type].name),o.type){case"auto_open":console.log(i.label_delay,o.settings.delay),console.log(i.label_cookie,o.settings.cookie.name);break;case"click_open":pum_debug.click_trigger(t,o.settings),console.log(i.label_cookie,o.settings.cookie.name)}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()},cookie:function(t,o){switch(console.groupCollapsed(i.cookies[o.event].name),o.event){case"on_popup_open":case"on_popup_close":case"manual":case"ninja_form_success":console.log(i.label_settings,pum_debug.odump(o.settings))}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()}},e(document).on("pumInit",".pum",function(){var t=PUM.getPopup(e(this)),n=t.popmake("getSettings"),a=0;if(o||(pum_debug.initialize(),pum_debug.divider(i.popups_initializing)),console.groupCollapsed(i.single_popup_label+n.id+" - "+n.slug),console.log(i.theme_id,n.theme_id),void 0!==n.triggers&&n.triggers.length){for(console.groupCollapsed(i.label_triggers),a=0;n.triggers.length>a;a++)pum_debug.trigger(t,n.triggers[a]);console.groupEnd()}if(void 0!==n.cookies&&n.cookies.length){for(console.groupCollapsed(i.label_cookies),a=0;n.cookies.length>a;a+=1)pum_debug.cookie(t,n.cookies[a]);console.groupEnd()}void 0!==n.conditions&&n.conditions.length&&(console.groupCollapsed(i.label_conditions),console.log(n.conditions),console.groupEnd()),console.groupCollapsed(i.label_popup_settings),console.log(i.label_mobile_disabled,null!==n.mobile_disabled),console.log(i.label_tablet_disabled,null!==n.tablet_disabled),console.log(i.label_display_settings,pum_debug.odump(n.meta.display)),console.log(i.label_close_settings,pum_debug.odump(n.meta.close)),t.trigger("pum_debug_popup_settings");var p=pum.hooks.applyFilters("pum_debug.popup_settings.cleaned_meta",pum_debug.odump(n.meta),t);delete p.display,delete p.close,delete p.click_open,p.length&&console.log("Meta: ",p),console.groupEnd(),console.groupEnd()}).on("pumBeforeOpen",".pum",function(){var t=PUM.getPopup(e(this)),o=(t.popmake("getSettings"),e.fn.popmake.last_open_trigger);pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_open);try{o=e(e.fn.popmake.last_open_trigger)}catch(n){o=e()}finally{o=o.length?o:e.fn.popmake.last_open_trigger.toString(),console.log(i.label_triggers,[o])}console.groupEnd()}).on("pumOpenPrevented",".pum",function(){var t=PUM.getPopup(e(this));pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_open_prevented),console.groupEnd()}).on("pumAfterOpen",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_open),console.groupEnd()}).on("pumSetupClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_setup_close),console.groupEnd()}).on("pumClosePrevented",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_close_prevented),console.groupEnd()}).on("pumBeforeClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_close),console.groupEnd()}).on("pumAfterClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_close),console.groupEnd()}).on("pumBeforeReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_reposition),console.groupEnd()}).on("pumAfterReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_reposition),console.groupEnd()}).on("pumCheckingCondition",".pum",function(t,o,n){var a=PUM.getPopup(e(this));a.popmake("getSettings");pum_debug.popup_event_header(a),console.groupCollapsed(i.label_event_checking_condition),console.log((n.not_operand?"(!) ":"")+n.target+": "+o,n),console.groupEnd()})}}(jQuery),function(e,t,o){"use strict";e.fn.popmake.defaults={meta:{display:{stackable:0,overlay_disabled:0,size:"medium",responsive_max_width:"",responsive_max_width_unit:"%",responsive_min_width:"",responsive_min_width_unit:"%",custom_width:"",custom_width_unit:"%",custom_height:"",custom_height_unit:"em",custom_height_auto:0,location:"center top",position_top:100,position_left:0,position_bottom:0,position_right:0,position_fixed:0,animation_type:"fade",animation_speed:350,animation_origin:"center top"},close:{overlay_click:0,esc_press:0,f4_press:0}},container:{active_class:"active",attr:{"class":"popmake"}},title:{attr:{"class":"popmake-title"}},content:{attr:{"class":"popmake-content"}},close:{close_speed:0,attr:{"class":"popmake-close"}},overlay:{attr:{id:"popmake-overlay","class":"popmake-overlay"}}}}(jQuery,document),function(e,t){"use strict";var o=function(){function e(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("actions",e,t,o,n)),u}function t(){var e=c.call(arguments),t=e.shift();return"string"==typeof t&&l("actions",t,e),u}function o(e,t){return"string"==typeof e&&p("actions",e,t),u}function n(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("filters",e,t,o,n)),u}function i(){var e=c.call(arguments),t=e.shift();return"string"==typeof t?l("filters",t,e):u}function a(e,t){return"string"==typeof e&&p("filters",e,t),u}function p(e,t,o,n){var i,a,p;if(d[e][t])if(o)if(i=d[e][t],n)for(p=i.length;p--;)a=i[p],a.callback===o&&a.context===n&&i.splice(p,1);else for(p=i.length;p--;)i[p].callback===o&&i.splice(p,1);else d[e][t]=[]}function s(e,t,o,n,i){var a={callback:o,priority:n,context:i},p=d[e][t];p?(p.push(a),p=r(p)):p=[a],d[e][t]=p}function r(e){for(var t,o,n,i=1,a=e.length;i<a;i++){for(t=e[i],o=i;(n=e[o-1])&&n.priority>t.priority;)e[o]=e[o-1],
2
+ --o;e[o]=t}return e}function l(e,t,o){var n,i,a=d[e][t];if(!a)return"filters"===e&&o[0];if(i=a.length,"filters"===e)for(n=0;n<i;n++)o[0]=a[n].callback.apply(a[n].context,o);else for(n=0;n<i;n++)a[n].callback.apply(a[n].context,o);return"filters"!==e||o[0]}var c=Array.prototype.slice,u={removeFilter:a,applyFilters:i,addFilter:n,removeAction:o,doAction:t,addAction:e},d={actions:{},filters:{}};return u};e.pum=e.pum||{},e.pum.hooks=e.pum.hooks||new o}(window),function(e){"use strict";if("undefined"!=typeof Marionette&&"undefined"!=typeof nfRadio){var t=Marionette.Object.extend({initialize:function(){this.listenTo(nfRadio.channel("forms"),"submit:response",this.closePopup),this.listenTo(nfRadio.channel("forms"),"submit:response",this.openPopup),this.listenTo(nfRadio.channel("forms"),"submit:response",this.popupTriggers)},popupTriggers:function(t,o,n,i){var a;a=e("#nf-form-"+i+"-cont").parents(".pum"),a.length&&(a.trigger("pum_nf.success"),t.errors.length?a.trigger("pum_nf.error"):a.trigger("pum_nf.success"))},closePopup:function(t,o,n,i){var a;"undefined"==typeof t.data.actions||t.errors.length||"undefined"!=typeof t.data.actions.closepopup&&(a=e("#nf-form-"+i+"-cont").parents(".pum"),a.length&&setTimeout(function(){a.popmake("close")},parseInt(t.data.actions.closepopup)))},openPopup:function(t){var o;"undefined"==typeof t.data.actions||t.errors.length||"undefined"!=typeof t.data.actions.openpopup&&(o=e("#pum-"+parseInt(t.data.actions.openpopup)),o.length&&o.popmake("open"))}});jQuery(document).ready(function(){new t})}}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addTrigger:function(t){return e.fn.popmake.triggers[t]?e.fn.popmake.triggers[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Trigger type "+t+" does not exist."),this)}}),e.fn.popmake.triggers={auto_open:function(t){var o=PUM.getPopup(this);setTimeout(function(){o.popmake("state","isOpen")||!o.popmake("checkCookies",t)&&o.popmake("checkConditions")&&(e.fn.popmake.last_open_trigger="Auto Open - Delay: "+t.delay,o.popmake("open"))},t.delay)},click_open:function(o){var n,i=PUM.getPopup(this),a=i.popmake("getSettings"),p=[".popmake-"+a.id,".popmake-"+decodeURIComponent(a.slug),'a[href$="#popmake-'+a.id+'"]'];o.extra_selectors&&""!==o.extra_selectors&&p.push(o.extra_selectors),p=pum.hooks.applyFilters("pum.trigger.click_open.selectors",p,o,i),n=p.join(", "),e(n).addClass("pum-trigger").data("popup",a.id).attr("data-popup",a.id).data("settings",o).data("do-default",o.do_default).attr("data-do-default",o.do_default).css({cursor:"pointer"}),e(t).on("click",n+":not(.pum-trigger)",function(t){var n=e(this);n.addClass("pum-trigger").data("popup",a.id).attr("data-popup",a.id).data("settings",o).data("do-default",o.do_default).attr("data-do-default",o.do_default).css({cursor:"pointer"}),t.preventDefault(),t.stopPropagation(),n.trigger("click")})},admin_debug:function(){PUM.getPopup(this).popmake("open")}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.triggers,a=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)a=i[e],t.popmake("addTrigger",a.type,a.settings)}).on("click.pumTrigger",".pum-trigger[data-popup]",function(t){var o=e(this),n=PUM.getPopup(o.data("popup")),i=o.data("settings"),a=i.do_default||!1;n.has(o).length>0||n.popmake("state","isOpen")||!n.popmake("checkCookies",i)&&n.popmake("checkConditions")&&(o.data("do-default")?a=o.data("do-default"):o.hasClass("do-default")&&(a=!0),pum.hooks.applyFilters("pum.trigger.click_open.do_default",a,n,o)||(t.preventDefault(),t.stopPropagation()),e.fn.popmake.last_open_trigger=o,n.popmake("open"))})}(jQuery,document),function(e,t,o){"use strict";function n(t,o){return e.inArray(o,t)!==-1}function i(e,t,o){var n=t[0];t.length>1?(e[n]||(e[n]=t[1]?{}:[]),i(e[n],t.slice(1),o)):(n||(n=e.length),e[n]=o)}var a="color,date,datetime,datetime-local,email,hidden,month,number,password,range,search,tel,text,time,url,week".split(","),p="select,textarea".split(","),s=/\[([^\]]*)\]/g;e.fn.popmake.utilities={convert_hex:function(e,t){e=e.replace("#","");var o=parseInt(e.substring(0,2),16),n=parseInt(e.substring(2,4),16),i=parseInt(e.substring(4,6),16);return"rgba("+o+","+n+","+i+","+t/100+")"},debounce:function(e,t){var o;return function(){var n=this,i=arguments;window.clearTimeout(o),o=window.setTimeout(function(){e.apply(n,i)},t)}},throttle:function(e,t){var o=!1,n=function(){o=!1};return function(){o||(e.apply(this,arguments),window.setTimeout(n,t),o=!0)}},getXPath:function(t){var o,n,i,a,p,s=[];return e.each(e(t).parents(),function(t,r){return o=e(r),n=o.attr("id")||"",i=o.attr("class")||"",a=o.get(0).tagName.toLowerCase(),p=o.parent().children(a).index(o),"body"!==a&&(i.length>0&&(i=i.split(" "),i=i[0]),void s.push(a+(n.length>0?"#"+n:i.length>0?"."+i.split(" ").join("."):":eq("+p+")")))}),s.reverse().join(" > ")},strtotime:function(e,t){function n(e,t,n){var i,a=c[t];a!==o&&(i=a-l.getDay(),0===i?i=7*n:i>0&&"last"===e?i-=7:i<0&&"next"===e&&(i+=7),l.setDate(l.getDate()+i))}function i(e){var t=e.split(" "),o=t[0],i=t[1].substring(0,3),a=/\d+/.test(o),p="ago"===t[2],s=("last"===o?-1:1)*(p?-1:1);if(a&&(s*=parseInt(o,10)),u.hasOwnProperty(i)&&!t[1].match(/^mon(day|\.)?$/i))return l["set"+u[i]](l["get"+u[i]]()+s);if("wee"===i)return l.setDate(l.getDate()+7*s);if("next"===o||"last"===o)n(o,i,s);else if(!a)return!1;return!0}var a,p,s,r,l,c,u,d,m,f,g,_=!1;if(!e)return _;if(e=e.replace(/^\s+|\s+$/g,"").replace(/\s{2,}/g," ").replace(/[\t\r\n]/g,"").toLowerCase(),p=e.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/),p&&p[2]===p[4])if(p[1]>1901)switch(p[2]){case"-":return p[3]>12||p[5]>31?_:new Date(p[1],parseInt(p[3],10)-1,p[5],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3;case".":return _;case"/":return p[3]>12||p[5]>31?_:new Date(p[1],parseInt(p[3],10)-1,p[5],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3}else if(p[5]>1901)switch(p[2]){case"-":return p[3]>12||p[1]>31?_:new Date(p[5],parseInt(p[3],10)-1,p[1],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3;case".":return p[3]>12||p[1]>31?_:new Date(p[5],parseInt(p[3],10)-1,p[1],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3;case"/":return p[1]>12||p[3]>31?_:new Date(p[5],parseInt(p[1],10)-1,p[3],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3}else switch(p[2]){case"-":return p[3]>12||p[5]>31||p[1]<70&&p[1]>38?_:(r=p[1]>=0&&p[1]<=38?+p[1]+2e3:p[1],new Date(r,parseInt(p[3],10)-1,p[5],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3);case".":return p[5]>=70?p[3]>12||p[1]>31?_:new Date(p[5],parseInt(p[3],10)-1,p[1],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3:p[5]<60&&!p[6]?p[1]>23||p[3]>59?_:(s=new Date,new Date(s.getFullYear(),s.getMonth(),s.getDate(),p[1]||0,p[3]||0,p[5]||0,p[9]||0)/1e3):_;case"/":return p[1]>12||p[3]>31||p[5]<70&&p[5]>38?_:(r=p[5]>=0&&p[5]<=38?+p[5]+2e3:p[5],new Date(r,parseInt(p[1],10)-1,p[3],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3);case":":return p[1]>23||p[3]>59||p[5]>59?_:(s=new Date,new Date(s.getFullYear(),s.getMonth(),s.getDate(),p[1]||0,p[3]||0,p[5]||0)/1e3)}if("now"===e)return null===t||isNaN(t)?(new Date).getTime()/1e3||0:t||0;if(a=Date.parse(e),!isNaN(a))return a/1e3||0;if(l=t?new Date(1e3*t):new Date,c={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},u={yea:"FullYear",mon:"Month",day:"Date",hou:"Hours",min:"Minutes",sec:"Seconds"},m="(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)",f="([+-]?\\d+\\s"+m+"|(last|next)\\s"+m+")(\\sago)?",p=e.match(new RegExp(f,"gi")),!p)return _;for(g=0,d=p.length;g<d;g+=1)if(!i(p[g]))return _;return l.getTime()/1e3},serializeObject:function(t){e.extend({},t);var o={},r=e.extend(!0,{include:[],exclude:[],includeByClass:""},t);return this.find(":input").each(function(){var t;!this.name||this.disabled||n(r.exclude,this.name)||r.include.length&&!n(r.include,this.name)||this.className.indexOf(r.includeByClass)===-1||(t=this.name.replace(s,"[$1").split("["),t[0]&&(this.checked||n(a,this.type)||n(p,this.nodeName.toLowerCase()))&&("checkbox"===this.type&&t.push(""),i(o,t,e(this).val())))}),o}},e.fn.pumSerializeObject=e.fn.popmake.utilities.serializeObject,e.fn.popmake.utilies=e.fn.popmake.utilities}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.version=1.4,e.fn.popmake.last_open_popup=null,e(t).ready(function(){e(".popmake").popmake()})}(jQuery);
includes/admin/popups/class-metabox-triggers.php CHANGED
@@ -164,8 +164,8 @@ class PUM_Popup_Triggers_Metabox {
164
 
165
  <?php ob_start(); ?>
166
 
167
- <input type="hidden" name="type" class="type" value="<?php esc_attr_e( $id ); ?>"/>
168
- <input type="hidden" name="index" class=index" value="{{data.index}}"/>
169
 
170
  <div class="pum-tabs-container vertical-tabs tabbed-form">
171
 
164
 
165
  <?php ob_start(); ?>
166
 
167
+ <input type="hidden" name="type" class="type" value="<?php esc_attr_e( $id ); ?>" />
168
+ <input type="hidden" name="index" class="index" value="{{data.index}}" />
169
 
170
  <div class="pum-tabs-container vertical-tabs tabbed-form">
171
 
includes/class-pum-fields.php CHANGED
@@ -731,7 +731,7 @@ class PUM_Fields extends Popmake_Fields {
731
 
732
  <?php // TODO Replace these all with a single variable in JS like var value = data.<?php echo esc_attr( $args['templ_name'] ); ?/> || {}; ?>
733
 
734
- <# var templ_name = '<?php echo esc_attr( $args['templ_name'] ); ?>';
735
 
736
  <# if (!data[templ_name] || typeof data[templ_name] !== 'object') {
737
  data[templ_name] = {};
731
 
732
  <?php // TODO Replace these all with a single variable in JS like var value = data.<?php echo esc_attr( $args['templ_name'] ); ?/> || {}; ?>
733
 
734
+ <# var templ_name = '<?php echo esc_attr( $args['templ_name'] ); ?>'; #>
735
 
736
  <# if (!data[templ_name] || typeof data[templ_name] !== 'object') {
737
  data[templ_name] = {};
includes/class-pum.php CHANGED
@@ -7,7 +7,7 @@ if ( ! defined( 'ABSPATH' ) ) {
7
 
8
  class PUM {
9
 
10
- const VER = '1.5.2';
11
 
12
  const DB_VER = 6;
13
 
7
 
8
  class PUM {
9
 
10
+ const VER = '1.5.3';
11
 
12
  const DB_VER = 6;
13
 
includes/pum-sdk/freemius/assets/css/admin/checkout.css ADDED
@@ -0,0 +1 @@
 
1
+ @media screen and (max-width: 782px){#wpbody-content{padding-bottom:0 !important}}
includes/pum-sdk/freemius/assets/css/admin/common.css CHANGED
@@ -1 +1,2 @@
 
1
  .fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;box-shadow:0px 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}
1
+ #iframe{line-height:0;font-size:0}.fs-full-size-wrapper{margin:0 0 -65px -20px}@media (max-width: 782px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
2
  .fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;box-shadow:0px 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}
includes/pum-sdk/freemius/assets/css/admin/debug.css CHANGED
@@ -1 +1 @@
1
- .switch{position:relative;display:inline-block;font-size:1.6em;font-weight:bold;color:#ccc;text-shadow:0px 1px 1px rgba(255,255,255,0.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:4px;background:#ececec;box-shadow:0px 0px 4px rgba(0,0,0,0.1),inset 0px 1px 3px 0px rgba(0,0,0,0.1);cursor:pointer}.switch span{display:inline-block;width:35px;text-transform:uppercase}.switch span.on{color:#6bc406}.switch .toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.3);border-radius:4px;background:#fff;background:-moz-linear-gradient(top, #ececec 0%, #fff 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #fff));background:-webkit-linear-gradient(top, #ececec 0%, #fff 100%);background:-o-linear-gradient(top, #ececec 0%, #fff 100%);background:-ms-linear-gradient(top, #ececec 0%, #fff 100%);background:linear-gradient(top, #ececec 0%, #fff 100%);box-shadow:inset 0px 1px 0px 0px rgba(255,255,255,0.5);z-index:999;-moz-transition:all 0.15s ease-in-out;-o-transition:all 0.15s ease-in-out;-ms-transition:all 0.15s ease-in-out;-webkit-transition:all 0.15s ease-in-out;transition:all 0.15s ease-in-out}.switch.on .toggle{left:2%}.switch.off .toggle{left:54%}.switch.round{padding:0px 20px;border-radius:40px}.switch.round .toggle{border-radius:40px;width:14px;height:14px}.switch.round.on .toggle{left:3%;background:#6bc406}.switch.round.off .toggle{left:58%}.switch-label{font-size:20px;line-height:31px;margin:0 5px}
1
+ .switch{position:relative;display:inline-block;font-size:1.6em;font-weight:bold;color:#ccc;text-shadow:0px 1px 1px rgba(255,255,255,0.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:4px;background:#ececec;box-shadow:0px 0px 4px rgba(0,0,0,0.1),inset 0px 1px 3px 0px rgba(0,0,0,0.1);cursor:pointer}.switch span{display:inline-block;width:35px;text-transform:uppercase}.switch span.on{color:#6bc406}.switch .toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.3);border-radius:4px;background:#fff;background:-moz-linear-gradient(top, #ececec 0%, #fff 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #fff));background:-webkit-linear-gradient(top, #ececec 0%, #fff 100%);background:-o-linear-gradient(top, #ececec 0%, #fff 100%);background:-ms-linear-gradient(top, #ececec 0%, #fff 100%);background:linear-gradient(top, #ececec 0%, #fff 100%);box-shadow:inset 0px 1px 0px 0px rgba(255,255,255,0.5);z-index:999;-moz-transition:all 0.15s ease-in-out;-o-transition:all 0.15s ease-in-out;-ms-transition:all 0.15s ease-in-out;-webkit-transition:all 0.15s ease-in-out;transition:all 0.15s ease-in-out}.switch.on .toggle{left:2%}.switch.off .toggle{left:54%}.switch.round{padding:0px 20px;border-radius:40px}.switch.round .toggle{border-radius:40px;width:14px;height:14px}.switch.round.on .toggle{left:3%;background:#6bc406}.switch.round.off .toggle{left:58%}.switch-label{font-size:20px;line-height:31px;margin:0 5px}#fs_log_book table{font-family:Consolas,Monaco,monospace;font-size:12px}#fs_log_book table th{color:#ccc}#fs_log_book table tr{background:#232525}#fs_log_book table tr.alternate{background:#2b2b2b}#fs_log_book table tr td.fs-col--logger{color:#5a7435}#fs_log_book table tr td.fs-col--type{color:#ffc861}#fs_log_book table tr td.fs-col--function{color:#a7b7b1;font-weight:bold}#fs_log_book table tr td.fs-col--message,#fs_log_book table tr td.fs-col--message a{color:#9a73ac !important}#fs_log_book table tr td.fs-col--file{color:#d07922}#fs_log_book table tr td.fs-col--timestamp{color:#6596be}
includes/pum-sdk/freemius/assets/css/admin/dialog-boxes.css CHANGED
@@ -1,2 +1,2 @@
1
- .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}.fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend .fs-modal-body input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{margin-top:2px}}
2
  .rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}
1
+ .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}
2
  .rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}
includes/pum-sdk/freemius/assets/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/assets/scss/_load.scss CHANGED
@@ -1,4 +1,4 @@
1
- @import 'mixins';
2
- @import "vars";
3
- @import "functions";
4
- @import "colors";
1
+ @import 'mixins';
2
+ @import "vars";
3
+ @import "functions";
4
+ @import "colors";
includes/pum-sdk/freemius/assets/scss/_start.scss CHANGED
@@ -1,4 +1,4 @@
1
- @import "vars";
2
- @import "colors";
3
- @import "mixins";
4
  @import "functions";
1
+ @import "vars";
2
+ @import "colors";
3
+ @import "mixins";
4
  @import "functions";
includes/pum-sdk/freemius/assets/scss/_vars.scss CHANGED
@@ -1,5 +1,6 @@
1
- $is_production: true;
2
-
3
- $img_common: if($is_production == true, '//img.freemius.com', 'http://img.freemius:8080');
4
-
5
- $layout_width: 960px;
 
1
+ $is_production: true;
2
+
3
+ $img_common: if($is_production == true, '//img.freemius.com', 'http://img.freemius:8080');
4
+
5
+ $layout_width: 960px;
6
+ $admin_mobile_max_width: 782px;
includes/pum-sdk/freemius/assets/scss/admin/_license-key-resend.scss CHANGED
@@ -1,44 +1,68 @@
1
- .fs-modal.fs-modal-license-key-resend {
2
- .fs-modal-body {
3
- .input-container > .email-address-container {
4
- overflow: hidden;
5
- padding-right: 2px;
6
- }
7
-
8
- input.email-address {
9
- width: 100%;
10
- }
11
-
12
- .button-container {
13
- float: right;
14
- margin-left: 7px;
15
-
16
- @media (max-width: 650px) {
17
- margin-top: 2px;
18
- }
19
- }
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  }
22
 
23
  .rtl
24
  {
25
- .fs-modal.fs-modal-license-key-resend {
26
- .fs-modal-body {
27
- .input-container > .email-address-container {
28
- padding-left: 2px;
 
 
 
29
  padding-right: 0;
30
  }
31
 
32
- .button-container {
33
- float: left;
 
34
  margin-right: 7px;
35
- margin-left: 0;
36
  }
37
  }
38
  }
39
  }
40
 
41
- a.show-license-resend-modal {
42
- margin-top: 4px;
43
- display: inline-block;
 
44
  }
1
+ .fs-modal.fs-modal-license-key-resend
2
+ {
3
+ .email-address-container
4
+ {
5
+ overflow: hidden;
6
+ padding-right: 2px;
7
+ }
8
+
9
+ &.fs-freemium
10
+ {
11
+ input.email-address
12
+ {
13
+ width: 300px;
14
+ }
15
+
16
+ label
17
+ {
18
+ display: block;
19
+ margin-bottom: 10px;
20
+ }
21
+ }
22
+
23
+ &.fs-premium
24
+ {
25
+ input.email-address
26
+ {
27
+ width: 100%;
28
+ }
29
+
30
+ .button-container
31
+ {
32
+ float: right;
33
+ margin-left: 7px;
34
+
35
+ @media (max-width: 650px) {
36
+ margin-top: 2px;
37
+ }
38
+ }
39
+ }
40
  }
41
 
42
  .rtl
43
  {
44
+ .fs-modal.fs-modal-license-key-resend
45
+ {
46
+ .fs-modal-body
47
+ {
48
+ .input-container > .email-address-container
49
+ {
50
+ padding-left: 2px;
51
  padding-right: 0;
52
  }
53
 
54
+ .button-container
55
+ {
56
+ float: left;
57
  margin-right: 7px;
58
+ margin-left: 0;
59
  }
60
  }
61
  }
62
  }
63
 
64
+ a.show-license-resend-modal
65
+ {
66
+ margin-top: 4px;
67
+ display: inline-block;
68
  }
includes/pum-sdk/freemius/assets/scss/admin/checkout.scss ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ @media screen and (max-width: 782px) {
2
+ #wpbody-content {
3
+ padding-bottom: 0 !important;
4
+ }
5
+ }
includes/pum-sdk/freemius/assets/scss/admin/common.scss CHANGED
@@ -1,5 +1,18 @@
1
  @import "../start";
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  .fs-notice
4
  {
5
  position: relative;
1
  @import "../start";
2
 
3
+ #iframe {
4
+ line-height: 0;
5
+ font-size: 0;
6
+ }
7
+
8
+ .fs-full-size-wrapper {
9
+ margin: 0 0 -65px -20px;
10
+
11
+ @media (max-width: $admin_mobile_max_width) {
12
+ margin: 0 0 -65px -10px;
13
+ }
14
+ }
15
+
16
  .fs-notice
17
  {
18
  position: relative;
includes/pum-sdk/freemius/assets/scss/admin/connect.scss CHANGED
@@ -1,471 +1,471 @@
1
- @import "../start";
2
-
3
- $form_width: 480px;
4
-
5
- #fs_connect
6
- {
7
- width: $form_width;
8
- @include box-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));
9
- margin: 20px 0;
10
-
11
- @media screen and (max-width: ($form_width - 1)) {
12
- @include box-shadow(none);
13
- width: auto;
14
- margin: 0 0 0 -10px;
15
- }
16
-
17
- .fs-content
18
- {
19
- background: #fff;
20
- padding: 15px 20px;
21
-
22
- .fs-error {
23
- background: snow;
24
- color: $fs-logo-magenta-color;
25
- border: 1px solid $fs-logo-magenta-color;
26
- @include box-shadow(0 1px 1px 0 rgba(0,0,0,.1));
27
- text-align: center;
28
- padding: 5px;
29
- margin-bottom: 10px;
30
- }
31
-
32
- p
33
- {
34
- margin: 0;
35
- padding: 0;
36
- font-size: 1.2em;
37
- }
38
- }
39
-
40
- .fs-license-key-container {
41
- position: relative;
42
- width: 280px;
43
- margin: 10px auto 0 auto;
44
-
45
- input {
46
- width: 100%;
47
- }
48
-
49
- .dashicons {
50
- position: absolute;
51
- top: 5px;
52
- right: 5px;
53
- }
54
- }
55
-
56
- .fs-actions
57
- {
58
- padding: 10px 20px;
59
- background: #C0C7CA;
60
-
61
- .button
62
- {
63
- padding: 0 10px 1px;
64
- line-height: 35px;
65
- height: 37px;
66
- font-size: 16px;
67
- margin-bottom: 0;
68
-
69
- .dashicons
70
- {
71
- font-size: 37px;
72
- margin-left: -8px;
73
- margin-right: 12px;
74
- }
75
-
76
- &.button-primary
77
- {
78
- padding-right: 15px;
79
- padding-left: 15px;
80
-
81
- &:after
82
- {
83
- content: ' \279C';
84
- }
85
-
86
- &.fs-loading
87
- {
88
- &:after
89
- {
90
- content: '';
91
- }
92
- }
93
- }
94
-
95
- &.button-secondary
96
- {
97
- float: right;
98
- }
99
- }
100
-
101
- // .fs-skip
102
- // {
103
- // line-height: 38px;
104
- // vertical-align: middle;
105
- // text-decoration: none;
106
- // margin-left: 10px;
107
- // }
108
- }
109
-
110
- &.fs-anonymous-disabled
111
- {
112
- .fs-actions
113
- {
114
- .button.button-primary
115
- {
116
- width: 100%;
117
- }
118
- }
119
- }
120
-
121
- .fs-permissions
122
- {
123
- padding: 10px 20px;
124
- background: #FEFEFE;
125
- // background: #F1F1F1;
126
- @include transition(background 0.5s ease);
127
-
128
- .fs-license-sync-disclaimer {
129
- text-align: center;
130
- margin-top: 0;
131
- }
132
-
133
- .fs-trigger
134
- {
135
- font-size: 0.9em;
136
- text-decoration: none;
137
- text-align: center;
138
- display: block;
139
- }
140
-
141
- ul
142
- {
143
- height: 0;
144
- overflow: hidden;
145
- margin: 0;
146
-
147
- li
148
- {
149
- margin-bottom: 12px;
150
-
151
- &:last-child
152
- {
153
- margin-bottom: 0;
154
- }
155
-
156
- i.dashicons
157
- {
158
- float: left;
159
- font-size: 40px;
160
- width: 40px;
161
- height: 40px;
162
- }
163
-
164
- div
165
- {
166
- margin-left: 55px;
167
-
168
- span
169
- {
170
- font-weight: bold;
171
- text-transform: uppercase;
172
- color: #23282d;
173
- }
174
-
175
- p
176
- {
177
- margin: 2px 0 0 0;
178
- }
179
- }
180
- }
181
- }
182
-
183
- &.fs-open
184
- {
185
- background: #fff;
186
-
187
- ul
188
- {
189
- height: auto;
190
- margin: 20px 20px 10px 20px;
191
- }
192
- }
193
-
194
- @media screen and (max-width: ($form_width - 1)) {
195
- background: #fff;
196
-
197
- .fs-trigger
198
- {
199
- display: none;
200
- }
201
-
202
- ul
203
- {
204
- height: auto;
205
- margin: 20px;
206
- }
207
- }
208
- }
209
-
210
- .fs-freemium-licensing {
211
- padding: 8px;
212
- // background: #0085BA;
213
- background: #777;
214
- color: #fff;
215
-
216
- p {
217
- text-align: center;
218
- display: block;
219
- margin: 0;
220
- padding: 0;
221
- }
222
-
223
- a {
224
- color: #C2EEFF;
225
- text-decoration: underline;
226
- }
227
- }
228
-
229
- $icon_size: 80px;
230
- $wp_logo_padding: $icon_size / 10;
231
- $icons_top: 10px;
232
-
233
- .fs-visual
234
- {
235
- padding: 12px;
236
- line-height: 0;
237
- background: #fafafa;
238
- height: $icon_size;
239
- position: relative;
240
-
241
- .fs-site-icon
242
- {
243
- position: absolute;
244
- left: 20px;
245
- top: $icons_top;
246
- }
247
-
248
- .fs-connect-logo
249
- {
250
- position: absolute;
251
- right: 20px;
252
- top: $icons_top;
253
- }
254
-
255
- .fs-plugin-icon
256
- {
257
- position: absolute;
258
- top: $icons_top;
259
- left: 50%;
260
- margin-left: - ($icon_size / 2);
261
- }
262
-
263
- .fs-plugin-icon,
264
- .fs-site-icon,
265
- img,
266
- object
267
- {
268
- width: $icon_size;
269
- height: $icon_size;
270
- }
271
-
272
- .dashicons-wordpress
273
- {
274
- font-size: $icon_size - ($wp_logo_padding * 2);
275
- background: $wordpress_color;
276
- color: #fff;
277
- width: $icon_size - ($wp_logo_padding * 2);
278
- height: $icon_size - ($wp_logo_padding * 2);
279
- padding: $wp_logo_padding;
280
- }
281
-
282
- .dashicons-plus
283
- {
284
- position: absolute;
285
- top: 50%;
286
- font-size: 30px;
287
- margin-top: -10px;
288
- color: #bbb;
289
-
290
- &.fs-first
291
- {
292
- left: 28%;
293
- }
294
- &.fs-second
295
- {
296
- left: 65%;
297
- }
298
- }
299
-
300
- .fs-plugin-icon,
301
- .fs-connect-logo,
302
- .fs-site-icon
303
- {
304
- border: 1px solid #ccc;
305
- padding: 1px;
306
- background: #fff;
307
- }
308
- }
309
-
310
- .fs-terms
311
- {
312
- text-align: center;
313
- font-size: 0.85em;
314
- padding: 5px;
315
- background: rgba(0, 0, 0, 0.05);
316
-
317
- &, a
318
- {
319
- color: #999;
320
- }
321
-
322
- a
323
- {
324
- text-decoration: none;
325
- }
326
- }
327
- }
328
-
329
- .rtl
330
- {
331
- #fs_connect
332
- {
333
- .fs-actions
334
- {
335
- padding: 10px 20px;
336
- background: #C0C7CA;
337
-
338
- .button
339
- {
340
- .dashicons
341
- {
342
- font-size: 37px;
343
- margin-left: -8px;
344
- margin-right: 12px;
345
- }
346
-
347
- &.button-primary
348
- {
349
- &:after
350
- {
351
- content: ' \000bb';
352
- }
353
-
354
- &.fs-loading
355
- {
356
- &:after
357
- {
358
- content: '';
359
- }
360
- }
361
- }
362
-
363
- &.button-secondary
364
- {
365
- float: left;
366
- }
367
- }
368
- }
369
-
370
- .fs-permissions
371
- {
372
- ul
373
- {
374
- li
375
- {
376
- div
377
- {
378
- margin-right: 55px;
379
- margin-left: 0;
380
- }
381
-
382
- i.dashicons
383
- {
384
- float: right;
385
- }
386
-
387
- }
388
- }
389
- }
390
-
391
- .fs-visual
392
- {
393
- .fs-site-icon
394
- {
395
- right: 20px;
396
- left: auto;
397
- }
398
-
399
- .fs-connect-logo
400
- {
401
- right: auto;
402
- left: 20px;
403
- }
404
- }
405
- }
406
- }
407
-
408
- .wp-pointer-content
409
- {
410
- #fs_connect
411
- {
412
- margin: 0;
413
- @include box-shadow(none);
414
- }
415
- }
416
-
417
- .fs-opt-in-pointer
418
- {
419
- .wp-pointer-content
420
- {
421
- padding: 0;
422
- }
423
-
424
- &.wp-pointer-top
425
- {
426
- .wp-pointer-arrow
427
- {
428
- border-bottom-color: #dfdfdf;
429
- }
430
- .wp-pointer-arrow-inner
431
- {
432
- border-bottom-color: #fafafa;
433
- }
434
- }
435
-
436
- &.wp-pointer-bottom
437
- {
438
- .wp-pointer-arrow
439
- {
440
- border-top-color: #dfdfdf;
441
- }
442
- .wp-pointer-arrow-inner
443
- {
444
- border-top-color: #fafafa;
445
- }
446
- }
447
-
448
- &.wp-pointer-left
449
- {
450
- .wp-pointer-arrow
451
- {
452
- border-right-color: #dfdfdf;
453
- }
454
- .wp-pointer-arrow-inner
455
- {
456
- border-right-color: #fafafa;
457
- }
458
- }
459
-
460
- &.wp-pointer-right
461
- {
462
- .wp-pointer-arrow
463
- {
464
- border-left-color: #dfdfdf;
465
- }
466
- .wp-pointer-arrow-inner
467
- {
468
- border-left-color: #fafafa;
469
- }
470
- }
471
- }
1
+ @import "../start";
2
+
3
+ $form_width: 480px;
4
+
5
+ #fs_connect
6
+ {
7
+ width: $form_width;
8
+ @include box-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));
9
+ margin: 20px 0;
10
+
11
+ @media screen and (max-width: ($form_width - 1)) {
12
+ @include box-shadow(none);
13
+ width: auto;
14
+ margin: 0 0 0 -10px;
15
+ }
16
+
17
+ .fs-content
18
+ {
19
+ background: #fff;
20
+ padding: 15px 20px;
21
+
22
+ .fs-error {
23
+ background: snow;
24
+ color: $fs-logo-magenta-color;
25
+ border: 1px solid $fs-logo-magenta-color;
26
+ @include box-shadow(0 1px 1px 0 rgba(0,0,0,.1));
27
+ text-align: center;
28
+ padding: 5px;
29
+ margin-bottom: 10px;
30
+ }
31
+
32
+ p
33
+ {
34
+ margin: 0;
35
+ padding: 0;
36
+ font-size: 1.2em;
37
+ }
38
+ }
39
+
40
+ .fs-license-key-container {
41
+ position: relative;
42
+ width: 280px;
43
+ margin: 10px auto 0 auto;
44
+
45
+ input {
46
+ width: 100%;
47
+ }
48
+
49
+ .dashicons {
50
+ position: absolute;
51
+ top: 5px;
52
+ right: 5px;
53
+ }
54
+ }
55
+
56
+ .fs-actions
57
+ {
58
+ padding: 10px 20px;
59
+ background: #C0C7CA;
60
+
61
+ .button
62
+ {
63
+ padding: 0 10px 1px;
64
+ line-height: 35px;
65
+ height: 37px;
66
+ font-size: 16px;
67
+ margin-bottom: 0;
68
+
69
+ .dashicons
70
+ {
71
+ font-size: 37px;
72
+ margin-left: -8px;
73
+ margin-right: 12px;
74
+ }
75
+
76
+ &.button-primary
77
+ {
78
+ padding-right: 15px;
79
+ padding-left: 15px;
80
+
81
+ &:after
82
+ {
83
+ content: ' \279C';
84
+ }
85
+
86
+ &.fs-loading
87
+ {
88
+ &:after
89
+ {
90
+ content: '';
91
+ }
92
+ }
93
+ }
94
+
95
+ &.button-secondary
96
+ {
97
+ float: right;
98
+ }
99
+ }
100
+
101
+ // .fs-skip
102
+ // {
103
+ // line-height: 38px;
104
+ // vertical-align: middle;
105
+ // text-decoration: none;
106
+ // margin-left: 10px;
107
+ // }
108
+ }
109
+
110
+ &.fs-anonymous-disabled
111
+ {
112
+ .fs-actions
113
+ {
114
+ .button.button-primary
115
+ {
116
+ width: 100%;
117
+ }
118
+ }
119
+ }
120
+
121
+ .fs-permissions
122
+ {
123
+ padding: 10px 20px;
124
+ background: #FEFEFE;
125
+ // background: #F1F1F1;
126
+ @include transition(background 0.5s ease);
127
+
128
+ .fs-license-sync-disclaimer {
129
+ text-align: center;
130
+ margin-top: 0;
131
+ }
132
+
133
+ .fs-trigger
134
+ {
135
+ font-size: 0.9em;
136
+ text-decoration: none;
137
+ text-align: center;
138
+ display: block;
139
+ }
140
+
141
+ ul
142
+ {
143
+ height: 0;
144
+ overflow: hidden;
145
+ margin: 0;
146
+
147
+ li
148
+ {
149
+ margin-bottom: 12px;
150
+
151
+ &:last-child
152
+ {
153
+ margin-bottom: 0;
154
+ }
155
+
156
+ i.dashicons
157
+ {
158
+ float: left;
159
+ font-size: 40px;
160
+ width: 40px;
161
+ height: 40px;
162
+ }
163
+
164
+ div
165
+ {
166
+ margin-left: 55px;
167
+
168
+ span
169
+ {
170
+ font-weight: bold;
171
+ text-transform: uppercase;
172
+ color: #23282d;
173
+ }
174
+
175
+ p
176
+ {
177
+ margin: 2px 0 0 0;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ &.fs-open
184
+ {
185
+ background: #fff;
186
+
187
+ ul
188
+ {
189
+ height: auto;
190
+ margin: 20px 20px 10px 20px;
191
+ }
192
+ }
193
+
194
+ @media screen and (max-width: ($form_width - 1)) {
195
+ background: #fff;
196
+
197
+ .fs-trigger
198
+ {
199
+ display: none;
200
+ }
201
+
202
+ ul
203
+ {
204
+ height: auto;
205
+ margin: 20px;
206
+ }
207
+ }
208
+ }
209
+
210
+ .fs-freemium-licensing {
211
+ padding: 8px;
212
+ // background: #0085BA;
213
+ background: #777;
214
+ color: #fff;
215
+
216
+ p {
217
+ text-align: center;
218
+ display: block;
219
+ margin: 0;
220
+ padding: 0;
221
+ }
222
+
223
+ a {
224
+ color: #C2EEFF;
225
+ text-decoration: underline;
226
+ }
227
+ }
228
+
229
+ $icon_size: 80px;
230
+ $wp_logo_padding: $icon_size / 10;
231
+ $icons_top: 10px;
232
+
233
+ .fs-visual
234
+ {
235
+ padding: 12px;
236
+ line-height: 0;
237
+ background: #fafafa;
238
+ height: $icon_size;
239
+ position: relative;
240
+
241
+ .fs-site-icon
242
+ {
243
+ position: absolute;
244
+ left: 20px;
245
+ top: $icons_top;
246
+ }
247
+
248
+ .fs-connect-logo
249
+ {
250
+ position: absolute;
251
+ right: 20px;
252
+ top: $icons_top;
253
+ }
254
+
255
+ .fs-plugin-icon
256
+ {
257
+ position: absolute;
258
+ top: $icons_top;
259
+ left: 50%;
260
+ margin-left: - ($icon_size / 2);
261
+ }
262
+
263
+ .fs-plugin-icon,
264
+ .fs-site-icon,
265
+ img,
266
+ object
267
+ {
268
+ width: $icon_size;
269
+ height: $icon_size;
270
+ }
271
+
272
+ .dashicons-wordpress
273
+ {
274
+ font-size: $icon_size - ($wp_logo_padding * 2);
275
+ background: $wordpress_color;
276
+ color: #fff;
277
+ width: $icon_size - ($wp_logo_padding * 2);
278
+ height: $icon_size - ($wp_logo_padding * 2);
279
+ padding: $wp_logo_padding;
280
+ }
281
+
282
+ .dashicons-plus
283
+ {
284
+ position: absolute;
285
+ top: 50%;
286
+ font-size: 30px;
287
+ margin-top: -10px;
288
+ color: #bbb;
289
+
290
+ &.fs-first
291
+ {
292
+ left: 28%;
293
+ }
294
+ &.fs-second
295
+ {
296
+ left: 65%;
297
+ }
298
+ }
299
+
300
+ .fs-plugin-icon,
301
+ .fs-connect-logo,
302
+ .fs-site-icon
303
+ {
304
+ border: 1px solid #ccc;
305
+ padding: 1px;
306
+ background: #fff;
307
+ }
308
+ }
309
+
310
+ .fs-terms
311
+ {
312
+ text-align: center;
313
+ font-size: 0.85em;
314
+ padding: 5px;
315
+ background: rgba(0, 0, 0, 0.05);
316
+
317
+ &, a
318
+ {
319
+ color: #999;
320
+ }
321
+
322
+ a
323
+ {
324
+ text-decoration: none;
325
+ }
326
+ }
327
+ }
328
+
329
+ .rtl
330
+ {
331
+ #fs_connect
332
+ {
333
+ .fs-actions
334
+ {
335
+ padding: 10px 20px;
336
+ background: #C0C7CA;
337
+
338
+ .button
339
+ {
340
+ .dashicons
341
+ {
342
+ font-size: 37px;
343
+ margin-left: -8px;
344
+ margin-right: 12px;
345
+ }
346
+
347
+ &.button-primary
348
+ {
349
+ &:after
350
+ {
351
+ content: ' \000bb';
352
+ }
353
+
354
+ &.fs-loading
355
+ {
356
+ &:after
357
+ {
358
+ content: '';
359
+ }
360
+ }
361
+ }
362
+
363
+ &.button-secondary
364
+ {
365
+ float: left;
366
+ }
367
+ }
368
+ }
369
+
370
+ .fs-permissions
371
+ {
372
+ ul
373
+ {
374
+ li
375
+ {
376
+ div
377
+ {
378
+ margin-right: 55px;
379
+ margin-left: 0;
380
+ }
381
+
382
+ i.dashicons
383
+ {
384
+ float: right;
385
+ }
386
+
387
+ }
388
+ }
389
+ }
390
+
391
+ .fs-visual
392
+ {
393
+ .fs-site-icon
394
+ {
395
+ right: 20px;
396
+ left: auto;
397
+ }
398
+
399
+ .fs-connect-logo
400
+ {
401
+ right: auto;
402
+ left: 20px;
403
+ }
404
+ }
405
+ }
406
+ }
407
+
408
+ .wp-pointer-content
409
+ {
410
+ #fs_connect
411
+ {
412
+ margin: 0;
413
+ @include box-shadow(none);
414
+ }
415
+ }
416
+
417
+ .fs-opt-in-pointer
418
+ {
419
+ .wp-pointer-content
420
+ {
421
+ padding: 0;
422
+ }
423
+
424
+ &.wp-pointer-top
425
+ {
426
+ .wp-pointer-arrow
427
+ {
428
+ border-bottom-color: #dfdfdf;
429
+ }
430
+ .wp-pointer-arrow-inner
431
+ {
432
+ border-bottom-color: #fafafa;
433
+ }
434
+ }
435
+
436
+ &.wp-pointer-bottom
437
+ {
438
+ .wp-pointer-arrow
439
+ {
440
+ border-top-color: #dfdfdf;
441
+ }
442
+ .wp-pointer-arrow-inner
443
+ {
444
+ border-top-color: #fafafa;
445
+ }
446
+ }
447
+
448
+ &.wp-pointer-left
449
+ {
450
+ .wp-pointer-arrow
451
+ {
452
+ border-right-color: #dfdfdf;
453
+ }
454
+ .wp-pointer-arrow-inner
455
+ {
456
+ border-right-color: #fafafa;
457
+ }
458
+ }
459
+
460
+ &.wp-pointer-right
461
+ {
462
+ .wp-pointer-arrow
463
+ {
464
+ border-left-color: #dfdfdf;
465
+ }
466
+ .wp-pointer-arrow-inner
467
+ {
468
+ border-left-color: #fafafa;
469
+ }
470
+ }
471
+ }
includes/pum-sdk/freemius/assets/scss/admin/debug.scss CHANGED
@@ -88,4 +88,48 @@
88
  font-size: 20px;
89
  line-height: 31px;
90
  margin: 0 5px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  }
88
  font-size: 20px;
89
  line-height: 31px;
90
  margin: 0 5px;
91
+ }
92
+
93
+ #fs_log_book {
94
+ table {
95
+ font-family: Consolas,Monaco,monospace;
96
+ font-size: 12px;
97
+
98
+ th {
99
+ color: #ccc;
100
+ }
101
+
102
+ tr {
103
+ background: #232525;
104
+
105
+ &.alternate {
106
+ background: #2b2b2b;
107
+ }
108
+
109
+ td {
110
+ &.fs-col--logger {
111
+ color: #5a7435;
112
+ }
113
+ &.fs-col--type {
114
+ color: #ffc861;
115
+ }
116
+ &.fs-col--function {
117
+ color: #a7b7b1;
118
+ font-weight: bold;
119
+ }
120
+ &.fs-col--message {
121
+ &, a
122
+ {
123
+ color: #9a73ac !important;
124
+ }
125
+ }
126
+ &.fs-col--file {
127
+ color: #d07922;
128
+ }
129
+ &.fs-col--timestamp {
130
+ color: #6596be;
131
+ }
132
+ }
133
+ }
134
+ }
135
  }
includes/pum-sdk/freemius/config.php CHANGED
@@ -140,7 +140,7 @@
140
  define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
141
  }
142
 
143
- #--------------------------------------------------------------------------------
144
  #region HTTP
145
  #--------------------------------------------------------------------------------
146
 
@@ -221,6 +221,24 @@
221
 
222
  #endregion
223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
225
 
226
  if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
140
  define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
141
  }
142
 
143
+ #--------------------------------------------------------------------------------
144
  #region HTTP
145
  #--------------------------------------------------------------------------------
146
 
221
 
222
  #endregion
223
 
224
+ #--------------------------------------------------------------------------------
225
+ #region Checkout
226
+ #--------------------------------------------------------------------------------
227
+
228
+ if ( ! defined( 'FS_CHECKOUT__ADDRESS_PRODUCTION' ) ) {
229
+ define( 'FS_CHECKOUT__ADDRESS_PRODUCTION', 'https://checkout.freemius.com' );
230
+ }
231
+
232
+ if ( ! defined( 'FS_CHECKOUT__ADDRESS_LOCALHOST' ) ) {
233
+ define( 'FS_CHECKOUT__ADDRESS_LOCALHOST', 'http://checkout.freemius:8080' );
234
+ }
235
+
236
+ if ( ! defined( 'FS_CHECKOUT__ADDRESS' ) ) {
237
+ define( 'FS_CHECKOUT__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? FS_CHECKOUT__ADDRESS_PRODUCTION : FS_CHECKOUT__ADDRESS_LOCALHOST ) );
238
+ }
239
+
240
+ #endregion
241
+
242
  define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
243
 
244
  if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
includes/pum-sdk/freemius/gulpfile.js CHANGED
@@ -14,9 +14,25 @@ gulp.task('default', function () {
14
  package: 'freemius',
15
  bugReport: 'https://github.com/Freemius/wordpress-sdk/issues',
16
  lastTranslator: 'Vova Feldman <vova@freemius.com>',
17
- team: 'Freemius Team <admin@freemius.com>'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  } ))
19
- .pipe(gulp.dest('languages/'));
20
 
21
  // Create English PO out of the POT.
22
  gulp.src('languages/freemius.pot')
@@ -24,7 +40,7 @@ gulp.task('default', function () {
24
  items: function(item) {
25
  // If msgstr is empty, use identity translation
26
  if (!item.msgstr.length) {
27
- item.msgstr = [''];
28
  }
29
  if (!item.msgstr[0]) {
30
  item.msgstr[0] = item.msgid;
14
  package: 'freemius',
15
  bugReport: 'https://github.com/Freemius/wordpress-sdk/issues',
16
  lastTranslator: 'Vova Feldman <vova@freemius.com>',
17
+ team: 'Freemius Team <admin@freemius.com>',
18
+ gettextFunctions: [
19
+ {name: '_fs_text'},
20
+ {name: '_fs_echo'},
21
+ {name: '_fs_esc_attr'},
22
+ {name: '_fs_esc_attr_echo'},
23
+ {name: '_fs_esc_html'},
24
+ {name: '_fs_esc_html_echo'},
25
+ {name: '_fs_x', context: 2},
26
+ {name: '_fs_ex', context: 2},
27
+ {name: '_fs_esc_attr_x', context: 2},
28
+ {name: '_fs_esc_html_x', context: 2},
29
+ {name: '_fs_n', plural: 2},
30
+ {name: '_fs_n_noop', plural: 2},
31
+ {name: '_fs_nx', plural: 2, context: 4},
32
+ {name: '_fs_nx_noop', plural: 2, context: 3}
33
+ ]
34
  } ))
35
+ .pipe(gulp.dest('languages/freemius.pot'));
36
 
37
  // Create English PO out of the POT.
38
  gulp.src('languages/freemius.pot')
40
  items: function(item) {
41
  // If msgstr is empty, use identity translation
42
  if (!item.msgstr.length) {
43
+ item.msgstr = [''];
44
  }
45
  if (!item.msgstr[0]) {
46
  item.msgstr[0] = item.msgid;
includes/pum-sdk/freemius/includes/class-freemius-abstract.php CHANGED
@@ -5,6 +5,7 @@
5
  * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
  * @since 1.0.7
7
  */
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
10
  }
@@ -227,7 +228,7 @@
227
  *
228
  * @since 1.0.9
229
  *
230
- * @param string $plan Plan name
231
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
232
  *
233
  * @return bool
@@ -243,7 +244,7 @@
243
  *
244
  * @since 1.0.9
245
  *
246
- * @param string $plan Plan name
247
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
248
  *
249
  * @return bool
@@ -335,7 +336,7 @@
335
  /**
336
  * @since 1.0.2
337
  *
338
- * @param string $plan Plan name
339
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
340
  *
341
  * @return bool
@@ -347,7 +348,7 @@
347
  *
348
  * @since 1.0.9
349
  *
350
- * @param string $plan Plan name
351
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
352
  *
353
  * @return bool
@@ -359,7 +360,7 @@
359
  *
360
  * @since 1.0.9
361
  *
362
- * @param string $plan Plan name
363
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
364
  *
365
  * @return bool
@@ -403,6 +404,31 @@
403
  */
404
  abstract function is_only_premium();
405
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  /**
407
  * Checks if it's a freemium plugin.
408
  *
@@ -451,7 +477,7 @@
451
  * @author Vova Feldman (@svovaf)
452
  * @since 1.0.2
453
  *
454
- * @param string $period Billing cycle
455
  *
456
  * @return string
457
  */
@@ -524,4 +550,4 @@
524
  abstract function is_business();
525
 
526
  #endregion
527
- }
5
  * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
  * @since 1.0.7
7
  */
8
+
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
228
  *
229
  * @since 1.0.9
230
  *
231
+ * @param string $plan Plan name.
232
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
233
  *
234
  * @return bool
244
  *
245
  * @since 1.0.9
246
  *
247
+ * @param string $plan Plan name.
248
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
249
  *
250
  * @return bool
336
  /**
337
  * @since 1.0.2
338
  *
339
+ * @param string $plan Plan name.
340
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
341
  *
342
  * @return bool
348
  *
349
  * @since 1.0.9
350
  *
351
+ * @param string $plan Plan name.
352
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
353
  *
354
  * @return bool
360
  *
361
  * @since 1.0.9
362
  *
363
+ * @param string $plan Plan name.
364
  * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
365
  *
366
  * @return bool
404
  */
405
  abstract function is_only_premium();
406
 
407
+ /**
408
+ * Check if module has a premium code version.
409
+ *
410
+ * Serviceware module might be freemium without any
411
+ * premium code version, where the paid features
412
+ * are all part of the service.
413
+ *
414
+ * @author Vova Feldman (@svovaf)
415
+ * @since 1.2.1.6
416
+ *
417
+ * @return bool
418
+ */
419
+ abstract function has_premium_version();
420
+
421
+ /**
422
+ * Check if module has any release on Freemius,
423
+ * or all plugin's code is on WordPress.org (Serviceware).
424
+ *
425
+ * @return bool
426
+ */
427
+ function has_release_on_freemius() {
428
+ return ! $this->is_org_repo_compliant() ||
429
+ $this->has_premium_version();
430
+ }
431
+
432
  /**
433
  * Checks if it's a freemium plugin.
434
  *
477
  * @author Vova Feldman (@svovaf)
478
  * @since 1.0.2
479
  *
480
+ * @param string $period Billing cycle.
481
  *
482
  * @return string
483
  */
550
  abstract function is_business();
551
 
552
  #endregion
553
+ }
includes/pum-sdk/freemius/includes/class-freemius.php CHANGED
@@ -108,6 +108,18 @@
108
  */
109
  private $_is_premium_only;
110
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  /**
112
  * @since 1.0.8
113
  * @var bool Hints the SDK if the plugin has any paid plans.
@@ -498,7 +510,7 @@
498
  }
499
  }
500
 
501
- if ( ! $this->is_ajax() ) {
502
  if ( ! $this->is_addon() ) {
503
  add_action( 'init', array( &$this, '_add_default_submenu_items' ), WP_FS__LOWEST_PRIORITY );
504
  add_action( 'admin_menu', array( &$this, '_prepare_admin_menu' ), WP_FS__LOWEST_PRIORITY );
@@ -579,24 +591,28 @@
579
  * @since 1.0.9
580
  */
581
  private function _register_account_hooks() {
582
- if ( is_admin() ) {
583
- // If user is paying or in trial and have the free version installed,
584
- // assume that the deactivation is for the upgrade process.
585
- if ( ! $this->is_paying_or_trial() || $this->is_premium() ) {
586
- $this->add_ajax_action(
587
- 'submit_uninstall_reason',
588
- array( &$this, '_submit_uninstall_reason_action' )
589
- );
590
 
591
- if ( $this->is_plugins_page() ) {
592
- add_action( 'admin_footer', array( &$this, '_add_deactivation_feedback_dialog_box' ) );
593
- }
594
- }
 
 
 
 
 
 
595
 
596
- if ( ! $this->is_addon() ) {
597
- if ( $this->is_registered() ) {
598
- $this->add_filter( 'after_code_type_change', array( &$this, '_after_code_type_change' ) );
599
- }
 
 
 
600
  }
601
  }
602
  }
@@ -1201,6 +1217,8 @@
1201
 
1202
  add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
1203
 
 
 
1204
  add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
1205
 
1206
  self::$_statics_loaded = true;
@@ -1251,6 +1269,8 @@
1251
 
1252
  $title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
1253
 
 
 
1254
  if ( WP_FS__DEV_MODE ) {
1255
  // Add top-level debug menu item.
1256
  $hook = add_menu_page(
@@ -1261,18 +1281,22 @@
1261
  array( 'Freemius', '_debug_page_render' )
1262
  );
1263
  } else {
1264
- // Add hidden debug page.
1265
- $hook = add_submenu_page(
1266
- null,
1267
- $title,
1268
- $title,
1269
- 'manage_options',
1270
- 'freemius',
1271
- array( 'Freemius', '_debug_page_render' )
1272
- );
 
 
1273
  }
1274
 
1275
- add_action( "load-$hook", array( 'Freemius', '_debug_page_actions' ) );
 
 
1276
  }
1277
 
1278
  /**
@@ -1280,13 +1304,30 @@
1280
  * @since 1.1.7.3
1281
  */
1282
  static function _toggle_debug_mode() {
1283
- if ( in_array( $_POST['is_on'], array( 0, 1 ) ) ) {
1284
  update_option( 'fs_debug_mode', $_POST['is_on'] );
 
 
 
1285
  }
1286
 
1287
  exit;
1288
  }
1289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1290
  /**
1291
  * @author Vova Feldman (@svovaf)
1292
  * @since 1.0.8
@@ -1313,6 +1354,18 @@
1313
  $fs->_storage->install_timestamp = ( time() - WP_FS__TIME_24_HOURS_IN_SEC );
1314
  // Unset the trial shown timestamp.
1315
  unset( $fs->_storage->trial_promotion_shown );
 
 
 
 
 
 
 
 
 
 
 
 
1316
  }
1317
  }
1318
 
@@ -1340,7 +1393,7 @@
1340
  'licenses' => $licenses,
1341
  );
1342
 
1343
- fs_enqueue_local_style( 'fs_account', '/admin/debug.css' );
1344
  fs_require_once_template( 'debug.php', $vars );
1345
  }
1346
 
@@ -1456,7 +1509,7 @@
1456
  'version' => $version,
1457
  'sdk' => $this->version,
1458
  'is_admin' => json_encode( is_admin() ),
1459
- 'is_ajax' => json_encode( $this->is_ajax() ),
1460
  'is_cron' => json_encode( $this->is_cron() ),
1461
  'is_http' => json_encode( WP_FS__IS_HTTP_REQUEST ),
1462
  )
@@ -1638,7 +1691,7 @@
1638
  }
1639
 
1640
  if ( ! function_exists( 'wp_nonce_url' ) ) {
1641
- require_once( ABSPATH . 'wp-includes/functions.php' );
1642
  }
1643
 
1644
  $current_user = self::_get_current_wp_user();
@@ -1864,35 +1917,18 @@
1864
 
1865
  $custom_email_sections = array();
1866
 
1867
- if ( 'squid' === $error_type ) {
1868
- // Override the 'Site' email section.
1869
- $custom_email_sections['site'] = array(
1870
- 'rows' => array(
1871
- 'hosting_company' => array( 'Hosting Company', fs_request_get( 'hosting_company' ) )
1872
- )
1873
- );
1874
- }
1875
-
1876
  // Add 'API Error' custom email section.
1877
  $custom_email_sections['api_error'] = array(
1878
- 'title' => 'API Error',
1879
  'rows' => array(
1880
- 'ping' => array( is_string( $pong ) ? htmlentities( $pong ) : json_encode( $pong ) )
1881
- )
1882
- );
1883
-
1884
- // Add PHP info for deeper investigation.
1885
- ob_start();
1886
- phpinfo();
1887
- $php_info = ob_get_clean();
1888
- $custom_email_sections['php_info'] = array(
1889
- 'title' => 'PHP Info',
1890
- 'rows' => array(
1891
- 'info' => array( $php_info )
1892
  )
1893
  );
1894
 
1895
- // Send email with technical details to resolve CloudFlare's firewall unnecessary protection.
1896
  $this->send_email(
1897
  'api@freemius.com', // recipient
1898
  $title . ' [' . $this->get_plugin_name() . ']', // subject
@@ -2004,7 +2040,7 @@
2004
  $message = fs_get_template( 'email.php', $vars );
2005
 
2006
  // Set the type of email to HTML.
2007
- $headers[] = 'Content-type: text/html';
2008
 
2009
  $header_string = implode( "\r\n", $headers );
2010
 
@@ -2046,38 +2082,57 @@
2046
 
2047
  $server_ip = WP_FS__REMOTE_ADDR;
2048
 
 
 
 
 
 
 
 
2049
  // Generate the default email sections.
2050
  $sections = array(
2051
- 'sdk' => array(
2052
  'title' => 'SDK',
2053
  'rows' => array(
2054
  'fs_version' => array( 'FS Version', $this->version ),
2055
  'curl_version' => array( 'cURL Version', $curl_version_information['version'] )
2056
  )
2057
  ),
2058
- 'plugin' => array(
2059
  'title' => 'Plugin',
2060
  'rows' => array(
2061
  'name' => array( 'Name', $this->get_plugin_name() ),
2062
  'version' => array( 'Version', $this->get_plugin_version() )
2063
  )
2064
  ),
2065
- 'site' => array(
 
 
 
 
 
 
 
2066
  'title' => 'Site',
2067
  'rows' => array(
2068
- 'unique_id' => array( 'Address', $this->get_anonymous_id() ),
2069
  'address' => array( 'Address', site_url() ),
2070
  'host' => array(
2071
  'HTTP_HOST',
2072
  ( ! empty( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '' )
2073
  ),
 
 
 
 
 
2074
  'server_addr' => array(
2075
  'SERVER_ADDR',
2076
  '<a href="http://www.projecthoneypot.org/ip_' . $server_ip . '">' . $server_ip . '</a>'
2077
  )
2078
  )
2079
  ),
2080
- 'user' => array(
2081
  'title' => 'User',
2082
  'rows' => array(
2083
  'email' => array( 'Email', $current_user->user_email ),
@@ -2085,12 +2140,18 @@
2085
  'last' => array( 'Last', $current_user->user_lastname )
2086
  )
2087
  ),
2088
- 'plugins' => array(
2089
  'title' => 'Plugins',
2090
  'rows' => array(
2091
  'active_plugins' => array( 'Active Plugins', $active_plugin_string )
2092
  )
2093
  ),
 
 
 
 
 
 
2094
  );
2095
 
2096
  // Allow the sections to be modified by other code.
@@ -2290,10 +2351,6 @@
2290
  }
2291
  }
2292
 
2293
- if ( $this->is_premium() ) {
2294
- new FS_Plugin_Updater( $this );
2295
- }
2296
-
2297
  // if ( $this->is_registered() ||
2298
  // $this->is_anonymous() ||
2299
  // $this->is_pending_activation()
@@ -2302,6 +2359,21 @@
2302
  // }
2303
  }
2304
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2305
  $this->do_action( 'initiated' );
2306
 
2307
  if ( $this->_storage->prev_is_premium !== $this->_plugin->is_premium ) {
@@ -2350,12 +2422,12 @@
2350
  $result = $this->stop_tracking();
2351
 
2352
  if ( true === $result ) {
2353
- $this->shoot_ajax_success();
2354
  }
2355
 
2356
  $this->_logger->api_error( $result );
2357
 
2358
- $this->shoot_ajax_failure(
2359
  __fs( 'unexpected-api-error', $this->_slug ) .
2360
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2361
  $result->error->message :
@@ -2371,12 +2443,12 @@
2371
  $result = $this->allow_tracking();
2372
 
2373
  if ( true === $result ) {
2374
- $this->shoot_ajax_success();
2375
  }
2376
 
2377
  $this->_logger->api_error( $result );
2378
 
2379
- $this->shoot_ajax_failure(
2380
  __fs( 'unexpected-api-error', $this->_slug ) .
2381
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2382
  $result->error->message :
@@ -2581,10 +2653,12 @@
2581
  $this->_menu = FS_Admin_Menu_Manager::instance( $this->_slug );
2582
  $this->_menu->init( $plugin_info['menu'], $this->is_addon() );
2583
 
2584
- $this->_has_addons = $this->get_bool_option( $plugin_info, 'has_addons', false );
2585
- $this->_has_paid_plans = $this->get_bool_option( $plugin_info, 'has_paid_plans', true );
2586
- $this->_is_org_compliant = $this->get_bool_option( $plugin_info, 'is_org_compliant', true );
2587
- $this->_is_premium_only = $this->get_bool_option( $plugin_info, 'is_premium_only', false );
 
 
2588
  if ( $this->_is_premium_only ) {
2589
  // If premium only plugin, disable anonymous mode.
2590
  $this->_enable_anonymous = false;
@@ -2684,7 +2758,7 @@
2684
  return true;
2685
  }
2686
 
2687
- if ( $this->is_ajax() &&
2688
  ! $this->_admin_notices->has_sticky( 'failed_connect_api_first' ) &&
2689
  ! $this->_admin_notices->has_sticky( 'failed_connect_api' )
2690
  ) {
@@ -3157,7 +3231,7 @@
3157
 
3158
  if ( $this->is_paying() ) {
3159
  // Check for premium plugin updates.
3160
- $this->_check_updates( true );
3161
  }
3162
  } else {
3163
  // Sync install (only if something changed locally).
@@ -3748,14 +3822,18 @@
3748
  FS_Api::clear_cache();
3749
 
3750
  if ( $this->is_registered() ) {
3751
- $this->reconnect_locally();
 
 
 
 
 
 
3752
 
3753
  // Schedule re-activation event and sync.
3754
  // $this->sync_install( array(), true );
3755
  $this->schedule_install_sync();
3756
 
3757
- $is_premium_version_activation = ( current_filter() !== ( 'activate_' . $this->_free_plugin_basename ) );
3758
-
3759
  // 1. If running in the activation of the FREE module, get the basename of the PREMIUM.
3760
  // 2. If running in the activation of the PREMIUM module, get the basename of the FREE.
3761
  $other_version_basename = $is_premium_version_activation ?
@@ -3772,7 +3850,7 @@
3772
  deactivate_plugins( $other_version_basename );
3773
  }
3774
 
3775
- // If activating the premium module version, add an admin noitce to congratulate for an upgrade completion.
3776
  if ( $is_premium_version_activation ) {
3777
  $this->_admin_notices->add(
3778
  sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
@@ -4535,13 +4613,15 @@
4535
  $params['reason_info'] = $uninstall_reason->info;
4536
  }
4537
 
4538
- if ( ! $this->is_registered() && isset( $uninstall_reason ) ) {
4539
  // Send anonymous uninstall event only if user submitted a feedback.
4540
- if ( isset( $uninstall_reason->is_anonymous ) && ! $uninstall_reason->is_anonymous ) {
4541
- $this->opt_in( false, false, false, false, true );
4542
- } else {
4543
- $params['uid'] = $this->get_anonymous_id();
4544
- $this->get_api_plugin_scope()->call( 'uninstall.json', 'put', $params );
 
 
4545
  }
4546
  } else {
4547
  // Send uninstall event.
@@ -4617,7 +4697,7 @@
4617
  if ( ! function_exists( 'get_plugins' ) ) {
4618
  self::$_static_logger->log( 'Including wp-admin/includes/plugin.php...' );
4619
 
4620
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
4621
  }
4622
  }
4623
 
@@ -4629,7 +4709,7 @@
4629
  */
4630
  private static function require_pluggable_essentials() {
4631
  if ( ! function_exists( 'wp_get_current_user' ) ) {
4632
- require_once( ABSPATH . 'wp-includes/pluggable.php' );
4633
  }
4634
  }
4635
 
@@ -5027,7 +5107,7 @@
5027
  return false;
5028
  }
5029
 
5030
- $addons = $this->_sync_addons( $flush );
5031
 
5032
  return ( ! is_array( $addons ) || empty( $addons ) ) ?
5033
  false :
@@ -5835,7 +5915,7 @@
5835
 
5836
  if ( ! current_user_can( 'activate_plugins' ) ) {
5837
  // Only for admins.
5838
- $this->shoot_ajax_failure();
5839
  }
5840
 
5841
  $billing = fs_request_get( 'billing' );
@@ -5846,13 +5926,13 @@
5846
  ) ) );
5847
 
5848
  if ( ! $this->is_api_result_entity( $result ) ) {
5849
- $this->shoot_ajax_failure();
5850
  }
5851
 
5852
  // Purge cached billing.
5853
  $this->get_api_user_scope()->purge_cache( 'billing.json' );
5854
 
5855
- $this->shoot_ajax_success();
5856
  }
5857
 
5858
  /**
@@ -5866,7 +5946,7 @@
5866
 
5867
  if ( ! current_user_can( 'activate_plugins' ) ) {
5868
  // Only for admins.
5869
- $this->shoot_ajax_failure();
5870
  }
5871
 
5872
  $trial_data = fs_request_get( 'trial' );
@@ -5881,14 +5961,14 @@
5881
  );
5882
 
5883
  if ( is_object( $next_page ) && $this->is_api_error( $next_page ) ) {
5884
- $this->shoot_ajax_failure(
5885
  isset( $next_page->error ) ?
5886
  $next_page->error->message :
5887
  var_export( $next_page, true )
5888
  );
5889
  }
5890
 
5891
- $this->shoot_ajax_success( array(
5892
  'next_page' => $next_page,
5893
  ) );
5894
  }
@@ -5912,8 +5992,8 @@
5912
  $api = $this->get_api_plugin_scope();
5913
  $result = $api->call( '/licenses/resend.json', 'post',
5914
  array(
5915
- 'email' => $email_address,
5916
- 'is_localhost' => WP_FS__IS_LOCALHOST
5917
  )
5918
  );
5919
 
@@ -6134,6 +6214,22 @@
6134
  return $this->_is_premium_only;
6135
  }
6136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6137
  /**
6138
  * Check if feature supported with current site's plan.
6139
  *
@@ -6168,7 +6264,7 @@
6168
  *
6169
  * @link http://wordpress.stackexchange.com/questions/70676/how-to-check-if-i-am-in-admin-ajax
6170
  */
6171
- function is_ajax() {
6172
  return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
6173
  }
6174
 
@@ -6184,7 +6280,7 @@
6184
  */
6185
  function is_ajax_action( $actions ) {
6186
  // Verify it's an ajax call.
6187
- if ( ! $this->is_ajax() ) {
6188
  return false;
6189
  }
6190
 
@@ -6211,6 +6307,48 @@
6211
  return false;
6212
  }
6213
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6214
  /**
6215
  * @author Vova Feldman (@svovaf)
6216
  * @since 1.1.7
@@ -6230,7 +6368,7 @@
6230
  * @return bool
6231
  */
6232
  function is_user_in_admin() {
6233
- return is_admin() && ! $this->is_ajax() && ! $this->is_cron();
6234
  }
6235
 
6236
  /**
@@ -6263,7 +6401,7 @@
6263
  }
6264
  }
6265
 
6266
- if ( ! $this->_menu->is_top_level() ) {
6267
  $parent_slug = $this->_menu->get_parent_slug();
6268
  $menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ?
6269
  $parent_slug :
@@ -6287,8 +6425,18 @@
6287
  return add_query_arg( $params, admin_url( $this->_menu->get_raw_slug(), 'admin' ) );
6288
  }
6289
  } else {
 
 
 
 
 
 
 
 
 
 
6290
  return add_query_arg( array_merge( $params, array(
6291
- 'page' => $this->_menu->get_slug( $page ),
6292
  ) ), admin_url( 'admin.php', 'admin' ) );
6293
  }
6294
  }
@@ -6963,25 +7111,27 @@
6963
  }
6964
  }
6965
 
6966
- if ( $this->is_paying_or_trial() && ! $this->is_premium() ) {
6967
- if ( $this->is_paying() ) {
6968
- $this->_admin_notices->add_sticky(
6969
- sprintf(
6970
- __fs( 'activation-with-plan-x-message', $this->_slug ),
6971
- $this->_site->plan->title
6972
- ) . $this->get_complete_upgrade_instructions(),
6973
- 'plan_upgraded',
6974
- __fs( 'yee-haw', $this->_slug ) . '!'
6975
- );
6976
- } else {
6977
- $this->_admin_notices->add_sticky(
6978
- sprintf(
6979
- __fs( 'trial-started-message', $this->_slug ),
6980
- '<i>' . $this->get_plugin_name() . '</i>'
6981
- ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
6982
- 'trial_started',
6983
- __fs( 'yee-haw', $this->_slug ) . '!'
6984
- );
 
 
6985
  }
6986
 
6987
  $this->_admin_notices->remove_sticky( array(
@@ -6999,7 +7149,13 @@
6999
  $next_page = '';
7000
 
7001
  if ( is_numeric( $plugin_id ) ) {
7002
- if ( $plugin_id != $this->_plugin->id ) {
 
 
 
 
 
 
7003
  // Add-on was installed - sync license right after install.
7004
  $next_page = $this->_get_sync_license_url( $plugin_id );
7005
  }
@@ -7122,10 +7278,21 @@
7122
  $license_key = false,
7123
  $is_pending_trial = false
7124
  ) {
7125
- // Install must be activated via email since
7126
- // user with the same email already exist.
7127
- $this->_storage->is_pending_activation = true;
7128
- $this->_add_pending_activation_notice( $email, $is_pending_trial );
 
 
 
 
 
 
 
 
 
 
 
7129
 
7130
  if ( ! empty( $license_key ) ) {
7131
  $this->_storage->pending_license_key = $license_key;
@@ -7397,7 +7564,17 @@
7397
 
7398
  $hook = false;
7399
 
7400
- if ( $this->_menu->is_top_level() ) {
 
 
 
 
 
 
 
 
 
 
7401
  $hook = $this->_menu->override_menu_item( array( &$this, '_connect_page_render' ) );
7402
 
7403
  if ( false === $hook ) {
@@ -7880,7 +8057,20 @@
7880
  * @return string
7881
  */
7882
  public function get_action_tag( $tag ) {
7883
- return "fs_{$tag}_{$this->_slug}";
 
 
 
 
 
 
 
 
 
 
 
 
 
7884
  }
7885
 
7886
  /**
@@ -7895,6 +8085,19 @@
7895
  return 'wp_ajax_' . $this->get_action_tag( $tag );
7896
  }
7897
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7898
  /**
7899
  * Do action, specific for the current context plugin.
7900
  *
@@ -7946,22 +8149,61 @@
7946
  * @param string $tag
7947
  * @param callable $function_to_add
7948
  * @param int $priority
7949
- * @param int $accepted_args
7950
  *
7951
  * @uses add_action()
7952
  *
7953
  * @return bool True if action added, false if no need to add the action since the AJAX call isn't matching.
7954
  */
7955
- function add_ajax_action( $tag, $function_to_add, $priority = WP_FS__DEFAULT_PRIORITY, $accepted_args = 1 ) {
 
 
 
 
7956
  $this->_logger->entrance( $tag );
7957
 
7958
- if ( ! $this->is_ajax_action( $tag ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7959
  return false;
7960
  }
7961
 
7962
- add_action( $this->get_ajax_action_tag( $tag ), $function_to_add, $priority, $accepted_args );
 
 
 
 
 
7963
 
7964
- $this->_logger->info( "$tag AJAX callback action added." );
7965
 
7966
  return true;
7967
  }
@@ -7974,7 +8216,7 @@
7974
  *
7975
  * @param mixed $response
7976
  */
7977
- function shoot_ajax_response( $response ) {
7978
  wp_send_json( $response );
7979
  }
7980
 
@@ -7986,7 +8228,7 @@
7986
  *
7987
  * @param mixed $data Data to encode as JSON, then print and exit.
7988
  */
7989
- function shoot_ajax_success( $data = null ) {
7990
  wp_send_json_success( $data );
7991
  }
7992
 
@@ -7998,7 +8240,7 @@
7998
  *
7999
  * @param mixed $error Optional error message.
8000
  */
8001
- function shoot_ajax_failure( $error = '' ) {
8002
  $result = array( 'success' => false );
8003
  if ( ! empty( $error ) ) {
8004
  $result['error'] = $error;
@@ -8679,7 +8921,7 @@
8679
  $plugin_id = $this->_plugin->id;
8680
  }
8681
 
8682
- $this->_check_updates( true, $plugin_id, $flush );
8683
  $updates = $this->get_all_updates();
8684
 
8685
  return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
@@ -8829,7 +9071,7 @@
8829
  sprintf(
8830
  __fs( 'addon-successfully-upgraded-message', $this->_slug ),
8831
  $addon->title
8832
- ) . ' ' . $this->_get_latest_download_link(
8833
  __fs( 'download-latest-version', $this->_slug ),
8834
  $addon_id
8835
  )
@@ -8837,7 +9079,7 @@
8837
  sprintf(
8838
  __fs( 'addon-successfully-purchased-message', $this->_slug ),
8839
  $addon->title
8840
- ) . ' ' . $this->_get_latest_download_link(
8841
  __fs( 'download-latest-version', $this->_slug ),
8842
  $addon_id
8843
  ),
@@ -9026,22 +9268,24 @@
9026
  $this->_storage->trial_plan :
9027
  $this->_site->plan;
9028
 
9029
- $this->_admin_notices->add(
9030
- sprintf(
9031
- __fs( 'plan-did-not-change-message', $this->_slug ),
9032
- '<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . __fs( 'trial', $this->_slug ) : '' ) . '</b></i>'
9033
- ) . ' ' . sprintf(
9034
- '<a href="%s">%s</a>',
9035
- $this->contact_url(
9036
- 'bug',
9037
- sprintf( __fs( 'plan-did-not-change-email-message', $this->_slug ),
9038
- strtoupper( $plan->name )
9039
- )
 
 
 
9040
  ),
9041
- __fs( 'contact-us-here', $this->_slug )
9042
- ),
9043
- __fs( 'hmm', $this->_slug ) . '...'
9044
- );
9045
  }
9046
  break;
9047
  case 'upgraded':
@@ -9571,11 +9815,20 @@
9571
  $is_premium = self::get_instance_by_id( $addon_id )->_can_download_premium();
9572
  }
9573
 
9574
- return // If add-on, then append add-on ID.
9575
- ( $is_addon ? "/addons/$addon_id" : '' ) .
9576
- '/updates/latest.' . $type .
9577
- // If add-on and not yet activated, try to fetch based on server licensing.
9578
- ( is_bool( $is_premium ) ? '?is_premium=' . json_encode( $is_premium ) : '' );
 
 
 
 
 
 
 
 
 
9579
  }
9580
 
9581
  /**
@@ -9631,10 +9884,10 @@
9631
  * @uses FS_Api
9632
  * @uses wp_redirect()
9633
  */
9634
- private function _download_latest_directly( $plugin_id = false ) {
9635
  $this->_logger->entrance();
9636
 
9637
- wp_redirect( $this->_get_latest_download_api_url( $plugin_id ) );
9638
  }
9639
 
9640
  /**
@@ -9647,7 +9900,7 @@
9647
  *
9648
  * @return string
9649
  */
9650
- private function _get_latest_download_api_url( $plugin_id = false ) {
9651
  $this->_logger->entrance();
9652
 
9653
  return $this->get_api_site_scope()->get_signed_url(
@@ -9684,7 +9937,7 @@
9684
  *
9685
  * @return string
9686
  */
9687
- private function _get_latest_download_link( $label, $plugin_id = false ) {
9688
  return sprintf(
9689
  '<a target="_blank" href="%s">%s</a>',
9690
  $this->_get_latest_download_local_url( $plugin_id ),
@@ -9726,7 +9979,7 @@
9726
  * @param bool|number $plugin_id
9727
  * @param bool $flush Since 1.1.7.3
9728
  */
9729
- private function _check_updates( $background = false, $plugin_id = false, $flush = true ) {
9730
  $this->_logger->entrance();
9731
 
9732
  // Check if there's a newer version for download.
@@ -9770,7 +10023,7 @@
9770
  *
9771
  * @uses FS_Api
9772
  */
9773
- private function _sync_addons( $flush = false ) {
9774
  $this->_logger->entrance();
9775
 
9776
  $api = $this->get_api_site_or_plugin_scope();
@@ -9814,7 +10067,7 @@
9814
  *
9815
  * @return object
9816
  */
9817
- private function _update_email( $new_email ) {
9818
  $this->_logger->entrance();
9819
 
9820
 
@@ -10156,7 +10409,7 @@
10156
 
10157
  case 'check_updates':
10158
  check_admin_referer( $action );
10159
- $this->_check_updates();
10160
 
10161
  return;
10162
 
@@ -10194,7 +10447,7 @@
10194
  check_admin_referer( 'update_email' );
10195
 
10196
  $new_email = fs_request_get( 'fs_email_' . $this->_slug, '' );
10197
- $result = $this->_update_email( $new_email );
10198
 
10199
  if ( isset( $result->error ) ) {
10200
  switch ( $result->error->code ) {
@@ -10268,7 +10521,7 @@
10268
  return;
10269
 
10270
  case 'download_latest':
10271
- $this->_download_latest_directly( $plugin_id );
10272
 
10273
  return;
10274
 
@@ -10356,12 +10609,21 @@
10356
  function _account_page_render() {
10357
  $this->_logger->entrance();
10358
 
10359
- $vars = array( 'slug' => $this->_slug );
10360
  if ( 'billing' === fs_request_get( 'tab' ) ) {
10361
- fs_require_once_template( 'billing.php', $vars );
10362
- } else {
10363
- fs_require_once_template( 'account.php', $vars );
10364
  }
 
 
 
 
 
 
 
 
 
 
 
10365
  }
10366
 
10367
  /**
@@ -10374,7 +10636,15 @@
10374
  $this->_logger->entrance();
10375
 
10376
  $vars = array( 'slug' => $this->_slug );
10377
- fs_require_once_template( 'connect.php', $vars );
 
 
 
 
 
 
 
 
10378
  }
10379
 
10380
  /**
@@ -10418,7 +10688,15 @@
10418
  $this->_logger->entrance();
10419
 
10420
  $vars = array( 'slug' => $this->_slug );
10421
- fs_require_once_template( 'add-ons.php', $vars );
 
 
 
 
 
 
 
 
10422
  }
10423
 
10424
  /* Pricing & Upgrade
@@ -10887,7 +11165,7 @@
10887
  return;
10888
  }
10889
 
10890
- if ( ! $this->is_ajax() ) {
10891
  // Inject license activation dialog UI and client side code.
10892
  add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
10893
  }
@@ -11130,7 +11408,7 @@
11130
  * @return string
11131
  */
11132
  private function get_complete_upgrade_instructions( $plan_title = '' ) {
11133
- if ( $this->is_premium() ) {
11134
  return '';
11135
  }
11136
 
@@ -11146,7 +11424,7 @@
11146
  return sprintf(
11147
  ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
11148
  __fs( 'follow-steps-to-complete-upgrade', $this->_slug ),
11149
- $this->_get_latest_download_link( sprintf(
11150
  __fs( 'download-latest-x-version', $this->_slug ),
11151
  $plan_title
11152
  ) ),
@@ -11341,4 +11619,4 @@
11341
  }
11342
 
11343
  #endregion
11344
- }
108
  */
109
  private $_is_premium_only;
110
 
111
+ /**
112
+ * @since 1.2.1.6
113
+ * @var bool Hints the SDK if plugin have premium code version at all.
114
+ */
115
+ private $_has_premium_version;
116
+
117
+ /**
118
+ * @since 1.2.1.6
119
+ * @var bool Hints the SDK if plugin should ignore pending mode by simulating a skip.
120
+ */
121
+ private $_ignore_pending_mode;
122
+
123
  /**
124
  * @since 1.0.8
125
  * @var bool Hints the SDK if the plugin has any paid plans.
510
  }
511
  }
512
 
513
+ if ( ! self::is_ajax() ) {
514
  if ( ! $this->is_addon() ) {
515
  add_action( 'init', array( &$this, '_add_default_submenu_items' ), WP_FS__LOWEST_PRIORITY );
516
  add_action( 'admin_menu', array( &$this, '_prepare_admin_menu' ), WP_FS__LOWEST_PRIORITY );
591
  * @since 1.0.9
592
  */
593
  private function _register_account_hooks() {
594
+ if ( ! is_admin() ) {
595
+ return;
596
+ }
 
 
 
 
 
597
 
598
+ /**
599
+ * Always show the deactivation feedback form since we added
600
+ * automatic free version deactivation upon premium code activation.
601
+ *
602
+ * @since 1.2.1.6
603
+ */
604
+ $this->add_ajax_action(
605
+ 'submit_uninstall_reason',
606
+ array( &$this, '_submit_uninstall_reason_action' )
607
+ );
608
 
609
+ if ( $this->is_plugins_page() ) {
610
+ add_action( 'admin_footer', array( &$this, '_add_deactivation_feedback_dialog_box' ) );
611
+ }
612
+
613
+ if ( ! $this->is_addon() ) {
614
+ if ( $this->is_registered() ) {
615
+ $this->add_filter( 'after_code_type_change', array( &$this, '_after_code_type_change' ) );
616
  }
617
  }
618
  }
1217
 
1218
  add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
1219
 
1220
+ self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) );
1221
+
1222
  add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
1223
 
1224
  self::$_statics_loaded = true;
1269
 
1270
  $title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
1271
 
1272
+ $hook = null;
1273
+
1274
  if ( WP_FS__DEV_MODE ) {
1275
  // Add top-level debug menu item.
1276
  $hook = add_menu_page(
1281
  array( 'Freemius', '_debug_page_render' )
1282
  );
1283
  } else {
1284
+ if ( 'freemius' === fs_request_get( 'page' ) ) {
1285
+ // Add hidden debug page.
1286
+ $hook = add_submenu_page(
1287
+ null,
1288
+ $title,
1289
+ $title,
1290
+ 'manage_options',
1291
+ 'freemius',
1292
+ array( 'Freemius', '_debug_page_render' )
1293
+ );
1294
+ }
1295
  }
1296
 
1297
+ if ( ! empty( $hook ) ) {
1298
+ add_action( "load-$hook", array( 'Freemius', '_debug_page_actions' ) );
1299
+ }
1300
  }
1301
 
1302
  /**
1304
  * @since 1.1.7.3
1305
  */
1306
  static function _toggle_debug_mode() {
1307
+ if ( fs_request_is_post() && in_array( $_POST['is_on'], array( 0, 1 ) ) ) {
1308
  update_option( 'fs_debug_mode', $_POST['is_on'] );
1309
+
1310
+ // Turn on/off storage logging.
1311
+ FS_Logger::_set_storage_logging( ( 1 == $_POST['is_on'] ) );
1312
  }
1313
 
1314
  exit;
1315
  }
1316
 
1317
+ /**
1318
+ * @author Vova Feldman (@svovaf)
1319
+ * @since 1.2.1.6
1320
+ */
1321
+ static function _get_debug_log() {
1322
+ $logs = FS_Logger::load_db_logs(
1323
+ ! empty( $_POST['filters'] ) ? $_POST['filters'] : false,
1324
+ ! empty( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ? $_POST['limit'] : 200,
1325
+ ! empty( $_POST['offset'] ) && is_numeric( $_POST['offset'] ) ? $_POST['offset'] : 0
1326
+ );
1327
+
1328
+ self::shoot_ajax_success( $logs );
1329
+ }
1330
+
1331
  /**
1332
  * @author Vova Feldman (@svovaf)
1333
  * @since 1.0.8
1354
  $fs->_storage->install_timestamp = ( time() - WP_FS__TIME_24_HOURS_IN_SEC );
1355
  // Unset the trial shown timestamp.
1356
  unset( $fs->_storage->trial_promotion_shown );
1357
+ } else if ( fs_request_is_action( 'download_logs' ) ) {
1358
+ check_admin_referer( 'download_logs' );
1359
+
1360
+ $download_url = FS_Logger::download_db_logs(
1361
+ ! empty( $_POST['filters'] ) ? $_POST['filters'] : false
1362
+ );
1363
+
1364
+ if ( false === $download_url ) {
1365
+ wp_die( 'Oops... there was an error while generating the logs download file. Please try again and if it doesn\'t work contact support@freemius.com.' );
1366
+ }
1367
+
1368
+ fs_redirect( $download_url );
1369
  }
1370
  }
1371
 
1393
  'licenses' => $licenses,
1394
  );
1395
 
1396
+ fs_enqueue_local_style( 'fs_debug', '/admin/debug.css' );
1397
  fs_require_once_template( 'debug.php', $vars );
1398
  }
1399
 
1509
  'version' => $version,
1510
  'sdk' => $this->version,
1511
  'is_admin' => json_encode( is_admin() ),
1512
+ 'is_ajax' => json_encode( self::is_ajax() ),
1513
  'is_cron' => json_encode( $this->is_cron() ),
1514
  'is_http' => json_encode( WP_FS__IS_HTTP_REQUEST ),
1515
  )
1691
  }
1692
 
1693
  if ( ! function_exists( 'wp_nonce_url' ) ) {
1694
+ require_once ABSPATH . 'wp-includes/functions.php';
1695
  }
1696
 
1697
  $current_user = self::_get_current_wp_user();
1917
 
1918
  $custom_email_sections = array();
1919
 
 
 
 
 
 
 
 
 
 
1920
  // Add 'API Error' custom email section.
1921
  $custom_email_sections['api_error'] = array(
1922
+ 'title' => "API Error",
1923
  'rows' => array(
1924
+ 'ping' => array(
1925
+ 'API Error',
1926
+ is_string( $pong ) ? htmlentities( $pong ) : json_encode( $pong )
1927
+ ),
 
 
 
 
 
 
 
 
1928
  )
1929
  );
1930
 
1931
+ // Send email with technical details to resolve API connectivity issues.
1932
  $this->send_email(
1933
  'api@freemius.com', // recipient
1934
  $title . ' [' . $this->get_plugin_name() . ']', // subject
2040
  $message = fs_get_template( 'email.php', $vars );
2041
 
2042
  // Set the type of email to HTML.
2043
+ $headers[] = 'Content-type: text/html; charset=UTF-8';
2044
 
2045
  $header_string = implode( "\r\n", $headers );
2046
 
2082
 
2083
  $server_ip = WP_FS__REMOTE_ADDR;
2084
 
2085
+ // Add PHP info for deeper investigation.
2086
+ ob_start();
2087
+ phpinfo();
2088
+ $php_info = ob_get_clean();
2089
+
2090
+ $api_domain = substr( FS_API__ADDRESS, strpos( FS_API__ADDRESS, ':' ) + 3 );
2091
+
2092
  // Generate the default email sections.
2093
  $sections = array(
2094
+ 'sdk' => array(
2095
  'title' => 'SDK',
2096
  'rows' => array(
2097
  'fs_version' => array( 'FS Version', $this->version ),
2098
  'curl_version' => array( 'cURL Version', $curl_version_information['version'] )
2099
  )
2100
  ),
2101
+ 'plugin' => array(
2102
  'title' => 'Plugin',
2103
  'rows' => array(
2104
  'name' => array( 'Name', $this->get_plugin_name() ),
2105
  'version' => array( 'Version', $this->get_plugin_version() )
2106
  )
2107
  ),
2108
+ 'api' => array(
2109
+ 'title' => 'API Subdomain',
2110
+ 'rows' => array(
2111
+ 'dns' => array( 'DNS_CNAME', var_export( @dns_get_record( $api_domain, DNS_CNAME ), true ) ),
2112
+ 'ip' => array( 'IP', @gethostbyname( $api_domain ) ),
2113
+ ),
2114
+ ),
2115
+ 'site' => array(
2116
  'title' => 'Site',
2117
  'rows' => array(
2118
+ 'unique_id' => array( 'Unique ID', $this->get_anonymous_id() ),
2119
  'address' => array( 'Address', site_url() ),
2120
  'host' => array(
2121
  'HTTP_HOST',
2122
  ( ! empty( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '' )
2123
  ),
2124
+ 'hosting' => array(
2125
+ 'Hosting Company' => fs_request_has( 'hosting_company' ) ?
2126
+ fs_request_get( 'hosting_company' ) :
2127
+ 'Unknown',
2128
+ ),
2129
  'server_addr' => array(
2130
  'SERVER_ADDR',
2131
  '<a href="http://www.projecthoneypot.org/ip_' . $server_ip . '">' . $server_ip . '</a>'
2132
  )
2133
  )
2134
  ),
2135
+ 'user' => array(
2136
  'title' => 'User',
2137
  'rows' => array(
2138
  'email' => array( 'Email', $current_user->user_email ),
2140
  'last' => array( 'Last', $current_user->user_lastname )
2141
  )
2142
  ),
2143
+ 'plugins' => array(
2144
  'title' => 'Plugins',
2145
  'rows' => array(
2146
  'active_plugins' => array( 'Active Plugins', $active_plugin_string )
2147
  )
2148
  ),
2149
+ 'php_info' => array(
2150
+ 'title' => 'PHP Info',
2151
+ 'rows' => array(
2152
+ 'info' => array( $php_info )
2153
+ ),
2154
+ )
2155
  );
2156
 
2157
  // Allow the sections to be modified by other code.
2351
  }
2352
  }
2353
 
 
 
 
 
2354
  // if ( $this->is_registered() ||
2355
  // $this->is_anonymous() ||
2356
  // $this->is_pending_activation()
2359
  // }
2360
  }
2361
 
2362
+ /**
2363
+ * Should be called outside `$this->is_user_in_admin()` scope
2364
+ * because the updater has some logic that needs to be executed
2365
+ * during AJAX calls.
2366
+ *
2367
+ * Currently we need to hook to the `http_request_host_is_external` filter.
2368
+ * In the future, there might be additional logic added.
2369
+ *
2370
+ * @author Vova Feldman
2371
+ * @since 1.2.1.6
2372
+ */
2373
+ if ( $this->is_premium() && $this->has_release_on_freemius() ) {
2374
+ new FS_Plugin_Updater( $this );
2375
+ }
2376
+
2377
  $this->do_action( 'initiated' );
2378
 
2379
  if ( $this->_storage->prev_is_premium !== $this->_plugin->is_premium ) {
2422
  $result = $this->stop_tracking();
2423
 
2424
  if ( true === $result ) {
2425
+ self::shoot_ajax_success();
2426
  }
2427
 
2428
  $this->_logger->api_error( $result );
2429
 
2430
+ self::shoot_ajax_failure(
2431
  __fs( 'unexpected-api-error', $this->_slug ) .
2432
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2433
  $result->error->message :
2443
  $result = $this->allow_tracking();
2444
 
2445
  if ( true === $result ) {
2446
+ self::shoot_ajax_success();
2447
  }
2448
 
2449
  $this->_logger->api_error( $result );
2450
 
2451
+ self::shoot_ajax_failure(
2452
  __fs( 'unexpected-api-error', $this->_slug ) .
2453
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2454
  $result->error->message :
2653
  $this->_menu = FS_Admin_Menu_Manager::instance( $this->_slug );
2654
  $this->_menu->init( $plugin_info['menu'], $this->is_addon() );
2655
 
2656
+ $this->_has_addons = $this->get_bool_option( $plugin_info, 'has_addons', false );
2657
+ $this->_has_paid_plans = $this->get_bool_option( $plugin_info, 'has_paid_plans', true );
2658
+ $this->_has_premium_version = $this->get_bool_option( $plugin_info, 'has_premium_version', $this->_has_paid_plans );
2659
+ $this->_ignore_pending_mode = $this->get_bool_option( $plugin_info, 'ignore_pending_mode', false );
2660
+ $this->_is_org_compliant = $this->get_bool_option( $plugin_info, 'is_org_compliant', true );
2661
+ $this->_is_premium_only = $this->get_bool_option( $plugin_info, 'is_premium_only', false );
2662
  if ( $this->_is_premium_only ) {
2663
  // If premium only plugin, disable anonymous mode.
2664
  $this->_enable_anonymous = false;
2758
  return true;
2759
  }
2760
 
2761
+ if ( self::is_ajax() &&
2762
  ! $this->_admin_notices->has_sticky( 'failed_connect_api_first' ) &&
2763
  ! $this->_admin_notices->has_sticky( 'failed_connect_api' )
2764
  ) {
3231
 
3232
  if ( $this->is_paying() ) {
3233
  // Check for premium plugin updates.
3234
+ $this->check_updates( true );
3235
  }
3236
  } else {
3237
  // Sync install (only if something changed locally).
3822
  FS_Api::clear_cache();
3823
 
3824
  if ( $this->is_registered() ) {
3825
+ $is_premium_version_activation = ( current_filter() !== ( 'activate_' . $this->_free_plugin_basename ) );
3826
+
3827
+ if ( $is_premium_version_activation ) {
3828
+ $this->reconnect_locally();
3829
+ }
3830
+
3831
+ $this->_logger->info( 'Activating ' . ( $is_premium_version_activation ? 'premium' : 'free' ) . ' plugin version.' );
3832
 
3833
  // Schedule re-activation event and sync.
3834
  // $this->sync_install( array(), true );
3835
  $this->schedule_install_sync();
3836
 
 
 
3837
  // 1. If running in the activation of the FREE module, get the basename of the PREMIUM.
3838
  // 2. If running in the activation of the PREMIUM module, get the basename of the FREE.
3839
  $other_version_basename = $is_premium_version_activation ?
3850
  deactivate_plugins( $other_version_basename );
3851
  }
3852
 
3853
+ // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
3854
  if ( $is_premium_version_activation ) {
3855
  $this->_admin_notices->add(
3856
  sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
4613
  $params['reason_info'] = $uninstall_reason->info;
4614
  }
4615
 
4616
+ if ( ! $this->is_registered() ) {
4617
  // Send anonymous uninstall event only if user submitted a feedback.
4618
+ if ( isset( $uninstall_reason ) ) {
4619
+ if ( isset( $uninstall_reason->is_anonymous ) && ! $uninstall_reason->is_anonymous ) {
4620
+ $this->opt_in( false, false, false, false, true );
4621
+ } else {
4622
+ $params['uid'] = $this->get_anonymous_id();
4623
+ $this->get_api_plugin_scope()->call( 'uninstall.json', 'put', $params );
4624
+ }
4625
  }
4626
  } else {
4627
  // Send uninstall event.
4697
  if ( ! function_exists( 'get_plugins' ) ) {
4698
  self::$_static_logger->log( 'Including wp-admin/includes/plugin.php...' );
4699
 
4700
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
4701
  }
4702
  }
4703
 
4709
  */
4710
  private static function require_pluggable_essentials() {
4711
  if ( ! function_exists( 'wp_get_current_user' ) ) {
4712
+ require_once ABSPATH . 'wp-includes/pluggable.php';
4713
  }
4714
  }
4715
 
5107
  return false;
5108
  }
5109
 
5110
+ $addons = $this->sync_addons( $flush );
5111
 
5112
  return ( ! is_array( $addons ) || empty( $addons ) ) ?
5113
  false :
5915
 
5916
  if ( ! current_user_can( 'activate_plugins' ) ) {
5917
  // Only for admins.
5918
+ self::shoot_ajax_failure();
5919
  }
5920
 
5921
  $billing = fs_request_get( 'billing' );
5926
  ) ) );
5927
 
5928
  if ( ! $this->is_api_result_entity( $result ) ) {
5929
+ self::shoot_ajax_failure();
5930
  }
5931
 
5932
  // Purge cached billing.
5933
  $this->get_api_user_scope()->purge_cache( 'billing.json' );
5934
 
5935
+ self::shoot_ajax_success();
5936
  }
5937
 
5938
  /**
5946
 
5947
  if ( ! current_user_can( 'activate_plugins' ) ) {
5948
  // Only for admins.
5949
+ self::shoot_ajax_failure();
5950
  }
5951
 
5952
  $trial_data = fs_request_get( 'trial' );
5961
  );
5962
 
5963
  if ( is_object( $next_page ) && $this->is_api_error( $next_page ) ) {
5964
+ self::shoot_ajax_failure(
5965
  isset( $next_page->error ) ?
5966
  $next_page->error->message :
5967
  var_export( $next_page, true )
5968
  );
5969
  }
5970
 
5971
+ self::shoot_ajax_success( array(
5972
  'next_page' => $next_page,
5973
  ) );
5974
  }
5992
  $api = $this->get_api_plugin_scope();
5993
  $result = $api->call( '/licenses/resend.json', 'post',
5994
  array(
5995
+ 'email' => $email_address,
5996
+ 'url' => home_url(),
5997
  )
5998
  );
5999
 
6214
  return $this->_is_premium_only;
6215
  }
6216
 
6217
+ /**
6218
+ * Check if module has a premium code version.
6219
+ *
6220
+ * Serviceware module might be freemium without any
6221
+ * premium code version, where the paid features
6222
+ * are all part of the service.
6223
+ *
6224
+ * @author Vova Feldman (@svovaf)
6225
+ * @since 1.2.1.6
6226
+ *
6227
+ * @return bool
6228
+ */
6229
+ function has_premium_version() {
6230
+ return $this->_has_premium_version;
6231
+ }
6232
+
6233
  /**
6234
  * Check if feature supported with current site's plan.
6235
  *
6264
  *
6265
  * @link http://wordpress.stackexchange.com/questions/70676/how-to-check-if-i-am-in-admin-ajax
6266
  */
6267
+ static function is_ajax() {
6268
  return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
6269
  }
6270
 
6280
  */
6281
  function is_ajax_action( $actions ) {
6282
  // Verify it's an ajax call.
6283
+ if ( ! self::is_ajax() ) {
6284
  return false;
6285
  }
6286
 
6307
  return false;
6308
  }
6309
 
6310
+ /**
6311
+ * Check if it's an AJAX call targeted for current request.
6312
+ *
6313
+ * @author Vova Feldman (@svovaf)
6314
+ * @since 1.2.0
6315
+ *
6316
+ * @param array|string $actions Collection of AJAX actions.
6317
+ * @param string $slug
6318
+ *
6319
+ * @return bool
6320
+ */
6321
+ static function is_ajax_action_static( $actions, $slug = '' ) {
6322
+ // Verify it's an ajax call.
6323
+ if ( ! self::is_ajax() ) {
6324
+ return false;
6325
+ }
6326
+
6327
+ if ( ! empty( $slug ) ) {
6328
+ // Verify the call is relevant for the plugin.
6329
+ if ( $slug !== fs_request_get( 'slug' ) ) {
6330
+ return false;
6331
+ }
6332
+ }
6333
+
6334
+ // Verify it's one of the specified actions.
6335
+ if ( is_string( $actions ) ) {
6336
+ $actions = explode( ',', $actions );
6337
+ }
6338
+
6339
+ if ( is_array( $actions ) && 0 < count( $actions ) ) {
6340
+ $ajax_action = fs_request_get( 'action' );
6341
+
6342
+ foreach ( $actions as $action ) {
6343
+ if ( $ajax_action === self::get_action_tag_static( $action, $slug ) ) {
6344
+ return true;
6345
+ }
6346
+ }
6347
+ }
6348
+
6349
+ return false;
6350
+ }
6351
+
6352
  /**
6353
  * @author Vova Feldman (@svovaf)
6354
  * @since 1.1.7
6368
  * @return bool
6369
  */
6370
  function is_user_in_admin() {
6371
+ return is_admin() && ! self::is_ajax() && ! $this->is_cron();
6372
  }
6373
 
6374
  /**
6401
  }
6402
  }
6403
 
6404
+ if ( $this->_menu->has_menu_slug() && ! $this->_menu->is_top_level() ) {
6405
  $parent_slug = $this->_menu->get_parent_slug();
6406
  $menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ?
6407
  $parent_slug :
6425
  return add_query_arg( $params, admin_url( $this->_menu->get_raw_slug(), 'admin' ) );
6426
  }
6427
  } else {
6428
+ /**
6429
+ * @author Vova Feldman
6430
+ * @since 1.2.1.6
6431
+ *
6432
+ * If module doesn't have a settings page, create one for the opt-in screen.
6433
+ */
6434
+ $menu_slug = $this->_menu->has_menu_slug() ?
6435
+ $this->_menu->get_slug( $page ) :
6436
+ $this->_slug;
6437
+
6438
  return add_query_arg( array_merge( $params, array(
6439
+ 'page' => $menu_slug,
6440
  ) ), admin_url( 'admin.php', 'admin' ) );
6441
  }
6442
  }
7111
  }
7112
  }
7113
 
7114
+ if ( $this->is_paying_or_trial() ) {
7115
+ if ( ! $this->is_premium() || ! $this->has_premium_version() ) {
7116
+ if ( $this->is_paying() ) {
7117
+ $this->_admin_notices->add_sticky(
7118
+ sprintf(
7119
+ __fs( 'activation-with-plan-x-message', $this->_slug ),
7120
+ $this->_site->plan->title
7121
+ ) . $this->get_complete_upgrade_instructions(),
7122
+ 'plan_upgraded',
7123
+ __fs( 'yee-haw', $this->_slug ) . '!'
7124
+ );
7125
+ } else {
7126
+ $this->_admin_notices->add_sticky(
7127
+ sprintf(
7128
+ __fs( 'trial-started-message', $this->_slug ),
7129
+ '<i>' . $this->get_plugin_name() . '</i>'
7130
+ ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
7131
+ 'trial_started',
7132
+ __fs( 'yee-haw', $this->_slug ) . '!'
7133
+ );
7134
+ }
7135
  }
7136
 
7137
  $this->_admin_notices->remove_sticky( array(
7149
  $next_page = '';
7150
 
7151
  if ( is_numeric( $plugin_id ) ) {
7152
+ /**
7153
+ * @author Leo Fajardo
7154
+ * @since 1.2.1.6
7155
+ *
7156
+ * Also sync the license after an anonymous user subscribes.
7157
+ */
7158
+ if ( $this->is_anonymous() || $plugin_id != $this->_plugin->id ) {
7159
  // Add-on was installed - sync license right after install.
7160
  $next_page = $this->_get_sync_license_url( $plugin_id );
7161
  }
7278
  $license_key = false,
7279
  $is_pending_trial = false
7280
  ) {
7281
+ if ( $this->_ignore_pending_mode ) {
7282
+ /**
7283
+ * If explicitly asked to ignore pending mode, set to anonymous mode
7284
+ * if require confirmation before finalizing the opt-in.
7285
+ *
7286
+ * @author Vova Feldman
7287
+ * @since 1.2.1.6
7288
+ */
7289
+ $this->skip_connection();
7290
+ } else {
7291
+ // Install must be activated via email since
7292
+ // user with the same email already exist.
7293
+ $this->_storage->is_pending_activation = true;
7294
+ $this->_add_pending_activation_notice( $email, $is_pending_trial );
7295
+ }
7296
 
7297
  if ( ! empty( $license_key ) ) {
7298
  $this->_storage->pending_license_key = $license_key;
7564
 
7565
  $hook = false;
7566
 
7567
+ if ( ! $this->_menu->has_menu_slug() ) {
7568
+ // Add the opt-in page without a menu item.
7569
+ $hook = add_submenu_page(
7570
+ null,
7571
+ $this->get_plugin_name(),
7572
+ $this->get_plugin_name(),
7573
+ 'manage_options',
7574
+ $this->_slug,
7575
+ array( &$this, '_connect_page_render' )
7576
+ );
7577
+ } else if ( $this->_menu->is_top_level() ) {
7578
  $hook = $this->_menu->override_menu_item( array( &$this, '_connect_page_render' ) );
7579
 
7580
  if ( false === $hook ) {
8057
  * @return string
8058
  */
8059
  public function get_action_tag( $tag ) {
8060
+ return self::get_action_tag_static( $tag, $this->_slug );
8061
+ }
8062
+
8063
+ /**
8064
+ * @author Vova Feldman (@svovaf)
8065
+ * @since 1.2.1.6
8066
+ *
8067
+ * @param string $tag
8068
+ * @param string $slug
8069
+ *
8070
+ * @return string
8071
+ */
8072
+ static function get_action_tag_static( $tag, $slug = '' ) {
8073
+ return "fs_{$tag}" . ( empty( $slug ) ? '' : "_{$slug}" );
8074
  }
8075
 
8076
  /**
8085
  return 'wp_ajax_' . $this->get_action_tag( $tag );
8086
  }
8087
 
8088
+ /**
8089
+ * @author Vova Feldman (@svovaf)
8090
+ * @since 1.2.1.6
8091
+ *
8092
+ * @param string $tag
8093
+ * @param string $slug
8094
+ *
8095
+ * @return string
8096
+ */
8097
+ private static function get_ajax_action_tag_static( $tag, $slug = '' ) {
8098
+ return 'wp_ajax_' . self::get_action_tag_static( $tag, $slug );
8099
+ }
8100
+
8101
  /**
8102
  * Do action, specific for the current context plugin.
8103
  *
8149
  * @param string $tag
8150
  * @param callable $function_to_add
8151
  * @param int $priority
 
8152
  *
8153
  * @uses add_action()
8154
  *
8155
  * @return bool True if action added, false if no need to add the action since the AJAX call isn't matching.
8156
  */
8157
+ function add_ajax_action(
8158
+ $tag,
8159
+ $function_to_add,
8160
+ $priority = WP_FS__DEFAULT_PRIORITY
8161
+ ) {
8162
  $this->_logger->entrance( $tag );
8163
 
8164
+ return self::add_ajax_action_static(
8165
+ $tag,
8166
+ $function_to_add,
8167
+ $priority,
8168
+ $this->_slug
8169
+ );
8170
+ }
8171
+
8172
+ /**
8173
+ * Add AJAX action.
8174
+ *
8175
+ * @author Vova Feldman (@svovaf)
8176
+ * @since 1.2.1.6
8177
+ *
8178
+ * @param string $tag
8179
+ * @param callable $function_to_add
8180
+ * @param int $priority
8181
+ * @param string $slug
8182
+ *
8183
+ * @return bool True if action added, false if no need to add the action since the AJAX call isn't matching.
8184
+ * @uses add_action()
8185
+ *
8186
+ */
8187
+ static function add_ajax_action_static(
8188
+ $tag,
8189
+ $function_to_add,
8190
+ $priority = WP_FS__DEFAULT_PRIORITY,
8191
+ $slug = ''
8192
+ ) {
8193
+ self::$_static_logger->entrance( $tag );
8194
+
8195
+ if ( ! self::is_ajax_action_static( $tag, $slug ) ) {
8196
  return false;
8197
  }
8198
 
8199
+ add_action(
8200
+ self::get_ajax_action_tag_static( $tag, $slug ),
8201
+ $function_to_add,
8202
+ $priority,
8203
+ 0
8204
+ );
8205
 
8206
+ self::$_static_logger->info( "$tag AJAX callback action added." );
8207
 
8208
  return true;
8209
  }
8216
  *
8217
  * @param mixed $response
8218
  */
8219
+ static function shoot_ajax_response( $response ) {
8220
  wp_send_json( $response );
8221
  }
8222
 
8228
  *
8229
  * @param mixed $data Data to encode as JSON, then print and exit.
8230
  */
8231
+ static function shoot_ajax_success( $data = null ) {
8232
  wp_send_json_success( $data );
8233
  }
8234
 
8240
  *
8241
  * @param mixed $error Optional error message.
8242
  */
8243
+ static function shoot_ajax_failure( $error = '' ) {
8244
  $result = array( 'success' => false );
8245
  if ( ! empty( $error ) ) {
8246
  $result['error'] = $error;
8921
  $plugin_id = $this->_plugin->id;
8922
  }
8923
 
8924
+ $this->check_updates( true, $plugin_id, $flush );
8925
  $updates = $this->get_all_updates();
8926
 
8927
  return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
9071
  sprintf(
9072
  __fs( 'addon-successfully-upgraded-message', $this->_slug ),
9073
  $addon->title
9074
+ ) . ' ' . $this->get_latest_download_link(
9075
  __fs( 'download-latest-version', $this->_slug ),
9076
  $addon_id
9077
  )
9079
  sprintf(
9080
  __fs( 'addon-successfully-purchased-message', $this->_slug ),
9081
  $addon->title
9082
+ ) . ' ' . $this->get_latest_download_link(
9083
  __fs( 'download-latest-version', $this->_slug ),
9084
  $addon_id
9085
  ),
9268
  $this->_storage->trial_plan :
9269
  $this->_site->plan;
9270
 
9271
+ if ( $plan->is_free() ) {
9272
+ $this->_admin_notices->add(
9273
+ sprintf(
9274
+ __fs( 'plan-did-not-change-message', $this->_slug ),
9275
+ '<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . __fs( 'trial', $this->_slug ) : '' ) . '</b></i>'
9276
+ ) . ' ' . sprintf(
9277
+ '<a href="%s">%s</a>',
9278
+ $this->contact_url(
9279
+ 'bug',
9280
+ sprintf( __fs( 'plan-did-not-change-email-message', $this->_slug ),
9281
+ strtoupper( $plan->name )
9282
+ )
9283
+ ),
9284
+ __fs( 'contact-us-here', $this->_slug )
9285
  ),
9286
+ __fs( 'hmm', $this->_slug ) . '...'
9287
+ );
9288
+ }
 
9289
  }
9290
  break;
9291
  case 'upgraded':
9815
  $is_premium = self::get_instance_by_id( $addon_id )->_can_download_premium();
9816
  }
9817
 
9818
+ // If add-on, then append add-on ID.
9819
+ $endpoint = ( $is_addon ? "/addons/$addon_id" : '' ) .
9820
+ '/updates/latest.' . $type;
9821
+
9822
+ // If add-on and not yet activated, try to fetch based on server licensing.
9823
+ if ( is_bool( $is_premium ) ) {
9824
+ $endpoint = add_query_arg( 'is_premium', json_encode( $is_premium ), $endpoint );
9825
+ }
9826
+
9827
+ if ( $this->has_secret_key() ) {
9828
+ $endpoint = add_query_arg( 'type', 'all', $endpoint );
9829
+ }
9830
+
9831
+ return $endpoint;
9832
  }
9833
 
9834
  /**
9884
  * @uses FS_Api
9885
  * @uses wp_redirect()
9886
  */
9887
+ private function download_latest_directly( $plugin_id = false ) {
9888
  $this->_logger->entrance();
9889
 
9890
+ wp_redirect( $this->get_latest_download_api_url( $plugin_id ) );
9891
  }
9892
 
9893
  /**
9900
  *
9901
  * @return string
9902
  */
9903
+ private function get_latest_download_api_url( $plugin_id = false ) {
9904
  $this->_logger->entrance();
9905
 
9906
  return $this->get_api_site_scope()->get_signed_url(
9937
  *
9938
  * @return string
9939
  */
9940
+ private function get_latest_download_link( $label, $plugin_id = false ) {
9941
  return sprintf(
9942
  '<a target="_blank" href="%s">%s</a>',
9943
  $this->_get_latest_download_local_url( $plugin_id ),
9979
  * @param bool|number $plugin_id
9980
  * @param bool $flush Since 1.1.7.3
9981
  */
9982
+ private function check_updates( $background = false, $plugin_id = false, $flush = true ) {
9983
  $this->_logger->entrance();
9984
 
9985
  // Check if there's a newer version for download.
10023
  *
10024
  * @uses FS_Api
10025
  */
10026
+ private function sync_addons( $flush = false ) {
10027
  $this->_logger->entrance();
10028
 
10029
  $api = $this->get_api_site_or_plugin_scope();
10067
  *
10068
  * @return object
10069
  */
10070
+ private function update_email( $new_email ) {
10071
  $this->_logger->entrance();
10072
 
10073
 
10409
 
10410
  case 'check_updates':
10411
  check_admin_referer( $action );
10412
+ $this->check_updates();
10413
 
10414
  return;
10415
 
10447
  check_admin_referer( 'update_email' );
10448
 
10449
  $new_email = fs_request_get( 'fs_email_' . $this->_slug, '' );
10450
+ $result = $this->update_email( $new_email );
10451
 
10452
  if ( isset( $result->error ) ) {
10453
  switch ( $result->error->code ) {
10521
  return;
10522
 
10523
  case 'download_latest':
10524
+ $this->download_latest_directly( $plugin_id );
10525
 
10526
  return;
10527
 
10609
  function _account_page_render() {
10610
  $this->_logger->entrance();
10611
 
10612
+ $template = 'account.php';
10613
  if ( 'billing' === fs_request_get( 'tab' ) ) {
10614
+ $template = 'billing.php';
 
 
10615
  }
10616
+
10617
+ $vars = array( 'slug' => $this->_slug );
10618
+
10619
+ /**
10620
+ * Added filter to the template to allow developers wrapping the template
10621
+ * in custom HTML (e.g. within a wizard/tabs).
10622
+ *
10623
+ * @author Vova Feldman (@svovaf)
10624
+ * @since 1.2.1.6
10625
+ */
10626
+ echo $this->apply_filters( "templates/{$template}", fs_get_template( $template, $vars ) );
10627
  }
10628
 
10629
  /**
10636
  $this->_logger->entrance();
10637
 
10638
  $vars = array( 'slug' => $this->_slug );
10639
+
10640
+ /**
10641
+ * Added filter to the template to allow developers wrapping the template
10642
+ * in custom HTML (e.g. within a wizard/tabs).
10643
+ *
10644
+ * @author Vova Feldman (@svovaf)
10645
+ * @since 1.2.1.6
10646
+ */
10647
+ echo $this->apply_filters( 'templates/connect.php', fs_get_template( 'connect.php', $vars ) );
10648
  }
10649
 
10650
  /**
10688
  $this->_logger->entrance();
10689
 
10690
  $vars = array( 'slug' => $this->_slug );
10691
+
10692
+ /**
10693
+ * Added filter to the template to allow developers wrapping the template
10694
+ * in custom HTML (e.g. within a wizard/tabs).
10695
+ *
10696
+ * @author Vova Feldman (@svovaf)
10697
+ * @since 1.2.1.6
10698
+ */
10699
+ echo $this->apply_filters( 'templates/add-ons.php', fs_get_template( 'add-ons.php', $vars ) );
10700
  }
10701
 
10702
  /* Pricing & Upgrade
11165
  return;
11166
  }
11167
 
11168
+ if ( ! self::is_ajax() ) {
11169
  // Inject license activation dialog UI and client side code.
11170
  add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
11171
  }
11408
  * @return string
11409
  */
11410
  private function get_complete_upgrade_instructions( $plan_title = '' ) {
11411
+ if ( ! $this->has_premium_version() || $this->is_premium() ) {
11412
  return '';
11413
  }
11414
 
11424
  return sprintf(
11425
  ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
11426
  __fs( 'follow-steps-to-complete-upgrade', $this->_slug ),
11427
+ $this->get_latest_download_link( sprintf(
11428
  __fs( 'download-latest-x-version', $this->_slug ),
11429
  $plan_title
11430
  ) ),
11619
  }
11620
 
11621
  #endregion
11622
+ }
includes/pum-sdk/freemius/includes/class-fs-api.php CHANGED
@@ -84,7 +84,7 @@
84
  }
85
 
86
  if ( ! class_exists( 'Freemius_Api' ) ) {
87
- require_once( WP_FS__DIR_SDK . '/Freemius.php' );
88
  }
89
 
90
  self::$_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true );
84
  }
85
 
86
  if ( ! class_exists( 'Freemius_Api' ) ) {
87
+ require_once WP_FS__DIR_SDK . '/Freemius.php';
88
  }
89
 
90
  self::$_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true );
includes/pum-sdk/freemius/includes/class-fs-logger.php CHANGED
@@ -15,6 +15,22 @@
15
  private $_on = false;
16
  private $_echo = false;
17
  private $_file_start = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  private static $LOGGERS = array();
20
  private static $LOG = array();
@@ -27,7 +43,11 @@
27
  $bt = debug_backtrace();
28
  $caller = $bt[2];
29
 
30
- $this->_file_start = strpos( $caller['file'], 'plugins' ) + strlen( 'plugins/' );
 
 
 
 
31
 
32
  if ( $on ) {
33
  $this->on();
@@ -47,6 +67,10 @@
47
  public static function get_logger( $id, $on = false, $echo = false ) {
48
  $id = strtolower( $id );
49
 
 
 
 
 
50
  if ( ! isset( self::$LOGGERS[ $id ] ) ) {
51
  self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
52
  }
@@ -54,7 +78,25 @@
54
  return self::$LOGGERS[ $id ];
55
  }
56
 
57
- private static function _hook_footer() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  if ( self::$_HOOKED_FOOTER ) {
59
  return;
60
  }
@@ -73,7 +115,11 @@
73
  function on() {
74
  $this->_on = true;
75
 
76
- self::_hook_footer();
 
 
 
 
77
  }
78
 
79
  function echo_on() {
@@ -107,14 +153,37 @@
107
 
108
  $caller = $bt[ $depth ];
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  $log = array_merge( $caller, array(
111
  'cnt' => self::$CNT ++,
112
  'logger' => $this,
113
- 'timestamp' => microtime(true),
114
- 'type' => $type,
115
  'msg' => $message,
116
  ) );
117
 
 
 
 
 
118
  self::$LOG[] = $log;
119
 
120
  if ( $this->is_echo_on() ) {
@@ -176,30 +245,442 @@
176
  $this->_log( $msg, 'log', $wrapper );
177
  }
178
 
 
 
 
 
179
  private static function format( $log, $show_type = true ) {
180
- return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['type'] . ']' : '' ) . $log['function'] . ' >> ' . $log['msg'] . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ') ' : '' ) . ' [' . $log['timestamp'] . ']';
181
  }
182
 
183
  private static function format_html( $log ) {
184
- return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['type'] . '] <b><code style="color: #c4b1e0;">' . $log['function'] . '</code> >> <b style="color: #f59330;">' . esc_html($log['msg']) . '</b></b>' . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ')' : '' ) . ' [' . $log['timestamp'] . ']</div>';
185
  }
186
 
 
 
187
  static function dump() {
188
  ?>
189
  <!-- BEGIN: Freemius PHP Console Log -->
190
  <script type="text/javascript">
191
  <?php
192
- foreach (self::$LOG as $log)
193
- {
194
- echo 'console.' . $log['type'] . '(' . json_encode(self::format($log, false)) . ')' . "\n";
195
- }
196
  ?>
197
  </script>
198
  <!-- END: Freemius PHP Console Log -->
199
- <?php
200
  }
201
 
202
  static function get_log() {
203
  return self::$LOG;
204
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  }
15
  private $_on = false;
16
  private $_echo = false;
17
  private $_file_start = 0;
18
+ /**
19
+ * @var int PHP Process ID.
20
+ */
21
+ private static $_processID;
22
+ /**
23
+ * @var string PHP Script user name.
24
+ */
25
+ private static $_ownerName;
26
+ /**
27
+ * @var bool Is storage logging turned on.
28
+ */
29
+ private static $_isStorageLoggingOn;
30
+ /**
31
+ * @var int ABSPATH length.
32
+ */
33
+ private static $_abspathLength;
34
 
35
  private static $LOGGERS = array();
36
  private static $LOG = array();
43
  $bt = debug_backtrace();
44
  $caller = $bt[2];
45
 
46
+ if ( false !== strpos( $caller['file'], 'plugins' ) ) {
47
+ $this->_file_start = strpos( $caller['file'], 'plugins' ) + strlen( 'plugins/' );
48
+ } else {
49
+ $this->_file_start = strpos( $caller['file'], 'themes' ) + strlen( 'themes/' );
50
+ }
51
 
52
  if ( $on ) {
53
  $this->on();
67
  public static function get_logger( $id, $on = false, $echo = false ) {
68
  $id = strtolower( $id );
69
 
70
+ if ( ! isset( self::$_processID ) ) {
71
+ self::init();
72
+ }
73
+
74
  if ( ! isset( self::$LOGGERS[ $id ] ) ) {
75
  self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
76
  }
78
  return self::$LOGGERS[ $id ];
79
  }
80
 
81
+ /**
82
+ * Initialize logging global info.
83
+ *
84
+ * @author Vova Feldman (@svovaf)
85
+ * @since 1.2.1.6
86
+ */
87
+ private static function init() {
88
+ self::$_ownerName = get_current_user();
89
+ self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
90
+ self::$_abspathLength = strlen( ABSPATH );
91
+ self::$_processID = getmypid();
92
+
93
+ // Process ID may be `false` on errors.
94
+ if ( ! is_numeric( self::$_processID ) ) {
95
+ self::$_processID = 0;
96
+ }
97
+ }
98
+
99
+ private static function hook_footer() {
100
  if ( self::$_HOOKED_FOOTER ) {
101
  return;
102
  }
115
  function on() {
116
  $this->_on = true;
117
 
118
+ if ( ! function_exists( 'dbDelta' ) ) {
119
+ require_once ABSPATH . 'wp-admin/includes/upgrade.php';
120
+ }
121
+
122
+ self::hook_footer();
123
  }
124
 
125
  function echo_on() {
153
 
154
  $caller = $bt[ $depth ];
155
 
156
+ /**
157
+ * Retrieve the correct call file & line number from backtrace
158
+ * when logging from a wrapper method.
159
+ *
160
+ * @author Vova Feldman
161
+ * @since 1.2.1.6
162
+ */
163
+ if ( empty( $caller['line'] ) ) {
164
+ $depth --;
165
+
166
+ while ( $depth >= 0 ) {
167
+ if ( ! empty( $bt[ $depth ]['line'] ) ) {
168
+ $caller['line'] = $bt[ $depth ]['line'];
169
+ $caller['file'] = $bt[ $depth ]['file'];
170
+ break;
171
+ }
172
+ }
173
+ }
174
+
175
  $log = array_merge( $caller, array(
176
  'cnt' => self::$CNT ++,
177
  'logger' => $this,
178
+ 'timestamp' => microtime( true ),
179
+ 'log_type' => $type,
180
  'msg' => $message,
181
  ) );
182
 
183
+ if ( self::$_isStorageLoggingOn ) {
184
+ $this->db_log( $type, $message, self::$CNT, $caller );
185
+ }
186
+
187
  self::$LOG[] = $log;
188
 
189
  if ( $this->is_echo_on() ) {
245
  $this->_log( $msg, 'log', $wrapper );
246
  }
247
 
248
+ #--------------------------------------------------------------------------------
249
+ #region Log Formatting
250
+ #--------------------------------------------------------------------------------
251
+
252
  private static function format( $log, $show_type = true ) {
253
+ return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['log_type'] . ']' : '' ) . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . ' >> ' . $log['msg'] . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ') ' : '' ) . ' [' . $log['timestamp'] . ']';
254
  }
255
 
256
  private static function format_html( $log ) {
257
+ return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['log_type'] . '] <b><code style="color: #c4b1e0;">' . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . '</code> >> <b style="color: #f59330;">' . esc_html( $log['msg'] ) . '</b></b>' . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ')' : '' ) . ' [' . $log['timestamp'] . ']</div>';
258
  }
259
 
260
+ #endregion
261
+
262
  static function dump() {
263
  ?>
264
  <!-- BEGIN: Freemius PHP Console Log -->
265
  <script type="text/javascript">
266
  <?php
267
+ foreach ( self::$LOG as $log ) {
268
+ echo 'console.' . $log['log_type'] . '(' . json_encode( self::format( $log, false ) ) . ')' . "\n";
269
+ }
 
270
  ?>
271
  </script>
272
  <!-- END: Freemius PHP Console Log -->
273
+ <?php
274
  }
275
 
276
  static function get_log() {
277
  return self::$LOG;
278
  }
279
+
280
+ #--------------------------------------------------------------------------------
281
+ #region Database Logging
282
+ #--------------------------------------------------------------------------------
283
+
284
+ /**
285
+ * @author Vova Feldman (@svovaf)
286
+ * @since 1.2.1.6
287
+ *
288
+ * @return bool
289
+ */
290
+ public static function is_storage_logging_on() {
291
+ if ( ! isset( self::$_isStorageLoggingOn ) ) {
292
+ self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
293
+ }
294
+
295
+ return self::$_isStorageLoggingOn;
296
+ }
297
+
298
+ /**
299
+ * Turns on/off database persistent debugging to capture
300
+ * multi-session logs to debug complex flows like
301
+ * plugin auto-deactivate on premium version activation.
302
+ *
303
+ * @todo Check if Theme Check has issues with DB tables for themes.
304
+ *
305
+ * @author Vova Feldman (@svovaf)
306
+ * @since 1.2.1.6
307
+ *
308
+ * @param bool $is_on
309
+ *
310
+ * @return bool
311
+ */
312
+ public static function _set_storage_logging( $is_on = true ) {
313
+ global $wpdb;
314
+
315
+ $table = "{$wpdb->prefix}fs_logger";
316
+
317
+ if ( $is_on ) {
318
+ /**
319
+ * Create logging table.
320
+ *
321
+ * NOTE:
322
+ * dbDelta must use KEY and not INDEX for indexes.
323
+ *
324
+ * @link https://core.trac.wordpress.org/ticket/2695
325
+ */
326
+ $result = $wpdb->query( "CREATE TABLE {$table} (
327
+ `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
328
+ `process_id` INT UNSIGNED NOT NULL,
329
+ `user_name` VARCHAR(64) NOT NULL,
330
+ `logger` VARCHAR(128) NOT NULL,
331
+ `log_order` INT UNSIGNED NOT NULL,
332
+ `type` ENUM('log','info','warn','error') NOT NULL DEFAULT 'log',
333
+ `message` TEXT NOT NULL,
334
+ `file` VARCHAR(256) NOT NULL,
335
+ `line` INT UNSIGNED NOT NULL,
336
+ `function` VARCHAR(256) NOT NULL,
337
+ `request_type` ENUM('call','ajax','cron') NOT NULL DEFAULT 'call',
338
+ `request_url` VARCHAR(1024) NOT NULL,
339
+ `created` DECIMAL(16, 6) NOT NULL,
340
+ PRIMARY KEY (`id`),
341
+ KEY `process_id` (`process_id` ASC),
342
+ KEY `process_logger` (`process_id` ASC, `logger` ASC),
343
+ KEY `function` (`function` ASC),
344
+ KEY `type` (`type` ASC))" );
345
+ } else {
346
+ /**
347
+ * Drop logging table.
348
+ */
349
+ $result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
350
+ }
351
+
352
+ if ( false !== $result ) {
353
+ update_option( 'fs_storage_logger', ( $is_on ? 1 : 0 ) );
354
+ }
355
+
356
+ return ( false !== $result );
357
+ }
358
+
359
+ /**
360
+ * @author Vova Feldman (@svovaf)
361
+ * @since 1.2.1.6
362
+ *
363
+ * @param string $type
364
+ * @param string $message
365
+ * @param int $log_order
366
+ * @param array $caller
367
+ *
368
+ * @return false|int
369
+ */
370
+ private function db_log(
371
+ &$type,
372
+ &$message,
373
+ &$log_order,
374
+ &$caller
375
+ ) {
376
+ global $wpdb;
377
+
378
+ $request_type = 'call';
379
+ if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
380
+ $request_type = 'cron';
381
+ } else if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
382
+ $request_type = 'ajax';
383
+ }
384
+
385
+ $request_url = WP_FS__IS_HTTP_REQUEST ?
386
+ $_SERVER['REQUEST_URI'] :
387
+ '';
388
+
389
+ return $wpdb->insert(
390
+ "{$wpdb->prefix}fs_logger",
391
+ array(
392
+ 'process_id' => self::$_processID,
393
+ 'user_name' => self::$_ownerName,
394
+ 'logger' => $this->_id,
395
+ 'log_order' => $log_order,
396
+ 'type' => $type,
397
+ 'request_type' => $request_type,
398
+ 'request_url' => $request_url,
399
+ 'message' => $message,
400
+ 'file' => isset( $caller['file'] ) ?
401
+ substr( $caller['file'], self::$_abspathLength ) :
402
+ '',
403
+ 'line' => $caller['line'],
404
+ 'function' => ( ! empty( $caller['class'] ) ? $caller['class'] . $caller['type'] : '' ) . $caller['function'],
405
+ 'created' => microtime( true ),
406
+ )
407
+ );
408
+ }
409
+
410
+ /**
411
+ * Persistent DB logger columns.
412
+ *
413
+ * @var array
414
+ */
415
+ private static $_log_columns = array(
416
+ 'id',
417
+ 'process_id',
418
+ 'user_name',
419
+ 'logger',
420
+ 'log_order',
421
+ 'type',
422
+ 'message',
423
+ 'file',
424
+ 'line',
425
+ 'function',
426
+ 'request_type',
427
+ 'request_url',
428
+ 'created',
429
+ );
430
+
431
+ /**
432
+ * Create DB logs query.
433
+ *
434
+ * @author Vova Feldman (@svovaf)
435
+ * @since 1.2.1.6
436
+ *
437
+ * @param bool $filters
438
+ * @param int $limit
439
+ * @param int $offset
440
+ * @param bool $order
441
+ * @param bool $escape_eol
442
+ *
443
+ * @return string
444
+ */
445
+ private static function build_db_logs_query(
446
+ $filters = false,
447
+ $limit = 200,
448
+ $offset = 0,
449
+ $order = false,
450
+ $escape_eol = false
451
+ ) {
452
+ global $wpdb;
453
+
454
+ $select = '*';
455
+
456
+ if ( $escape_eol ) {
457
+ $select = '';
458
+ for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
459
+ if ( $i > 0 ) {
460
+ $select .= ', ';
461
+ }
462
+
463
+ if ( 'message' !== self::$_log_columns[ $i ] ) {
464
+ $select .= self::$_log_columns[ $i ];
465
+ } else {
466
+ $select .= 'REPLACE(message , \'\n\', \' \') AS message';
467
+ }
468
+ }
469
+ }
470
+
471
+ $query = "SELECT {$select} FROM {$wpdb->prefix}fs_logger";
472
+ if ( is_array( $filters ) ) {
473
+ $criteria = array();
474
+
475
+ if ( ! empty( $filters['type'] ) && 'all' !== $filters['type'] ) {
476
+ $filters['type'] = strtolower( $filters['type'] );
477
+
478
+ switch ( $filters['type'] ) {
479
+ case 'warn_error':
480
+ $criteria[] = array( 'col' => 'type', 'val' => array( 'warn', 'error' ) );
481
+ break;
482
+ case 'error':
483
+ case 'warn':
484
+ $criteria[] = array( 'col' => 'type', 'val' => $filters['type'] );
485
+ break;
486
+ case 'info':
487
+ default:
488
+ $criteria[] = array( 'col' => 'type', 'val' => array( 'info', 'log' ) );
489
+ break;
490
+ }
491
+ }
492
+
493
+ if ( ! empty( $filters['request_type'] ) ) {
494
+ $filters['request_type'] = strtolower( $filters['request_type'] );
495
+
496
+ if ( in_array( $filters['request_type'], array( 'call', 'ajax', 'cron' ) ) ) {
497
+ $criteria[] = array( 'col' => 'request_type', 'val' => $filters['request_type'] );
498
+ }
499
+ }
500
+
501
+ if ( ! empty( $filters['file'] ) ) {
502
+ $criteria[] = array(
503
+ 'col' => 'file',
504
+ 'op' => 'LIKE',
505
+ 'val' => '%' . esc_sql( $filters['file'] ),
506
+ );
507
+ }
508
+
509
+ if ( ! empty( $filters['function'] ) ) {
510
+ $criteria[] = array(
511
+ 'col' => 'function',
512
+ 'op' => 'LIKE',
513
+ 'val' => '%' . esc_sql( $filters['function'] ),
514
+ );
515
+ }
516
+
517
+ if ( ! empty( $filters['process_id'] ) && is_numeric( $filters['process_id'] ) ) {
518
+ $criteria[] = array( 'col' => 'process_id', 'val' => $filters['process_id'] );
519
+ }
520
+
521
+ if ( ! empty( $filters['logger'] ) ) {
522
+ $criteria[] = array(
523
+ 'col' => 'logger',
524
+ 'op' => 'LIKE',
525
+ 'val' => '%' . esc_sql( $filters['logger'] ) . '%',
526
+ );
527
+ }
528
+
529
+ if ( ! empty( $filters['message'] ) ) {
530
+ $criteria[] = array(
531
+ 'col' => 'message',
532
+ 'op' => 'LIKE',
533
+ 'val' => '%' . esc_sql( $filters['message'] ) . '%',
534
+ );
535
+ }
536
+
537
+ if ( 0 < count( $criteria ) ) {
538
+ $query .= "\nWHERE\n";
539
+
540
+ $first = true;
541
+ foreach ( $criteria as $c ) {
542
+ if ( ! $first ) {
543
+ $query .= "AND\n";
544
+ }
545
+
546
+ if ( is_array( $c['val'] ) ) {
547
+ $operator = 'IN';
548
+
549
+ for ( $i = 0, $len = count( $c['val'] ); $i < $len; $i ++ ) {
550
+ $c['val'][ $i ] = "'" . esc_sql( $c['val'][ $i ] ) . "'";
551
+ }
552
+
553
+ $val = '(' . implode( ',', $c['val'] ) . ')';
554
+ } else {
555
+ $operator = ! empty( $c['op'] ) ? $c['op'] : '=';
556
+ $val = "'" . esc_sql( $c['val'] ) . "'";
557
+ }
558
+
559
+ $query .= "`{$c['col']}` {$operator} {$val}\n";
560
+
561
+ $first = false;
562
+ }
563
+ }
564
+ }
565
+
566
+ if ( ! is_array( $order ) ) {
567
+ $order = array(
568
+ 'col' => 'id',
569
+ 'order' => 'desc'
570
+ );
571
+ }
572
+
573
+ $query .= " ORDER BY {$order['col']} {$order['order']} LIMIT {$offset},{$limit}";
574
+
575
+ return $query;
576
+ }
577
+
578
+ /**
579
+ * Load logs from DB.
580
+ *
581
+ * @author Vova Feldman (@svovaf)
582
+ * @since 1.2.1.6
583
+ *
584
+ * @param bool $filters
585
+ * @param int $limit
586
+ * @param int $offset
587
+ * @param bool $order
588
+ *
589
+ * @return object[]|null
590
+ */
591
+ public static function load_db_logs(
592
+ $filters = false,
593
+ $limit = 200,
594
+ $offset = 0,
595
+ $order = false
596
+ ) {
597
+ global $wpdb;
598
+
599
+ $query = self::build_db_logs_query(
600
+ $filters,
601
+ $limit,
602
+ $offset,
603
+ $order
604
+ );
605
+
606
+ return $wpdb->get_results( $query );
607
+ }
608
+
609
+ /**
610
+ * Load logs from DB.
611
+ *
612
+ * @author Vova Feldman (@svovaf)
613
+ * @since 1.2.1.6
614
+ *
615
+ * @param bool $filters
616
+ * @param string $filename
617
+ * @param int $limit
618
+ * @param int $offset
619
+ * @param bool $order
620
+ *
621
+ * @return false|string File download URL or false on failure.
622
+ */
623
+ public static function download_db_logs(
624
+ $filters = false,
625
+ $filename = '',
626
+ $limit = 10000,
627
+ $offset = 0,
628
+ $order = false
629
+ ) {
630
+ global $wpdb;
631
+
632
+ $query = self::build_db_logs_query(
633
+ $filters,
634
+ $limit,
635
+ $offset,
636
+ $order,
637
+ true
638
+ );
639
+
640
+ $upload_dir = wp_upload_dir();
641
+ if ( empty( $filename ) ) {
642
+ $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
643
+ }
644
+ $filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
645
+
646
+ $query .= " INTO OUTFILE '{$filepath}' FIELDS TERMINATED BY '\t' ESCAPED BY '\\\\' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'";
647
+
648
+ $columns = '';
649
+ for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
650
+ if ( $i > 0 ) {
651
+ $columns .= ', ';
652
+ }
653
+
654
+ $columns .= "'" . self::$_log_columns[ $i ] . "'";
655
+ }
656
+
657
+ $query = "SELECT {$columns} UNION ALL " . $query;
658
+
659
+ $result = $wpdb->query( $query );
660
+
661
+ if ( false === $result ) {
662
+ return false;
663
+ }
664
+
665
+ return rtrim( $upload_dir['url'], '/' ) . '/' . $filename;
666
+ }
667
+
668
+ /**
669
+ * @author Vova Feldman (@svovaf)
670
+ * @since 1.2.1.6
671
+ *
672
+ * @param string $filename
673
+ *
674
+ * @return string
675
+ */
676
+ public static function get_logs_download_url( $filename = '' ) {
677
+ $upload_dir = wp_upload_dir();
678
+ if ( empty( $filename ) ) {
679
+ $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
680
+ }
681
+
682
+ return rtrim( $upload_dir['url'], '/' ) . $filename;
683
+ }
684
+
685
+ #endregion
686
  }
includes/pum-sdk/freemius/includes/class-fs-plugin-updater.php CHANGED
@@ -83,6 +83,10 @@
83
  'http_request_host_is_external_filter'
84
  ), 10, 3 );
85
  }
 
 
 
 
86
  }
87
 
88
  /**
@@ -102,7 +106,7 @@
102
  * @since 1.1.6
103
  *
104
  * @param string $file
105
- * @param array $plugin_data
106
  */
107
  function edit_and_echo_plugin_update_row( $file, $plugin_data ) {
108
  $plugin_update_row = ob_get_clean();
@@ -162,9 +166,9 @@
162
  *
163
  * @uses FS_Api
164
  *
165
- * @param stdClass $transient_data Update array build by WordPress.
166
  *
167
- * @return array Modified update array with custom plugin data.
168
  */
169
  function pre_set_site_transient_update_plugins_filter( $transient_data ) {
170
  $this->_logger->entrance();
@@ -316,22 +320,96 @@ if ( !isset($info->error) ) {
316
  // Get plugin's newest update.
317
  $new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
318
 
319
- if ( $is_addon ) {
320
- $data->name = $addon->title . ' ' . __fs( 'addon', $this->_fs->get_slug() );
321
- $data->slug = $addon->slug;
322
- $data->url = WP_FS__ADDRESS;
323
- $data->package = $new_version->url;
 
 
 
 
 
 
 
 
 
 
 
 
 
324
  }
325
 
326
- if ( ! $plugin_in_repo ) {
327
- $data->last_updated = ! is_null( $new_version->updated ) ? $new_version->updated : $new_version->created;
328
- $data->requires = $new_version->requires_platform_version;
329
- $data->tested = $new_version->tested_up_to_version;
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  }
331
 
332
- $data->version = $new_version->version;
333
- $data->download_link = $new_version->url;
334
 
335
- return $data;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  }
337
  }
83
  'http_request_host_is_external_filter'
84
  ), 10, 3 );
85
  }
86
+
87
+ if ( $this->_fs->is_premium() && $this->is_correct_folder_name() ) {
88
+ add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
89
+ }
90
  }
91
 
92
  /**
106
  * @since 1.1.6
107
  *
108
  * @param string $file
109
+ * @param array $plugin_data
110
  */
111
  function edit_and_echo_plugin_update_row( $file, $plugin_data ) {
112
  $plugin_update_row = ob_get_clean();
166
  *
167
  * @uses FS_Api
168
  *
169
+ * @param object $transient_data Update array build by WordPress.
170
  *
171
+ * @return object Modified update array with custom plugin data.
172
  */
173
  function pre_set_site_transient_update_plugins_filter( $transient_data ) {
174
  $this->_logger->entrance();
320
  // Get plugin's newest update.
321
  $new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
322
 
323
+ if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
324
+ $data->version = $this->_fs->get_plugin_version();
325
+ } else {
326
+ if ( $is_addon ) {
327
+ $data->name = $addon->title . ' ' . __fs( 'addon', $this->_fs->get_slug() );
328
+ $data->slug = $addon->slug;
329
+ $data->url = WP_FS__ADDRESS;
330
+ $data->package = $new_version->url;
331
+ }
332
+
333
+ if ( ! $plugin_in_repo ) {
334
+ $data->last_updated = ! is_null( $new_version->updated ) ? $new_version->updated : $new_version->created;
335
+ $data->requires = $new_version->requires_platform_version;
336
+ $data->tested = $new_version->tested_up_to_version;
337
+ }
338
+
339
+ $data->version = $new_version->version;
340
+ $data->download_link = $new_version->url;
341
  }
342
 
343
+ return $data;
344
+ }
345
+
346
+ /**
347
+ * Checks if a given basename has a matching folder name
348
+ * with the current context plugin.
349
+ *
350
+ * @author Vova Feldman (@svovaf)
351
+ * @since 1.2.1.6
352
+ *
353
+ * @param string $basename Current plugin's basename.
354
+ *
355
+ * @return bool
356
+ */
357
+ private function is_correct_folder_name( $basename = '' ) {
358
+ if ( empty( $basename ) ) {
359
+ $basename = $this->_fs->get_plugin_basename();
360
  }
361
 
362
+ return ( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) != trim( dirname( $basename ), '/\\' ) );
363
+ }
364
 
365
+ /**
366
+ * This is a special after upgrade handler for migrating modules
367
+ * that didn't use the '-premium' suffix folder structure before
368
+ * the migration.
369
+ *
370
+ * @author Vova Feldman (@svovaf)
371
+ * @since 1.2.1.6
372
+ *
373
+ * @param bool $response Install response.
374
+ * @param array $hook_extra Extra arguments passed to hooked filters.
375
+ * @param array $result Installation result data.
376
+ *
377
+ * @return bool
378
+ */
379
+ function _maybe_update_folder_name( $response, $hook_extra, $result ) {
380
+ $basename = $this->_fs->get_plugin_basename();
381
+
382
+ if ( true !== $response ||
383
+ empty( $hook_extra ) ||
384
+ empty( $hook_extra['plugin'] ) ||
385
+ $basename !== $hook_extra['plugin']
386
+ ) {
387
+ return $response;
388
+ }
389
+
390
+ $active_plugins_basenames = get_option( 'active_plugins' );
391
+
392
+ for ( $i = 0, $len = count( $active_plugins_basenames ); $i < $len; $i ++ ) {
393
+ if ( $basename === $active_plugins_basenames[ $i ] ) {
394
+ // Get filename including extension.
395
+ $filename = basename( $basename );
396
+
397
+ $new_basename = plugin_basename(
398
+ trailingslashit( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) ) .
399
+ $filename
400
+ );
401
+
402
+ // Verify that the expected correct path exists.
403
+ if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $new_basename ) ) ) {
404
+ // Override active plugin name.
405
+ $active_plugins_basenames[ $i ] = $new_basename;
406
+ update_option( 'active_plugins', $active_plugins_basenames );
407
+ }
408
+
409
+ break;
410
+ }
411
+ }
412
+
413
+ return $response;
414
  }
415
  }
includes/pum-sdk/freemius/includes/class-fs-security.php CHANGED
@@ -12,6 +12,9 @@
12
 
13
  define( 'WP_FS__SECURITY_PARAMS_PREFIX', 's_' );
14
 
 
 
 
15
  class FS_Security {
16
  /**
17
  * @var FS_Security
@@ -24,6 +27,9 @@
24
  */
25
  private static $_logger;
26
 
 
 
 
27
  public static function instance() {
28
  if ( ! isset( self::$_instance ) ) {
29
  self::$_instance = new FS_Security();
@@ -76,4 +82,4 @@
76
  's_ctx_secure' => $this->get_secure_token( $entity, $timestamp, $action ),
77
  );
78
  }
79
- }
12
 
13
  define( 'WP_FS__SECURITY_PARAMS_PREFIX', 's_' );
14
 
15
+ /**
16
+ * Class FS_Security
17
+ */
18
  class FS_Security {
19
  /**
20
  * @var FS_Security
27
  */
28
  private static $_logger;
29
 
30
+ /**
31
+ * @return \FS_Security
32
+ */
33
  public static function instance() {
34
  if ( ! isset( self::$_instance ) ) {
35
  self::$_instance = new FS_Security();
82
  's_ctx_secure' => $this->get_secure_token( $entity, $timestamp, $action ),
83
  );
84
  }
85
+ }
includes/pum-sdk/freemius/includes/debug/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/includes/entities/class-fs-plugin-license.php CHANGED
@@ -10,6 +10,9 @@
10
  exit;
11
  }
12
 
 
 
 
13
  class FS_Plugin_License extends FS_Entity {
14
 
15
  #region Properties
@@ -74,6 +77,11 @@
74
  parent::__construct( $license );
75
  }
76
 
 
 
 
 
 
77
  static function get_type() {
78
  return 'license';
79
  }
@@ -213,4 +221,4 @@
213
  function is_first_payment_pending() {
214
  return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
215
  }
216
- }
10
  exit;
11
  }
12
 
13
+ /**
14
+ * Class FS_Plugin_License
15
+ */
16
  class FS_Plugin_License extends FS_Entity {
17
 
18
  #region Properties
77
  parent::__construct( $license );
78
  }
79
 
80
+ /**
81
+ * Get entity type.
82
+ *
83
+ * @return string
84
+ */
85
  static function get_type() {
86
  return 'license';
87
  }
221
  function is_first_payment_pending() {
222
  return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
223
  }
224
+ }
includes/pum-sdk/freemius/includes/entities/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/includes/fs-core-functions.php CHANGED
@@ -34,29 +34,29 @@
34
 
35
  function fs_include_template( $path, &$params = null ) {
36
  $VARS = &$params;
37
- include( fs_get_template_path( $path ) );
38
  }
39
 
40
  function fs_include_once_template( $path, &$params = null ) {
41
  $VARS = &$params;
42
- include_once( fs_get_template_path( $path ) );
43
  }
44
 
45
  function fs_require_template( $path, &$params = null ) {
46
  $VARS = &$params;
47
- require( fs_get_template_path( $path ) );
48
  }
49
 
50
  function fs_require_once_template( $path, &$params = null ) {
51
  $VARS = &$params;
52
- require_once( fs_get_template_path( $path ) );
53
  }
54
 
55
  function fs_get_template( $path, &$params = null ) {
56
  ob_start();
57
 
58
  $VARS = &$params;
59
- require( fs_get_template_path( $path ) );
60
 
61
  return ob_get_clean();
62
  }
@@ -503,3 +503,92 @@
503
  // If both have priority return the winner.
504
  return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
505
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  function fs_include_template( $path, &$params = null ) {
36
  $VARS = &$params;
37
+ include fs_get_template_path( $path );
38
  }
39
 
40
  function fs_include_once_template( $path, &$params = null ) {
41
  $VARS = &$params;
42
+ include_once fs_get_template_path( $path );
43
  }
44
 
45
  function fs_require_template( $path, &$params = null ) {
46
  $VARS = &$params;
47
+ require fs_get_template_path( $path );
48
  }
49
 
50
  function fs_require_once_template( $path, &$params = null ) {
51
  $VARS = &$params;
52
+ require_once fs_get_template_path( $path );
53
  }
54
 
55
  function fs_get_template( $path, &$params = null ) {
56
  ob_start();
57
 
58
  $VARS = &$params;
59
+ require fs_get_template_path( $path );
60
 
61
  return ob_get_clean();
62
  }
503
  // If both have priority return the winner.
504
  return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
505
  }
506
+
507
+ #--------------------------------------------------------------------------------
508
+ #region Localization
509
+ #--------------------------------------------------------------------------------
510
+
511
+ /**
512
+ * @author Vova Feldman
513
+ * @since 1.2.1.6
514
+ *
515
+ * @param string $key
516
+ * @param string $slug
517
+ *
518
+ * @return string
519
+ */
520
+ function fs_esc_attr($key, $slug) {
521
+ return esc_attr( __fs( $key, $slug ) );
522
+ }
523
+
524
+ /**
525
+ * @author Vova Feldman
526
+ * @since 1.2.1.6
527
+ *
528
+ * @param string $key
529
+ * @param string $slug
530
+ */
531
+ function fs_esc_attr_echo($key, $slug) {
532
+ echo esc_attr( __fs( $key, $slug ) );
533
+ }
534
+
535
+ /**
536
+ * @author Vova Feldman
537
+ * @since 1.2.1.6
538
+ *
539
+ * @param string $key
540
+ * @param string $slug
541
+ *
542
+ * @return string
543
+ */
544
+ function fs_esc_js($key, $slug) {
545
+ return esc_js( __fs( $key, $slug ) );
546
+ }
547
+
548
+ /**
549
+ * @author Vova Feldman
550
+ * @since 1.2.1.6
551
+ *
552
+ * @param string $key
553
+ * @param string $slug
554
+ */
555
+ function fs_esc_js_echo($key, $slug) {
556
+ echo esc_js( __fs( $key, $slug ) );
557
+ }
558
+
559
+ /**
560
+ * @author Vova Feldman
561
+ * @since 1.2.1.6
562
+ *
563
+ * @param string $key
564
+ * @param string $slug
565
+ */
566
+ function fs_json_encode_echo($key, $slug) {
567
+ echo json_encode( __fs( $key, $slug ) );
568
+ }
569
+
570
+ /**
571
+ * @author Vova Feldman
572
+ * @since 1.2.1.6
573
+ *
574
+ * @param string $key
575
+ * @param string $slug
576
+ *
577
+ * @return string
578
+ */
579
+ function fs_esc_html($key, $slug) {
580
+ return esc_html( __fs( $key, $slug ) );
581
+ }
582
+
583
+ /**
584
+ * @author Vova Feldman
585
+ * @since 1.2.1.6
586
+ *
587
+ * @param string $key
588
+ * @param string $slug
589
+ */
590
+ function fs_esc_html_echo($key, $slug) {
591
+ echo esc_html( __fs( $key, $slug ) );
592
+ }
593
+
594
+ #endregion
includes/pum-sdk/freemius/includes/fs-essential-functions.php CHANGED
@@ -163,11 +163,9 @@
163
  * @global $fs_text , $fs_text_overrides
164
  */
165
  function __fs( $key, $slug = 'freemius' ) {
166
- global $fs_text, $fs_text_overrides;
167
-
168
- if ( ! isset( $fs_text ) ) {
169
- require_once( ( defined( 'WP_FS__DIR_INCLUDES' ) ? WP_FS__DIR_INCLUDES : dirname( __FILE__ ) ) . '/i18n.php' );
170
- }
171
 
172
  if ( isset( $fs_text_overrides[ $slug ] ) ) {
173
  if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
@@ -180,9 +178,23 @@
180
  }
181
  }
182
 
183
- return isset( $fs_text[ $key ] ) ?
184
- $fs_text[ $key ] :
185
- $key;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  }
187
 
188
  /**
@@ -267,7 +279,7 @@
267
  * will catch it.
268
  */
269
  if ( ! function_exists( 'get_plugins' ) ) {
270
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
271
  }
272
 
273
  $all_plugins = get_plugins();
163
  * @global $fs_text , $fs_text_overrides
164
  */
165
  function __fs( $key, $slug = 'freemius' ) {
166
+ global $fs_text,
167
+ $fs_module_info_text,
168
+ $fs_text_overrides;
 
 
169
 
170
  if ( isset( $fs_text_overrides[ $slug ] ) ) {
171
  if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
178
  }
179
  }
180
 
181
+ if ( ! isset( $fs_text ) ) {
182
+ $dir = defined( 'WP_FS__DIR_INCLUDES' ) ?
183
+ WP_FS__DIR_INCLUDES :
184
+ dirname( __FILE__ );
185
+
186
+ require_once $dir . '/i18n.php';
187
+ }
188
+
189
+ if ( isset( $fs_text[ $key ] ) ) {
190
+ return $fs_text[ $key ];
191
+ }
192
+
193
+ if ( isset( $fs_module_info_text[ $key ] ) ) {
194
+ return $fs_module_info_text[ $key ];
195
+ }
196
+
197
+ return $key;
198
  }
199
 
200
  /**
279
  * will catch it.
280
  */
281
  if ( ! function_exists( 'get_plugins' ) ) {
282
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
283
  }
284
 
285
  $all_plugins = get_plugins();
includes/pum-sdk/freemius/includes/fs-plugin-info-dialog.php CHANGED
@@ -151,15 +151,15 @@
151
  if ( $is_wordpress_org ) {
152
  $repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
153
  'plugin_information', (object) array(
154
- 'slug' => $selected_addon->slug,
155
- 'is_ssl' => is_ssl(),
156
- 'fields' => array(
157
- 'banners' => true,
158
- 'reviews' => true,
159
- 'downloaded' => false,
160
- 'active_installs' => true
161
- )
162
- ) );
163
 
164
  if ( ! empty( $repo_data ) ) {
165
  $data = $repo_data;
@@ -349,20 +349,20 @@
349
  return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . __fs( 'download-latest', $api->slug ) . '</a>';
350
  } else {
351
  if ( $status['url'] ) {
352
- return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __( 'Install Now' ) . '</a>';
353
  }
354
  }
355
  break;
356
  case 'update_available':
357
  if ( $status['url'] ) {
358
- return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __( 'Install Update Now' ) . '</a>';
359
  }
360
  break;
361
  case 'newer_installed':
362
- return '<a class="button button-primary right disabled">' . sprintf( __( 'Newer Version (%s) Installed' ), $status['version'] ) . '</a>';
363
  break;
364
  case 'latest_installed':
365
- return '<a class="button button-primary right disabled">' . __( 'Latest Version Installed' ) . '</a>';
366
  break;
367
  }
368
 
@@ -475,13 +475,13 @@
475
  );
476
 
477
  $plugins_section_titles = array(
478
- 'description' => _x( 'Description', 'Plugin installer section title' ),
479
- 'installation' => _x( 'Installation', 'Plugin installer section title' ),
480
- 'faq' => _x( 'FAQ', 'Plugin installer section title' ),
481
- 'screenshots' => _x( 'Screenshots', 'Plugin installer section title' ),
482
- 'changelog' => _x( 'Changelog', 'Plugin installer section title' ),
483
- 'reviews' => _x( 'Reviews', 'Plugin installer section title' ),
484
- 'other_notes' => _x( 'Other Notes', 'Plugin installer section title' ),
485
  );
486
 
487
  // Sanitize HTML
@@ -506,7 +506,7 @@
506
  $section = array_shift( $section_titles );
507
  }
508
 
509
- iframe_header( __( 'Plugin Install' ) );
510
 
511
  $_with_banner = '';
512
 
@@ -530,7 +530,7 @@
530
  }
531
  }
532
  </style>
533
- <?php
534
  }
535
 
536
  echo '<div id="plugin-information-scrollable">';
@@ -560,371 +560,383 @@
560
  ?>
561
  <div id="<?php echo $_tab; ?>-content" class='<?php echo $_with_banner; ?>'>
562
  <div class="fyi">
563
- <?php if ( $api->is_paid ) : ?>
564
- <?php if ( isset( $api->plans ) ) : ?>
565
- <div class="plugin-information-pricing">
566
- <?php foreach ( $api->plans as $plan ) : ?>
567
- <?php
568
- /**
569
- * @var FS_Plugin_Plan $plan
570
- */
571
- ?>
572
- <?php $first_pricing = $plan->pricing[0] ?>
573
- <?php $is_multi_cycle = $first_pricing->is_multi_cycle() ?>
574
- <div class="fs-plan<?php if ( ! $is_multi_cycle ) {
575
- echo ' fs-single-cycle';
576
- } ?>" data-plan-id="<?php echo $plan->id ?>">
577
- <h3 data-plan="<?php echo $plan->id ?>"><?php printf( __fs( 'x-plan', $api->slug ), $plan->title ) ?></h3>
578
- <?php $has_annual = $first_pricing->has_annual() ?>
579
- <?php $has_monthly = $first_pricing->has_monthly() ?>
580
- <div class="nav-tab-wrapper">
581
- <?php $billing_cycles = array( 'monthly', 'annual', 'lifetime' ) ?>
582
- <?php $i = 0;
583
- foreach ( $billing_cycles as $cycle ) : ?>
584
- <?php $prop = "{$cycle}_price";
585
- if ( isset( $first_pricing->{$prop} ) ) : ?>
586
- <?php $is_featured = ( 'annual' === $cycle && $is_multi_cycle ) ?>
587
- <?php
588
- $prices = array();
589
- foreach ( $plan->pricing as $pricing ) {
590
- if ( isset( $pricing->{$prop} ) ) {
591
- $prices[] = array(
592
- 'id' => $pricing->id,
593
- 'licenses' => $pricing->licenses,
594
- 'price' => $pricing->{$prop}
595
- );
596
- }
597
- }
598
- ?>
599
- <a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
600
- data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
601
- <?php if ( $is_featured ) : ?>
602
- <label>&#9733; <?php _efs( 'best', $api->slug ) ?> &#9733;</label>
603
- <?php endif ?>
604
- <?php _efs( $cycle, $api->slug ) ?>
605
- </a>
606
- <?php endif ?>
607
- <?php $i ++; endforeach ?>
608
- <?php wp_enqueue_script( 'jquery' ) ?>
609
- <script type="text/javascript">
610
- (function ($, undef) {
611
- var
612
- _formatBillingFrequency = function (cycle) {
613
- switch (cycle) {
614
- case 'monthly':
615
- return '<?php printf(__fs('billed-x', $api->slug), __fs('monthly', $api->slug)) ?>';
616
- case 'annual':
617
- return '<?php printf(__fs('billed-x', $api->slug), __fs('annually', $api->slug)) ?>';
618
- case 'lifetime':
619
- return '<?php printf(__fs('billed-x', $api->slug), __fs('once', $api->slug)) ?>';
620
- }
621
- },
622
- _formatLicensesTitle = function (pricing) {
623
- switch (pricing.licenses) {
624
- case 1:
625
- return '<?php _efs( 'license-single-site', $api->slug ) ?>';
626
- case null:
627
- return '<?php _efs( 'license-unlimited', $api->slug ) ?>';
628
- default:
629
- return '<?php _efs( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
630
- }
631
- },
632
- _formatPrice = function (pricing, cycle, multipleLicenses) {
633
- if (undef === multipleLicenses)
634
- multipleLicenses = true;
635
-
636
- var priceCycle;
637
- switch (cycle) {
638
- case 'monthly':
639
- priceCycle = ' / <?php _efs('mo', $api->slug) ?>';
640
- break;
641
- case 'lifetime':
642
- priceCycle = '';
643
- break;
644
- case 'annual':
645
- default:
646
- priceCycle = ' / <?php _efs('year', $api->slug) ?>';
647
- break;
648
- }
649
-
650
- if (!multipleLicenses && 1 == pricing.licenses) {
651
- return '$' + pricing.price + priceCycle;
652
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
653
 
654
- return _formatLicensesTitle(pricing) + ' - <var class="fs-price">$' + pricing.price + priceCycle + '</var>';
655
- },
656
- _checkoutUrl = function (plan, pricing, cycle) {
657
- return '<?php echo esc_url_raw(remove_query_arg('billing_cycle', add_query_arg(array('plugin_id' => $plan->plugin_id), $api->checkout_link))) ?>' +
658
- '&plan_id=' + plan +
659
- '&pricing_id=' + pricing +
660
- '&billing_cycle=' + cycle<?php if ($plan->has_trial()) { echo " + '&trial=true'"; }?>;
661
- },
662
- _updateCtaUrl = function (plan, pricing, cycle) {
663
- $('.plugin-information-pricing .button, #plugin-information-footer .button').attr('href', _checkoutUrl(plan, pricing, cycle));
664
- };
665
-
666
- $(document).ready(function () {
667
- var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php echo $plan->id ?>]');
668
- $plan.find('input[type=radio]').live('click', function () {
669
- _updateCtaUrl(
670
- $plan.attr('data-plan-id'),
671
- $(this).val(),
672
- $plan.find('.nav-tab-active').attr('data-billing-cycle')
673
- );
674
-
675
- $plan.find('.fs-trial-terms .fs-price').html(
676
- $(this).parents('label').find('.fs-price').html()
677
- );
678
- });
679
-
680
- $plan.find('.nav-tab').click(function () {
681
- if ($(this).hasClass('nav-tab-active'))
682
- return;
683
-
684
- var $this = $(this),
685
- billingCycle = $this.attr('data-billing-cycle'),
686
- pricing = JSON.parse($this.attr('data-pricing')),
687
- $pricesList = $this.parents('.fs-plan').find('.fs-pricing-body .fs-licenses'),
688
- html = '';
689
-
690
- // Un-select previously selected tab.
691
- $plan.find('.nav-tab').removeClass('nav-tab-active');
692
-
693
- // Select current tab.
694
- $this.addClass('nav-tab-active');
695
-
696
- // Render licenses prices.
697
- if (1 == pricing.length) {
698
- html = '<li><label><?php _efs( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
699
- } else {
700
- for (var i = 0; i < pricing.length; i++) {
701
- html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
702
  }
703
- }
704
- $pricesList.html(html);
705
 
706
- if (1 < pricing.length) {
707
- // Select first license option.
708
- $pricesList.find('li:first input').click();
709
- }
710
- else {
 
 
 
 
 
 
 
 
 
 
711
  _updateCtaUrl(
712
  $plan.attr('data-plan-id'),
713
- pricing[0].id,
714
- billingCycle
715
  );
716
- }
717
 
718
- // Update billing frequency.
719
- $plan.find('.fs-billing-frequency').html(_formatBillingFrequency(billingCycle));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
720
 
721
- if ('annual' === billingCycle) {
722
- $plan.find('.fs-annual-discount').show();
723
- } else {
724
- $plan.find('.fs-annual-discount').hide();
725
- }
726
- });
 
 
 
 
 
727
 
728
- <?php if ( $has_annual ) : ?>
729
- // Select annual by default.
730
- $plan.find('.nav-tab[data-billing-cycle=annual]').click();
731
- <?php else : ?>
732
- // Select first tab.
733
- $plan.find('.nav-tab:first').click();
734
- <?php endif ?>
735
- });
736
- }(jQuery));
737
- </script>
738
- </div>
739
- <div class="fs-pricing-body">
740
- <span class="fs-billing-frequency"></span>
741
- <?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
742
- <?php if ( $annual_discount > 0 ) : ?>
743
- <span
744
- class="fs-annual-discount"><?php printf( __fs( 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
745
- <?php endif ?>
746
- <ul class="fs-licenses">
747
- </ul>
748
- <?php echo $this->get_plugin_cta( $api, $plan ) ?>
749
- <div style="clear:both"></div>
750
- <?php if ( $plan->has_trial() ) : ?>
751
- <?php $trial_period = $this->get_trial_period( $plan ) ?>
752
- <ul class="fs-trial-terms">
753
- <li>
754
- <i class="dashicons dashicons-yes"></i><?php printf( __fs( 'no-commitment-x', $api->slug ), $trial_period ) ?>
755
- </li>
756
- <li>
757
- <i class="dashicons dashicons-yes"></i><?php printf( __fs( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
758
- </li>
759
  </ul>
760
- <?php endif ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
761
  </div>
762
- </div>
763
- </div>
764
- <?php endforeach ?>
765
  <?php endif ?>
766
- <?php endif ?>
767
- <div>
768
- <h3><?php _efs( 'details', $api->slug ) ?></h3>
769
- <ul>
770
- <?php if ( ! empty( $api->version ) ) { ?>
771
- <li><strong><?php _e( 'Version:' ); ?></strong> <?php echo $api->version; ?></li>
772
- <?php
773
- }
774
- if ( ! empty( $api->author ) ) {
775
- ?>
776
- <li>
777
- <strong><?php _e( 'Author:' ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
778
- </li>
779
- <?php
780
  }
781
- if ( ! empty( $api->last_updated ) ) {
782
- ?>
783
- <li><strong><?php _e( 'Last Updated:' ); ?></strong> <span
784
- title="<?php echo $api->last_updated; ?>">
785
- <?php printf( __( '%s ago' ), human_time_diff( strtotime( $api->last_updated ) ) ); ?>
 
 
 
 
 
 
 
786
  </span></li>
787
- <?php
788
- }
789
- if ( ! empty( $api->requires ) ) {
790
- ?>
791
- <li>
792
- <strong><?php _e( 'Requires WordPress Version:' ); ?></strong> <?php printf( __( '%s or higher' ), $api->requires ); ?>
793
- </li>
794
- <?php
795
- }
796
- if ( ! empty( $api->tested ) ) {
797
- ?>
798
- <li><strong><?php _e( 'Compatible up to:' ); ?></strong> <?php echo $api->tested; ?>
799
- </li>
800
- <?php
801
- }
802
- if ( ! empty( $api->downloaded ) ) {
803
- ?>
804
- <li>
805
- <strong><?php _e( 'Downloaded:' ); ?></strong> <?php printf( _n( '%s time', '%s times', $api->downloaded ), number_format_i18n( $api->downloaded ) ); ?>
806
- </li>
807
- <?php
808
- }
809
- if ( ! empty( $api->slug ) && empty( $api->external ) ) {
810
- ?>
811
- <li><a target="_blank"
812
- href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php _e( 'WordPress.org Plugin Page &#187;' ); ?></a>
813
- </li>
814
- <?php
815
- }
816
- if ( ! empty( $api->homepage ) ) {
817
- ?>
818
- <li><a target="_blank"
819
- href="<?php echo esc_url( $api->homepage ); ?>"><?php _e( 'Plugin Homepage &#187;' ); ?></a>
820
- </li>
821
- <?php
822
- }
823
- if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
824
- ?>
825
- <li><a target="_blank"
826
- href="<?php echo esc_url( $api->donate_link ); ?>"><?php _e( 'Donate to this plugin &#187;' ); ?></a>
827
- </li>
828
- <?php } ?>
829
- </ul>
830
- </div>
831
- <?php if ( ! empty( $api->rating ) ) { ?>
832
- <h3><?php _e( 'Average Rating' ); ?></h3>
833
- <?php wp_star_rating( array(
834
- 'rating' => $api->rating,
835
- 'type' => 'percent',
836
- 'number' => $api->num_ratings
837
- ) ); ?>
838
- <small><?php printf( _n( '(based on %s rating)', '(based on %s ratings)', $api->num_ratings ), number_format_i18n( $api->num_ratings ) ); ?></small>
839
- <?php
840
- }
 
 
 
 
 
 
 
 
841
 
842
- if ( ! empty( $api->ratings ) && array_sum( (array) $api->ratings ) > 0 ) {
843
- foreach ( $api->ratings as $key => $ratecount ) {
844
- // Avoid div-by-zero.
845
- $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
846
- ?>
847
- <div class="counter-container">
 
 
 
 
848
  <span class="counter-label"><a
849
  href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
850
  target="_blank"
851
- title="<?php echo esc_attr( sprintf( _n( 'Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $key ), $key ) ); ?>"><?php printf( _n( '%d star', '%d stars', $key ), $key ); ?></a></span>
852
- <span class="counter-back">
853
  <span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
854
  </span>
855
- <span class="counter-count"><?php echo number_format_i18n( $ratecount ); ?></span>
856
- </div>
857
- <?php
 
858
  }
859
- }
860
- if ( ! empty( $api->contributors ) ) {
861
- ?>
862
- <h3><?php _e( 'Contributors' ); ?></h3>
863
- <ul class="contributors">
864
- <?php
865
- foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
866
- if ( empty( $contrib_username ) && empty( $contrib_profile ) ) {
867
- continue;
868
- }
869
- if ( empty( $contrib_username ) ) {
870
- $contrib_username = preg_replace( '/^.+\/(.+)\/?$/', '\1', $contrib_profile );
871
- }
872
- $contrib_username = sanitize_user( $contrib_username );
873
- if ( empty( $contrib_profile ) ) {
874
- echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</li>";
875
- } else {
876
- echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</a></li>";
877
- }
878
- }
879
  ?>
880
- </ul>
881
- <?php if ( ! empty( $api->donate_link ) ) { ?>
882
- <a target="_blank"
883
- href="<?php echo esc_url( $api->donate_link ); ?>"><?php _e( 'Donate to this plugin &#187;' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
884
  <?php } ?>
885
- <?php } ?>
886
  </div>
887
  <div id="section-holder" class="wrap">
888
- <?php
889
- if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
890
- echo '<div class="notice notice-warning"><p>' . '<strong>' . __( 'Warning:' ) . '</strong> ' . __( 'This plugin has not been tested with your current version of WordPress.' ) . '</p></div>';
891
- } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
892
- echo '<div class="notice notice-warning"><p>' . '<strong>' . __( 'Warning:' ) . '</strong> ' . __( 'This plugin has not been marked as compatible with your version of WordPress.' ) . '</p></div>';
893
- }
894
 
895
- foreach ( (array) $api->sections as $section_name => $content ) {
896
- $content = links_add_base_url( $content, 'https://wordpress.org/plugins/' . $api->slug . '/' );
897
- $content = links_add_target( $content, '_blank' );
898
 
899
- $san_section = esc_attr( $section_name );
900
 
901
- $display = ( $section_name === $section ) ? 'block' : 'none';
902
 
903
- if ( 'description' === $section_name &&
904
- ( ( ! $api->external && $api->wp_org_missing ) ||
905
- ( $api->external && $api->fs_missing ) )
906
- ) {
907
- $missing_notice = array(
908
- 'type' => 'error',
909
- 'id' => md5( microtime() ),
910
- 'message' => __fs( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ),
911
- );
912
- fs_require_template( 'admin-notice.php', $missing_notice );
 
 
 
 
913
  }
914
- echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n";
915
- echo $content;
916
- echo "\t</div>\n";
917
- }
918
- echo "</div>\n";
919
- echo "</div>\n";
920
- echo "</div>\n"; // #plugin-information-scrollable
921
- echo "<div id='$tab-footer'>\n";
922
 
923
- echo $this->get_plugin_cta( $api );
924
 
925
- echo "</div>\n";
926
 
927
- iframe_footer();
928
- exit;
929
- }
930
- }
151
  if ( $is_wordpress_org ) {
152
  $repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
153
  'plugin_information', (object) array(
154
+ 'slug' => $selected_addon->slug,
155
+ 'is_ssl' => is_ssl(),
156
+ 'fields' => array(
157
+ 'banners' => true,
158
+ 'reviews' => true,
159
+ 'downloaded' => false,
160
+ 'active_installs' => true
161
+ )
162
+ ) );
163
 
164
  if ( ! empty( $repo_data ) ) {
165
  $data = $repo_data;
349
  return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . __fs( 'download-latest', $api->slug ) . '</a>';
350
  } else {
351
  if ( $status['url'] ) {
352
+ return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __fs( 'install-now', $api->slug ) . '</a>';
353
  }
354
  }
355
  break;
356
  case 'update_available':
357
  if ( $status['url'] ) {
358
+ return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __fs( 'install-update-now', $api->slug ) . '</a>';
359
  }
360
  break;
361
  case 'newer_installed':
362
+ return '<a class="button button-primary right disabled">' . sprintf( __fs( 'newer-installed', $api->slug ), $status['version'] ) . '</a>';
363
  break;
364
  case 'latest_installed':
365
+ return '<a class="button button-primary right disabled">' . __fs( 'latest-installed', $api->slug ) . '</a>';
366
  break;
367
  }
368
 
475
  );
476
 
477
  $plugins_section_titles = array(
478
+ 'description' => __fs( 'description', $api->slug ),
479
+ 'installation' => __fs( 'installation', $api->slug ),
480
+ 'faq' => __fs( 'faq', $api->slug ),
481
+ 'screenshots' => __fs( 'screenshots', $api->slug ),
482
+ 'changelog' => __fs( 'changelog', $api->slug ),
483
+ 'reviews' => __fs( 'reviews', $api->slug ),
484
+ 'other_notes' => __fs( 'other_notes', $api->slug ),
485
  );
486
 
487
  // Sanitize HTML
506
  $section = array_shift( $section_titles );
507
  }
508
 
509
+ iframe_header( __fs( 'plugin-install', $api->slug ) );
510
 
511
  $_with_banner = '';
512
 
530
  }
531
  }
532
  </style>
533
+ <?php
534
  }
535
 
536
  echo '<div id="plugin-information-scrollable">';
560
  ?>
561
  <div id="<?php echo $_tab; ?>-content" class='<?php echo $_with_banner; ?>'>
562
  <div class="fyi">
563
+ <?php if ( $api->is_paid ) : ?>
564
+ <?php if ( isset( $api->plans ) ) : ?>
565
+ <div class="plugin-information-pricing">
566
+ <?php foreach ( $api->plans as $plan ) : ?>
567
+ <?php
568
+ /**
569
+ * @var FS_Plugin_Plan $plan
570
+ */
571
+ ?>
572
+ <?php $first_pricing = $plan->pricing[0] ?>
573
+ <?php $is_multi_cycle = $first_pricing->is_multi_cycle() ?>
574
+ <div class="fs-plan<?php if ( ! $is_multi_cycle ) {
575
+ echo ' fs-single-cycle';
576
+ } ?>" data-plan-id="<?php echo $plan->id ?>">
577
+ <h3 data-plan="<?php echo $plan->id ?>"><?php printf( __fs( 'x-plan', $api->slug ), $plan->title ) ?></h3>
578
+ <?php $has_annual = $first_pricing->has_annual() ?>
579
+ <?php $has_monthly = $first_pricing->has_monthly() ?>
580
+ <div class="nav-tab-wrapper">
581
+ <?php $billing_cycles = array( 'monthly', 'annual', 'lifetime' ) ?>
582
+ <?php $i = 0;
583
+ foreach ( $billing_cycles as $cycle ) : ?>
584
+ <?php $prop = "{$cycle}_price";
585
+ if ( isset( $first_pricing->{$prop} ) ) : ?>
586
+ <?php $is_featured = ( 'annual' === $cycle && $is_multi_cycle ) ?>
587
+ <?php
588
+ $prices = array();
589
+ foreach ( $plan->pricing as $pricing ) {
590
+ if ( isset( $pricing->{$prop} ) ) {
591
+ $prices[] = array(
592
+ 'id' => $pricing->id,
593
+ 'licenses' => $pricing->licenses,
594
+ 'price' => $pricing->{$prop}
595
+ );
596
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
  }
598
+ ?>
599
+ <a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
600
+ data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
601
+ <?php if ( $is_featured ) : ?>
602
+ <label>&#9733; <?php _efs( 'best', $api->slug ) ?> &#9733;</label>
603
+ <?php endif ?>
604
+ <?php _efs( $cycle, $api->slug ) ?>
605
+ </a>
606
+ <?php endif ?>
607
+ <?php $i ++; endforeach ?>
608
+ <?php wp_enqueue_script( 'jquery' ) ?>
609
+ <script type="text/javascript">
610
+ (function ($, undef) {
611
+ var
612
+ _formatBillingFrequency = function (cycle) {
613
+ switch (cycle) {
614
+ case 'monthly':
615
+ return '<?php printf(__fs('billed-x', $api->slug), __fs('monthly', $api->slug)) ?>';
616
+ case 'annual':
617
+ return '<?php printf(__fs('billed-x', $api->slug), __fs('annually', $api->slug)) ?>';
618
+ case 'lifetime':
619
+ return '<?php printf(__fs('billed-x', $api->slug), __fs('once', $api->slug)) ?>';
620
+ }
621
+ },
622
+ _formatLicensesTitle = function (pricing) {
623
+ switch (pricing.licenses) {
624
+ case 1:
625
+ return '<?php _efs( 'license-single-site', $api->slug ) ?>';
626
+ case null:
627
+ return '<?php _efs( 'license-unlimited', $api->slug ) ?>';
628
+ default:
629
+ return '<?php _efs( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
630
+ }
631
+ },
632
+ _formatPrice = function (pricing, cycle, multipleLicenses) {
633
+ if (undef === multipleLicenses)
634
+ multipleLicenses = true;
635
+
636
+ var priceCycle;
637
+ switch (cycle) {
638
+ case 'monthly':
639
+ priceCycle = ' / <?php _efs('mo', $api->slug) ?>';
640
+ break;
641
+ case 'lifetime':
642
+ priceCycle = '';
643
+ break;
644
+ case 'annual':
645
+ default:
646
+ priceCycle = ' / <?php _efs('year', $api->slug) ?>';
647
+ break;
648
+ }
649
 
650
+ if (!multipleLicenses && 1 == pricing.licenses) {
651
+ return '$' + pricing.price + priceCycle;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  }
 
 
653
 
654
+ return _formatLicensesTitle(pricing) + ' - <var class="fs-price">$' + pricing.price + priceCycle + '</var>';
655
+ },
656
+ _checkoutUrl = function (plan, pricing, cycle) {
657
+ return '<?php echo esc_url_raw(remove_query_arg('billing_cycle', add_query_arg(array('plugin_id' => $plan->plugin_id), $api->checkout_link))) ?>' +
658
+ '&plan_id=' + plan +
659
+ '&pricing_id=' + pricing +
660
+ '&billing_cycle=' + cycle<?php if ($plan->has_trial()) { echo " + '&trial=true'"; }?>;
661
+ },
662
+ _updateCtaUrl = function (plan, pricing, cycle) {
663
+ $('.plugin-information-pricing .button, #plugin-information-footer .button').attr('href', _checkoutUrl(plan, pricing, cycle));
664
+ };
665
+
666
+ $(document).ready(function () {
667
+ var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php echo $plan->id ?>]');
668
+ $plan.find('input[type=radio]').live('click', function () {
669
  _updateCtaUrl(
670
  $plan.attr('data-plan-id'),
671
+ $(this).val(),
672
+ $plan.find('.nav-tab-active').attr('data-billing-cycle')
673
  );
 
674
 
675
+ $plan.find('.fs-trial-terms .fs-price').html(
676
+ $(this).parents('label').find('.fs-price').html()
677
+ );
678
+ });
679
+
680
+ $plan.find('.nav-tab').click(function () {
681
+ if ($(this).hasClass('nav-tab-active'))
682
+ return;
683
+
684
+ var $this = $(this),
685
+ billingCycle = $this.attr('data-billing-cycle'),
686
+ pricing = JSON.parse($this.attr('data-pricing')),
687
+ $pricesList = $this.parents('.fs-plan').find('.fs-pricing-body .fs-licenses'),
688
+ html = '';
689
+
690
+ // Un-select previously selected tab.
691
+ $plan.find('.nav-tab').removeClass('nav-tab-active');
692
+
693
+ // Select current tab.
694
+ $this.addClass('nav-tab-active');
695
+
696
+ // Render licenses prices.
697
+ if (1 == pricing.length) {
698
+ html = '<li><label><?php _efs( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
699
+ } else {
700
+ for (var i = 0; i < pricing.length; i++) {
701
+ html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
702
+ }
703
+ }
704
+ $pricesList.html(html);
705
 
706
+ if (1 < pricing.length) {
707
+ // Select first license option.
708
+ $pricesList.find('li:first input').click();
709
+ }
710
+ else {
711
+ _updateCtaUrl(
712
+ $plan.attr('data-plan-id'),
713
+ pricing[0].id,
714
+ billingCycle
715
+ );
716
+ }
717
 
718
+ // Update billing frequency.
719
+ $plan.find('.fs-billing-frequency').html(_formatBillingFrequency(billingCycle));
720
+
721
+ if ('annual' === billingCycle) {
722
+ $plan.find('.fs-annual-discount').show();
723
+ } else {
724
+ $plan.find('.fs-annual-discount').hide();
725
+ }
726
+ });
727
+
728
+ <?php if ( $has_annual ) : ?>
729
+ // Select annual by default.
730
+ $plan.find('.nav-tab[data-billing-cycle=annual]').click();
731
+ <?php else : ?>
732
+ // Select first tab.
733
+ $plan.find('.nav-tab:first').click();
734
+ <?php endif ?>
735
+ });
736
+ }(jQuery));
737
+ </script>
738
+ </div>
739
+ <div class="fs-pricing-body">
740
+ <span class="fs-billing-frequency"></span>
741
+ <?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
742
+ <?php if ( $annual_discount > 0 ) : ?>
743
+ <span
744
+ class="fs-annual-discount"><?php printf( __fs( 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
745
+ <?php endif ?>
746
+ <ul class="fs-licenses">
 
 
747
  </ul>
748
+ <?php echo $this->get_plugin_cta( $api, $plan ) ?>
749
+ <div style="clear:both"></div>
750
+ <?php if ( $plan->has_trial() ) : ?>
751
+ <?php $trial_period = $this->get_trial_period( $plan ) ?>
752
+ <ul class="fs-trial-terms">
753
+ <li>
754
+ <i class="dashicons dashicons-yes"></i><?php printf( __fs( 'no-commitment-x', $api->slug ), $trial_period ) ?>
755
+ </li>
756
+ <li>
757
+ <i class="dashicons dashicons-yes"></i><?php printf( __fs( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
758
+ </li>
759
+ </ul>
760
+ <?php endif ?>
761
+ </div>
762
  </div>
763
+ </div>
764
+ <?php endforeach ?>
765
+ <?php endif ?>
766
  <?php endif ?>
767
+ <div>
768
+ <h3><?php _efs( 'details', $api->slug ) ?></h3>
769
+ <ul>
770
+ <?php if ( ! empty( $api->version ) ) { ?>
771
+ <li><strong><?php _efs( 'version', $api->slug ); ?>:</strong> <?php echo $api->version; ?></li>
772
+ <?php
 
 
 
 
 
 
 
 
773
  }
774
+ if ( ! empty( $api->author ) ) {
775
+ ?>
776
+ <li>
777
+ <strong><?php _efs( 'author:', $api->slug ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
778
+ </li>
779
+ <?php
780
+ }
781
+ if ( ! empty( $api->last_updated ) ) {
782
+ ?>
783
+ <li><strong><?php _efs( 'last-updated:', $api->slug ); ?></strong> <span
784
+ title="<?php echo $api->last_updated; ?>">
785
+ <?php printf( __fs( 'x-ago', $api->slug ), human_time_diff( strtotime( $api->last_updated ) ) ); ?>
786
  </span></li>
787
+ <?php
788
+ }
789
+ if ( ! empty( $api->requires ) ) {
790
+ ?>
791
+ <li>
792
+ <strong><?php _efs( 'requires-wordpress-version:', $api->slug ); ?></strong> <?php printf( __fs( 'x-or-higher', $api->slug ), $api->requires ); ?>
793
+ </li>
794
+ <?php
795
+ }
796
+ if ( ! empty( $api->tested ) ) {
797
+ ?>
798
+ <li><strong><?php _efs( 'compatible-up-to:', $api->slug ); ?></strong> <?php echo $api->tested; ?>
799
+ </li>
800
+ <?php
801
+ }
802
+ if ( ! empty( $api->downloaded ) ) {
803
+ ?>
804
+ <li>
805
+ <strong><?php _efs( 'downloaded:', $api->slug ); ?></strong> <?php printf(
806
+ __fs( ( 1 == $api->downloaded ) ? 'x-time' : 'x-times', $api->slug ),
807
+ number_format_i18n( $api->downloaded )
808
+ ); ?>
809
+ </li>
810
+ <?php
811
+ }
812
+ if ( ! empty( $api->slug ) && empty( $api->external ) ) {
813
+ ?>
814
+ <li><a target="_blank"
815
+ href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php _efs( 'wp-org-plugin-page', $api->slug ); ?> &#187;</a>
816
+ </li>
817
+ <?php
818
+ }
819
+ if ( ! empty( $api->homepage ) ) {
820
+ ?>
821
+ <li><a target="_blank"
822
+ href="<?php echo esc_url( $api->homepage ); ?>"><?php _efs( 'plugin-homepage', $api->slug ); ?> &#187;</a>
823
+ </li>
824
+ <?php
825
+ }
826
+ if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
827
+ ?>
828
+ <li><a target="_blank"
829
+ href="<?php echo esc_url( $api->donate_link ); ?>"><?php _efs( 'donate-to-plugin', $api->slug ); ?> &#187;</a>
830
+ </li>
831
+ <?php } ?>
832
+ </ul>
833
+ </div>
834
+ <?php if ( ! empty( $api->rating ) ) { ?>
835
+ <h3><?php _efs( 'average-rating', $api->slug ); ?></h3>
836
+ <?php wp_star_rating( array(
837
+ 'rating' => $api->rating,
838
+ 'type' => 'percent',
839
+ 'number' => $api->num_ratings
840
+ ) ); ?>
841
+ <small>(<?php printf(
842
+ __fs( 'based-on-x', $api->slug ),
843
+ sprintf(
844
+ __fs( ( 1 == $api->num_ratings ) ? 'x-rating' : 'x-ratings', $api->slug ),
845
+ number_format_i18n( $api->num_ratings )
846
+ ) ); ?>)</small>
847
+ <?php
848
+ }
849
 
850
+ if ( ! empty( $api->ratings ) && array_sum( (array) $api->ratings ) > 0 ) {
851
+ foreach ( $api->ratings as $key => $ratecount ) {
852
+ // Avoid div-by-zero.
853
+ $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
854
+ $stars_label = sprintf(
855
+ __fs( ( 1 == $key ) ? 'x-star' : 'x-stars', $api->slug ),
856
+ number_format_i18n( $key )
857
+ );
858
+ ?>
859
+ <div class="counter-container">
860
  <span class="counter-label"><a
861
  href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
862
  target="_blank"
863
+ title="<?php echo esc_attr( sprintf( __fs('click-to-reviews', $api->slug), $stars_label) ) ?>"><?php echo $stars_label ?></a></span>
864
+ <span class="counter-back">
865
  <span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
866
  </span>
867
+ <span class="counter-count"><?php echo number_format_i18n( $ratecount ); ?></span>
868
+ </div>
869
+ <?php
870
+ }
871
  }
872
+ if ( ! empty( $api->contributors ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
873
  ?>
874
+ <h3><?php _efs( 'contributors', $api->slug ); ?></h3>
875
+ <ul class="contributors">
876
+ <?php
877
+ foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
878
+ if ( empty( $contrib_username ) && empty( $contrib_profile ) ) {
879
+ continue;
880
+ }
881
+ if ( empty( $contrib_username ) ) {
882
+ $contrib_username = preg_replace( '/^.+\/(.+)\/?$/', '\1', $contrib_profile );
883
+ }
884
+ $contrib_username = sanitize_user( $contrib_username );
885
+ if ( empty( $contrib_profile ) ) {
886
+ echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</li>";
887
+ } else {
888
+ echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</a></li>";
889
+ }
890
+ }
891
+ ?>
892
+ </ul>
893
+ <?php if ( ! empty( $api->donate_link ) ) { ?>
894
+ <a target="_blank"
895
+ href="<?php echo esc_url( $api->donate_link ); ?>"><?php _efs( 'donate-to-plugin', $api->slug ) ?> &#187;</a>
896
+ <?php } ?>
897
  <?php } ?>
 
898
  </div>
899
  <div id="section-holder" class="wrap">
900
+ <?php
901
+ if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
902
+ echo '<div class="notice notice-warning"><p>' . '<strong>' . __fs( 'warning:', $api->slug ) . '</strong> ' . __fs( 'not-tested-warning', $api->slug ) . '</p></div>';
903
+ } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
904
+ echo '<div class="notice notice-warning"><p>' . '<strong>' . __fs( 'warning:', $api->slug ) . '</strong> ' . __fs( 'not-compatible-warning', $api->slug ) . '</p></div>';
905
+ }
906
 
907
+ foreach ( (array) $api->sections as $section_name => $content ) {
908
+ $content = links_add_base_url( $content, 'https://wordpress.org/plugins/' . $api->slug . '/' );
909
+ $content = links_add_target( $content, '_blank' );
910
 
911
+ $san_section = esc_attr( $section_name );
912
 
913
+ $display = ( $section_name === $section ) ? 'block' : 'none';
914
 
915
+ if ( 'description' === $section_name &&
916
+ ( ( ! $api->external && $api->wp_org_missing ) ||
917
+ ( $api->external && $api->fs_missing ) )
918
+ ) {
919
+ $missing_notice = array(
920
+ 'type' => 'error',
921
+ 'id' => md5( microtime() ),
922
+ 'message' => __fs( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ),
923
+ );
924
+ fs_require_template( 'admin-notice.php', $missing_notice );
925
+ }
926
+ echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n";
927
+ echo $content;
928
+ echo "\t</div>\n";
929
  }
930
+ echo "</div>\n";
931
+ echo "</div>\n";
932
+ echo "</div>\n"; // #plugin-information-scrollable
933
+ echo "<div id='$tab-footer'>\n";
 
 
 
 
934
 
935
+ echo $this->get_plugin_cta( $api );
936
 
937
+ echo "</div>\n";
938
 
939
+ iframe_footer();
940
+ exit;
941
+ }
942
+ }
includes/pum-sdk/freemius/includes/i18n.php CHANGED
@@ -1,534 +1,518 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
- * @since 1.1.4
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * All strings can now be overridden.
15
- *
16
- * For example, if we want to override:
17
- * 'you-are-step-away' => 'You are just one step away - %s',
18
- *
19
- * We can use the filter:
20
- * fs_override_i18n( array(
21
- * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
22
- * 'skip' => __( 'Not today', '{your-text_domain}' ),
23
- * ), '{plugin_slug}' );
24
- *
25
- * Or with the Freemius instance:
26
- *
27
- * my_freemius->override_i18n( array(
28
- * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
29
- * 'skip' => __( 'Not today', '{your-text_domain}' ),
30
- * );
31
- */
32
- global $fs_text;
33
-
34
- $fs_text = array(
35
- 'account' => __( 'Account', 'freemius' ),
36
- 'addon' => __( 'Add On', 'freemius' ),
37
- 'contact-us' => __( 'Contact Us', 'freemius' ),
38
- 'contact-support' => __( 'Contact Support', 'freemius' ),
39
- 'change-ownership' => __( 'Change Ownership', 'freemius' ),
40
- 'support' => __( 'Support', 'freemius' ),
41
- 'support-forum' => __( 'Support Forum', 'freemius' ),
42
- 'add-ons' => __( 'Add Ons', 'freemius' ),
43
- 'upgrade' => _x( 'Upgrade', 'verb', 'freemius' ),
44
- 'awesome' => __( 'Awesome', 'freemius' ),
45
- 'pricing' => _x( 'Pricing', 'noun', 'freemius' ),
46
- 'price' => _x( 'Price', 'noun', 'freemius' ),
47
- 'unlimited-updates' => __( 'Unlimited Updates', 'freemius' ),
48
- 'downgrade' => _x( 'Downgrade', 'verb', 'freemius' ),
49
- 'cancel-trial' => __( 'Cancel Trial', 'freemius' ),
50
- 'free-trial' => __( 'Free Trial', 'freemius' ),
51
- 'start-free-x' => __( 'Start my free %s', 'freemius' ),
52
- 'no-commitment-x' => __( 'No commitment for %s - cancel anytime', 'freemius' ),
53
- 'after-x-pay-as-little-y' => __( 'After your free %s, pay as little as %s', 'freemius' ),
54
- 'details' => __( 'Details', 'freemius' ),
55
- 'account-details' => __( 'Account Details', 'freemius' ),
56
- 'delete' => _x( 'Delete', 'verb', 'freemius' ),
57
- 'show' => _x( 'Show', 'verb', 'freemius' ),
58
- 'hide' => _x( 'Hide', 'verb', 'freemius' ),
59
- 'edit' => _x( 'Edit', 'verb', 'freemius' ),
60
- 'update' => _x( 'Update', 'verb', 'freemius' ),
61
- 'date' => __( 'Date', 'freemius' ),
62
- 'amount' => __( 'Amount', 'freemius' ),
63
- 'invoice' => __( 'Invoice', 'freemius' ),
64
- 'billing' => __( 'Billing', 'freemius' ),
65
- 'payments' => __( 'Payments', 'freemius' ),
66
- 'delete-account' => __( 'Delete Account', 'freemius' ),
67
- 'dismiss' => _x( 'Dismiss', 'as close a window', 'freemius' ),
68
- 'plan' => _x( 'Plan', 'as product pricing plan', 'freemius' ),
69
- 'change-plan' => __( 'Change Plan', 'freemius' ),
70
- 'download-x-version' => _x( 'Download %s Version', 'as download professional version', 'freemius' ),
71
- 'download-x-version-now' => _x( 'Download %s version now', 'as download professional version now',
72
- 'freemius' ),
73
- 'download-latest' => _x( 'Download Latest', 'as download latest version', 'freemius' ),
74
- 'you-have-x-license' => _x( 'You have a %s license.', 'E.g. you have a professional license.',
75
- 'freemius' ),
76
- 'new' => __( 'New', 'freemius' ),
77
- 'free' => __( 'Free', 'freemius' ),
78
- 'trial' => _x( 'Trial', 'as trial plan', 'freemius' ),
79
- 'start-trial' => _x( 'Start Trial', 'as starting a trial plan', 'freemius' ),
80
- 'purchase' => _x( 'Purchase', 'verb', 'freemius' ),
81
- 'purchase-license' => __( 'Purchase License', 'freemius' ),
82
- 'buy' => _x( 'Buy', 'verb', 'freemius' ),
83
- 'buy-license' => __( 'Buy License', 'freemius' ),
84
- 'license-single-site' => __( 'Single Site License', 'freemius' ),
85
- 'license-unlimited' => __( 'Unlimited Licenses', 'freemius' ),
86
- 'license-x-sites' => __( 'Up to %s Sites', 'freemius' ),
87
- 'renew-license-now' => __( '%sRenew your license now%s to access version %s features and support.',
88
- 'freemius' ),
89
- 'ask-for-upgrade-email-address' => __( "Enter the email address you've used for the upgrade below and we will resend you the license key.",
90
- 'freemius' ),
91
- 'x-plan' => _x( '%s Plan', 'e.g. Professional Plan', 'freemius' ),
92
- 'you-are-step-away' => __( 'You are just one step away - %s', 'freemius' ),
93
- 'activate-x-now' => _x( 'Complete "%s" Activation Now',
94
- '%s - plugin name. As complete "Jetpack" activation now', 'freemius' ),
95
- 'few-plugin-tweaks' => __( 'We made a few tweaks to the plugin, %s', 'freemius' ),
96
- 'optin-x-now' => __( 'Opt-in to make "%s" Better!', 'freemius' ),
97
- 'error' => __( 'Error', 'freemius' ),
98
- 'failed-finding-main-path' => __( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.',
99
- 'freemius' ),
100
- #region Account
101
-
102
- 'expiration' => _x( 'Expiration', 'as expiration date', 'freemius' ),
103
- 'license' => _x( 'License', 'as software license', 'freemius' ),
104
- 'not-verified' => __( 'not verified', 'freemius' ),
105
- 'verify-email' => __( 'Verify Email', 'freemius' ),
106
- 'expires-in' => _x( 'Expires in %s', 'e.g. expires in 2 months', 'freemius' ),
107
- 'renews-in' => _x( 'Auto renews in %s', 'e.g. auto renews in 2 months', 'freemius' ),
108
- 'no-expiration' => __( 'No expiration', 'freemius' ),
109
- 'expired' => __( 'Expired', 'freemius' ),
110
- 'cancelled' => __( 'Cancelled', 'freemius' ),
111
- 'in-x' => _x( 'In %s', 'e.g. In 2 hours', 'freemius' ),
112
- 'x-ago' => _x( '%s ago', 'e.g. 2 min ago', 'freemius' ),
113
- 'version' => _x( 'Version', 'as plugin version', 'freemius' ),
114
- 'name' => __( 'Name', 'freemius' ),
115
- 'email' => __( 'Email', 'freemius' ),
116
- 'email-address' => __( 'Email address', 'freemius' ),
117
- 'verified' => __( 'Verified', 'freemius' ),
118
- 'plugin' => __( 'Plugin', 'freemius' ),
119
- 'plugins' => __( 'Plugins', 'freemius' ),
120
- 'themes' => __( 'Themes', 'freemius' ),
121
- 'path' => _x( 'Path', 'as file/folder path', 'freemius' ),
122
- 'title' => __( 'Title', 'freemius' ),
123
- 'free-version' => __( 'Free version', 'freemius' ),
124
- 'premium-version' => __( 'Premium version', 'freemius' ),
125
- 'slug' => _x( 'Slug', 'as WP plugin slug', 'freemius' ),
126
- 'id' => __( 'ID', 'freemius' ),
127
- 'users' => __( 'Users', 'freemius' ),
128
- 'plugin-installs' => __( 'Plugin Installs', 'freemius' ),
129
- 'sites' => _x( 'Sites', 'like websites', 'freemius' ),
130
- 'user-id' => __( 'User ID', 'freemius' ),
131
- 'site-id' => __( 'Site ID', 'freemius' ),
132
- 'public-key' => __( 'Public Key', 'freemius' ),
133
- 'secret-key' => __( 'Secret Key', 'freemius' ),
134
- 'no-secret' => _x( 'No Secret', 'as secret encryption key missing', 'freemius' ),
135
- 'no-id' => __( 'No ID', 'freemius' ),
136
- 'sync-license' => _x( 'Sync License', 'as synchronize license', 'freemius' ),
137
- 'sync' => _x( 'Sync', 'as synchronize', 'freemius' ),
138
- 'activate-license' => __( 'Activate License', 'freemius' ),
139
- 'activate-free-version' => __( 'Activate Free Version', 'freemius' ),
140
- 'activate-license-message' => __( 'Please enter the license key that you received in the email right after the purchase:',
141
- 'freemius' ),
142
- 'activating-license' => __( 'Activating license...', 'freemius' ),
143
- 'change-license' => __( 'Change License', 'freemius' ),
144
- 'update-license' => __( 'Update License', 'freemius' ),
145
- 'deactivate-license' => __( 'Deactivate License', 'freemius' ),
146
- 'activate' => __( 'Activate', 'freemius' ),
147
- 'deactivate' => __( 'Deactivate', 'freemius' ),
148
- 'skip-deactivate' => __( 'Skip & Deactivate', 'freemius' ),
149
- 'no-deactivate' => __( 'No - just deactivate', 'freemius' ),
150
- 'yes-do-your-thing' => __( 'Yes - do your thing', 'freemius' ),
151
- 'active' => _x( 'Active', 'active mode', 'freemius' ),
152
- 'is-active' => _x( 'Is Active', 'is active mode?', 'freemius' ),
153
- 'install-now' => __( 'Install Now', 'freemius' ),
154
- 'install-update-now' => __( 'Install Update Now', 'freemius' ),
155
- 'more-information-about-x' => __( 'More information about %s', 'freemius' ),
156
- 'localhost' => __( 'Localhost', 'freemius' ),
157
- 'activate-x-plan' => _x( 'Activate %s Plan', 'as activate Professional plan', 'freemius' ),
158
- 'x-left' => _x( '%s left', 'as 5 licenses left', 'freemius' ),
159
- 'last-license' => __( 'Last license', 'freemius' ),
160
- 'what-is-your-x' => __( 'What is your %s?', 'freemius' ),
161
- 'activate-this-addon' => __( 'Activate this add-on', 'freemius' ),
162
- 'deactivate-license-confirm' => __( 'Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?',
163
- 'freemius' ),
164
- 'delete-account-x-confirm' => __( 'Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the "Cancel" button, and first "Downgrade" your account. Are you sure you would like to continue with the deletion?',
165
- 'freemius' ),
166
- 'delete-account-confirm' => __( 'Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?',
167
- 'freemius' ),
168
- 'downgrade-x-confirm' => __( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.',
169
- 'freemius' ),
170
- 'cancel-trial-confirm' => __( 'Cancelling the trial will immediately block access to all premium features. Are you sure?',
171
- 'freemius' ),
172
- 'after-downgrade-non-blocking' => __( 'You can still enjoy all %s features but you will not have access to plugin updates and support.',
173
- 'freemius' ),
174
- 'after-downgrade-blocking' => __( 'Once your license expire you can still use the Free version but you will NOT have access to the %s features.',
175
- 'freemius' ),
176
- 'proceed-confirmation' => __( 'Are you sure you want to proceed?', 'freemius' ),
177
- #endregion Account
178
-
179
- 'add-ons-for-x' => __( 'Add Ons for %s', 'freemius' ),
180
- 'add-ons-missing' => __( 'We could\'nt load the add-ons list. It\'s probably an issue on our side, please try to come back in few minutes.',
181
- 'freemius' ),
182
- #region Plugin Deactivation
183
- 'anonymous-feedback' => __( 'Anonymous feedback', 'freemius' ),
184
- 'quick-feedback' => __( 'Quick feedback', 'freemius' ),
185
- 'deactivation-share-reason' => __( 'If you have a moment, please let us know why you are deactivating',
186
- 'freemius' ),
187
- 'deactivation-modal-button-confirm' => __( 'Yes - Deactivate', 'freemius' ),
188
- 'deactivation-modal-button-submit' => __( 'Submit & Deactivate', 'freemius' ),
189
- 'cancel' => __( 'Cancel', 'freemius' ),
190
- 'reason-no-longer-needed' => __( 'I no longer need the plugin', 'freemius' ),
191
- 'reason-found-a-better-plugin' => __( 'I found a better plugin', 'freemius' ),
192
- 'reason-needed-for-a-short-period' => __( 'I only needed the plugin for a short period', 'freemius' ),
193
- 'reason-broke-my-site' => __( 'The plugin broke my site', 'freemius' ),
194
- 'reason-suddenly-stopped-working' => __( 'The plugin suddenly stopped working', 'freemius' ),
195
- 'reason-cant-pay-anymore' => __( "I can't pay for it anymore", 'freemius' ),
196
- 'reason-temporary-deactivation' => __( "It's a temporary deactivation. I'm just debugging an issue.",
197
- 'freemius' ),
198
- 'reason-other' => _x( 'Other',
199
- 'the text of the "other" reason for deactivating the plugin that is shown in the modal box.', 'freemius' ),
200
- 'ask-for-reason-message' => __( 'Kindly tell us the reason so we can improve.', 'freemius' ),
201
- 'placeholder-plugin-name' => __( "What's the plugin's name?", 'freemius' ),
202
- 'placeholder-comfortable-price' => __( 'What price would you feel comfortable paying?', 'freemius' ),
203
- 'reason-couldnt-make-it-work' => __( "I couldn't understand how to make it work", 'freemius' ),
204
- 'reason-great-but-need-specific-feature' => __( "The plugin is great, but I need specific feature that you don't support",
205
- 'freemius' ),
206
- 'reason-not-working' => __( 'The plugin is not working', 'freemius' ),
207
- 'reason-not-what-i-was-looking-for' => __( "It's not what I was looking for", 'freemius' ),
208
- 'reason-didnt-work-as-expected' => __( "The plugin didn't work as expected", 'freemius' ),
209
- 'placeholder-feature' => __( 'What feature?', 'freemius' ),
210
- 'placeholder-share-what-didnt-work' => __( "Kindly share what didn't work so we can fix it for future users...",
211
- 'freemius' ),
212
- 'placeholder-what-youve-been-looking-for' => __( "What you've been looking for?", 'freemius' ),
213
- 'placeholder-what-did-you-expect' => __( "What did you expect?", 'freemius' ),
214
- 'reason-didnt-work' => __( "The plugin didn't work", 'freemius' ),
215
- 'reason-dont-like-to-share-my-information' => __( "I don't like to share my information with you", 'freemius' ),
216
- 'dont-have-to-share-any-data' => __( "You might have missed it, but you don't have to share any data and can just %s the opt-in.",
217
- 'freemius' ),
218
- #endregion Plugin Deactivation
219
-
220
- #region Connect
221
- 'hey-x' => _x( 'Hey %s,', 'greeting', 'freemius' ),
222
- 'thanks-x' => _x( 'Thanks %s!', 'a greeting. E.g. Thanks John!', 'freemius' ),
223
- 'connect-message' => __( 'Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s.',
224
- 'freemius' ),
225
- 'connect-message_on-update' => __( 'Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that\'s okay! %1$s will still work just fine.',
226
- 'freemius' ),
227
- 'pending-activation-message' => __( 'You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s.', 'freemius' ),
228
- 'complete-the-install' => __( 'complete the install', 'freemius' ),
229
- 'start-the-trial' => __( 'start the trial', 'freemius' ),
230
- 'thanks-for-purchasing' => __( 'Thanks for purchasing %s! To get started, please enter your license key:',
231
- 'freemius' ),
232
- 'license-sync-disclaimer' => __( 'The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license.',
233
- 'freemius' ),
234
- 'what-permissions' => __( 'What permissions are being granted?', 'freemius' ),
235
- 'permissions-profile' => __( 'Your Profile Overview', 'freemius' ),
236
- 'permissions-profile_desc' => __( 'Name and email address', 'freemius' ),
237
- 'permissions-site' => __( 'Your Site Overview', 'freemius' ),
238
- 'permissions-site_desc' => __( 'Site URL, WP version, PHP info, plugins & themes',
239
- 'freemius' ),
240
- 'permissions-events' => __( 'Current Plugin Events', 'freemius' ),
241
- 'permissions-events_desc' => __( 'Activation, deactivation and uninstall', 'freemius' ),
242
- 'permissions-plugins_themes' => __( 'Plugins & Themes', 'freemius' ),
243
- 'permissions-plugins_themes_desc' => __( 'Titles, versions and state.', 'freemius' ),
244
- 'permissions-admin-notices' => __( 'Admin Notices', 'freemius' ),
245
- 'permissions-newsletter' => __( 'Newsletter', 'freemius' ),
246
- 'permissions-newsletter_desc' => __( 'Updates, announcements, marketing, no spam', 'freemius' ),
247
- 'privacy-policy' => __( 'Privacy Policy', 'freemius' ),
248
- 'tos' => __( 'Terms of Service', 'freemius' ),
249
- 'activating' => _x( 'Activating', 'as activating plugin', 'freemius' ),
250
- 'sending-email' => _x( 'Sending email', 'as in the process of sending an email',
251
- 'freemius' ),
252
- 'opt-in-connect' => _x( 'Allow & Continue', 'button label', 'freemius' ),
253
- 'agree-activate-license' => _x( 'Agree & Activate License', 'button label', 'freemius' ),
254
- 'skip' => _x( 'Skip', 'verb', 'freemius' ),
255
- 'click-here-to-use-plugin-anonymously' => __( 'Click here to use the plugin anonymously', 'freemius' ),
256
- 'resend-activation-email' => __( 'Re-send activation email', 'freemius' ),
257
- 'license-key' => __( 'License key', 'freemius' ),
258
- 'send-license-key' => __( 'Send License Key', 'freemius' ),
259
- 'sending-license-key' => __( 'Sending license key', 'freemius' ),
260
- 'have-license-key' => __( 'Have a license key?', 'freemius' ),
261
- 'dont-have-license-key' => __( 'Don\'t have a license key?', 'freemius' ),
262
- 'cant-find-license-key' => __( "Can't find your license key?", 'freemius' ),
263
- 'email-not-found' => __( "We couldn't find your email address in the system, are you sure it's the right address?",
264
- 'freemius' ),
265
- 'no-active-licenses' => __( "We can't see any active licenses associated with that email address, are you sure it's the right address?",
266
- 'freemius' ),
267
- 'opt-in' => __( 'Opt In', 'freemius' ),
268
- 'opt-out' => __( 'Opt Out', 'freemius' ),
269
- 'opt-out-cancel' => __( 'On second thought - I want to continue helping',
270
- 'freemius' ),
271
- 'opting-out' => __( 'Opting out...', 'freemius' ),
272
- 'opting-in' => __( 'Opting in...', 'freemius' ),
273
- 'opt-out-message-appreciation' => __( 'We appreciate your help in making the %s better by letting us track some usage data.',
274
- 'freemius' ),
275
- 'opt-out-message-usage-tracking' => __( "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking.",
276
- 'freemius' ),
277
- 'opt-out-message-clicking-opt-out' => __( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.',
278
- 'freemius' ),
279
- #endregion Connect
280
-
281
- #region Screenshots
282
- 'screenshots' => __( 'Screenshots', 'freemius' ),
283
- 'view-full-size-x' => __( 'Click to view full-size screenshot %d', 'freemius' ),
284
- #endregion Screenshots
285
-
286
- #region Debug
287
- 'freemius-debug' => __( 'Freemius Debug', 'freemius' ),
288
- 'on' => _x( 'On', 'as turned on', 'freemius' ),
289
- 'off' => _x( 'Off', 'as turned off', 'freemius' ),
290
- 'debugging' => _x( 'Debugging', 'as code debugging', 'freemius' ),
291
- 'freemius-state' => __( 'Freemius State', 'freemius' ),
292
- 'connected' => _x( 'Connected', 'as connection was successful', 'freemius' ),
293
- 'blocked' => _x( 'Blocked', 'as connection blocked', 'freemius' ),
294
- 'api' => _x( 'API', 'as application program interface', 'freemius' ),
295
- 'sdk' => _x( 'SDK', 'as software development kit versions', 'freemius' ),
296
- 'sdk-versions' => _x( 'SDK Versions', 'as software development kit versions',
297
- 'freemius' ),
298
- 'plugin-path' => _x( 'Plugin Path', 'as plugin folder path', 'freemius' ),
299
- 'sdk-path' => _x( 'SDK Path', 'as sdk path', 'freemius' ),
300
- 'addons-of-x' => __( 'Add Ons of Plugin %s', 'freemius' ),
301
- 'delete-all-confirm' => __( 'Are you sure you want to delete all Freemius data?',
302
- 'freemius' ),
303
- 'actions' => __( 'Actions', 'freemius' ),
304
- 'delete-all-accounts' => __( 'Delete All Accounts', 'freemius' ),
305
- 'start-fresh' => __( 'Start Fresh', 'freemius' ),
306
- 'clear-api-cache' => __( 'Clear API Cache', 'freemius' ),
307
- 'sync-data-from-server' => __( 'Sync Data From Server', 'freemius' ),
308
- 'scheduled-crons' => __( 'Scheduled Crons', 'freemius' ),
309
- 'plugins-themes-sync' => __( 'Plugins & Themes Sync', 'freemius' ),
310
- #endregion Debug
311
-
312
- #region Expressions
313
- 'congrats' => _x( 'Congrats', 'as congratulations', 'freemius' ),
314
- 'oops' => _x( 'Oops', 'exclamation', 'freemius' ),
315
- 'yee-haw' => _x( 'Yee-haw', 'interjection expressing joy or exuberance',
316
- 'freemius' ),
317
- 'woot' => _x( 'W00t',
318
- '(especially in electronic communication) used to express elation, enthusiasm, or triumph.', 'freemius' ),
319
- 'right-on' => _x( 'Right on', 'a positive response', 'freemius' ),
320
- 'hmm' => _x( 'Hmm',
321
- 'something somebody says when they are thinking about what you have just said. ', 'freemius' ),
322
- 'ok' => __( 'O.K', 'freemius' ),
323
- 'hey' => _x( 'Hey', 'exclamation', 'freemius' ),
324
- 'heads-up' => _x( 'Heads up',
325
- 'advance notice of something that will need attention.', 'freemius' ),
326
- #endregion Expressions
327
-
328
- #region Admin Notices
329
- 'you-have-latest' => __( 'Seems like you got the latest release.', 'freemius' ),
330
- 'you-are-good' => __( 'You are all good!', 'freemius' ),
331
- 'user-exist-message' => __( 'Sorry, we could not complete the email update. Another user with the same email is already registered.',
332
- 'freemius' ),
333
- 'user-exist-message_ownership' => __( 'If you would like to give up the ownership of the plugin\'s account to %s click the Change Ownership button.',
334
- 'freemius' ),
335
- 'email-updated-message' => __( 'Your email was successfully updated. You should receive an email with confirmation instructions in few moments.',
336
- 'freemius' ),
337
- 'name-updated-message' => __( 'Your name was successfully updated.', 'freemius' ),
338
- 'x-updated' => __( 'You have successfully updated your %s.', 'freemius' ),
339
- 'name-update-failed-message' => __( 'Please provide your full name.', 'freemius' ),
340
- 'verification-email-sent-message' => __( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.',
341
- 'freemius' ),
342
- 'addons-info-external-message' => __( 'Just letting you know that the add-ons information of %s is being pulled from an external server.',
343
- 'freemius' ),
344
- 'no-cc-required' => __( 'No credit card required', 'freemius' ),
345
- 'premium-activated-message' => __( 'Premium plugin version was successfully activated.',
346
- 'freemius' ),
347
- 'successful-version-upgrade-message' => __( 'The upgrade of %s was successfully completed.', 'freemius' ),
348
- 'activation-with-plan-x-message' => __( 'Your account was successfully activated with the %s plan.',
349
- 'freemius' ),
350
- 'download-latest-x-version-now' => __( 'Download the latest %s version now', 'freemius' ),
351
- 'follow-steps-to-complete-upgrade' => __( 'Please follow these steps to complete the upgrade',
352
- 'freemius' ),
353
- 'download-latest-x-version' => __( 'Download the latest %s version', 'freemius' ),
354
- 'download-latest-version' => __( 'Download the latest version', 'freemius' ),
355
- 'deactivate-free-version' => __( 'Deactivate the free version', 'freemius' ),
356
- 'upload-and-activate' => __( 'Upload and activate the downloaded version', 'freemius' ),
357
- 'howto-upload-activate' => __( 'How to upload and activate?', 'freemius' ),
358
- 'addon-successfully-purchased-message' => _x( '%s Add-on was successfully purchased.',
359
- '%s - product name, e.g. Facebook add-on was successfully...', 'freemius' ),
360
- 'addon-successfully-upgraded-message' => __( 'Your %s Add-on plan was successfully upgraded.',
361
- 'freemius' ),
362
- 'email-verified-message' => __( 'Your email has been successfully verified - you are AWESOME!',
363
- 'freemius' ),
364
- 'plan-upgraded-message' => __( 'Your plan was successfully upgraded.', 'freemius' ),
365
- 'plan-changed-to-x-message' => __( 'Your plan was successfully changed to %s.', 'freemius' ),
366
- 'license-expired-blocking-message' => __( 'Your license has expired. You can still continue using the free plugin forever.',
367
- 'freemius' ),
368
- 'license-cancelled' => __( 'Your license has been cancelled. If you think it\'s a mistake, please contact support.',
369
- 'freemius' ),
370
- 'trial-started-message' => __( 'Your trial has been successfully started.', 'freemius' ),
371
- 'license-activated-message' => __( 'Your license was successfully activated.', 'freemius' ),
372
- 'no-active-license-message' => __( 'It looks like your site currently doesn\'t have an active license.',
373
- 'freemius' ),
374
- 'license-deactivation-message' => __( 'Your license was successfully deactivated, you are back to the %s plan.',
375
- 'freemius' ),
376
- 'license-deactivation-failed-message' => __( 'It looks like the license deactivation failed.',
377
- 'freemius' ),
378
- 'license-activation-failed-message' => __( 'It looks like the license could not be activated.',
379
- 'freemius' ),
380
- 'server-error-message' => __( 'Error received from the server:', 'freemius' ),
381
- 'trial-expired-message' => __( 'Your trial has expired. You can still continue using all our free features.',
382
- 'freemius' ),
383
- 'plan-x-downgraded-message' => __( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.',
384
- 'freemius' ),
385
- 'plan-downgraded-failure-message' => __( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.',
386
- 'freemius' ),
387
- 'trial-cancel-no-trial-message' => __( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)',
388
- 'freemius' ),
389
- 'trial-cancel-message' => __( 'Your %s free trial was successfully cancelled.',
390
- 'freemius' ),
391
- 'version-x-released' => _x( 'Version %s was released.', '%s - numeric version number',
392
- 'freemius' ),
393
- 'please-download-x' => __( 'Please download %s.', 'freemius' ),
394
- 'latest-x-version' => _x( 'the latest %s version here',
395
- '%s - plan name, as the latest professional version here', 'freemius' ),
396
- 'trial-x-promotion-message' => __( 'How do you like %s so far? Test all our %s premium features with a %d-day free trial.',
397
- 'freemius' ),
398
- 'start-free-trial' => _x( 'Start free trial', 'call to action', 'freemius' ),
399
- 'starting-trial' => __( 'Starting trial', 'freemius' ),
400
- 'please-wait' => __( 'Please wait', 'freemius' ),
401
- 'trial-cancel-failure-message' => __( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.',
402
- 'freemius' ),
403
- 'trial-utilized' => __( 'You already utilized a trial before.', 'freemius' ),
404
- 'in-trial-mode' => __( 'You are already running the plugin in a trial mode.',
405
- 'freemius' ),
406
- 'trial-plan-x-not-exist' => __( 'Plan %s do not exist, therefore, can\'t start a trial.',
407
- 'freemius' ),
408
- 'plan-x-no-trial' => __( 'Plan %s does not support a trial period.', 'freemius' ),
409
- 'no-trials' => __( 'None of the plugin\'s plans supports a trial period.',
410
- 'freemius' ),
411
- 'unexpected-api-error' => __( 'Unexpected API error. Please contact the plugin\'s author with the following error.',
412
- 'freemius' ),
413
- 'no-commitment-for-x-days' => __( 'No commitment for %s days - cancel anytime!', 'freemius' ),
414
- 'license-expired-non-blocking-message' => __( 'Your license has expired. You can still continue using all the %s features, but you\'ll need to renew your license to continue getting updates and support.',
415
- 'freemius' ),
416
- 'could-not-activate-x' => __( 'Couldn\'t activate %s.', 'freemius' ),
417
- 'contact-us-with-error-message' => __( 'Please contact us with the following message:', 'freemius' ),
418
- 'plan-did-not-change-message' => __( 'It looks like you are still on the %s plan. If you did upgrade or change your plan, it\'s probably an issue on our side - sorry.',
419
- 'freemius' ),
420
- 'contact-us-here' => __( 'Please contact us here', 'freemius' ),
421
- 'plan-did-not-change-email-message' => __( 'I have upgraded my account but when I try to Sync the License, the plan remains %s.',
422
- 'freemius' ),
423
- #endregion Admin Notices
424
- #region Connectivity Issues
425
- 'connectivity-test-fails-message' => __( 'From unknown reason, the API connectivity test failed.',
426
- 'freemius' ),
427
- 'connectivity-test-maybe-temporary' => __( 'It\'s probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?',
428
- 'freemius' ),
429
- 'curl-missing-message' => __( 'We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server.',
430
- 'freemius' ),
431
- 'cloudflare-blocks-connection-message' => __( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.',
432
- 'freemius' ),
433
- 'x-requires-access-to-api' => _x( '%s requires an access to our API.',
434
- 'as pluginX requires an access to our API', 'freemius' ),
435
- 'squid-blocks-connection-message' => __( 'It looks like your server is using Squid ACL (access control lists), which blocks the connection.',
436
- 'freemius' ),
437
- 'squid-no-clue-title' => __( 'I don\'t know what is Squid or ACL, help me!', 'freemius' ),
438
- 'squid-no-clue-desc' => __( 'We\'ll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update.',
439
- 'freemius' ),
440
- 'sysadmin-title' => __( 'I\'m a system administrator', 'freemius' ),
441
- 'squid-sysadmin-desc' => __( 'Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again.',
442
- 'freemius' ),
443
- 'curl-missing-no-clue-title' => __( 'I don\'t know what is cURL or how to install it, help me!',
444
- 'freemius' ),
445
- 'curl-missing-no-clue-desc' => __( 'We\'ll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update.',
446
- 'freemius' ),
447
- 'curl-missing-sysadmin-desc' => __( 'Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use \'phpinfo()\'. Once activated, deactivate the plugin and reactivate it back again.',
448
- 'freemius' ),
449
- 'happy-to-resolve-issue-asap' => __( 'We are sure it\'s an issue on our side and more than happy to resolve it for you ASAP if you give us a chance.',
450
- 'freemius' ),
451
- 'contact-support-before-deactivation' => __( 'Sorry for the inconvenience and we are here to help if you give us a chance.',
452
- 'freemius' ),
453
- 'fix-issue-title' => __( 'Yes - I\'m giving you a chance to fix it', 'freemius' ),
454
- 'fix-issue-desc' => __( 'We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update.',
455
- 'freemius' ),
456
- 'install-previous-title' => __( 'Let\'s try your previous version', 'freemius' ),
457
- 'install-previous-desc' => __( 'Uninstall this version and install the previous one.',
458
- 'freemius' ),
459
- 'deactivate-plugin-title' => __( 'That\'s exhausting, please deactivate', 'freemius' ),
460
- 'deactivate-plugin-desc' => __( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.',
461
- 'freemius' ),
462
- 'fix-request-sent-message' => __( 'Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience.',
463
- 'freemius' ),
464
- 'server-blocking-access' => _x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s',
465
- '%1s - plugin title, %2s - API domain', 'freemius' ),
466
- 'wrong-authentication-param-message' => __( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.',
467
- 'freemius' ),
468
- #endregion Connectivity Issues
469
- #region Change Owner
470
- 'change-owner-request-sent-x' => __( 'Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder.',
471
- 'freemius' ),
472
- 'change-owner-request_owner-confirmed' => __( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.',
473
- 'freemius' ),
474
- 'change-owner-request_candidate-confirmed' => __( '%s is the new owner of the account.', 'freemius' ),
475
- #endregion Change Owner
476
- 'addon-x-cannot-run-without-y' => _x( '%s cannot run without %s.',
477
- 'addonX cannot run without pluginY', 'freemius' ),
478
- 'addon-x-cannot-run-without-parent' => _x( '%s cannot run without the plugin.', 'addonX cannot run...',
479
- 'freemius' ),
480
- 'plugin-x-activation-message' => _x( '%s activation was successfully completed.',
481
- 'pluginX activation was successfully...', 'freemius' ),
482
- 'features-and-pricing' => _x( 'Features & Pricing', 'Plugin installer section title',
483
- 'freemius' ),
484
- 'free-addon-not-deployed' => __( 'Add-on must be deployed to WordPress.org or Freemius.',
485
- 'freemius' ),
486
- 'paid-addon-not-deployed' => __( 'Paid add-on must be deployed to Freemius.', 'freemius' ),
487
- #--------------------------------------------------------------------------------
488
- #region Add-On Licensing
489
- #--------------------------------------------------------------------------------
490
- 'addon-no-license-message' => __( '%s is a premium only add-on. You have to purchase a license first before activating the plugin.',
491
- 'freemius' ),
492
- 'addon-trial-cancelled-message' => __( '%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you\'ll have to purchase a license.',
493
- 'freemius' ),
494
- #endregion
495
- #--------------------------------------------------------------------------------
496
- #region Billing Cycles
497
- #--------------------------------------------------------------------------------
498
- 'monthly' => _x( 'Monthly', 'as every month', 'freemius' ),
499
- 'mo' => _x( 'mo', 'as monthly period', 'freemius' ),
500
- 'annual' => _x( 'Annual', 'as once a year', 'freemius' ),
501
- 'annually' => _x( 'Annually', 'as once a year', 'freemius' ),
502
- 'once' => _x( 'Once', 'as once a year', 'freemius' ),
503
- 'year' => _x( 'year', 'as annual period', 'freemius' ),
504
- 'lifetime' => __( 'Lifetime', 'freemius' ),
505
- 'best' => _x( 'Best', 'e.g. the best product', 'freemius' ),
506
- 'billed-x' => _x( 'Billed %s', 'e.g. billed monthly', 'freemius' ),
507
- 'save-x' => _x( 'Save %s', 'as a discount of $5 or 10%', 'freemius' ),
508
- #endregion Billing Cycles
509
- 'view-details' => __( 'View details', 'freemius' ),
510
- #--------------------------------------------------------------------------------
511
- #region Trial
512
- #--------------------------------------------------------------------------------
513
- 'approve-start-trial' => _x( 'Approve & Start Trial', 'button label', 'freemius' ),
514
- /* translators: %1$s: Number of trial days; %2$s: Plan name; */
515
- 'start-trial-prompt-header' => __( 'You are 1-click away from starting your %1$s-day free trial of the %2$s plan.', 'freemius' ),
516
- /* translators: %s: Link to freemius.com */
517
- 'start-trial-prompt-message' => __( 'For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial.', 'freemius' ),
518
-
519
- #endregion
520
- #--------------------------------------------------------------------------------
521
- #region Billing Details
522
- #--------------------------------------------------------------------------------
523
- 'business-name' => __( 'Business name', 'freemius' ),
524
- 'tax-vat-id' => __( 'Tax / VAT ID', 'freemius' ),
525
- 'address-line-n' => __( 'Address Line %d', 'freemius' ),
526
- 'country' => __( 'Country', 'freemius' ),
527
- 'select-country' => __( 'Select Country', 'freemius' ),
528
- 'city' => __( 'City', 'freemius' ),
529
- 'town' => __( 'Town', 'freemius' ),
530
- 'state' => __( 'State', 'freemius' ),
531
- 'province' => __( 'Province', 'freemius' ),
532
- 'zip-postal-code' => __( 'ZIP / Postal Code', 'freemius' ),
533
- #endregion
534
- );
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.1.4
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ require_once dirname( __FILE__ ) . '/l10n.php';
14
+
15
+ /**
16
+ * All strings can now be overridden.
17
+ *
18
+ * For example, if we want to override:
19
+ * 'you-are-step-away' => 'You are just one step away - %s',
20
+ *
21
+ * We can use the filter:
22
+ * fs_override_i18n( array(
23
+ * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
24
+ * 'skip' => __( 'Not today', '{your-text_domain}' ),
25
+ * ), '{plugin_slug}' );
26
+ *
27
+ * Or with the Freemius instance:
28
+ *
29
+ * my_freemius->override_i18n( array(
30
+ * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
31
+ * 'skip' => __( 'Not today', '{your-text_domain}' ),
32
+ * );
33
+ */
34
+ global $fs_text;
35
+
36
+ $fs_text = array(
37
+ 'account' => _fs_text( 'Account' ),
38
+ 'addon' => _fs_text( 'Add On' ),
39
+ 'contact-us' => _fs_text( 'Contact Us' ),
40
+ 'contact-support' => _fs_text( 'Contact Support' ),
41
+ 'change-ownership' => _fs_text( 'Change Ownership' ),
42
+ 'support' => _fs_text( 'Support' ),
43
+ 'support-forum' => _fs_text( 'Support Forum' ),
44
+ 'add-ons' => _fs_text( 'Add Ons' ),
45
+ 'upgrade' => _fs_x( 'Upgrade', 'verb' ),
46
+ 'awesome' => _fs_text( 'Awesome' ),
47
+ 'pricing' => _fs_x( 'Pricing', 'noun' ),
48
+ 'price' => _fs_x( 'Price', 'noun' ),
49
+ 'unlimited-updates' => _fs_text( 'Unlimited Updates' ),
50
+ 'downgrade' => _fs_x( 'Downgrade', 'verb' ),
51
+ 'cancel-trial' => _fs_text( 'Cancel Trial' ),
52
+ 'free-trial' => _fs_text( 'Free Trial' ),
53
+ 'start-free-x' => _fs_text( 'Start my free %s' ),
54
+ 'no-commitment-x' => _fs_text( 'No commitment for %s - cancel anytime' ),
55
+ 'after-x-pay-as-little-y' => _fs_text( 'After your free %s, pay as little as %s' ),
56
+ 'details' => _fs_text( 'Details' ),
57
+ 'account-details' => _fs_text( 'Account Details' ),
58
+ 'delete' => _fs_x( 'Delete', 'verb' ),
59
+ 'show' => _fs_x( 'Show', 'verb' ),
60
+ 'hide' => _fs_x( 'Hide', 'verb' ),
61
+ 'edit' => _fs_x( 'Edit', 'verb' ),
62
+ 'update' => _fs_x( 'Update', 'verb' ),
63
+ 'date' => _fs_text( 'Date' ),
64
+ 'amount' => _fs_text( 'Amount' ),
65
+ 'invoice' => _fs_text( 'Invoice' ),
66
+ 'billing' => _fs_text( 'Billing' ),
67
+ 'payments' => _fs_text( 'Payments' ),
68
+ 'delete-account' => _fs_text( 'Delete Account' ),
69
+ 'dismiss' => _fs_x( 'Dismiss', 'as close a window' ),
70
+ 'plan' => _fs_x( 'Plan', 'as product pricing plan' ),
71
+ 'change-plan' => _fs_text( 'Change Plan' ),
72
+ 'download-x-version' => _fs_x( 'Download %s Version', 'as download professional version' ),
73
+ 'download-x-version-now' => _fs_x( 'Download %s version now', 'as download professional version now' ),
74
+ 'download-latest' => _fs_x( 'Download Latest', 'as download latest version' ),
75
+ 'you-have-x-license' => _fs_x( 'You have a %s license.', 'E.g. you have a professional license.' ),
76
+ 'new' => _fs_text( 'New' ),
77
+ 'free' => _fs_text( 'Free' ),
78
+ 'trial' => _fs_x( 'Trial', 'as trial plan' ),
79
+ 'start-trial' => _fs_x( 'Start Trial', 'as starting a trial plan' ),
80
+ 'purchase' => _fs_x( 'Purchase', 'verb' ),
81
+ 'purchase-license' => _fs_text( 'Purchase License' ),
82
+ 'buy' => _fs_x( 'Buy', 'verb' ),
83
+ 'buy-license' => _fs_text( 'Buy License' ),
84
+ 'license-single-site' => _fs_text( 'Single Site License' ),
85
+ 'license-unlimited' => _fs_text( 'Unlimited Licenses' ),
86
+ 'license-x-sites' => _fs_text( 'Up to %s Sites' ),
87
+ 'renew-license-now' => _fs_text( '%sRenew your license now%s to access version %s features and support.' ),
88
+ 'ask-for-upgrade-email-address' => _fs_text( "Enter the email address you've used for the upgrade below and we will resend you the license key." ),
89
+ 'x-plan' => _fs_x( '%s Plan', 'e.g. Professional Plan' ),
90
+ 'you-are-step-away' => _fs_text( 'You are just one step away - %s' ),
91
+ 'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
92
+ '%s - plugin name. As complete "Jetpack" activation now' ),
93
+ 'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the plugin, %s' ),
94
+ 'optin-x-now' => _fs_text( 'Opt-in to make "%s" Better!' ),
95
+ 'error' => _fs_text( 'Error' ),
96
+ 'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
97
+ #region Account
98
+
99
+ 'expiration' => _fs_x( 'Expiration', 'as expiration date' ),
100
+ 'license' => _fs_x( 'License', 'as software license' ),
101
+ 'not-verified' => _fs_text( 'not verified' ),
102
+ 'verify-email' => _fs_text( 'Verify Email' ),
103
+ 'expires-in' => _fs_x( 'Expires in %s', 'e.g. expires in 2 months' ),
104
+ 'renews-in' => _fs_x( 'Auto renews in %s', 'e.g. auto renews in 2 months' ),
105
+ 'no-expiration' => _fs_text( 'No expiration' ),
106
+ 'expired' => _fs_text( 'Expired' ),
107
+ 'cancelled' => _fs_text( 'Cancelled' ),
108
+ 'in-x' => _fs_x( 'In %s', 'e.g. In 2 hours' ),
109
+ 'x-ago' => _fs_x( '%s ago', 'e.g. 2 min ago' ),
110
+ /* translators: %s: Version number (e.g. 4.6 or higher) */
111
+ 'x-or-higher' => _fs_text( '%s or higher' ),
112
+ 'version' => _fs_x( 'Version', 'as plugin version' ),
113
+ 'name' => _fs_text( 'Name' ),
114
+ 'email' => _fs_text( 'Email' ),
115
+ 'email-address' => _fs_text( 'Email address' ),
116
+ 'verified' => _fs_text( 'Verified' ),
117
+ 'module' => _fs_text( 'Module' ),
118
+ 'module-type' => _fs_text( 'Module Type' ),
119
+ 'plugin' => _fs_text( 'Plugin' ),
120
+ 'plugins' => _fs_text( 'Plugins' ),
121
+ 'theme' => _fs_text( 'Theme' ),
122
+ 'themes' => _fs_text( 'Themes' ),
123
+ 'path' => _fs_x( 'Path', 'as file/folder path' ),
124
+ 'title' => _fs_text( 'Title' ),
125
+ 'free-version' => _fs_text( 'Free version' ),
126
+ 'premium-version' => _fs_text( 'Premium version' ),
127
+ 'slug' => _fs_x( 'Slug', 'as WP plugin slug' ),
128
+ 'id' => _fs_text( 'ID' ),
129
+ 'users' => _fs_text( 'Users' ),
130
+ 'plugin-installs' => _fs_text( 'Plugin Installs' ),
131
+ 'module-installs' => _fs_text( '%s Installs' ),
132
+ 'sites' => _fs_x( 'Sites', 'like websites' ),
133
+ 'user-id' => _fs_text( 'User ID' ),
134
+ 'site-id' => _fs_text( 'Site ID' ),
135
+ 'public-key' => _fs_text( 'Public Key' ),
136
+ 'secret-key' => _fs_text( 'Secret Key' ),
137
+ 'no-secret' => _fs_x( 'No Secret', 'as secret encryption key missing' ),
138
+ 'no-id' => _fs_text( 'No ID' ),
139
+ 'sync-license' => _fs_x( 'Sync License', 'as synchronize license' ),
140
+ 'sync' => _fs_x( 'Sync', 'as synchronize' ),
141
+ 'activate-license' => _fs_text( 'Activate License' ),
142
+ 'activate-free-version' => _fs_text( 'Activate Free Version' ),
143
+ 'activate-license-message' => _fs_text( 'Please enter the license key that you received in the email right after the purchase:' ),
144
+ 'activating-license' => _fs_text( 'Activating license...' ),
145
+ 'change-license' => _fs_text( 'Change License' ),
146
+ 'update-license' => _fs_text( 'Update License' ),
147
+ 'deactivate-license' => _fs_text( 'Deactivate License' ),
148
+ 'activate' => _fs_text( 'Activate' ),
149
+ 'deactivate' => _fs_text( 'Deactivate' ),
150
+ 'skip-deactivate' => _fs_text( 'Skip & Deactivate' ),
151
+ 'skip-and-x' => _fs_text( 'Skip & %s' ),
152
+ 'no-deactivate' => _fs_text( 'No - just deactivate' ),
153
+ 'yes-do-your-thing' => _fs_text( 'Yes - do your thing' ),
154
+ 'active' => _fs_x( 'Active', 'active mode' ),
155
+ 'is-active' => _fs_x( 'Is Active', 'is active mode?' ),
156
+ 'install-now' => _fs_text( 'Install Now' ),
157
+ 'install-update-now' => _fs_text( 'Install Update Now' ),
158
+ 'more-information-about-x' => _fs_text( 'More information about %s' ),
159
+ 'localhost' => _fs_text( 'Localhost' ),
160
+ 'activate-x-plan' => _fs_x( 'Activate %s Plan', 'as activate Professional plan' ),
161
+ 'x-left' => _fs_x( '%s left', 'as 5 licenses left' ),
162
+ 'last-license' => _fs_text( 'Last license' ),
163
+ 'what-is-your-x' => _fs_text( 'What is your %s?' ),
164
+ 'activate-this-addon' => _fs_text( 'Activate this add-on' ),
165
+ 'deactivate-license-confirm' => _fs_text( 'Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?' ),
166
+ 'delete-account-x-confirm' => _fs_text( 'Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the "Cancel" button, and first "Downgrade" your account. Are you sure you would like to continue with the deletion?' ),
167
+ 'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?' ),
168
+ 'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
169
+ 'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
170
+ 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to plugin updates and support.' ),
171
+ 'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
172
+ 'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
173
+ #endregion Account
174
+
175
+ 'add-ons-for-x' => _fs_text( 'Add Ons for %s' ),
176
+ 'add-ons-missing' => _fs_text( 'We could\'nt load the add-ons list. It\'s probably an issue on our side, please try to come back in few minutes.' ),
177
+ #region Plugin Deactivation
178
+ 'anonymous-feedback' => _fs_text( 'Anonymous feedback' ),
179
+ 'quick-feedback' => _fs_text( 'Quick feedback' ),
180
+ 'deactivation-share-reason' => _fs_text( 'If you have a moment, please let us know why you are deactivating' ),
181
+ 'deactivation-modal-button-confirm' => _fs_text( 'Yes - Deactivate' ),
182
+ 'deactivation-modal-button-submit' => _fs_text( 'Submit & Deactivate' ),
183
+ 'cancel' => _fs_text( 'Cancel' ),
184
+ 'reason-no-longer-needed' => _fs_text( 'I no longer need the plugin' ),
185
+ 'reason-found-a-better-plugin' => _fs_text( 'I found a better plugin' ),
186
+ 'reason-needed-for-a-short-period' => _fs_text( 'I only needed the plugin for a short period' ),
187
+ 'reason-broke-my-site' => _fs_text( 'The plugin broke my site' ),
188
+ 'reason-suddenly-stopped-working' => _fs_text( 'The plugin suddenly stopped working' ),
189
+ 'reason-cant-pay-anymore' => _fs_text( "I can't pay for it anymore" ),
190
+ 'reason-temporary-deactivation' => _fs_text( "It's a temporary deactivation. I'm just debugging an issue." ),
191
+ 'reason-other' => _fs_x( 'Other',
192
+ 'the text of the "other" reason for deactivating the plugin that is shown in the modal box.' ),
193
+ 'ask-for-reason-message' => _fs_text( 'Kindly tell us the reason so we can improve.' ),
194
+ 'placeholder-plugin-name' => _fs_text( "What's the plugin's name?" ),
195
+ 'placeholder-comfortable-price' => _fs_text( 'What price would you feel comfortable paying?' ),
196
+ 'reason-couldnt-make-it-work' => _fs_text( "I couldn't understand how to make it work" ),
197
+ 'reason-great-but-need-specific-feature' => _fs_text( "The plugin is great, but I need specific feature that you don't support" ),
198
+ 'reason-not-working' => _fs_text( 'The plugin is not working' ),
199
+ 'reason-not-what-i-was-looking-for' => _fs_text( "It's not what I was looking for" ),
200
+ 'reason-didnt-work-as-expected' => _fs_text( "The plugin didn't work as expected" ),
201
+ 'placeholder-feature' => _fs_text( 'What feature?' ),
202
+ 'placeholder-share-what-didnt-work' => _fs_text( "Kindly share what didn't work so we can fix it for future users..." ),
203
+ 'placeholder-what-youve-been-looking-for' => _fs_text( "What you've been looking for?" ),
204
+ 'placeholder-what-did-you-expect' => _fs_text( "What did you expect?" ),
205
+ 'reason-didnt-work' => _fs_text( "The plugin didn't work" ),
206
+ 'reason-dont-like-to-share-my-information' => _fs_text( "I don't like to share my information with you" ),
207
+ 'dont-have-to-share-any-data' => _fs_text( "You might have missed it, but you don't have to share any data and can just %s the opt-in." ),
208
+ #endregion Plugin Deactivation
209
+
210
+ #region Connect
211
+ 'hey-x' => _fs_x( 'Hey %s,', 'greeting' ),
212
+ 'thanks-x' => _fs_x( 'Thanks %s!', 'a greeting. E.g. Thanks John!' ),
213
+ 'connect-message' => _fs_text( 'Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s.' ),
214
+ 'connect-message_on-update' => _fs_text( 'Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that\'s okay! %1$s will still work just fine.' ),
215
+ 'pending-activation-message' => _fs_text( 'You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s.' ),
216
+ 'complete-the-install' => _fs_text( 'complete the install' ),
217
+ 'start-the-trial' => _fs_text( 'start the trial' ),
218
+ 'thanks-for-purchasing' => _fs_text( 'Thanks for purchasing %s! To get started, please enter your license key:' ),
219
+ 'license-sync-disclaimer' => _fs_text( 'The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license.' ),
220
+ 'what-permissions' => _fs_text( 'What permissions are being granted?' ),
221
+ 'permissions-profile' => _fs_text( 'Your Profile Overview' ),
222
+ 'permissions-profile_desc' => _fs_text( 'Name and email address' ),
223
+ 'permissions-site' => _fs_text( 'Your Site Overview' ),
224
+ 'permissions-site_desc' => _fs_text( 'Site URL, WP version, PHP info, plugins & themes' ),
225
+ 'permissions-events' => _fs_text( 'Current Plugin Events' ),
226
+ 'permissions-events_desc' => _fs_text( 'Activation, deactivation and uninstall' ),
227
+ 'permissions-plugins_themes' => _fs_text( 'Plugins & Themes' ),
228
+ 'permissions-plugins_themes_desc' => _fs_text( 'Titles, versions and state.' ),
229
+ 'permissions-admin-notices' => _fs_text( 'Admin Notices' ),
230
+ 'permissions-newsletter' => _fs_text( 'Newsletter' ),
231
+ 'permissions-newsletter_desc' => _fs_text( 'Updates, announcements, marketing, no spam' ),
232
+ 'privacy-policy' => _fs_text( 'Privacy Policy' ),
233
+ 'tos' => _fs_text( 'Terms of Service' ),
234
+ 'activating' => _fs_x( 'Activating', 'as activating plugin' ),
235
+ 'sending-email' => _fs_x( 'Sending email', 'as in the process of sending an email' ),
236
+ 'opt-in-connect' => _fs_x( 'Allow & Continue', 'button label' ),
237
+ 'agree-activate-license' => _fs_x( 'Agree & Activate License', 'button label' ),
238
+ 'skip' => _fs_x( 'Skip', 'verb' ),
239
+ 'click-here-to-use-plugin-anonymously' => _fs_text( 'Click here to use the plugin anonymously' ),
240
+ 'resend-activation-email' => _fs_text( 'Re-send activation email' ),
241
+ 'license-key' => _fs_text( 'License key' ),
242
+ 'send-license-key' => _fs_text( 'Send License Key' ),
243
+ 'sending-license-key' => _fs_text( 'Sending license key' ),
244
+ 'have-license-key' => _fs_text( 'Have a license key?' ),
245
+ 'dont-have-license-key' => _fs_text( 'Don\'t have a license key?' ),
246
+ 'cant-find-license-key' => _fs_text( "Can't find your license key?" ),
247
+ 'email-not-found' => _fs_text( "We couldn't find your email address in the system, are you sure it's the right address?" ),
248
+ 'no-active-licenses' => _fs_text( "We can't see any active licenses associated with that email address, are you sure it's the right address?" ),
249
+ 'opt-in' => _fs_text( 'Opt In' ),
250
+ 'opt-out' => _fs_text( 'Opt Out' ),
251
+ 'opt-out-cancel' => _fs_text( 'On second thought - I want to continue helping' ),
252
+ 'opting-out' => _fs_text( 'Opting out...' ),
253
+ 'opting-in' => _fs_text( 'Opting in...' ),
254
+ 'opt-out-message-appreciation' => _fs_text( 'We appreciate your help in making the %s better by letting us track some usage data.' ),
255
+ 'opt-out-message-usage-tracking' => _fs_text( "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking." ),
256
+ 'opt-out-message-clicking-opt-out' => _fs_text( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.' ),
257
+ #endregion Connect
258
+
259
+ #region Screenshots
260
+ 'screenshots' => _fs_text( 'Screenshots' ),
261
+ 'view-full-size-x' => _fs_text( 'Click to view full-size screenshot %d' ),
262
+ #endregion Screenshots
263
+
264
+ #region Debug
265
+ 'freemius-debug' => _fs_text( 'Freemius Debug' ),
266
+ 'on' => _fs_x( 'On', 'as turned on' ),
267
+ 'off' => _fs_x( 'Off', 'as turned off' ),
268
+ 'debugging' => _fs_x( 'Debugging', 'as code debugging' ),
269
+ 'freemius-state' => _fs_text( 'Freemius State' ),
270
+ 'connected' => _fs_x( 'Connected', 'as connection was successful' ),
271
+ 'blocked' => _fs_x( 'Blocked', 'as connection blocked' ),
272
+ 'api' => _fs_x( 'API', 'as application program interface' ),
273
+ 'sdk' => _fs_x( 'SDK', 'as software development kit versions' ),
274
+ 'sdk-versions' => _fs_x( 'SDK Versions', 'as software development kit versions' ),
275
+ 'plugin-path' => _fs_x( 'Plugin Path', 'as plugin folder path' ),
276
+ 'sdk-path' => _fs_x( 'SDK Path', 'as sdk path' ),
277
+ 'addons-of-x' => _fs_text( 'Add Ons of Plugin %s' ),
278
+ 'delete-all-confirm' => _fs_text( 'Are you sure you want to delete all Freemius data?' ),
279
+ 'actions' => _fs_text( 'Actions' ),
280
+ 'delete-all-accounts' => _fs_text( 'Delete All Accounts' ),
281
+ 'start-fresh' => _fs_text( 'Start Fresh' ),
282
+ 'clear-api-cache' => _fs_text( 'Clear API Cache' ),
283
+ 'sync-data-from-server' => _fs_text( 'Sync Data From Server' ),
284
+ 'scheduled-crons' => _fs_text( 'Scheduled Crons' ),
285
+ 'cron-type' => _fs_text( 'Cron Type' ),
286
+ 'plugins-themes-sync' => _fs_text( 'Plugins & Themes Sync' ),
287
+ 'licenses' => _fs_text( 'Licenses' ),
288
+ 'debug-log' => _fs_text( 'Debug Log' ),
289
+ 'all' => _fs_text( 'All' ),
290
+ 'file' => _fs_text( 'File' ),
291
+ 'function' => _fs_text( 'Function' ),
292
+ 'process-id' => _fs_text( 'Process ID' ),
293
+ 'logger' => _fs_text( 'Logger' ),
294
+ 'message' => _fs_text( 'Message' ),
295
+ 'download' => _fs_text( 'Download' ),
296
+ 'filter' => _fs_text( 'Filter' ),
297
+ 'type' => _fs_text( 'Type' ),
298
+ 'all-types' => _fs_text( 'All Types' ),
299
+ 'all-requests' => _fs_text( 'All Requests' ),
300
+ #endregion Debug
301
+
302
+ #region Expressions
303
+ 'congrats' => _fs_x( 'Congrats', 'as congratulations' ),
304
+ 'oops' => _fs_x( 'Oops', 'exclamation' ),
305
+ 'yee-haw' => _fs_x( 'Yee-haw', 'interjection expressing joy or exuberance' ),
306
+ 'woot' => _fs_x( 'W00t',
307
+ '(especially in electronic communication) used to express elation, enthusiasm, or triumph.' ),
308
+ 'right-on' => _fs_x( 'Right on', 'a positive response' ),
309
+ 'hmm' => _fs_x( 'Hmm',
310
+ 'something somebody says when they are thinking about what you have just said. ' ),
311
+ 'ok' => _fs_text( 'O.K' ),
312
+ 'hey' => _fs_x( 'Hey', 'exclamation' ),
313
+ 'heads-up' => _fs_x( 'Heads up',
314
+ 'advance notice of something that will need attention.' ),
315
+ #endregion Expressions
316
+
317
+ #region Admin Notices
318
+ 'you-have-latest' => _fs_text( 'Seems like you got the latest release.' ),
319
+ 'you-are-good' => _fs_text( 'You are all good!' ),
320
+ 'user-exist-message' => _fs_text( 'Sorry, we could not complete the email update. Another user with the same email is already registered.' ),
321
+ 'user-exist-message_ownership' => _fs_text( 'If you would like to give up the ownership of the plugin\'s account to %s click the Change Ownership button.' ),
322
+ 'email-updated-message' => _fs_text( 'Your email was successfully updated. You should receive an email with confirmation instructions in few moments.' ),
323
+ 'name-updated-message' => _fs_text( 'Your name was successfully updated.' ),
324
+ 'x-updated' => _fs_text( 'You have successfully updated your %s.' ),
325
+ 'name-update-failed-message' => _fs_text( 'Please provide your full name.' ),
326
+ 'verification-email-sent-message' => _fs_text( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.' ),
327
+ 'addons-info-external-message' => _fs_text( 'Just letting you know that the add-ons information of %s is being pulled from an external server.' ),
328
+ 'no-cc-required' => _fs_text( 'No credit card required' ),
329
+ 'premium-activated-message' => _fs_text( 'Premium plugin version was successfully activated.' ),
330
+ 'successful-version-upgrade-message' => _fs_text( 'The upgrade of %s was successfully completed.' ),
331
+ 'activation-with-plan-x-message' => _fs_text( 'Your account was successfully activated with the %s plan.' ),
332
+ 'download-latest-x-version-now' => _fs_text( 'Download the latest %s version now' ),
333
+ 'follow-steps-to-complete-upgrade' => _fs_text( 'Please follow these steps to complete the upgrade' ),
334
+ 'download-latest-x-version' => _fs_text( 'Download the latest %s version' ),
335
+ 'download-latest-version' => _fs_text( 'Download the latest version' ),
336
+ 'deactivate-free-version' => _fs_text( 'Deactivate the free version' ),
337
+ 'upload-and-activate' => _fs_text( 'Upload and activate the downloaded version' ),
338
+ 'howto-upload-activate' => _fs_text( 'How to upload and activate?' ),
339
+ 'addon-successfully-purchased-message' => _fs_x( '%s Add-on was successfully purchased.',
340
+ '%s - product name, e.g. Facebook add-on was successfully...' ),
341
+ 'addon-successfully-upgraded-message' => _fs_text( 'Your %s Add-on plan was successfully upgraded.' ),
342
+ 'email-verified-message' => _fs_text( 'Your email has been successfully verified - you are AWESOME!' ),
343
+ 'plan-upgraded-message' => _fs_text( 'Your plan was successfully upgraded.' ),
344
+ 'plan-changed-to-x-message' => _fs_text( 'Your plan was successfully changed to %s.' ),
345
+ 'license-expired-blocking-message' => _fs_text( 'Your license has expired. You can still continue using the free plugin forever.' ),
346
+ 'license-cancelled' => _fs_text( 'Your license has been cancelled. If you think it\'s a mistake, please contact support.' ),
347
+ 'trial-started-message' => _fs_text( 'Your trial has been successfully started.' ),
348
+ 'license-activated-message' => _fs_text( 'Your license was successfully activated.' ),
349
+ 'no-active-license-message' => _fs_text( 'It looks like your site currently doesn\'t have an active license.' ),
350
+ 'license-deactivation-message' => _fs_text( 'Your license was successfully deactivated, you are back to the %s plan.' ),
351
+ 'license-deactivation-failed-message' => _fs_text( 'It looks like the license deactivation failed.' ),
352
+ 'license-activation-failed-message' => _fs_text( 'It looks like the license could not be activated.' ),
353
+ 'server-error-message' => _fs_text( 'Error received from the server:' ),
354
+ 'trial-expired-message' => _fs_text( 'Your trial has expired. You can still continue using all our free features.' ),
355
+ 'plan-x-downgraded-message' => _fs_text( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.' ),
356
+ 'plan-downgraded-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.' ),
357
+ 'trial-cancel-no-trial-message' => _fs_text( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)' ),
358
+ 'trial-cancel-message' => _fs_text( 'Your %s free trial was successfully cancelled.' ),
359
+ 'version-x-released' => _fs_x( 'Version %s was released.', '%s - numeric version number' ),
360
+ 'please-download-x' => _fs_text( 'Please download %s.' ),
361
+ 'latest-x-version' => _fs_x( 'the latest %s version here',
362
+ '%s - plan name, as the latest professional version here' ),
363
+ 'trial-x-promotion-message' => _fs_text( 'How do you like %s so far? Test all our %s premium features with a %d-day free trial.' ),
364
+ 'start-free-trial' => _fs_x( 'Start free trial', 'call to action' ),
365
+ 'starting-trial' => _fs_text( 'Starting trial' ),
366
+ 'please-wait' => _fs_text( 'Please wait' ),
367
+ 'trial-cancel-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.' ),
368
+ 'trial-utilized' => _fs_text( 'You already utilized a trial before.' ),
369
+ 'in-trial-mode' => _fs_text( 'You are already running the plugin in a trial mode.' ),
370
+ 'trial-plan-x-not-exist' => _fs_text( 'Plan %s do not exist, therefore, can\'t start a trial.' ),
371
+ 'plan-x-no-trial' => _fs_text( 'Plan %s does not support a trial period.' ),
372
+ 'no-trials' => _fs_text( 'None of the plugin\'s plans supports a trial period.' ),
373
+ 'unexpected-api-error' => _fs_text( 'Unexpected API error. Please contact the plugin\'s author with the following error.' ),
374
+ 'no-commitment-for-x-days' => _fs_text( 'No commitment for %s days - cancel anytime!' ),
375
+ 'license-expired-non-blocking-message' => _fs_text( 'Your license has expired. You can still continue using all the %s features, but you\'ll need to renew your license to continue getting updates and support.' ),
376
+ 'could-not-activate-x' => _fs_text( 'Couldn\'t activate %s.' ),
377
+ 'contact-us-with-error-message' => _fs_text( 'Please contact us with the following message:' ),
378
+ 'plan-did-not-change-message' => _fs_text( 'It looks like you are still on the %s plan. If you did upgrade or change your plan, it\'s probably an issue on our side - sorry.' ),
379
+ 'contact-us-here' => _fs_text( 'Please contact us here' ),
380
+ 'plan-did-not-change-email-message' => _fs_text( 'I have upgraded my account but when I try to Sync the License, the plan remains %s.' ),
381
+ #endregion Admin Notices
382
+ #region Connectivity Issues
383
+ 'connectivity-test-fails-message' => _fs_text( 'From unknown reason, the API connectivity test failed.' ),
384
+ 'connectivity-test-maybe-temporary' => _fs_text( 'It\'s probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?' ),
385
+ 'curl-missing-message' => _fs_text( 'We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server.' ),
386
+ 'cloudflare-blocks-connection-message' => _fs_text( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.' ),
387
+ 'x-requires-access-to-api' => _fs_x( '%s requires an access to our API.',
388
+ 'as pluginX requires an access to our API' ),
389
+ 'squid-blocks-connection-message' => _fs_text( 'It looks like your server is using Squid ACL (access control lists), which blocks the connection.' ),
390
+ 'squid-no-clue-title' => _fs_text( 'I don\'t know what is Squid or ACL, help me!' ),
391
+ 'squid-no-clue-desc' => _fs_text( 'We\'ll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update.' ),
392
+ 'sysadmin-title' => _fs_text( 'I\'m a system administrator' ),
393
+ 'squid-sysadmin-desc' => _fs_text( 'Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again.' ),
394
+ 'curl-missing-no-clue-title' => _fs_text( 'I don\'t know what is cURL or how to install it, help me!' ),
395
+ 'curl-missing-no-clue-desc' => _fs_text( 'We\'ll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update.' ),
396
+ 'curl-missing-sysadmin-desc' => _fs_text( 'Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use \'phpinfo()\'. Once activated, deactivate the plugin and reactivate it back again.' ),
397
+ 'happy-to-resolve-issue-asap' => _fs_text( 'We are sure it\'s an issue on our side and more than happy to resolve it for you ASAP if you give us a chance.' ),
398
+ 'contact-support-before-deactivation' => _fs_text( 'Sorry for the inconvenience and we are here to help if you give us a chance.' ),
399
+ 'fix-issue-title' => _fs_text( 'Yes - I\'m giving you a chance to fix it' ),
400
+ 'fix-issue-desc' => _fs_text( 'We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update.' ),
401
+ 'install-previous-title' => _fs_text( 'Let\'s try your previous version' ),
402
+ 'install-previous-desc' => _fs_text( 'Uninstall this version and install the previous one.' ),
403
+ 'deactivate-plugin-title' => _fs_text( 'That\'s exhausting, please deactivate' ),
404
+ 'deactivate-plugin-desc' => _fs_text( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.' ),
405
+ 'fix-request-sent-message' => _fs_text( 'Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience.' ),
406
+ 'server-blocking-access' => _fs_x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s',
407
+ '%1s - plugin title, %2s - API domain' ),
408
+ 'wrong-authentication-param-message' => _fs_text( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.' ),
409
+ #endregion Connectivity Issues
410
+ #region Change Owner
411
+ 'change-owner-request-sent-x' => _fs_text( 'Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder.' ),
412
+ 'change-owner-request_owner-confirmed' => _fs_text( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.' ),
413
+ 'change-owner-request_candidate-confirmed' => _fs_text( '%s is the new owner of the account.' ),
414
+ #endregion Change Owner
415
+ 'addon-x-cannot-run-without-y' => _fs_x( '%s cannot run without %s.',
416
+ 'addonX cannot run without pluginY' ),
417
+ 'addon-x-cannot-run-without-parent' => _fs_x( '%s cannot run without the plugin.', 'addonX cannot run...' ),
418
+ 'plugin-x-activation-message' => _fs_x( '%s activation was successfully completed.',
419
+ 'pluginX activation was successfully...' ),
420
+ 'features-and-pricing' => _fs_x( 'Features & Pricing', 'Plugin installer section title' ),
421
+ 'free-addon-not-deployed' => _fs_text( 'Add-on must be deployed to WordPress.org or Freemius.' ),
422
+ 'paid-addon-not-deployed' => _fs_text( 'Paid add-on must be deployed to Freemius.' ),
423
+ #--------------------------------------------------------------------------------
424
+ #region Add-On Licensing
425
+ #--------------------------------------------------------------------------------
426
+ 'addon-no-license-message' => _fs_text( '%s is a premium only add-on. You have to purchase a license first before activating the plugin.' ),
427
+ 'addon-trial-cancelled-message' => _fs_text( '%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you\'ll have to purchase a license.' ),
428
+ #endregion
429
+ #--------------------------------------------------------------------------------
430
+ #region Billing Cycles
431
+ #--------------------------------------------------------------------------------
432
+ 'monthly' => _fs_x( 'Monthly', 'as every month' ),
433
+ 'mo' => _fs_x( 'mo', 'as monthly period' ),
434
+ 'annual' => _fs_x( 'Annual', 'as once a year' ),
435
+ 'annually' => _fs_x( 'Annually', 'as once a year' ),
436
+ 'once' => _fs_x( 'Once', 'as once a year' ),
437
+ 'year' => _fs_x( 'year', 'as annual period' ),
438
+ 'lifetime' => _fs_text( 'Lifetime' ),
439
+ 'best' => _fs_x( 'Best', 'e.g. the best product' ),
440
+ 'billed-x' => _fs_x( 'Billed %s', 'e.g. billed monthly' ),
441
+ 'save-x' => _fs_x( 'Save %s', 'as a discount of $5 or 10%' ),
442
+ #endregion Billing Cycles
443
+ 'view-details' => _fs_text( 'View details' ),
444
+ #--------------------------------------------------------------------------------
445
+ #region Trial
446
+ #--------------------------------------------------------------------------------
447
+ 'approve-start-trial' => _fs_x( 'Approve & Start Trial', 'button label' ),
448
+ /* translators: %1$s: Number of trial days; %2$s: Plan name; */
449
+ 'start-trial-prompt-header' => _fs_text( 'You are 1-click away from starting your %1$s-day free trial of the %2$s plan.' ),
450
+ /* translators: %s: Link to freemius.com */
451
+ 'start-trial-prompt-message' => _fs_text( 'For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial.' ),
452
+
453
+ #endregion
454
+ #--------------------------------------------------------------------------------
455
+ #region Billing Details
456
+ #--------------------------------------------------------------------------------
457
+ 'business-name' => _fs_text( 'Business name' ),
458
+ 'tax-vat-id' => _fs_text( 'Tax / VAT ID' ),
459
+ 'address-line-n' => _fs_text( 'Address Line %d' ),
460
+ 'country' => _fs_text( 'Country' ),
461
+ 'select-country' => _fs_text( 'Select Country' ),
462
+ 'city' => _fs_text( 'City' ),
463
+ 'town' => _fs_text( 'Town' ),
464
+ 'state' => _fs_text( 'State' ),
465
+ 'province' => _fs_text( 'Province' ),
466
+ 'zip-postal-code' => _fs_text( 'ZIP / Postal Code' ),
467
+ #endregion
468
+ );
469
+
470
+ /**
471
+ * Localization of the strings in the plugin/theme info dialog box.
472
+ *
473
+ * $fs_module_info_text should ONLY include strings that are not located in $fs_text.
474
+ *
475
+ * @author Vova Feldman (@svovaf)
476
+ * @since 1.2.2
477
+ */
478
+ global $fs_module_info_text;
479
+
480
+ $fs_module_info_text = array(
481
+ 'description' => _fs_x( 'Description', 'Plugin installer section title' ),
482
+ 'installation' => _fs_x( 'Installation', 'Plugin installer section title' ),
483
+ 'faq' => _fs_x( 'FAQ', 'Plugin installer section title' ),
484
+ 'changelog' => _fs_x( 'Changelog', 'Plugin installer section title' ),
485
+ 'reviews' => _fs_x( 'Reviews', 'Plugin installer section title' ),
486
+ 'other_notes' => _fs_x( 'Other Notes', 'Plugin installer section title' ),
487
+ /* translators: %s: 1 or One */
488
+ 'x-star' => _fs_text( '%s star' ),
489
+ /* translators: %s: Number larger than 1 */
490
+ 'x-stars' => _fs_text( '%s stars' ),
491
+ /* translators: %s: 1 or One */
492
+ 'x-rating' => _fs_text( '%s rating' ),
493
+ /* translators: %s: Number larger than 1 */
494
+ 'x-ratings' => _fs_text( '%s ratings' ),
495
+ /* translators: %s: 1 or One (Number of times downloaded) */
496
+ 'x-time' => _fs_text( '%s time' ),
497
+ /* translators: %s: Number of times downloaded */
498
+ 'x-times' => _fs_text( '%s times' ),
499
+ /* translators: %s: # of stars (e.g. 5 stars) */
500
+ 'click-to-reviews' => _fs_text( 'Click to see reviews that provided a rating of %s' ),
501
+ 'last-updated:' => _fs_text( 'Last Updated' ),
502
+ 'requires-wordpress-version:' => _fs_text( 'Requires WordPress Version:' ),
503
+ 'author:' => _fs_x( 'Author:', 'as the plugin author' ),
504
+ 'compatible-up-to:' => _fs_text( 'Compatible up to:' ),
505
+ 'downloaded:' => _fs_text( 'Downloaded:' ),
506
+ 'wp-org-plugin-page' => _fs_text( 'WordPress.org Plugin Page' ),
507
+ 'plugin-homepage' => _fs_text( 'Plugin Homepage' ),
508
+ 'donate-to-plugin' => _fs_text( 'Donate to this plugin' ),
509
+ 'average-rating' => _fs_text( 'Average Rating' ),
510
+ 'based-on-x' => _fs_text( 'based on %s' ),
511
+ 'warning:' => _fs_text( 'Warning:' ),
512
+ 'contributors' => _fs_text( 'Contributors' ),
513
+ 'plugin-install' => _fs_text( 'Plugin Install' ),
514
+ 'not-tested-warning' => _fs_text( 'This plugin has not been tested with your current version of WordPress.' ),
515
+ 'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
516
+ 'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
517
+ 'latest-installed' => _fs_text( 'Latest Version Installed' ),
518
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/pum-sdk/freemius/includes/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/includes/l10n.php ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.2.1.6
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Retrieve the translation of $text.
15
+ *
16
+ * @since 1.2.1.6
17
+ *
18
+ * @param string $text
19
+ *
20
+ * @return string
21
+ */
22
+ function _fs_text( $text ) {
23
+ return translate( $text, 'freemius' );
24
+ }
25
+
26
+ /**
27
+ * Retrieve the translation of $text and escapes it for safe use in an attribute.
28
+ *
29
+ * @since 1.2.1.6
30
+ *
31
+ * @param string $text
32
+ *
33
+ * @return string
34
+ */
35
+ function _fs_esc_attr( $text ) {
36
+ return esc_attr( translate( $text, 'freemius' ) );
37
+ }
38
+
39
+ /**
40
+ * Retrieve the translation of $text and escapes it for safe use in HTML output.
41
+ *
42
+ * @since 1.2.1.6
43
+ *
44
+ * @param string $text
45
+ *
46
+ * @return string
47
+ */
48
+ function _fs_esc_html( $text ) {
49
+ return esc_html( translate( $text, 'freemius' ) );
50
+ }
51
+
52
+ /**
53
+ * Display translated text.
54
+ *
55
+ * @since 1.2.0
56
+ *
57
+ * @param string $text
58
+ */
59
+ function _fs_echo( $text ) {
60
+ echo translate( $text, 'freemius' );
61
+ }
62
+
63
+ /**
64
+ * Display translated text that has been escaped for safe use in an attribute.
65
+ *
66
+ * @since 1.2.1.6
67
+ *
68
+ * @param string $text
69
+ */
70
+ function _fs_esc_attr_echo( $text ) {
71
+ echo esc_attr( translate( $text, 'freemius' ) );
72
+ }
73
+
74
+ /**
75
+ * Display translated text that has been escaped for safe use in HTML output.
76
+ *
77
+ * @since 1.2.1.6
78
+ *
79
+ * @param string $text
80
+ */
81
+ function _fs_esc_html_echo( $text ) {
82
+ echo esc_html( translate( $text, 'freemius' ) );
83
+ }
84
+
85
+ /**
86
+ * Retrieve translated string with gettext context.
87
+ *
88
+ * Quite a few times, there will be collisions with similar translatable text
89
+ * found in more than two places, but with different translated context.
90
+ *
91
+ * By including the context in the pot file, translators can translate the two
92
+ * strings differently.
93
+ *
94
+ * @since 1.2.1.6
95
+ *
96
+ * @param string $text
97
+ * @param string $context
98
+ *
99
+ * @return string
100
+ */
101
+ function _fs_x( $text, $context ) {
102
+ return translate_with_gettext_context( $text, $context, 'freemius' );
103
+ }
104
+
105
+ /**
106
+ * Display translated string with gettext context.
107
+ *
108
+ * @since 1.2.1.6
109
+ *
110
+ * @param string $text
111
+ * @param string $context
112
+ */
113
+ function _fs_ex( $text, $context ) {
114
+ // Avoid misleading Theme Check warning.
115
+ $fn = '_x';
116
+ echo $fn( $text, $context, 'freemius' );
117
+ }
118
+
119
+ /**
120
+ * Translate string with gettext context, and escapes it for safe use in an attribute.
121
+ *
122
+ * @since 1.2.1.6
123
+ *
124
+ * @param string $text
125
+ * @param string $context
126
+ *
127
+ * @return string
128
+ */
129
+ function _fs_esc_attr_x( $text, $context ) {
130
+ return esc_attr( translate_with_gettext_context( $text, $context, 'freemius' ) );
131
+ }
132
+
133
+ /**
134
+ * Translate string with gettext context, and escapes it for safe use in HTML output.
135
+ *
136
+ * @since 2.9.0
137
+ *
138
+ * @param string $text
139
+ * @param string $context
140
+ *
141
+ * @return string
142
+ */
143
+ function _fs_esc_html_x( $text, $context ) {
144
+ return esc_html( translate_with_gettext_context( $text, $context, 'freemius' ) );
145
+ }
146
+
147
+ /**
148
+ * Translates and retrieves the singular or plural form based on the supplied number.
149
+ *
150
+ * @since 1.2.1.6
151
+ *
152
+ * @param string $single
153
+ * @param string $plural
154
+ * @param int $number
155
+ *
156
+ * @return string
157
+ */
158
+ function _fs_n( $single, $plural, $number ) {
159
+ $translations = get_translations_for_domain( 'freemius' );
160
+ $translation = $translations->translate_plural( $single, $plural, $number );
161
+
162
+ /**
163
+ * Filters the singular or plural form of a string.
164
+ *
165
+ * @since WP 2.2.0
166
+ *
167
+ * @param string $translation
168
+ * @param string $single
169
+ * @param string $plural
170
+ * @param string $number
171
+ * @param string $domain
172
+ */
173
+ return apply_filters( 'ngettext', $translation, $single, $plural, $number, 'freemius' );
174
+ }
175
+
176
+ /**
177
+ * Translates and retrieves the singular or plural form based on the supplied number, with gettext context.
178
+ *
179
+ * @since 1.2.1.6
180
+ *
181
+ * @param string $single
182
+ * @param string $plural
183
+ * @param int $number
184
+ * @param string $context
185
+ *
186
+ * @return string
187
+ */
188
+ function _fs_nx($single, $plural, $number, $context ) {
189
+ $translations = get_translations_for_domain( 'freemius' );
190
+ $translation = $translations->translate_plural( $single, $plural, $number, $context );
191
+
192
+ /**
193
+ * Filters the singular or plural form of a string with gettext context.
194
+ *
195
+ * @since WP 3.0
196
+ *
197
+ * @param string $translation
198
+ * @param string $single
199
+ * @param string $plural
200
+ * @param string $number
201
+ * @param string $context
202
+ * @param string $domain
203
+ */
204
+ return apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, 'freemius' );
205
+ }
206
+
207
+ /**
208
+ * Registers plural strings in POT file, but does not translate them.
209
+ *
210
+ * Used when you want to keep structures with translatable plural
211
+ * strings and use them later when the number is known.
212
+ *
213
+ * @since 1.2.1.6
214
+ *
215
+ * @param string $singular
216
+ * @param string $plural
217
+ *
218
+ * @return array
219
+ */
220
+ function _fs_n_noop( $singular, $plural ) {
221
+ return array(
222
+ 'singular' => $singular,
223
+ 'plural' => $plural,
224
+ 'context' => null,
225
+ 'domain' => 'freemius'
226
+ );
227
+ }
228
+
229
+ /**
230
+ * Registers plural strings with gettext context in POT file, but does not translate them.
231
+ *
232
+ * Used when you want to keep structures with translatable plural
233
+ * strings and use them later when the number is known.
234
+ *
235
+ * @since 1.2.1.6
236
+ *
237
+ * @param string $singular
238
+ * @param string $plural
239
+ * @param string $context
240
+ *
241
+ * @return array
242
+ */
243
+ function _fs_nx_noop( $singular, $plural, $context ) {
244
+ return array(
245
+ 'singular' => $singular,
246
+ 'plural' => $plural,
247
+ 'context' => $context,
248
+ 'domain' => 'freemius'
249
+ );
250
+ }
includes/pum-sdk/freemius/includes/managers/class-fs-admin-menu-manager.php CHANGED
@@ -120,7 +120,7 @@
120
  * @param bool $is_addon
121
  */
122
  function init( $menu, $is_addon = false ) {
123
- $this->_menu_slug = $menu['slug'];
124
 
125
  $this->_default_submenu_items = array();
126
  // @deprecated
@@ -219,16 +219,6 @@
219
  return ! $this->_is_top_level && is_string( $this->_parent_slug );
220
  }
221
 
222
- /**
223
- * @author Vova Feldman (@svovaf)
224
- * @since 1.1.3
225
- *
226
- * @return string
227
- */
228
- // function slug(){
229
- // return $this->_menu_slug;
230
- // }
231
-
232
  /**
233
  * @author Vova Feldman (@svovaf)
234
  * @since 1.1.3
@@ -264,6 +254,18 @@
264
  $this->_plugin_slug ) . ( empty( $page ) ? '' : ( '-' . $page ) );
265
  }
266
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  /**
268
  * @author Vova Feldman (@svovaf)
269
  * @since 1.1.3
@@ -453,6 +455,49 @@
453
  );
454
  }
455
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
  /**
457
  * Remove all sub-menu items.
458
  *
@@ -554,17 +599,36 @@
554
  * @param string $class
555
  */
556
  function add_counter_to_menu_item( $counter = 1, $class = '' ) {
557
- global $menu;
558
-
559
- // Find main menu item.
560
- $found_menu = $this->find_top_level_menu();
561
-
562
- if ( false === $menu ) {
563
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
564
  }
565
-
566
- // Override menu label.
567
- $menu[ $found_menu['position'] ][0] = $found_menu['menu'][0] . ' <span class="update-plugins ' . $class . ' count-' . $counter . '"><span>' . $counter . '</span></span>';
568
  }
569
 
570
  #endregion Top level menu Override
120
  * @param bool $is_addon
121
  */
122
  function init( $menu, $is_addon = false ) {
123
+ $this->_menu_slug = ! empty( $menu['slug'] ) ? $menu['slug'] : null;
124
 
125
  $this->_default_submenu_items = array();
126
  // @deprecated
219
  return ! $this->_is_top_level && is_string( $this->_parent_slug );
220
  }
221
 
 
 
 
 
 
 
 
 
 
 
222
  /**
223
  * @author Vova Feldman (@svovaf)
224
  * @since 1.1.3
254
  $this->_plugin_slug ) . ( empty( $page ) ? '' : ( '-' . $page ) );
255
  }
256
 
257
+ /**
258
+ * Check if module has a menu slug set.
259
+ *
260
+ * @author Vova Feldman (@svovaf)
261
+ * @since 1.2.1.6
262
+ *
263
+ * @return bool
264
+ */
265
+ function has_menu_slug() {
266
+ return ! empty( $this->_menu_slug );
267
+ }
268
+
269
  /**
270
  * @author Vova Feldman (@svovaf)
271
  * @since 1.1.3
455
  );
456
  }
457
 
458
+ /**
459
+ * Find plugin's admin dashboard main submenu item.
460
+ *
461
+ * @author Vova Feldman (@svovaf)
462
+ * @since 1.2.1.6
463
+ *
464
+ * @return array|false
465
+ */
466
+ private function find_main_submenu() {
467
+ global $submenu;
468
+
469
+ $top_level_menu_slug = $this->get_top_level_menu_slug();
470
+
471
+ if ( ! isset( $submenu[ $top_level_menu_slug ] ) ) {
472
+ return false;
473
+ }
474
+
475
+ $submenu_slug = $this->get_raw_slug();
476
+
477
+ $position = - 1;
478
+ $found_submenu = false;
479
+
480
+ $hook_name = get_plugin_page_hookname( $submenu_slug, '' );
481
+
482
+ foreach ( $submenu[ $top_level_menu_slug ] as $pos => $sub ) {
483
+ if ( $submenu_slug === $sub[2] ) {
484
+ $position = $pos;
485
+ $found_submenu = $sub;
486
+ }
487
+ }
488
+
489
+ if ( false === $found_submenu ) {
490
+ return false;
491
+ }
492
+
493
+ return array(
494
+ 'menu' => $found_submenu,
495
+ 'parent_slug' => $top_level_menu_slug,
496
+ 'position' => $position,
497
+ 'hook_name' => $hook_name
498
+ );
499
+ }
500
+
501
  /**
502
  * Remove all sub-menu items.
503
  *
599
  * @param string $class
600
  */
601
  function add_counter_to_menu_item( $counter = 1, $class = '' ) {
602
+ global $menu, $submenu;
603
+
604
+ $mask = '%s <span class="update-plugins %s count-%3$s" aria-hidden="true"><span>%3$s<span class="screen-reader-text">%3$s notifications</span></span></span>';
605
+
606
+ if ( $this->_is_top_level ) {
607
+ // Find main menu item.
608
+ $found_menu = $this->find_top_level_menu();
609
+
610
+ if ( false !== $found_menu ) {
611
+ // Override menu label.
612
+ $menu[ $found_menu['position'] ][0] = sprintf(
613
+ $mask,
614
+ $found_menu['menu'][0],
615
+ $class,
616
+ $counter
617
+ );
618
+ }
619
+ } else {
620
+ $found_submenu = $this->find_main_submenu();
621
+
622
+ if ( false !== $found_submenu ) {
623
+ // Override menu label.
624
+ $submenu[ $found_submenu['parent_slug'] ][ $found_submenu['position'] ][0] = sprintf(
625
+ $mask,
626
+ $found_submenu['menu'][0],
627
+ $class,
628
+ $counter
629
+ );
630
+ }
631
  }
 
 
 
632
  }
633
 
634
  #endregion Top level menu Override
includes/pum-sdk/freemius/includes/managers/class-fs-admin-notice-manager.php CHANGED
@@ -1,313 +1,313 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
- * @since 1.0.7
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_Admin_Notice_Manager {
14
- /**
15
- * @var string
16
- */
17
- protected $_slug;
18
- /**
19
- * @var string
20
- */
21
- protected $_title;
22
- /**
23
- * @var array[]
24
- */
25
- private $_admin_messages = array();
26
- /**
27
- * @var FS_Key_Value_Storage
28
- */
29
- private $_sticky_storage;
30
- /**
31
- * @var FS_Plugin_Manager[]
32
- */
33
- private static $_instances = array();
34
- /**
35
- * @var FS_Logger
36
- */
37
- protected $_logger;
38
-
39
- /**
40
- * @param string $slug
41
- * @param string $title
42
- *
43
- * @return FS_Admin_Notice_Manager
44
- */
45
- static function instance( $slug, $title = '' ) {
46
- if ( ! isset( self::$_instances[ $slug ] ) ) {
47
- self::$_instances[ $slug ] = new FS_Admin_Notice_Manager( $slug, $title );
48
- }
49
-
50
- return self::$_instances[ $slug ];
51
- }
52
-
53
- protected function __construct( $slug, $title = '' ) {
54
- $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $slug . '_data', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
55
-
56
- $this->_slug = $slug;
57
- $this->_title = ! empty( $title ) ? $title : '';
58
- $this->_sticky_storage = FS_Key_Value_Storage::instance( 'admin_notices', $this->_slug );
59
-
60
- if ( is_admin() ) {
61
- if ( 0 < count( $this->_sticky_storage ) ) {
62
- // If there are sticky notices for the current slug, add a callback
63
- // to the AJAX action that handles message dismiss.
64
- add_action( "wp_ajax_fs_dismiss_notice_action_{$slug}", array(
65
- &$this,
66
- 'dismiss_notice_ajax_callback'
67
- ) );
68
-
69
- foreach ( $this->_sticky_storage as $id => $msg ) {
70
- // Add admin notice.
71
- $this->add(
72
- $msg['message'],
73
- $msg['title'],
74
- $msg['type'],
75
- true,
76
- $msg['all'],
77
- $msg['id'],
78
- false
79
- );
80
- }
81
- }
82
- }
83
- }
84
-
85
- /**
86
- * Remove sticky message by ID.
87
- *
88
- * @author Vova Feldman (@svovaf)
89
- * @since 1.0.7
90
- *
91
- */
92
- function dismiss_notice_ajax_callback() {
93
- $this->_sticky_storage->remove( $_POST['message_id'] );
94
- wp_die();
95
- }
96
-
97
- /**
98
- * Rendered sticky message dismiss JavaScript.
99
- *
100
- * @author Vova Feldman (@svovaf)
101
- * @since 1.0.7
102
- */
103
- static function _add_sticky_dismiss_javascript() {
104
- $params = array();
105
- fs_require_once_template( 'sticky-admin-notice-js.php', $params );
106
- }
107
-
108
- private static $_added_sticky_javascript = false;
109
-
110
- /**
111
- * Hook to the admin_footer to add sticky message dismiss JavaScript handler.
112
- *
113
- * @author Vova Feldman (@svovaf)
114
- * @since 1.0.7
115
- */
116
- private static function has_sticky_messages() {
117
- if ( ! self::$_added_sticky_javascript ) {
118
- add_action( 'admin_footer', array( 'FS_Admin_Notice_Manager', '_add_sticky_dismiss_javascript' ) );
119
- }
120
- }
121
-
122
- /**
123
- * Handle admin_notices by printing the admin messages stacked in the queue.
124
- *
125
- * @author Vova Feldman (@svovaf)
126
- * @since 1.0.4
127
- *
128
- */
129
- function _admin_notices_hook() {
130
- $notice_type = 'admin_notices';
131
-
132
- if ( function_exists( 'current_user_can' ) &&
133
- ! current_user_can( 'manage_options' )
134
- ) {
135
- // Only show messages to admins.
136
- return;
137
- }
138
-
139
- if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
140
- return;
141
- }
142
-
143
- foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
144
- fs_require_template( 'admin-notice.php', $msg );
145
-
146
- if ( $msg['sticky'] ) {
147
- self::has_sticky_messages();
148
- }
149
- }
150
- }
151
-
152
- /**
153
- * Handle all_admin_notices by printing the admin messages stacked in the queue.
154
- *
155
- * @author Vova Feldman (@svovaf)
156
- * @since 1.0.4
157
- *
158
- */
159
- function _all_admin_notices_hook() {
160
- $notice_type = 'all_admin_notices';
161
-
162
- if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
163
- return;
164
- }
165
-
166
- foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
167
- fs_require_template( 'all-admin-notice.php', $msg );
168
- }
169
- }
170
-
171
- /**
172
- * Enqueue common stylesheet to style admin notice.
173
- *
174
- * @author Vova Feldman (@svovaf)
175
- * @since 1.0.7
176
- */
177
- function _enqueue_styles() {
178
- fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
179
- }
180
-
181
- /**
182
- * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
183
- *
184
- * @author Vova Feldman (@svovaf)
185
- * @since 1.0.4
186
- *
187
- * @param string $message
188
- * @param string $title
189
- * @param string $type
190
- * @param bool $is_sticky
191
- * @param bool $all_admin
192
- * @param string $id Message ID
193
- * @param bool $store_if_sticky
194
- *
195
- * @uses add_action()
196
- */
197
- function add( $message, $title = '', $type = 'success', $is_sticky = false, $all_admin = false, $id = '', $store_if_sticky = true ) {
198
- $key = ( $all_admin ? 'all_admin_notices' : 'admin_notices' );
199
-
200
- if ( ! isset( $this->_admin_messages[ $key ] ) ) {
201
- $this->_admin_messages[ $key ] = array();
202
-
203
- add_action( $key, array( &$this, "_{$key}_hook" ) );
204
- add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_styles' ) );
205
-
206
- }
207
-
208
- if ( '' === $id ) {
209
- $id = md5( $title . ' ' . $message . ' ' . $type );
210
- }
211
-
212
- $message_object = array(
213
- 'message' => $message,
214
- 'title' => $title,
215
- 'type' => $type,
216
- 'sticky' => $is_sticky,
217
- 'id' => $id,
218
- 'all' => $all_admin,
219
- 'slug' => $this->_slug,
220
- 'plugin' => $this->_title,
221
- );
222
-
223
- if ( $is_sticky && $store_if_sticky ) {
224
- $this->_sticky_storage->{$id} = $message_object;
225
- }
226
-
227
- $this->_admin_messages[ $key ][ $id ] = $message_object;
228
- }
229
-
230
- /**
231
- * @author Vova Feldman (@svovaf)
232
- * @since 1.0.7
233
- *
234
- * @param string|string[] $ids
235
- */
236
- function remove_sticky( $ids ) {
237
- if ( ! is_array( $ids ) ) {
238
- $ids = array( $ids );
239
- }
240
-
241
- foreach ( $ids as $id ) {
242
- // Remove from sticky storage.
243
- $this->_sticky_storage->remove( $id );
244
-
245
- // Remove from current admin messages.
246
- if ( isset( $this->_admin_messages['all_admin_notices'] ) && isset( $this->_admin_messages['all_admin_notices'][ $id ] ) ) {
247
- unset( $this->_admin_messages['all_admin_notices'][ $id ] );
248
- }
249
- if ( isset( $this->_admin_messages['admin_notices'] ) && isset( $this->_admin_messages['admin_notices'][ $id ] ) ) {
250
- unset( $this->_admin_messages['admin_notices'][ $id ] );
251
- }
252
- }
253
- }
254
-
255
- /**
256
- * Check if sticky message exists by id.
257
- *
258
- * @author Vova Feldman (@svovaf)
259
- * @since 1.0.9
260
- *
261
- * @param $id
262
- *
263
- * @return bool
264
- */
265
- function has_sticky( $id ) {
266
- return isset( $this->_sticky_storage[ $id ] );
267
- }
268
-
269
- /**
270
- * Adds sticky admin notification.
271
- *
272
- * @author Vova Feldman (@svovaf)
273
- * @since 1.0.7
274
- *
275
- * @param string $message
276
- * @param string $id Message ID
277
- * @param string $title
278
- * @param string $type
279
- * @param bool $all_admin
280
- */
281
- function add_sticky( $message, $id, $title = '', $type = 'success', $all_admin = false ) {
282
- $message = fs_apply_filter( $this->_slug, "sticky_message_{$id}", $message );
283
- $title = fs_apply_filter( $this->_slug, "sticky_title_{$id}", $title );
284
-
285
- $this->add( $message, $title, $type, true, $all_admin, $id );
286
- }
287
-
288
- /**
289
- * Clear all sticky messages.
290
- *
291
- * @author Vova Feldman (@svovaf)
292
- * @since 1.0.8
293
- */
294
- function clear_all_sticky() {
295
- $this->_sticky_storage->clear_all();
296
- }
297
-
298
- /**
299
- * Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
300
- *
301
- * @author Vova Feldman (@svovaf)
302
- * @since 1.0.4
303
- *
304
- * @param string $message
305
- * @param string $title
306
- * @param string $type
307
- * @param bool $is_sticky
308
- * @param string $id Message ID
309
- */
310
- function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
311
- $this->add( $message, $title, $type, $is_sticky, true, $id );
312
- }
313
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.0.7
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Admin_Notice_Manager {
14
+ /**
15
+ * @var string
16
+ */
17
+ protected $_slug;
18
+ /**
19
+ * @var string
20
+ */
21
+ protected $_title;
22
+ /**
23
+ * @var array[]
24
+ */
25
+ private $_admin_messages = array();
26
+ /**
27
+ * @var FS_Key_Value_Storage
28
+ */
29
+ private $_sticky_storage;
30
+ /**
31
+ * @var FS_Plugin_Manager[]
32
+ */
33
+ private static $_instances = array();
34
+ /**
35
+ * @var FS_Logger
36
+ */
37
+ protected $_logger;
38
+
39
+ /**
40
+ * @param string $slug
41
+ * @param string $title
42
+ *
43
+ * @return FS_Admin_Notice_Manager
44
+ */
45
+ static function instance( $slug, $title = '' ) {
46
+ if ( ! isset( self::$_instances[ $slug ] ) ) {
47
+ self::$_instances[ $slug ] = new FS_Admin_Notice_Manager( $slug, $title );
48
+ }
49
+
50
+ return self::$_instances[ $slug ];
51
+ }
52
+
53
+ protected function __construct( $slug, $title = '' ) {
54
+ $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $slug . '_data', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
55
+
56
+ $this->_slug = $slug;
57
+ $this->_title = ! empty( $title ) ? $title : '';
58
+ $this->_sticky_storage = FS_Key_Value_Storage::instance( 'admin_notices', $this->_slug );
59
+
60
+ if ( is_admin() ) {
61
+ if ( 0 < count( $this->_sticky_storage ) ) {
62
+ // If there are sticky notices for the current slug, add a callback
63
+ // to the AJAX action that handles message dismiss.
64
+ add_action( "wp_ajax_fs_dismiss_notice_action_{$slug}", array(
65
+ &$this,
66
+ 'dismiss_notice_ajax_callback'
67
+ ) );
68
+
69
+ foreach ( $this->_sticky_storage as $id => $msg ) {
70
+ // Add admin notice.
71
+ $this->add(
72
+ $msg['message'],
73
+ $msg['title'],
74
+ $msg['type'],
75
+ true,
76
+ $msg['all'],
77
+ $msg['id'],
78
+ false
79
+ );
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Remove sticky message by ID.
87
+ *
88
+ * @author Vova Feldman (@svovaf)
89
+ * @since 1.0.7
90
+ *
91
+ */
92
+ function dismiss_notice_ajax_callback() {
93
+ $this->_sticky_storage->remove( $_POST['message_id'] );
94
+ wp_die();
95
+ }
96
+
97
+ /**
98
+ * Rendered sticky message dismiss JavaScript.
99
+ *
100
+ * @author Vova Feldman (@svovaf)
101
+ * @since 1.0.7
102
+ */
103
+ static function _add_sticky_dismiss_javascript() {
104
+ $params = array();
105
+ fs_require_once_template( 'sticky-admin-notice-js.php', $params );
106
+ }
107
+
108
+ private static $_added_sticky_javascript = false;
109
+
110
+ /**
111
+ * Hook to the admin_footer to add sticky message dismiss JavaScript handler.
112
+ *
113
+ * @author Vova Feldman (@svovaf)
114
+ * @since 1.0.7
115
+ */
116
+ private static function has_sticky_messages() {
117
+ if ( ! self::$_added_sticky_javascript ) {
118
+ add_action( 'admin_footer', array( 'FS_Admin_Notice_Manager', '_add_sticky_dismiss_javascript' ) );
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Handle admin_notices by printing the admin messages stacked in the queue.
124
+ *
125
+ * @author Vova Feldman (@svovaf)
126
+ * @since 1.0.4
127
+ *
128
+ */
129
+ function _admin_notices_hook() {
130
+ $notice_type = 'admin_notices';
131
+
132
+ if ( function_exists( 'current_user_can' ) &&
133
+ ! current_user_can( 'manage_options' )
134
+ ) {
135
+ // Only show messages to admins.
136
+ return;
137
+ }
138
+
139
+ if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
140
+ return;
141
+ }
142
+
143
+ foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
144
+ fs_require_template( 'admin-notice.php', $msg );
145
+
146
+ if ( $msg['sticky'] ) {
147
+ self::has_sticky_messages();
148
+ }
149
+ }
150
+ }
151
+
152
+ /**
153
+ * Handle all_admin_notices by printing the admin messages stacked in the queue.
154
+ *
155
+ * @author Vova Feldman (@svovaf)
156
+ * @since 1.0.4
157
+ *
158
+ */
159
+ function _all_admin_notices_hook() {
160
+ $notice_type = 'all_admin_notices';
161
+
162
+ if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
163
+ return;
164
+ }
165
+
166
+ foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
167
+ fs_require_template( 'all-admin-notice.php', $msg );
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Enqueue common stylesheet to style admin notice.
173
+ *
174
+ * @author Vova Feldman (@svovaf)
175
+ * @since 1.0.7
176
+ */
177
+ function _enqueue_styles() {
178
+ fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
179
+ }
180
+
181
+ /**
182
+ * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
183
+ *
184
+ * @author Vova Feldman (@svovaf)
185
+ * @since 1.0.4
186
+ *
187
+ * @param string $message
188
+ * @param string $title
189
+ * @param string $type
190
+ * @param bool $is_sticky
191
+ * @param bool $all_admin
192
+ * @param string $id Message ID
193
+ * @param bool $store_if_sticky
194
+ *
195
+ * @uses add_action()
196
+ */
197
+ function add( $message, $title = '', $type = 'success', $is_sticky = false, $all_admin = false, $id = '', $store_if_sticky = true ) {
198
+ $key = ( $all_admin ? 'all_admin_notices' : 'admin_notices' );
199
+
200
+ if ( ! isset( $this->_admin_messages[ $key ] ) ) {
201
+ $this->_admin_messages[ $key ] = array();
202
+
203
+ add_action( $key, array( &$this, "_{$key}_hook" ) );
204
+ add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_styles' ) );
205
+
206
+ }
207
+
208
+ if ( '' === $id ) {
209
+ $id = md5( $title . ' ' . $message . ' ' . $type );
210
+ }
211
+
212
+ $message_object = array(
213
+ 'message' => $message,
214
+ 'title' => $title,
215
+ 'type' => $type,
216
+ 'sticky' => $is_sticky,
217
+ 'id' => $id,
218
+ 'all' => $all_admin,
219
+ 'slug' => $this->_slug,
220
+ 'plugin' => $this->_title,
221
+ );
222
+
223
+ if ( $is_sticky && $store_if_sticky ) {
224
+ $this->_sticky_storage->{$id} = $message_object;
225
+ }
226
+
227
+ $this->_admin_messages[ $key ][ $id ] = $message_object;
228
+ }
229
+
230
+ /**
231
+ * @author Vova Feldman (@svovaf)
232
+ * @since 1.0.7
233
+ *
234
+ * @param string|string[] $ids
235
+ */
236
+ function remove_sticky( $ids ) {
237
+ if ( ! is_array( $ids ) ) {
238
+ $ids = array( $ids );
239
+ }
240
+
241
+ foreach ( $ids as $id ) {
242
+ // Remove from sticky storage.
243
+ $this->_sticky_storage->remove( $id );
244
+
245
+ // Remove from current admin messages.
246
+ if ( isset( $this->_admin_messages['all_admin_notices'] ) && isset( $this->_admin_messages['all_admin_notices'][ $id ] ) ) {
247
+ unset( $this->_admin_messages['all_admin_notices'][ $id ] );
248
+ }
249
+ if ( isset( $this->_admin_messages['admin_notices'] ) && isset( $this->_admin_messages['admin_notices'][ $id ] ) ) {
250
+ unset( $this->_admin_messages['admin_notices'][ $id ] );
251
+ }
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Check if sticky message exists by id.
257
+ *
258
+ * @author Vova Feldman (@svovaf)
259
+ * @since 1.0.9
260
+ *
261
+ * @param $id
262
+ *
263
+ * @return bool
264
+ */
265
+ function has_sticky( $id ) {
266
+ return isset( $this->_sticky_storage[ $id ] );
267
+ }
268
+
269
+ /**
270
+ * Adds sticky admin notification.
271
+ *
272
+ * @author Vova Feldman (@svovaf)
273
+ * @since 1.0.7
274
+ *
275
+ * @param string $message
276
+ * @param string $id Message ID
277
+ * @param string $title
278
+ * @param string $type
279
+ * @param bool $all_admin
280
+ */
281
+ function add_sticky( $message, $id, $title = '', $type = 'success', $all_admin = false ) {
282
+ $message = fs_apply_filter( $this->_slug, "sticky_message_{$id}", $message );
283
+ $title = fs_apply_filter( $this->_slug, "sticky_title_{$id}", $title );
284
+
285
+ $this->add( $message, $title, $type, true, $all_admin, $id );
286
+ }
287
+
288
+ /**
289
+ * Clear all sticky messages.
290
+ *
291
+ * @author Vova Feldman (@svovaf)
292
+ * @since 1.0.8
293
+ */
294
+ function clear_all_sticky() {
295
+ $this->_sticky_storage->clear_all();
296
+ }
297
+
298
+ /**
299
+ * Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
300
+ *
301
+ * @author Vova Feldman (@svovaf)
302
+ * @since 1.0.4
303
+ *
304
+ * @param string $message
305
+ * @param string $title
306
+ * @param string $type
307
+ * @param bool $is_sticky
308
+ * @param string $id Message ID
309
+ */
310
+ function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
311
+ $this->add( $message, $title, $type, $is_sticky, true, $id );
312
+ }
313
  }
includes/pum-sdk/freemius/includes/managers/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
7
- class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
8
- }
9
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
7
+ class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
8
+ }
9
  }
includes/pum-sdk/freemius/includes/sdk/Exceptions/EmptyArgumentException.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
7
- class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
8
- }
9
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
7
+ class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
8
+ }
9
  }
includes/pum-sdk/freemius/includes/sdk/Exceptions/Exception.php CHANGED
@@ -1,74 +1,74 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_Exception' ) ) {
3
- /**
4
- * Thrown when an API call returns an exception.
5
- *
6
- */
7
- class Freemius_Exception extends Exception {
8
- protected $_result;
9
- protected $_type;
10
- protected $_code;
11
-
12
- /**
13
- * Make a new API Exception with the given result.
14
- *
15
- * @param array $result The result from the API server.
16
- */
17
- public function __construct( $result ) {
18
- $this->_result = $result;
19
-
20
- $code = 0;
21
- $message = 'Unknown error, please check GetResult().';
22
- $type = '';
23
-
24
- if ( isset( $result['error'] ) && is_array( $result['error'] ) ) {
25
- if ( isset( $result['error']['code'] ) ) {
26
- $code = $result['error']['code'];
27
- }
28
- if ( isset( $result['error']['message'] ) ) {
29
- $message = $result['error']['message'];
30
- }
31
- if ( isset( $result['error']['type'] ) ) {
32
- $type = $result['error']['type'];
33
- }
34
- }
35
-
36
- $this->_type = $type;
37
- $this->_code = $code;
38
-
39
- parent::__construct( $message, is_numeric( $code ) ? $code : 0 );
40
- }
41
-
42
- /**
43
- * Return the associated result object returned by the API server.
44
- *
45
- * @return array The result from the API server
46
- */
47
- public function getResult() {
48
- return $this->_result;
49
- }
50
-
51
- public function getStringCode() {
52
- return $this->_code;
53
- }
54
-
55
- public function getType() {
56
- return $this->_type;
57
- }
58
-
59
- /**
60
- * To make debugging easier.
61
- *
62
- * @return string The string representation of the error
63
- */
64
- public function __toString() {
65
- $str = $this->getType() . ': ';
66
-
67
- if ( $this->code != 0 ) {
68
- $str .= $this->getStringCode() . ': ';
69
- }
70
-
71
- return $str . $this->getMessage();
72
- }
73
- }
74
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_Exception' ) ) {
3
+ /**
4
+ * Thrown when an API call returns an exception.
5
+ *
6
+ */
7
+ class Freemius_Exception extends Exception {
8
+ protected $_result;
9
+ protected $_type;
10
+ protected $_code;
11
+
12
+ /**
13
+ * Make a new API Exception with the given result.
14
+ *
15
+ * @param array $result The result from the API server.
16
+ */
17
+ public function __construct( $result ) {
18
+ $this->_result = $result;
19
+
20
+ $code = 0;
21
+ $message = 'Unknown error, please check GetResult().';
22
+ $type = '';
23
+
24
+ if ( isset( $result['error'] ) && is_array( $result['error'] ) ) {
25
+ if ( isset( $result['error']['code'] ) ) {
26
+ $code = $result['error']['code'];
27
+ }
28
+ if ( isset( $result['error']['message'] ) ) {
29
+ $message = $result['error']['message'];
30
+ }
31
+ if ( isset( $result['error']['type'] ) ) {
32
+ $type = $result['error']['type'];
33
+ }
34
+ }
35
+
36
+ $this->_type = $type;
37
+ $this->_code = $code;
38
+
39
+ parent::__construct( $message, is_numeric( $code ) ? $code : 0 );
40
+ }
41
+
42
+ /**
43
+ * Return the associated result object returned by the API server.
44
+ *
45
+ * @return array The result from the API server
46
+ */
47
+ public function getResult() {
48
+ return $this->_result;
49
+ }
50
+
51
+ public function getStringCode() {
52
+ return $this->_code;
53
+ }
54
+
55
+ public function getType() {
56
+ return $this->_type;
57
+ }
58
+
59
+ /**
60
+ * To make debugging easier.
61
+ *
62
+ * @return string The string representation of the error
63
+ */
64
+ public function __toString() {
65
+ $str = $this->getType() . ': ';
66
+
67
+ if ( $this->code != 0 ) {
68
+ $str .= $this->getStringCode() . ': ';
69
+ }
70
+
71
+ return $str . $this->getMessage();
72
+ }
73
+ }
74
  }
includes/pum-sdk/freemius/includes/sdk/Exceptions/InvalidArgumentException.php CHANGED
@@ -1,8 +1,8 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_Exception' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
- class Freemius_InvalidArgumentException extends Freemius_Exception { }
8
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_Exception' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
+ class Freemius_InvalidArgumentException extends Freemius_Exception { }
8
  }
includes/pum-sdk/freemius/includes/sdk/Exceptions/OAuthException.php CHANGED
@@ -1,12 +1,12 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_Exception' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_OAuthException' ) ) {
7
- class Freemius_OAuthException extends Freemius_Exception {
8
- public function __construct( $pResult ) {
9
- parent::__construct( $pResult );
10
- }
11
- }
12
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_Exception' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_OAuthException' ) ) {
7
+ class Freemius_OAuthException extends Freemius_Exception {
8
+ public function __construct( $pResult ) {
9
+ parent::__construct( $pResult );
10
+ }
11
+ }
12
  }
includes/pum-sdk/freemius/includes/sdk/Exceptions/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/includes/sdk/Freemius.php CHANGED
@@ -1,583 +1,583 @@
1
- <?php
2
- /**
3
- * Copyright 2014 Freemius, Inc.
4
- *
5
- * Licensed under the GPL v2 (the "License"); you may
6
- * not use this file except in compliance with the License. You may obtain
7
- * a copy of the License at
8
- *
9
- * http://choosealicense.com/licenses/gpl-v2/
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
- * License for the specific language governing permissions and limitations
15
- * under the License.
16
- */
17
-
18
- require_once( dirname( __FILE__ ) . '/FreemiusBase.php' );
19
-
20
- if ( ! defined( 'FS_SDK__USER_AGENT' ) ) {
21
- define( 'FS_SDK__USER_AGENT', 'fs-php-' . Freemius_Api_Base::VERSION );
22
- }
23
-
24
- if ( ! defined( 'FS_SDK__SIMULATE_NO_CURL' ) ) {
25
- define( 'FS_SDK__SIMULATE_NO_CURL', false );
26
- }
27
-
28
- if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
29
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
30
- }
31
-
32
- if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
33
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
34
- }
35
-
36
- if ( ! defined( 'FS_SDK__HAS_CURL' ) ) {
37
- define( 'FS_SDK__HAS_CURL', ! FS_SDK__SIMULATE_NO_CURL && function_exists( 'curl_version' ) );
38
- }
39
-
40
- if ( ! FS_SDK__HAS_CURL ) {
41
- $curl_version = array( 'version' => '7.0.0' );
42
- } else {
43
- $curl_version = curl_version();
44
- }
45
-
46
- if ( ! defined( 'FS_API__PROTOCOL' ) ) {
47
- define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' );
48
- }
49
-
50
- if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
51
- define( 'FS_API__LOGGER_ON', false );
52
- }
53
-
54
- if ( ! defined( 'FS_API__ADDRESS' ) ) {
55
- define( 'FS_API__ADDRESS', '://api.freemius.com' );
56
- }
57
- if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
58
- define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
59
- }
60
-
61
- if ( class_exists( 'Freemius_Api' ) ) {
62
- return;
63
- }
64
-
65
- class Freemius_Api extends Freemius_Api_Base {
66
- private static $_logger = array();
67
-
68
- /**
69
- * @param string $pScope 'app', 'developer', 'user' or 'install'.
70
- * @param number $pID Element's id.
71
- * @param string $pPublic Public key.
72
- * @param string|bool $pSecret Element's secret key.
73
- * @param bool $pSandbox Whether or not to run API in sandbox mode.
74
- */
75
- public function __construct( $pScope, $pID, $pPublic, $pSecret = false, $pSandbox = false ) {
76
- // If secret key not provided, use public key encryption.
77
- if ( is_bool( $pSecret ) ) {
78
- $pSecret = $pPublic;
79
- }
80
-
81
- parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
82
- }
83
-
84
- public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
85
- $address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
86
-
87
- if ( ':' === $address[0] ) {
88
- $address = self::$_protocol . $address;
89
- }
90
-
91
- return $address . $pCanonizedPath;
92
- }
93
-
94
- #region Servers Clock Diff ------------------------------------------------------
95
-
96
- /**
97
- * @var int Clock diff in seconds between current server to API server.
98
- */
99
- private static $_clock_diff = 0;
100
-
101
- /**
102
- * Set clock diff for all API calls.
103
- *
104
- * @since 1.0.3
105
- *
106
- * @param $pSeconds
107
- */
108
- public static function SetClockDiff( $pSeconds ) {
109
- self::$_clock_diff = $pSeconds;
110
- }
111
-
112
- /**
113
- * Find clock diff between current server to API server.
114
- *
115
- * @since 1.0.2
116
- * @return int Clock diff in seconds.
117
- */
118
- public static function FindClockDiff() {
119
- $time = time();
120
- $pong = self::Ping();
121
-
122
- return ( $time - strtotime( $pong->timestamp ) );
123
- }
124
-
125
- #endregion Servers Clock Diff ------------------------------------------------------
126
-
127
- /**
128
- * @var string http or https
129
- */
130
- private static $_protocol = FS_API__PROTOCOL;
131
-
132
- /**
133
- * Set API connection protocol.
134
- *
135
- * @since 1.0.4
136
- */
137
- public static function SetHttp() {
138
- self::$_protocol = 'http';
139
- }
140
-
141
- /**
142
- * @since 1.0.4
143
- *
144
- * @return bool
145
- */
146
- public static function IsHttps() {
147
- return ( 'https' === self::$_protocol );
148
- }
149
-
150
- /**
151
- * Sign request with the following HTTP headers:
152
- * Content-MD5: MD5(HTTP Request body)
153
- * Date: Current date (i.e Sat, 14 Feb 2015 20:24:46 +0000)
154
- * Authorization: FS {scope_entity_id}:{scope_entity_public_key}:base64encode(sha256(string_to_sign,
155
- * {scope_entity_secret_key}))
156
- *
157
- * @param string $pResourceUrl
158
- * @param array $pCurlOptions
159
- *
160
- * @return array
161
- */
162
- function SignRequest( $pResourceUrl, $pCurlOptions ) {
163
- $eol = "\n";
164
- $content_md5 = '';
165
- $now = ( time() - self::$_clock_diff );
166
- $date = date( 'r', $now );
167
- $content_type = '';
168
-
169
- if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
170
- $content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
171
- $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
172
- $content_type = 'application/json';
173
- }
174
-
175
- $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
176
-
177
- $string_to_sign = implode( $eol, array(
178
- $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
179
- $content_md5,
180
- $content_type,
181
- $date,
182
- $pResourceUrl
183
- ) );
184
-
185
- // If secret and public keys are identical, it means that
186
- // the signature uses public key hash encoding.
187
- $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
188
-
189
- // Add authorization header.
190
- $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
191
- $auth_type . ' ' .
192
- $this->_id . ':' .
193
- $this->_public . ':' .
194
- self::Base64UrlEncode(
195
- hash_hmac( 'sha256', $string_to_sign, $this->_secret )
196
- );
197
-
198
- return $pCurlOptions;
199
- }
200
-
201
- /**
202
- * Get API request URL signed via query string.
203
- *
204
- * @param string $pPath
205
- *
206
- * @throws Freemius_Exception
207
- *
208
- * @return string
209
- */
210
- function GetSignedUrl( $pPath ) {
211
- $resource = explode( '?', $this->CanonizePath( $pPath ) );
212
- $pResourceUrl = $resource[0];
213
-
214
- $eol = "\n";
215
- $content_md5 = '';
216
- $content_type = '';
217
- $now = ( time() - self::$_clock_diff );
218
- $date = date( 'r', $now );
219
-
220
- $string_to_sign = implode( $eol, array(
221
- 'GET',
222
- $content_md5,
223
- $content_type,
224
- $date,
225
- $pResourceUrl
226
- ) );
227
-
228
- // If secret and public keys are identical, it means that
229
- // the signature uses public key hash encoding.
230
- $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
231
-
232
- return Freemius_Api::GetUrl(
233
- $pResourceUrl . '?' .
234
- ( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
235
- http_build_query( array(
236
- 'auth_date' => $date,
237
- 'authorization' => $auth_type . ' ' . $this->_id . ':' .
238
- $this->_public . ':' .
239
- self::Base64UrlEncode( hash_hmac(
240
- 'sha256', $string_to_sign, $this->_secret
241
- ) )
242
- ) ), $this->_isSandbox );
243
- }
244
-
245
- /**
246
- * @param resource $pCurlHandler
247
- * @param array $pCurlOptions
248
- *
249
- * @return mixed
250
- */
251
- private static function ExecuteRequest( &$pCurlHandler, &$pCurlOptions ) {
252
- $start = microtime( true );
253
-
254
- $result = curl_exec( $pCurlHandler );
255
-
256
- if ( FS_API__LOGGER_ON ) {
257
- $end = microtime( true );
258
-
259
- $has_body = ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] );
260
-
261
- self::$_logger[] = array(
262
- 'id' => count( self::$_logger ),
263
- 'start' => $start,
264
- 'end' => $end,
265
- 'total' => ( $end - $start ),
266
- 'method' => $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
267
- 'path' => $pCurlOptions[ CURLOPT_URL ],
268
- 'body' => $has_body ? $pCurlOptions[ CURLOPT_POSTFIELDS ] : null,
269
- 'result' => $result,
270
- 'code' => curl_getinfo( $pCurlHandler, CURLINFO_HTTP_CODE ),
271
- 'backtrace' => debug_backtrace(),
272
- );
273
- }
274
-
275
- return $result;
276
- }
277
-
278
- /**
279
- * @return array
280
- */
281
- static function GetLogger() {
282
- return self::$_logger;
283
- }
284
-
285
- /**
286
- * @param string $pCanonizedPath
287
- * @param string $pMethod
288
- * @param array $pParams
289
- * @param null|resource $pCurlHandler
290
- * @param bool $pIsSandbox
291
- * @param null|callable $pBeforeExecutionFunction
292
- *
293
- * @return object[]|object|null
294
- *
295
- * @throws \Freemius_Exception
296
- */
297
- private static function MakeStaticRequest(
298
- $pCanonizedPath,
299
- $pMethod = 'GET',
300
- $pParams = array(),
301
- $pCurlHandler = null,
302
- $pIsSandbox = false,
303
- $pBeforeExecutionFunction = null
304
- ) {
305
- if ( ! FS_SDK__HAS_CURL ) {
306
- self::ThrowNoCurlException();
307
- }
308
-
309
- // Connectivity errors simulation.
310
- if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
311
- self::ThrowCloudFlareDDoSException();
312
- } else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
313
- self::ThrowSquidAclException();
314
- }
315
-
316
- if ( ! $pCurlHandler ) {
317
- $pCurlHandler = curl_init();
318
- }
319
-
320
- $opts = array(
321
- CURLOPT_CONNECTTIMEOUT => 10,
322
- CURLOPT_RETURNTRANSFER => true,
323
- CURLOPT_TIMEOUT => 60,
324
- CURLOPT_USERAGENT => FS_SDK__USER_AGENT,
325
- CURLOPT_HTTPHEADER => array(),
326
- );
327
-
328
- if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
329
- if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
330
- $opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
331
- $opts[ CURLOPT_POST ] = count( $pParams );
332
- $opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
333
- }
334
-
335
- $opts[ CURLOPT_RETURNTRANSFER ] = true;
336
- }
337
-
338
- $request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
339
-
340
- $opts[ CURLOPT_URL ] = $request_url;
341
- $opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
342
-
343
- $resource = explode( '?', $pCanonizedPath );
344
-
345
- // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
346
- // for 2 seconds if the server does not support this header.
347
- $opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
348
-
349
- if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
350
- $opts[ CURLOPT_SSL_VERIFYHOST ] = false;
351
- $opts[ CURLOPT_SSL_VERIFYPEER ] = false;
352
- }
353
-
354
- if ( false !== $pBeforeExecutionFunction &&
355
- is_callable( $pBeforeExecutionFunction )
356
- ) {
357
- $opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
358
- }
359
-
360
- curl_setopt_array( $pCurlHandler, $opts );
361
- $result = self::ExecuteRequest( $pCurlHandler, $opts );
362
-
363
- /*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
364
- {
365
- self::errorLog('Invalid or no certificate authority found, using bundled information');
366
- curl_setopt($ch, CURLOPT_CAINFO,
367
- dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
368
- $result = curl_exec($ch);
369
- }*/
370
-
371
- // With dual stacked DNS responses, it's possible for a server to
372
- // have IPv6 enabled but not have IPv6 connectivity. If this is
373
- // the case, curl will try IPv4 first and if that fails, then it will
374
- // fall back to IPv6 and the error EHOSTUNREACH is returned by the
375
- // operating system.
376
- if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
377
- $matches = array();
378
- $regex = '/Failed to connect to ([^:].*): Network is unreachable/';
379
- if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
380
- if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
381
- // self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
382
- $opts[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
383
- curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
384
- $result = self::ExecuteRequest( $pCurlHandler, $opts );
385
- }
386
- }
387
- }
388
-
389
- if ( $result === false ) {
390
- self::ThrowCurlException( $pCurlHandler );
391
- }
392
-
393
- curl_close( $pCurlHandler );
394
-
395
- if ( empty( $result ) ) {
396
- return null;
397
- }
398
-
399
- $decoded = json_decode( $result );
400
-
401
- if ( is_null( $decoded ) ) {
402
- if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
403
- preg_match( '/text\/javascript/', $result )
404
- ) {
405
- self::ThrowCloudFlareDDoSException( $result );
406
- } else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
407
- preg_match( '/squid/', $result )
408
- ) {
409
- self::ThrowSquidAclException( $result );
410
- } else {
411
- $decoded = (object) array(
412
- 'error' => (object) array(
413
- 'type' => 'Unknown',
414
- 'message' => $result,
415
- 'code' => 'unknown',
416
- 'http' => 402
417
- )
418
- );
419
- }
420
- }
421
-
422
- return $decoded;
423
- }
424
-
425
-
426
- /**
427
- * Makes an HTTP request. This method can be overridden by subclasses if
428
- * developers want to do fancier things or use something other than curl to
429
- * make the request.
430
- *
431
- * @param string $pCanonizedPath The URL to make the request to
432
- * @param string $pMethod HTTP method
433
- * @param array $pParams The parameters to use for the POST body
434
- * @param null|resource $pCurlHandler Initialized curl handle
435
- *
436
- * @return object[]|object|null
437
- *
438
- * @throws Freemius_Exception
439
- */
440
- public function MakeRequest(
441
- $pCanonizedPath,
442
- $pMethod = 'GET',
443
- $pParams = array(),
444
- $pCurlHandler = null
445
- ) {
446
- $resource = explode( '?', $pCanonizedPath );
447
-
448
- // Only sign request if not ping.json connectivity test.
449
- $sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
450
-
451
- return self::MakeStaticRequest(
452
- $pCanonizedPath,
453
- $pMethod,
454
- $pParams,
455
- $pCurlHandler,
456
- $this->_isSandbox,
457
- $sign_request ? array( &$this, 'SignRequest' ) : null
458
- );
459
- }
460
-
461
- #region Connectivity Test ------------------------------------------------------
462
-
463
- /**
464
- * If successful connectivity to the API endpoint using ping.json endpoint.
465
- *
466
- * - OR -
467
- *
468
- * Validate if ping result object is valid.
469
- *
470
- * @param mixed $pPong
471
- *
472
- * @return bool
473
- */
474
- public static function Test( $pPong = null ) {
475
- $pong = is_null( $pPong ) ?
476
- self::Ping() :
477
- $pPong;
478
-
479
- return (
480
- is_object( $pong ) &&
481
- isset( $pong->api ) &&
482
- 'pong' === $pong->api
483
- );
484
- }
485
-
486
- /**
487
- * Ping API to test connectivity.
488
- *
489
- * @return object
490
- */
491
- public static function Ping() {
492
- try {
493
- $result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
494
- } catch ( Freemius_Exception $e ) {
495
- // Map to error object.
496
- $result = (object) $e->getResult();
497
- } catch ( Exception $e ) {
498
- // Map to error object.
499
- $result = (object) array(
500
- 'error' => array(
501
- 'type' => 'Unknown',
502
- 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
503
- 'code' => 'unknown',
504
- 'http' => 402
505
- )
506
- );
507
- }
508
-
509
- return $result;
510
- }
511
-
512
- #endregion Connectivity Test ------------------------------------------------------
513
-
514
- #region Connectivity Exceptions ------------------------------------------------------
515
-
516
- /**
517
- * @param resource $pCurlHandler
518
- *
519
- * @throws Freemius_Exception
520
- */
521
- private static function ThrowCurlException( $pCurlHandler ) {
522
- $e = new Freemius_Exception( array(
523
- 'error' => array(
524
- 'code' => curl_errno( $pCurlHandler ),
525
- 'message' => curl_error( $pCurlHandler ),
526
- 'type' => 'CurlException',
527
- ),
528
- ) );
529
-
530
- curl_close( $pCurlHandler );
531
- throw $e;
532
- }
533
-
534
- /**
535
- * @param string $pResult
536
- *
537
- * @throws Freemius_Exception
538
- */
539
- private static function ThrowNoCurlException( $pResult = '' ) {
540
- throw new Freemius_Exception( array(
541
- 'error' => (object) array(
542
- 'type' => 'cUrlMissing',
543
- 'message' => $pResult,
544
- 'code' => 'curl_missing',
545
- 'http' => 402
546
- )
547
- ) );
548
- }
549
-
550
- /**
551
- * @param string $pResult
552
- *
553
- * @throws Freemius_Exception
554
- */
555
- private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
556
- throw new Freemius_Exception( array(
557
- 'error' => (object) array(
558
- 'type' => 'CloudFlareDDoSProtection',
559
- 'message' => $pResult,
560
- 'code' => 'cloudflare_ddos_protection',
561
- 'http' => 402
562
- )
563
- ) );
564
- }
565
-
566
- /**
567
- * @param string $pResult
568
- *
569
- * @throws Freemius_Exception
570
- */
571
- private static function ThrowSquidAclException( $pResult = '' ) {
572
- throw new Freemius_Exception( array(
573
- 'error' => (object) array(
574
- 'type' => 'SquidCacheBlock',
575
- 'message' => $pResult,
576
- 'code' => 'squid_cache_block',
577
- 'http' => 402
578
- )
579
- ) );
580
- }
581
-
582
- #endregion Connectivity Exceptions ------------------------------------------------------
583
  }
1
+ <?php
2
+ /**
3
+ * Copyright 2014 Freemius, Inc.
4
+ *
5
+ * Licensed under the GPL v2 (the "License"); you may
6
+ * not use this file except in compliance with the License. You may obtain
7
+ * a copy of the License at
8
+ *
9
+ * http://choosealicense.com/licenses/gpl-v2/
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ * License for the specific language governing permissions and limitations
15
+ * under the License.
16
+ */
17
+
18
+ require_once dirname( __FILE__ ) . '/FreemiusBase.php';
19
+
20
+ if ( ! defined( 'FS_SDK__USER_AGENT' ) ) {
21
+ define( 'FS_SDK__USER_AGENT', 'fs-php-' . Freemius_Api_Base::VERSION );
22
+ }
23
+
24
+ if ( ! defined( 'FS_SDK__SIMULATE_NO_CURL' ) ) {
25
+ define( 'FS_SDK__SIMULATE_NO_CURL', false );
26
+ }
27
+
28
+ if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
29
+ define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
30
+ }
31
+
32
+ if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
33
+ define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
34
+ }
35
+
36
+ if ( ! defined( 'FS_SDK__HAS_CURL' ) ) {
37
+ define( 'FS_SDK__HAS_CURL', ! FS_SDK__SIMULATE_NO_CURL && function_exists( 'curl_version' ) );
38
+ }
39
+
40
+ if ( ! FS_SDK__HAS_CURL ) {
41
+ $curl_version = array( 'version' => '7.0.0' );
42
+ } else {
43
+ $curl_version = curl_version();
44
+ }
45
+
46
+ if ( ! defined( 'FS_API__PROTOCOL' ) ) {
47
+ define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' );
48
+ }
49
+
50
+ if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
51
+ define( 'FS_API__LOGGER_ON', false );
52
+ }
53
+
54
+ if ( ! defined( 'FS_API__ADDRESS' ) ) {
55
+ define( 'FS_API__ADDRESS', '://api.freemius.com' );
56
+ }
57
+ if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
58
+ define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
59
+ }
60
+
61
+ if ( class_exists( 'Freemius_Api' ) ) {
62
+ return;
63
+ }
64
+
65
+ class Freemius_Api extends Freemius_Api_Base {
66
+ private static $_logger = array();
67
+
68
+ /**
69
+ * @param string $pScope 'app', 'developer', 'user' or 'install'.
70
+ * @param number $pID Element's id.
71
+ * @param string $pPublic Public key.
72
+ * @param string|bool $pSecret Element's secret key.
73
+ * @param bool $pSandbox Whether or not to run API in sandbox mode.
74
+ */
75
+ public function __construct( $pScope, $pID, $pPublic, $pSecret = false, $pSandbox = false ) {
76
+ // If secret key not provided, use public key encryption.
77
+ if ( is_bool( $pSecret ) ) {
78
+ $pSecret = $pPublic;
79
+ }
80
+
81
+ parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
82
+ }
83
+
84
+ public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
85
+ $address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
86
+
87
+ if ( ':' === $address[0] ) {
88
+ $address = self::$_protocol . $address;
89
+ }
90
+
91
+ return $address . $pCanonizedPath;
92
+ }
93
+
94
+ #region Servers Clock Diff ------------------------------------------------------
95
+
96
+ /**
97
+ * @var int Clock diff in seconds between current server to API server.
98
+ */
99
+ private static $_clock_diff = 0;
100
+
101
+ /**
102
+ * Set clock diff for all API calls.
103
+ *
104
+ * @since 1.0.3
105
+ *
106
+ * @param $pSeconds
107
+ */
108
+ public static function SetClockDiff( $pSeconds ) {
109
+ self::$_clock_diff = $pSeconds;
110
+ }
111
+
112
+ /**
113
+ * Find clock diff between current server to API server.
114
+ *
115
+ * @since 1.0.2
116
+ * @return int Clock diff in seconds.
117
+ */
118
+ public static function FindClockDiff() {
119
+ $time = time();
120
+ $pong = self::Ping();
121
+
122
+ return ( $time - strtotime( $pong->timestamp ) );
123
+ }
124
+
125
+ #endregion Servers Clock Diff ------------------------------------------------------
126
+
127
+ /**
128
+ * @var string http or https
129
+ */
130
+ private static $_protocol = FS_API__PROTOCOL;
131
+
132
+ /**
133
+ * Set API connection protocol.
134
+ *
135
+ * @since 1.0.4
136
+ */
137
+ public static function SetHttp() {
138
+ self::$_protocol = 'http';
139
+ }
140
+
141
+ /**
142
+ * @since 1.0.4
143
+ *
144
+ * @return bool
145
+ */
146
+ public static function IsHttps() {
147
+ return ( 'https' === self::$_protocol );
148
+ }
149
+
150
+ /**
151
+ * Sign request with the following HTTP headers:
152
+ * Content-MD5: MD5(HTTP Request body)
153
+ * Date: Current date (i.e Sat, 14 Feb 2015 20:24:46 +0000)
154
+ * Authorization: FS {scope_entity_id}:{scope_entity_public_key}:base64encode(sha256(string_to_sign,
155
+ * {scope_entity_secret_key}))
156
+ *
157
+ * @param string $pResourceUrl
158
+ * @param array $pCurlOptions
159
+ *
160
+ * @return array
161
+ */
162
+ function SignRequest( $pResourceUrl, $pCurlOptions ) {
163
+ $eol = "\n";
164
+ $content_md5 = '';
165
+ $now = ( time() - self::$_clock_diff );
166
+ $date = date( 'r', $now );
167
+ $content_type = '';
168
+
169
+ if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
170
+ $content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
171
+ $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
172
+ $content_type = 'application/json';
173
+ }
174
+
175
+ $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
176
+
177
+ $string_to_sign = implode( $eol, array(
178
+ $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
179
+ $content_md5,
180
+ $content_type,
181
+ $date,
182
+ $pResourceUrl
183
+ ) );
184
+
185
+ // If secret and public keys are identical, it means that
186
+ // the signature uses public key hash encoding.
187
+ $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
188
+
189
+ // Add authorization header.
190
+ $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
191
+ $auth_type . ' ' .
192
+ $this->_id . ':' .
193
+ $this->_public . ':' .
194
+ self::Base64UrlEncode(
195
+ hash_hmac( 'sha256', $string_to_sign, $this->_secret )
196
+ );
197
+
198
+ return $pCurlOptions;
199
+ }
200
+
201
+ /**
202
+ * Get API request URL signed via query string.
203
+ *
204
+ * @param string $pPath
205
+ *
206
+ * @throws Freemius_Exception
207
+ *
208
+ * @return string
209
+ */
210
+ function GetSignedUrl( $pPath ) {
211
+ $resource = explode( '?', $this->CanonizePath( $pPath ) );
212
+ $pResourceUrl = $resource[0];
213
+
214
+ $eol = "\n";
215
+ $content_md5 = '';
216
+ $content_type = '';
217
+ $now = ( time() - self::$_clock_diff );
218
+ $date = date( 'r', $now );
219
+
220
+ $string_to_sign = implode( $eol, array(
221
+ 'GET',
222
+ $content_md5,
223
+ $content_type,
224
+ $date,
225
+ $pResourceUrl
226
+ ) );
227
+
228
+ // If secret and public keys are identical, it means that
229
+ // the signature uses public key hash encoding.
230
+ $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
231
+
232
+ return Freemius_Api::GetUrl(
233
+ $pResourceUrl . '?' .
234
+ ( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
235
+ http_build_query( array(
236
+ 'auth_date' => $date,
237
+ 'authorization' => $auth_type . ' ' . $this->_id . ':' .
238
+ $this->_public . ':' .
239
+ self::Base64UrlEncode( hash_hmac(
240
+ 'sha256', $string_to_sign, $this->_secret
241
+ ) )
242
+ ) ), $this->_isSandbox );
243
+ }
244
+
245
+ /**
246
+ * @param resource $pCurlHandler
247
+ * @param array $pCurlOptions
248
+ *
249
+ * @return mixed
250
+ */
251
+ private static function ExecuteRequest( &$pCurlHandler, &$pCurlOptions ) {
252
+ $start = microtime( true );
253
+
254
+ $result = curl_exec( $pCurlHandler );
255
+
256
+ if ( FS_API__LOGGER_ON ) {
257
+ $end = microtime( true );
258
+
259
+ $has_body = ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] );
260
+
261
+ self::$_logger[] = array(
262
+ 'id' => count( self::$_logger ),
263
+ 'start' => $start,
264
+ 'end' => $end,
265
+ 'total' => ( $end - $start ),
266
+ 'method' => $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
267
+ 'path' => $pCurlOptions[ CURLOPT_URL ],
268
+ 'body' => $has_body ? $pCurlOptions[ CURLOPT_POSTFIELDS ] : null,
269
+ 'result' => $result,
270
+ 'code' => curl_getinfo( $pCurlHandler, CURLINFO_HTTP_CODE ),
271
+ 'backtrace' => debug_backtrace(),
272
+ );
273
+ }
274
+
275
+ return $result;
276
+ }
277
+
278
+ /**
279
+ * @return array
280
+ */
281
+ static function GetLogger() {
282
+ return self::$_logger;
283
+ }
284
+
285
+ /**
286
+ * @param string $pCanonizedPath
287
+ * @param string $pMethod
288
+ * @param array $pParams
289
+ * @param null|resource $pCurlHandler
290
+ * @param bool $pIsSandbox
291
+ * @param null|callable $pBeforeExecutionFunction
292
+ *
293
+ * @return object[]|object|null
294
+ *
295
+ * @throws \Freemius_Exception
296
+ */
297
+ private static function MakeStaticRequest(
298
+ $pCanonizedPath,
299
+ $pMethod = 'GET',
300
+ $pParams = array(),
301
+ $pCurlHandler = null,
302
+ $pIsSandbox = false,
303
+ $pBeforeExecutionFunction = null
304
+ ) {
305
+ if ( ! FS_SDK__HAS_CURL ) {
306
+ self::ThrowNoCurlException();
307
+ }
308
+
309
+ // Connectivity errors simulation.
310
+ if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
311
+ self::ThrowCloudFlareDDoSException();
312
+ } else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
313
+ self::ThrowSquidAclException();
314
+ }
315
+
316
+ if ( ! $pCurlHandler ) {
317
+ $pCurlHandler = curl_init();
318
+ }
319
+
320
+ $opts = array(
321
+ CURLOPT_CONNECTTIMEOUT => 10,
322
+ CURLOPT_RETURNTRANSFER => true,
323
+ CURLOPT_TIMEOUT => 60,
324
+ CURLOPT_USERAGENT => FS_SDK__USER_AGENT,
325
+ CURLOPT_HTTPHEADER => array(),
326
+ );
327
+
328
+ if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
329
+ if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
330
+ $opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
331
+ $opts[ CURLOPT_POST ] = count( $pParams );
332
+ $opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
333
+ }
334
+
335
+ $opts[ CURLOPT_RETURNTRANSFER ] = true;
336
+ }
337
+
338
+ $request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
339
+
340
+ $opts[ CURLOPT_URL ] = $request_url;
341
+ $opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
342
+
343
+ $resource = explode( '?', $pCanonizedPath );
344
+
345
+ // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
346
+ // for 2 seconds if the server does not support this header.
347
+ $opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
348
+
349
+ if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
350
+ $opts[ CURLOPT_SSL_VERIFYHOST ] = false;
351
+ $opts[ CURLOPT_SSL_VERIFYPEER ] = false;
352
+ }
353
+
354
+ if ( false !== $pBeforeExecutionFunction &&
355
+ is_callable( $pBeforeExecutionFunction )
356
+ ) {
357
+ $opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
358
+ }
359
+
360
+ curl_setopt_array( $pCurlHandler, $opts );
361
+ $result = self::ExecuteRequest( $pCurlHandler, $opts );
362
+
363
+ /*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
364
+ {
365
+ self::errorLog('Invalid or no certificate authority found, using bundled information');
366
+ curl_setopt($ch, CURLOPT_CAINFO,
367
+ dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
368
+ $result = curl_exec($ch);
369
+ }*/
370
+
371
+ // With dual stacked DNS responses, it's possible for a server to
372
+ // have IPv6 enabled but not have IPv6 connectivity. If this is
373
+ // the case, curl will try IPv4 first and if that fails, then it will
374
+ // fall back to IPv6 and the error EHOSTUNREACH is returned by the
375
+ // operating system.
376
+ if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
377
+ $matches = array();
378
+ $regex = '/Failed to connect to ([^:].*): Network is unreachable/';
379
+ if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
380
+ if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
381
+ // self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
382
+ $opts[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
383
+ curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
384
+ $result = self::ExecuteRequest( $pCurlHandler, $opts );
385
+ }
386
+ }
387
+ }
388
+
389
+ if ( $result === false ) {
390
+ self::ThrowCurlException( $pCurlHandler );
391
+ }
392
+
393
+ curl_close( $pCurlHandler );
394
+
395
+ if ( empty( $result ) ) {
396
+ return null;
397
+ }
398
+
399
+ $decoded = json_decode( $result );
400
+
401
+ if ( is_null( $decoded ) ) {
402
+ if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
403
+ preg_match( '/text\/javascript/', $result )
404
+ ) {
405
+ self::ThrowCloudFlareDDoSException( $result );
406
+ } else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
407
+ preg_match( '/squid/', $result )
408
+ ) {
409
+ self::ThrowSquidAclException( $result );
410
+ } else {
411
+ $decoded = (object) array(
412
+ 'error' => (object) array(
413
+ 'type' => 'Unknown',
414
+ 'message' => $result,
415
+ 'code' => 'unknown',
416
+ 'http' => 402
417
+ )
418
+ );
419
+ }
420
+ }
421
+
422
+ return $decoded;
423
+ }
424
+
425
+
426
+ /**
427
+ * Makes an HTTP request. This method can be overridden by subclasses if
428
+ * developers want to do fancier things or use something other than curl to
429
+ * make the request.
430
+ *
431
+ * @param string $pCanonizedPath The URL to make the request to
432
+ * @param string $pMethod HTTP method
433
+ * @param array $pParams The parameters to use for the POST body
434
+ * @param null|resource $pCurlHandler Initialized curl handle
435
+ *
436
+ * @return object[]|object|null
437
+ *
438
+ * @throws Freemius_Exception
439
+ */
440
+ public function MakeRequest(
441
+ $pCanonizedPath,
442
+ $pMethod = 'GET',
443
+ $pParams = array(),
444
+ $pCurlHandler = null
445
+ ) {
446
+ $resource = explode( '?', $pCanonizedPath );
447
+
448
+ // Only sign request if not ping.json connectivity test.
449
+ $sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
450
+
451
+ return self::MakeStaticRequest(
452
+ $pCanonizedPath,
453
+ $pMethod,
454
+ $pParams,
455
+ $pCurlHandler,
456
+ $this->_isSandbox,
457
+ $sign_request ? array( &$this, 'SignRequest' ) : null
458
+ );
459
+ }
460
+
461
+ #region Connectivity Test ------------------------------------------------------
462
+
463
+ /**
464
+ * If successful connectivity to the API endpoint using ping.json endpoint.
465
+ *
466
+ * - OR -
467
+ *
468
+ * Validate if ping result object is valid.
469
+ *
470
+ * @param mixed $pPong
471
+ *
472
+ * @return bool
473
+ */
474
+ public static function Test( $pPong = null ) {
475
+ $pong = is_null( $pPong ) ?
476
+ self::Ping() :
477
+ $pPong;
478
+
479
+ return (
480
+ is_object( $pong ) &&
481
+ isset( $pong->api ) &&
482
+ 'pong' === $pong->api
483
+ );
484
+ }
485
+
486
+ /**
487
+ * Ping API to test connectivity.
488
+ *
489
+ * @return object
490
+ */
491
+ public static function Ping() {
492
+ try {
493
+ $result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
494
+ } catch ( Freemius_Exception $e ) {
495
+ // Map to error object.
496
+ $result = (object) $e->getResult();
497
+ } catch ( Exception $e ) {
498
+ // Map to error object.
499
+ $result = (object) array(
500
+ 'error' => array(
501
+ 'type' => 'Unknown',
502
+ 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
503
+ 'code' => 'unknown',
504
+ 'http' => 402
505
+ )
506
+ );
507
+ }
508
+
509
+ return $result;
510
+ }
511
+
512
+ #endregion Connectivity Test ------------------------------------------------------
513
+
514
+ #region Connectivity Exceptions ------------------------------------------------------
515
+
516
+ /**
517
+ * @param resource $pCurlHandler
518
+ *
519
+ * @throws Freemius_Exception
520
+ */
521
+ private static function ThrowCurlException( $pCurlHandler ) {
522
+ $e = new Freemius_Exception( array(
523
+ 'error' => array(
524
+ 'code' => curl_errno( $pCurlHandler ),
525
+ 'message' => curl_error( $pCurlHandler ),
526
+ 'type' => 'CurlException',
527
+ ),
528
+ ) );
529
+
530
+ curl_close( $pCurlHandler );
531
+ throw $e;
532
+ }
533
+
534
+ /**
535
+ * @param string $pResult
536
+ *
537
+ * @throws Freemius_Exception
538
+ */
539
+ private static function ThrowNoCurlException( $pResult = '' ) {
540
+ throw new Freemius_Exception( array(
541
+ 'error' => (object) array(
542
+ 'type' => 'cUrlMissing',
543
+ 'message' => $pResult,
544
+ 'code' => 'curl_missing',
545
+ 'http' => 402
546
+ )
547
+ ) );
548
+ }
549
+
550
+ /**
551
+ * @param string $pResult
552
+ *
553
+ * @throws Freemius_Exception
554
+ */
555
+ private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
556
+ throw new Freemius_Exception( array(
557
+ 'error' => (object) array(
558
+ 'type' => 'CloudFlareDDoSProtection',
559
+ 'message' => $pResult,
560
+ 'code' => 'cloudflare_ddos_protection',
561
+ 'http' => 402
562
+ )
563
+ ) );
564
+ }
565
+
566
+ /**
567
+ * @param string $pResult
568
+ *
569
+ * @throws Freemius_Exception
570
+ */
571
+ private static function ThrowSquidAclException( $pResult = '' ) {
572
+ throw new Freemius_Exception( array(
573
+ 'error' => (object) array(
574
+ 'type' => 'SquidCacheBlock',
575
+ 'message' => $pResult,
576
+ 'code' => 'squid_cache_block',
577
+ 'http' => 402
578
+ )
579
+ ) );
580
+ }
581
+
582
+ #endregion Connectivity Exceptions ------------------------------------------------------
583
  }
includes/pum-sdk/freemius/includes/sdk/FreemiusBase.php CHANGED
@@ -1,188 +1,188 @@
1
- <?php
2
- /**
3
- * Copyright 2014 Freemius, Inc.
4
- *
5
- * Licensed under the GPL v2 (the "License"); you may
6
- * not use this file except in compliance with the License. You may obtain
7
- * a copy of the License at
8
- *
9
- * http://choosealicense.com/licenses/gpl-v2/
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
- * License for the specific language governing permissions and limitations
15
- * under the License.
16
- */
17
-
18
- if ( ! defined( 'FS_API__VERSION' ) ) {
19
- define( 'FS_API__VERSION', '1' );
20
- }
21
- if ( ! defined( 'FS_SDK__PATH' ) ) {
22
- define( 'FS_SDK__PATH', dirname( __FILE__ ) );
23
- }
24
- if ( ! defined( 'FS_SDK__EXCEPTIONS_PATH' ) ) {
25
- define( 'FS_SDK__EXCEPTIONS_PATH', FS_SDK__PATH . '/Exceptions/' );
26
- }
27
-
28
- if ( ! function_exists( 'json_decode' ) ) {
29
- throw new Exception( 'Freemius needs the JSON PHP extension.' );
30
- }
31
-
32
- // Include all exception files.
33
- $exceptions = array(
34
- 'Exception',
35
- 'InvalidArgumentException',
36
- 'ArgumentNotExistException',
37
- 'EmptyArgumentException',
38
- 'OAuthException'
39
- );
40
-
41
- foreach ( $exceptions as $e ) {
42
- require_once FS_SDK__EXCEPTIONS_PATH . $e . '.php';
43
- }
44
-
45
- if ( class_exists( 'Freemius_Api_Base' ) ) {
46
- return;
47
- }
48
-
49
- abstract class Freemius_Api_Base {
50
- const VERSION = '1.0.4';
51
- const FORMAT = 'json';
52
-
53
- protected $_id;
54
- protected $_public;
55
- protected $_secret;
56
- protected $_scope;
57
- protected $_isSandbox;
58
-
59
- /**
60
- * @param string $pScope 'app', 'developer', 'plugin', 'user' or 'install'.
61
- * @param number $pID Element's id.
62
- * @param string $pPublic Public key.
63
- * @param string $pSecret Element's secret key.
64
- * @param bool $pIsSandbox Whether or not to run API in sandbox mode.
65
- */
66
- public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
67
- $this->_id = $pID;
68
- $this->_public = $pPublic;
69
- $this->_secret = $pSecret;
70
- $this->_scope = $pScope;
71
- $this->_isSandbox = $pIsSandbox;
72
- }
73
-
74
- public function IsSandbox() {
75
- return $this->_isSandbox;
76
- }
77
-
78
- function CanonizePath( $pPath ) {
79
- $pPath = trim( $pPath, '/' );
80
- $query_pos = strpos( $pPath, '?' );
81
- $query = '';
82
-
83
- if ( false !== $query_pos ) {
84
- $query = substr( $pPath, $query_pos );
85
- $pPath = substr( $pPath, 0, $query_pos );
86
- }
87
-
88
- // Trim '.json' suffix.
89
- $format_length = strlen( '.' . self::FORMAT );
90
- $start = $format_length * ( - 1 ); //negative
91
- if ( substr( strtolower( $pPath ), $start ) === ( '.' . self::FORMAT ) ) {
92
- $pPath = substr( $pPath, 0, strlen( $pPath ) - $format_length );
93
- }
94
-
95
- switch ( $this->_scope ) {
96
- case 'app':
97
- $base = '/apps/' . $this->_id;
98
- break;
99
- case 'developer':
100
- $base = '/developers/' . $this->_id;
101
- break;
102
- case 'user':
103
- $base = '/users/' . $this->_id;
104
- break;
105
- case 'plugin':
106
- $base = '/plugins/' . $this->_id;
107
- break;
108
- case 'install':
109
- $base = '/installs/' . $this->_id;
110
- break;
111
- default:
112
- throw new Freemius_Exception( 'Scope not implemented.' );
113
- }
114
-
115
- return '/v' . FS_API__VERSION . $base .
116
- ( ! empty( $pPath ) ? '/' : '' ) . $pPath .
117
- ( ( false === strpos( $pPath, '.' ) ) ? '.' . self::FORMAT : '' ) . $query;
118
- }
119
-
120
- abstract function MakeRequest( $pCanonizedPath, $pMethod = 'GET', $pParams = array() );
121
-
122
- /**
123
- * @param string $pPath
124
- * @param string $pMethod
125
- * @param array $pParams
126
- *
127
- * @return object[]|object|null
128
- */
129
- private function _Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
130
- $pMethod = strtoupper( $pMethod );
131
-
132
- try {
133
- $result = $this->MakeRequest( $pPath, $pMethod, $pParams );
134
- } catch ( Freemius_Exception $e ) {
135
- // Map to error object.
136
- $result = (object) $e->getResult();
137
- } catch ( Exception $e ) {
138
- // Map to error object.
139
- $result = (object) array(
140
- 'error' => array(
141
- 'type' => 'Unknown',
142
- 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
143
- 'code' => 'unknown',
144
- 'http' => 402
145
- )
146
- );
147
- }
148
-
149
- return $result;
150
- }
151
-
152
- public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
153
- return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
154
- }
155
-
156
- /**
157
- * Base64 encoding that does not need to be urlencode()ed.
158
- * Exactly the same as base64_encode except it uses
159
- * - instead of +
160
- * _ instead of /
161
- * No padded =
162
- *
163
- * @param string $input base64UrlEncoded string
164
- *
165
- * @return string
166
- */
167
- protected static function Base64UrlDecode( $input ) {
168
- return base64_decode( strtr( $input, '-_', '+/' ) );
169
- }
170
-
171
- /**
172
- * Base64 encoding that does not need to be urlencode()ed.
173
- * Exactly the same as base64_encode except it uses
174
- * - instead of +
175
- * _ instead of /
176
- *
177
- * @param string $input string
178
- *
179
- * @return string base64Url encoded string
180
- */
181
- protected static function Base64UrlEncode( $input ) {
182
- $str = strtr( base64_encode( $input ), '+/', '-_' );
183
- $str = str_replace( '=', '', $str );
184
-
185
- return $str;
186
- }
187
-
188
- }
1
+ <?php
2
+ /**
3
+ * Copyright 2014 Freemius, Inc.
4
+ *
5
+ * Licensed under the GPL v2 (the "License"); you may
6
+ * not use this file except in compliance with the License. You may obtain
7
+ * a copy of the License at
8
+ *
9
+ * http://choosealicense.com/licenses/gpl-v2/
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ * License for the specific language governing permissions and limitations
15
+ * under the License.
16
+ */
17
+
18
+ if ( ! defined( 'FS_API__VERSION' ) ) {
19
+ define( 'FS_API__VERSION', '1' );
20
+ }
21
+ if ( ! defined( 'FS_SDK__PATH' ) ) {
22
+ define( 'FS_SDK__PATH', dirname( __FILE__ ) );
23
+ }
24
+ if ( ! defined( 'FS_SDK__EXCEPTIONS_PATH' ) ) {
25
+ define( 'FS_SDK__EXCEPTIONS_PATH', FS_SDK__PATH . '/Exceptions/' );
26
+ }
27
+
28
+ if ( ! function_exists( 'json_decode' ) ) {
29
+ throw new Exception( 'Freemius needs the JSON PHP extension.' );
30
+ }
31
+
32
+ // Include all exception files.
33
+ $exceptions = array(
34
+ 'Exception',
35
+ 'InvalidArgumentException',
36
+ 'ArgumentNotExistException',
37
+ 'EmptyArgumentException',
38
+ 'OAuthException'
39
+ );
40
+
41
+ foreach ( $exceptions as $e ) {
42
+ require_once FS_SDK__EXCEPTIONS_PATH . $e . '.php';
43
+ }
44
+
45
+ if ( class_exists( 'Freemius_Api_Base' ) ) {
46
+ return;
47
+ }
48
+
49
+ abstract class Freemius_Api_Base {
50
+ const VERSION = '1.0.4';
51
+ const FORMAT = 'json';
52
+
53
+ protected $_id;
54
+ protected $_public;
55
+ protected $_secret;
56
+ protected $_scope;
57
+ protected $_isSandbox;
58
+
59
+ /**
60
+ * @param string $pScope 'app', 'developer', 'plugin', 'user' or 'install'.
61
+ * @param number $pID Element's id.
62
+ * @param string $pPublic Public key.
63
+ * @param string $pSecret Element's secret key.
64
+ * @param bool $pIsSandbox Whether or not to run API in sandbox mode.
65
+ */
66
+ public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
67
+ $this->_id = $pID;
68
+ $this->_public = $pPublic;
69
+ $this->_secret = $pSecret;
70
+ $this->_scope = $pScope;
71
+ $this->_isSandbox = $pIsSandbox;
72
+ }
73
+
74
+ public function IsSandbox() {
75
+ return $this->_isSandbox;
76
+ }
77
+
78
+ function CanonizePath( $pPath ) {
79
+ $pPath = trim( $pPath, '/' );
80
+ $query_pos = strpos( $pPath, '?' );
81
+ $query = '';
82
+
83
+ if ( false !== $query_pos ) {
84
+ $query = substr( $pPath, $query_pos );
85
+ $pPath = substr( $pPath, 0, $query_pos );
86
+ }
87
+
88
+ // Trim '.json' suffix.
89
+ $format_length = strlen( '.' . self::FORMAT );
90
+ $start = $format_length * ( - 1 ); //negative
91
+ if ( substr( strtolower( $pPath ), $start ) === ( '.' . self::FORMAT ) ) {
92
+ $pPath = substr( $pPath, 0, strlen( $pPath ) - $format_length );
93
+ }
94
+
95
+ switch ( $this->_scope ) {
96
+ case 'app':
97
+ $base = '/apps/' . $this->_id;
98
+ break;
99
+ case 'developer':
100
+ $base = '/developers/' . $this->_id;
101
+ break;
102
+ case 'user':
103
+ $base = '/users/' . $this->_id;
104
+ break;
105
+ case 'plugin':
106
+ $base = '/plugins/' . $this->_id;
107
+ break;
108
+ case 'install':
109
+ $base = '/installs/' . $this->_id;
110
+ break;
111
+ default:
112
+ throw new Freemius_Exception( 'Scope not implemented.' );
113
+ }
114
+
115
+ return '/v' . FS_API__VERSION . $base .
116
+ ( ! empty( $pPath ) ? '/' : '' ) . $pPath .
117
+ ( ( false === strpos( $pPath, '.' ) ) ? '.' . self::FORMAT : '' ) . $query;
118
+ }
119
+
120
+ abstract function MakeRequest( $pCanonizedPath, $pMethod = 'GET', $pParams = array() );
121
+
122
+ /**
123
+ * @param string $pPath
124
+ * @param string $pMethod
125
+ * @param array $pParams
126
+ *
127
+ * @return object[]|object|null
128
+ */
129
+ private function _Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
130
+ $pMethod = strtoupper( $pMethod );
131
+
132
+ try {
133
+ $result = $this->MakeRequest( $pPath, $pMethod, $pParams );
134
+ } catch ( Freemius_Exception $e ) {
135
+ // Map to error object.
136
+ $result = (object) $e->getResult();
137
+ } catch ( Exception $e ) {
138
+ // Map to error object.
139
+ $result = (object) array(
140
+ 'error' => array(
141
+ 'type' => 'Unknown',
142
+ 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
143
+ 'code' => 'unknown',
144
+ 'http' => 402
145
+ )
146
+ );
147
+ }
148
+
149
+ return $result;
150
+ }
151
+
152
+ public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
153
+ return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
154
+ }
155
+
156
+ /**
157
+ * Base64 encoding that does not need to be urlencode()ed.
158
+ * Exactly the same as base64_encode except it uses
159
+ * - instead of +
160
+ * _ instead of /
161
+ * No padded =
162
+ *
163
+ * @param string $input base64UrlEncoded string
164
+ *
165
+ * @return string
166
+ */
167
+ protected static function Base64UrlDecode( $input ) {
168
+ return base64_decode( strtr( $input, '-_', '+/' ) );
169
+ }
170
+
171
+ /**
172
+ * Base64 encoding that does not need to be urlencode()ed.
173
+ * Exactly the same as base64_encode except it uses
174
+ * - instead of +
175
+ * _ instead of /
176
+ *
177
+ * @param string $input string
178
+ *
179
+ * @return string base64Url encoded string
180
+ */
181
+ protected static function Base64UrlEncode( $input ) {
182
+ $str = strtr( base64_encode( $input ), '+/', '-_' );
183
+ $str = str_replace( '=', '', $str );
184
+
185
+ return $str;
186
+ }
187
+
188
+ }
includes/pum-sdk/freemius/includes/sdk/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php CHANGED
@@ -27,7 +27,7 @@
27
  * will catch it.
28
  */
29
  if ( ! function_exists( 'get_plugins' ) ) {
30
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
31
  }
32
 
33
  $all_plugins = get_plugins();
27
  * will catch it.
28
  */
29
  if ( ! function_exists( 'get_plugins' ) ) {
30
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
31
  }
32
 
33
  $all_plugins = get_plugins();
includes/pum-sdk/freemius/includes/supplements/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/languages/freemius-en.mo CHANGED
Binary file
includes/pum-sdk/freemius/languages/freemius-en.po CHANGED
@@ -1,1522 +1,1727 @@
 
 
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: \n"
4
- "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
  "PO-Revision-Date: \n"
7
- "Last-Translator: \n"
8
  "Language: \n"
9
- "Language-Team: \n"
10
- "Content-Type: \n"
11
- "Content-Transfer-Encoding: \n"
12
- "Plural-Forms: \n"
13
-
14
- # Copyright (C) 2016 freemius
15
- # This file is distributed under the same license as the freemius package.
16
- #: includes/i18n.php:41, includes/i18n.php:55
17
- msgid "Yes - I'm in!"
18
- msgstr "Yes - I'm in!"
19
-
20
- #: includes/i18n.php:43, includes/i18n.php:57
21
- msgid "Not today"
22
- msgstr "Not today"
23
-
24
- #: includes/i18n.php:69
25
  msgid "Account"
26
  msgstr "Account"
27
 
28
- #: includes/i18n.php:71
29
  msgid "Add On"
30
  msgstr "Add On"
31
 
32
- #: includes/i18n.php:73
33
  msgid "Contact Us"
34
  msgstr "Contact Us"
35
 
36
- #: includes/i18n.php:75
37
  msgid "Contact Support"
38
  msgstr "Contact Support"
39
 
40
- #: includes/i18n.php:77
41
  msgid "Change Ownership"
42
  msgstr "Change Ownership"
43
 
44
- #: includes/i18n.php:79
45
  msgid "Support"
46
  msgstr "Support"
47
 
48
- #: includes/i18n.php:81
49
  msgid "Support Forum"
50
  msgstr "Support Forum"
51
 
52
- #: includes/i18n.php:83
53
  msgid "Add Ons"
54
  msgstr "Add Ons"
55
 
56
- #: includes/i18n.php:85
57
  msgctxt "verb"
58
  msgid "Upgrade"
59
  msgstr "Upgrade"
60
 
61
- #: includes/i18n.php:87
62
  msgid "Awesome"
63
  msgstr "Awesome"
64
 
65
- #: includes/i18n.php:89
66
  msgctxt "noun"
67
  msgid "Pricing"
68
  msgstr "Pricing"
69
 
70
- #: includes/i18n.php:91
71
  msgctxt "noun"
72
  msgid "Price"
73
  msgstr "Price"
74
 
75
- #: includes/i18n.php:93
76
  msgid "Unlimited Updates"
77
  msgstr "Unlimited Updates"
78
 
79
- #: includes/i18n.php:95
80
  msgctxt "verb"
81
  msgid "Downgrade"
82
  msgstr "Downgrade"
83
 
84
- #: includes/i18n.php:97
85
  msgid "Cancel Trial"
86
  msgstr "Cancel Trial"
87
 
88
- #: includes/i18n.php:99
89
  msgid "Free Trial"
90
  msgstr "Free Trial"
91
 
92
- #: includes/i18n.php:101
93
  msgid "Start my free %s"
94
  msgstr "Start my free %s"
95
 
96
- #: includes/i18n.php:103
97
  msgid "No commitment for %s - cancel anytime"
98
  msgstr "No commitment for %s - cancel anytime"
99
 
100
- #: includes/i18n.php:105
101
  msgid "After your free %s, pay as little as %s"
102
  msgstr "After your free %s, pay as little as %s"
103
 
104
- #: includes/i18n.php:107
105
  msgid "Details"
106
  msgstr "Details"
107
 
108
- #: includes/i18n.php:109
109
  msgid "Account Details"
110
  msgstr "Account Details"
111
 
112
- #: includes/i18n.php:111
113
  msgctxt "verb"
114
  msgid "Delete"
115
  msgstr "Delete"
116
 
117
- #: includes/i18n.php:113
118
  msgctxt "verb"
119
  msgid "Show"
120
  msgstr "Show"
121
 
122
- #: includes/i18n.php:115
123
  msgctxt "verb"
124
  msgid "Hide"
125
  msgstr "Hide"
126
 
127
- #: includes/i18n.php:117
128
  msgctxt "verb"
129
  msgid "Edit"
130
  msgstr "Edit"
131
 
132
- #: includes/i18n.php:119
133
  msgctxt "verb"
134
  msgid "Update"
135
  msgstr "Update"
136
 
137
- #: includes/i18n.php:121
138
  msgid "Date"
139
  msgstr "Date"
140
 
141
- #: includes/i18n.php:123
142
  msgid "Amount"
143
  msgstr "Amount"
144
 
145
- #: includes/i18n.php:125
146
  msgid "Invoice"
147
  msgstr "Invoice"
148
 
149
- #: includes/i18n.php:127
150
  msgid "Billing"
151
  msgstr "Billing"
152
 
153
- #: includes/i18n.php:129
154
  msgid "Payments"
155
  msgstr "Payments"
156
 
157
- #: includes/i18n.php:131
158
  msgid "Delete Account"
159
  msgstr "Delete Account"
160
 
161
- #: includes/i18n.php:133
162
  msgctxt "as close a window"
163
  msgid "Dismiss"
164
  msgstr "Dismiss"
165
 
166
- #: includes/i18n.php:135
167
  msgctxt "as product pricing plan"
168
  msgid "Plan"
169
  msgstr "Plan"
170
 
171
- #: includes/i18n.php:137
172
  msgid "Change Plan"
173
  msgstr "Change Plan"
174
 
175
- #: includes/i18n.php:139
176
  msgctxt "as download professional version"
177
  msgid "Download %s Version"
178
  msgstr "Download %s Version"
179
 
180
- #: includes/i18n.php:141
181
  msgctxt "as download professional version now"
182
  msgid "Download %s version now"
183
  msgstr "Download %s version now"
184
 
185
- #: includes/i18n.php:145
186
  msgctxt "as download latest version"
187
  msgid "Download Latest"
188
  msgstr "Download Latest"
189
 
190
- #: includes/i18n.php:147
191
  msgctxt "E.g. you have a professional license."
192
  msgid "You have a %s license."
193
  msgstr "You have a %s license."
194
 
195
- #: includes/i18n.php:151
196
  msgid "New"
197
  msgstr "New"
198
 
199
- #: includes/i18n.php:153
200
  msgid "Free"
201
  msgstr "Free"
202
 
203
- #: includes/i18n.php:155
204
  msgctxt "as trial plan"
205
  msgid "Trial"
206
  msgstr "Trial"
207
 
208
- #: includes/i18n.php:157
209
  msgctxt "as starting a trial plan"
210
  msgid "Start Trial"
211
  msgstr "Start Trial"
212
 
213
- #: includes/i18n.php:159
214
  msgctxt "verb"
215
  msgid "Purchase"
216
  msgstr "Purchase"
217
 
218
- #: includes/i18n.php:161
219
  msgid "Purchase License"
220
  msgstr "Purchase License"
221
 
222
- #: includes/i18n.php:163
223
  msgctxt "verb"
224
  msgid "Buy"
225
  msgstr "Buy"
226
 
227
- #: includes/i18n.php:165
228
  msgid "Buy License"
229
  msgstr "Buy License"
230
 
231
- #: includes/i18n.php:167
232
  msgid "Single Site License"
233
  msgstr "Single Site License"
234
 
235
- #: includes/i18n.php:169
236
  msgid "Unlimited Licenses"
237
  msgstr "Unlimited Licenses"
238
 
239
- #: includes/i18n.php:171
240
  msgid "Up to %s Sites"
241
  msgstr "Up to %s Sites"
242
 
243
- #: includes/i18n.php:173
244
  msgid "%sRenew your license now%s to access version %s features and support."
245
  msgstr "%sRenew your license now%s to access version %s features and support."
246
 
247
- #: includes/i18n.php:177
248
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
249
  msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
250
 
251
- #: includes/i18n.php:181
252
  msgctxt "e.g. Professional Plan"
253
  msgid "%s Plan"
254
  msgstr "%s Plan"
255
 
256
- #: includes/i18n.php:183
257
  msgid "You are just one step away - %s"
258
  msgstr "You are just one step away - %s"
259
 
260
- #: includes/i18n.php:185
261
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
262
  msgid "Complete \"%s\" Activation Now"
263
  msgstr "Complete \"%s\" Activation Now"
264
 
265
- #: includes/i18n.php:189
266
  msgid "We made a few tweaks to the plugin, %s"
267
  msgstr "We made a few tweaks to the plugin, %s"
268
 
269
- #: includes/i18n.php:191
270
  msgid "Opt-in to make \"%s\" Better!"
271
  msgstr "Opt-in to make \"%s\" Better!"
272
 
273
- #: includes/i18n.php:193
274
  msgid "Error"
275
  msgstr "Error"
276
 
277
- #: includes/i18n.php:195
278
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
279
  msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
280
 
281
- #: includes/i18n.php:203
282
  msgctxt "as expiration date"
283
  msgid "Expiration"
284
  msgstr "Expiration"
285
 
286
- #: includes/i18n.php:205
287
  msgctxt "as software license"
288
  msgid "License"
289
  msgstr "License"
290
 
291
- #: includes/i18n.php:207
292
  msgid "not verified"
293
  msgstr "not verified"
294
 
295
- #: includes/i18n.php:209
296
  msgid "Verify Email"
297
  msgstr "Verify Email"
298
 
299
- #: includes/i18n.php:211
300
  msgctxt "e.g. expires in 2 months"
301
  msgid "Expires in %s"
302
  msgstr "Expires in %s"
303
 
304
- #: includes/i18n.php:213
305
  msgctxt "e.g. auto renews in 2 months"
306
  msgid "Auto renews in %s"
307
  msgstr "Auto renews in %s"
308
 
309
- #: includes/i18n.php:215
310
  msgid "No expiration"
311
  msgstr "No expiration"
312
 
313
- #: includes/i18n.php:217
314
  msgid "Expired"
315
  msgstr "Expired"
316
 
317
- #: includes/i18n.php:219
318
  msgid "Cancelled"
319
  msgstr "Cancelled"
320
 
321
- #: includes/i18n.php:221
322
  msgctxt "e.g. In 2 hours"
323
  msgid "In %s"
324
  msgstr "In %s"
325
 
326
- #: includes/i18n.php:223
327
  msgctxt "e.g. 2 min ago"
328
  msgid "%s ago"
329
  msgstr "%s ago"
330
 
331
- #: includes/i18n.php:225
 
 
 
 
332
  msgctxt "as plugin version"
333
  msgid "Version"
334
  msgstr "Version"
335
 
336
- #: includes/i18n.php:227
337
  msgid "Name"
338
  msgstr "Name"
339
 
340
- #: includes/i18n.php:229
341
  msgid "Email"
342
  msgstr "Email"
343
 
344
- #: includes/i18n.php:231
345
  msgid "Email address"
346
  msgstr "Email address"
347
 
348
- #: includes/i18n.php:233
349
  msgid "Verified"
350
  msgstr "Verified"
351
 
352
- #: includes/i18n.php:235
 
 
 
 
 
 
 
 
353
  msgid "Plugin"
354
  msgstr "Plugin"
355
 
356
- #: includes/i18n.php:237
357
  msgid "Plugins"
358
  msgstr "Plugins"
359
 
360
- #: includes/i18n.php:239
 
 
 
 
361
  msgid "Themes"
362
  msgstr "Themes"
363
 
364
- #: includes/i18n.php:241
365
  msgctxt "as file/folder path"
366
  msgid "Path"
367
  msgstr "Path"
368
 
369
- #: includes/i18n.php:243
370
  msgid "Title"
371
  msgstr "Title"
372
 
373
- #: includes/i18n.php:245
374
  msgid "Free version"
375
  msgstr "Free version"
376
 
377
- #: includes/i18n.php:247
378
  msgid "Premium version"
379
  msgstr "Premium version"
380
 
381
- #: includes/i18n.php:249
382
  msgctxt "as WP plugin slug"
383
  msgid "Slug"
384
  msgstr "Slug"
385
 
386
- #: includes/i18n.php:251
387
  msgid "ID"
388
  msgstr "ID"
389
 
390
- #: includes/i18n.php:253
391
  msgid "Users"
392
  msgstr "Users"
393
 
394
- #: includes/i18n.php:255
395
  msgid "Plugin Installs"
396
  msgstr "Plugin Installs"
397
 
398
- #: includes/i18n.php:257
 
 
 
 
399
  msgctxt "like websites"
400
  msgid "Sites"
401
  msgstr "Sites"
402
 
403
- #: includes/i18n.php:259
404
  msgid "User ID"
405
  msgstr "User ID"
406
 
407
- #: includes/i18n.php:261
408
  msgid "Site ID"
409
  msgstr "Site ID"
410
 
411
- #: includes/i18n.php:263
412
  msgid "Public Key"
413
  msgstr "Public Key"
414
 
415
- #: includes/i18n.php:265
416
  msgid "Secret Key"
417
  msgstr "Secret Key"
418
 
419
- #: includes/i18n.php:267
420
  msgctxt "as secret encryption key missing"
421
  msgid "No Secret"
422
  msgstr "No Secret"
423
 
424
- #: includes/i18n.php:269
425
  msgid "No ID"
426
  msgstr "No ID"
427
 
428
- #: includes/i18n.php:271
429
  msgctxt "as synchronize license"
430
  msgid "Sync License"
431
  msgstr "Sync License"
432
 
433
- #: includes/i18n.php:273
434
  msgctxt "as synchronize"
435
  msgid "Sync"
436
  msgstr "Sync"
437
 
438
- #: includes/i18n.php:275
439
  msgid "Activate License"
440
  msgstr "Activate License"
441
 
442
- #: includes/i18n.php:277
443
  msgid "Activate Free Version"
444
  msgstr "Activate Free Version"
445
 
446
- #: includes/i18n.php:279
447
  msgid "Please enter the license key that you received in the email right after the purchase:"
448
  msgstr "Please enter the license key that you received in the email right after the purchase:"
449
 
450
- #: includes/i18n.php:283
451
  msgid "Activating license..."
452
  msgstr "Activating license..."
453
 
454
- #: includes/i18n.php:285
455
  msgid "Change License"
456
  msgstr "Change License"
457
 
458
- #: includes/i18n.php:287
459
  msgid "Update License"
460
  msgstr "Update License"
461
 
462
- #: includes/i18n.php:289
463
  msgid "Deactivate License"
464
  msgstr "Deactivate License"
465
 
466
- #: includes/i18n.php:291
467
  msgid "Activate"
468
  msgstr "Activate"
469
 
470
- #: includes/i18n.php:293
471
  msgid "Deactivate"
472
  msgstr "Deactivate"
473
 
474
- #: includes/i18n.php:295
475
  msgid "Skip & Deactivate"
476
  msgstr "Skip & Deactivate"
477
 
478
- #: includes/i18n.php:297
 
 
 
 
479
  msgid "No - just deactivate"
480
  msgstr "No - just deactivate"
481
 
482
- #: includes/i18n.php:299
483
  msgid "Yes - do your thing"
484
  msgstr "Yes - do your thing"
485
 
486
- #: includes/i18n.php:301
487
  msgctxt "active mode"
488
  msgid "Active"
489
  msgstr "Active"
490
 
491
- #: includes/i18n.php:303
492
  msgctxt "is active mode?"
493
  msgid "Is Active"
494
  msgstr "Is Active"
495
 
496
- #: includes/i18n.php:305
497
  msgid "Install Now"
498
  msgstr "Install Now"
499
 
500
- #: includes/i18n.php:307
501
  msgid "Install Update Now"
502
  msgstr "Install Update Now"
503
 
504
- #: includes/i18n.php:309
505
  msgid "More information about %s"
506
  msgstr "More information about %s"
507
 
508
- #: includes/i18n.php:311
509
  msgid "Localhost"
510
  msgstr "Localhost"
511
 
512
- #: includes/i18n.php:313
513
  msgctxt "as activate Professional plan"
514
  msgid "Activate %s Plan"
515
  msgstr "Activate %s Plan"
516
 
517
- #: includes/i18n.php:315
518
  msgctxt "as 5 licenses left"
519
  msgid "%s left"
520
  msgstr "%s left"
521
 
522
- #: includes/i18n.php:317
523
  msgid "Last license"
524
  msgstr "Last license"
525
 
526
- #: includes/i18n.php:319
527
  msgid "What is your %s?"
528
  msgstr "What is your %s?"
529
 
530
- #: includes/i18n.php:321
531
  msgid "Activate this add-on"
532
  msgstr "Activate this add-on"
533
 
534
- #: includes/i18n.php:323
535
  msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
536
  msgstr "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
537
 
538
- #: includes/i18n.php:327
539
  msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
540
  msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
541
 
542
- #: includes/i18n.php:331
543
  msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
544
  msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
545
 
546
- #: includes/i18n.php:335
547
  msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
548
  msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
549
 
550
- #: includes/i18n.php:339
551
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
552
  msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
553
 
554
- #: includes/i18n.php:343
555
  msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
556
  msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
557
 
558
- #: includes/i18n.php:347
559
- msgid "Once your license expire you can still use the Free version but you will NOT have access to the %s features."
560
- msgstr "Once your license expire you can still use the Free version but you will NOT have access to the %s features."
561
 
562
- #: includes/i18n.php:351
563
  msgid "Are you sure you want to proceed?"
564
  msgstr "Are you sure you want to proceed?"
565
 
566
- #: includes/i18n.php:357
567
  msgid "Add Ons for %s"
568
  msgstr "Add Ons for %s"
569
 
570
- #: includes/i18n.php:359
571
  msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
572
  msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
573
 
574
- #: includes/i18n.php:365
575
  msgid "Anonymous feedback"
576
  msgstr "Anonymous feedback"
577
 
578
- #: includes/i18n.php:367
579
  msgid "Quick feedback"
580
  msgstr "Quick feedback"
581
 
582
- #: includes/i18n.php:369
583
  msgid "If you have a moment, please let us know why you are deactivating"
584
  msgstr "If you have a moment, please let us know why you are deactivating"
585
 
586
- #: includes/i18n.php:373
587
  msgid "Yes - Deactivate"
588
  msgstr "Yes - Deactivate"
589
 
590
- #: includes/i18n.php:375
591
  msgid "Submit & Deactivate"
592
  msgstr "Submit & Deactivate"
593
 
594
- #: includes/i18n.php:377
595
  msgid "Cancel"
596
  msgstr "Cancel"
597
 
598
- #: includes/i18n.php:379
599
  msgid "I no longer need the plugin"
600
  msgstr "I no longer need the plugin"
601
 
602
- #: includes/i18n.php:381
603
  msgid "I found a better plugin"
604
  msgstr "I found a better plugin"
605
 
606
- #: includes/i18n.php:383
607
  msgid "I only needed the plugin for a short period"
608
  msgstr "I only needed the plugin for a short period"
609
 
610
- #: includes/i18n.php:385
611
  msgid "The plugin broke my site"
612
  msgstr "The plugin broke my site"
613
 
614
- #: includes/i18n.php:387
615
  msgid "The plugin suddenly stopped working"
616
  msgstr "The plugin suddenly stopped working"
617
 
618
- #: includes/i18n.php:389
619
  msgid "I can't pay for it anymore"
620
  msgstr "I can't pay for it anymore"
621
 
622
- #: includes/i18n.php:391
623
  msgid "It's a temporary deactivation. I'm just debugging an issue."
624
  msgstr "It's a temporary deactivation. I'm just debugging an issue."
625
 
626
- #: includes/i18n.php:395
627
  msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
628
  msgid "Other"
629
  msgstr "Other"
630
 
631
- #: includes/i18n.php:399
632
  msgid "Kindly tell us the reason so we can improve."
633
  msgstr "Kindly tell us the reason so we can improve."
634
 
635
- #: includes/i18n.php:401
636
  msgid "What's the plugin's name?"
637
  msgstr "What's the plugin's name?"
638
 
639
- #: includes/i18n.php:403
640
  msgid "What price would you feel comfortable paying?"
641
  msgstr "What price would you feel comfortable paying?"
642
 
643
- #: includes/i18n.php:405
644
  msgid "I couldn't understand how to make it work"
645
  msgstr "I couldn't understand how to make it work"
646
 
647
- #: includes/i18n.php:407
648
  msgid "The plugin is great, but I need specific feature that you don't support"
649
  msgstr "The plugin is great, but I need specific feature that you don't support"
650
 
651
- #: includes/i18n.php:411
652
  msgid "The plugin is not working"
653
  msgstr "The plugin is not working"
654
 
655
- #: includes/i18n.php:413
656
  msgid "It's not what I was looking for"
657
  msgstr "It's not what I was looking for"
658
 
659
- #: includes/i18n.php:415
660
  msgid "The plugin didn't work as expected"
661
  msgstr "The plugin didn't work as expected"
662
 
663
- #: includes/i18n.php:417
664
  msgid "What feature?"
665
  msgstr "What feature?"
666
 
667
- #: includes/i18n.php:419
668
  msgid "Kindly share what didn't work so we can fix it for future users..."
669
  msgstr "Kindly share what didn't work so we can fix it for future users..."
670
 
671
- #: includes/i18n.php:423
672
  msgid "What you've been looking for?"
673
  msgstr "What you've been looking for?"
674
 
675
- #: includes/i18n.php:425
676
  msgid "What did you expect?"
677
  msgstr "What did you expect?"
678
 
679
- #: includes/i18n.php:427
680
  msgid "The plugin didn't work"
681
  msgstr "The plugin didn't work"
682
 
683
- #: includes/i18n.php:429
684
  msgid "I don't like to share my information with you"
685
  msgstr "I don't like to share my information with you"
686
 
687
- #: includes/i18n.php:431
688
  msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
689
  msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
690
 
691
- #: includes/i18n.php:441
692
  msgctxt "greeting"
693
  msgid "Hey %s,"
694
  msgstr "Hey %s,"
695
 
696
- #: includes/i18n.php:443
697
  msgctxt "a greeting. E.g. Thanks John!"
698
  msgid "Thanks %s!"
699
  msgstr "Thanks %s!"
700
 
701
- #: includes/i18n.php:445
702
  msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
703
  msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
704
 
705
- #: includes/i18n.php:449
706
  msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
707
  msgstr "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
708
 
709
- #: includes/i18n.php:453
710
  msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
711
  msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
712
 
713
- #: includes/i18n.php:455
714
  msgid "complete the install"
715
  msgstr "complete the install"
716
 
717
- #: includes/i18n.php:457
718
  msgid "start the trial"
719
  msgstr "start the trial"
720
 
721
- #: includes/i18n.php:459
722
  msgid "Thanks for purchasing %s! To get started, please enter your license key:"
723
  msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
724
 
725
- #: includes/i18n.php:463
726
  msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
727
  msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
728
 
729
- #: includes/i18n.php:467
730
  msgid "What permissions are being granted?"
731
  msgstr "What permissions are being granted?"
732
 
733
- #: includes/i18n.php:469
734
  msgid "Your Profile Overview"
735
  msgstr "Your Profile Overview"
736
 
737
- #: includes/i18n.php:471
738
  msgid "Name and email address"
739
  msgstr "Name and email address"
740
 
741
- #: includes/i18n.php:473
742
  msgid "Your Site Overview"
743
  msgstr "Your Site Overview"
744
 
745
- #: includes/i18n.php:475
746
  msgid "Site URL, WP version, PHP info, plugins & themes"
747
  msgstr "Site URL, WP version, PHP info, plugins & themes"
748
 
749
- #: includes/i18n.php:479
750
  msgid "Current Plugin Events"
751
  msgstr "Current Plugin Events"
752
 
753
- #: includes/i18n.php:481
754
  msgid "Activation, deactivation and uninstall"
755
  msgstr "Activation, deactivation and uninstall"
756
 
757
- #: includes/i18n.php:483
758
  msgid "Plugins & Themes"
759
  msgstr "Plugins & Themes"
760
 
761
- #: includes/i18n.php:485
762
  msgid "Titles, versions and state."
763
  msgstr "Titles, versions and state."
764
 
765
- #: includes/i18n.php:487
766
  msgid "Admin Notices"
767
  msgstr "Admin Notices"
768
 
769
- #: includes/i18n.php:489
770
  msgid "Newsletter"
771
  msgstr "Newsletter"
772
 
773
- #: includes/i18n.php:491
774
  msgid "Updates, announcements, marketing, no spam"
775
  msgstr "Updates, announcements, marketing, no spam"
776
 
777
- #: includes/i18n.php:493
778
  msgid "Privacy Policy"
779
  msgstr "Privacy Policy"
780
 
781
- #: includes/i18n.php:495
782
  msgid "Terms of Service"
783
  msgstr "Terms of Service"
784
 
785
- #: includes/i18n.php:497
786
  msgctxt "as activating plugin"
787
  msgid "Activating"
788
  msgstr "Activating"
789
 
790
- #: includes/i18n.php:499
791
  msgctxt "as in the process of sending an email"
792
  msgid "Sending email"
793
  msgstr "Sending email"
794
 
795
- #: includes/i18n.php:503
796
  msgctxt "button label"
797
  msgid "Allow & Continue"
798
  msgstr "Allow & Continue"
799
 
800
- #: includes/i18n.php:505
801
  msgctxt "button label"
802
  msgid "Agree & Activate License"
803
  msgstr "Agree & Activate License"
804
 
805
- #: includes/i18n.php:507
806
  msgctxt "verb"
807
  msgid "Skip"
808
  msgstr "Skip"
809
 
810
- #: includes/i18n.php:509
811
  msgid "Click here to use the plugin anonymously"
812
  msgstr "Click here to use the plugin anonymously"
813
 
814
- #: includes/i18n.php:511
815
  msgid "Re-send activation email"
816
  msgstr "Re-send activation email"
817
 
818
- #: includes/i18n.php:513
819
  msgid "License key"
820
  msgstr "License key"
821
 
822
- #: includes/i18n.php:515
823
  msgid "Send License Key"
824
  msgstr "Send License Key"
825
 
826
- #: includes/i18n.php:517
827
  msgid "Sending license key"
828
  msgstr "Sending license key"
829
 
830
- #: includes/i18n.php:519
831
  msgid "Have a license key?"
832
  msgstr "Have a license key?"
833
 
834
- #: includes/i18n.php:521
835
  msgid "Don't have a license key?"
836
  msgstr "Don't have a license key?"
837
 
838
- #: includes/i18n.php:523
839
  msgid "Can't find your license key?"
840
  msgstr "Can't find your license key?"
841
 
842
- #: includes/i18n.php:525
843
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
844
  msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
845
 
846
- #: includes/i18n.php:529
847
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
848
  msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
849
 
850
- #: includes/i18n.php:533
851
  msgid "Opt In"
852
  msgstr "Opt In"
853
 
854
- #: includes/i18n.php:535
855
  msgid "Opt Out"
856
  msgstr "Opt Out"
857
 
858
- #: includes/i18n.php:537
859
  msgid "On second thought - I want to continue helping"
860
  msgstr "On second thought - I want to continue helping"
861
 
862
- #: includes/i18n.php:541
863
  msgid "Opting out..."
864
  msgstr "Opting out..."
865
 
866
- #: includes/i18n.php:543
867
  msgid "Opting in..."
868
  msgstr "Opting in..."
869
 
870
- #: includes/i18n.php:545
871
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
872
  msgstr "We appreciate your help in making the %s better by letting us track some usage data."
873
 
874
- #: includes/i18n.php:549
875
  msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
876
  msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
877
 
878
- #: includes/i18n.php:553
879
  msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
880
  msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
881
 
882
- #: includes/i18n.php:563
883
  msgid "Screenshots"
884
  msgstr "Screenshots"
885
 
886
- #: includes/i18n.php:565
887
  msgid "Click to view full-size screenshot %d"
888
  msgstr "Click to view full-size screenshot %d"
889
 
890
- #: includes/i18n.php:573
891
  msgid "Freemius Debug"
892
  msgstr "Freemius Debug"
893
 
894
- #: includes/i18n.php:575
895
  msgctxt "as turned on"
896
  msgid "On"
897
  msgstr "On"
898
 
899
- #: includes/i18n.php:577
900
  msgctxt "as turned off"
901
  msgid "Off"
902
  msgstr "Off"
903
 
904
- #: includes/i18n.php:579
905
  msgctxt "as code debugging"
906
  msgid "Debugging"
907
  msgstr "Debugging"
908
 
909
- #: includes/i18n.php:581
910
  msgid "Freemius State"
911
  msgstr "Freemius State"
912
 
913
- #: includes/i18n.php:583
914
  msgctxt "as connection was successful"
915
  msgid "Connected"
916
  msgstr "Connected"
917
 
918
- #: includes/i18n.php:585
919
  msgctxt "as connection blocked"
920
  msgid "Blocked"
921
  msgstr "Blocked"
922
 
923
- #: includes/i18n.php:587
924
  msgctxt "as application program interface"
925
  msgid "API"
926
  msgstr "API"
927
 
928
- #: includes/i18n.php:589
929
  msgctxt "as software development kit versions"
930
  msgid "SDK"
931
  msgstr "SDK"
932
 
933
- #: includes/i18n.php:591
934
  msgctxt "as software development kit versions"
935
  msgid "SDK Versions"
936
  msgstr "SDK Versions"
937
 
938
- #: includes/i18n.php:595
939
  msgctxt "as plugin folder path"
940
  msgid "Plugin Path"
941
  msgstr "Plugin Path"
942
 
943
- #: includes/i18n.php:597
944
  msgctxt "as sdk path"
945
  msgid "SDK Path"
946
  msgstr "SDK Path"
947
 
948
- #: includes/i18n.php:599
949
  msgid "Add Ons of Plugin %s"
950
  msgstr "Add Ons of Plugin %s"
951
 
952
- #: includes/i18n.php:601
953
  msgid "Are you sure you want to delete all Freemius data?"
954
  msgstr "Are you sure you want to delete all Freemius data?"
955
 
956
- #: includes/i18n.php:605
957
  msgid "Actions"
958
  msgstr "Actions"
959
 
960
- #: includes/i18n.php:607
961
  msgid "Delete All Accounts"
962
  msgstr "Delete All Accounts"
963
 
964
- #: includes/i18n.php:609
965
  msgid "Start Fresh"
966
  msgstr "Start Fresh"
967
 
968
- #: includes/i18n.php:611
969
  msgid "Clear API Cache"
970
  msgstr "Clear API Cache"
971
 
972
- #: includes/i18n.php:613
973
  msgid "Sync Data From Server"
974
  msgstr "Sync Data From Server"
975
 
976
- #: includes/i18n.php:615
977
  msgid "Scheduled Crons"
978
  msgstr "Scheduled Crons"
979
 
980
- #: includes/i18n.php:617
 
 
 
 
981
  msgid "Plugins & Themes Sync"
982
  msgstr "Plugins & Themes Sync"
983
 
984
- #: includes/i18n.php:625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
985
  msgctxt "as congratulations"
986
  msgid "Congrats"
987
  msgstr "Congrats"
988
 
989
- #: includes/i18n.php:627
990
  msgctxt "exclamation"
991
  msgid "Oops"
992
  msgstr "Oops"
993
 
994
- #: includes/i18n.php:629
995
  msgctxt "interjection expressing joy or exuberance"
996
  msgid "Yee-haw"
997
  msgstr "Yee-haw"
998
 
999
- #: includes/i18n.php:633
1000
  msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1001
  msgid "W00t"
1002
  msgstr "W00t"
1003
 
1004
- #: includes/i18n.php:637
1005
  msgctxt "a positive response"
1006
  msgid "Right on"
1007
  msgstr "Right on"
1008
 
1009
- #: includes/i18n.php:639
1010
  msgctxt "something somebody says when they are thinking about what you have just said. "
1011
  msgid "Hmm"
1012
  msgstr "Hmm"
1013
 
1014
- #: includes/i18n.php:643
1015
  msgid "O.K"
1016
  msgstr "O.K"
1017
 
1018
- #: includes/i18n.php:645
1019
  msgctxt "exclamation"
1020
  msgid "Hey"
1021
  msgstr "Hey"
1022
 
1023
- #: includes/i18n.php:647
1024
  msgctxt "advance notice of something that will need attention."
1025
  msgid "Heads up"
1026
  msgstr "Heads up"
1027
 
1028
- #: includes/i18n.php:657
1029
  msgid "Seems like you got the latest release."
1030
  msgstr "Seems like you got the latest release."
1031
 
1032
- #: includes/i18n.php:659
1033
  msgid "You are all good!"
1034
  msgstr "You are all good!"
1035
 
1036
- #: includes/i18n.php:661
1037
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1038
  msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
1039
 
1040
- #: includes/i18n.php:665
1041
  msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1042
  msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1043
 
1044
- #: includes/i18n.php:669
1045
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1046
  msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1047
 
1048
- #: includes/i18n.php:673
1049
  msgid "Your name was successfully updated."
1050
  msgstr "Your name was successfully updated."
1051
 
1052
- #: includes/i18n.php:675
1053
  msgid "You have successfully updated your %s."
1054
  msgstr "You have successfully updated your %s."
1055
 
1056
- #: includes/i18n.php:677
1057
  msgid "Please provide your full name."
1058
  msgstr "Please provide your full name."
1059
 
1060
- #: includes/i18n.php:679
1061
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1062
  msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1063
 
1064
- #: includes/i18n.php:683
1065
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1066
  msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
1067
 
1068
- #: includes/i18n.php:687
1069
  msgid "No credit card required"
1070
  msgstr "No credit card required"
1071
 
1072
- #: includes/i18n.php:689
1073
  msgid "Premium plugin version was successfully activated."
1074
  msgstr "Premium plugin version was successfully activated."
1075
 
1076
- #: includes/i18n.php:693
1077
  msgid "The upgrade of %s was successfully completed."
1078
  msgstr "The upgrade of %s was successfully completed."
1079
 
1080
- #: includes/i18n.php:695
1081
  msgid "Your account was successfully activated with the %s plan."
1082
  msgstr "Your account was successfully activated with the %s plan."
1083
 
1084
- #: includes/i18n.php:699
1085
  msgid "Download the latest %s version now"
1086
  msgstr "Download the latest %s version now"
1087
 
1088
- #: includes/i18n.php:701
1089
  msgid "Please follow these steps to complete the upgrade"
1090
  msgstr "Please follow these steps to complete the upgrade"
1091
 
1092
- #: includes/i18n.php:705
1093
  msgid "Download the latest %s version"
1094
  msgstr "Download the latest %s version"
1095
 
1096
- #: includes/i18n.php:707
1097
  msgid "Download the latest version"
1098
  msgstr "Download the latest version"
1099
 
1100
- #: includes/i18n.php:709
1101
  msgid "Deactivate the free version"
1102
  msgstr "Deactivate the free version"
1103
 
1104
- #: includes/i18n.php:711
1105
  msgid "Upload and activate the downloaded version"
1106
  msgstr "Upload and activate the downloaded version"
1107
 
1108
- #: includes/i18n.php:713
1109
  msgid "How to upload and activate?"
1110
  msgstr "How to upload and activate?"
1111
 
1112
- #: includes/i18n.php:715
1113
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1114
  msgid "%s Add-on was successfully purchased."
1115
  msgstr "%s Add-on was successfully purchased."
1116
 
1117
- #: includes/i18n.php:719
1118
  msgid "Your %s Add-on plan was successfully upgraded."
1119
  msgstr "Your %s Add-on plan was successfully upgraded."
1120
 
1121
- #: includes/i18n.php:723
1122
  msgid "Your email has been successfully verified - you are AWESOME!"
1123
  msgstr "Your email has been successfully verified - you are AWESOME!"
1124
 
1125
- #: includes/i18n.php:727
1126
  msgid "Your plan was successfully upgraded."
1127
  msgstr "Your plan was successfully upgraded."
1128
 
1129
- #: includes/i18n.php:729
1130
  msgid "Your plan was successfully changed to %s."
1131
  msgstr "Your plan was successfully changed to %s."
1132
 
1133
- #: includes/i18n.php:731
1134
  msgid "Your license has expired. You can still continue using the free plugin forever."
1135
  msgstr "Your license has expired. You can still continue using the free plugin forever."
1136
 
1137
- #: includes/i18n.php:735
1138
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1139
  msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
1140
 
1141
- #: includes/i18n.php:739
1142
  msgid "Your trial has been successfully started."
1143
  msgstr "Your trial has been successfully started."
1144
 
1145
- #: includes/i18n.php:741
1146
  msgid "Your license was successfully activated."
1147
  msgstr "Your license was successfully activated."
1148
 
1149
- #: includes/i18n.php:743
1150
  msgid "It looks like your site currently doesn't have an active license."
1151
  msgstr "It looks like your site currently doesn't have an active license."
1152
 
1153
- #: includes/i18n.php:747
1154
  msgid "Your license was successfully deactivated, you are back to the %s plan."
1155
  msgstr "Your license was successfully deactivated, you are back to the %s plan."
1156
 
1157
- #: includes/i18n.php:751
1158
  msgid "It looks like the license deactivation failed."
1159
  msgstr "It looks like the license deactivation failed."
1160
 
1161
- #: includes/i18n.php:755
1162
  msgid "It looks like the license could not be activated."
1163
  msgstr "It looks like the license could not be activated."
1164
 
1165
- #: includes/i18n.php:759
1166
  msgid "Error received from the server:"
1167
  msgstr "Error received from the server:"
1168
 
1169
- #: includes/i18n.php:761
1170
  msgid "Your trial has expired. You can still continue using all our free features."
1171
  msgstr "Your trial has expired. You can still continue using all our free features."
1172
 
1173
- #: includes/i18n.php:765
1174
  msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1175
  msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1176
 
1177
- #: includes/i18n.php:769
1178
  msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1179
  msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1180
 
1181
- #: includes/i18n.php:773
1182
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1183
  msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1184
 
1185
- #: includes/i18n.php:777
1186
  msgid "Your %s free trial was successfully cancelled."
1187
  msgstr "Your %s free trial was successfully cancelled."
1188
 
1189
- #: includes/i18n.php:781
1190
  msgctxt "%s - numeric version number"
1191
  msgid "Version %s was released."
1192
  msgstr "Version %s was released."
1193
 
1194
- #: includes/i18n.php:785
1195
  msgid "Please download %s."
1196
  msgstr "Please download %s."
1197
 
1198
- #: includes/i18n.php:787
1199
  msgctxt "%s - plan name, as the latest professional version here"
1200
  msgid "the latest %s version here"
1201
  msgstr "the latest %s version here"
1202
 
1203
- #: includes/i18n.php:791
1204
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1205
  msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1206
 
1207
- #: includes/i18n.php:795
1208
  msgctxt "call to action"
1209
  msgid "Start free trial"
1210
  msgstr "Start free trial"
1211
 
1212
- #: includes/i18n.php:797
1213
  msgid "Starting trial"
1214
  msgstr "Starting trial"
1215
 
1216
- #: includes/i18n.php:799
1217
  msgid "Please wait"
1218
  msgstr "Please wait"
1219
 
1220
- #: includes/i18n.php:801
1221
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1222
  msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1223
 
1224
- #: includes/i18n.php:805
1225
  msgid "You already utilized a trial before."
1226
  msgstr "You already utilized a trial before."
1227
 
1228
- #: includes/i18n.php:807
1229
  msgid "You are already running the plugin in a trial mode."
1230
  msgstr "You are already running the plugin in a trial mode."
1231
 
1232
- #: includes/i18n.php:811
1233
  msgid "Plan %s do not exist, therefore, can't start a trial."
1234
  msgstr "Plan %s do not exist, therefore, can't start a trial."
1235
 
1236
- #: includes/i18n.php:815
1237
  msgid "Plan %s does not support a trial period."
1238
  msgstr "Plan %s does not support a trial period."
1239
 
1240
- #: includes/i18n.php:817
1241
  msgid "None of the plugin's plans supports a trial period."
1242
  msgstr "None of the plugin's plans supports a trial period."
1243
 
1244
- #: includes/i18n.php:821
1245
  msgid "Unexpected API error. Please contact the plugin's author with the following error."
1246
  msgstr "Unexpected API error. Please contact the plugin's author with the following error."
1247
 
1248
- #: includes/i18n.php:825
1249
  msgid "No commitment for %s days - cancel anytime!"
1250
  msgstr "No commitment for %s days - cancel anytime!"
1251
 
1252
- #: includes/i18n.php:827
1253
  msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
1254
  msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
1255
 
1256
- #: includes/i18n.php:831
1257
  msgid "Couldn't activate %s."
1258
  msgstr "Couldn't activate %s."
1259
 
1260
- #: includes/i18n.php:833
1261
  msgid "Please contact us with the following message:"
1262
  msgstr "Please contact us with the following message:"
1263
 
1264
- #: includes/i18n.php:835
1265
  msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
1266
  msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
1267
 
1268
- #: includes/i18n.php:839
1269
  msgid "Please contact us here"
1270
  msgstr "Please contact us here"
1271
 
1272
- #: includes/i18n.php:841
1273
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1274
  msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1275
 
1276
- #: includes/i18n.php:849
1277
  msgid "From unknown reason, the API connectivity test failed."
1278
  msgstr "From unknown reason, the API connectivity test failed."
1279
 
1280
- #: includes/i18n.php:853
1281
  msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1282
  msgstr "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1283
 
1284
- #: includes/i18n.php:857
1285
  msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
1286
  msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
1287
 
1288
- #: includes/i18n.php:861
1289
  msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1290
  msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1291
 
1292
- #: includes/i18n.php:865
1293
  msgctxt "as pluginX requires an access to our API"
1294
  msgid "%s requires an access to our API."
1295
  msgstr "%s requires an access to our API."
1296
 
1297
- #: includes/i18n.php:869
1298
  msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1299
  msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1300
 
1301
- #: includes/i18n.php:873
1302
  msgid "I don't know what is Squid or ACL, help me!"
1303
  msgstr "I don't know what is Squid or ACL, help me!"
1304
 
1305
- #: includes/i18n.php:875, includes/i18n.php:889
1306
  msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
1307
  msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
1308
 
1309
- #: includes/i18n.php:879
1310
  msgid "I'm a system administrator"
1311
  msgstr "I'm a system administrator"
1312
 
1313
- #: includes/i18n.php:881
1314
- msgid "Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again."
1315
- msgstr "Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again."
1316
 
1317
- #: includes/i18n.php:885
1318
  msgid "I don't know what is cURL or how to install it, help me!"
1319
  msgstr "I don't know what is cURL or how to install it, help me!"
1320
 
1321
- #: includes/i18n.php:893
1322
  msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
1323
  msgstr "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
1324
 
1325
- #: includes/i18n.php:897
1326
  msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1327
  msgstr "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1328
 
1329
- #: includes/i18n.php:901
1330
  msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1331
  msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
1332
 
1333
- #: includes/i18n.php:905
1334
  msgid "Yes - I'm giving you a chance to fix it"
1335
  msgstr "Yes - I'm giving you a chance to fix it"
1336
 
1337
- #: includes/i18n.php:907
1338
  msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1339
  msgstr "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1340
 
1341
- #: includes/i18n.php:911
1342
  msgid "Let's try your previous version"
1343
  msgstr "Let's try your previous version"
1344
 
1345
- #: includes/i18n.php:913
1346
  msgid "Uninstall this version and install the previous one."
1347
  msgstr "Uninstall this version and install the previous one."
1348
 
1349
- #: includes/i18n.php:917
1350
  msgid "That's exhausting, please deactivate"
1351
  msgstr "That's exhausting, please deactivate"
1352
 
1353
- #: includes/i18n.php:919
1354
  msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1355
  msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1356
 
1357
- #: includes/i18n.php:923
1358
  msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
1359
  msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
1360
 
1361
- #: includes/i18n.php:927
1362
  msgctxt "%1s - plugin title, %2s - API domain"
1363
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1364
  msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1365
 
1366
- #: includes/i18n.php:931
1367
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1368
  msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1369
 
1370
- #: includes/i18n.php:939
1371
  msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
1372
  msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
1373
 
1374
- #: includes/i18n.php:943
1375
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1376
  msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1377
 
1378
- #: includes/i18n.php:947
1379
  msgid "%s is the new owner of the account."
1380
  msgstr "%s is the new owner of the account."
1381
 
1382
- #: includes/i18n.php:951
1383
  msgctxt "addonX cannot run without pluginY"
1384
  msgid "%s cannot run without %s."
1385
  msgstr "%s cannot run without %s."
1386
 
1387
- #: includes/i18n.php:955
1388
  msgctxt "addonX cannot run..."
1389
  msgid "%s cannot run without the plugin."
1390
  msgstr "%s cannot run without the plugin."
1391
 
1392
- #: includes/i18n.php:959
1393
  msgctxt "pluginX activation was successfully..."
1394
  msgid "%s activation was successfully completed."
1395
  msgstr "%s activation was successfully completed."
1396
 
1397
- #: includes/i18n.php:963
1398
  msgctxt "Plugin installer section title"
1399
  msgid "Features & Pricing"
1400
  msgstr "Features & Pricing"
1401
 
1402
- #: includes/i18n.php:967
1403
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1404
  msgstr "Add-on must be deployed to WordPress.org or Freemius."
1405
 
1406
- #: includes/i18n.php:971
1407
  msgid "Paid add-on must be deployed to Freemius."
1408
  msgstr "Paid add-on must be deployed to Freemius."
1409
 
1410
- #: includes/i18n.php:979
1411
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1412
  msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1413
 
1414
- #: includes/i18n.php:983
1415
  msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
1416
  msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
1417
 
1418
- #: includes/i18n.php:995
1419
  msgctxt "as every month"
1420
  msgid "Monthly"
1421
  msgstr "Monthly"
1422
 
1423
- #: includes/i18n.php:997
1424
  msgctxt "as monthly period"
1425
  msgid "mo"
1426
  msgstr "mo"
1427
 
1428
- #: includes/i18n.php:999
1429
  msgctxt "as once a year"
1430
  msgid "Annual"
1431
  msgstr "Annual"
1432
 
1433
- #: includes/i18n.php:1001
1434
  msgctxt "as once a year"
1435
  msgid "Annually"
1436
  msgstr "Annually"
1437
 
1438
- #: includes/i18n.php:1003
1439
  msgctxt "as once a year"
1440
  msgid "Once"
1441
  msgstr "Once"
1442
 
1443
- #: includes/i18n.php:1005
1444
  msgctxt "as annual period"
1445
  msgid "year"
1446
  msgstr "year"
1447
 
1448
- #: includes/i18n.php:1007
1449
  msgid "Lifetime"
1450
  msgstr "Lifetime"
1451
 
1452
- #: includes/i18n.php:1009
1453
  msgctxt "e.g. the best product"
1454
  msgid "Best"
1455
  msgstr "Best"
1456
 
1457
- #: includes/i18n.php:1011
1458
  msgctxt "e.g. billed monthly"
1459
  msgid "Billed %s"
1460
  msgstr "Billed %s"
1461
 
1462
- #: includes/i18n.php:1013
1463
  msgctxt "as a discount of $5 or 10%"
1464
  msgid "Save %s"
1465
  msgstr "Save %s"
1466
 
1467
- #: includes/i18n.php:1017
1468
  msgid "View details"
1469
  msgstr "View details"
1470
 
1471
- #: includes/i18n.php:1025
1472
  msgctxt "button label"
1473
  msgid "Approve & Start Trial"
1474
  msgstr "Approve & Start Trial"
1475
 
1476
- #: includes/i18n.php:1029
1477
  msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1478
  msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1479
 
1480
- #: includes/i18n.php:1033
1481
  msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
1482
  msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
1483
 
1484
- #: includes/i18n.php:1045
1485
  msgid "Business name"
1486
  msgstr "Business name"
1487
 
1488
- #: includes/i18n.php:1047
1489
  msgid "Tax / VAT ID"
1490
  msgstr "Tax / VAT ID"
1491
 
1492
- #: includes/i18n.php:1049
1493
  msgid "Address Line %d"
1494
  msgstr "Address Line %d"
1495
 
1496
- #: includes/i18n.php:1051
1497
  msgid "Country"
1498
  msgstr "Country"
1499
 
1500
- #: includes/i18n.php:1053
1501
  msgid "Select Country"
1502
  msgstr "Select Country"
1503
 
1504
- #: includes/i18n.php:1055
1505
  msgid "City"
1506
  msgstr "City"
1507
 
1508
- #: includes/i18n.php:1057
1509
  msgid "Town"
1510
  msgstr "Town"
1511
 
1512
- #: includes/i18n.php:1059
1513
  msgid "State"
1514
  msgstr "State"
1515
 
1516
- #: includes/i18n.php:1061
1517
  msgid "Province"
1518
  msgstr "Province"
1519
 
1520
- #: includes/i18n.php:1063
1521
  msgid "ZIP / Postal Code"
1522
  msgstr "ZIP / Postal Code"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: freemius\n"
6
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
7
  "POT-Creation-Date: \n"
8
  "PO-Revision-Date: \n"
9
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
10
  "Language: \n"
11
+ "Language-Team: Freemius Team <admin@freemius.com>\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "MIME-Version: 1.0\n"
16
+ "X-Poedit-Basepath: ..\n"
17
+ "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
20
+ "X-Poedit-SourceCharset: UTF-8\n"
21
+
22
+ #: includes/i18n.php:37
 
 
 
 
23
  msgid "Account"
24
  msgstr "Account"
25
 
26
+ #: includes/i18n.php:38
27
  msgid "Add On"
28
  msgstr "Add On"
29
 
30
+ #: includes/i18n.php:39
31
  msgid "Contact Us"
32
  msgstr "Contact Us"
33
 
34
+ #: includes/i18n.php:40
35
  msgid "Contact Support"
36
  msgstr "Contact Support"
37
 
38
+ #: includes/i18n.php:41
39
  msgid "Change Ownership"
40
  msgstr "Change Ownership"
41
 
42
+ #: includes/i18n.php:42
43
  msgid "Support"
44
  msgstr "Support"
45
 
46
+ #: includes/i18n.php:43
47
  msgid "Support Forum"
48
  msgstr "Support Forum"
49
 
50
+ #: includes/i18n.php:44
51
  msgid "Add Ons"
52
  msgstr "Add Ons"
53
 
54
+ #: includes/i18n.php:45
55
  msgctxt "verb"
56
  msgid "Upgrade"
57
  msgstr "Upgrade"
58
 
59
+ #: includes/i18n.php:46
60
  msgid "Awesome"
61
  msgstr "Awesome"
62
 
63
+ #: includes/i18n.php:47
64
  msgctxt "noun"
65
  msgid "Pricing"
66
  msgstr "Pricing"
67
 
68
+ #: includes/i18n.php:48
69
  msgctxt "noun"
70
  msgid "Price"
71
  msgstr "Price"
72
 
73
+ #: includes/i18n.php:49
74
  msgid "Unlimited Updates"
75
  msgstr "Unlimited Updates"
76
 
77
+ #: includes/i18n.php:50
78
  msgctxt "verb"
79
  msgid "Downgrade"
80
  msgstr "Downgrade"
81
 
82
+ #: includes/i18n.php:51
83
  msgid "Cancel Trial"
84
  msgstr "Cancel Trial"
85
 
86
+ #: includes/i18n.php:52
87
  msgid "Free Trial"
88
  msgstr "Free Trial"
89
 
90
+ #: includes/i18n.php:53
91
  msgid "Start my free %s"
92
  msgstr "Start my free %s"
93
 
94
+ #: includes/i18n.php:54
95
  msgid "No commitment for %s - cancel anytime"
96
  msgstr "No commitment for %s - cancel anytime"
97
 
98
+ #: includes/i18n.php:55
99
  msgid "After your free %s, pay as little as %s"
100
  msgstr "After your free %s, pay as little as %s"
101
 
102
+ #: includes/i18n.php:56
103
  msgid "Details"
104
  msgstr "Details"
105
 
106
+ #: includes/i18n.php:57
107
  msgid "Account Details"
108
  msgstr "Account Details"
109
 
110
+ #: includes/i18n.php:58
111
  msgctxt "verb"
112
  msgid "Delete"
113
  msgstr "Delete"
114
 
115
+ #: includes/i18n.php:59
116
  msgctxt "verb"
117
  msgid "Show"
118
  msgstr "Show"
119
 
120
+ #: includes/i18n.php:60
121
  msgctxt "verb"
122
  msgid "Hide"
123
  msgstr "Hide"
124
 
125
+ #: includes/i18n.php:61
126
  msgctxt "verb"
127
  msgid "Edit"
128
  msgstr "Edit"
129
 
130
+ #: includes/i18n.php:62
131
  msgctxt "verb"
132
  msgid "Update"
133
  msgstr "Update"
134
 
135
+ #: includes/i18n.php:63
136
  msgid "Date"
137
  msgstr "Date"
138
 
139
+ #: includes/i18n.php:64
140
  msgid "Amount"
141
  msgstr "Amount"
142
 
143
+ #: includes/i18n.php:65
144
  msgid "Invoice"
145
  msgstr "Invoice"
146
 
147
+ #: includes/i18n.php:66
148
  msgid "Billing"
149
  msgstr "Billing"
150
 
151
+ #: includes/i18n.php:67
152
  msgid "Payments"
153
  msgstr "Payments"
154
 
155
+ #: includes/i18n.php:68
156
  msgid "Delete Account"
157
  msgstr "Delete Account"
158
 
159
+ #: includes/i18n.php:69
160
  msgctxt "as close a window"
161
  msgid "Dismiss"
162
  msgstr "Dismiss"
163
 
164
+ #: includes/i18n.php:70
165
  msgctxt "as product pricing plan"
166
  msgid "Plan"
167
  msgstr "Plan"
168
 
169
+ #: includes/i18n.php:71
170
  msgid "Change Plan"
171
  msgstr "Change Plan"
172
 
173
+ #: includes/i18n.php:72
174
  msgctxt "as download professional version"
175
  msgid "Download %s Version"
176
  msgstr "Download %s Version"
177
 
178
+ #: includes/i18n.php:73
179
  msgctxt "as download professional version now"
180
  msgid "Download %s version now"
181
  msgstr "Download %s version now"
182
 
183
+ #: includes/i18n.php:74
184
  msgctxt "as download latest version"
185
  msgid "Download Latest"
186
  msgstr "Download Latest"
187
 
188
+ #: includes/i18n.php:75
189
  msgctxt "E.g. you have a professional license."
190
  msgid "You have a %s license."
191
  msgstr "You have a %s license."
192
 
193
+ #: includes/i18n.php:76
194
  msgid "New"
195
  msgstr "New"
196
 
197
+ #: includes/i18n.php:77
198
  msgid "Free"
199
  msgstr "Free"
200
 
201
+ #: includes/i18n.php:78
202
  msgctxt "as trial plan"
203
  msgid "Trial"
204
  msgstr "Trial"
205
 
206
+ #: includes/i18n.php:79
207
  msgctxt "as starting a trial plan"
208
  msgid "Start Trial"
209
  msgstr "Start Trial"
210
 
211
+ #: includes/i18n.php:80
212
  msgctxt "verb"
213
  msgid "Purchase"
214
  msgstr "Purchase"
215
 
216
+ #: includes/i18n.php:81
217
  msgid "Purchase License"
218
  msgstr "Purchase License"
219
 
220
+ #: includes/i18n.php:82
221
  msgctxt "verb"
222
  msgid "Buy"
223
  msgstr "Buy"
224
 
225
+ #: includes/i18n.php:83
226
  msgid "Buy License"
227
  msgstr "Buy License"
228
 
229
+ #: includes/i18n.php:84
230
  msgid "Single Site License"
231
  msgstr "Single Site License"
232
 
233
+ #: includes/i18n.php:85
234
  msgid "Unlimited Licenses"
235
  msgstr "Unlimited Licenses"
236
 
237
+ #: includes/i18n.php:86
238
  msgid "Up to %s Sites"
239
  msgstr "Up to %s Sites"
240
 
241
+ #: includes/i18n.php:87
242
  msgid "%sRenew your license now%s to access version %s features and support."
243
  msgstr "%sRenew your license now%s to access version %s features and support."
244
 
245
+ #: includes/i18n.php:88
246
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
247
  msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
248
 
249
+ #: includes/i18n.php:89
250
  msgctxt "e.g. Professional Plan"
251
  msgid "%s Plan"
252
  msgstr "%s Plan"
253
 
254
+ #: includes/i18n.php:90
255
  msgid "You are just one step away - %s"
256
  msgstr "You are just one step away - %s"
257
 
258
+ #: includes/i18n.php:91
259
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
260
  msgid "Complete \"%s\" Activation Now"
261
  msgstr "Complete \"%s\" Activation Now"
262
 
263
+ #: includes/i18n.php:93
264
  msgid "We made a few tweaks to the plugin, %s"
265
  msgstr "We made a few tweaks to the plugin, %s"
266
 
267
+ #: includes/i18n.php:94
268
  msgid "Opt-in to make \"%s\" Better!"
269
  msgstr "Opt-in to make \"%s\" Better!"
270
 
271
+ #: includes/i18n.php:95
272
  msgid "Error"
273
  msgstr "Error"
274
 
275
+ #: includes/i18n.php:96
276
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
277
  msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
278
 
279
+ #: includes/i18n.php:99
280
  msgctxt "as expiration date"
281
  msgid "Expiration"
282
  msgstr "Expiration"
283
 
284
+ #: includes/i18n.php:100
285
  msgctxt "as software license"
286
  msgid "License"
287
  msgstr "License"
288
 
289
+ #: includes/i18n.php:101
290
  msgid "not verified"
291
  msgstr "not verified"
292
 
293
+ #: includes/i18n.php:102
294
  msgid "Verify Email"
295
  msgstr "Verify Email"
296
 
297
+ #: includes/i18n.php:103
298
  msgctxt "e.g. expires in 2 months"
299
  msgid "Expires in %s"
300
  msgstr "Expires in %s"
301
 
302
+ #: includes/i18n.php:104
303
  msgctxt "e.g. auto renews in 2 months"
304
  msgid "Auto renews in %s"
305
  msgstr "Auto renews in %s"
306
 
307
+ #: includes/i18n.php:105
308
  msgid "No expiration"
309
  msgstr "No expiration"
310
 
311
+ #: includes/i18n.php:106
312
  msgid "Expired"
313
  msgstr "Expired"
314
 
315
+ #: includes/i18n.php:107
316
  msgid "Cancelled"
317
  msgstr "Cancelled"
318
 
319
+ #: includes/i18n.php:108
320
  msgctxt "e.g. In 2 hours"
321
  msgid "In %s"
322
  msgstr "In %s"
323
 
324
+ #: includes/i18n.php:109
325
  msgctxt "e.g. 2 min ago"
326
  msgid "%s ago"
327
  msgstr "%s ago"
328
 
329
+ #: includes/i18n.php:111
330
+ msgid "%s or higher"
331
+ msgstr "%s or higher"
332
+
333
+ #: includes/i18n.php:112
334
  msgctxt "as plugin version"
335
  msgid "Version"
336
  msgstr "Version"
337
 
338
+ #: includes/i18n.php:113
339
  msgid "Name"
340
  msgstr "Name"
341
 
342
+ #: includes/i18n.php:114
343
  msgid "Email"
344
  msgstr "Email"
345
 
346
+ #: includes/i18n.php:115
347
  msgid "Email address"
348
  msgstr "Email address"
349
 
350
+ #: includes/i18n.php:116
351
  msgid "Verified"
352
  msgstr "Verified"
353
 
354
+ #: includes/i18n.php:117
355
+ msgid "Module"
356
+ msgstr "Module"
357
+
358
+ #: includes/i18n.php:118
359
+ msgid "Module Type"
360
+ msgstr "Module Type"
361
+
362
+ #: includes/i18n.php:119
363
  msgid "Plugin"
364
  msgstr "Plugin"
365
 
366
+ #: includes/i18n.php:120
367
  msgid "Plugins"
368
  msgstr "Plugins"
369
 
370
+ #: includes/i18n.php:121
371
+ msgid "Theme"
372
+ msgstr "Theme"
373
+
374
+ #: includes/i18n.php:122
375
  msgid "Themes"
376
  msgstr "Themes"
377
 
378
+ #: includes/i18n.php:123
379
  msgctxt "as file/folder path"
380
  msgid "Path"
381
  msgstr "Path"
382
 
383
+ #: includes/i18n.php:124
384
  msgid "Title"
385
  msgstr "Title"
386
 
387
+ #: includes/i18n.php:125
388
  msgid "Free version"
389
  msgstr "Free version"
390
 
391
+ #: includes/i18n.php:126
392
  msgid "Premium version"
393
  msgstr "Premium version"
394
 
395
+ #: includes/i18n.php:127
396
  msgctxt "as WP plugin slug"
397
  msgid "Slug"
398
  msgstr "Slug"
399
 
400
+ #: includes/i18n.php:128
401
  msgid "ID"
402
  msgstr "ID"
403
 
404
+ #: includes/i18n.php:129
405
  msgid "Users"
406
  msgstr "Users"
407
 
408
+ #: includes/i18n.php:130
409
  msgid "Plugin Installs"
410
  msgstr "Plugin Installs"
411
 
412
+ #: includes/i18n.php:131
413
+ msgid "%s Installs"
414
+ msgstr "%s Installs"
415
+
416
+ #: includes/i18n.php:132
417
  msgctxt "like websites"
418
  msgid "Sites"
419
  msgstr "Sites"
420
 
421
+ #: includes/i18n.php:133
422
  msgid "User ID"
423
  msgstr "User ID"
424
 
425
+ #: includes/i18n.php:134
426
  msgid "Site ID"
427
  msgstr "Site ID"
428
 
429
+ #: includes/i18n.php:135
430
  msgid "Public Key"
431
  msgstr "Public Key"
432
 
433
+ #: includes/i18n.php:136
434
  msgid "Secret Key"
435
  msgstr "Secret Key"
436
 
437
+ #: includes/i18n.php:137
438
  msgctxt "as secret encryption key missing"
439
  msgid "No Secret"
440
  msgstr "No Secret"
441
 
442
+ #: includes/i18n.php:138
443
  msgid "No ID"
444
  msgstr "No ID"
445
 
446
+ #: includes/i18n.php:139
447
  msgctxt "as synchronize license"
448
  msgid "Sync License"
449
  msgstr "Sync License"
450
 
451
+ #: includes/i18n.php:140
452
  msgctxt "as synchronize"
453
  msgid "Sync"
454
  msgstr "Sync"
455
 
456
+ #: includes/i18n.php:141
457
  msgid "Activate License"
458
  msgstr "Activate License"
459
 
460
+ #: includes/i18n.php:142
461
  msgid "Activate Free Version"
462
  msgstr "Activate Free Version"
463
 
464
+ #: includes/i18n.php:143
465
  msgid "Please enter the license key that you received in the email right after the purchase:"
466
  msgstr "Please enter the license key that you received in the email right after the purchase:"
467
 
468
+ #: includes/i18n.php:144
469
  msgid "Activating license..."
470
  msgstr "Activating license..."
471
 
472
+ #: includes/i18n.php:145
473
  msgid "Change License"
474
  msgstr "Change License"
475
 
476
+ #: includes/i18n.php:146
477
  msgid "Update License"
478
  msgstr "Update License"
479
 
480
+ #: includes/i18n.php:147
481
  msgid "Deactivate License"
482
  msgstr "Deactivate License"
483
 
484
+ #: includes/i18n.php:148
485
  msgid "Activate"
486
  msgstr "Activate"
487
 
488
+ #: includes/i18n.php:149
489
  msgid "Deactivate"
490
  msgstr "Deactivate"
491
 
492
+ #: includes/i18n.php:150
493
  msgid "Skip & Deactivate"
494
  msgstr "Skip & Deactivate"
495
 
496
+ #: includes/i18n.php:151
497
+ msgid "Skip & %s"
498
+ msgstr "Skip & %s"
499
+
500
+ #: includes/i18n.php:152
501
  msgid "No - just deactivate"
502
  msgstr "No - just deactivate"
503
 
504
+ #: includes/i18n.php:153
505
  msgid "Yes - do your thing"
506
  msgstr "Yes - do your thing"
507
 
508
+ #: includes/i18n.php:154
509
  msgctxt "active mode"
510
  msgid "Active"
511
  msgstr "Active"
512
 
513
+ #: includes/i18n.php:155
514
  msgctxt "is active mode?"
515
  msgid "Is Active"
516
  msgstr "Is Active"
517
 
518
+ #: includes/i18n.php:156
519
  msgid "Install Now"
520
  msgstr "Install Now"
521
 
522
+ #: includes/i18n.php:157
523
  msgid "Install Update Now"
524
  msgstr "Install Update Now"
525
 
526
+ #: includes/i18n.php:158
527
  msgid "More information about %s"
528
  msgstr "More information about %s"
529
 
530
+ #: includes/i18n.php:159
531
  msgid "Localhost"
532
  msgstr "Localhost"
533
 
534
+ #: includes/i18n.php:160
535
  msgctxt "as activate Professional plan"
536
  msgid "Activate %s Plan"
537
  msgstr "Activate %s Plan"
538
 
539
+ #: includes/i18n.php:161
540
  msgctxt "as 5 licenses left"
541
  msgid "%s left"
542
  msgstr "%s left"
543
 
544
+ #: includes/i18n.php:162
545
  msgid "Last license"
546
  msgstr "Last license"
547
 
548
+ #: includes/i18n.php:163
549
  msgid "What is your %s?"
550
  msgstr "What is your %s?"
551
 
552
+ #: includes/i18n.php:164
553
  msgid "Activate this add-on"
554
  msgstr "Activate this add-on"
555
 
556
+ #: includes/i18n.php:165
557
  msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
558
  msgstr "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
559
 
560
+ #: includes/i18n.php:166
561
  msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
562
  msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
563
 
564
+ #: includes/i18n.php:167
565
  msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
566
  msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
567
 
568
+ #: includes/i18n.php:168
569
  msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
570
  msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
571
 
572
+ #: includes/i18n.php:169
573
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
574
  msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
575
 
576
+ #: includes/i18n.php:170
577
  msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
578
  msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
579
 
580
+ #: includes/i18n.php:171
581
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
582
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
583
 
584
+ #: includes/i18n.php:172
585
  msgid "Are you sure you want to proceed?"
586
  msgstr "Are you sure you want to proceed?"
587
 
588
+ #: includes/i18n.php:175
589
  msgid "Add Ons for %s"
590
  msgstr "Add Ons for %s"
591
 
592
+ #: includes/i18n.php:176
593
  msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
594
  msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
595
 
596
+ #: includes/i18n.php:178
597
  msgid "Anonymous feedback"
598
  msgstr "Anonymous feedback"
599
 
600
+ #: includes/i18n.php:179
601
  msgid "Quick feedback"
602
  msgstr "Quick feedback"
603
 
604
+ #: includes/i18n.php:180
605
  msgid "If you have a moment, please let us know why you are deactivating"
606
  msgstr "If you have a moment, please let us know why you are deactivating"
607
 
608
+ #: includes/i18n.php:181
609
  msgid "Yes - Deactivate"
610
  msgstr "Yes - Deactivate"
611
 
612
+ #: includes/i18n.php:182
613
  msgid "Submit & Deactivate"
614
  msgstr "Submit & Deactivate"
615
 
616
+ #: includes/i18n.php:183
617
  msgid "Cancel"
618
  msgstr "Cancel"
619
 
620
+ #: includes/i18n.php:184
621
  msgid "I no longer need the plugin"
622
  msgstr "I no longer need the plugin"
623
 
624
+ #: includes/i18n.php:185
625
  msgid "I found a better plugin"
626
  msgstr "I found a better plugin"
627
 
628
+ #: includes/i18n.php:186
629
  msgid "I only needed the plugin for a short period"
630
  msgstr "I only needed the plugin for a short period"
631
 
632
+ #: includes/i18n.php:187
633
  msgid "The plugin broke my site"
634
  msgstr "The plugin broke my site"
635
 
636
+ #: includes/i18n.php:188
637
  msgid "The plugin suddenly stopped working"
638
  msgstr "The plugin suddenly stopped working"
639
 
640
+ #: includes/i18n.php:189
641
  msgid "I can't pay for it anymore"
642
  msgstr "I can't pay for it anymore"
643
 
644
+ #: includes/i18n.php:190
645
  msgid "It's a temporary deactivation. I'm just debugging an issue."
646
  msgstr "It's a temporary deactivation. I'm just debugging an issue."
647
 
648
+ #: includes/i18n.php:191
649
  msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
650
  msgid "Other"
651
  msgstr "Other"
652
 
653
+ #: includes/i18n.php:193
654
  msgid "Kindly tell us the reason so we can improve."
655
  msgstr "Kindly tell us the reason so we can improve."
656
 
657
+ #: includes/i18n.php:194
658
  msgid "What's the plugin's name?"
659
  msgstr "What's the plugin's name?"
660
 
661
+ #: includes/i18n.php:195
662
  msgid "What price would you feel comfortable paying?"
663
  msgstr "What price would you feel comfortable paying?"
664
 
665
+ #: includes/i18n.php:196
666
  msgid "I couldn't understand how to make it work"
667
  msgstr "I couldn't understand how to make it work"
668
 
669
+ #: includes/i18n.php:197
670
  msgid "The plugin is great, but I need specific feature that you don't support"
671
  msgstr "The plugin is great, but I need specific feature that you don't support"
672
 
673
+ #: includes/i18n.php:198
674
  msgid "The plugin is not working"
675
  msgstr "The plugin is not working"
676
 
677
+ #: includes/i18n.php:199
678
  msgid "It's not what I was looking for"
679
  msgstr "It's not what I was looking for"
680
 
681
+ #: includes/i18n.php:200
682
  msgid "The plugin didn't work as expected"
683
  msgstr "The plugin didn't work as expected"
684
 
685
+ #: includes/i18n.php:201
686
  msgid "What feature?"
687
  msgstr "What feature?"
688
 
689
+ #: includes/i18n.php:202
690
  msgid "Kindly share what didn't work so we can fix it for future users..."
691
  msgstr "Kindly share what didn't work so we can fix it for future users..."
692
 
693
+ #: includes/i18n.php:203
694
  msgid "What you've been looking for?"
695
  msgstr "What you've been looking for?"
696
 
697
+ #: includes/i18n.php:204
698
  msgid "What did you expect?"
699
  msgstr "What did you expect?"
700
 
701
+ #: includes/i18n.php:205
702
  msgid "The plugin didn't work"
703
  msgstr "The plugin didn't work"
704
 
705
+ #: includes/i18n.php:206
706
  msgid "I don't like to share my information with you"
707
  msgstr "I don't like to share my information with you"
708
 
709
+ #: includes/i18n.php:207
710
  msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
711
  msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
712
 
713
+ #: includes/i18n.php:211
714
  msgctxt "greeting"
715
  msgid "Hey %s,"
716
  msgstr "Hey %s,"
717
 
718
+ #: includes/i18n.php:212
719
  msgctxt "a greeting. E.g. Thanks John!"
720
  msgid "Thanks %s!"
721
  msgstr "Thanks %s!"
722
 
723
+ #: includes/i18n.php:213
724
  msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
725
  msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
726
 
727
+ #: includes/i18n.php:214
728
  msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
729
  msgstr "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
730
 
731
+ #: includes/i18n.php:215
732
  msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
733
  msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
734
 
735
+ #: includes/i18n.php:216
736
  msgid "complete the install"
737
  msgstr "complete the install"
738
 
739
+ #: includes/i18n.php:217
740
  msgid "start the trial"
741
  msgstr "start the trial"
742
 
743
+ #: includes/i18n.php:218
744
  msgid "Thanks for purchasing %s! To get started, please enter your license key:"
745
  msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
746
 
747
+ #: includes/i18n.php:219
748
  msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
749
  msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
750
 
751
+ #: includes/i18n.php:220
752
  msgid "What permissions are being granted?"
753
  msgstr "What permissions are being granted?"
754
 
755
+ #: includes/i18n.php:221
756
  msgid "Your Profile Overview"
757
  msgstr "Your Profile Overview"
758
 
759
+ #: includes/i18n.php:222
760
  msgid "Name and email address"
761
  msgstr "Name and email address"
762
 
763
+ #: includes/i18n.php:223
764
  msgid "Your Site Overview"
765
  msgstr "Your Site Overview"
766
 
767
+ #: includes/i18n.php:224
768
  msgid "Site URL, WP version, PHP info, plugins & themes"
769
  msgstr "Site URL, WP version, PHP info, plugins & themes"
770
 
771
+ #: includes/i18n.php:225
772
  msgid "Current Plugin Events"
773
  msgstr "Current Plugin Events"
774
 
775
+ #: includes/i18n.php:226
776
  msgid "Activation, deactivation and uninstall"
777
  msgstr "Activation, deactivation and uninstall"
778
 
779
+ #: includes/i18n.php:227
780
  msgid "Plugins & Themes"
781
  msgstr "Plugins & Themes"
782
 
783
+ #: includes/i18n.php:228
784
  msgid "Titles, versions and state."
785
  msgstr "Titles, versions and state."
786
 
787
+ #: includes/i18n.php:229
788
  msgid "Admin Notices"
789
  msgstr "Admin Notices"
790
 
791
+ #: includes/i18n.php:230
792
  msgid "Newsletter"
793
  msgstr "Newsletter"
794
 
795
+ #: includes/i18n.php:231
796
  msgid "Updates, announcements, marketing, no spam"
797
  msgstr "Updates, announcements, marketing, no spam"
798
 
799
+ #: includes/i18n.php:232
800
  msgid "Privacy Policy"
801
  msgstr "Privacy Policy"
802
 
803
+ #: includes/i18n.php:233
804
  msgid "Terms of Service"
805
  msgstr "Terms of Service"
806
 
807
+ #: includes/i18n.php:234
808
  msgctxt "as activating plugin"
809
  msgid "Activating"
810
  msgstr "Activating"
811
 
812
+ #: includes/i18n.php:235
813
  msgctxt "as in the process of sending an email"
814
  msgid "Sending email"
815
  msgstr "Sending email"
816
 
817
+ #: includes/i18n.php:236
818
  msgctxt "button label"
819
  msgid "Allow & Continue"
820
  msgstr "Allow & Continue"
821
 
822
+ #: includes/i18n.php:237
823
  msgctxt "button label"
824
  msgid "Agree & Activate License"
825
  msgstr "Agree & Activate License"
826
 
827
+ #: includes/i18n.php:238
828
  msgctxt "verb"
829
  msgid "Skip"
830
  msgstr "Skip"
831
 
832
+ #: includes/i18n.php:239
833
  msgid "Click here to use the plugin anonymously"
834
  msgstr "Click here to use the plugin anonymously"
835
 
836
+ #: includes/i18n.php:240
837
  msgid "Re-send activation email"
838
  msgstr "Re-send activation email"
839
 
840
+ #: includes/i18n.php:241
841
  msgid "License key"
842
  msgstr "License key"
843
 
844
+ #: includes/i18n.php:242
845
  msgid "Send License Key"
846
  msgstr "Send License Key"
847
 
848
+ #: includes/i18n.php:243
849
  msgid "Sending license key"
850
  msgstr "Sending license key"
851
 
852
+ #: includes/i18n.php:244
853
  msgid "Have a license key?"
854
  msgstr "Have a license key?"
855
 
856
+ #: includes/i18n.php:245
857
  msgid "Don't have a license key?"
858
  msgstr "Don't have a license key?"
859
 
860
+ #: includes/i18n.php:246
861
  msgid "Can't find your license key?"
862
  msgstr "Can't find your license key?"
863
 
864
+ #: includes/i18n.php:247
865
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
866
  msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
867
 
868
+ #: includes/i18n.php:248
869
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
870
  msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
871
 
872
+ #: includes/i18n.php:249
873
  msgid "Opt In"
874
  msgstr "Opt In"
875
 
876
+ #: includes/i18n.php:250
877
  msgid "Opt Out"
878
  msgstr "Opt Out"
879
 
880
+ #: includes/i18n.php:251
881
  msgid "On second thought - I want to continue helping"
882
  msgstr "On second thought - I want to continue helping"
883
 
884
+ #: includes/i18n.php:252
885
  msgid "Opting out..."
886
  msgstr "Opting out..."
887
 
888
+ #: includes/i18n.php:253
889
  msgid "Opting in..."
890
  msgstr "Opting in..."
891
 
892
+ #: includes/i18n.php:254
893
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
894
  msgstr "We appreciate your help in making the %s better by letting us track some usage data."
895
 
896
+ #: includes/i18n.php:255
897
  msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
898
  msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
899
 
900
+ #: includes/i18n.php:256
901
  msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
902
  msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
903
 
904
+ #: includes/i18n.php:260
905
  msgid "Screenshots"
906
  msgstr "Screenshots"
907
 
908
+ #: includes/i18n.php:261
909
  msgid "Click to view full-size screenshot %d"
910
  msgstr "Click to view full-size screenshot %d"
911
 
912
+ #: includes/i18n.php:265
913
  msgid "Freemius Debug"
914
  msgstr "Freemius Debug"
915
 
916
+ #: includes/i18n.php:266
917
  msgctxt "as turned on"
918
  msgid "On"
919
  msgstr "On"
920
 
921
+ #: includes/i18n.php:267
922
  msgctxt "as turned off"
923
  msgid "Off"
924
  msgstr "Off"
925
 
926
+ #: includes/i18n.php:268
927
  msgctxt "as code debugging"
928
  msgid "Debugging"
929
  msgstr "Debugging"
930
 
931
+ #: includes/i18n.php:269
932
  msgid "Freemius State"
933
  msgstr "Freemius State"
934
 
935
+ #: includes/i18n.php:270
936
  msgctxt "as connection was successful"
937
  msgid "Connected"
938
  msgstr "Connected"
939
 
940
+ #: includes/i18n.php:271
941
  msgctxt "as connection blocked"
942
  msgid "Blocked"
943
  msgstr "Blocked"
944
 
945
+ #: includes/i18n.php:272
946
  msgctxt "as application program interface"
947
  msgid "API"
948
  msgstr "API"
949
 
950
+ #: includes/i18n.php:273
951
  msgctxt "as software development kit versions"
952
  msgid "SDK"
953
  msgstr "SDK"
954
 
955
+ #: includes/i18n.php:274
956
  msgctxt "as software development kit versions"
957
  msgid "SDK Versions"
958
  msgstr "SDK Versions"
959
 
960
+ #: includes/i18n.php:275
961
  msgctxt "as plugin folder path"
962
  msgid "Plugin Path"
963
  msgstr "Plugin Path"
964
 
965
+ #: includes/i18n.php:276
966
  msgctxt "as sdk path"
967
  msgid "SDK Path"
968
  msgstr "SDK Path"
969
 
970
+ #: includes/i18n.php:277
971
  msgid "Add Ons of Plugin %s"
972
  msgstr "Add Ons of Plugin %s"
973
 
974
+ #: includes/i18n.php:278
975
  msgid "Are you sure you want to delete all Freemius data?"
976
  msgstr "Are you sure you want to delete all Freemius data?"
977
 
978
+ #: includes/i18n.php:279
979
  msgid "Actions"
980
  msgstr "Actions"
981
 
982
+ #: includes/i18n.php:280
983
  msgid "Delete All Accounts"
984
  msgstr "Delete All Accounts"
985
 
986
+ #: includes/i18n.php:281
987
  msgid "Start Fresh"
988
  msgstr "Start Fresh"
989
 
990
+ #: includes/i18n.php:282
991
  msgid "Clear API Cache"
992
  msgstr "Clear API Cache"
993
 
994
+ #: includes/i18n.php:283
995
  msgid "Sync Data From Server"
996
  msgstr "Sync Data From Server"
997
 
998
+ #: includes/i18n.php:284
999
  msgid "Scheduled Crons"
1000
  msgstr "Scheduled Crons"
1001
 
1002
+ #: includes/i18n.php:285
1003
+ msgid "Cron Type"
1004
+ msgstr "Cron Type"
1005
+
1006
+ #: includes/i18n.php:286
1007
  msgid "Plugins & Themes Sync"
1008
  msgstr "Plugins & Themes Sync"
1009
 
1010
+ #: includes/i18n.php:287
1011
+ msgid "Licenses"
1012
+ msgstr "Licenses"
1013
+
1014
+ #: includes/i18n.php:288
1015
+ msgid "Debug Log"
1016
+ msgstr "Debug Log"
1017
+
1018
+ #: includes/i18n.php:289
1019
+ msgid "All"
1020
+ msgstr "All"
1021
+
1022
+ #: includes/i18n.php:290
1023
+ msgid "File"
1024
+ msgstr "File"
1025
+
1026
+ #: includes/i18n.php:291
1027
+ msgid "Function"
1028
+ msgstr "Function"
1029
+
1030
+ #: includes/i18n.php:292
1031
+ msgid "Process ID"
1032
+ msgstr "Process ID"
1033
+
1034
+ #: includes/i18n.php:293
1035
+ msgid "Logger"
1036
+ msgstr "Logger"
1037
+
1038
+ #: includes/i18n.php:294
1039
+ msgid "Message"
1040
+ msgstr "Message"
1041
+
1042
+ #: includes/i18n.php:295
1043
+ msgid "Download"
1044
+ msgstr "Download"
1045
+
1046
+ #: includes/i18n.php:296
1047
+ msgid "Filter"
1048
+ msgstr "Filter"
1049
+
1050
+ #: includes/i18n.php:297
1051
+ msgid "Type"
1052
+ msgstr "Type"
1053
+
1054
+ #: includes/i18n.php:298
1055
+ msgid "All Types"
1056
+ msgstr "All Types"
1057
+
1058
+ #: includes/i18n.php:299
1059
+ msgid "All Requests"
1060
+ msgstr "All Requests"
1061
+
1062
+ #: includes/i18n.php:303
1063
  msgctxt "as congratulations"
1064
  msgid "Congrats"
1065
  msgstr "Congrats"
1066
 
1067
+ #: includes/i18n.php:304
1068
  msgctxt "exclamation"
1069
  msgid "Oops"
1070
  msgstr "Oops"
1071
 
1072
+ #: includes/i18n.php:305
1073
  msgctxt "interjection expressing joy or exuberance"
1074
  msgid "Yee-haw"
1075
  msgstr "Yee-haw"
1076
 
1077
+ #: includes/i18n.php:306
1078
  msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1079
  msgid "W00t"
1080
  msgstr "W00t"
1081
 
1082
+ #: includes/i18n.php:308
1083
  msgctxt "a positive response"
1084
  msgid "Right on"
1085
  msgstr "Right on"
1086
 
1087
+ #: includes/i18n.php:309
1088
  msgctxt "something somebody says when they are thinking about what you have just said. "
1089
  msgid "Hmm"
1090
  msgstr "Hmm"
1091
 
1092
+ #: includes/i18n.php:311
1093
  msgid "O.K"
1094
  msgstr "O.K"
1095
 
1096
+ #: includes/i18n.php:312
1097
  msgctxt "exclamation"
1098
  msgid "Hey"
1099
  msgstr "Hey"
1100
 
1101
+ #: includes/i18n.php:313
1102
  msgctxt "advance notice of something that will need attention."
1103
  msgid "Heads up"
1104
  msgstr "Heads up"
1105
 
1106
+ #: includes/i18n.php:318
1107
  msgid "Seems like you got the latest release."
1108
  msgstr "Seems like you got the latest release."
1109
 
1110
+ #: includes/i18n.php:319
1111
  msgid "You are all good!"
1112
  msgstr "You are all good!"
1113
 
1114
+ #: includes/i18n.php:320
1115
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1116
  msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
1117
 
1118
+ #: includes/i18n.php:321
1119
  msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1120
  msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1121
 
1122
+ #: includes/i18n.php:322
1123
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1124
  msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1125
 
1126
+ #: includes/i18n.php:323
1127
  msgid "Your name was successfully updated."
1128
  msgstr "Your name was successfully updated."
1129
 
1130
+ #: includes/i18n.php:324
1131
  msgid "You have successfully updated your %s."
1132
  msgstr "You have successfully updated your %s."
1133
 
1134
+ #: includes/i18n.php:325
1135
  msgid "Please provide your full name."
1136
  msgstr "Please provide your full name."
1137
 
1138
+ #: includes/i18n.php:326
1139
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1140
  msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1141
 
1142
+ #: includes/i18n.php:327
1143
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1144
  msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
1145
 
1146
+ #: includes/i18n.php:328
1147
  msgid "No credit card required"
1148
  msgstr "No credit card required"
1149
 
1150
+ #: includes/i18n.php:329
1151
  msgid "Premium plugin version was successfully activated."
1152
  msgstr "Premium plugin version was successfully activated."
1153
 
1154
+ #: includes/i18n.php:330
1155
  msgid "The upgrade of %s was successfully completed."
1156
  msgstr "The upgrade of %s was successfully completed."
1157
 
1158
+ #: includes/i18n.php:331
1159
  msgid "Your account was successfully activated with the %s plan."
1160
  msgstr "Your account was successfully activated with the %s plan."
1161
 
1162
+ #: includes/i18n.php:332
1163
  msgid "Download the latest %s version now"
1164
  msgstr "Download the latest %s version now"
1165
 
1166
+ #: includes/i18n.php:333
1167
  msgid "Please follow these steps to complete the upgrade"
1168
  msgstr "Please follow these steps to complete the upgrade"
1169
 
1170
+ #: includes/i18n.php:334
1171
  msgid "Download the latest %s version"
1172
  msgstr "Download the latest %s version"
1173
 
1174
+ #: includes/i18n.php:335
1175
  msgid "Download the latest version"
1176
  msgstr "Download the latest version"
1177
 
1178
+ #: includes/i18n.php:336
1179
  msgid "Deactivate the free version"
1180
  msgstr "Deactivate the free version"
1181
 
1182
+ #: includes/i18n.php:337
1183
  msgid "Upload and activate the downloaded version"
1184
  msgstr "Upload and activate the downloaded version"
1185
 
1186
+ #: includes/i18n.php:338
1187
  msgid "How to upload and activate?"
1188
  msgstr "How to upload and activate?"
1189
 
1190
+ #: includes/i18n.php:339
1191
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1192
  msgid "%s Add-on was successfully purchased."
1193
  msgstr "%s Add-on was successfully purchased."
1194
 
1195
+ #: includes/i18n.php:341
1196
  msgid "Your %s Add-on plan was successfully upgraded."
1197
  msgstr "Your %s Add-on plan was successfully upgraded."
1198
 
1199
+ #: includes/i18n.php:342
1200
  msgid "Your email has been successfully verified - you are AWESOME!"
1201
  msgstr "Your email has been successfully verified - you are AWESOME!"
1202
 
1203
+ #: includes/i18n.php:343
1204
  msgid "Your plan was successfully upgraded."
1205
  msgstr "Your plan was successfully upgraded."
1206
 
1207
+ #: includes/i18n.php:344
1208
  msgid "Your plan was successfully changed to %s."
1209
  msgstr "Your plan was successfully changed to %s."
1210
 
1211
+ #: includes/i18n.php:345
1212
  msgid "Your license has expired. You can still continue using the free plugin forever."
1213
  msgstr "Your license has expired. You can still continue using the free plugin forever."
1214
 
1215
+ #: includes/i18n.php:346
1216
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1217
  msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
1218
 
1219
+ #: includes/i18n.php:347
1220
  msgid "Your trial has been successfully started."
1221
  msgstr "Your trial has been successfully started."
1222
 
1223
+ #: includes/i18n.php:348
1224
  msgid "Your license was successfully activated."
1225
  msgstr "Your license was successfully activated."
1226
 
1227
+ #: includes/i18n.php:349
1228
  msgid "It looks like your site currently doesn't have an active license."
1229
  msgstr "It looks like your site currently doesn't have an active license."
1230
 
1231
+ #: includes/i18n.php:350
1232
  msgid "Your license was successfully deactivated, you are back to the %s plan."
1233
  msgstr "Your license was successfully deactivated, you are back to the %s plan."
1234
 
1235
+ #: includes/i18n.php:351
1236
  msgid "It looks like the license deactivation failed."
1237
  msgstr "It looks like the license deactivation failed."
1238
 
1239
+ #: includes/i18n.php:352
1240
  msgid "It looks like the license could not be activated."
1241
  msgstr "It looks like the license could not be activated."
1242
 
1243
+ #: includes/i18n.php:353
1244
  msgid "Error received from the server:"
1245
  msgstr "Error received from the server:"
1246
 
1247
+ #: includes/i18n.php:354
1248
  msgid "Your trial has expired. You can still continue using all our free features."
1249
  msgstr "Your trial has expired. You can still continue using all our free features."
1250
 
1251
+ #: includes/i18n.php:355
1252
  msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1253
  msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1254
 
1255
+ #: includes/i18n.php:356
1256
  msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1257
  msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1258
 
1259
+ #: includes/i18n.php:357
1260
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1261
  msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1262
 
1263
+ #: includes/i18n.php:358
1264
  msgid "Your %s free trial was successfully cancelled."
1265
  msgstr "Your %s free trial was successfully cancelled."
1266
 
1267
+ #: includes/i18n.php:359
1268
  msgctxt "%s - numeric version number"
1269
  msgid "Version %s was released."
1270
  msgstr "Version %s was released."
1271
 
1272
+ #: includes/i18n.php:360
1273
  msgid "Please download %s."
1274
  msgstr "Please download %s."
1275
 
1276
+ #: includes/i18n.php:361
1277
  msgctxt "%s - plan name, as the latest professional version here"
1278
  msgid "the latest %s version here"
1279
  msgstr "the latest %s version here"
1280
 
1281
+ #: includes/i18n.php:363
1282
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1283
  msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1284
 
1285
+ #: includes/i18n.php:364
1286
  msgctxt "call to action"
1287
  msgid "Start free trial"
1288
  msgstr "Start free trial"
1289
 
1290
+ #: includes/i18n.php:365
1291
  msgid "Starting trial"
1292
  msgstr "Starting trial"
1293
 
1294
+ #: includes/i18n.php:366
1295
  msgid "Please wait"
1296
  msgstr "Please wait"
1297
 
1298
+ #: includes/i18n.php:367
1299
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1300
  msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1301
 
1302
+ #: includes/i18n.php:368
1303
  msgid "You already utilized a trial before."
1304
  msgstr "You already utilized a trial before."
1305
 
1306
+ #: includes/i18n.php:369
1307
  msgid "You are already running the plugin in a trial mode."
1308
  msgstr "You are already running the plugin in a trial mode."
1309
 
1310
+ #: includes/i18n.php:370
1311
  msgid "Plan %s do not exist, therefore, can't start a trial."
1312
  msgstr "Plan %s do not exist, therefore, can't start a trial."
1313
 
1314
+ #: includes/i18n.php:371
1315
  msgid "Plan %s does not support a trial period."
1316
  msgstr "Plan %s does not support a trial period."
1317
 
1318
+ #: includes/i18n.php:372
1319
  msgid "None of the plugin's plans supports a trial period."
1320
  msgstr "None of the plugin's plans supports a trial period."
1321
 
1322
+ #: includes/i18n.php:373
1323
  msgid "Unexpected API error. Please contact the plugin's author with the following error."
1324
  msgstr "Unexpected API error. Please contact the plugin's author with the following error."
1325
 
1326
+ #: includes/i18n.php:374
1327
  msgid "No commitment for %s days - cancel anytime!"
1328
  msgstr "No commitment for %s days - cancel anytime!"
1329
 
1330
+ #: includes/i18n.php:375
1331
  msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
1332
  msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
1333
 
1334
+ #: includes/i18n.php:376
1335
  msgid "Couldn't activate %s."
1336
  msgstr "Couldn't activate %s."
1337
 
1338
+ #: includes/i18n.php:377
1339
  msgid "Please contact us with the following message:"
1340
  msgstr "Please contact us with the following message:"
1341
 
1342
+ #: includes/i18n.php:378
1343
  msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
1344
  msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
1345
 
1346
+ #: includes/i18n.php:379
1347
  msgid "Please contact us here"
1348
  msgstr "Please contact us here"
1349
 
1350
+ #: includes/i18n.php:380
1351
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1352
  msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1353
 
1354
+ #: includes/i18n.php:383
1355
  msgid "From unknown reason, the API connectivity test failed."
1356
  msgstr "From unknown reason, the API connectivity test failed."
1357
 
1358
+ #: includes/i18n.php:384
1359
  msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1360
  msgstr "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1361
 
1362
+ #: includes/i18n.php:385
1363
  msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
1364
  msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
1365
 
1366
+ #: includes/i18n.php:386
1367
  msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1368
  msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1369
 
1370
+ #: includes/i18n.php:387
1371
  msgctxt "as pluginX requires an access to our API"
1372
  msgid "%s requires an access to our API."
1373
  msgstr "%s requires an access to our API."
1374
 
1375
+ #: includes/i18n.php:389
1376
  msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1377
  msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1378
 
1379
+ #: includes/i18n.php:390
1380
  msgid "I don't know what is Squid or ACL, help me!"
1381
  msgstr "I don't know what is Squid or ACL, help me!"
1382
 
1383
+ #: includes/i18n.php:391, includes/i18n.php:395
1384
  msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
1385
  msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
1386
 
1387
+ #: includes/i18n.php:392
1388
  msgid "I'm a system administrator"
1389
  msgstr "I'm a system administrator"
1390
 
1391
+ #: includes/i18n.php:393
1392
+ msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1393
+ msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1394
 
1395
+ #: includes/i18n.php:394
1396
  msgid "I don't know what is cURL or how to install it, help me!"
1397
  msgstr "I don't know what is cURL or how to install it, help me!"
1398
 
1399
+ #: includes/i18n.php:396
1400
  msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
1401
  msgstr "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
1402
 
1403
+ #: includes/i18n.php:397
1404
  msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1405
  msgstr "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1406
 
1407
+ #: includes/i18n.php:398
1408
  msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1409
  msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
1410
 
1411
+ #: includes/i18n.php:399
1412
  msgid "Yes - I'm giving you a chance to fix it"
1413
  msgstr "Yes - I'm giving you a chance to fix it"
1414
 
1415
+ #: includes/i18n.php:400
1416
  msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1417
  msgstr "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1418
 
1419
+ #: includes/i18n.php:401
1420
  msgid "Let's try your previous version"
1421
  msgstr "Let's try your previous version"
1422
 
1423
+ #: includes/i18n.php:402
1424
  msgid "Uninstall this version and install the previous one."
1425
  msgstr "Uninstall this version and install the previous one."
1426
 
1427
+ #: includes/i18n.php:403
1428
  msgid "That's exhausting, please deactivate"
1429
  msgstr "That's exhausting, please deactivate"
1430
 
1431
+ #: includes/i18n.php:404
1432
  msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1433
  msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1434
 
1435
+ #: includes/i18n.php:405
1436
  msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
1437
  msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
1438
 
1439
+ #: includes/i18n.php:406
1440
  msgctxt "%1s - plugin title, %2s - API domain"
1441
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1442
  msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1443
 
1444
+ #: includes/i18n.php:408
1445
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1446
  msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1447
 
1448
+ #: includes/i18n.php:411
1449
  msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
1450
  msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
1451
 
1452
+ #: includes/i18n.php:412
1453
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1454
  msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1455
 
1456
+ #: includes/i18n.php:413
1457
  msgid "%s is the new owner of the account."
1458
  msgstr "%s is the new owner of the account."
1459
 
1460
+ #: includes/i18n.php:415
1461
  msgctxt "addonX cannot run without pluginY"
1462
  msgid "%s cannot run without %s."
1463
  msgstr "%s cannot run without %s."
1464
 
1465
+ #: includes/i18n.php:417
1466
  msgctxt "addonX cannot run..."
1467
  msgid "%s cannot run without the plugin."
1468
  msgstr "%s cannot run without the plugin."
1469
 
1470
+ #: includes/i18n.php:418
1471
  msgctxt "pluginX activation was successfully..."
1472
  msgid "%s activation was successfully completed."
1473
  msgstr "%s activation was successfully completed."
1474
 
1475
+ #: includes/i18n.php:420
1476
  msgctxt "Plugin installer section title"
1477
  msgid "Features & Pricing"
1478
  msgstr "Features & Pricing"
1479
 
1480
+ #: includes/i18n.php:421
1481
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1482
  msgstr "Add-on must be deployed to WordPress.org or Freemius."
1483
 
1484
+ #: includes/i18n.php:422
1485
  msgid "Paid add-on must be deployed to Freemius."
1486
  msgstr "Paid add-on must be deployed to Freemius."
1487
 
1488
+ #: includes/i18n.php:426
1489
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1490
  msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1491
 
1492
+ #: includes/i18n.php:427
1493
  msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
1494
  msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
1495
 
1496
+ #: includes/i18n.php:432
1497
  msgctxt "as every month"
1498
  msgid "Monthly"
1499
  msgstr "Monthly"
1500
 
1501
+ #: includes/i18n.php:433
1502
  msgctxt "as monthly period"
1503
  msgid "mo"
1504
  msgstr "mo"
1505
 
1506
+ #: includes/i18n.php:434
1507
  msgctxt "as once a year"
1508
  msgid "Annual"
1509
  msgstr "Annual"
1510
 
1511
+ #: includes/i18n.php:435
1512
  msgctxt "as once a year"
1513
  msgid "Annually"
1514
  msgstr "Annually"
1515
 
1516
+ #: includes/i18n.php:436
1517
  msgctxt "as once a year"
1518
  msgid "Once"
1519
  msgstr "Once"
1520
 
1521
+ #: includes/i18n.php:437
1522
  msgctxt "as annual period"
1523
  msgid "year"
1524
  msgstr "year"
1525
 
1526
+ #: includes/i18n.php:438
1527
  msgid "Lifetime"
1528
  msgstr "Lifetime"
1529
 
1530
+ #: includes/i18n.php:439
1531
  msgctxt "e.g. the best product"
1532
  msgid "Best"
1533
  msgstr "Best"
1534
 
1535
+ #: includes/i18n.php:440
1536
  msgctxt "e.g. billed monthly"
1537
  msgid "Billed %s"
1538
  msgstr "Billed %s"
1539
 
1540
+ #: includes/i18n.php:441
1541
  msgctxt "as a discount of $5 or 10%"
1542
  msgid "Save %s"
1543
  msgstr "Save %s"
1544
 
1545
+ #: includes/i18n.php:443
1546
  msgid "View details"
1547
  msgstr "View details"
1548
 
1549
+ #: includes/i18n.php:447
1550
  msgctxt "button label"
1551
  msgid "Approve & Start Trial"
1552
  msgstr "Approve & Start Trial"
1553
 
1554
+ #: includes/i18n.php:449
1555
  msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1556
  msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1557
 
1558
+ #: includes/i18n.php:451
1559
  msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
1560
  msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
1561
 
1562
+ #: includes/i18n.php:457
1563
  msgid "Business name"
1564
  msgstr "Business name"
1565
 
1566
+ #: includes/i18n.php:458
1567
  msgid "Tax / VAT ID"
1568
  msgstr "Tax / VAT ID"
1569
 
1570
+ #: includes/i18n.php:459
1571
  msgid "Address Line %d"
1572
  msgstr "Address Line %d"
1573
 
1574
+ #: includes/i18n.php:460
1575
  msgid "Country"
1576
  msgstr "Country"
1577
 
1578
+ #: includes/i18n.php:461
1579
  msgid "Select Country"
1580
  msgstr "Select Country"
1581
 
1582
+ #: includes/i18n.php:462
1583
  msgid "City"
1584
  msgstr "City"
1585
 
1586
+ #: includes/i18n.php:463
1587
  msgid "Town"
1588
  msgstr "Town"
1589
 
1590
+ #: includes/i18n.php:464
1591
  msgid "State"
1592
  msgstr "State"
1593
 
1594
+ #: includes/i18n.php:465
1595
  msgid "Province"
1596
  msgstr "Province"
1597
 
1598
+ #: includes/i18n.php:466
1599
  msgid "ZIP / Postal Code"
1600
  msgstr "ZIP / Postal Code"
1601
+
1602
+ #: includes/i18n.php:481
1603
+ msgctxt "Plugin installer section title"
1604
+ msgid "Description"
1605
+ msgstr "Description"
1606
+
1607
+ #: includes/i18n.php:482
1608
+ msgctxt "Plugin installer section title"
1609
+ msgid "Installation"
1610
+ msgstr "Installation"
1611
+
1612
+ #: includes/i18n.php:483
1613
+ msgctxt "Plugin installer section title"
1614
+ msgid "FAQ"
1615
+ msgstr "FAQ"
1616
+
1617
+ #: includes/i18n.php:484
1618
+ msgctxt "Plugin installer section title"
1619
+ msgid "Changelog"
1620
+ msgstr "Changelog"
1621
+
1622
+ #: includes/i18n.php:485
1623
+ msgctxt "Plugin installer section title"
1624
+ msgid "Reviews"
1625
+ msgstr "Reviews"
1626
+
1627
+ #: includes/i18n.php:486
1628
+ msgctxt "Plugin installer section title"
1629
+ msgid "Other Notes"
1630
+ msgstr "Other Notes"
1631
+
1632
+ #: includes/i18n.php:488
1633
+ msgid "%s star"
1634
+ msgstr "%s star"
1635
+
1636
+ #: includes/i18n.php:490
1637
+ msgid "%s stars"
1638
+ msgstr "%s stars"
1639
+
1640
+ #: includes/i18n.php:492
1641
+ msgid "%s rating"
1642
+ msgstr "%s rating"
1643
+
1644
+ #: includes/i18n.php:494
1645
+ msgid "%s ratings"
1646
+ msgstr "%s ratings"
1647
+
1648
+ #: includes/i18n.php:496
1649
+ msgid "%s time"
1650
+ msgstr "%s time"
1651
+
1652
+ #: includes/i18n.php:498
1653
+ msgid "%s times"
1654
+ msgstr "%s times"
1655
+
1656
+ #: includes/i18n.php:500
1657
+ msgid "Click to see reviews that provided a rating of %s"
1658
+ msgstr "Click to see reviews that provided a rating of %s"
1659
+
1660
+ #: includes/i18n.php:501
1661
+ msgid "Last Updated"
1662
+ msgstr "Last Updated"
1663
+
1664
+ #: includes/i18n.php:502
1665
+ msgid "Requires WordPress Version:"
1666
+ msgstr "Requires WordPress Version:"
1667
+
1668
+ #: includes/i18n.php:503
1669
+ msgctxt "as the plugin author"
1670
+ msgid "Author:"
1671
+ msgstr "Author:"
1672
+
1673
+ #: includes/i18n.php:504
1674
+ msgid "Compatible up to:"
1675
+ msgstr "Compatible up to:"
1676
+
1677
+ #: includes/i18n.php:505
1678
+ msgid "Downloaded:"
1679
+ msgstr "Downloaded:"
1680
+
1681
+ #: includes/i18n.php:506
1682
+ msgid "WordPress.org Plugin Page"
1683
+ msgstr "WordPress.org Plugin Page"
1684
+
1685
+ #: includes/i18n.php:507
1686
+ msgid "Plugin Homepage"
1687
+ msgstr "Plugin Homepage"
1688
+
1689
+ #: includes/i18n.php:508
1690
+ msgid "Donate to this plugin"
1691
+ msgstr "Donate to this plugin"
1692
+
1693
+ #: includes/i18n.php:509
1694
+ msgid "Average Rating"
1695
+ msgstr "Average Rating"
1696
+
1697
+ #: includes/i18n.php:510
1698
+ msgid "based on %s"
1699
+ msgstr "based on %s"
1700
+
1701
+ #: includes/i18n.php:511
1702
+ msgid "Warning:"
1703
+ msgstr "Warning:"
1704
+
1705
+ #: includes/i18n.php:512
1706
+ msgid "Contributors"
1707
+ msgstr "Contributors"
1708
+
1709
+ #: includes/i18n.php:513
1710
+ msgid "Plugin Install"
1711
+ msgstr "Plugin Install"
1712
+
1713
+ #: includes/i18n.php:514
1714
+ msgid "This plugin has not been tested with your current version of WordPress."
1715
+ msgstr "This plugin has not been tested with your current version of WordPress."
1716
+
1717
+ #: includes/i18n.php:515
1718
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1719
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
1720
+
1721
+ #: includes/i18n.php:516
1722
+ msgid "Newer Version (%s) Installed"
1723
+ msgstr "Newer Version (%s) Installed"
1724
+
1725
+ #: includes/i18n.php:517
1726
+ msgid "Latest Version Installed"
1727
+ msgstr "Latest Version Installed"
includes/pum-sdk/freemius/languages/freemius-it_IT.mo CHANGED
Binary file
includes/pum-sdk/freemius/languages/freemius-it_IT.po CHANGED
@@ -1,16 +1,17 @@
1
- # Copyright (C) 2016 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  # Translators:
4
  # Pelly Benassi <plasmax@gmail.com>, 2016
5
- # Daniele Scasciafratte Mte90 <mte90net@gmail.com>, 2015
6
- # Pelly Benassi <plasmax@gmail.com>, 2016
7
  # Vova Feldman <vova@freemius.com>, 2015-2016
8
  msgid ""
9
  msgstr ""
10
  "Project-Id-Version: WordPress SDK\n"
11
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
- "PO-Revision-Date: 2016-12-12 02:13+0000\n"
13
- "Last-Translator: Vova Feldman <vova@freemius.com>\n"
 
14
  "Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n"
15
  "MIME-Version: 1.0\n"
16
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -18,543 +19,559 @@ msgstr ""
18
  "Language: it_IT\n"
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
  "X-Poedit-Basepath: ..\n"
21
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
22
  "X-Poedit-SearchPath-0: .\n"
23
  "X-Poedit-SearchPathExcluded-0: *.js\n"
24
  "X-Poedit-SourceCharset: UTF-8\n"
25
 
26
- #: includes/i18n.php41, includes/i18n.php:55
27
- msgid "Yes - I'm in!"
28
- msgstr "Sì, ci sto!"
29
-
30
- #: includes/i18n.php43, includes/i18n.php:57
31
- msgid "Not today"
32
- msgstr "Non oggi"
33
-
34
- #: includes/i18n.php:69
35
  msgid "Account"
36
  msgstr "Account"
37
 
38
- #: includes/i18n.php:71
39
  msgid "Add On"
40
  msgstr "Add-on"
41
 
42
- #: includes/i18n.php:73
43
  msgid "Contact Us"
44
  msgstr "Contattaci"
45
 
46
- #: includes/i18n.php:75
47
  msgid "Contact Support"
48
  msgstr "Contatta il supporto"
49
 
50
- #: includes/i18n.php:77
51
  msgid "Change Ownership"
52
  msgstr "Cambia Proprietario"
53
 
54
- #: includes/i18n.php:79
55
  msgid "Support"
56
  msgstr "Supporto"
57
 
58
- #: includes/i18n.php:81
59
  msgid "Support Forum"
60
  msgstr "Forum di supporto"
61
 
62
- #: includes/i18n.php:83
63
  msgid "Add Ons"
64
  msgstr "Add-on"
65
 
66
- #: includes/i18n.php:85
67
  msgctxt "verb"
68
  msgid "Upgrade"
69
  msgstr "Aggiornamento"
70
 
71
- #: includes/i18n.php:87
72
  msgid "Awesome"
73
  msgstr "Fantastico"
74
 
75
- #: includes/i18n.php:89
76
  msgctxt "noun"
77
  msgid "Pricing"
78
  msgstr "Prezzi"
79
 
80
- #: includes/i18n.php:91
81
  msgctxt "noun"
82
  msgid "Price"
83
  msgstr "Prezzo"
84
 
85
- #: includes/i18n.php:93
86
  msgid "Unlimited Updates"
87
  msgstr "Aggiornamenti Illimitati"
88
 
89
- #: includes/i18n.php:95
90
  msgctxt "verb"
91
  msgid "Downgrade"
92
  msgstr "Downgrade"
93
 
94
- #: includes/i18n.php:97
95
  msgid "Cancel Trial"
96
  msgstr "Annulla prova gratuita"
97
 
98
- #: includes/i18n.php:99
99
  msgid "Free Trial"
100
  msgstr "Prova gratuita"
101
 
102
- #: includes/i18n.php:101
103
  msgid "Start my free %s"
104
  msgstr "Inizia la mia %s"
105
 
106
- #: includes/i18n.php:103
107
  msgid "No commitment for %s - cancel anytime"
108
  msgstr "Nessun impegno con %s - cancella quando vuoi"
109
 
110
- #: includes/i18n.php:105
111
  msgid "After your free %s, pay as little as %s"
112
  msgstr "Dopo il tuo %s gratuito, paghi solamente %s"
113
 
114
- #: includes/i18n.php:107
115
  msgid "Details"
116
  msgstr "Dettagli"
117
 
118
- #: includes/i18n.php:109
119
  msgid "Account Details"
120
  msgstr "Dettagli dell'account"
121
 
122
- #: includes/i18n.php:111
123
  msgctxt "verb"
124
  msgid "Delete"
125
  msgstr "Elimina"
126
 
127
- #: includes/i18n.php:113
128
  msgctxt "verb"
129
  msgid "Show"
130
  msgstr "Mostra"
131
 
132
- #: includes/i18n.php:115
133
  msgctxt "verb"
134
  msgid "Hide"
135
  msgstr "Nascondi"
136
 
137
- #: includes/i18n.php:117
138
  msgctxt "verb"
139
  msgid "Edit"
140
  msgstr "Modifica"
141
 
142
- #: includes/i18n.php:119
143
  msgctxt "verb"
144
  msgid "Update"
145
  msgstr "Aggiorna"
146
 
147
- #: includes/i18n.php:121
148
  msgid "Date"
149
  msgstr "Data"
150
 
151
- #: includes/i18n.php:123
152
  msgid "Amount"
153
  msgstr "Importo"
154
 
155
- #: includes/i18n.php:125
156
  msgid "Invoice"
157
  msgstr "Fattura"
158
 
159
- #: includes/i18n.php:127
160
  msgid "Billing"
161
  msgstr "Fatturazione"
162
 
163
- #: includes/i18n.php:129
164
  msgid "Payments"
165
  msgstr "Pagamenti"
166
 
167
- #: includes/i18n.php:131
168
  msgid "Delete Account"
169
  msgstr "Elimina Account"
170
 
171
- #: includes/i18n.php:133
172
  msgctxt "as close a window"
173
  msgid "Dismiss"
174
  msgstr "Chiudi"
175
 
176
- #: includes/i18n.php:135
177
  msgctxt "as product pricing plan"
178
  msgid "Plan"
179
  msgstr "Piano"
180
 
181
- #: includes/i18n.php:137
182
  msgid "Change Plan"
183
  msgstr "Cambia piano"
184
 
185
- #: includes/i18n.php:139
186
  msgctxt "as download professional version"
187
  msgid "Download %s Version"
188
  msgstr "Scarica la versione %s"
189
 
190
- #: includes/i18n.php:141
191
  msgctxt "as download professional version now"
192
  msgid "Download %s version now"
193
  msgstr "Scarica la versione %s ora"
194
 
195
- #: includes/i18n.php:145
196
  msgctxt "as download latest version"
197
  msgid "Download Latest"
198
  msgstr "Scarica l'ultima versione"
199
 
200
- #: includes/i18n.php:147
201
  msgctxt "E.g. you have a professional license."
202
  msgid "You have a %s license."
203
  msgstr "Hai la licenza %s."
204
 
205
- #: includes/i18n.php:151
206
  msgid "New"
207
  msgstr "Nuovo"
208
 
209
- #: includes/i18n.php:153
210
  msgid "Free"
211
  msgstr "Gratuito"
212
 
213
- #: includes/i18n.php:155
214
  msgctxt "as trial plan"
215
  msgid "Trial"
216
  msgstr "Prova gratuita"
217
 
218
- #: includes/i18n.php:157
219
  msgctxt "as starting a trial plan"
220
  msgid "Start Trial"
221
  msgstr "Inizia il periodo di prova gratuito"
222
 
223
- #: includes/i18n.php:159
224
  msgctxt "verb"
225
  msgid "Purchase"
226
  msgstr "Acquisto"
227
 
228
- #: includes/i18n.php:161
229
  msgid "Purchase License"
230
  msgstr "Acquista licenza"
231
 
232
- #: includes/i18n.php:163
233
  msgctxt "verb"
234
  msgid "Buy"
235
  msgstr "Compra"
236
 
237
- #: includes/i18n.php:165
238
  msgid "Buy License"
239
  msgstr "Compra licenza"
240
 
241
- #: includes/i18n.php:167
242
  msgid "Single Site License"
243
  msgstr "Licenza per sito singolo"
244
 
245
- #: includes/i18n.php:169
246
  msgid "Unlimited Licenses"
247
  msgstr "Licenze illimitate"
248
 
249
- #: includes/i18n.php:171
250
  msgid "Up to %s Sites"
251
  msgstr "Fino a %s siti"
252
 
253
- #: includes/i18n.php:173
254
  msgid "%sRenew your license now%s to access version %s features and support."
255
  msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s."
256
 
257
- #: includes/i18n.php:177
258
  msgid ""
259
  "Enter the email address you've used for the upgrade below and we will resend"
260
  " you the license key."
261
  msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza."
262
 
263
- #: includes/i18n.php:181
264
  msgctxt "e.g. Professional Plan"
265
  msgid "%s Plan"
266
  msgstr "Piano %s"
267
 
268
- #: includes/i18n.php:183
269
  msgid "You are just one step away - %s"
270
  msgstr "Sei a un passo dalla fine - %s"
271
 
272
- #: includes/i18n.php:185
273
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
274
  msgid "Complete \"%s\" Activation Now"
275
  msgstr "Completa l'attivazione di \"%s\" ora"
276
 
277
- #: includes/i18n.php:189
278
  msgid "We made a few tweaks to the plugin, %s"
279
  msgstr "Abbiamo apportato alcune modifiche al plugin, %s"
280
 
281
- #: includes/i18n.php:191
282
  msgid "Opt-in to make \"%s\" Better!"
283
  msgstr "Contribuisci a rendere \"%s\" migliore!"
284
 
285
- #: includes/i18n.php:193
286
  msgid "Error"
287
  msgstr "Errore"
288
 
289
- #: includes/i18n.php:195
290
  msgid ""
291
  "Freemius SDK couldn't find the plugin's main file. Please contact "
292
  "sdk@freemius.com with the current error."
293
  msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore."
294
 
295
- #: includes/i18n.php:203
296
  msgctxt "as expiration date"
297
  msgid "Expiration"
298
  msgstr "Scadenza"
299
 
300
- #: includes/i18n.php:205
301
  msgctxt "as software license"
302
  msgid "License"
303
  msgstr "Licenza"
304
 
305
- #: includes/i18n.php:207
306
  msgid "not verified"
307
  msgstr "non verificato"
308
 
309
- #: includes/i18n.php:209
310
  msgid "Verify Email"
311
  msgstr "Verifica email"
312
 
313
- #: includes/i18n.php:211
314
  msgctxt "e.g. expires in 2 months"
315
  msgid "Expires in %s"
316
  msgstr "Scade in %s"
317
 
318
- #: includes/i18n.php:213
319
  msgctxt "e.g. auto renews in 2 months"
320
  msgid "Auto renews in %s"
321
  msgstr "Rinnovo automatico in %s"
322
 
323
- #: includes/i18n.php:215
324
  msgid "No expiration"
325
  msgstr "Nessuna scadenza"
326
 
327
- #: includes/i18n.php:217
328
  msgid "Expired"
329
  msgstr "Scaduto"
330
 
331
- #: includes/i18n.php:219
332
  msgid "Cancelled"
333
  msgstr "Annullato"
334
 
335
- #: includes/i18n.php:221
336
  msgctxt "e.g. In 2 hours"
337
  msgid "In %s"
338
  msgstr "In %s"
339
 
340
- #: includes/i18n.php:223
341
  msgctxt "e.g. 2 min ago"
342
  msgid "%s ago"
343
  msgstr "%s fa"
344
 
345
- #: includes/i18n.php:225
 
 
 
 
346
  msgctxt "as plugin version"
347
  msgid "Version"
348
  msgstr "Versione"
349
 
350
- #: includes/i18n.php:227
351
  msgid "Name"
352
  msgstr "Nome"
353
 
354
- #: includes/i18n.php:229
355
  msgid "Email"
356
  msgstr "Email"
357
 
358
- #: includes/i18n.php:231
359
  msgid "Email address"
360
  msgstr "Indirizzo email"
361
 
362
- #: includes/i18n.php:233
363
  msgid "Verified"
364
  msgstr "Verificato"
365
 
366
- #: includes/i18n.php:235
 
 
 
 
 
 
 
 
367
  msgid "Plugin"
368
  msgstr "Plugin"
369
 
370
- #: includes/i18n.php:237
371
  msgid "Plugins"
372
  msgstr "Plugin"
373
 
374
- #: includes/i18n.php:239
 
 
 
 
375
  msgid "Themes"
376
  msgstr "Temi"
377
 
378
- #: includes/i18n.php:241
379
  msgctxt "as file/folder path"
380
  msgid "Path"
381
  msgstr "Percorso"
382
 
383
- #: includes/i18n.php:243
384
  msgid "Title"
385
  msgstr "Titolo"
386
 
387
- #: includes/i18n.php:245
388
  msgid "Free version"
389
  msgstr "Versione gratuita"
390
 
391
- #: includes/i18n.php:247
392
  msgid "Premium version"
393
  msgstr "Versione premium"
394
 
395
- #: includes/i18n.php:249
396
  msgctxt "as WP plugin slug"
397
  msgid "Slug"
398
  msgstr "Slug"
399
 
400
- #: includes/i18n.php:251
401
  msgid "ID"
402
  msgstr "ID"
403
 
404
- #: includes/i18n.php:253
405
  msgid "Users"
406
  msgstr "Utenti"
407
 
408
- #: includes/i18n.php:255
409
  msgid "Plugin Installs"
410
  msgstr "Installazioni Plugin"
411
 
412
- #: includes/i18n.php:257
 
 
 
 
413
  msgctxt "like websites"
414
  msgid "Sites"
415
  msgstr "Siti"
416
 
417
- #: includes/i18n.php:259
418
  msgid "User ID"
419
  msgstr "ID utente"
420
 
421
- #: includes/i18n.php:261
422
  msgid "Site ID"
423
  msgstr "ID del sito"
424
 
425
- #: includes/i18n.php:263
426
  msgid "Public Key"
427
  msgstr "Chiave pubblica"
428
 
429
- #: includes/i18n.php:265
430
  msgid "Secret Key"
431
  msgstr "Chiave segreta"
432
 
433
- #: includes/i18n.php:267
434
  msgctxt "as secret encryption key missing"
435
  msgid "No Secret"
436
  msgstr "Nessuna chiave"
437
 
438
- #: includes/i18n.php:269
439
  msgid "No ID"
440
  msgstr "Nessun ID"
441
 
442
- #: includes/i18n.php:271
443
  msgctxt "as synchronize license"
444
  msgid "Sync License"
445
  msgstr "Sincronizza la licenza"
446
 
447
- #: includes/i18n.php:273
448
  msgctxt "as synchronize"
449
  msgid "Sync"
450
  msgstr "Sincronizza"
451
 
452
- #: includes/i18n.php:275
453
  msgid "Activate License"
454
  msgstr "Attiva licenza"
455
 
456
- #: includes/i18n.php:277
457
  msgid "Activate Free Version"
458
  msgstr "Attiva versione gratuita"
459
 
460
- #: includes/i18n.php:279
461
  msgid ""
462
  "Please enter the license key that you received in the email right after the "
463
  "purchase:"
464
  msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:"
465
 
466
- #: includes/i18n.php:283
467
  msgid "Activating license..."
468
  msgstr "Sto attivando la licenza..."
469
 
470
- #: includes/i18n.php:285
471
  msgid "Change License"
472
  msgstr "Cambia licenza"
473
 
474
- #: includes/i18n.php:287
475
  msgid "Update License"
476
  msgstr "Aggiorna licenza"
477
 
478
- #: includes/i18n.php:289
479
  msgid "Deactivate License"
480
  msgstr "Disattiva licenza"
481
 
482
- #: includes/i18n.php:291
483
  msgid "Activate"
484
  msgstr "Attiva"
485
 
486
- #: includes/i18n.php:293
487
  msgid "Deactivate"
488
  msgstr "Disattiva"
489
 
490
- #: includes/i18n.php:295
491
  msgid "Skip & Deactivate"
492
  msgstr "Salta e disattiva"
493
 
494
- #: includes/i18n.php:297
 
 
 
 
495
  msgid "No - just deactivate"
496
  msgstr "No - disattiva e basta"
497
 
498
- #: includes/i18n.php:299
499
  msgid "Yes - do your thing"
500
  msgstr "Sì - fai pure"
501
 
502
- #: includes/i18n.php:301
503
  msgctxt "active mode"
504
  msgid "Active"
505
  msgstr "Attiva"
506
 
507
- #: includes/i18n.php:303
508
  msgctxt "is active mode?"
509
  msgid "Is Active"
510
  msgstr "è attiva"
511
 
512
- #: includes/i18n.php:305
513
  msgid "Install Now"
514
  msgstr "Installa ora"
515
 
516
- #: includes/i18n.php:307
517
  msgid "Install Update Now"
518
  msgstr "Installa l'aggiornamento ora"
519
 
520
- #: includes/i18n.php:309
521
  msgid "More information about %s"
522
  msgstr "Ulteriori informazioni su %s"
523
 
524
- #: includes/i18n.php:311
525
  msgid "Localhost"
526
  msgstr "Localhost"
527
 
528
- #: includes/i18n.php:313
529
  msgctxt "as activate Professional plan"
530
  msgid "Activate %s Plan"
531
  msgstr "Attivare il piano %s"
532
 
533
- #: includes/i18n.php:315
534
  msgctxt "as 5 licenses left"
535
  msgid "%s left"
536
  msgstr "%s rimanenti"
537
 
538
- #: includes/i18n.php:317
539
  msgid "Last license"
540
  msgstr "Ultima licenza"
541
 
542
- #: includes/i18n.php:319
543
  msgid "What is your %s?"
544
  msgstr "Qual è il tuo %s?"
545
 
546
- #: includes/i18n.php:321
547
  msgid "Activate this add-on"
548
  msgstr "Attivare questo addon"
549
 
550
- #: includes/i18n.php:323
551
  msgid ""
552
  "Deactivating your license will block all premium features, but will enable "
553
  "you to activate the license on another site. Are you sure you want to "
554
  "proceed?"
555
  msgstr "La disattivazione della licenza bloccherà tutte le funzionalità premium, ma vi permetterà di attivare la licenza su un altro sito. Sei sicuro di voler procedere?"
556
 
557
- #: includes/i18n.php:327
558
  msgid ""
559
  "Deleting the account will automatically deactivate your %s plan license so "
560
  "you can use it on other sites. If you want to terminate the recurring "
@@ -562,941 +579,997 @@ msgid ""
562
  "account. Are you sure you would like to continue with the deletion?"
563
  msgstr "L'eliminazione dell'account disattiva automaticamente la tua licenza del piano %s quindi è possibile utilizzarlo su altri siti. Se si desidera anche terminare i pagamenti ricorrenti, fare clic sul pulsante \"Annulla\" ed effettuare il \"Downgrade\" del tuo account. Sei sicuro di voler continuare con l'eliminazione?"
564
 
565
- #: includes/i18n.php:331
566
  msgid ""
567
  "Deletion is not temporary. Only delete if you no longer want to use this "
568
  "plugin anymore. Are you sure you would like to continue with the deletion?"
569
  msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?"
570
 
571
- #: includes/i18n.php:335
572
  msgid ""
573
  "Downgrading your plan will immediately stop all future recurring payments "
574
  "and your %s plan license will expire in %s."
575
  msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s."
576
 
577
- #: includes/i18n.php:339
578
  msgid ""
579
  "Cancelling the trial will immediately block access to all premium features. "
580
  "Are you sure?"
581
  msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?"
582
 
583
- #: includes/i18n.php:343
584
  msgid ""
585
  "You can still enjoy all %s features but you will not have access to plugin "
586
  "updates and support."
587
  msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin."
588
 
589
- #: includes/i18n.php:347
590
  msgid ""
591
- "Once your license expire you can still use the Free version but you will NOT"
592
- " have access to the %s features."
593
- msgstr "Una volta scaduta la licenza, sarà possibile ancora utilizzare la versione gratuita ma non avrete accesso alle funzionalità di %s."
594
 
595
- #: includes/i18n.php:351
596
  msgid "Are you sure you want to proceed?"
597
  msgstr "Sei sicuro di voler procedere?"
598
 
599
- #: includes/i18n.php:357
600
  msgid "Add Ons for %s"
601
  msgstr "Add-on per %s"
602
 
603
- #: includes/i18n.php:359
604
  msgid ""
605
  "We could'nt load the add-ons list. It's probably an issue on our side, "
606
  "please try to come back in few minutes."
607
  msgstr "Non siamo riusciti a caricare la lista degli add-on. Si tratta probabilmente di un problema nel nostro sistema, per favore riprova tra qualche minuto."
608
 
609
- #: includes/i18n.php:365
610
  msgid "Anonymous feedback"
611
  msgstr "Feedback anonimo"
612
 
613
- #: includes/i18n.php:367
614
  msgid "Quick feedback"
615
  msgstr "Feedback veloce"
616
 
617
- #: includes/i18n.php:369
618
  msgid "If you have a moment, please let us know why you are deactivating"
619
  msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?"
620
 
621
- #: includes/i18n.php:373
622
  msgid "Yes - Deactivate"
623
  msgstr "Si - Disattiva"
624
 
625
- #: includes/i18n.php:375
626
  msgid "Submit & Deactivate"
627
  msgstr "Invia & Disattiva"
628
 
629
- #: includes/i18n.php:377
630
  msgid "Cancel"
631
  msgstr "Annulla"
632
 
633
- #: includes/i18n.php:379
634
  msgid "I no longer need the plugin"
635
  msgstr "Non ho piú bisogno di questo plugin"
636
 
637
- #: includes/i18n.php:381
638
  msgid "I found a better plugin"
639
  msgstr "Ho trovato un plugin migliore"
640
 
641
- #: includes/i18n.php:383
642
  msgid "I only needed the plugin for a short period"
643
  msgstr "Avevo bisogno del plugin solo per un breve periodo"
644
 
645
- #: includes/i18n.php:385
646
  msgid "The plugin broke my site"
647
  msgstr "Il plugin ha causato problemi al mio sito"
648
 
649
- #: includes/i18n.php:387
650
  msgid "The plugin suddenly stopped working"
651
  msgstr "Il plugin ha smesso di funzionare"
652
 
653
- #: includes/i18n.php:389
654
  msgid "I can't pay for it anymore"
655
  msgstr "Non posso piú pagarlo"
656
 
657
- #: includes/i18n.php:391
658
  msgid "It's a temporary deactivation. I'm just debugging an issue."
659
  msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema."
660
 
661
- #: includes/i18n.php:395
662
  msgctxt ""
663
  "the text of the \"other\" reason for deactivating the plugin that is shown "
664
  "in the modal box."
665
  msgid "Other"
666
  msgstr "Altro"
667
 
668
- #: includes/i18n.php:399
669
  msgid "Kindly tell us the reason so we can improve."
670
  msgstr "Spiegandoci il motivo ci aiuterai a migliorare."
671
 
672
- #: includes/i18n.php:401
673
  msgid "What's the plugin's name?"
674
  msgstr "Qual è il nome del plugin?"
675
 
676
- #: includes/i18n.php:403
677
  msgid "What price would you feel comfortable paying?"
678
  msgstr "Che prezzo ritieni opportuno pagare?"
679
 
680
- #: includes/i18n.php:405
681
  msgid "I couldn't understand how to make it work"
682
  msgstr "Non capisco come farlo funzionare"
683
 
684
- #: includes/i18n.php:407
685
  msgid ""
686
  "The plugin is great, but I need specific feature that you don't support"
687
  msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata"
688
 
689
- #: includes/i18n.php:411
690
  msgid "The plugin is not working"
691
  msgstr "Il plugin non funziona"
692
 
693
- #: includes/i18n.php:413
694
  msgid "It's not what I was looking for"
695
  msgstr "Non é quello che stavo cercando"
696
 
697
- #: includes/i18n.php:415
698
  msgid "The plugin didn't work as expected"
699
  msgstr "Il plugin non funziona come mi aspettavo"
700
 
701
- #: includes/i18n.php:417
702
  msgid "What feature?"
703
  msgstr "Quale funzionalitá?"
704
 
705
- #: includes/i18n.php:419
706
  msgid "Kindly share what didn't work so we can fix it for future users..."
707
  msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..."
708
 
709
- #: includes/i18n.php:423
710
  msgid "What you've been looking for?"
711
  msgstr "Che cosa stai cercando?"
712
 
713
- #: includes/i18n.php:425
714
  msgid "What did you expect?"
715
  msgstr "Che cosa ti aspettavi?"
716
 
717
- #: includes/i18n.php:427
718
  msgid "The plugin didn't work"
719
  msgstr "Il plugin non funziona"
720
 
721
- #: includes/i18n.php:429
722
  msgid "I don't like to share my information with you"
723
  msgstr "Non voglio condividere i miei dati con te"
724
 
725
- #: includes/i18n.php:431
726
  msgid ""
727
  "You might have missed it, but you don't have to share any data and can just "
728
  "%s the opt-in."
729
  msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione."
730
 
731
- #: includes/i18n.php:441
732
  msgctxt "greeting"
733
  msgid "Hey %s,"
734
  msgstr "Hey %s,"
735
 
736
- #: includes/i18n.php:443
737
  msgctxt "a greeting. E.g. Thanks John!"
738
  msgid "Thanks %s!"
739
  msgstr "Grazie %s!"
740
 
741
- #: includes/i18n.php:445
742
  msgid ""
743
  "Never miss an important update - opt-in to our security and feature updates "
744
  "notifications, and non-sensitive diagnostic tracking with %4$s."
745
  msgstr "Non perdere nessun aggiornamento importante - iscriviti per ricevere notifiche su aggiornamenti relativi alla sicurezza e nuove versioni, oltre al tracciamento di diagnostica non sensibile con %4$s."
746
 
747
- #: includes/i18n.php:449
748
  msgid ""
749
  "Please help us improve %1$s! If you opt-in, some data about your usage of "
750
  "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
751
  "work just fine."
752
  msgstr "Aiutaci a migliorare %1$s! Se ti iscrivi, alcuni dati riguardanti il tuo utilizzo di %1$s verranno inviati a %4$s. Se salti questo passaggio, non c'è problema! %1$s funzionerà ugualmente."
753
 
754
- #: includes/i18n.php:453
755
  msgid ""
756
  "You should receive an activation email for %s to your mailbox at %s. Please "
757
  "make sure you click the activation button in that email to %s."
758
- msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per &s."
759
 
760
- #: includes/i18n.php:455
761
  msgid "complete the install"
762
  msgstr "completa l'installazione"
763
 
764
- #: includes/i18n.php:457
765
  msgid "start the trial"
766
  msgstr "Inizia il periodo di prova gratuito"
767
 
768
- #: includes/i18n.php:459
769
  msgid ""
770
  "Thanks for purchasing %s! To get started, please enter your license key:"
771
  msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:"
772
 
773
- #: includes/i18n.php:463
774
  msgid ""
775
  "The plugin will be periodically sending data to %s to check for plugin "
776
  "updates and verify the validity of your license."
777
  msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza."
778
 
779
- #: includes/i18n.php:467
780
  msgid "What permissions are being granted?"
781
  msgstr "Quali autorizzazioni vengono concesse?"
782
 
783
- #: includes/i18n.php:469
784
  msgid "Your Profile Overview"
785
  msgstr "Panoramica del tuo profilo"
786
 
787
- #: includes/i18n.php:471
788
  msgid "Name and email address"
789
  msgstr "Nome ed indirizzo email"
790
 
791
- #: includes/i18n.php:473
792
  msgid "Your Site Overview"
793
  msgstr "Panoramica del tuo sito"
794
 
795
- #: includes/i18n.php:475
796
  msgid "Site URL, WP version, PHP info, plugins & themes"
797
  msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi"
798
 
799
- #: includes/i18n.php:479
800
  msgid "Current Plugin Events"
801
  msgstr "Eventi correnti del plugin"
802
 
803
- #: includes/i18n.php:481
804
  msgid "Activation, deactivation and uninstall"
805
  msgstr "Attiva, disattivazione e disinstallazione"
806
 
807
- #: includes/i18n.php:483
808
  msgid "Plugins & Themes"
809
  msgstr "Plugin e temi"
810
 
811
- #: includes/i18n.php:485
812
  msgid "Titles, versions and state."
813
  msgstr "Titoli, versioni e stato."
814
 
815
- #: includes/i18n.php:487
816
  msgid "Admin Notices"
817
  msgstr "Avvisi amministratore"
818
 
819
- #: includes/i18n.php:489
820
  msgid "Newsletter"
821
  msgstr "Newsletter"
822
 
823
- #: includes/i18n.php:491
824
  msgid "Updates, announcements, marketing, no spam"
825
  msgstr "Aggiornamenti, annunci, marketing, no spam"
826
 
827
- #: includes/i18n.php:493
828
  msgid "Privacy Policy"
829
  msgstr "Politica sulla privacy"
830
 
831
- #: includes/i18n.php:495
832
  msgid "Terms of Service"
833
  msgstr "Termini del Servizio"
834
 
835
- #: includes/i18n.php:497
836
  msgctxt "as activating plugin"
837
  msgid "Activating"
838
  msgstr "Attivazione"
839
 
840
- #: includes/i18n.php:499
841
  msgctxt "as in the process of sending an email"
842
  msgid "Sending email"
843
  msgstr "Invio email"
844
 
845
- #: includes/i18n.php:503
846
  msgctxt "button label"
847
  msgid "Allow & Continue"
848
  msgstr "Consenti & Continua"
849
 
850
- #: includes/i18n.php:505
851
  msgctxt "button label"
852
  msgid "Agree & Activate License"
853
  msgstr "Accetta e attiva la licenza"
854
 
855
- #: includes/i18n.php:507
856
  msgctxt "verb"
857
  msgid "Skip"
858
  msgstr "Salta"
859
 
860
- #: includes/i18n.php:509
861
  msgid "Click here to use the plugin anonymously"
862
  msgstr "Fai clic qui per usare il plugin anonimamente"
863
 
864
- #: includes/i18n.php:511
865
  msgid "Re-send activation email"
866
  msgstr "Invia nuovamente l'email di attivazione"
867
 
868
- #: includes/i18n.php:513
869
  msgid "License key"
870
  msgstr "Chiave di licenza"
871
 
872
- #: includes/i18n.php:515
873
  msgid "Send License Key"
874
  msgstr "Invia chiave di licenza"
875
 
876
- #: includes/i18n.php:517
877
  msgid "Sending license key"
878
  msgstr "Invio chiave di licenza"
879
 
880
- #: includes/i18n.php:519
881
  msgid "Have a license key?"
882
  msgstr "Hai una chiave di licenza?"
883
 
884
- #: includes/i18n.php:521
885
  msgid "Don't have a license key?"
886
  msgstr "Non hai una chiave di licenza?"
887
 
888
- #: includes/i18n.php:523
889
  msgid "Can't find your license key?"
890
  msgstr "Non trovi la tua chiave di licenza?"
891
 
892
- #: includes/i18n.php:525
893
  msgid ""
894
  "We couldn't find your email address in the system, are you sure it's the "
895
  "right address?"
896
  msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?"
897
 
898
- #: includes/i18n.php:529
899
  msgid ""
900
  "We can't see any active licenses associated with that email address, are you"
901
  " sure it's the right address?"
902
  msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?"
903
 
904
- #: includes/i18n.php:533
905
  msgid "Opt In"
906
  msgstr "Iscriviti"
907
 
908
- #: includes/i18n.php:535
909
  msgid "Opt Out"
910
  msgstr "Cancella iscrizione"
911
 
912
- #: includes/i18n.php:537
913
  msgid "On second thought - I want to continue helping"
914
  msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto"
915
 
916
- #: includes/i18n.php:541
917
  msgid "Opting out..."
918
  msgstr "Cancellamento dell'iscrizione..."
919
 
920
- #: includes/i18n.php:543
921
  msgid "Opting in..."
922
  msgstr "Iscrizione in corso..."
923
 
924
- #: includes/i18n.php:545
925
  msgid ""
926
  "We appreciate your help in making the %s better by letting us track some "
927
  "usage data."
928
  msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s"
929
 
930
- #: includes/i18n.php:549
931
  msgid ""
932
  "Usage tracking is done in the name of making %s better. Making a better user"
933
  " experience, prioritizing new features, and more good things. We'd really "
934
  "appreciate if you'll reconsider letting us continue with the tracking."
935
  msgstr "Tracciamo l'utilizzo esclusivamente per rendere %s migliore, creando una migliore esperienza utente e dando priorità a nuove funzionalità, oltre a molte altre buone cose. Saremmo veramente felici di vederti cambiare idea e lasciarci continuare con il tracciamento."
936
 
937
- #: includes/i18n.php:553
938
  msgid ""
939
  "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
940
  "%s."
941
  msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s."
942
 
943
- #: includes/i18n.php:563
944
  msgid "Screenshots"
945
  msgstr "Screenshots"
946
 
947
- #: includes/i18n.php:565
948
  msgid "Click to view full-size screenshot %d"
949
  msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d"
950
 
951
- #: includes/i18n.php:573
952
  msgid "Freemius Debug"
953
  msgstr "Debug Freemius"
954
 
955
- #: includes/i18n.php:575
956
  msgctxt "as turned on"
957
  msgid "On"
958
  msgstr "Attivo"
959
 
960
- #: includes/i18n.php:577
961
  msgctxt "as turned off"
962
  msgid "Off"
963
  msgstr "Non attivo"
964
 
965
- #: includes/i18n.php:579
966
  msgctxt "as code debugging"
967
  msgid "Debugging"
968
  msgstr "Debugging"
969
 
970
- #: includes/i18n.php:581
971
  msgid "Freemius State"
972
  msgstr "Stato di Freemius"
973
 
974
- #: includes/i18n.php:583
975
  msgctxt "as connection was successful"
976
  msgid "Connected"
977
  msgstr "Connesso"
978
 
979
- #: includes/i18n.php:585
980
  msgctxt "as connection blocked"
981
  msgid "Blocked"
982
  msgstr "Bloccato"
983
 
984
- #: includes/i18n.php:587
985
  msgctxt "as application program interface"
986
  msgid "API"
987
  msgstr "API"
988
 
989
- #: includes/i18n.php:589
990
  msgctxt "as software development kit versions"
991
  msgid "SDK"
992
  msgstr "SDK"
993
 
994
- #: includes/i18n.php:591
995
  msgctxt "as software development kit versions"
996
  msgid "SDK Versions"
997
  msgstr "Versioni SDK"
998
 
999
- #: includes/i18n.php:595
1000
  msgctxt "as plugin folder path"
1001
  msgid "Plugin Path"
1002
  msgstr "Percorso del plugin"
1003
 
1004
- #: includes/i18n.php:597
1005
  msgctxt "as sdk path"
1006
  msgid "SDK Path"
1007
  msgstr "Percorso SDK"
1008
 
1009
- #: includes/i18n.php:599
1010
  msgid "Add Ons of Plugin %s"
1011
  msgstr "Add-on del Plugin %s"
1012
 
1013
- #: includes/i18n.php:601
1014
  msgid "Are you sure you want to delete all Freemius data?"
1015
  msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?"
1016
 
1017
- #: includes/i18n.php:605
1018
  msgid "Actions"
1019
  msgstr "Azioni"
1020
 
1021
- #: includes/i18n.php:607
1022
  msgid "Delete All Accounts"
1023
  msgstr "Eliminare tutti gli account"
1024
 
1025
- #: includes/i18n.php:609
1026
  msgid "Start Fresh"
1027
  msgstr "Inizia da capo"
1028
 
1029
- #: includes/i18n.php:611
1030
  msgid "Clear API Cache"
1031
  msgstr "Elimina cache API"
1032
 
1033
- #: includes/i18n.php:613
1034
  msgid "Sync Data From Server"
1035
  msgstr "Sincronizza i dati dal server"
1036
 
1037
- #: includes/i18n.php:615
1038
  msgid "Scheduled Crons"
1039
  msgstr "Azioni programmate"
1040
 
1041
- #: includes/i18n.php:617
 
 
 
 
1042
  msgid "Plugins & Themes Sync"
1043
  msgstr "Sincronizzazione plugin e temi"
1044
 
1045
- #: includes/i18n.php:625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1046
  msgctxt "as congratulations"
1047
  msgid "Congrats"
1048
  msgstr "Congratulazioni"
1049
 
1050
- #: includes/i18n.php:627
1051
  msgctxt "exclamation"
1052
  msgid "Oops"
1053
  msgstr "Ops"
1054
 
1055
- #: includes/i18n.php:629
1056
  msgctxt "interjection expressing joy or exuberance"
1057
  msgid "Yee-haw"
1058
  msgstr "Evvai"
1059
 
1060
- #: includes/i18n.php:633
1061
  msgctxt ""
1062
  "(especially in electronic communication) used to express elation, "
1063
  "enthusiasm, or triumph."
1064
  msgid "W00t"
1065
  msgstr "Forte"
1066
 
1067
- #: includes/i18n.php:637
1068
  msgctxt "a positive response"
1069
  msgid "Right on"
1070
  msgstr "Sì"
1071
 
1072
- #: includes/i18n.php:639
1073
  msgctxt ""
1074
  "something somebody says when they are thinking about what you have just "
1075
  "said. "
1076
  msgid "Hmm"
1077
  msgstr "Uhm"
1078
 
1079
- #: includes/i18n.php:643
1080
  msgid "O.K"
1081
  msgstr "OK"
1082
 
1083
- #: includes/i18n.php:645
1084
  msgctxt "exclamation"
1085
  msgid "Hey"
1086
  msgstr "Hey"
1087
 
1088
- #: includes/i18n.php:647
1089
  msgctxt "advance notice of something that will need attention."
1090
  msgid "Heads up"
1091
  msgstr "Attenzione"
1092
 
1093
- #: includes/i18n.php:657
1094
  msgid "Seems like you got the latest release."
1095
  msgstr "Sembra che tu abbia la versione più recente."
1096
 
1097
- #: includes/i18n.php:659
1098
  msgid "You are all good!"
1099
  msgstr "Sei fantastico!"
1100
 
1101
- #: includes/i18n.php:661
1102
  msgid ""
1103
  "Sorry, we could not complete the email update. Another user with the same "
1104
  "email is already registered."
1105
  msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato."
1106
 
1107
- #: includes/i18n.php:665
1108
  msgid ""
1109
  "If you would like to give up the ownership of the plugin's account to %s "
1110
  "click the Change Ownership button."
1111
  msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà."
1112
 
1113
- #: includes/i18n.php:669
1114
  msgid ""
1115
  "Your email was successfully updated. You should receive an email with "
1116
  "confirmation instructions in few moments."
1117
  msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti."
1118
 
1119
- #: includes/i18n.php:673
1120
  msgid "Your name was successfully updated."
1121
  msgstr "Il tuo nome è stato aggiornato correttamente."
1122
 
1123
- #: includes/i18n.php:675
1124
  msgid "You have successfully updated your %s."
1125
  msgstr "Hai aggiornato con successo il tuo %s."
1126
 
1127
- #: includes/i18n.php:677
1128
  msgid "Please provide your full name."
1129
  msgstr "Per favore inserisci il tuo nome completo."
1130
 
1131
- #: includes/i18n.php:679
1132
  msgid ""
1133
  "Verification mail was just sent to %s. If you can't find it after 5 min, "
1134
  "please check your spam box."
1135
  msgstr "L'email di verifica è stata inviata a %s. Se dopo 5 minuti non è ancora arrivata, per favore controlla nella tua casella di posta indesiderata."
1136
 
1137
- #: includes/i18n.php:683
1138
  msgid ""
1139
  "Just letting you know that the add-ons information of %s is being pulled "
1140
  "from an external server."
1141
  msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno."
1142
 
1143
- #: includes/i18n.php:687
1144
  msgid "No credit card required"
1145
  msgstr "Nessuna carta di credito richiesta"
1146
 
1147
- #: includes/i18n.php:689
1148
  msgid "Premium plugin version was successfully activated."
1149
  msgstr "La versione Premium del plugin è stata attivata correttamente."
1150
 
1151
- #: includes/i18n.php:693
1152
  msgid "The upgrade of %s was successfully completed."
1153
  msgstr "L'aggiornamento di %s è stato completato con successo."
1154
 
1155
- #: includes/i18n.php:695
1156
  msgid "Your account was successfully activated with the %s plan."
1157
  msgstr "Il tuo account è stato attivato correttamente con il piano %s."
1158
 
1159
- #: includes/i18n.php:699
1160
  msgid "Download the latest %s version now"
1161
  msgstr "Scarica l'ultima versione di %s"
1162
 
1163
- #: includes/i18n.php:701
1164
  msgid "Please follow these steps to complete the upgrade"
1165
  msgstr "Segui i passi seguenti per completare l'aggiornamento"
1166
 
1167
- #: includes/i18n.php:705
1168
  msgid "Download the latest %s version"
1169
  msgstr "Scarica l'ultima versione di %s"
1170
 
1171
- #: includes/i18n.php:707
1172
  msgid "Download the latest version"
1173
  msgstr "Scarica l'ultima versione"
1174
 
1175
- #: includes/i18n.php:709
1176
  msgid "Deactivate the free version"
1177
  msgstr "Disattiva la versione gratuita"
1178
 
1179
- #: includes/i18n.php:711
1180
  msgid "Upload and activate the downloaded version"
1181
  msgstr "Carica e attiva la versione scaricata"
1182
 
1183
- #: includes/i18n.php:713
1184
  msgid "How to upload and activate?"
1185
  msgstr "Come faccio a caricare ed attivare?"
1186
 
1187
- #: includes/i18n.php:715
1188
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1189
  msgid "%s Add-on was successfully purchased."
1190
  msgstr "L' add-on %s è stato acquistato con successo."
1191
 
1192
- #: includes/i18n.php:719
1193
  msgid "Your %s Add-on plan was successfully upgraded."
1194
  msgstr "Il piano del tuo add-on %s è stato aggiornato con successo."
1195
 
1196
- #: includes/i18n.php:723
1197
  msgid "Your email has been successfully verified - you are AWESOME!"
1198
  msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!"
1199
 
1200
- #: includes/i18n.php:727
1201
  msgid "Your plan was successfully upgraded."
1202
  msgstr "Il piano è stato aggiornato con successo."
1203
 
1204
- #: includes/i18n.php:729
1205
  msgid "Your plan was successfully changed to %s."
1206
  msgstr "Il piano è stato cambiato con successo a %s."
1207
 
1208
- #: includes/i18n.php:731
1209
  msgid ""
1210
  "Your license has expired. You can still continue using the free plugin "
1211
  "forever."
1212
  msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre."
1213
 
1214
- #: includes/i18n.php:735
1215
  msgid ""
1216
  "Your license has been cancelled. If you think it's a mistake, please contact"
1217
  " support."
1218
  msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto."
1219
 
1220
- #: includes/i18n.php:739
1221
  msgid "Your trial has been successfully started."
1222
  msgstr "La versione di prova è stata avviata correttamente."
1223
 
1224
- #: includes/i18n.php:741
1225
  msgid "Your license was successfully activated."
1226
  msgstr "La tua licenza è stata attivata correttamente."
1227
 
1228
- #: includes/i18n.php:743
1229
  msgid "It looks like your site currently doesn't have an active license."
1230
  msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva."
1231
 
1232
- #: includes/i18n.php:747
1233
  msgid ""
1234
  "Your license was successfully deactivated, you are back to the %s plan."
1235
  msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s."
1236
 
1237
- #: includes/i18n.php:751
1238
  msgid "It looks like the license deactivation failed."
1239
  msgstr "Sembra che la disattivazione della licenza non sia riuscita."
1240
 
1241
- #: includes/i18n.php:755
1242
  msgid "It looks like the license could not be activated."
1243
  msgstr "Sembra che la licenza non possa essere attivata."
1244
 
1245
- #: includes/i18n.php:759
1246
  msgid "Error received from the server:"
1247
  msgstr "Errore ricevuto dal server:"
1248
 
1249
- #: includes/i18n.php:761
1250
  msgid ""
1251
  "Your trial has expired. You can still continue using all our free features."
1252
  msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite."
1253
 
1254
- #: includes/i18n.php:765
1255
  msgid ""
1256
  "Your plan was successfully downgraded. Your %s plan license will expire in "
1257
  "%s."
1258
  msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s."
1259
 
1260
- #: includes/i18n.php:769
1261
  msgid ""
1262
  "Seems like we are having some temporary issue with your plan downgrade. "
1263
  "Please try again in few minutes."
1264
  msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto."
1265
 
1266
- #: includes/i18n.php:773
1267
  msgid ""
1268
  "It looks like you are not in trial mode anymore so there's nothing to cancel"
1269
  " :)"
1270
  msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)"
1271
 
1272
- #: includes/i18n.php:777
1273
  msgid "Your %s free trial was successfully cancelled."
1274
  msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo."
1275
 
1276
- #: includes/i18n.php:781
1277
  msgctxt "%s - numeric version number"
1278
  msgid "Version %s was released."
1279
  msgstr "La versione %s é stata rilasciata."
1280
 
1281
- #: includes/i18n.php:785
1282
  msgid "Please download %s."
1283
  msgstr "Scarica %s."
1284
 
1285
- #: includes/i18n.php:787
1286
  msgctxt "%s - plan name, as the latest professional version here"
1287
  msgid "the latest %s version here"
1288
  msgstr "l'ultima versione %s é quì"
1289
 
1290
- #: includes/i18n.php:791
1291
  msgid ""
1292
  "How do you like %s so far? Test all our %s premium features with a %d-day "
1293
  "free trial."
1294
  msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni."
1295
 
1296
- #: includes/i18n.php:795
1297
  msgctxt "call to action"
1298
  msgid "Start free trial"
1299
  msgstr "Inizia il periodo di prova gratuito"
1300
 
1301
- #: includes/i18n.php:797
1302
  msgid "Starting trial"
1303
  msgstr "Inizio del periodo di prova gratuito"
1304
 
1305
- #: includes/i18n.php:799
1306
  msgid "Please wait"
1307
  msgstr "Attendere"
1308
 
1309
- #: includes/i18n.php:801
1310
  msgid ""
1311
  "Seems like we are having some temporary issue with your trial cancellation. "
1312
  "Please try again in few minutes."
1313
  msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto."
1314
 
1315
- #: includes/i18n.php:805
1316
  msgid "You already utilized a trial before."
1317
  msgstr "Hai già utilizzato una prova gratuita in passato."
1318
 
1319
- #: includes/i18n.php:807
1320
  msgid "You are already running the plugin in a trial mode."
1321
  msgstr "Stai già usando il plugin in modalità di prova gratuita."
1322
 
1323
- #: includes/i18n.php:811
1324
  msgid "Plan %s do not exist, therefore, can't start a trial."
1325
  msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova."
1326
 
1327
- #: includes/i18n.php:815
1328
  msgid "Plan %s does not support a trial period."
1329
  msgstr "Il piano %s non supporta il periodo di prova."
1330
 
1331
- #: includes/i18n.php:817
1332
  msgid "None of the plugin's plans supports a trial period."
1333
  msgstr "Non esiste alcun piano del plugin che offra il periodo di prova."
1334
 
1335
- #: includes/i18n.php:821
1336
  msgid ""
1337
  "Unexpected API error. Please contact the plugin's author with the following "
1338
  "error."
1339
  msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore."
1340
 
1341
- #: includes/i18n.php:825
1342
  msgid "No commitment for %s days - cancel anytime!"
1343
  msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!"
1344
 
1345
- #: includes/i18n.php:827
1346
  msgid ""
1347
  "Your license has expired. You can still continue using all the %s features, "
1348
  "but you'll need to renew your license to continue getting updates and "
1349
  "support."
1350
  msgstr "La licenza è scaduta. È comunque possibile continuare a utilizzare tutte le funzionalità di %s, ma sarà necessario rinnovare la licenza per continuare a ricevere gli aggiornamenti ed il supporto."
1351
 
1352
- #: includes/i18n.php:831
1353
  msgid "Couldn't activate %s."
1354
  msgstr "Non é stato possibile attivare %s."
1355
 
1356
- #: includes/i18n.php:833
1357
  msgid "Please contact us with the following message:"
1358
  msgstr "Contattaci con il seguente messaggio:"
1359
 
1360
- #: includes/i18n.php:835
1361
  msgid ""
1362
  "It looks like you are still on the %s plan. If you did upgrade or change "
1363
  "your plan, it's probably an issue on our side - sorry."
1364
  msgstr "Sembra che tu sia ancora usando il piano %s. Se hai effettuato un upgrade o cambiato il piano, è probabile che ci sia un problema nei nostri sistemi."
1365
 
1366
- #: includes/i18n.php:839
1367
  msgid "Please contact us here"
1368
  msgstr "Contattaci qui"
1369
 
1370
- #: includes/i18n.php:841
1371
  msgid ""
1372
  "I have upgraded my account but when I try to Sync the License, the plan "
1373
  "remains %s."
1374
  msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s."
1375
 
1376
- #: includes/i18n.php:849
1377
  msgid "From unknown reason, the API connectivity test failed."
1378
  msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti."
1379
 
1380
- #: includes/i18n.php:853
1381
  msgid ""
1382
  "It's probably a temporary issue on our end. Just to be sure, with your "
1383
  "permission, would it be o.k to run another connectivity test?"
1384
  msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? "
1385
 
1386
- #: includes/i18n.php:857
1387
  msgid ""
1388
  "We use PHP cURL library for the API calls, which is a very common library "
1389
  "and usually installed out of the box. Unfortunately, cURL is not installed "
1390
  "on your server."
1391
  msgstr "Utilizziamo la libreria PHP cURL per le chiamate alla nostra API. Questa libreria è molto comune ed è installata di base. Sfortunatamente cURL non è presente nel tuo server."
1392
 
1393
- #: includes/i18n.php:861
1394
  msgid ""
1395
  "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1396
  msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione."
1397
 
1398
- #: includes/i18n.php:865
1399
  msgctxt "as pluginX requires an access to our API"
1400
  msgid "%s requires an access to our API."
1401
  msgstr "%s richiede un accesso alla nostra API."
1402
 
1403
- #: includes/i18n.php:869
1404
  msgid ""
1405
  "It looks like your server is using Squid ACL (access control lists), which "
1406
  "blocks the connection."
1407
  msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione."
1408
 
1409
- #: includes/i18n.php:873
1410
  msgid "I don't know what is Squid or ACL, help me!"
1411
  msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!"
1412
 
1413
- #: includes/i18n.php875, includes/i18n.php:889
1414
  msgid ""
1415
  "We'll make sure to contact your hosting company and resolve the issue. You "
1416
  "will get a follow-up email to %s once we have an update."
1417
  msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti."
1418
 
1419
- #: includes/i18n.php:879
1420
  msgid "I'm a system administrator"
1421
  msgstr "Sono un sistemista"
1422
 
1423
- #: includes/i18n.php:881
1424
  msgid ""
1425
- "Great, please whitelist the following domains: %s. Once you done, deactivate"
1426
- " the plugin and activate it again."
1427
- msgstr "Perfetto, aggiungi alla whitelist i seguenti domini: %s. Una volta che hai fatto, disattiva il plugin e attivalo di nuovo."
1428
 
1429
- #: includes/i18n.php:885
1430
  msgid "I don't know what is cURL or how to install it, help me!"
1431
  msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!"
1432
 
1433
- #: includes/i18n.php:893
1434
  msgid ""
1435
  "Great, please install cURL and enable it in your php.ini file. To make sure "
1436
  "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1437
  "the plugin and reactivate it back again."
1438
  msgstr "Perfetto, installa cURL ed attivalo nel tuo file php.ini. Per essere sicuro di averlo attivato con successo, usa \"phpinfo()\". Una volta attivato disattva il plugin e attivalo di nuovo."
1439
 
1440
- #: includes/i18n.php:897
1441
  msgid ""
1442
  "We are sure it's an issue on our side and more than happy to resolve it for "
1443
  "you ASAP if you give us a chance."
1444
  msgstr "Siamo sicuri che sia un nostro problema e siamo più che felici di risolverlo per te al più presto. Per poter procedere abbiamo bisogno del tuo consenso."
1445
 
1446
- #: includes/i18n.php:901
1447
  msgid ""
1448
  "Sorry for the inconvenience and we are here to help if you give us a chance."
1449
  msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso."
1450
 
1451
- #: includes/i18n.php:905
1452
  msgid "Yes - I'm giving you a chance to fix it"
1453
  msgstr "Sì - sto dandovi la possibilità di risolvere il problema"
1454
 
1455
- #: includes/i18n.php:907
1456
  msgid ""
1457
  "We will do our best to whitelist your server and resolve this issue ASAP. "
1458
  "You will get a follow-up email to %s once we have an update."
1459
  msgstr "Faremo del nostro meglio per mettere il server in whitelist e risolvere il problema il prima possibile. Avrai un aggiornamento dello stato tramite email all'indirizzo %s."
1460
 
1461
- #: includes/i18n.php:911
1462
  msgid "Let's try your previous version"
1463
  msgstr "Proviamo con la versione precedente"
1464
 
1465
- #: includes/i18n.php:913
1466
  msgid "Uninstall this version and install the previous one."
1467
  msgstr "Disinstalla questa versione e installa quella precedente."
1468
 
1469
- #: includes/i18n.php:917
1470
  msgid "That's exhausting, please deactivate"
1471
  msgstr "È estenuante, disattivalo"
1472
 
1473
- #: includes/i18n.php:919
1474
  msgid ""
1475
  "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1476
  " to see you again in the future."
1477
  msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro."
1478
 
1479
- #: includes/i18n.php:923
1480
  msgid ""
1481
  "Thank for giving us the chance to fix it! A message was just sent to our "
1482
  "technical staff. We will get back to you as soon as we have an update to %s."
1483
  " Appreciate your patience."
1484
  msgstr "Grazie per averci dato la possibilità di risolvere il problema! È stato appena inviato un messaggio al nostro staff tecnico. Ti risponderemo non appena avremo un aggiornamento riguardante %s. Grazie per la tua pazienza."
1485
 
1486
- #: includes/i18n.php:927
1487
  msgctxt "%1s - plugin title, %2s - API domain"
1488
  msgid ""
1489
  "Your server is blocking the access to Freemius' API, which is crucial for "
1490
  "%1s synchronization. Please contact your host to whitelist %2s"
1491
  msgstr "Il tuo server sta bloccando l'accesso all'API di Freemius. L'accesso è cruciale per quanto riguarda la la sincronizzazione di %1s. Per favore contatta il tuo host per aggiungere %2s alla whitelist."
1492
 
1493
- #: includes/i18n.php:931
1494
  msgid ""
1495
  "It seems like one of the authentication parameters is wrong. Update your "
1496
  "Public Key, Secret Key & User ID, and try again."
1497
  msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova."
1498
 
1499
- #: includes/i18n.php:939
1500
  msgid ""
1501
  "Please check your mailbox, you should receive an email via %s to confirm the"
1502
  " ownership change. From security reasons, you must confirm the change within"
@@ -1504,122 +1577,122 @@ msgid ""
1504
  "folder."
1505
  msgstr "Verifica di aver ricevuto l'email da %s per confermare il cambiamento del proprietario. Per ragioni di sicurezza devi confermare il cambiamento entro 15 minuti. Se non trovi l'email controlla nella posta indesiderata."
1506
 
1507
- #: includes/i18n.php:943
1508
  msgid ""
1509
  "Thanks for confirming the ownership change. An email was just sent to %s for"
1510
  " final approval."
1511
  msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale."
1512
 
1513
- #: includes/i18n.php:947
1514
  msgid "%s is the new owner of the account."
1515
  msgstr "%s è il nuovo proprietario dell'account."
1516
 
1517
- #: includes/i18n.php:951
1518
  msgctxt "addonX cannot run without pluginY"
1519
  msgid "%s cannot run without %s."
1520
  msgstr "%s non può funzionare senza %s."
1521
 
1522
- #: includes/i18n.php:955
1523
  msgctxt "addonX cannot run..."
1524
  msgid "%s cannot run without the plugin."
1525
  msgstr "%s non può funzionare senza il plugin."
1526
 
1527
- #: includes/i18n.php:959
1528
  msgctxt "pluginX activation was successfully..."
1529
  msgid "%s activation was successfully completed."
1530
  msgstr "%s è stato attivato con successo."
1531
 
1532
- #: includes/i18n.php:963
1533
  msgctxt "Plugin installer section title"
1534
  msgid "Features & Pricing"
1535
  msgstr "Caratteristiche & prezzi"
1536
 
1537
- #: includes/i18n.php:967
1538
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1539
  msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius."
1540
 
1541
- #: includes/i18n.php:971
1542
  msgid "Paid add-on must be deployed to Freemius."
1543
  msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius."
1544
 
1545
- #: includes/i18n.php:979
1546
  msgid ""
1547
  "%s is a premium only add-on. You have to purchase a license first before "
1548
  "activating the plugin."
1549
  msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin."
1550
 
1551
- #: includes/i18n.php:983
1552
  msgid ""
1553
  "%s free trial was successfully cancelled. Since the add-on is premium only "
1554
  "it was automatically deactivated. If you like to use it in the future, "
1555
  "you'll have to purchase a license."
1556
  msgstr "Il periodo di prova gratuito %s è stato annullato con successo. Siccome l'add-on è premium, è stato disattivato automaticamente. Se vorrai usarlo in futuro, dovrai comprare una licenza."
1557
 
1558
- #: includes/i18n.php:995
1559
  msgctxt "as every month"
1560
  msgid "Monthly"
1561
  msgstr "Mensilmente"
1562
 
1563
- #: includes/i18n.php:997
1564
  msgctxt "as monthly period"
1565
  msgid "mo"
1566
  msgstr "mese"
1567
 
1568
- #: includes/i18n.php:999
1569
  msgctxt "as once a year"
1570
  msgid "Annual"
1571
  msgstr "Annuale"
1572
 
1573
- #: includes/i18n.php:1001
1574
  msgctxt "as once a year"
1575
  msgid "Annually"
1576
  msgstr "Annualmente"
1577
 
1578
- #: includes/i18n.php:1003
1579
  msgctxt "as once a year"
1580
  msgid "Once"
1581
  msgstr "Una volta"
1582
 
1583
- #: includes/i18n.php:1005
1584
  msgctxt "as annual period"
1585
  msgid "year"
1586
  msgstr "anno"
1587
 
1588
- #: includes/i18n.php:1007
1589
  msgid "Lifetime"
1590
  msgstr "Tutta la vita"
1591
 
1592
- #: includes/i18n.php:1009
1593
  msgctxt "e.g. the best product"
1594
  msgid "Best"
1595
  msgstr "Migliore"
1596
 
1597
- #: includes/i18n.php:1011
1598
  msgctxt "e.g. billed monthly"
1599
  msgid "Billed %s"
1600
  msgstr "Fatturato %s"
1601
 
1602
- #: includes/i18n.php:1013
1603
  msgctxt "as a discount of $5 or 10%"
1604
  msgid "Save %s"
1605
  msgstr "Risparmia %s"
1606
 
1607
- #: includes/i18n.php:1017
1608
  msgid "View details"
1609
  msgstr "Visualizza dettagli"
1610
 
1611
- #: includes/i18n.php:1025
1612
  msgctxt "button label"
1613
  msgid "Approve & Start Trial"
1614
  msgstr "Approva e inizia il periodo di prova gratuito"
1615
 
1616
- #: includes/i18n.php:1029
1617
  msgid ""
1618
  "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1619
  "plan."
1620
  msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s."
1621
 
1622
- #: includes/i18n.php:1033
1623
  msgid ""
1624
  "For compliance with the WordPress.org guidelines, before we start the trial "
1625
  "we ask that you opt-in with your user and non-sensitive site information, "
@@ -1627,42 +1700,172 @@ msgid ""
1627
  "updates and to validate your trial."
1628
  msgstr "Per seguire le linee guida di WordPress, prima di iniziare il periodo di prova ti chiediamo di iscriverti con il tuo utente e i dati non sensibili inerenti al tuo sito, così da permettere periodicamente al plugin di inviare dati a %s per poter controllare la presenza di nuove versioni e convalidare il tuo periodo di prova gratuito."
1629
 
1630
- #: includes/i18n.php:1045
1631
  msgid "Business name"
1632
  msgstr "Nome della compagnia"
1633
 
1634
- #: includes/i18n.php:1047
1635
  msgid "Tax / VAT ID"
1636
  msgstr "Numero Partita Iva o VAT"
1637
 
1638
- #: includes/i18n.php:1049
1639
  msgid "Address Line %d"
1640
  msgstr "Riga indirizzo %d"
1641
 
1642
- #: includes/i18n.php:1051
1643
  msgid "Country"
1644
  msgstr "Nazione"
1645
 
1646
- #: includes/i18n.php:1053
1647
  msgid "Select Country"
1648
  msgstr "Seleziona Nazione"
1649
 
1650
- #: includes/i18n.php:1055
1651
  msgid "City"
1652
  msgstr "Città"
1653
 
1654
- #: includes/i18n.php:1057
1655
  msgid "Town"
1656
  msgstr "Cittadina"
1657
 
1658
- #: includes/i18n.php:1059
1659
  msgid "State"
1660
  msgstr "Stato"
1661
 
1662
- #: includes/i18n.php:1061
1663
  msgid "Province"
1664
  msgstr "Provincia"
1665
 
1666
- #: includes/i18n.php:1063
1667
  msgid "ZIP / Postal Code"
1668
  msgstr "CAP"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  # Translators:
4
  # Pelly Benassi <plasmax@gmail.com>, 2016
5
+ # Daniele Scasciafratte Mte90 <mte90net@gmail.com>, 2015-2017
6
+ # Pelly Benassi <plasmax@gmail.com>, 2016-2017
7
  # Vova Feldman <vova@freemius.com>, 2015-2016
8
  msgid ""
9
  msgstr ""
10
  "Project-Id-Version: WordPress SDK\n"
11
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
+ "POT-Creation-Date: \n"
13
+ "PO-Revision-Date: 2017-03-09 20:58+0000\n"
14
+ "Last-Translator: Pelly Benassi <plasmax@gmail.com>\n"
15
  "Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n"
16
  "MIME-Version: 1.0\n"
17
  "Content-Type: text/plain; charset=UTF-8\n"
19
  "Language: it_IT\n"
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
  "X-Poedit-Basepath: ..\n"
22
+ "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
  "X-Poedit-SearchPathExcluded-0: *.js\n"
25
  "X-Poedit-SourceCharset: UTF-8\n"
26
 
27
+ #: includes/i18n.php:35
 
 
 
 
 
 
 
 
28
  msgid "Account"
29
  msgstr "Account"
30
 
31
+ #: includes/i18n.php:36
32
  msgid "Add On"
33
  msgstr "Add-on"
34
 
35
+ #: includes/i18n.php:37
36
  msgid "Contact Us"
37
  msgstr "Contattaci"
38
 
39
+ #: includes/i18n.php:38
40
  msgid "Contact Support"
41
  msgstr "Contatta il supporto"
42
 
43
+ #: includes/i18n.php:39
44
  msgid "Change Ownership"
45
  msgstr "Cambia Proprietario"
46
 
47
+ #: includes/i18n.php:40
48
  msgid "Support"
49
  msgstr "Supporto"
50
 
51
+ #: includes/i18n.php:41
52
  msgid "Support Forum"
53
  msgstr "Forum di supporto"
54
 
55
+ #: includes/i18n.php:42
56
  msgid "Add Ons"
57
  msgstr "Add-on"
58
 
59
+ #: includes/i18n.php:43
60
  msgctxt "verb"
61
  msgid "Upgrade"
62
  msgstr "Aggiornamento"
63
 
64
+ #: includes/i18n.php:44
65
  msgid "Awesome"
66
  msgstr "Fantastico"
67
 
68
+ #: includes/i18n.php:45
69
  msgctxt "noun"
70
  msgid "Pricing"
71
  msgstr "Prezzi"
72
 
73
+ #: includes/i18n.php:46
74
  msgctxt "noun"
75
  msgid "Price"
76
  msgstr "Prezzo"
77
 
78
+ #: includes/i18n.php:47
79
  msgid "Unlimited Updates"
80
  msgstr "Aggiornamenti Illimitati"
81
 
82
+ #: includes/i18n.php:48
83
  msgctxt "verb"
84
  msgid "Downgrade"
85
  msgstr "Downgrade"
86
 
87
+ #: includes/i18n.php:49
88
  msgid "Cancel Trial"
89
  msgstr "Annulla prova gratuita"
90
 
91
+ #: includes/i18n.php:50
92
  msgid "Free Trial"
93
  msgstr "Prova gratuita"
94
 
95
+ #: includes/i18n.php:51
96
  msgid "Start my free %s"
97
  msgstr "Inizia la mia %s"
98
 
99
+ #: includes/i18n.php:52
100
  msgid "No commitment for %s - cancel anytime"
101
  msgstr "Nessun impegno con %s - cancella quando vuoi"
102
 
103
+ #: includes/i18n.php:53
104
  msgid "After your free %s, pay as little as %s"
105
  msgstr "Dopo il tuo %s gratuito, paghi solamente %s"
106
 
107
+ #: includes/i18n.php:54
108
  msgid "Details"
109
  msgstr "Dettagli"
110
 
111
+ #: includes/i18n.php:55
112
  msgid "Account Details"
113
  msgstr "Dettagli dell'account"
114
 
115
+ #: includes/i18n.php:56
116
  msgctxt "verb"
117
  msgid "Delete"
118
  msgstr "Elimina"
119
 
120
+ #: includes/i18n.php:57
121
  msgctxt "verb"
122
  msgid "Show"
123
  msgstr "Mostra"
124
 
125
+ #: includes/i18n.php:58
126
  msgctxt "verb"
127
  msgid "Hide"
128
  msgstr "Nascondi"
129
 
130
+ #: includes/i18n.php:59
131
  msgctxt "verb"
132
  msgid "Edit"
133
  msgstr "Modifica"
134
 
135
+ #: includes/i18n.php:60
136
  msgctxt "verb"
137
  msgid "Update"
138
  msgstr "Aggiorna"
139
 
140
+ #: includes/i18n.php:61
141
  msgid "Date"
142
  msgstr "Data"
143
 
144
+ #: includes/i18n.php:62
145
  msgid "Amount"
146
  msgstr "Importo"
147
 
148
+ #: includes/i18n.php:63
149
  msgid "Invoice"
150
  msgstr "Fattura"
151
 
152
+ #: includes/i18n.php:64
153
  msgid "Billing"
154
  msgstr "Fatturazione"
155
 
156
+ #: includes/i18n.php:65
157
  msgid "Payments"
158
  msgstr "Pagamenti"
159
 
160
+ #: includes/i18n.php:66
161
  msgid "Delete Account"
162
  msgstr "Elimina Account"
163
 
164
+ #: includes/i18n.php:67
165
  msgctxt "as close a window"
166
  msgid "Dismiss"
167
  msgstr "Chiudi"
168
 
169
+ #: includes/i18n.php:68
170
  msgctxt "as product pricing plan"
171
  msgid "Plan"
172
  msgstr "Piano"
173
 
174
+ #: includes/i18n.php:69
175
  msgid "Change Plan"
176
  msgstr "Cambia piano"
177
 
178
+ #: includes/i18n.php:70
179
  msgctxt "as download professional version"
180
  msgid "Download %s Version"
181
  msgstr "Scarica la versione %s"
182
 
183
+ #: includes/i18n.php:71
184
  msgctxt "as download professional version now"
185
  msgid "Download %s version now"
186
  msgstr "Scarica la versione %s ora"
187
 
188
+ #: includes/i18n.php:72
189
  msgctxt "as download latest version"
190
  msgid "Download Latest"
191
  msgstr "Scarica l'ultima versione"
192
 
193
+ #: includes/i18n.php:73
194
  msgctxt "E.g. you have a professional license."
195
  msgid "You have a %s license."
196
  msgstr "Hai la licenza %s."
197
 
198
+ #: includes/i18n.php:74
199
  msgid "New"
200
  msgstr "Nuovo"
201
 
202
+ #: includes/i18n.php:75
203
  msgid "Free"
204
  msgstr "Gratuito"
205
 
206
+ #: includes/i18n.php:76
207
  msgctxt "as trial plan"
208
  msgid "Trial"
209
  msgstr "Prova gratuita"
210
 
211
+ #: includes/i18n.php:77
212
  msgctxt "as starting a trial plan"
213
  msgid "Start Trial"
214
  msgstr "Inizia il periodo di prova gratuito"
215
 
216
+ #: includes/i18n.php:78
217
  msgctxt "verb"
218
  msgid "Purchase"
219
  msgstr "Acquisto"
220
 
221
+ #: includes/i18n.php:79
222
  msgid "Purchase License"
223
  msgstr "Acquista licenza"
224
 
225
+ #: includes/i18n.php:80
226
  msgctxt "verb"
227
  msgid "Buy"
228
  msgstr "Compra"
229
 
230
+ #: includes/i18n.php:81
231
  msgid "Buy License"
232
  msgstr "Compra licenza"
233
 
234
+ #: includes/i18n.php:82
235
  msgid "Single Site License"
236
  msgstr "Licenza per sito singolo"
237
 
238
+ #: includes/i18n.php:83
239
  msgid "Unlimited Licenses"
240
  msgstr "Licenze illimitate"
241
 
242
+ #: includes/i18n.php:84
243
  msgid "Up to %s Sites"
244
  msgstr "Fino a %s siti"
245
 
246
+ #: includes/i18n.php:85
247
  msgid "%sRenew your license now%s to access version %s features and support."
248
  msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s."
249
 
250
+ #: includes/i18n.php:86
251
  msgid ""
252
  "Enter the email address you've used for the upgrade below and we will resend"
253
  " you the license key."
254
  msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza."
255
 
256
+ #: includes/i18n.php:87
257
  msgctxt "e.g. Professional Plan"
258
  msgid "%s Plan"
259
  msgstr "Piano %s"
260
 
261
+ #: includes/i18n.php:88
262
  msgid "You are just one step away - %s"
263
  msgstr "Sei a un passo dalla fine - %s"
264
 
265
+ #: includes/i18n.php:89
266
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
267
  msgid "Complete \"%s\" Activation Now"
268
  msgstr "Completa l'attivazione di \"%s\" ora"
269
 
270
+ #: includes/i18n.php:91
271
  msgid "We made a few tweaks to the plugin, %s"
272
  msgstr "Abbiamo apportato alcune modifiche al plugin, %s"
273
 
274
+ #: includes/i18n.php:92
275
  msgid "Opt-in to make \"%s\" Better!"
276
  msgstr "Contribuisci a rendere \"%s\" migliore!"
277
 
278
+ #: includes/i18n.php:93
279
  msgid "Error"
280
  msgstr "Errore"
281
 
282
+ #: includes/i18n.php:94
283
  msgid ""
284
  "Freemius SDK couldn't find the plugin's main file. Please contact "
285
  "sdk@freemius.com with the current error."
286
  msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore."
287
 
288
+ #: includes/i18n.php:97
289
  msgctxt "as expiration date"
290
  msgid "Expiration"
291
  msgstr "Scadenza"
292
 
293
+ #: includes/i18n.php:98
294
  msgctxt "as software license"
295
  msgid "License"
296
  msgstr "Licenza"
297
 
298
+ #: includes/i18n.php:99
299
  msgid "not verified"
300
  msgstr "non verificato"
301
 
302
+ #: includes/i18n.php:100
303
  msgid "Verify Email"
304
  msgstr "Verifica email"
305
 
306
+ #: includes/i18n.php:101
307
  msgctxt "e.g. expires in 2 months"
308
  msgid "Expires in %s"
309
  msgstr "Scade in %s"
310
 
311
+ #: includes/i18n.php:102
312
  msgctxt "e.g. auto renews in 2 months"
313
  msgid "Auto renews in %s"
314
  msgstr "Rinnovo automatico in %s"
315
 
316
+ #: includes/i18n.php:103
317
  msgid "No expiration"
318
  msgstr "Nessuna scadenza"
319
 
320
+ #: includes/i18n.php:104
321
  msgid "Expired"
322
  msgstr "Scaduto"
323
 
324
+ #: includes/i18n.php:105
325
  msgid "Cancelled"
326
  msgstr "Annullato"
327
 
328
+ #: includes/i18n.php:106
329
  msgctxt "e.g. In 2 hours"
330
  msgid "In %s"
331
  msgstr "In %s"
332
 
333
+ #: includes/i18n.php:107
334
  msgctxt "e.g. 2 min ago"
335
  msgid "%s ago"
336
  msgstr "%s fa"
337
 
338
+ #: includes/i18n.php:109
339
+ msgid "%s or higher"
340
+ msgstr "%s o superiore"
341
+
342
+ #: includes/i18n.php:110
343
  msgctxt "as plugin version"
344
  msgid "Version"
345
  msgstr "Versione"
346
 
347
+ #: includes/i18n.php:111
348
  msgid "Name"
349
  msgstr "Nome"
350
 
351
+ #: includes/i18n.php:112
352
  msgid "Email"
353
  msgstr "Email"
354
 
355
+ #: includes/i18n.php:113
356
  msgid "Email address"
357
  msgstr "Indirizzo email"
358
 
359
+ #: includes/i18n.php:114
360
  msgid "Verified"
361
  msgstr "Verificato"
362
 
363
+ #: includes/i18n.php:115
364
+ msgid "Module"
365
+ msgstr "Modulo"
366
+
367
+ #: includes/i18n.php:116
368
+ msgid "Module Type"
369
+ msgstr "Tipo di modulo"
370
+
371
+ #: includes/i18n.php:117
372
  msgid "Plugin"
373
  msgstr "Plugin"
374
 
375
+ #: includes/i18n.php:118
376
  msgid "Plugins"
377
  msgstr "Plugin"
378
 
379
+ #: includes/i18n.php:119
380
+ msgid "Theme"
381
+ msgstr "Tema"
382
+
383
+ #: includes/i18n.php:120
384
  msgid "Themes"
385
  msgstr "Temi"
386
 
387
+ #: includes/i18n.php:121
388
  msgctxt "as file/folder path"
389
  msgid "Path"
390
  msgstr "Percorso"
391
 
392
+ #: includes/i18n.php:122
393
  msgid "Title"
394
  msgstr "Titolo"
395
 
396
+ #: includes/i18n.php:123
397
  msgid "Free version"
398
  msgstr "Versione gratuita"
399
 
400
+ #: includes/i18n.php:124
401
  msgid "Premium version"
402
  msgstr "Versione premium"
403
 
404
+ #: includes/i18n.php:125
405
  msgctxt "as WP plugin slug"
406
  msgid "Slug"
407
  msgstr "Slug"
408
 
409
+ #: includes/i18n.php:126
410
  msgid "ID"
411
  msgstr "ID"
412
 
413
+ #: includes/i18n.php:127
414
  msgid "Users"
415
  msgstr "Utenti"
416
 
417
+ #: includes/i18n.php:128
418
  msgid "Plugin Installs"
419
  msgstr "Installazioni Plugin"
420
 
421
+ #: includes/i18n.php:129
422
+ msgid "%s Installs"
423
+ msgstr "%s Installazioni"
424
+
425
+ #: includes/i18n.php:130
426
  msgctxt "like websites"
427
  msgid "Sites"
428
  msgstr "Siti"
429
 
430
+ #: includes/i18n.php:131
431
  msgid "User ID"
432
  msgstr "ID utente"
433
 
434
+ #: includes/i18n.php:132
435
  msgid "Site ID"
436
  msgstr "ID del sito"
437
 
438
+ #: includes/i18n.php:133
439
  msgid "Public Key"
440
  msgstr "Chiave pubblica"
441
 
442
+ #: includes/i18n.php:134
443
  msgid "Secret Key"
444
  msgstr "Chiave segreta"
445
 
446
+ #: includes/i18n.php:135
447
  msgctxt "as secret encryption key missing"
448
  msgid "No Secret"
449
  msgstr "Nessuna chiave"
450
 
451
+ #: includes/i18n.php:136
452
  msgid "No ID"
453
  msgstr "Nessun ID"
454
 
455
+ #: includes/i18n.php:137
456
  msgctxt "as synchronize license"
457
  msgid "Sync License"
458
  msgstr "Sincronizza la licenza"
459
 
460
+ #: includes/i18n.php:138
461
  msgctxt "as synchronize"
462
  msgid "Sync"
463
  msgstr "Sincronizza"
464
 
465
+ #: includes/i18n.php:139
466
  msgid "Activate License"
467
  msgstr "Attiva licenza"
468
 
469
+ #: includes/i18n.php:140
470
  msgid "Activate Free Version"
471
  msgstr "Attiva versione gratuita"
472
 
473
+ #: includes/i18n.php:141
474
  msgid ""
475
  "Please enter the license key that you received in the email right after the "
476
  "purchase:"
477
  msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:"
478
 
479
+ #: includes/i18n.php:142
480
  msgid "Activating license..."
481
  msgstr "Sto attivando la licenza..."
482
 
483
+ #: includes/i18n.php:143
484
  msgid "Change License"
485
  msgstr "Cambia licenza"
486
 
487
+ #: includes/i18n.php:144
488
  msgid "Update License"
489
  msgstr "Aggiorna licenza"
490
 
491
+ #: includes/i18n.php:145
492
  msgid "Deactivate License"
493
  msgstr "Disattiva licenza"
494
 
495
+ #: includes/i18n.php:146
496
  msgid "Activate"
497
  msgstr "Attiva"
498
 
499
+ #: includes/i18n.php:147
500
  msgid "Deactivate"
501
  msgstr "Disattiva"
502
 
503
+ #: includes/i18n.php:148
504
  msgid "Skip & Deactivate"
505
  msgstr "Salta e disattiva"
506
 
507
+ #: includes/i18n.php:149
508
+ msgid "Skip & %s"
509
+ msgstr "Salta & %s"
510
+
511
+ #: includes/i18n.php:150
512
  msgid "No - just deactivate"
513
  msgstr "No - disattiva e basta"
514
 
515
+ #: includes/i18n.php:151
516
  msgid "Yes - do your thing"
517
  msgstr "Sì - fai pure"
518
 
519
+ #: includes/i18n.php:152
520
  msgctxt "active mode"
521
  msgid "Active"
522
  msgstr "Attiva"
523
 
524
+ #: includes/i18n.php:153
525
  msgctxt "is active mode?"
526
  msgid "Is Active"
527
  msgstr "è attiva"
528
 
529
+ #: includes/i18n.php:154
530
  msgid "Install Now"
531
  msgstr "Installa ora"
532
 
533
+ #: includes/i18n.php:155
534
  msgid "Install Update Now"
535
  msgstr "Installa l'aggiornamento ora"
536
 
537
+ #: includes/i18n.php:156
538
  msgid "More information about %s"
539
  msgstr "Ulteriori informazioni su %s"
540
 
541
+ #: includes/i18n.php:157
542
  msgid "Localhost"
543
  msgstr "Localhost"
544
 
545
+ #: includes/i18n.php:158
546
  msgctxt "as activate Professional plan"
547
  msgid "Activate %s Plan"
548
  msgstr "Attivare il piano %s"
549
 
550
+ #: includes/i18n.php:159
551
  msgctxt "as 5 licenses left"
552
  msgid "%s left"
553
  msgstr "%s rimanenti"
554
 
555
+ #: includes/i18n.php:160
556
  msgid "Last license"
557
  msgstr "Ultima licenza"
558
 
559
+ #: includes/i18n.php:161
560
  msgid "What is your %s?"
561
  msgstr "Qual è il tuo %s?"
562
 
563
+ #: includes/i18n.php:162
564
  msgid "Activate this add-on"
565
  msgstr "Attivare questo addon"
566
 
567
+ #: includes/i18n.php:163
568
  msgid ""
569
  "Deactivating your license will block all premium features, but will enable "
570
  "you to activate the license on another site. Are you sure you want to "
571
  "proceed?"
572
  msgstr "La disattivazione della licenza bloccherà tutte le funzionalità premium, ma vi permetterà di attivare la licenza su un altro sito. Sei sicuro di voler procedere?"
573
 
574
+ #: includes/i18n.php:164
575
  msgid ""
576
  "Deleting the account will automatically deactivate your %s plan license so "
577
  "you can use it on other sites. If you want to terminate the recurring "
579
  "account. Are you sure you would like to continue with the deletion?"
580
  msgstr "L'eliminazione dell'account disattiva automaticamente la tua licenza del piano %s quindi è possibile utilizzarlo su altri siti. Se si desidera anche terminare i pagamenti ricorrenti, fare clic sul pulsante \"Annulla\" ed effettuare il \"Downgrade\" del tuo account. Sei sicuro di voler continuare con l'eliminazione?"
581
 
582
+ #: includes/i18n.php:165
583
  msgid ""
584
  "Deletion is not temporary. Only delete if you no longer want to use this "
585
  "plugin anymore. Are you sure you would like to continue with the deletion?"
586
  msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?"
587
 
588
+ #: includes/i18n.php:166
589
  msgid ""
590
  "Downgrading your plan will immediately stop all future recurring payments "
591
  "and your %s plan license will expire in %s."
592
  msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s."
593
 
594
+ #: includes/i18n.php:167
595
  msgid ""
596
  "Cancelling the trial will immediately block access to all premium features. "
597
  "Are you sure?"
598
  msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?"
599
 
600
+ #: includes/i18n.php:168
601
  msgid ""
602
  "You can still enjoy all %s features but you will not have access to plugin "
603
  "updates and support."
604
  msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin."
605
 
606
+ #: includes/i18n.php:169
607
  msgid ""
608
+ "Once your license expires you can still use the Free version but you will "
609
+ "NOT have access to the %s features."
610
+ msgstr "Quando la tua licenza scadrà, potrai comunque continuare a usare la versione gratuita, ma NON avrai accesso alle funzionalità %s."
611
 
612
+ #: includes/i18n.php:170
613
  msgid "Are you sure you want to proceed?"
614
  msgstr "Sei sicuro di voler procedere?"
615
 
616
+ #: includes/i18n.php:173
617
  msgid "Add Ons for %s"
618
  msgstr "Add-on per %s"
619
 
620
+ #: includes/i18n.php:174
621
  msgid ""
622
  "We could'nt load the add-ons list. It's probably an issue on our side, "
623
  "please try to come back in few minutes."
624
  msgstr "Non siamo riusciti a caricare la lista degli add-on. Si tratta probabilmente di un problema nel nostro sistema, per favore riprova tra qualche minuto."
625
 
626
+ #: includes/i18n.php:176
627
  msgid "Anonymous feedback"
628
  msgstr "Feedback anonimo"
629
 
630
+ #: includes/i18n.php:177
631
  msgid "Quick feedback"
632
  msgstr "Feedback veloce"
633
 
634
+ #: includes/i18n.php:178
635
  msgid "If you have a moment, please let us know why you are deactivating"
636
  msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?"
637
 
638
+ #: includes/i18n.php:179
639
  msgid "Yes - Deactivate"
640
  msgstr "Si - Disattiva"
641
 
642
+ #: includes/i18n.php:180
643
  msgid "Submit & Deactivate"
644
  msgstr "Invia & Disattiva"
645
 
646
+ #: includes/i18n.php:181
647
  msgid "Cancel"
648
  msgstr "Annulla"
649
 
650
+ #: includes/i18n.php:182
651
  msgid "I no longer need the plugin"
652
  msgstr "Non ho piú bisogno di questo plugin"
653
 
654
+ #: includes/i18n.php:183
655
  msgid "I found a better plugin"
656
  msgstr "Ho trovato un plugin migliore"
657
 
658
+ #: includes/i18n.php:184
659
  msgid "I only needed the plugin for a short period"
660
  msgstr "Avevo bisogno del plugin solo per un breve periodo"
661
 
662
+ #: includes/i18n.php:185
663
  msgid "The plugin broke my site"
664
  msgstr "Il plugin ha causato problemi al mio sito"
665
 
666
+ #: includes/i18n.php:186
667
  msgid "The plugin suddenly stopped working"
668
  msgstr "Il plugin ha smesso di funzionare"
669
 
670
+ #: includes/i18n.php:187
671
  msgid "I can't pay for it anymore"
672
  msgstr "Non posso piú pagarlo"
673
 
674
+ #: includes/i18n.php:188
675
  msgid "It's a temporary deactivation. I'm just debugging an issue."
676
  msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema."
677
 
678
+ #: includes/i18n.php:189
679
  msgctxt ""
680
  "the text of the \"other\" reason for deactivating the plugin that is shown "
681
  "in the modal box."
682
  msgid "Other"
683
  msgstr "Altro"
684
 
685
+ #: includes/i18n.php:191
686
  msgid "Kindly tell us the reason so we can improve."
687
  msgstr "Spiegandoci il motivo ci aiuterai a migliorare."
688
 
689
+ #: includes/i18n.php:192
690
  msgid "What's the plugin's name?"
691
  msgstr "Qual è il nome del plugin?"
692
 
693
+ #: includes/i18n.php:193
694
  msgid "What price would you feel comfortable paying?"
695
  msgstr "Che prezzo ritieni opportuno pagare?"
696
 
697
+ #: includes/i18n.php:194
698
  msgid "I couldn't understand how to make it work"
699
  msgstr "Non capisco come farlo funzionare"
700
 
701
+ #: includes/i18n.php:195
702
  msgid ""
703
  "The plugin is great, but I need specific feature that you don't support"
704
  msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata"
705
 
706
+ #: includes/i18n.php:196
707
  msgid "The plugin is not working"
708
  msgstr "Il plugin non funziona"
709
 
710
+ #: includes/i18n.php:197
711
  msgid "It's not what I was looking for"
712
  msgstr "Non é quello che stavo cercando"
713
 
714
+ #: includes/i18n.php:198
715
  msgid "The plugin didn't work as expected"
716
  msgstr "Il plugin non funziona come mi aspettavo"
717
 
718
+ #: includes/i18n.php:199
719
  msgid "What feature?"
720
  msgstr "Quale funzionalitá?"
721
 
722
+ #: includes/i18n.php:200
723
  msgid "Kindly share what didn't work so we can fix it for future users..."
724
  msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..."
725
 
726
+ #: includes/i18n.php:201
727
  msgid "What you've been looking for?"
728
  msgstr "Che cosa stai cercando?"
729
 
730
+ #: includes/i18n.php:202
731
  msgid "What did you expect?"
732
  msgstr "Che cosa ti aspettavi?"
733
 
734
+ #: includes/i18n.php:203
735
  msgid "The plugin didn't work"
736
  msgstr "Il plugin non funziona"
737
 
738
+ #: includes/i18n.php:204
739
  msgid "I don't like to share my information with you"
740
  msgstr "Non voglio condividere i miei dati con te"
741
 
742
+ #: includes/i18n.php:205
743
  msgid ""
744
  "You might have missed it, but you don't have to share any data and can just "
745
  "%s the opt-in."
746
  msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione."
747
 
748
+ #: includes/i18n.php:209
749
  msgctxt "greeting"
750
  msgid "Hey %s,"
751
  msgstr "Hey %s,"
752
 
753
+ #: includes/i18n.php:210
754
  msgctxt "a greeting. E.g. Thanks John!"
755
  msgid "Thanks %s!"
756
  msgstr "Grazie %s!"
757
 
758
+ #: includes/i18n.php:211
759
  msgid ""
760
  "Never miss an important update - opt-in to our security and feature updates "
761
  "notifications, and non-sensitive diagnostic tracking with %4$s."
762
  msgstr "Non perdere nessun aggiornamento importante - iscriviti per ricevere notifiche su aggiornamenti relativi alla sicurezza e nuove versioni, oltre al tracciamento di diagnostica non sensibile con %4$s."
763
 
764
+ #: includes/i18n.php:212
765
  msgid ""
766
  "Please help us improve %1$s! If you opt-in, some data about your usage of "
767
  "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
768
  "work just fine."
769
  msgstr "Aiutaci a migliorare %1$s! Se ti iscrivi, alcuni dati riguardanti il tuo utilizzo di %1$s verranno inviati a %4$s. Se salti questo passaggio, non c'è problema! %1$s funzionerà ugualmente."
770
 
771
+ #: includes/i18n.php:213
772
  msgid ""
773
  "You should receive an activation email for %s to your mailbox at %s. Please "
774
  "make sure you click the activation button in that email to %s."
775
+ msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per %s."
776
 
777
+ #: includes/i18n.php:214
778
  msgid "complete the install"
779
  msgstr "completa l'installazione"
780
 
781
+ #: includes/i18n.php:215
782
  msgid "start the trial"
783
  msgstr "Inizia il periodo di prova gratuito"
784
 
785
+ #: includes/i18n.php:216
786
  msgid ""
787
  "Thanks for purchasing %s! To get started, please enter your license key:"
788
  msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:"
789
 
790
+ #: includes/i18n.php:217
791
  msgid ""
792
  "The plugin will be periodically sending data to %s to check for plugin "
793
  "updates and verify the validity of your license."
794
  msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza."
795
 
796
+ #: includes/i18n.php:218
797
  msgid "What permissions are being granted?"
798
  msgstr "Quali autorizzazioni vengono concesse?"
799
 
800
+ #: includes/i18n.php:219
801
  msgid "Your Profile Overview"
802
  msgstr "Panoramica del tuo profilo"
803
 
804
+ #: includes/i18n.php:220
805
  msgid "Name and email address"
806
  msgstr "Nome ed indirizzo email"
807
 
808
+ #: includes/i18n.php:221
809
  msgid "Your Site Overview"
810
  msgstr "Panoramica del tuo sito"
811
 
812
+ #: includes/i18n.php:222
813
  msgid "Site URL, WP version, PHP info, plugins & themes"
814
  msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi"
815
 
816
+ #: includes/i18n.php:223
817
  msgid "Current Plugin Events"
818
  msgstr "Eventi correnti del plugin"
819
 
820
+ #: includes/i18n.php:224
821
  msgid "Activation, deactivation and uninstall"
822
  msgstr "Attiva, disattivazione e disinstallazione"
823
 
824
+ #: includes/i18n.php:225
825
  msgid "Plugins & Themes"
826
  msgstr "Plugin e temi"
827
 
828
+ #: includes/i18n.php:226
829
  msgid "Titles, versions and state."
830
  msgstr "Titoli, versioni e stato."
831
 
832
+ #: includes/i18n.php:227
833
  msgid "Admin Notices"
834
  msgstr "Avvisi amministratore"
835
 
836
+ #: includes/i18n.php:228
837
  msgid "Newsletter"
838
  msgstr "Newsletter"
839
 
840
+ #: includes/i18n.php:229
841
  msgid "Updates, announcements, marketing, no spam"
842
  msgstr "Aggiornamenti, annunci, marketing, no spam"
843
 
844
+ #: includes/i18n.php:230
845
  msgid "Privacy Policy"
846
  msgstr "Politica sulla privacy"
847
 
848
+ #: includes/i18n.php:231
849
  msgid "Terms of Service"
850
  msgstr "Termini del Servizio"
851
 
852
+ #: includes/i18n.php:232
853
  msgctxt "as activating plugin"
854
  msgid "Activating"
855
  msgstr "Attivazione"
856
 
857
+ #: includes/i18n.php:233
858
  msgctxt "as in the process of sending an email"
859
  msgid "Sending email"
860
  msgstr "Invio email"
861
 
862
+ #: includes/i18n.php:234
863
  msgctxt "button label"
864
  msgid "Allow & Continue"
865
  msgstr "Consenti & Continua"
866
 
867
+ #: includes/i18n.php:235
868
  msgctxt "button label"
869
  msgid "Agree & Activate License"
870
  msgstr "Accetta e attiva la licenza"
871
 
872
+ #: includes/i18n.php:236
873
  msgctxt "verb"
874
  msgid "Skip"
875
  msgstr "Salta"
876
 
877
+ #: includes/i18n.php:237
878
  msgid "Click here to use the plugin anonymously"
879
  msgstr "Fai clic qui per usare il plugin anonimamente"
880
 
881
+ #: includes/i18n.php:238
882
  msgid "Re-send activation email"
883
  msgstr "Invia nuovamente l'email di attivazione"
884
 
885
+ #: includes/i18n.php:239
886
  msgid "License key"
887
  msgstr "Chiave di licenza"
888
 
889
+ #: includes/i18n.php:240
890
  msgid "Send License Key"
891
  msgstr "Invia chiave di licenza"
892
 
893
+ #: includes/i18n.php:241
894
  msgid "Sending license key"
895
  msgstr "Invio chiave di licenza"
896
 
897
+ #: includes/i18n.php:242
898
  msgid "Have a license key?"
899
  msgstr "Hai una chiave di licenza?"
900
 
901
+ #: includes/i18n.php:243
902
  msgid "Don't have a license key?"
903
  msgstr "Non hai una chiave di licenza?"
904
 
905
+ #: includes/i18n.php:244
906
  msgid "Can't find your license key?"
907
  msgstr "Non trovi la tua chiave di licenza?"
908
 
909
+ #: includes/i18n.php:245
910
  msgid ""
911
  "We couldn't find your email address in the system, are you sure it's the "
912
  "right address?"
913
  msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?"
914
 
915
+ #: includes/i18n.php:246
916
  msgid ""
917
  "We can't see any active licenses associated with that email address, are you"
918
  " sure it's the right address?"
919
  msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?"
920
 
921
+ #: includes/i18n.php:247
922
  msgid "Opt In"
923
  msgstr "Iscriviti"
924
 
925
+ #: includes/i18n.php:248
926
  msgid "Opt Out"
927
  msgstr "Cancella iscrizione"
928
 
929
+ #: includes/i18n.php:249
930
  msgid "On second thought - I want to continue helping"
931
  msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto"
932
 
933
+ #: includes/i18n.php:250
934
  msgid "Opting out..."
935
  msgstr "Cancellamento dell'iscrizione..."
936
 
937
+ #: includes/i18n.php:251
938
  msgid "Opting in..."
939
  msgstr "Iscrizione in corso..."
940
 
941
+ #: includes/i18n.php:252
942
  msgid ""
943
  "We appreciate your help in making the %s better by letting us track some "
944
  "usage data."
945
  msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s"
946
 
947
+ #: includes/i18n.php:253
948
  msgid ""
949
  "Usage tracking is done in the name of making %s better. Making a better user"
950
  " experience, prioritizing new features, and more good things. We'd really "
951
  "appreciate if you'll reconsider letting us continue with the tracking."
952
  msgstr "Tracciamo l'utilizzo esclusivamente per rendere %s migliore, creando una migliore esperienza utente e dando priorità a nuove funzionalità, oltre a molte altre buone cose. Saremmo veramente felici di vederti cambiare idea e lasciarci continuare con il tracciamento."
953
 
954
+ #: includes/i18n.php:254
955
  msgid ""
956
  "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
957
  "%s."
958
  msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s."
959
 
960
+ #: includes/i18n.php:258
961
  msgid "Screenshots"
962
  msgstr "Screenshots"
963
 
964
+ #: includes/i18n.php:259
965
  msgid "Click to view full-size screenshot %d"
966
  msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d"
967
 
968
+ #: includes/i18n.php:263
969
  msgid "Freemius Debug"
970
  msgstr "Debug Freemius"
971
 
972
+ #: includes/i18n.php:264
973
  msgctxt "as turned on"
974
  msgid "On"
975
  msgstr "Attivo"
976
 
977
+ #: includes/i18n.php:265
978
  msgctxt "as turned off"
979
  msgid "Off"
980
  msgstr "Non attivo"
981
 
982
+ #: includes/i18n.php:266
983
  msgctxt "as code debugging"
984
  msgid "Debugging"
985
  msgstr "Debugging"
986
 
987
+ #: includes/i18n.php:267
988
  msgid "Freemius State"
989
  msgstr "Stato di Freemius"
990
 
991
+ #: includes/i18n.php:268
992
  msgctxt "as connection was successful"
993
  msgid "Connected"
994
  msgstr "Connesso"
995
 
996
+ #: includes/i18n.php:269
997
  msgctxt "as connection blocked"
998
  msgid "Blocked"
999
  msgstr "Bloccato"
1000
 
1001
+ #: includes/i18n.php:270
1002
  msgctxt "as application program interface"
1003
  msgid "API"
1004
  msgstr "API"
1005
 
1006
+ #: includes/i18n.php:271
1007
  msgctxt "as software development kit versions"
1008
  msgid "SDK"
1009
  msgstr "SDK"
1010
 
1011
+ #: includes/i18n.php:272
1012
  msgctxt "as software development kit versions"
1013
  msgid "SDK Versions"
1014
  msgstr "Versioni SDK"
1015
 
1016
+ #: includes/i18n.php:273
1017
  msgctxt "as plugin folder path"
1018
  msgid "Plugin Path"
1019
  msgstr "Percorso del plugin"
1020
 
1021
+ #: includes/i18n.php:274
1022
  msgctxt "as sdk path"
1023
  msgid "SDK Path"
1024
  msgstr "Percorso SDK"
1025
 
1026
+ #: includes/i18n.php:275
1027
  msgid "Add Ons of Plugin %s"
1028
  msgstr "Add-on del Plugin %s"
1029
 
1030
+ #: includes/i18n.php:276
1031
  msgid "Are you sure you want to delete all Freemius data?"
1032
  msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?"
1033
 
1034
+ #: includes/i18n.php:277
1035
  msgid "Actions"
1036
  msgstr "Azioni"
1037
 
1038
+ #: includes/i18n.php:278
1039
  msgid "Delete All Accounts"
1040
  msgstr "Eliminare tutti gli account"
1041
 
1042
+ #: includes/i18n.php:279
1043
  msgid "Start Fresh"
1044
  msgstr "Inizia da capo"
1045
 
1046
+ #: includes/i18n.php:280
1047
  msgid "Clear API Cache"
1048
  msgstr "Elimina cache API"
1049
 
1050
+ #: includes/i18n.php:281
1051
  msgid "Sync Data From Server"
1052
  msgstr "Sincronizza i dati dal server"
1053
 
1054
+ #: includes/i18n.php:282
1055
  msgid "Scheduled Crons"
1056
  msgstr "Azioni programmate"
1057
 
1058
+ #: includes/i18n.php:283
1059
+ msgid "Cron Type"
1060
+ msgstr "Tipo di Cron"
1061
+
1062
+ #: includes/i18n.php:284
1063
  msgid "Plugins & Themes Sync"
1064
  msgstr "Sincronizzazione plugin e temi"
1065
 
1066
+ #: includes/i18n.php:285
1067
+ msgid "Licenses"
1068
+ msgstr "Licenze"
1069
+
1070
+ #: includes/i18n.php:286
1071
+ msgid "Debug Log"
1072
+ msgstr "Debug Log"
1073
+
1074
+ #: includes/i18n.php:287
1075
+ msgid "All"
1076
+ msgstr "Tutto"
1077
+
1078
+ #: includes/i18n.php:288
1079
+ msgid "File"
1080
+ msgstr "File"
1081
+
1082
+ #: includes/i18n.php:289
1083
+ msgid "Function"
1084
+ msgstr "Funzione"
1085
+
1086
+ #: includes/i18n.php:290
1087
+ msgid "Process ID"
1088
+ msgstr "ID processo"
1089
+
1090
+ #: includes/i18n.php:291
1091
+ msgid "Logger"
1092
+ msgstr "Logger"
1093
+
1094
+ #: includes/i18n.php:292
1095
+ msgid "Message"
1096
+ msgstr "Messaggio"
1097
+
1098
+ #: includes/i18n.php:293
1099
+ msgid "Download"
1100
+ msgstr "Download"
1101
+
1102
+ #: includes/i18n.php:294
1103
+ msgid "Filter"
1104
+ msgstr "Filtro"
1105
+
1106
+ #: includes/i18n.php:295
1107
+ msgid "Type"
1108
+ msgstr "Tipo"
1109
+
1110
+ #: includes/i18n.php:296
1111
+ msgid "All Types"
1112
+ msgstr "Tutti i tipi"
1113
+
1114
+ #: includes/i18n.php:297
1115
+ msgid "All Requests"
1116
+ msgstr "Tutte le richieste"
1117
+
1118
+ #: includes/i18n.php:301
1119
  msgctxt "as congratulations"
1120
  msgid "Congrats"
1121
  msgstr "Congratulazioni"
1122
 
1123
+ #: includes/i18n.php:302
1124
  msgctxt "exclamation"
1125
  msgid "Oops"
1126
  msgstr "Ops"
1127
 
1128
+ #: includes/i18n.php:303
1129
  msgctxt "interjection expressing joy or exuberance"
1130
  msgid "Yee-haw"
1131
  msgstr "Evvai"
1132
 
1133
+ #: includes/i18n.php:304
1134
  msgctxt ""
1135
  "(especially in electronic communication) used to express elation, "
1136
  "enthusiasm, or triumph."
1137
  msgid "W00t"
1138
  msgstr "Forte"
1139
 
1140
+ #: includes/i18n.php:306
1141
  msgctxt "a positive response"
1142
  msgid "Right on"
1143
  msgstr "Sì"
1144
 
1145
+ #: includes/i18n.php:307
1146
  msgctxt ""
1147
  "something somebody says when they are thinking about what you have just "
1148
  "said. "
1149
  msgid "Hmm"
1150
  msgstr "Uhm"
1151
 
1152
+ #: includes/i18n.php:309
1153
  msgid "O.K"
1154
  msgstr "OK"
1155
 
1156
+ #: includes/i18n.php:310
1157
  msgctxt "exclamation"
1158
  msgid "Hey"
1159
  msgstr "Hey"
1160
 
1161
+ #: includes/i18n.php:311
1162
  msgctxt "advance notice of something that will need attention."
1163
  msgid "Heads up"
1164
  msgstr "Attenzione"
1165
 
1166
+ #: includes/i18n.php:316
1167
  msgid "Seems like you got the latest release."
1168
  msgstr "Sembra che tu abbia la versione più recente."
1169
 
1170
+ #: includes/i18n.php:317
1171
  msgid "You are all good!"
1172
  msgstr "Sei fantastico!"
1173
 
1174
+ #: includes/i18n.php:318
1175
  msgid ""
1176
  "Sorry, we could not complete the email update. Another user with the same "
1177
  "email is already registered."
1178
  msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato."
1179
 
1180
+ #: includes/i18n.php:319
1181
  msgid ""
1182
  "If you would like to give up the ownership of the plugin's account to %s "
1183
  "click the Change Ownership button."
1184
  msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà."
1185
 
1186
+ #: includes/i18n.php:320
1187
  msgid ""
1188
  "Your email was successfully updated. You should receive an email with "
1189
  "confirmation instructions in few moments."
1190
  msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti."
1191
 
1192
+ #: includes/i18n.php:321
1193
  msgid "Your name was successfully updated."
1194
  msgstr "Il tuo nome è stato aggiornato correttamente."
1195
 
1196
+ #: includes/i18n.php:322
1197
  msgid "You have successfully updated your %s."
1198
  msgstr "Hai aggiornato con successo il tuo %s."
1199
 
1200
+ #: includes/i18n.php:323
1201
  msgid "Please provide your full name."
1202
  msgstr "Per favore inserisci il tuo nome completo."
1203
 
1204
+ #: includes/i18n.php:324
1205
  msgid ""
1206
  "Verification mail was just sent to %s. If you can't find it after 5 min, "
1207
  "please check your spam box."
1208
  msgstr "L'email di verifica è stata inviata a %s. Se dopo 5 minuti non è ancora arrivata, per favore controlla nella tua casella di posta indesiderata."
1209
 
1210
+ #: includes/i18n.php:325
1211
  msgid ""
1212
  "Just letting you know that the add-ons information of %s is being pulled "
1213
  "from an external server."
1214
  msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno."
1215
 
1216
+ #: includes/i18n.php:326
1217
  msgid "No credit card required"
1218
  msgstr "Nessuna carta di credito richiesta"
1219
 
1220
+ #: includes/i18n.php:327
1221
  msgid "Premium plugin version was successfully activated."
1222
  msgstr "La versione Premium del plugin è stata attivata correttamente."
1223
 
1224
+ #: includes/i18n.php:328
1225
  msgid "The upgrade of %s was successfully completed."
1226
  msgstr "L'aggiornamento di %s è stato completato con successo."
1227
 
1228
+ #: includes/i18n.php:329
1229
  msgid "Your account was successfully activated with the %s plan."
1230
  msgstr "Il tuo account è stato attivato correttamente con il piano %s."
1231
 
1232
+ #: includes/i18n.php:330
1233
  msgid "Download the latest %s version now"
1234
  msgstr "Scarica l'ultima versione di %s"
1235
 
1236
+ #: includes/i18n.php:331
1237
  msgid "Please follow these steps to complete the upgrade"
1238
  msgstr "Segui i passi seguenti per completare l'aggiornamento"
1239
 
1240
+ #: includes/i18n.php:332
1241
  msgid "Download the latest %s version"
1242
  msgstr "Scarica l'ultima versione di %s"
1243
 
1244
+ #: includes/i18n.php:333
1245
  msgid "Download the latest version"
1246
  msgstr "Scarica l'ultima versione"
1247
 
1248
+ #: includes/i18n.php:334
1249
  msgid "Deactivate the free version"
1250
  msgstr "Disattiva la versione gratuita"
1251
 
1252
+ #: includes/i18n.php:335
1253
  msgid "Upload and activate the downloaded version"
1254
  msgstr "Carica e attiva la versione scaricata"
1255
 
1256
+ #: includes/i18n.php:336
1257
  msgid "How to upload and activate?"
1258
  msgstr "Come faccio a caricare ed attivare?"
1259
 
1260
+ #: includes/i18n.php:337
1261
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1262
  msgid "%s Add-on was successfully purchased."
1263
  msgstr "L' add-on %s è stato acquistato con successo."
1264
 
1265
+ #: includes/i18n.php:339
1266
  msgid "Your %s Add-on plan was successfully upgraded."
1267
  msgstr "Il piano del tuo add-on %s è stato aggiornato con successo."
1268
 
1269
+ #: includes/i18n.php:340
1270
  msgid "Your email has been successfully verified - you are AWESOME!"
1271
  msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!"
1272
 
1273
+ #: includes/i18n.php:341
1274
  msgid "Your plan was successfully upgraded."
1275
  msgstr "Il piano è stato aggiornato con successo."
1276
 
1277
+ #: includes/i18n.php:342
1278
  msgid "Your plan was successfully changed to %s."
1279
  msgstr "Il piano è stato cambiato con successo a %s."
1280
 
1281
+ #: includes/i18n.php:343
1282
  msgid ""
1283
  "Your license has expired. You can still continue using the free plugin "
1284
  "forever."
1285
  msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre."
1286
 
1287
+ #: includes/i18n.php:344
1288
  msgid ""
1289
  "Your license has been cancelled. If you think it's a mistake, please contact"
1290
  " support."
1291
  msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto."
1292
 
1293
+ #: includes/i18n.php:345
1294
  msgid "Your trial has been successfully started."
1295
  msgstr "La versione di prova è stata avviata correttamente."
1296
 
1297
+ #: includes/i18n.php:346
1298
  msgid "Your license was successfully activated."
1299
  msgstr "La tua licenza è stata attivata correttamente."
1300
 
1301
+ #: includes/i18n.php:347
1302
  msgid "It looks like your site currently doesn't have an active license."
1303
  msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva."
1304
 
1305
+ #: includes/i18n.php:348
1306
  msgid ""
1307
  "Your license was successfully deactivated, you are back to the %s plan."
1308
  msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s."
1309
 
1310
+ #: includes/i18n.php:349
1311
  msgid "It looks like the license deactivation failed."
1312
  msgstr "Sembra che la disattivazione della licenza non sia riuscita."
1313
 
1314
+ #: includes/i18n.php:350
1315
  msgid "It looks like the license could not be activated."
1316
  msgstr "Sembra che la licenza non possa essere attivata."
1317
 
1318
+ #: includes/i18n.php:351
1319
  msgid "Error received from the server:"
1320
  msgstr "Errore ricevuto dal server:"
1321
 
1322
+ #: includes/i18n.php:352
1323
  msgid ""
1324
  "Your trial has expired. You can still continue using all our free features."
1325
  msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite."
1326
 
1327
+ #: includes/i18n.php:353
1328
  msgid ""
1329
  "Your plan was successfully downgraded. Your %s plan license will expire in "
1330
  "%s."
1331
  msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s."
1332
 
1333
+ #: includes/i18n.php:354
1334
  msgid ""
1335
  "Seems like we are having some temporary issue with your plan downgrade. "
1336
  "Please try again in few minutes."
1337
  msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto."
1338
 
1339
+ #: includes/i18n.php:355
1340
  msgid ""
1341
  "It looks like you are not in trial mode anymore so there's nothing to cancel"
1342
  " :)"
1343
  msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)"
1344
 
1345
+ #: includes/i18n.php:356
1346
  msgid "Your %s free trial was successfully cancelled."
1347
  msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo."
1348
 
1349
+ #: includes/i18n.php:357
1350
  msgctxt "%s - numeric version number"
1351
  msgid "Version %s was released."
1352
  msgstr "La versione %s é stata rilasciata."
1353
 
1354
+ #: includes/i18n.php:358
1355
  msgid "Please download %s."
1356
  msgstr "Scarica %s."
1357
 
1358
+ #: includes/i18n.php:359
1359
  msgctxt "%s - plan name, as the latest professional version here"
1360
  msgid "the latest %s version here"
1361
  msgstr "l'ultima versione %s é quì"
1362
 
1363
+ #: includes/i18n.php:361
1364
  msgid ""
1365
  "How do you like %s so far? Test all our %s premium features with a %d-day "
1366
  "free trial."
1367
  msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni."
1368
 
1369
+ #: includes/i18n.php:362
1370
  msgctxt "call to action"
1371
  msgid "Start free trial"
1372
  msgstr "Inizia il periodo di prova gratuito"
1373
 
1374
+ #: includes/i18n.php:363
1375
  msgid "Starting trial"
1376
  msgstr "Inizio del periodo di prova gratuito"
1377
 
1378
+ #: includes/i18n.php:364
1379
  msgid "Please wait"
1380
  msgstr "Attendere"
1381
 
1382
+ #: includes/i18n.php:365
1383
  msgid ""
1384
  "Seems like we are having some temporary issue with your trial cancellation. "
1385
  "Please try again in few minutes."
1386
  msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto."
1387
 
1388
+ #: includes/i18n.php:366
1389
  msgid "You already utilized a trial before."
1390
  msgstr "Hai già utilizzato una prova gratuita in passato."
1391
 
1392
+ #: includes/i18n.php:367
1393
  msgid "You are already running the plugin in a trial mode."
1394
  msgstr "Stai già usando il plugin in modalità di prova gratuita."
1395
 
1396
+ #: includes/i18n.php:368
1397
  msgid "Plan %s do not exist, therefore, can't start a trial."
1398
  msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova."
1399
 
1400
+ #: includes/i18n.php:369
1401
  msgid "Plan %s does not support a trial period."
1402
  msgstr "Il piano %s non supporta il periodo di prova."
1403
 
1404
+ #: includes/i18n.php:370
1405
  msgid "None of the plugin's plans supports a trial period."
1406
  msgstr "Non esiste alcun piano del plugin che offra il periodo di prova."
1407
 
1408
+ #: includes/i18n.php:371
1409
  msgid ""
1410
  "Unexpected API error. Please contact the plugin's author with the following "
1411
  "error."
1412
  msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore."
1413
 
1414
+ #: includes/i18n.php:372
1415
  msgid "No commitment for %s days - cancel anytime!"
1416
  msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!"
1417
 
1418
+ #: includes/i18n.php:373
1419
  msgid ""
1420
  "Your license has expired. You can still continue using all the %s features, "
1421
  "but you'll need to renew your license to continue getting updates and "
1422
  "support."
1423
  msgstr "La licenza è scaduta. È comunque possibile continuare a utilizzare tutte le funzionalità di %s, ma sarà necessario rinnovare la licenza per continuare a ricevere gli aggiornamenti ed il supporto."
1424
 
1425
+ #: includes/i18n.php:374
1426
  msgid "Couldn't activate %s."
1427
  msgstr "Non é stato possibile attivare %s."
1428
 
1429
+ #: includes/i18n.php:375
1430
  msgid "Please contact us with the following message:"
1431
  msgstr "Contattaci con il seguente messaggio:"
1432
 
1433
+ #: includes/i18n.php:376
1434
  msgid ""
1435
  "It looks like you are still on the %s plan. If you did upgrade or change "
1436
  "your plan, it's probably an issue on our side - sorry."
1437
  msgstr "Sembra che tu sia ancora usando il piano %s. Se hai effettuato un upgrade o cambiato il piano, è probabile che ci sia un problema nei nostri sistemi."
1438
 
1439
+ #: includes/i18n.php:377
1440
  msgid "Please contact us here"
1441
  msgstr "Contattaci qui"
1442
 
1443
+ #: includes/i18n.php:378
1444
  msgid ""
1445
  "I have upgraded my account but when I try to Sync the License, the plan "
1446
  "remains %s."
1447
  msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s."
1448
 
1449
+ #: includes/i18n.php:381
1450
  msgid "From unknown reason, the API connectivity test failed."
1451
  msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti."
1452
 
1453
+ #: includes/i18n.php:382
1454
  msgid ""
1455
  "It's probably a temporary issue on our end. Just to be sure, with your "
1456
  "permission, would it be o.k to run another connectivity test?"
1457
  msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? "
1458
 
1459
+ #: includes/i18n.php:383
1460
  msgid ""
1461
  "We use PHP cURL library for the API calls, which is a very common library "
1462
  "and usually installed out of the box. Unfortunately, cURL is not installed "
1463
  "on your server."
1464
  msgstr "Utilizziamo la libreria PHP cURL per le chiamate alla nostra API. Questa libreria è molto comune ed è installata di base. Sfortunatamente cURL non è presente nel tuo server."
1465
 
1466
+ #: includes/i18n.php:384
1467
  msgid ""
1468
  "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1469
  msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione."
1470
 
1471
+ #: includes/i18n.php:385
1472
  msgctxt "as pluginX requires an access to our API"
1473
  msgid "%s requires an access to our API."
1474
  msgstr "%s richiede un accesso alla nostra API."
1475
 
1476
+ #: includes/i18n.php:387
1477
  msgid ""
1478
  "It looks like your server is using Squid ACL (access control lists), which "
1479
  "blocks the connection."
1480
  msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione."
1481
 
1482
+ #: includes/i18n.php:388
1483
  msgid "I don't know what is Squid or ACL, help me!"
1484
  msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!"
1485
 
1486
+ #: includes/i18n.php389, includes/i18n.php:393
1487
  msgid ""
1488
  "We'll make sure to contact your hosting company and resolve the issue. You "
1489
  "will get a follow-up email to %s once we have an update."
1490
  msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti."
1491
 
1492
+ #: includes/i18n.php:390
1493
  msgid "I'm a system administrator"
1494
  msgstr "Sono un sistemista"
1495
 
1496
+ #: includes/i18n.php:391
1497
  msgid ""
1498
+ "Great, please whitelist the following domains: %s. Once you are done, "
1499
+ "deactivate the plugin and activate it again."
1500
+ msgstr "Perfetto, ora per favore aggiungi alla whitelist i seguenti domini: %s. Quando hai fatto, disattiva il plugin e riattivalo di nuovo."
1501
 
1502
+ #: includes/i18n.php:392
1503
  msgid "I don't know what is cURL or how to install it, help me!"
1504
  msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!"
1505
 
1506
+ #: includes/i18n.php:394
1507
  msgid ""
1508
  "Great, please install cURL and enable it in your php.ini file. To make sure "
1509
  "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1510
  "the plugin and reactivate it back again."
1511
  msgstr "Perfetto, installa cURL ed attivalo nel tuo file php.ini. Per essere sicuro di averlo attivato con successo, usa \"phpinfo()\". Una volta attivato disattva il plugin e attivalo di nuovo."
1512
 
1513
+ #: includes/i18n.php:395
1514
  msgid ""
1515
  "We are sure it's an issue on our side and more than happy to resolve it for "
1516
  "you ASAP if you give us a chance."
1517
  msgstr "Siamo sicuri che sia un nostro problema e siamo più che felici di risolverlo per te al più presto. Per poter procedere abbiamo bisogno del tuo consenso."
1518
 
1519
+ #: includes/i18n.php:396
1520
  msgid ""
1521
  "Sorry for the inconvenience and we are here to help if you give us a chance."
1522
  msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso."
1523
 
1524
+ #: includes/i18n.php:397
1525
  msgid "Yes - I'm giving you a chance to fix it"
1526
  msgstr "Sì - sto dandovi la possibilità di risolvere il problema"
1527
 
1528
+ #: includes/i18n.php:398
1529
  msgid ""
1530
  "We will do our best to whitelist your server and resolve this issue ASAP. "
1531
  "You will get a follow-up email to %s once we have an update."
1532
  msgstr "Faremo del nostro meglio per mettere il server in whitelist e risolvere il problema il prima possibile. Avrai un aggiornamento dello stato tramite email all'indirizzo %s."
1533
 
1534
+ #: includes/i18n.php:399
1535
  msgid "Let's try your previous version"
1536
  msgstr "Proviamo con la versione precedente"
1537
 
1538
+ #: includes/i18n.php:400
1539
  msgid "Uninstall this version and install the previous one."
1540
  msgstr "Disinstalla questa versione e installa quella precedente."
1541
 
1542
+ #: includes/i18n.php:401
1543
  msgid "That's exhausting, please deactivate"
1544
  msgstr "È estenuante, disattivalo"
1545
 
1546
+ #: includes/i18n.php:402
1547
  msgid ""
1548
  "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1549
  " to see you again in the future."
1550
  msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro."
1551
 
1552
+ #: includes/i18n.php:403
1553
  msgid ""
1554
  "Thank for giving us the chance to fix it! A message was just sent to our "
1555
  "technical staff. We will get back to you as soon as we have an update to %s."
1556
  " Appreciate your patience."
1557
  msgstr "Grazie per averci dato la possibilità di risolvere il problema! È stato appena inviato un messaggio al nostro staff tecnico. Ti risponderemo non appena avremo un aggiornamento riguardante %s. Grazie per la tua pazienza."
1558
 
1559
+ #: includes/i18n.php:404
1560
  msgctxt "%1s - plugin title, %2s - API domain"
1561
  msgid ""
1562
  "Your server is blocking the access to Freemius' API, which is crucial for "
1563
  "%1s synchronization. Please contact your host to whitelist %2s"
1564
  msgstr "Il tuo server sta bloccando l'accesso all'API di Freemius. L'accesso è cruciale per quanto riguarda la la sincronizzazione di %1s. Per favore contatta il tuo host per aggiungere %2s alla whitelist."
1565
 
1566
+ #: includes/i18n.php:406
1567
  msgid ""
1568
  "It seems like one of the authentication parameters is wrong. Update your "
1569
  "Public Key, Secret Key & User ID, and try again."
1570
  msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova."
1571
 
1572
+ #: includes/i18n.php:409
1573
  msgid ""
1574
  "Please check your mailbox, you should receive an email via %s to confirm the"
1575
  " ownership change. From security reasons, you must confirm the change within"
1577
  "folder."
1578
  msgstr "Verifica di aver ricevuto l'email da %s per confermare il cambiamento del proprietario. Per ragioni di sicurezza devi confermare il cambiamento entro 15 minuti. Se non trovi l'email controlla nella posta indesiderata."
1579
 
1580
+ #: includes/i18n.php:410
1581
  msgid ""
1582
  "Thanks for confirming the ownership change. An email was just sent to %s for"
1583
  " final approval."
1584
  msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale."
1585
 
1586
+ #: includes/i18n.php:411
1587
  msgid "%s is the new owner of the account."
1588
  msgstr "%s è il nuovo proprietario dell'account."
1589
 
1590
+ #: includes/i18n.php:413
1591
  msgctxt "addonX cannot run without pluginY"
1592
  msgid "%s cannot run without %s."
1593
  msgstr "%s non può funzionare senza %s."
1594
 
1595
+ #: includes/i18n.php:415
1596
  msgctxt "addonX cannot run..."
1597
  msgid "%s cannot run without the plugin."
1598
  msgstr "%s non può funzionare senza il plugin."
1599
 
1600
+ #: includes/i18n.php:416
1601
  msgctxt "pluginX activation was successfully..."
1602
  msgid "%s activation was successfully completed."
1603
  msgstr "%s è stato attivato con successo."
1604
 
1605
+ #: includes/i18n.php:418
1606
  msgctxt "Plugin installer section title"
1607
  msgid "Features & Pricing"
1608
  msgstr "Caratteristiche & prezzi"
1609
 
1610
+ #: includes/i18n.php:419
1611
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1612
  msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius."
1613
 
1614
+ #: includes/i18n.php:420
1615
  msgid "Paid add-on must be deployed to Freemius."
1616
  msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius."
1617
 
1618
+ #: includes/i18n.php:424
1619
  msgid ""
1620
  "%s is a premium only add-on. You have to purchase a license first before "
1621
  "activating the plugin."
1622
  msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin."
1623
 
1624
+ #: includes/i18n.php:425
1625
  msgid ""
1626
  "%s free trial was successfully cancelled. Since the add-on is premium only "
1627
  "it was automatically deactivated. If you like to use it in the future, "
1628
  "you'll have to purchase a license."
1629
  msgstr "Il periodo di prova gratuito %s è stato annullato con successo. Siccome l'add-on è premium, è stato disattivato automaticamente. Se vorrai usarlo in futuro, dovrai comprare una licenza."
1630
 
1631
+ #: includes/i18n.php:430
1632
  msgctxt "as every month"
1633
  msgid "Monthly"
1634
  msgstr "Mensilmente"
1635
 
1636
+ #: includes/i18n.php:431
1637
  msgctxt "as monthly period"
1638
  msgid "mo"
1639
  msgstr "mese"
1640
 
1641
+ #: includes/i18n.php:432
1642
  msgctxt "as once a year"
1643
  msgid "Annual"
1644
  msgstr "Annuale"
1645
 
1646
+ #: includes/i18n.php:433
1647
  msgctxt "as once a year"
1648
  msgid "Annually"
1649
  msgstr "Annualmente"
1650
 
1651
+ #: includes/i18n.php:434
1652
  msgctxt "as once a year"
1653
  msgid "Once"
1654
  msgstr "Una volta"
1655
 
1656
+ #: includes/i18n.php:435
1657
  msgctxt "as annual period"
1658
  msgid "year"
1659
  msgstr "anno"
1660
 
1661
+ #: includes/i18n.php:436
1662
  msgid "Lifetime"
1663
  msgstr "Tutta la vita"
1664
 
1665
+ #: includes/i18n.php:437
1666
  msgctxt "e.g. the best product"
1667
  msgid "Best"
1668
  msgstr "Migliore"
1669
 
1670
+ #: includes/i18n.php:438
1671
  msgctxt "e.g. billed monthly"
1672
  msgid "Billed %s"
1673
  msgstr "Fatturato %s"
1674
 
1675
+ #: includes/i18n.php:439
1676
  msgctxt "as a discount of $5 or 10%"
1677
  msgid "Save %s"
1678
  msgstr "Risparmia %s"
1679
 
1680
+ #: includes/i18n.php:441
1681
  msgid "View details"
1682
  msgstr "Visualizza dettagli"
1683
 
1684
+ #: includes/i18n.php:445
1685
  msgctxt "button label"
1686
  msgid "Approve & Start Trial"
1687
  msgstr "Approva e inizia il periodo di prova gratuito"
1688
 
1689
+ #: includes/i18n.php:447
1690
  msgid ""
1691
  "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1692
  "plan."
1693
  msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s."
1694
 
1695
+ #: includes/i18n.php:449
1696
  msgid ""
1697
  "For compliance with the WordPress.org guidelines, before we start the trial "
1698
  "we ask that you opt-in with your user and non-sensitive site information, "
1700
  "updates and to validate your trial."
1701
  msgstr "Per seguire le linee guida di WordPress, prima di iniziare il periodo di prova ti chiediamo di iscriverti con il tuo utente e i dati non sensibili inerenti al tuo sito, così da permettere periodicamente al plugin di inviare dati a %s per poter controllare la presenza di nuove versioni e convalidare il tuo periodo di prova gratuito."
1702
 
1703
+ #: includes/i18n.php:455
1704
  msgid "Business name"
1705
  msgstr "Nome della compagnia"
1706
 
1707
+ #: includes/i18n.php:456
1708
  msgid "Tax / VAT ID"
1709
  msgstr "Numero Partita Iva o VAT"
1710
 
1711
+ #: includes/i18n.php:457
1712
  msgid "Address Line %d"
1713
  msgstr "Riga indirizzo %d"
1714
 
1715
+ #: includes/i18n.php:458
1716
  msgid "Country"
1717
  msgstr "Nazione"
1718
 
1719
+ #: includes/i18n.php:459
1720
  msgid "Select Country"
1721
  msgstr "Seleziona Nazione"
1722
 
1723
+ #: includes/i18n.php:460
1724
  msgid "City"
1725
  msgstr "Città"
1726
 
1727
+ #: includes/i18n.php:461
1728
  msgid "Town"
1729
  msgstr "Cittadina"
1730
 
1731
+ #: includes/i18n.php:462
1732
  msgid "State"
1733
  msgstr "Stato"
1734
 
1735
+ #: includes/i18n.php:463
1736
  msgid "Province"
1737
  msgstr "Provincia"
1738
 
1739
+ #: includes/i18n.php:464
1740
  msgid "ZIP / Postal Code"
1741
  msgstr "CAP"
1742
+
1743
+ #: includes/i18n.php:479
1744
+ msgctxt "Plugin installer section title"
1745
+ msgid "Description"
1746
+ msgstr "Descrizione"
1747
+
1748
+ #: includes/i18n.php:480
1749
+ msgctxt "Plugin installer section title"
1750
+ msgid "Installation"
1751
+ msgstr "Installazione"
1752
+
1753
+ #: includes/i18n.php:481
1754
+ msgctxt "Plugin installer section title"
1755
+ msgid "FAQ"
1756
+ msgstr "FAQ"
1757
+
1758
+ #: includes/i18n.php:482
1759
+ msgctxt "Plugin installer section title"
1760
+ msgid "Changelog"
1761
+ msgstr "Changelog"
1762
+
1763
+ #: includes/i18n.php:483
1764
+ msgctxt "Plugin installer section title"
1765
+ msgid "Reviews"
1766
+ msgstr "Recensioni"
1767
+
1768
+ #: includes/i18n.php:484
1769
+ msgctxt "Plugin installer section title"
1770
+ msgid "Other Notes"
1771
+ msgstr "Altre note"
1772
+
1773
+ #: includes/i18n.php:486
1774
+ msgid "%s star"
1775
+ msgstr "%s stella"
1776
+
1777
+ #: includes/i18n.php:488
1778
+ msgid "%s stars"
1779
+ msgstr "%s stelle"
1780
+
1781
+ #: includes/i18n.php:490
1782
+ msgid "%s rating"
1783
+ msgstr "%s valutazione"
1784
+
1785
+ #: includes/i18n.php:492
1786
+ msgid "%s ratings"
1787
+ msgstr "%s valutazioni"
1788
+
1789
+ #: includes/i18n.php:494
1790
+ msgid "%s time"
1791
+ msgstr "% volta"
1792
+
1793
+ #: includes/i18n.php:496
1794
+ msgid "%s times"
1795
+ msgstr "%s volte"
1796
+
1797
+ #: includes/i18n.php:498
1798
+ msgid "Click to see reviews that provided a rating of %s"
1799
+ msgstr "Fai clic per vedere le recensioni che hanno fornito una valutazione di %s"
1800
+
1801
+ #: includes/i18n.php:499
1802
+ msgid "Last Updated"
1803
+ msgstr "Ultimo aggiornamento"
1804
+
1805
+ #: includes/i18n.php:500
1806
+ msgid "Requires WordPress Version:"
1807
+ msgstr "Richiede la versione di WordPress:"
1808
+
1809
+ #: includes/i18n.php:501
1810
+ msgctxt "as the plugin author"
1811
+ msgid "Author:"
1812
+ msgstr "Autore:"
1813
+
1814
+ #: includes/i18n.php:502
1815
+ msgid "Compatible up to:"
1816
+ msgstr "Compatibile fino a:"
1817
+
1818
+ #: includes/i18n.php:503
1819
+ msgid "Downloaded:"
1820
+ msgstr "Scaricato:"
1821
+
1822
+ #: includes/i18n.php:504
1823
+ msgid "WordPress.org Plugin Page"
1824
+ msgstr "Pagina dei plugin di WordPress.org"
1825
+
1826
+ #: includes/i18n.php:505
1827
+ msgid "Plugin Homepage"
1828
+ msgstr "Homepage del plugin"
1829
+
1830
+ #: includes/i18n.php:506
1831
+ msgid "Donate to this plugin"
1832
+ msgstr "Fai una donazione a questo plugin"
1833
+
1834
+ #: includes/i18n.php:507
1835
+ msgid "Average Rating"
1836
+ msgstr "Valutazione media"
1837
+
1838
+ #: includes/i18n.php:508
1839
+ msgid "based on %s"
1840
+ msgstr "basato su %s"
1841
+
1842
+ #: includes/i18n.php:509
1843
+ msgid "Warning:"
1844
+ msgstr "Avviso:"
1845
+
1846
+ #: includes/i18n.php:510
1847
+ msgid "Contributors"
1848
+ msgstr "Contributori"
1849
+
1850
+ #: includes/i18n.php:511
1851
+ msgid "Plugin Install"
1852
+ msgstr "Installazione del plugin"
1853
+
1854
+ #: includes/i18n.php:512
1855
+ msgid ""
1856
+ "This plugin has not been tested with your current version of WordPress."
1857
+ msgstr "Questo plugin non è stato testato con la versione corrente di WordPress."
1858
+
1859
+ #: includes/i18n.php:513
1860
+ msgid ""
1861
+ "This plugin has not been marked as compatible with your version of "
1862
+ "WordPress."
1863
+ msgstr "Questo plugin non è stato segnato come compatibile con la tua versione di WordPress."
1864
+
1865
+ #: includes/i18n.php:514
1866
+ msgid "Newer Version (%s) Installed"
1867
+ msgstr "Versione più recente (%s) installata"
1868
+
1869
+ #: includes/i18n.php:515
1870
+ msgid "Latest Version Installed"
1871
+ msgstr "Versione più recente installata"
includes/pum-sdk/freemius/languages/freemius-ja_JP.mo ADDED
Binary file
includes/pum-sdk/freemius/languages/freemius-ja_JP.po ADDED
@@ -0,0 +1,1662 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #
2
+ # Translators:
3
+ # Odyssey <8bitodyssey+github@gmail.com>, 2016
4
+ # Takayuki Miyauchi <miya0001@users.noreply.github.com>, 2016
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: WordPress SDK\n"
8
+ "Report-Msgid-Bugs-To: \n"
9
+ "POT-Creation-Date: \n"
10
+ "PO-Revision-Date: 2017-02-28 03:42+0000\n"
11
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
12
+ "Language-Team: Japanese (Japan) (http://www.transifex.com/freemius/wordpress-sdk/language/ja_JP/)\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: \n"
15
+ "Language: ja_JP\n"
16
+ "Plural-Forms: nplurals=1; plural=0;\n"
17
+
18
+ # Copyright (C) 2017 freemius
19
+ # This file is distributed under the same license as the freemius package.
20
+ #: includes/i18n.php41, includes/i18n.php:55
21
+ msgid "Yes - I'm in!"
22
+ msgstr "加入します"
23
+
24
+ #: includes/i18n.php43, includes/i18n.php:57
25
+ msgid "Not today"
26
+ msgstr "今日はやめておく"
27
+
28
+ #: includes/i18n.php:69
29
+ msgid "Account"
30
+ msgstr "アカウント"
31
+
32
+ #: includes/i18n.php:71
33
+ msgid "Add On"
34
+ msgstr "アドオン"
35
+
36
+ #: includes/i18n.php:73
37
+ msgid "Contact Us"
38
+ msgstr "連絡"
39
+
40
+ #: includes/i18n.php:75
41
+ msgid "Contact Support"
42
+ msgstr "サポートに連絡"
43
+
44
+ #: includes/i18n.php:77
45
+ msgid "Change Ownership"
46
+ msgstr "オーナーを変更"
47
+
48
+ #: includes/i18n.php:79
49
+ msgid "Support"
50
+ msgstr "サポート"
51
+
52
+ #: includes/i18n.php:81
53
+ msgid "Support Forum"
54
+ msgstr "サポートフォーラム"
55
+
56
+ #: includes/i18n.php:83
57
+ msgid "Add Ons"
58
+ msgstr "アドオン"
59
+
60
+ #: includes/i18n.php:85
61
+ msgctxt "verb"
62
+ msgid "Upgrade"
63
+ msgstr "アップグレード"
64
+
65
+ #: includes/i18n.php:87
66
+ msgid "Awesome"
67
+ msgstr "すごい!"
68
+
69
+ #: includes/i18n.php:89
70
+ msgctxt "noun"
71
+ msgid "Pricing"
72
+ msgstr "料金表"
73
+
74
+ #: includes/i18n.php:91
75
+ msgctxt "noun"
76
+ msgid "Price"
77
+ msgstr "料金"
78
+
79
+ #: includes/i18n.php:93
80
+ msgid "Unlimited Updates"
81
+ msgstr "無制限のアップデート"
82
+
83
+ #: includes/i18n.php:95
84
+ msgctxt "verb"
85
+ msgid "Downgrade"
86
+ msgstr "ダウングレード"
87
+
88
+ #: includes/i18n.php:97
89
+ msgid "Cancel Trial"
90
+ msgstr "トライアルをキャンセル"
91
+
92
+ #: includes/i18n.php:99
93
+ msgid "Free Trial"
94
+ msgstr "フリートライアル"
95
+
96
+ #: includes/i18n.php:101
97
+ msgid "Start my free %s"
98
+ msgstr "無料の %s を開始"
99
+
100
+ #: includes/i18n.php:103
101
+ msgid "No commitment for %s - cancel anytime"
102
+ msgstr "%s の拘束はありません。いつでもキャンセルできます。"
103
+
104
+ #: includes/i18n.php:105
105
+ msgid "After your free %s, pay as little as %s"
106
+ msgstr "無料の %s の後は、わずか %s だけお支払ください。"
107
+
108
+ #: includes/i18n.php:107
109
+ msgid "Details"
110
+ msgstr "詳細"
111
+
112
+ #: includes/i18n.php:109
113
+ msgid "Account Details"
114
+ msgstr "アカウント詳細"
115
+
116
+ #: includes/i18n.php:111
117
+ msgctxt "verb"
118
+ msgid "Delete"
119
+ msgstr "削除"
120
+
121
+ #: includes/i18n.php:113
122
+ msgctxt "verb"
123
+ msgid "Show"
124
+ msgstr "表示"
125
+
126
+ #: includes/i18n.php:115
127
+ msgctxt "verb"
128
+ msgid "Hide"
129
+ msgstr "非表示"
130
+
131
+ #: includes/i18n.php:117
132
+ msgctxt "verb"
133
+ msgid "Edit"
134
+ msgstr "編集"
135
+
136
+ #: includes/i18n.php:119
137
+ msgctxt "verb"
138
+ msgid "Update"
139
+ msgstr "更新"
140
+
141
+ #: includes/i18n.php:121
142
+ msgid "Date"
143
+ msgstr "日付"
144
+
145
+ #: includes/i18n.php:123
146
+ msgid "Amount"
147
+ msgstr "総額"
148
+
149
+ #: includes/i18n.php:125
150
+ msgid "Invoice"
151
+ msgstr "請求書"
152
+
153
+ #: includes/i18n.php:127
154
+ msgid "Billing"
155
+ msgstr "請求書"
156
+
157
+ #: includes/i18n.php:129
158
+ msgid "Payments"
159
+ msgstr "支払い"
160
+
161
+ #: includes/i18n.php:131
162
+ msgid "Delete Account"
163
+ msgstr "アカウントを削除"
164
+
165
+ #: includes/i18n.php:133
166
+ msgctxt "as close a window"
167
+ msgid "Dismiss"
168
+ msgstr "却下"
169
+
170
+ #: includes/i18n.php:135
171
+ msgctxt "as product pricing plan"
172
+ msgid "Plan"
173
+ msgstr "プラン"
174
+
175
+ #: includes/i18n.php:137
176
+ msgid "Change Plan"
177
+ msgstr "プラン変更"
178
+
179
+ #: includes/i18n.php:139
180
+ msgctxt "as download professional version"
181
+ msgid "Download %s Version"
182
+ msgstr "%s バージョンをダウンロード"
183
+
184
+ #: includes/i18n.php:141
185
+ msgctxt "as download professional version now"
186
+ msgid "Download %s version now"
187
+ msgstr "%s バージョンを今すぐダウンロード"
188
+
189
+ #: includes/i18n.php:145
190
+ msgctxt "as download latest version"
191
+ msgid "Download Latest"
192
+ msgstr "最新版をダウンロード"
193
+
194
+ #: includes/i18n.php:147
195
+ msgctxt "E.g. you have a professional license."
196
+ msgid "You have a %s license."
197
+ msgstr "%s ライセンスを持っています。"
198
+
199
+ #: includes/i18n.php:151
200
+ msgid "New"
201
+ msgstr "新規"
202
+
203
+ #: includes/i18n.php:153
204
+ msgid "Free"
205
+ msgstr "無料"
206
+
207
+ #: includes/i18n.php:155
208
+ msgctxt "as trial plan"
209
+ msgid "Trial"
210
+ msgstr "トライアル"
211
+
212
+ #: includes/i18n.php:157
213
+ msgctxt "as starting a trial plan"
214
+ msgid "Start Trial"
215
+ msgstr "トライアルを開始"
216
+
217
+ #: includes/i18n.php:159
218
+ msgctxt "verb"
219
+ msgid "Purchase"
220
+ msgstr "購入"
221
+
222
+ #: includes/i18n.php:161
223
+ msgid "Purchase License"
224
+ msgstr "ライセンスを購入"
225
+
226
+ #: includes/i18n.php:163
227
+ msgctxt "verb"
228
+ msgid "Buy"
229
+ msgstr "買う"
230
+
231
+ #: includes/i18n.php:165
232
+ msgid "Buy License"
233
+ msgstr "ライセンスを買う"
234
+
235
+ #: includes/i18n.php:167
236
+ msgid "Single Site License"
237
+ msgstr "シングルサイトライセンス"
238
+
239
+ #: includes/i18n.php:169
240
+ msgid "Unlimited Licenses"
241
+ msgstr "無制限ライセンス"
242
+
243
+ #: includes/i18n.php:171
244
+ msgid "Up to %s Sites"
245
+ msgstr "%sサイトまで"
246
+
247
+ #: includes/i18n.php:173
248
+ msgid "%sRenew your license now%s to access version %s features and support."
249
+ msgstr "%sいますぐライセンスを更新して%s バージョン %s の機能とサポートにアクセスする"
250
+
251
+ #: includes/i18n.php:177
252
+ msgid ""
253
+ "Enter the email address you've used for the upgrade below and we will resend"
254
+ " you the license key."
255
+ msgstr "アップグレードに使用したメールアドレスを下に入力してください。そうすれば、ライセンスキーをお送りします。"
256
+
257
+ #: includes/i18n.php:181
258
+ msgctxt "e.g. Professional Plan"
259
+ msgid "%s Plan"
260
+ msgstr "%s プラン"
261
+
262
+ #: includes/i18n.php:183
263
+ msgid "You are just one step away - %s"
264
+ msgstr "もうあとわずかです - %s"
265
+
266
+ #: includes/i18n.php:185
267
+ msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
268
+ msgid "Complete \"%s\" Activation Now"
269
+ msgstr "すぐに \"%s\" 有効化を完了してください"
270
+
271
+ #: includes/i18n.php:189
272
+ msgid "We made a few tweaks to the plugin, %s"
273
+ msgstr "プラグインを微調整します, %s"
274
+
275
+ #: includes/i18n.php:191
276
+ msgid "Opt-in to make \"%s\" Better!"
277
+ msgstr "\"%s\" をより良くするためにオプトインしてください!"
278
+
279
+ #: includes/i18n.php:193
280
+ msgid "Error"
281
+ msgstr "エラー"
282
+
283
+ #: includes/i18n.php:195
284
+ msgid ""
285
+ "Freemius SDK couldn't find the plugin's main file. Please contact "
286
+ "sdk@freemius.com with the current error."
287
+ msgstr "Freemius SDK がプラグインのメインファイルを見つけることができませんでした。現在のエラーを添えて sdk@freemius.com に連絡してください。"
288
+
289
+ #: includes/i18n.php:203
290
+ msgctxt "as expiration date"
291
+ msgid "Expiration"
292
+ msgstr "期限切れ"
293
+
294
+ #: includes/i18n.php:205
295
+ msgctxt "as software license"
296
+ msgid "License"
297
+ msgstr "ライセンス"
298
+
299
+ #: includes/i18n.php:207
300
+ msgid "not verified"
301
+ msgstr "未認証"
302
+
303
+ #: includes/i18n.php:209
304
+ msgid "Verify Email"
305
+ msgstr "認証メール"
306
+
307
+ #: includes/i18n.php:211
308
+ msgctxt "e.g. expires in 2 months"
309
+ msgid "Expires in %s"
310
+ msgstr "%s で期間終了"
311
+
312
+ #: includes/i18n.php:213
313
+ msgctxt "e.g. auto renews in 2 months"
314
+ msgid "Auto renews in %s"
315
+ msgstr "%s に自動更新"
316
+
317
+ #: includes/i18n.php:215
318
+ msgid "No expiration"
319
+ msgstr "有効期限なし"
320
+
321
+ #: includes/i18n.php:217
322
+ msgid "Expired"
323
+ msgstr "期限切れ"
324
+
325
+ #: includes/i18n.php:219
326
+ msgid "Cancelled"
327
+ msgstr "キャンセル"
328
+
329
+ #: includes/i18n.php:221
330
+ msgctxt "e.g. In 2 hours"
331
+ msgid "In %s"
332
+ msgstr "%s 内"
333
+
334
+ #: includes/i18n.php:223
335
+ msgctxt "e.g. 2 min ago"
336
+ msgid "%s ago"
337
+ msgstr "%s 前"
338
+
339
+ #: includes/i18n.php:225
340
+ msgctxt "as plugin version"
341
+ msgid "Version"
342
+ msgstr "バージョン"
343
+
344
+ #: includes/i18n.php:227
345
+ msgid "Name"
346
+ msgstr "名前"
347
+
348
+ #: includes/i18n.php:229
349
+ msgid "Email"
350
+ msgstr "Email"
351
+
352
+ #: includes/i18n.php:231
353
+ msgid "Email address"
354
+ msgstr "メールアドレス"
355
+
356
+ #: includes/i18n.php:233
357
+ msgid "Verified"
358
+ msgstr "認証済み"
359
+
360
+ #: includes/i18n.php:235
361
+ msgid "Plugin"
362
+ msgstr "プラグイン"
363
+
364
+ #: includes/i18n.php:237
365
+ msgid "Plugins"
366
+ msgstr "プラグイン"
367
+
368
+ #: includes/i18n.php:239
369
+ msgid "Themes"
370
+ msgstr "テーマ"
371
+
372
+ #: includes/i18n.php:241
373
+ msgctxt "as file/folder path"
374
+ msgid "Path"
375
+ msgstr "パス"
376
+
377
+ #: includes/i18n.php:243
378
+ msgid "Title"
379
+ msgstr "タイトル"
380
+
381
+ #: includes/i18n.php:245
382
+ msgid "Free version"
383
+ msgstr "フリーバージョン"
384
+
385
+ #: includes/i18n.php:247
386
+ msgid "Premium version"
387
+ msgstr "プレミアムバージョン"
388
+
389
+ #: includes/i18n.php:249
390
+ msgctxt "as WP plugin slug"
391
+ msgid "Slug"
392
+ msgstr "スラッグ"
393
+
394
+ #: includes/i18n.php:251
395
+ msgid "ID"
396
+ msgstr "ID"
397
+
398
+ #: includes/i18n.php:253
399
+ msgid "Users"
400
+ msgstr "ユーザー"
401
+
402
+ #: includes/i18n.php:255
403
+ msgid "Plugin Installs"
404
+ msgstr "プラグインインストール数"
405
+
406
+ #: includes/i18n.php:257
407
+ msgctxt "like websites"
408
+ msgid "Sites"
409
+ msgstr "サイト数"
410
+
411
+ #: includes/i18n.php:259
412
+ msgid "User ID"
413
+ msgstr "ユーザー ID"
414
+
415
+ #: includes/i18n.php:261
416
+ msgid "Site ID"
417
+ msgstr "サイト ID"
418
+
419
+ #: includes/i18n.php:263
420
+ msgid "Public Key"
421
+ msgstr "公開鍵"
422
+
423
+ #: includes/i18n.php:265
424
+ msgid "Secret Key"
425
+ msgstr "秘密鍵"
426
+
427
+ #: includes/i18n.php:267
428
+ msgctxt "as secret encryption key missing"
429
+ msgid "No Secret"
430
+ msgstr "秘密鍵がありません"
431
+
432
+ #: includes/i18n.php:269
433
+ msgid "No ID"
434
+ msgstr "ID がありません"
435
+
436
+ #: includes/i18n.php:271
437
+ msgctxt "as synchronize license"
438
+ msgid "Sync License"
439
+ msgstr "ライセンスを同期"
440
+
441
+ #: includes/i18n.php:273
442
+ msgctxt "as synchronize"
443
+ msgid "Sync"
444
+ msgstr "同期"
445
+
446
+ #: includes/i18n.php:275
447
+ msgid "Activate License"
448
+ msgstr "ライセンスを有効化"
449
+
450
+ #: includes/i18n.php:277
451
+ msgid "Activate Free Version"
452
+ msgstr "フリーバージョンを有効化"
453
+
454
+ #: includes/i18n.php:279
455
+ msgid ""
456
+ "Please enter the license key that you received in the email right after the "
457
+ "purchase:"
458
+ msgstr "購入後すぐにメールで受け取ったライセンスキーを入力してください:"
459
+
460
+ #: includes/i18n.php:283
461
+ msgid "Activating license..."
462
+ msgstr "ライセンスを有効化中…"
463
+
464
+ #: includes/i18n.php:285
465
+ msgid "Change License"
466
+ msgstr "ライセンスを変更"
467
+
468
+ #: includes/i18n.php:287
469
+ msgid "Update License"
470
+ msgstr "ライセンスを更新"
471
+
472
+ #: includes/i18n.php:289
473
+ msgid "Deactivate License"
474
+ msgstr "ライセンスを無効化"
475
+
476
+ #: includes/i18n.php:291
477
+ msgid "Activate"
478
+ msgstr "有効化"
479
+
480
+ #: includes/i18n.php:293
481
+ msgid "Deactivate"
482
+ msgstr "無効化"
483
+
484
+ #: includes/i18n.php:295
485
+ msgid "Skip & Deactivate"
486
+ msgstr "スキップし、無効化"
487
+
488
+ #: includes/i18n.php:297
489
+ msgid "No - just deactivate"
490
+ msgstr "いいえ - すぐに無効化"
491
+
492
+ #: includes/i18n.php:299
493
+ msgid "Yes - do your thing"
494
+ msgstr "はい - お構いなく"
495
+
496
+ #: includes/i18n.php:301
497
+ msgctxt "active mode"
498
+ msgid "Active"
499
+ msgstr "有効"
500
+
501
+ #: includes/i18n.php:303
502
+ msgctxt "is active mode?"
503
+ msgid "Is Active"
504
+ msgstr "有効"
505
+
506
+ #: includes/i18n.php:305
507
+ msgid "Install Now"
508
+ msgstr "今すぐインストール"
509
+
510
+ #: includes/i18n.php:307
511
+ msgid "Install Update Now"
512
+ msgstr "今すぐ更新をインストール"
513
+
514
+ #: includes/i18n.php:309
515
+ msgid "More information about %s"
516
+ msgstr "%s に関する詳細情報"
517
+
518
+ #: includes/i18n.php:311
519
+ msgid "Localhost"
520
+ msgstr "localhost"
521
+
522
+ #: includes/i18n.php:313
523
+ msgctxt "as activate Professional plan"
524
+ msgid "Activate %s Plan"
525
+ msgstr "%s プランを有効化"
526
+
527
+ #: includes/i18n.php:315
528
+ msgctxt "as 5 licenses left"
529
+ msgid "%s left"
530
+ msgstr "あと %s"
531
+
532
+ #: includes/i18n.php:317
533
+ msgid "Last license"
534
+ msgstr "最新のライセンス"
535
+
536
+ #: includes/i18n.php:319
537
+ msgid "What is your %s?"
538
+ msgstr "自分の %s はなんですか?"
539
+
540
+ #: includes/i18n.php:321
541
+ msgid "Activate this add-on"
542
+ msgstr "このアドオンを有効化"
543
+
544
+ #: includes/i18n.php:323
545
+ msgid ""
546
+ "Deactivating your license will block all premium features, but will enable "
547
+ "you to activate the license on another site. Are you sure you want to "
548
+ "proceed?"
549
+ msgstr "ライセンスを無効化するとすべてのプレミアム機能が使えなくなりますが、他のサイトでライセンスを有効にすることができるようになります。本当に実行しますか?"
550
+
551
+ #: includes/i18n.php:327
552
+ msgid ""
553
+ "Deleting the account will automatically deactivate your %s plan license so "
554
+ "you can use it on other sites. If you want to terminate the recurring "
555
+ "payments as well, click the \"Cancel\" button, and first \"Downgrade\" your "
556
+ "account. Are you sure you would like to continue with the deletion?"
557
+ msgstr "アカウントを削除すると自動的に %s プランライセンスが無効になり、他のサイトで使うことができます。定期の支払いも終了したい場合は、\"キャンセル\"ボタンをクリックし、まずアカウントを\"ダウングレード\"してください。本当に削除を続行してもいいですか?"
558
+
559
+ #: includes/i18n.php:331
560
+ msgid ""
561
+ "Deletion is not temporary. Only delete if you no longer want to use this "
562
+ "plugin anymore. Are you sure you would like to continue with the deletion?"
563
+ msgstr "削除は一時的なものではありません。このプラグインを今後使いたくない場合にだけ削除してください。本当に削除を続行してもいいですか?"
564
+
565
+ #: includes/i18n.php:335
566
+ msgid ""
567
+ "Downgrading your plan will immediately stop all future recurring payments "
568
+ "and your %s plan license will expire in %s."
569
+ msgstr "プランをダウングレードするとすぐに将来の定期の支払いはすべて停止し、%s プランライセンスは %s で期限切れとなります。"
570
+
571
+ #: includes/i18n.php:339
572
+ msgid ""
573
+ "Cancelling the trial will immediately block access to all premium features. "
574
+ "Are you sure?"
575
+ msgstr "トライアルをキャンセルするとすぐにすべてのプレミアム機能へのアクセスができなくなります。本当に実行しますか?"
576
+
577
+ #: includes/i18n.php:343
578
+ msgid ""
579
+ "You can still enjoy all %s features but you will not have access to plugin "
580
+ "updates and support."
581
+ msgstr "すべての %s 機能をまだ楽しむことができますが、プラグインの更新とサポートにアクセスすることはできなくなります。"
582
+
583
+ #: includes/i18n.php:347
584
+ msgid ""
585
+ "Once your license expire you can still use the Free version but you will NOT"
586
+ " have access to the %s features."
587
+ msgstr "ライセンスが期限切れになるとフリーバージョンを使うことはできますが、%s 機能にアクセスすることはできなくなります。"
588
+
589
+ #: includes/i18n.php:351
590
+ msgid "Are you sure you want to proceed?"
591
+ msgstr "本当に続行していいですか?"
592
+
593
+ #: includes/i18n.php:357
594
+ msgid "Add Ons for %s"
595
+ msgstr "%s のアドオン"
596
+
597
+ #: includes/i18n.php:359
598
+ msgid ""
599
+ "We could'nt load the add-ons list. It's probably an issue on our side, "
600
+ "please try to come back in few minutes."
601
+ msgstr "アドオンリストを読み込むことができませんでした。おそらく運営側の問題になりますので、しばらくしてからお試しください。"
602
+
603
+ #: includes/i18n.php:365
604
+ msgid "Anonymous feedback"
605
+ msgstr "匿名のフィードバック"
606
+
607
+ #: includes/i18n.php:367
608
+ msgid "Quick feedback"
609
+ msgstr "クイックフィードバック"
610
+
611
+ #: includes/i18n.php:369
612
+ msgid "If you have a moment, please let us know why you are deactivating"
613
+ msgstr "お時間があれば、なぜ無効化するのか理由を教えてください。"
614
+
615
+ #: includes/i18n.php:373
616
+ msgid "Yes - Deactivate"
617
+ msgstr "はい - 無効化します"
618
+
619
+ #: includes/i18n.php:375
620
+ msgid "Submit & Deactivate"
621
+ msgstr "送信し無効化"
622
+
623
+ #: includes/i18n.php:377
624
+ msgid "Cancel"
625
+ msgstr "キャンセル"
626
+
627
+ #: includes/i18n.php:379
628
+ msgid "I no longer need the plugin"
629
+ msgstr "もうプラグインを必要としていません"
630
+
631
+ #: includes/i18n.php:381
632
+ msgid "I found a better plugin"
633
+ msgstr "もっと良いプラグインを見つけました"
634
+
635
+ #: includes/i18n.php:383
636
+ msgid "I only needed the plugin for a short period"
637
+ msgstr "短期間プラグインを必要としていただけです"
638
+
639
+ #: includes/i18n.php:385
640
+ msgid "The plugin broke my site"
641
+ msgstr "プラグインのせいでサイトが壊れました"
642
+
643
+ #: includes/i18n.php:387
644
+ msgid "The plugin suddenly stopped working"
645
+ msgstr "プラグインはすぐに動かなくなりました"
646
+
647
+ #: includes/i18n.php:389
648
+ msgid "I can't pay for it anymore"
649
+ msgstr "もう払うことができません"
650
+
651
+ #: includes/i18n.php:391
652
+ msgid "It's a temporary deactivation. I'm just debugging an issue."
653
+ msgstr "一時的な無効化です。問題をデバッグしているだけです。"
654
+
655
+ #: includes/i18n.php:395
656
+ msgctxt ""
657
+ "the text of the \"other\" reason for deactivating the plugin that is shown "
658
+ "in the modal box."
659
+ msgid "Other"
660
+ msgstr "その他"
661
+
662
+ #: includes/i18n.php:399
663
+ msgid "Kindly tell us the reason so we can improve."
664
+ msgstr "改善できるよう、どうか理由を教えてください。"
665
+
666
+ #: includes/i18n.php:401
667
+ msgid "What's the plugin's name?"
668
+ msgstr "プラグイン名は何ですか?"
669
+
670
+ #: includes/i18n.php:403
671
+ msgid "What price would you feel comfortable paying?"
672
+ msgstr " 支払ってもよいと思う価格はいくらですか?"
673
+
674
+ #: includes/i18n.php:405
675
+ msgid "I couldn't understand how to make it work"
676
+ msgstr "どうしたら動作するか分かりませんでした。"
677
+
678
+ #: includes/i18n.php:407
679
+ msgid ""
680
+ "The plugin is great, but I need specific feature that you don't support"
681
+ msgstr "プラグインは素晴らしいけれど、サポートしていないある機能を必要としています"
682
+
683
+ #: includes/i18n.php:411
684
+ msgid "The plugin is not working"
685
+ msgstr "プラグインが動いていません"
686
+
687
+ #: includes/i18n.php:413
688
+ msgid "It's not what I was looking for"
689
+ msgstr "探していたものではありません"
690
+
691
+ #: includes/i18n.php:415
692
+ msgid "The plugin didn't work as expected"
693
+ msgstr "プラグインは期待通りには動きませんでした"
694
+
695
+ #: includes/i18n.php:417
696
+ msgid "What feature?"
697
+ msgstr "何の機能ですか?"
698
+
699
+ #: includes/i18n.php:419
700
+ msgid "Kindly share what didn't work so we can fix it for future users..."
701
+ msgstr "将来のユーザーのために修正できるよう、何が動作しなかったのかどうか共有してください…"
702
+
703
+ #: includes/i18n.php:423
704
+ msgid "What you've been looking for?"
705
+ msgstr "探していたのは何ですか?"
706
+
707
+ #: includes/i18n.php:425
708
+ msgid "What did you expect?"
709
+ msgstr "何を期待していましたか?"
710
+
711
+ #: includes/i18n.php:427
712
+ msgid "The plugin didn't work"
713
+ msgstr "プラグインが動作しませんでした"
714
+
715
+ #: includes/i18n.php:429
716
+ msgid "I don't like to share my information with you"
717
+ msgstr "自分の情報を共有したくありません"
718
+
719
+ #: includes/i18n.php:431
720
+ msgid ""
721
+ "You might have missed it, but you don't have to share any data and can just "
722
+ "%s the opt-in."
723
+ msgstr "見逃していたかもしれませんが、どんな情報も共有する必要はなく、オプトインを $s することができます。 "
724
+
725
+ #: includes/i18n.php:441
726
+ msgctxt "greeting"
727
+ msgid "Hey %s,"
728
+ msgstr "おおい %s さん、"
729
+
730
+ #: includes/i18n.php:443
731
+ msgctxt "a greeting. E.g. Thanks John!"
732
+ msgid "Thanks %s!"
733
+ msgstr "ありがとう $s さん!"
734
+
735
+ #: includes/i18n.php:445
736
+ msgid ""
737
+ "Never miss an important update - opt-in to our security and feature updates "
738
+ "notifications, and non-sensitive diagnostic tracking with %4$s."
739
+ msgstr "重要な更新を逃さないように - セキュリティとおすすめの更新通知、%4$s とセンシティブではない診断トラッキングをオプトイン"
740
+
741
+ #: includes/i18n.php:449
742
+ msgid ""
743
+ "Please help us improve %1$s! If you opt-in, some data about your usage of "
744
+ "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
745
+ "work just fine."
746
+ msgstr "%1$s を改善するのを手伝ってください。オプトインすれば、あなたの %1$s の使用に関するデータが %4$s へと送られます。これをスキップしても大丈夫です! %1$s は今でも素晴らしいでしょう。"
747
+
748
+ #: includes/i18n.php:453
749
+ msgid ""
750
+ "You should receive an activation email for %s to your mailbox at %s. Please "
751
+ "make sure you click the activation button in that email to %s."
752
+ msgstr "%s のメールボックスに %s の有効化のメールを受け取っているはずです。%s のメールに記載された有効化ボタンをクリックしてください。"
753
+
754
+ #: includes/i18n.php:455
755
+ msgid "complete the install"
756
+ msgstr "インストールを完了"
757
+
758
+ #: includes/i18n.php:457
759
+ msgid "start the trial"
760
+ msgstr "トライアルを開始"
761
+
762
+ #: includes/i18n.php:459
763
+ msgid ""
764
+ "Thanks for purchasing %s! To get started, please enter your license key:"
765
+ msgstr "%s を購入いただきありがとうございます。はじめにライセンスキーを入力してください:"
766
+
767
+ #: includes/i18n.php:463
768
+ msgid ""
769
+ "The plugin will be periodically sending data to %s to check for plugin "
770
+ "updates and verify the validity of your license."
771
+ msgstr "プラグインはプラグインの更新をチェックし、ライセンスが有効か確認するために、%s に周期的にデータを送信します。"
772
+
773
+ #: includes/i18n.php:467
774
+ msgid "What permissions are being granted?"
775
+ msgstr "付与されているパーミッションは何ですか?"
776
+
777
+ #: includes/i18n.php:469
778
+ msgid "Your Profile Overview"
779
+ msgstr "プロフィール概要"
780
+
781
+ #: includes/i18n.php:471
782
+ msgid "Name and email address"
783
+ msgstr "名前とメールアドレス"
784
+
785
+ #: includes/i18n.php:473
786
+ msgid "Your Site Overview"
787
+ msgstr "サイト概要"
788
+
789
+ #: includes/i18n.php:475
790
+ msgid "Site URL, WP version, PHP info, plugins & themes"
791
+ msgstr "サイト URL、WP バージョン、PHP info、プラグインとテーマ"
792
+
793
+ #: includes/i18n.php:479
794
+ msgid "Current Plugin Events"
795
+ msgstr "現在のプラグインイベント"
796
+
797
+ #: includes/i18n.php:481
798
+ msgid "Activation, deactivation and uninstall"
799
+ msgstr "有効化、無効化、アンインストール"
800
+
801
+ #: includes/i18n.php:483
802
+ msgid "Plugins & Themes"
803
+ msgstr "プラグインとテーマ"
804
+
805
+ #: includes/i18n.php:485
806
+ msgid "Titles, versions and state."
807
+ msgstr "タイトル、バージョン、状態"
808
+
809
+ #: includes/i18n.php:487
810
+ msgid "Admin Notices"
811
+ msgstr "管理者通知"
812
+
813
+ #: includes/i18n.php:489
814
+ msgid "Newsletter"
815
+ msgstr "ニュースレター"
816
+
817
+ #: includes/i18n.php:491
818
+ msgid "Updates, announcements, marketing, no spam"
819
+ msgstr "更新、発表、マーケティング、スパムなし"
820
+
821
+ #: includes/i18n.php:493
822
+ msgid "Privacy Policy"
823
+ msgstr "プライバシーポリシー"
824
+
825
+ #: includes/i18n.php:495
826
+ msgid "Terms of Service"
827
+ msgstr "利用規約"
828
+
829
+ #: includes/i18n.php:497
830
+ msgctxt "as activating plugin"
831
+ msgid "Activating"
832
+ msgstr "有効化中"
833
+
834
+ #: includes/i18n.php:499
835
+ msgctxt "as in the process of sending an email"
836
+ msgid "Sending email"
837
+ msgstr "メール送信中"
838
+
839
+ #: includes/i18n.php:503
840
+ msgctxt "button label"
841
+ msgid "Allow & Continue"
842
+ msgstr "許可して続ける"
843
+
844
+ #: includes/i18n.php:505
845
+ msgctxt "button label"
846
+ msgid "Agree & Activate License"
847
+ msgstr "同意してライセンスを有効化"
848
+
849
+ #: includes/i18n.php:507
850
+ msgctxt "verb"
851
+ msgid "Skip"
852
+ msgstr "スキップ"
853
+
854
+ #: includes/i18n.php:509
855
+ msgid "Click here to use the plugin anonymously"
856
+ msgstr "匿名でプラグインを使用するにはこちらをクリック"
857
+
858
+ #: includes/i18n.php:511
859
+ msgid "Re-send activation email"
860
+ msgstr "有効化メールを再送信"
861
+
862
+ #: includes/i18n.php:513
863
+ msgid "License key"
864
+ msgstr "ライセンスキー"
865
+
866
+ #: includes/i18n.php:515
867
+ msgid "Send License Key"
868
+ msgstr "ライセンスキーを送信"
869
+
870
+ #: includes/i18n.php:517
871
+ msgid "Sending license key"
872
+ msgstr "ライセンスキーを送信中"
873
+
874
+ #: includes/i18n.php:519
875
+ msgid "Have a license key?"
876
+ msgstr "ライセンスキーはお持ちですか?"
877
+
878
+ #: includes/i18n.php:521
879
+ msgid "Don't have a license key?"
880
+ msgstr "ライセンスキーをお持ちではありませんか?"
881
+
882
+ #: includes/i18n.php:523
883
+ msgid "Can't find your license key?"
884
+ msgstr "ライセンスキーは見つかりませんか?"
885
+
886
+ #: includes/i18n.php:525
887
+ msgid ""
888
+ "We couldn't find your email address in the system, are you sure it's the "
889
+ "right address?"
890
+ msgstr "システムではメールアドレスを見つけることができませんでした。メールアドレスが正しいか確認してください。"
891
+
892
+ #: includes/i18n.php:529
893
+ msgid ""
894
+ "We can't see any active licenses associated with that email address, are you"
895
+ " sure it's the right address?"
896
+ msgstr "メールアドレスに関連付けられた有効なライセンスが見つかりません。メールアドレスが正しいか確認してください。"
897
+
898
+ #: includes/i18n.php:533
899
+ msgid "Opt In"
900
+ msgstr "オプトイン"
901
+
902
+ #: includes/i18n.php:535
903
+ msgid "Opt Out"
904
+ msgstr "オプトアウト"
905
+
906
+ #: includes/i18n.php:537
907
+ msgid "On second thought - I want to continue helping"
908
+ msgstr "第二の考えで - 手伝い続けたいです"
909
+
910
+ #: includes/i18n.php:541
911
+ msgid "Opting out..."
912
+ msgstr "オプトアウト中…"
913
+
914
+ #: includes/i18n.php:543
915
+ msgid "Opting in..."
916
+ msgstr "オプトイン中…"
917
+
918
+ #: includes/i18n.php:545
919
+ msgid ""
920
+ "We appreciate your help in making the %s better by letting us track some "
921
+ "usage data."
922
+ msgstr "使用データを追跡できるよう許可してくれたことで、%s をより良くするための手助けに感謝致します。"
923
+
924
+ #: includes/i18n.php:549
925
+ msgid ""
926
+ "Usage tracking is done in the name of making %s better. Making a better user"
927
+ " experience, prioritizing new features, and more good things. We'd really "
928
+ "appreciate if you'll reconsider letting us continue with the tracking."
929
+ msgstr "使用の追跡は %s をより良くする名目の下に行われています。ユーザー体験をより良くし、新機能に優先順位をつけるためなどに使います。追跡を続けてもよいと再考してくれるなら本当に感謝致します。"
930
+
931
+ #: includes/i18n.php:553
932
+ msgid ""
933
+ "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
934
+ "%s."
935
+ msgstr "\"オプトアウト\"をクリックすることで、もう %s から %s へのデータの送信は行いません。"
936
+
937
+ #: includes/i18n.php:563
938
+ msgid "Screenshots"
939
+ msgstr "スクリーンショット"
940
+
941
+ #: includes/i18n.php:565
942
+ msgid "Click to view full-size screenshot %d"
943
+ msgstr "クリックしてフルサイズのスクリーンショットを見る %d"
944
+
945
+ #: includes/i18n.php:573
946
+ msgid "Freemius Debug"
947
+ msgstr "Freemius デバッグ"
948
+
949
+ #: includes/i18n.php:575
950
+ msgctxt "as turned on"
951
+ msgid "On"
952
+ msgstr "オン"
953
+
954
+ #: includes/i18n.php:577
955
+ msgctxt "as turned off"
956
+ msgid "Off"
957
+ msgstr "オフ"
958
+
959
+ #: includes/i18n.php:579
960
+ msgctxt "as code debugging"
961
+ msgid "Debugging"
962
+ msgstr "デバッグ"
963
+
964
+ #: includes/i18n.php:581
965
+ msgid "Freemius State"
966
+ msgstr "Freemius ステータス"
967
+
968
+ #: includes/i18n.php:583
969
+ msgctxt "as connection was successful"
970
+ msgid "Connected"
971
+ msgstr "接続"
972
+
973
+ #: includes/i18n.php:585
974
+ msgctxt "as connection blocked"
975
+ msgid "Blocked"
976
+ msgstr "ブロック"
977
+
978
+ #: includes/i18n.php:587
979
+ msgctxt "as application program interface"
980
+ msgid "API"
981
+ msgstr "API"
982
+
983
+ #: includes/i18n.php:589
984
+ msgctxt "as software development kit versions"
985
+ msgid "SDK"
986
+ msgstr "SDK"
987
+
988
+ #: includes/i18n.php:591
989
+ msgctxt "as software development kit versions"
990
+ msgid "SDK Versions"
991
+ msgstr "SDK バージョン"
992
+
993
+ #: includes/i18n.php:595
994
+ msgctxt "as plugin folder path"
995
+ msgid "Plugin Path"
996
+ msgstr "プラグインのパス"
997
+
998
+ #: includes/i18n.php:597
999
+ msgctxt "as sdk path"
1000
+ msgid "SDK Path"
1001
+ msgstr "SDK のパス"
1002
+
1003
+ #: includes/i18n.php:599
1004
+ msgid "Add Ons of Plugin %s"
1005
+ msgstr "プラグインのアドオン %s"
1006
+
1007
+ #: includes/i18n.php:601
1008
+ msgid "Are you sure you want to delete all Freemius data?"
1009
+ msgstr "ほんとうに全ての Freemius データを削除しますか?"
1010
+
1011
+ #: includes/i18n.php:605
1012
+ msgid "Actions"
1013
+ msgstr "アクション"
1014
+
1015
+ #: includes/i18n.php:607
1016
+ msgid "Delete All Accounts"
1017
+ msgstr "全てのアカウントを削除"
1018
+
1019
+ #: includes/i18n.php:609
1020
+ msgid "Start Fresh"
1021
+ msgstr "初期化を開始"
1022
+
1023
+ #: includes/i18n.php:611
1024
+ msgid "Clear API Cache"
1025
+ msgstr "API キャッシュをクリア"
1026
+
1027
+ #: includes/i18n.php:613
1028
+ msgid "Sync Data From Server"
1029
+ msgstr "サーバーからのデータを同期"
1030
+
1031
+ #: includes/i18n.php:615
1032
+ msgid "Scheduled Crons"
1033
+ msgstr "スケジュール Cron"
1034
+
1035
+ #: includes/i18n.php:617
1036
+ msgid "Plugins & Themes Sync"
1037
+ msgstr "プラグインとテーマを同期"
1038
+
1039
+ #: includes/i18n.php:625
1040
+ msgctxt "as congratulations"
1041
+ msgid "Congrats"
1042
+ msgstr "おめでとう"
1043
+
1044
+ #: includes/i18n.php:627
1045
+ msgctxt "exclamation"
1046
+ msgid "Oops"
1047
+ msgstr "おっと"
1048
+
1049
+ #: includes/i18n.php:629
1050
+ msgctxt "interjection expressing joy or exuberance"
1051
+ msgid "Yee-haw"
1052
+ msgstr "ヤッホー"
1053
+
1054
+ #: includes/i18n.php:633
1055
+ msgctxt ""
1056
+ "(especially in electronic communication) used to express elation, "
1057
+ "enthusiasm, or triumph."
1058
+ msgid "W00t"
1059
+ msgstr "やったー"
1060
+
1061
+ #: includes/i18n.php:637
1062
+ msgctxt "a positive response"
1063
+ msgid "Right on"
1064
+ msgstr "そうだ"
1065
+
1066
+ #: includes/i18n.php:639
1067
+ msgctxt ""
1068
+ "something somebody says when they are thinking about what you have just "
1069
+ "said. "
1070
+ msgid "Hmm"
1071
+ msgstr "ふむ"
1072
+
1073
+ #: includes/i18n.php:643
1074
+ msgid "O.K"
1075
+ msgstr "O.K"
1076
+
1077
+ #: includes/i18n.php:645
1078
+ msgctxt "exclamation"
1079
+ msgid "Hey"
1080
+ msgstr "ヘイ"
1081
+
1082
+ #: includes/i18n.php:647
1083
+ msgctxt "advance notice of something that will need attention."
1084
+ msgid "Heads up"
1085
+ msgstr "警告"
1086
+
1087
+ #: includes/i18n.php:657
1088
+ msgid "Seems like you got the latest release."
1089
+ msgstr "最新版を取得できました。"
1090
+
1091
+ #: includes/i18n.php:659
1092
+ msgid "You are all good!"
1093
+ msgstr "すべて完璧です!"
1094
+
1095
+ #: includes/i18n.php:661
1096
+ msgid ""
1097
+ "Sorry, we could not complete the email update. Another user with the same "
1098
+ "email is already registered."
1099
+ msgstr "メールアドレスのアップデートを完了できませんでした。他のユーザーがすでに同じメールアドレスで登録しているようです。"
1100
+
1101
+ #: includes/i18n.php:665
1102
+ msgid ""
1103
+ "If you would like to give up the ownership of the plugin's account to %s "
1104
+ "click the Change Ownership button."
1105
+ msgstr "もし%s にプラグインの所有権を譲りたいなら、所有権を変更ボタンをクリックしてください。"
1106
+
1107
+ #: includes/i18n.php:669
1108
+ msgid ""
1109
+ "Your email was successfully updated. You should receive an email with "
1110
+ "confirmation instructions in few moments."
1111
+ msgstr "メールアドレスのアップデートが完了しました。まもなく確認メールが届きます。"
1112
+
1113
+ #: includes/i18n.php:673
1114
+ msgid "Your name was successfully updated."
1115
+ msgstr "名前のアップデートが成功しました。"
1116
+
1117
+ #: includes/i18n.php:675
1118
+ msgid "You have successfully updated your %s."
1119
+ msgstr "%s のアップデートが成功しました。"
1120
+
1121
+ #: includes/i18n.php:677
1122
+ msgid "Please provide your full name."
1123
+ msgstr "フルネームを入力してください。"
1124
+
1125
+ #: includes/i18n.php:679
1126
+ msgid ""
1127
+ "Verification mail was just sent to %s. If you can't find it after 5 min, "
1128
+ "please check your spam box."
1129
+ msgstr "%s に確認メールを送信しました。もし5分以内にそれが届かない場合、迷惑メールボックスを確認してください。"
1130
+
1131
+ #: includes/i18n.php:683
1132
+ msgid ""
1133
+ "Just letting you know that the add-ons information of %s is being pulled "
1134
+ "from an external server."
1135
+ msgstr "%s のアドオンに関する情報は、外部サーバーから取得されます。"
1136
+
1137
+ #: includes/i18n.php:687
1138
+ msgid "No credit card required"
1139
+ msgstr "クレジットカードは必要ありません。"
1140
+
1141
+ #: includes/i18n.php:689
1142
+ msgid "Premium plugin version was successfully activated."
1143
+ msgstr "プレミアムプラグインのバージョンの有効化に成功しました。"
1144
+
1145
+ #: includes/i18n.php:693
1146
+ msgid "The upgrade of %s was successfully completed."
1147
+ msgstr "%s のアップグレードが完了しました。"
1148
+
1149
+ #: includes/i18n.php:695
1150
+ msgid "Your account was successfully activated with the %s plan."
1151
+ msgstr "アカウントが %s プランで有効化できました。"
1152
+
1153
+ #: includes/i18n.php:699
1154
+ msgid "Download the latest %s version now"
1155
+ msgstr "%s の最新版をダウンロードする"
1156
+
1157
+ #: includes/i18n.php:701
1158
+ msgid "Please follow these steps to complete the upgrade"
1159
+ msgstr "アップグレードを完了するには以下の手順を完了させてください。"
1160
+
1161
+ #: includes/i18n.php:705
1162
+ msgid "Download the latest %s version"
1163
+ msgstr "最新の %s をダウンロード"
1164
+
1165
+ #: includes/i18n.php:707
1166
+ msgid "Download the latest version"
1167
+ msgstr "最新版をダウンロード"
1168
+
1169
+ #: includes/i18n.php:709
1170
+ msgid "Deactivate the free version"
1171
+ msgstr "無料バージョンを無効化"
1172
+
1173
+ #: includes/i18n.php:711
1174
+ msgid "Upload and activate the downloaded version"
1175
+ msgstr "ダウンロードしたバージョンをアップロードして有効化"
1176
+
1177
+ #: includes/i18n.php:713
1178
+ msgid "How to upload and activate?"
1179
+ msgstr "アップロードと有効化の方法"
1180
+
1181
+ #: includes/i18n.php:715
1182
+ msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1183
+ msgid "%s Add-on was successfully purchased."
1184
+ msgstr "%s のアドオンの支払いが完了しました。"
1185
+
1186
+ #: includes/i18n.php:719
1187
+ msgid "Your %s Add-on plan was successfully upgraded."
1188
+ msgstr "%s のアドオンのプランのアップグレードが完了しました。"
1189
+
1190
+ #: includes/i18n.php:723
1191
+ msgid "Your email has been successfully verified - you are AWESOME!"
1192
+ msgstr "あなたのメールアドレスの承認が完了しました。すごい!"
1193
+
1194
+ #: includes/i18n.php:727
1195
+ msgid "Your plan was successfully upgraded."
1196
+ msgstr "プランのアップグレードが成功しました。"
1197
+
1198
+ #: includes/i18n.php:729
1199
+ msgid "Your plan was successfully changed to %s."
1200
+ msgstr "プランの %s への変更が成功しました。"
1201
+
1202
+ #: includes/i18n.php:731
1203
+ msgid ""
1204
+ "Your license has expired. You can still continue using the free plugin "
1205
+ "forever."
1206
+ msgstr "ライセンスの有効期限が切れました。無料バージョンの利用を継続することができます。"
1207
+
1208
+ #: includes/i18n.php:735
1209
+ msgid ""
1210
+ "Your license has been cancelled. If you think it's a mistake, please contact"
1211
+ " support."
1212
+ msgstr "ライセンスはキャンセルされました。もしそれが間違いだと思うならサポートに連絡してください。"
1213
+
1214
+ #: includes/i18n.php:739
1215
+ msgid "Your trial has been successfully started."
1216
+ msgstr "トライアル版の利用を開始しました。"
1217
+
1218
+ #: includes/i18n.php:741
1219
+ msgid "Your license was successfully activated."
1220
+ msgstr "ライセンスの有効化が成功しました。"
1221
+
1222
+ #: includes/i18n.php:743
1223
+ msgid "It looks like your site currently doesn't have an active license."
1224
+ msgstr "サイトは有効なライセンスを持っていないようです。"
1225
+
1226
+ #: includes/i18n.php:747
1227
+ msgid ""
1228
+ "Your license was successfully deactivated, you are back to the %s plan."
1229
+ msgstr "ライセンスの無効化が完了しました。%s プランに戻りました。"
1230
+
1231
+ #: includes/i18n.php:751
1232
+ msgid "It looks like the license deactivation failed."
1233
+ msgstr "ライセンスの無効化ができませんでした。"
1234
+
1235
+ #: includes/i18n.php:755
1236
+ msgid "It looks like the license could not be activated."
1237
+ msgstr "ライセンスの有効化ができませんでした。"
1238
+
1239
+ #: includes/i18n.php:759
1240
+ msgid "Error received from the server:"
1241
+ msgstr "サーバーからエラーを受信しました。"
1242
+
1243
+ #: includes/i18n.php:761
1244
+ msgid ""
1245
+ "Your trial has expired. You can still continue using all our free features."
1246
+ msgstr "トライアルの有効期限が切れました。引き続き無料の機能の利用を続けることができます。"
1247
+
1248
+ #: includes/i18n.php:765
1249
+ msgid ""
1250
+ "Your plan was successfully downgraded. Your %s plan license will expire in "
1251
+ "%s."
1252
+ msgstr "プランのダウングレードが完了しました。%s プランは %s に有効期限が切れます。"
1253
+
1254
+ #: includes/i18n.php:769
1255
+ msgid ""
1256
+ "Seems like we are having some temporary issue with your plan downgrade. "
1257
+ "Please try again in few minutes."
1258
+ msgstr "プランのダウングレードの際に一時的な問題が発生したようです。数分後に再度操作してください。"
1259
+
1260
+ #: includes/i18n.php:773
1261
+ msgid ""
1262
+ "It looks like you are not in trial mode anymore so there's nothing to cancel"
1263
+ " :)"
1264
+ msgstr "すでにトライアルモードではないようなので、キャンセルする必要はありません :)"
1265
+
1266
+ #: includes/i18n.php:777
1267
+ msgid "Your %s free trial was successfully cancelled."
1268
+ msgstr "%s のフリートライアルはキャンセルされました。"
1269
+
1270
+ #: includes/i18n.php:781
1271
+ msgctxt "%s - numeric version number"
1272
+ msgid "Version %s was released."
1273
+ msgstr "バージョン %s をリリースしました。"
1274
+
1275
+ #: includes/i18n.php:785
1276
+ msgid "Please download %s."
1277
+ msgstr "%s をダウンロードしてください。"
1278
+
1279
+ #: includes/i18n.php:787
1280
+ msgctxt "%s - plan name, as the latest professional version here"
1281
+ msgid "the latest %s version here"
1282
+ msgstr "最新の %s バージョンはこちらです。"
1283
+
1284
+ #: includes/i18n.php:791
1285
+ msgid ""
1286
+ "How do you like %s so far? Test all our %s premium features with a %d-day "
1287
+ "free trial."
1288
+ msgstr "%s はどうですか? 私たちの全ての %s のプレミアム機能をお試しください。"
1289
+
1290
+ #: includes/i18n.php:795
1291
+ msgctxt "call to action"
1292
+ msgid "Start free trial"
1293
+ msgstr "フリートライアルを開始"
1294
+
1295
+ #: includes/i18n.php:797
1296
+ msgid "Starting trial"
1297
+ msgstr "トライアルを開始"
1298
+
1299
+ #: includes/i18n.php:799
1300
+ msgid "Please wait"
1301
+ msgstr "お待ちください"
1302
+
1303
+ #: includes/i18n.php:801
1304
+ msgid ""
1305
+ "Seems like we are having some temporary issue with your trial cancellation. "
1306
+ "Please try again in few minutes."
1307
+ msgstr "トライアルのキャンセルに一時的な問題がありました。数分後に再度お試しください。"
1308
+
1309
+ #: includes/i18n.php:805
1310
+ msgid "You already utilized a trial before."
1311
+ msgstr "以前すでに試用版を利用しました。"
1312
+
1313
+ #: includes/i18n.php:807
1314
+ msgid "You are already running the plugin in a trial mode."
1315
+ msgstr "すでにトライアル版のプラグインを利用しています。"
1316
+
1317
+ #: includes/i18n.php:811
1318
+ msgid "Plan %s do not exist, therefore, can't start a trial."
1319
+ msgstr "%s プランは存在しないため、試用を開始できません。"
1320
+
1321
+ #: includes/i18n.php:815
1322
+ msgid "Plan %s does not support a trial period."
1323
+ msgstr "%s プランにはトライアル期間はありません。"
1324
+
1325
+ #: includes/i18n.php:817
1326
+ msgid "None of the plugin's plans supports a trial period."
1327
+ msgstr "トライアル期間をサポートしているプランのプラグインはありません。"
1328
+
1329
+ #: includes/i18n.php:821
1330
+ msgid ""
1331
+ "Unexpected API error. Please contact the plugin's author with the following "
1332
+ "error."
1333
+ msgstr "予期しない API のエラー。プラグイン開発者に連絡をとってください。"
1334
+
1335
+ #: includes/i18n.php:825
1336
+ msgid "No commitment for %s days - cancel anytime!"
1337
+ msgstr "%s 日以内であればいつでもキャンセルできます。"
1338
+
1339
+ #: includes/i18n.php:827
1340
+ msgid ""
1341
+ "Your license has expired. You can still continue using all the %s features, "
1342
+ "but you'll need to renew your license to continue getting updates and "
1343
+ "support."
1344
+ msgstr "ライセンスは有効期限がきれました。%s の機能を引き続き利用することができます。ただし、アップデートやサポートをうけるにはライセンスをアップデートする必要があります。"
1345
+
1346
+ #: includes/i18n.php:831
1347
+ msgid "Couldn't activate %s."
1348
+ msgstr "%s を有効化できません。"
1349
+
1350
+ #: includes/i18n.php:833
1351
+ msgid "Please contact us with the following message:"
1352
+ msgstr "以下のメッセージとともに私たちに連絡をください。"
1353
+
1354
+ #: includes/i18n.php:835
1355
+ msgid ""
1356
+ "It looks like you are still on the %s plan. If you did upgrade or change "
1357
+ "your plan, it's probably an issue on our side - sorry."
1358
+ msgstr "まだ %s プランのようです。もしアップグレードやプランの変更をしたのなら、こちらで何らかの問題が発生しているようです。申し訳ありません。"
1359
+
1360
+ #: includes/i18n.php:839
1361
+ msgid "Please contact us here"
1362
+ msgstr "こちらで私たちに連絡をとってください。"
1363
+
1364
+ #: includes/i18n.php:841
1365
+ msgid ""
1366
+ "I have upgraded my account but when I try to Sync the License, the plan "
1367
+ "remains %s."
1368
+ msgstr "アカウントをアップグレードしましたが、ライセンスを同期しようとするとプランが %s のままです。"
1369
+
1370
+ #: includes/i18n.php:849
1371
+ msgid "From unknown reason, the API connectivity test failed."
1372
+ msgstr "不明のエラーにより、API 接続ができませんでした。"
1373
+
1374
+ #: includes/i18n.php:853
1375
+ msgid ""
1376
+ "It's probably a temporary issue on our end. Just to be sure, with your "
1377
+ "permission, would it be o.k to run another connectivity test?"
1378
+ msgstr "それは私たちの一時的な問題のようです。もし許可していただけるなら他の接続テストをしてもよいですか?"
1379
+
1380
+ #: includes/i18n.php:857
1381
+ msgid ""
1382
+ "We use PHP cURL library for the API calls, which is a very common library "
1383
+ "and usually installed out of the box. Unfortunately, cURL is not installed "
1384
+ "on your server."
1385
+ msgstr "私たちは、API コールに PHP の cURL ライブラリを使用しています。これは一般的なライブラリで多くの場合インストールされていますが、あなたのサーバーにはインストールされていないようです。"
1386
+
1387
+ #: includes/i18n.php:861
1388
+ msgid ""
1389
+ "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1390
+ msgstr "不明のエラーにより私たちが使用している CloudFlare のファイヤーウォールが接続を拒否したようです。"
1391
+
1392
+ #: includes/i18n.php:865
1393
+ msgctxt "as pluginX requires an access to our API"
1394
+ msgid "%s requires an access to our API."
1395
+ msgstr "%s は、私たちの API への接続が必要です。"
1396
+
1397
+ #: includes/i18n.php:869
1398
+ msgid ""
1399
+ "It looks like your server is using Squid ACL (access control lists), which "
1400
+ "blocks the connection."
1401
+ msgstr "サーバーは Squid ACL(Access control lists) を使用しているらしく、それが接続をブロックしています。"
1402
+
1403
+ #: includes/i18n.php:873
1404
+ msgid "I don't know what is Squid or ACL, help me!"
1405
+ msgstr "Squid ACL について知りません。助けてください!"
1406
+
1407
+ #: includes/i18n.php875, includes/i18n.php:889
1408
+ msgid ""
1409
+ "We'll make sure to contact your hosting company and resolve the issue. You "
1410
+ "will get a follow-up email to %s once we have an update."
1411
+ msgstr "ホスティング会社に連絡して問題を解決してください。 更新が完了したら、 %s へのフォローアップメールが届きます。"
1412
+
1413
+ #: includes/i18n.php:879
1414
+ msgid "I'm a system administrator"
1415
+ msgstr "私はシステム管理者です"
1416
+
1417
+ #: includes/i18n.php:881
1418
+ msgid ""
1419
+ "Great, please whitelist the following domains: %s. Once you done, deactivate"
1420
+ " the plugin and activate it again."
1421
+ msgstr "以下のドメインを許可してください: %s 。それが完了したらそのプラグインを無効化して有効化してください。"
1422
+
1423
+ #: includes/i18n.php:885
1424
+ msgid "I don't know what is cURL or how to install it, help me!"
1425
+ msgstr "cURL がなにか、そのインストール方法を知りません。助けてください。"
1426
+
1427
+ #: includes/i18n.php:893
1428
+ msgid ""
1429
+ "Great, please install cURL and enable it in your php.ini file. To make sure "
1430
+ "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1431
+ "the plugin and reactivate it back again."
1432
+ msgstr "cURLをインストールし、php.iniファイルで有効にしてください。 正常に起動されたことを確認するには、 'phpinfo()' を使用してください。 プラグインを有効化したら、プラグインを無効化して再度有効化し直してください。"
1433
+
1434
+ #: includes/i18n.php:897
1435
+ msgid ""
1436
+ "We are sure it's an issue on our side and more than happy to resolve it for "
1437
+ "you ASAP if you give us a chance."
1438
+ msgstr "それは私たちの側の問題だと確信しています。もし機会をくれるなら私たちはそれを一刻でも早く修正します。"
1439
+
1440
+ #: includes/i18n.php:901
1441
+ msgid ""
1442
+ "Sorry for the inconvenience and we are here to help if you give us a chance."
1443
+ msgstr "ご迷惑をおかけしてすいません。もし機会をいただけたらお手伝いをします。"
1444
+
1445
+ #: includes/i18n.php:905
1446
+ msgid "Yes - I'm giving you a chance to fix it"
1447
+ msgstr "はい、修正をお願いします。"
1448
+
1449
+ #: includes/i18n.php:907
1450
+ msgid ""
1451
+ "We will do our best to whitelist your server and resolve this issue ASAP. "
1452
+ "You will get a follow-up email to %s once we have an update."
1453
+ msgstr "私たちは、少しでも早くサーバーをホワイトリストに登録して問題を修正します。アップデートを行ったら、%s あてに報告を送信します。"
1454
+
1455
+ #: includes/i18n.php:911
1456
+ msgid "Let's try your previous version"
1457
+ msgstr "以前のバージョンでお試しください。"
1458
+
1459
+ #: includes/i18n.php:913
1460
+ msgid "Uninstall this version and install the previous one."
1461
+ msgstr "このバージョンをアンインストールして、以前のバージョンをインストールする。"
1462
+
1463
+ #: includes/i18n.php:917
1464
+ msgid "That's exhausting, please deactivate"
1465
+ msgstr "それは、使用できません。無効化してください。"
1466
+
1467
+ #: includes/i18n.php:919
1468
+ msgid ""
1469
+ "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1470
+ " to see you again in the future."
1471
+ msgstr "ご迷惑をおかけして心からお詫び申し上げます。将来ふたたびお会いできることを楽しみにしています。"
1472
+
1473
+ #: includes/i18n.php:923
1474
+ msgid ""
1475
+ "Thank for giving us the chance to fix it! A message was just sent to our "
1476
+ "technical staff. We will get back to you as soon as we have an update to %s."
1477
+ " Appreciate your patience."
1478
+ msgstr "修正するチャンスをいただきありがとうございます! テクニカルスタッフにメッセージが送信されました。 %s への更新が行われるとすぐにあなたに連絡します。 あなたの忍耐に感謝します。"
1479
+
1480
+ #: includes/i18n.php:927
1481
+ msgctxt "%1s - plugin title, %2s - API domain"
1482
+ msgid ""
1483
+ "Your server is blocking the access to Freemius' API, which is crucial for "
1484
+ "%1s synchronization. Please contact your host to whitelist %2s"
1485
+ msgstr "サーバーは %1s の同期に不可欠な Freemius の API へのアクセスをブロックしています。 ホワイトリストに %2s を追加していただけるようあなたのホスティング会社に連絡してください。"
1486
+
1487
+ #: includes/i18n.php:931
1488
+ msgid ""
1489
+ "It seems like one of the authentication parameters is wrong. Update your "
1490
+ "Public Key, Secret Key & User ID, and try again."
1491
+ msgstr "認証パラメータの1つが間違っているようです。 公開鍵、秘密鍵、ユーザーIDを更新して、もう一度お試しください。"
1492
+
1493
+ #: includes/i18n.php:939
1494
+ msgid ""
1495
+ "Please check your mailbox, you should receive an email via %s to confirm the"
1496
+ " ownership change. From security reasons, you must confirm the change within"
1497
+ " the next 15 min. If you cannot find the email, please check your spam "
1498
+ "folder."
1499
+ msgstr "メールボックスを確認してください。所有権の変更を確認するには、%s でメールを受け取る必要があります。 セキュリティ上の理由から、次の15分以内に変更を確認する必要があります。 電子メールが見つからない場合は、迷惑メールフォルダを確認してください。"
1500
+
1501
+ #: includes/i18n.php:943
1502
+ msgid ""
1503
+ "Thanks for confirming the ownership change. An email was just sent to %s for"
1504
+ " final approval."
1505
+ msgstr "所有権の変更を確認していただきありがとうございます。 %s に承認メールが送信されました。"
1506
+
1507
+ #: includes/i18n.php:947
1508
+ msgid "%s is the new owner of the account."
1509
+ msgstr "%s は新しいオーナーです。"
1510
+
1511
+ #: includes/i18n.php:951
1512
+ msgctxt "addonX cannot run without pluginY"
1513
+ msgid "%s cannot run without %s."
1514
+ msgstr "%s は、%s が無いと実行することができません。"
1515
+
1516
+ #: includes/i18n.php:955
1517
+ msgctxt "addonX cannot run..."
1518
+ msgid "%s cannot run without the plugin."
1519
+ msgstr "%s は、プラグインが無いと実行することができません。"
1520
+
1521
+ #: includes/i18n.php:959
1522
+ msgctxt "pluginX activation was successfully..."
1523
+ msgid "%s activation was successfully completed."
1524
+ msgstr "%s の有効化が成功しました。"
1525
+
1526
+ #: includes/i18n.php:963
1527
+ msgctxt "Plugin installer section title"
1528
+ msgid "Features & Pricing"
1529
+ msgstr "機能 & 料金"
1530
+
1531
+ #: includes/i18n.php:967
1532
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
1533
+ msgstr "アドオンが WordPress.org か Freemius にデプロイされている必要があります。"
1534
+
1535
+ #: includes/i18n.php:971
1536
+ msgid "Paid add-on must be deployed to Freemius."
1537
+ msgstr "有料アドオンは Freemius にデプロイされている必要があります。"
1538
+
1539
+ #: includes/i18n.php:979
1540
+ msgid ""
1541
+ "%s is a premium only add-on. You have to purchase a license first before "
1542
+ "activating the plugin."
1543
+ msgstr "%s はプレミアムのみのアドオンです。そのプラグインを有効化する前にライセンスを購入する必要があります。"
1544
+
1545
+ #: includes/i18n.php:983
1546
+ msgid ""
1547
+ "%s free trial was successfully cancelled. Since the add-on is premium only "
1548
+ "it was automatically deactivated. If you like to use it in the future, "
1549
+ "you'll have to purchase a license."
1550
+ msgstr "%s の無料試用が正常にキャンセルされました。 アドオンはプレミアムなので、自動的に無効化されました。 将来使用したい場合は、ライセンスを購入する必要があります。"
1551
+
1552
+ #: includes/i18n.php:995
1553
+ msgctxt "as every month"
1554
+ msgid "Monthly"
1555
+ msgstr "月"
1556
+
1557
+ #: includes/i18n.php:997
1558
+ msgctxt "as monthly period"
1559
+ msgid "mo"
1560
+ msgstr "月"
1561
+
1562
+ #: includes/i18n.php:999
1563
+ msgctxt "as once a year"
1564
+ msgid "Annual"
1565
+ msgstr "年次"
1566
+
1567
+ #: includes/i18n.php:1001
1568
+ msgctxt "as once a year"
1569
+ msgid "Annually"
1570
+ msgstr "毎年"
1571
+
1572
+ #: includes/i18n.php:1003
1573
+ msgctxt "as once a year"
1574
+ msgid "Once"
1575
+ msgstr "一度"
1576
+
1577
+ #: includes/i18n.php:1005
1578
+ msgctxt "as annual period"
1579
+ msgid "year"
1580
+ msgstr "年"
1581
+
1582
+ #: includes/i18n.php:1007
1583
+ msgid "Lifetime"
1584
+ msgstr "ライフタイム"
1585
+
1586
+ #: includes/i18n.php:1009
1587
+ msgctxt "e.g. the best product"
1588
+ msgid "Best"
1589
+ msgstr "ベスト"
1590
+
1591
+ #: includes/i18n.php:1011
1592
+ msgctxt "e.g. billed monthly"
1593
+ msgid "Billed %s"
1594
+ msgstr "%s への請求"
1595
+
1596
+ #: includes/i18n.php:1013
1597
+ msgctxt "as a discount of $5 or 10%"
1598
+ msgid "Save %s"
1599
+ msgstr "%s を保存"
1600
+
1601
+ #: includes/i18n.php:1017
1602
+ msgid "View details"
1603
+ msgstr "詳細を表示"
1604
+
1605
+ #: includes/i18n.php:1025
1606
+ msgctxt "button label"
1607
+ msgid "Approve & Start Trial"
1608
+ msgstr "気に入ったのでトライアルを開始"
1609
+
1610
+ #: includes/i18n.php:1029
1611
+ msgid ""
1612
+ "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1613
+ "plan."
1614
+ msgstr "%2$s プランの%1$s日間のフリートライアルを開始するまであとワンクリックです。"
1615
+
1616
+ #: includes/i18n.php:1033
1617
+ msgid ""
1618
+ "For compliance with the WordPress.org guidelines, before we start the trial "
1619
+ "we ask that you opt-in with your user and non-sensitive site information, "
1620
+ "allowing the plugin to periodically send data to %s to check for version "
1621
+ "updates and to validate your trial."
1622
+ msgstr "WordPress.org ガイドラインの遵守のため、ユーザーとセンシティブでないサイト情報をオプトインすること、バージョンの更新確認のために %s へとプラグインが一時的にデータを送信することの許可、トライアルを有効にすることの3つについて、トライアルの開始前にお尋ねします。"
1623
+
1624
+ #: includes/i18n.php:1045
1625
+ msgid "Business name"
1626
+ msgstr "商号"
1627
+
1628
+ #: includes/i18n.php:1047
1629
+ msgid "Tax / VAT ID"
1630
+ msgstr "税金 / VAT ID"
1631
+
1632
+ #: includes/i18n.php:1049
1633
+ msgid "Address Line %d"
1634
+ msgstr "住所欄 %d"
1635
+
1636
+ #: includes/i18n.php:1051
1637
+ msgid "Country"
1638
+ msgstr "国"
1639
+
1640
+ #: includes/i18n.php:1053
1641
+ msgid "Select Country"
1642
+ msgstr "国を選択"
1643
+
1644
+ #: includes/i18n.php:1055
1645
+ msgid "City"
1646
+ msgstr "市"
1647
+
1648
+ #: includes/i18n.php:1057
1649
+ msgid "Town"
1650
+ msgstr "町"
1651
+
1652
+ #: includes/i18n.php:1059
1653
+ msgid "State"
1654
+ msgstr "州"
1655
+
1656
+ #: includes/i18n.php:1061
1657
+ msgid "Province"
1658
+ msgstr "県・州・省"
1659
+
1660
+ #: includes/i18n.php:1063
1661
+ msgid "ZIP / Postal Code"
1662
+ msgstr "ZIP / 郵便番号"
includes/pum-sdk/freemius/languages/freemius.pot CHANGED
@@ -1,1525 +1,1724 @@
1
- # Copyright (C) 2016 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: freemius\n"
6
- "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
11
- "Last-Translator: Vova Feldman <vova@freemius.com>\n"
12
  "Language-Team: Freemius Team <admin@freemius.com>\n"
 
 
13
  "X-Poedit-Basepath: ..\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
  "X-Poedit-SearchPathExcluded-0: *.js\n"
 
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
- #: includes/i18n.php:41, includes/i18n.php:55
20
- msgid "Yes - I'm in!"
21
- msgstr ""
22
 
23
- #: includes/i18n.php:43, includes/i18n.php:57
24
- msgid "Not today"
25
- msgstr ""
26
-
27
- #: includes/i18n.php:69
28
  msgid "Account"
29
  msgstr ""
30
 
31
- #: includes/i18n.php:71
32
  msgid "Add On"
33
  msgstr ""
34
 
35
- #: includes/i18n.php:73
36
  msgid "Contact Us"
37
  msgstr ""
38
 
39
- #: includes/i18n.php:75
40
  msgid "Contact Support"
41
  msgstr ""
42
 
43
- #: includes/i18n.php:77
44
  msgid "Change Ownership"
45
  msgstr ""
46
 
47
- #: includes/i18n.php:79
48
  msgid "Support"
49
  msgstr ""
50
 
51
- #: includes/i18n.php:81
52
  msgid "Support Forum"
53
  msgstr ""
54
 
55
- #: includes/i18n.php:83
56
  msgid "Add Ons"
57
  msgstr ""
58
 
59
- #: includes/i18n.php:85
60
  msgctxt "verb"
61
  msgid "Upgrade"
62
  msgstr ""
63
 
64
- #: includes/i18n.php:87
65
  msgid "Awesome"
66
  msgstr ""
67
 
68
- #: includes/i18n.php:89
69
  msgctxt "noun"
70
  msgid "Pricing"
71
  msgstr ""
72
 
73
- #: includes/i18n.php:91
74
  msgctxt "noun"
75
  msgid "Price"
76
  msgstr ""
77
 
78
- #: includes/i18n.php:93
79
  msgid "Unlimited Updates"
80
  msgstr ""
81
 
82
- #: includes/i18n.php:95
83
  msgctxt "verb"
84
  msgid "Downgrade"
85
  msgstr ""
86
 
87
- #: includes/i18n.php:97
88
  msgid "Cancel Trial"
89
  msgstr ""
90
 
91
- #: includes/i18n.php:99
92
  msgid "Free Trial"
93
  msgstr ""
94
 
95
- #: includes/i18n.php:101
96
  msgid "Start my free %s"
97
  msgstr ""
98
 
99
- #: includes/i18n.php:103
100
  msgid "No commitment for %s - cancel anytime"
101
  msgstr ""
102
 
103
- #: includes/i18n.php:105
104
  msgid "After your free %s, pay as little as %s"
105
  msgstr ""
106
 
107
- #: includes/i18n.php:107
108
  msgid "Details"
109
  msgstr ""
110
 
111
- #: includes/i18n.php:109
112
  msgid "Account Details"
113
  msgstr ""
114
 
115
- #: includes/i18n.php:111
116
  msgctxt "verb"
117
  msgid "Delete"
118
  msgstr ""
119
 
120
- #: includes/i18n.php:113
121
  msgctxt "verb"
122
  msgid "Show"
123
  msgstr ""
124
 
125
- #: includes/i18n.php:115
126
  msgctxt "verb"
127
  msgid "Hide"
128
  msgstr ""
129
 
130
- #: includes/i18n.php:117
131
  msgctxt "verb"
132
  msgid "Edit"
133
  msgstr ""
134
 
135
- #: includes/i18n.php:119
136
  msgctxt "verb"
137
  msgid "Update"
138
  msgstr ""
139
 
140
- #: includes/i18n.php:121
141
  msgid "Date"
142
  msgstr ""
143
 
144
- #: includes/i18n.php:123
145
  msgid "Amount"
146
  msgstr ""
147
 
148
- #: includes/i18n.php:125
149
  msgid "Invoice"
150
  msgstr ""
151
 
152
- #: includes/i18n.php:127
153
  msgid "Billing"
154
  msgstr ""
155
 
156
- #: includes/i18n.php:129
157
  msgid "Payments"
158
  msgstr ""
159
 
160
- #: includes/i18n.php:131
161
  msgid "Delete Account"
162
  msgstr ""
163
 
164
- #: includes/i18n.php:133
165
  msgctxt "as close a window"
166
  msgid "Dismiss"
167
  msgstr ""
168
 
169
- #: includes/i18n.php:135
170
  msgctxt "as product pricing plan"
171
  msgid "Plan"
172
  msgstr ""
173
 
174
- #: includes/i18n.php:137
175
  msgid "Change Plan"
176
  msgstr ""
177
 
178
- #: includes/i18n.php:139
179
  msgctxt "as download professional version"
180
  msgid "Download %s Version"
181
  msgstr ""
182
 
183
- #: includes/i18n.php:141
184
  msgctxt "as download professional version now"
185
  msgid "Download %s version now"
186
  msgstr ""
187
 
188
- #: includes/i18n.php:145
189
  msgctxt "as download latest version"
190
  msgid "Download Latest"
191
  msgstr ""
192
 
193
- #: includes/i18n.php:147
194
  msgctxt "E.g. you have a professional license."
195
  msgid "You have a %s license."
196
  msgstr ""
197
 
198
- #: includes/i18n.php:151
199
  msgid "New"
200
  msgstr ""
201
 
202
- #: includes/i18n.php:153
203
  msgid "Free"
204
  msgstr ""
205
 
206
- #: includes/i18n.php:155
207
  msgctxt "as trial plan"
208
  msgid "Trial"
209
  msgstr ""
210
 
211
- #: includes/i18n.php:157
212
  msgctxt "as starting a trial plan"
213
  msgid "Start Trial"
214
  msgstr ""
215
 
216
- #: includes/i18n.php:159
217
  msgctxt "verb"
218
  msgid "Purchase"
219
  msgstr ""
220
 
221
- #: includes/i18n.php:161
222
  msgid "Purchase License"
223
  msgstr ""
224
 
225
- #: includes/i18n.php:163
226
  msgctxt "verb"
227
  msgid "Buy"
228
  msgstr ""
229
 
230
- #: includes/i18n.php:165
231
  msgid "Buy License"
232
  msgstr ""
233
 
234
- #: includes/i18n.php:167
235
  msgid "Single Site License"
236
  msgstr ""
237
 
238
- #: includes/i18n.php:169
239
  msgid "Unlimited Licenses"
240
  msgstr ""
241
 
242
- #: includes/i18n.php:171
243
  msgid "Up to %s Sites"
244
  msgstr ""
245
 
246
- #: includes/i18n.php:173
247
  msgid "%sRenew your license now%s to access version %s features and support."
248
  msgstr ""
249
 
250
- #: includes/i18n.php:177
251
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
252
  msgstr ""
253
 
254
- #: includes/i18n.php:181
255
  msgctxt "e.g. Professional Plan"
256
  msgid "%s Plan"
257
  msgstr ""
258
 
259
- #: includes/i18n.php:183
260
  msgid "You are just one step away - %s"
261
  msgstr ""
262
 
263
- #: includes/i18n.php:185
264
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
265
  msgid "Complete \"%s\" Activation Now"
266
  msgstr ""
267
 
268
- #: includes/i18n.php:189
269
  msgid "We made a few tweaks to the plugin, %s"
270
  msgstr ""
271
 
272
- #: includes/i18n.php:191
273
  msgid "Opt-in to make \"%s\" Better!"
274
  msgstr ""
275
 
276
- #: includes/i18n.php:193
277
  msgid "Error"
278
  msgstr ""
279
 
280
- #: includes/i18n.php:195
281
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
282
  msgstr ""
283
 
284
- #: includes/i18n.php:203
285
  msgctxt "as expiration date"
286
  msgid "Expiration"
287
  msgstr ""
288
 
289
- #: includes/i18n.php:205
290
  msgctxt "as software license"
291
  msgid "License"
292
  msgstr ""
293
 
294
- #: includes/i18n.php:207
295
  msgid "not verified"
296
  msgstr ""
297
 
298
- #: includes/i18n.php:209
299
  msgid "Verify Email"
300
  msgstr ""
301
 
302
- #: includes/i18n.php:211
303
  msgctxt "e.g. expires in 2 months"
304
  msgid "Expires in %s"
305
  msgstr ""
306
 
307
- #: includes/i18n.php:213
308
  msgctxt "e.g. auto renews in 2 months"
309
  msgid "Auto renews in %s"
310
  msgstr ""
311
 
312
- #: includes/i18n.php:215
313
  msgid "No expiration"
314
  msgstr ""
315
 
316
- #: includes/i18n.php:217
317
  msgid "Expired"
318
  msgstr ""
319
 
320
- #: includes/i18n.php:219
321
  msgid "Cancelled"
322
  msgstr ""
323
 
324
- #: includes/i18n.php:221
325
  msgctxt "e.g. In 2 hours"
326
  msgid "In %s"
327
  msgstr ""
328
 
329
- #: includes/i18n.php:223
330
  msgctxt "e.g. 2 min ago"
331
  msgid "%s ago"
332
  msgstr ""
333
 
334
- #: includes/i18n.php:225
 
 
 
 
335
  msgctxt "as plugin version"
336
  msgid "Version"
337
  msgstr ""
338
 
339
- #: includes/i18n.php:227
340
  msgid "Name"
341
  msgstr ""
342
 
343
- #: includes/i18n.php:229
344
  msgid "Email"
345
  msgstr ""
346
 
347
- #: includes/i18n.php:231
348
  msgid "Email address"
349
  msgstr ""
350
 
351
- #: includes/i18n.php:233
352
  msgid "Verified"
353
  msgstr ""
354
 
355
- #: includes/i18n.php:235
 
 
 
 
 
 
 
 
356
  msgid "Plugin"
357
  msgstr ""
358
 
359
- #: includes/i18n.php:237
360
  msgid "Plugins"
361
  msgstr ""
362
 
363
- #: includes/i18n.php:239
 
 
 
 
364
  msgid "Themes"
365
  msgstr ""
366
 
367
- #: includes/i18n.php:241
368
  msgctxt "as file/folder path"
369
  msgid "Path"
370
  msgstr ""
371
 
372
- #: includes/i18n.php:243
373
  msgid "Title"
374
  msgstr ""
375
 
376
- #: includes/i18n.php:245
377
  msgid "Free version"
378
  msgstr ""
379
 
380
- #: includes/i18n.php:247
381
  msgid "Premium version"
382
  msgstr ""
383
 
384
- #: includes/i18n.php:249
385
  msgctxt "as WP plugin slug"
386
  msgid "Slug"
387
  msgstr ""
388
 
389
- #: includes/i18n.php:251
390
  msgid "ID"
391
  msgstr ""
392
 
393
- #: includes/i18n.php:253
394
  msgid "Users"
395
  msgstr ""
396
 
397
- #: includes/i18n.php:255
398
  msgid "Plugin Installs"
399
  msgstr ""
400
 
401
- #: includes/i18n.php:257
 
 
 
 
402
  msgctxt "like websites"
403
  msgid "Sites"
404
  msgstr ""
405
 
406
- #: includes/i18n.php:259
407
  msgid "User ID"
408
  msgstr ""
409
 
410
- #: includes/i18n.php:261
411
  msgid "Site ID"
412
  msgstr ""
413
 
414
- #: includes/i18n.php:263
415
  msgid "Public Key"
416
  msgstr ""
417
 
418
- #: includes/i18n.php:265
419
  msgid "Secret Key"
420
  msgstr ""
421
 
422
- #: includes/i18n.php:267
423
  msgctxt "as secret encryption key missing"
424
  msgid "No Secret"
425
  msgstr ""
426
 
427
- #: includes/i18n.php:269
428
  msgid "No ID"
429
  msgstr ""
430
 
431
- #: includes/i18n.php:271
432
  msgctxt "as synchronize license"
433
  msgid "Sync License"
434
  msgstr ""
435
 
436
- #: includes/i18n.php:273
437
  msgctxt "as synchronize"
438
  msgid "Sync"
439
  msgstr ""
440
 
441
- #: includes/i18n.php:275
442
  msgid "Activate License"
443
  msgstr ""
444
 
445
- #: includes/i18n.php:277
446
  msgid "Activate Free Version"
447
  msgstr ""
448
 
449
- #: includes/i18n.php:279
450
  msgid "Please enter the license key that you received in the email right after the purchase:"
451
  msgstr ""
452
 
453
- #: includes/i18n.php:283
454
  msgid "Activating license..."
455
  msgstr ""
456
 
457
- #: includes/i18n.php:285
458
  msgid "Change License"
459
  msgstr ""
460
 
461
- #: includes/i18n.php:287
462
  msgid "Update License"
463
  msgstr ""
464
 
465
- #: includes/i18n.php:289
466
  msgid "Deactivate License"
467
  msgstr ""
468
 
469
- #: includes/i18n.php:291
470
  msgid "Activate"
471
  msgstr ""
472
 
473
- #: includes/i18n.php:293
474
  msgid "Deactivate"
475
  msgstr ""
476
 
477
- #: includes/i18n.php:295
478
  msgid "Skip & Deactivate"
479
  msgstr ""
480
 
481
- #: includes/i18n.php:297
 
 
 
 
482
  msgid "No - just deactivate"
483
  msgstr ""
484
 
485
- #: includes/i18n.php:299
486
  msgid "Yes - do your thing"
487
  msgstr ""
488
 
489
- #: includes/i18n.php:301
490
  msgctxt "active mode"
491
  msgid "Active"
492
  msgstr ""
493
 
494
- #: includes/i18n.php:303
495
  msgctxt "is active mode?"
496
  msgid "Is Active"
497
  msgstr ""
498
 
499
- #: includes/i18n.php:305
500
  msgid "Install Now"
501
  msgstr ""
502
 
503
- #: includes/i18n.php:307
504
  msgid "Install Update Now"
505
  msgstr ""
506
 
507
- #: includes/i18n.php:309
508
  msgid "More information about %s"
509
  msgstr ""
510
 
511
- #: includes/i18n.php:311
512
  msgid "Localhost"
513
  msgstr ""
514
 
515
- #: includes/i18n.php:313
516
  msgctxt "as activate Professional plan"
517
  msgid "Activate %s Plan"
518
  msgstr ""
519
 
520
- #: includes/i18n.php:315
521
  msgctxt "as 5 licenses left"
522
  msgid "%s left"
523
  msgstr ""
524
 
525
- #: includes/i18n.php:317
526
  msgid "Last license"
527
  msgstr ""
528
 
529
- #: includes/i18n.php:319
530
  msgid "What is your %s?"
531
  msgstr ""
532
 
533
- #: includes/i18n.php:321
534
  msgid "Activate this add-on"
535
  msgstr ""
536
 
537
- #: includes/i18n.php:323
538
  msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
539
  msgstr ""
540
 
541
- #: includes/i18n.php:327
542
  msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
543
  msgstr ""
544
 
545
- #: includes/i18n.php:331
546
  msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
547
  msgstr ""
548
 
549
- #: includes/i18n.php:335
550
  msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
551
  msgstr ""
552
 
553
- #: includes/i18n.php:339
554
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
555
  msgstr ""
556
 
557
- #: includes/i18n.php:343
558
  msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
559
  msgstr ""
560
 
561
- #: includes/i18n.php:347
562
- msgid "Once your license expire you can still use the Free version but you will NOT have access to the %s features."
563
  msgstr ""
564
 
565
- #: includes/i18n.php:351
566
  msgid "Are you sure you want to proceed?"
567
  msgstr ""
568
 
569
- #: includes/i18n.php:357
570
  msgid "Add Ons for %s"
571
  msgstr ""
572
 
573
- #: includes/i18n.php:359
574
  msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
575
  msgstr ""
576
 
577
- #: includes/i18n.php:365
578
  msgid "Anonymous feedback"
579
  msgstr ""
580
 
581
- #: includes/i18n.php:367
582
  msgid "Quick feedback"
583
  msgstr ""
584
 
585
- #: includes/i18n.php:369
586
  msgid "If you have a moment, please let us know why you are deactivating"
587
  msgstr ""
588
 
589
- #: includes/i18n.php:373
590
  msgid "Yes - Deactivate"
591
  msgstr ""
592
 
593
- #: includes/i18n.php:375
594
  msgid "Submit & Deactivate"
595
  msgstr ""
596
 
597
- #: includes/i18n.php:377
598
  msgid "Cancel"
599
  msgstr ""
600
 
601
- #: includes/i18n.php:379
602
  msgid "I no longer need the plugin"
603
  msgstr ""
604
 
605
- #: includes/i18n.php:381
606
  msgid "I found a better plugin"
607
  msgstr ""
608
 
609
- #: includes/i18n.php:383
610
  msgid "I only needed the plugin for a short period"
611
  msgstr ""
612
 
613
- #: includes/i18n.php:385
614
  msgid "The plugin broke my site"
615
  msgstr ""
616
 
617
- #: includes/i18n.php:387
618
  msgid "The plugin suddenly stopped working"
619
  msgstr ""
620
 
621
- #: includes/i18n.php:389
622
  msgid "I can't pay for it anymore"
623
  msgstr ""
624
 
625
- #: includes/i18n.php:391
626
  msgid "It's a temporary deactivation. I'm just debugging an issue."
627
  msgstr ""
628
 
629
- #: includes/i18n.php:395
630
  msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
631
  msgid "Other"
632
  msgstr ""
633
 
634
- #: includes/i18n.php:399
635
  msgid "Kindly tell us the reason so we can improve."
636
  msgstr ""
637
 
638
- #: includes/i18n.php:401
639
  msgid "What's the plugin's name?"
640
  msgstr ""
641
 
642
- #: includes/i18n.php:403
643
  msgid "What price would you feel comfortable paying?"
644
  msgstr ""
645
 
646
- #: includes/i18n.php:405
647
  msgid "I couldn't understand how to make it work"
648
  msgstr ""
649
 
650
- #: includes/i18n.php:407
651
  msgid "The plugin is great, but I need specific feature that you don't support"
652
  msgstr ""
653
 
654
- #: includes/i18n.php:411
655
  msgid "The plugin is not working"
656
  msgstr ""
657
 
658
- #: includes/i18n.php:413
659
  msgid "It's not what I was looking for"
660
  msgstr ""
661
 
662
- #: includes/i18n.php:415
663
  msgid "The plugin didn't work as expected"
664
  msgstr ""
665
 
666
- #: includes/i18n.php:417
667
  msgid "What feature?"
668
  msgstr ""
669
 
670
- #: includes/i18n.php:419
671
  msgid "Kindly share what didn't work so we can fix it for future users..."
672
  msgstr ""
673
 
674
- #: includes/i18n.php:423
675
  msgid "What you've been looking for?"
676
  msgstr ""
677
 
678
- #: includes/i18n.php:425
679
  msgid "What did you expect?"
680
  msgstr ""
681
 
682
- #: includes/i18n.php:427
683
  msgid "The plugin didn't work"
684
  msgstr ""
685
 
686
- #: includes/i18n.php:429
687
  msgid "I don't like to share my information with you"
688
  msgstr ""
689
 
690
- #: includes/i18n.php:431
691
  msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
692
  msgstr ""
693
 
694
- #: includes/i18n.php:441
695
  msgctxt "greeting"
696
  msgid "Hey %s,"
697
  msgstr ""
698
 
699
- #: includes/i18n.php:443
700
  msgctxt "a greeting. E.g. Thanks John!"
701
  msgid "Thanks %s!"
702
  msgstr ""
703
 
704
- #: includes/i18n.php:445
705
  msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
706
  msgstr ""
707
 
708
- #: includes/i18n.php:449
709
  msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
710
  msgstr ""
711
 
712
- #: includes/i18n.php:453
713
  msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
714
  msgstr ""
715
 
716
- #: includes/i18n.php:455
717
  msgid "complete the install"
718
  msgstr ""
719
 
720
- #: includes/i18n.php:457
721
  msgid "start the trial"
722
  msgstr ""
723
 
724
- #: includes/i18n.php:459
725
  msgid "Thanks for purchasing %s! To get started, please enter your license key:"
726
  msgstr ""
727
 
728
- #: includes/i18n.php:463
729
  msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
730
  msgstr ""
731
 
732
- #: includes/i18n.php:467
733
  msgid "What permissions are being granted?"
734
  msgstr ""
735
 
736
- #: includes/i18n.php:469
737
  msgid "Your Profile Overview"
738
  msgstr ""
739
 
740
- #: includes/i18n.php:471
741
  msgid "Name and email address"
742
  msgstr ""
743
 
744
- #: includes/i18n.php:473
745
  msgid "Your Site Overview"
746
  msgstr ""
747
 
748
- #: includes/i18n.php:475
749
  msgid "Site URL, WP version, PHP info, plugins & themes"
750
  msgstr ""
751
 
752
- #: includes/i18n.php:479
753
  msgid "Current Plugin Events"
754
  msgstr ""
755
 
756
- #: includes/i18n.php:481
757
  msgid "Activation, deactivation and uninstall"
758
  msgstr ""
759
 
760
- #: includes/i18n.php:483
761
  msgid "Plugins & Themes"
762
  msgstr ""
763
 
764
- #: includes/i18n.php:485
765
  msgid "Titles, versions and state."
766
  msgstr ""
767
 
768
- #: includes/i18n.php:487
769
  msgid "Admin Notices"
770
  msgstr ""
771
 
772
- #: includes/i18n.php:489
773
  msgid "Newsletter"
774
  msgstr ""
775
 
776
- #: includes/i18n.php:491
777
  msgid "Updates, announcements, marketing, no spam"
778
  msgstr ""
779
 
780
- #: includes/i18n.php:493
781
  msgid "Privacy Policy"
782
  msgstr ""
783
 
784
- #: includes/i18n.php:495
785
  msgid "Terms of Service"
786
  msgstr ""
787
 
788
- #: includes/i18n.php:497
789
  msgctxt "as activating plugin"
790
  msgid "Activating"
791
  msgstr ""
792
 
793
- #: includes/i18n.php:499
794
  msgctxt "as in the process of sending an email"
795
  msgid "Sending email"
796
  msgstr ""
797
 
798
- #: includes/i18n.php:503
799
  msgctxt "button label"
800
  msgid "Allow & Continue"
801
  msgstr ""
802
 
803
- #: includes/i18n.php:505
804
  msgctxt "button label"
805
  msgid "Agree & Activate License"
806
  msgstr ""
807
 
808
- #: includes/i18n.php:507
809
  msgctxt "verb"
810
  msgid "Skip"
811
  msgstr ""
812
 
813
- #: includes/i18n.php:509
814
  msgid "Click here to use the plugin anonymously"
815
  msgstr ""
816
 
817
- #: includes/i18n.php:511
818
  msgid "Re-send activation email"
819
  msgstr ""
820
 
821
- #: includes/i18n.php:513
822
  msgid "License key"
823
  msgstr ""
824
 
825
- #: includes/i18n.php:515
826
  msgid "Send License Key"
827
  msgstr ""
828
 
829
- #: includes/i18n.php:517
830
  msgid "Sending license key"
831
  msgstr ""
832
 
833
- #: includes/i18n.php:519
834
  msgid "Have a license key?"
835
  msgstr ""
836
 
837
- #: includes/i18n.php:521
838
  msgid "Don't have a license key?"
839
  msgstr ""
840
 
841
- #: includes/i18n.php:523
842
  msgid "Can't find your license key?"
843
  msgstr ""
844
 
845
- #: includes/i18n.php:525
846
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
847
  msgstr ""
848
 
849
- #: includes/i18n.php:529
850
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
851
  msgstr ""
852
 
853
- #: includes/i18n.php:533
854
  msgid "Opt In"
855
  msgstr ""
856
 
857
- #: includes/i18n.php:535
858
  msgid "Opt Out"
859
  msgstr ""
860
 
861
- #: includes/i18n.php:537
862
  msgid "On second thought - I want to continue helping"
863
  msgstr ""
864
 
865
- #: includes/i18n.php:541
866
  msgid "Opting out..."
867
  msgstr ""
868
 
869
- #: includes/i18n.php:543
870
  msgid "Opting in..."
871
  msgstr ""
872
 
873
- #: includes/i18n.php:545
874
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
875
  msgstr ""
876
 
877
- #: includes/i18n.php:549
878
  msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
879
  msgstr ""
880
 
881
- #: includes/i18n.php:553
882
  msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
883
  msgstr ""
884
 
885
- #: includes/i18n.php:563
886
  msgid "Screenshots"
887
  msgstr ""
888
 
889
- #: includes/i18n.php:565
890
  msgid "Click to view full-size screenshot %d"
891
  msgstr ""
892
 
893
- #: includes/i18n.php:573
894
  msgid "Freemius Debug"
895
  msgstr ""
896
 
897
- #: includes/i18n.php:575
898
  msgctxt "as turned on"
899
  msgid "On"
900
  msgstr ""
901
 
902
- #: includes/i18n.php:577
903
  msgctxt "as turned off"
904
  msgid "Off"
905
  msgstr ""
906
 
907
- #: includes/i18n.php:579
908
  msgctxt "as code debugging"
909
  msgid "Debugging"
910
  msgstr ""
911
 
912
- #: includes/i18n.php:581
913
  msgid "Freemius State"
914
  msgstr ""
915
 
916
- #: includes/i18n.php:583
917
  msgctxt "as connection was successful"
918
  msgid "Connected"
919
  msgstr ""
920
 
921
- #: includes/i18n.php:585
922
  msgctxt "as connection blocked"
923
  msgid "Blocked"
924
  msgstr ""
925
 
926
- #: includes/i18n.php:587
927
  msgctxt "as application program interface"
928
  msgid "API"
929
  msgstr ""
930
 
931
- #: includes/i18n.php:589
932
  msgctxt "as software development kit versions"
933
  msgid "SDK"
934
  msgstr ""
935
 
936
- #: includes/i18n.php:591
937
  msgctxt "as software development kit versions"
938
  msgid "SDK Versions"
939
  msgstr ""
940
 
941
- #: includes/i18n.php:595
942
  msgctxt "as plugin folder path"
943
  msgid "Plugin Path"
944
  msgstr ""
945
 
946
- #: includes/i18n.php:597
947
  msgctxt "as sdk path"
948
  msgid "SDK Path"
949
  msgstr ""
950
 
951
- #: includes/i18n.php:599
952
  msgid "Add Ons of Plugin %s"
953
  msgstr ""
954
 
955
- #: includes/i18n.php:601
956
  msgid "Are you sure you want to delete all Freemius data?"
957
  msgstr ""
958
 
959
- #: includes/i18n.php:605
960
  msgid "Actions"
961
  msgstr ""
962
 
963
- #: includes/i18n.php:607
964
  msgid "Delete All Accounts"
965
  msgstr ""
966
 
967
- #: includes/i18n.php:609
968
  msgid "Start Fresh"
969
  msgstr ""
970
 
971
- #: includes/i18n.php:611
972
  msgid "Clear API Cache"
973
  msgstr ""
974
 
975
- #: includes/i18n.php:613
976
  msgid "Sync Data From Server"
977
  msgstr ""
978
 
979
- #: includes/i18n.php:615
980
  msgid "Scheduled Crons"
981
  msgstr ""
982
 
983
- #: includes/i18n.php:617
 
 
 
 
984
  msgid "Plugins & Themes Sync"
985
  msgstr ""
986
 
987
- #: includes/i18n.php:625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
988
  msgctxt "as congratulations"
989
  msgid "Congrats"
990
  msgstr ""
991
 
992
- #: includes/i18n.php:627
993
  msgctxt "exclamation"
994
  msgid "Oops"
995
  msgstr ""
996
 
997
- #: includes/i18n.php:629
998
  msgctxt "interjection expressing joy or exuberance"
999
  msgid "Yee-haw"
1000
  msgstr ""
1001
 
1002
- #: includes/i18n.php:633
1003
  msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1004
  msgid "W00t"
1005
  msgstr ""
1006
 
1007
- #: includes/i18n.php:637
1008
  msgctxt "a positive response"
1009
  msgid "Right on"
1010
  msgstr ""
1011
 
1012
- #: includes/i18n.php:639
1013
  msgctxt "something somebody says when they are thinking about what you have just said. "
1014
  msgid "Hmm"
1015
  msgstr ""
1016
 
1017
- #: includes/i18n.php:643
1018
  msgid "O.K"
1019
  msgstr ""
1020
 
1021
- #: includes/i18n.php:645
1022
  msgctxt "exclamation"
1023
  msgid "Hey"
1024
  msgstr ""
1025
 
1026
- #: includes/i18n.php:647
1027
  msgctxt "advance notice of something that will need attention."
1028
  msgid "Heads up"
1029
  msgstr ""
1030
 
1031
- #: includes/i18n.php:657
1032
  msgid "Seems like you got the latest release."
1033
  msgstr ""
1034
 
1035
- #: includes/i18n.php:659
1036
  msgid "You are all good!"
1037
  msgstr ""
1038
 
1039
- #: includes/i18n.php:661
1040
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1041
  msgstr ""
1042
 
1043
- #: includes/i18n.php:665
1044
  msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1045
  msgstr ""
1046
 
1047
- #: includes/i18n.php:669
1048
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1049
  msgstr ""
1050
 
1051
- #: includes/i18n.php:673
1052
  msgid "Your name was successfully updated."
1053
  msgstr ""
1054
 
1055
- #: includes/i18n.php:675
1056
  msgid "You have successfully updated your %s."
1057
  msgstr ""
1058
 
1059
- #: includes/i18n.php:677
1060
  msgid "Please provide your full name."
1061
  msgstr ""
1062
 
1063
- #: includes/i18n.php:679
1064
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1065
  msgstr ""
1066
 
1067
- #: includes/i18n.php:683
1068
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1069
  msgstr ""
1070
 
1071
- #: includes/i18n.php:687
1072
  msgid "No credit card required"
1073
  msgstr ""
1074
 
1075
- #: includes/i18n.php:689
1076
  msgid "Premium plugin version was successfully activated."
1077
  msgstr ""
1078
 
1079
- #: includes/i18n.php:693
1080
  msgid "The upgrade of %s was successfully completed."
1081
  msgstr ""
1082
 
1083
- #: includes/i18n.php:695
1084
  msgid "Your account was successfully activated with the %s plan."
1085
  msgstr ""
1086
 
1087
- #: includes/i18n.php:699
1088
  msgid "Download the latest %s version now"
1089
  msgstr ""
1090
 
1091
- #: includes/i18n.php:701
1092
  msgid "Please follow these steps to complete the upgrade"
1093
  msgstr ""
1094
 
1095
- #: includes/i18n.php:705
1096
  msgid "Download the latest %s version"
1097
  msgstr ""
1098
 
1099
- #: includes/i18n.php:707
1100
  msgid "Download the latest version"
1101
  msgstr ""
1102
 
1103
- #: includes/i18n.php:709
1104
  msgid "Deactivate the free version"
1105
  msgstr ""
1106
 
1107
- #: includes/i18n.php:711
1108
  msgid "Upload and activate the downloaded version"
1109
  msgstr ""
1110
 
1111
- #: includes/i18n.php:713
1112
  msgid "How to upload and activate?"
1113
  msgstr ""
1114
 
1115
- #: includes/i18n.php:715
1116
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1117
  msgid "%s Add-on was successfully purchased."
1118
  msgstr ""
1119
 
1120
- #: includes/i18n.php:719
1121
  msgid "Your %s Add-on plan was successfully upgraded."
1122
  msgstr ""
1123
 
1124
- #: includes/i18n.php:723
1125
  msgid "Your email has been successfully verified - you are AWESOME!"
1126
  msgstr ""
1127
 
1128
- #: includes/i18n.php:727
1129
  msgid "Your plan was successfully upgraded."
1130
  msgstr ""
1131
 
1132
- #: includes/i18n.php:729
1133
  msgid "Your plan was successfully changed to %s."
1134
  msgstr ""
1135
 
1136
- #: includes/i18n.php:731
1137
  msgid "Your license has expired. You can still continue using the free plugin forever."
1138
  msgstr ""
1139
 
1140
- #: includes/i18n.php:735
1141
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1142
  msgstr ""
1143
 
1144
- #: includes/i18n.php:739
1145
  msgid "Your trial has been successfully started."
1146
  msgstr ""
1147
 
1148
- #: includes/i18n.php:741
1149
  msgid "Your license was successfully activated."
1150
  msgstr ""
1151
 
1152
- #: includes/i18n.php:743
1153
  msgid "It looks like your site currently doesn't have an active license."
1154
  msgstr ""
1155
 
1156
- #: includes/i18n.php:747
1157
  msgid "Your license was successfully deactivated, you are back to the %s plan."
1158
  msgstr ""
1159
 
1160
- #: includes/i18n.php:751
1161
  msgid "It looks like the license deactivation failed."
1162
  msgstr ""
1163
 
1164
- #: includes/i18n.php:755
1165
  msgid "It looks like the license could not be activated."
1166
  msgstr ""
1167
 
1168
- #: includes/i18n.php:759
1169
  msgid "Error received from the server:"
1170
  msgstr ""
1171
 
1172
- #: includes/i18n.php:761
1173
  msgid "Your trial has expired. You can still continue using all our free features."
1174
  msgstr ""
1175
 
1176
- #: includes/i18n.php:765
1177
  msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1178
  msgstr ""
1179
 
1180
- #: includes/i18n.php:769
1181
  msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1182
  msgstr ""
1183
 
1184
- #: includes/i18n.php:773
1185
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1186
  msgstr ""
1187
 
1188
- #: includes/i18n.php:777
1189
  msgid "Your %s free trial was successfully cancelled."
1190
  msgstr ""
1191
 
1192
- #: includes/i18n.php:781
1193
  msgctxt "%s - numeric version number"
1194
  msgid "Version %s was released."
1195
  msgstr ""
1196
 
1197
- #: includes/i18n.php:785
1198
  msgid "Please download %s."
1199
  msgstr ""
1200
 
1201
- #: includes/i18n.php:787
1202
  msgctxt "%s - plan name, as the latest professional version here"
1203
  msgid "the latest %s version here"
1204
  msgstr ""
1205
 
1206
- #: includes/i18n.php:791
1207
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1208
  msgstr ""
1209
 
1210
- #: includes/i18n.php:795
1211
  msgctxt "call to action"
1212
  msgid "Start free trial"
1213
  msgstr ""
1214
 
1215
- #: includes/i18n.php:797
1216
  msgid "Starting trial"
1217
  msgstr ""
1218
 
1219
- #: includes/i18n.php:799
1220
  msgid "Please wait"
1221
  msgstr ""
1222
 
1223
- #: includes/i18n.php:801
1224
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1225
  msgstr ""
1226
 
1227
- #: includes/i18n.php:805
1228
  msgid "You already utilized a trial before."
1229
  msgstr ""
1230
 
1231
- #: includes/i18n.php:807
1232
  msgid "You are already running the plugin in a trial mode."
1233
  msgstr ""
1234
 
1235
- #: includes/i18n.php:811
1236
  msgid "Plan %s do not exist, therefore, can't start a trial."
1237
  msgstr ""
1238
 
1239
- #: includes/i18n.php:815
1240
  msgid "Plan %s does not support a trial period."
1241
  msgstr ""
1242
 
1243
- #: includes/i18n.php:817
1244
  msgid "None of the plugin's plans supports a trial period."
1245
  msgstr ""
1246
 
1247
- #: includes/i18n.php:821
1248
  msgid "Unexpected API error. Please contact the plugin's author with the following error."
1249
  msgstr ""
1250
 
1251
- #: includes/i18n.php:825
1252
  msgid "No commitment for %s days - cancel anytime!"
1253
  msgstr ""
1254
 
1255
- #: includes/i18n.php:827
1256
  msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
1257
  msgstr ""
1258
 
1259
- #: includes/i18n.php:831
1260
  msgid "Couldn't activate %s."
1261
  msgstr ""
1262
 
1263
- #: includes/i18n.php:833
1264
  msgid "Please contact us with the following message:"
1265
  msgstr ""
1266
 
1267
- #: includes/i18n.php:835
1268
  msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
1269
  msgstr ""
1270
 
1271
- #: includes/i18n.php:839
1272
  msgid "Please contact us here"
1273
  msgstr ""
1274
 
1275
- #: includes/i18n.php:841
1276
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1277
  msgstr ""
1278
 
1279
- #: includes/i18n.php:849
1280
  msgid "From unknown reason, the API connectivity test failed."
1281
  msgstr ""
1282
 
1283
- #: includes/i18n.php:853
1284
  msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1285
  msgstr ""
1286
 
1287
- #: includes/i18n.php:857
1288
  msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
1289
  msgstr ""
1290
 
1291
- #: includes/i18n.php:861
1292
  msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1293
  msgstr ""
1294
 
1295
- #: includes/i18n.php:865
1296
  msgctxt "as pluginX requires an access to our API"
1297
  msgid "%s requires an access to our API."
1298
  msgstr ""
1299
 
1300
- #: includes/i18n.php:869
1301
  msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1302
  msgstr ""
1303
 
1304
- #: includes/i18n.php:873
1305
  msgid "I don't know what is Squid or ACL, help me!"
1306
  msgstr ""
1307
 
1308
- #: includes/i18n.php:875, includes/i18n.php:889
1309
  msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
1310
  msgstr ""
1311
 
1312
- #: includes/i18n.php:879
1313
  msgid "I'm a system administrator"
1314
  msgstr ""
1315
 
1316
- #: includes/i18n.php:881
1317
- msgid "Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again."
1318
  msgstr ""
1319
 
1320
- #: includes/i18n.php:885
1321
  msgid "I don't know what is cURL or how to install it, help me!"
1322
  msgstr ""
1323
 
1324
- #: includes/i18n.php:893
1325
  msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
1326
  msgstr ""
1327
 
1328
- #: includes/i18n.php:897
1329
  msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1330
  msgstr ""
1331
 
1332
- #: includes/i18n.php:901
1333
  msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1334
  msgstr ""
1335
 
1336
- #: includes/i18n.php:905
1337
  msgid "Yes - I'm giving you a chance to fix it"
1338
  msgstr ""
1339
 
1340
- #: includes/i18n.php:907
1341
  msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1342
  msgstr ""
1343
 
1344
- #: includes/i18n.php:911
1345
  msgid "Let's try your previous version"
1346
  msgstr ""
1347
 
1348
- #: includes/i18n.php:913
1349
  msgid "Uninstall this version and install the previous one."
1350
  msgstr ""
1351
 
1352
- #: includes/i18n.php:917
1353
  msgid "That's exhausting, please deactivate"
1354
  msgstr ""
1355
 
1356
- #: includes/i18n.php:919
1357
  msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1358
  msgstr ""
1359
 
1360
- #: includes/i18n.php:923
1361
  msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
1362
  msgstr ""
1363
 
1364
- #: includes/i18n.php:927
1365
  msgctxt "%1s - plugin title, %2s - API domain"
1366
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1367
  msgstr ""
1368
 
1369
- #: includes/i18n.php:931
1370
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1371
  msgstr ""
1372
 
1373
- #: includes/i18n.php:939
1374
  msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
1375
  msgstr ""
1376
 
1377
- #: includes/i18n.php:943
1378
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1379
  msgstr ""
1380
 
1381
- #: includes/i18n.php:947
1382
  msgid "%s is the new owner of the account."
1383
  msgstr ""
1384
 
1385
- #: includes/i18n.php:951
1386
  msgctxt "addonX cannot run without pluginY"
1387
  msgid "%s cannot run without %s."
1388
  msgstr ""
1389
 
1390
- #: includes/i18n.php:955
1391
  msgctxt "addonX cannot run..."
1392
  msgid "%s cannot run without the plugin."
1393
  msgstr ""
1394
 
1395
- #: includes/i18n.php:959
1396
  msgctxt "pluginX activation was successfully..."
1397
  msgid "%s activation was successfully completed."
1398
  msgstr ""
1399
 
1400
- #: includes/i18n.php:963
1401
  msgctxt "Plugin installer section title"
1402
  msgid "Features & Pricing"
1403
  msgstr ""
1404
 
1405
- #: includes/i18n.php:967
1406
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1407
  msgstr ""
1408
 
1409
- #: includes/i18n.php:971
1410
  msgid "Paid add-on must be deployed to Freemius."
1411
  msgstr ""
1412
 
1413
- #: includes/i18n.php:979
1414
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1415
  msgstr ""
1416
 
1417
- #: includes/i18n.php:983
1418
  msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
1419
  msgstr ""
1420
 
1421
- #: includes/i18n.php:995
1422
  msgctxt "as every month"
1423
  msgid "Monthly"
1424
  msgstr ""
1425
 
1426
- #: includes/i18n.php:997
1427
  msgctxt "as monthly period"
1428
  msgid "mo"
1429
  msgstr ""
1430
 
1431
- #: includes/i18n.php:999
1432
  msgctxt "as once a year"
1433
  msgid "Annual"
1434
  msgstr ""
1435
 
1436
- #: includes/i18n.php:1001
1437
  msgctxt "as once a year"
1438
  msgid "Annually"
1439
  msgstr ""
1440
 
1441
- #: includes/i18n.php:1003
1442
  msgctxt "as once a year"
1443
  msgid "Once"
1444
  msgstr ""
1445
 
1446
- #: includes/i18n.php:1005
1447
  msgctxt "as annual period"
1448
  msgid "year"
1449
  msgstr ""
1450
 
1451
- #: includes/i18n.php:1007
1452
  msgid "Lifetime"
1453
  msgstr ""
1454
 
1455
- #: includes/i18n.php:1009
1456
  msgctxt "e.g. the best product"
1457
  msgid "Best"
1458
  msgstr ""
1459
 
1460
- #: includes/i18n.php:1011
1461
  msgctxt "e.g. billed monthly"
1462
  msgid "Billed %s"
1463
  msgstr ""
1464
 
1465
- #: includes/i18n.php:1013
1466
  msgctxt "as a discount of $5 or 10%"
1467
  msgid "Save %s"
1468
  msgstr ""
1469
 
1470
- #: includes/i18n.php:1017
1471
  msgid "View details"
1472
  msgstr ""
1473
 
1474
- #: includes/i18n.php:1025
1475
  msgctxt "button label"
1476
  msgid "Approve & Start Trial"
1477
  msgstr ""
1478
 
1479
- #: includes/i18n.php:1029
1480
  msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1481
  msgstr ""
1482
 
1483
- #: includes/i18n.php:1033
1484
  msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
1485
  msgstr ""
1486
 
1487
- #: includes/i18n.php:1045
1488
  msgid "Business name"
1489
  msgstr ""
1490
 
1491
- #: includes/i18n.php:1047
1492
  msgid "Tax / VAT ID"
1493
  msgstr ""
1494
 
1495
- #: includes/i18n.php:1049
1496
  msgid "Address Line %d"
1497
  msgstr ""
1498
 
1499
- #: includes/i18n.php:1051
1500
  msgid "Country"
1501
  msgstr ""
1502
 
1503
- #: includes/i18n.php:1053
1504
  msgid "Select Country"
1505
  msgstr ""
1506
 
1507
- #: includes/i18n.php:1055
1508
  msgid "City"
1509
  msgstr ""
1510
 
1511
- #: includes/i18n.php:1057
1512
  msgid "Town"
1513
  msgstr ""
1514
 
1515
- #: includes/i18n.php:1059
1516
  msgid "State"
1517
  msgstr ""
1518
 
1519
- #: includes/i18n.php:1061
1520
  msgid "Province"
1521
  msgstr ""
1522
 
1523
- #: includes/i18n.php:1063
1524
  msgid "ZIP / Postal Code"
1525
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: freemius\n"
 
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
 
 
9
  "Language-Team: Freemius Team <admin@freemius.com>\n"
10
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
11
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
  "X-Poedit-Basepath: ..\n"
13
+ "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
 
14
  "X-Poedit-SearchPath-0: .\n"
15
  "X-Poedit-SearchPathExcluded-0: *.js\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 
 
18
 
19
+ #: includes/i18n.php:37
 
 
 
 
20
  msgid "Account"
21
  msgstr ""
22
 
23
+ #: includes/i18n.php:38
24
  msgid "Add On"
25
  msgstr ""
26
 
27
+ #: includes/i18n.php:39
28
  msgid "Contact Us"
29
  msgstr ""
30
 
31
+ #: includes/i18n.php:40
32
  msgid "Contact Support"
33
  msgstr ""
34
 
35
+ #: includes/i18n.php:41
36
  msgid "Change Ownership"
37
  msgstr ""
38
 
39
+ #: includes/i18n.php:42
40
  msgid "Support"
41
  msgstr ""
42
 
43
+ #: includes/i18n.php:43
44
  msgid "Support Forum"
45
  msgstr ""
46
 
47
+ #: includes/i18n.php:44
48
  msgid "Add Ons"
49
  msgstr ""
50
 
51
+ #: includes/i18n.php:45
52
  msgctxt "verb"
53
  msgid "Upgrade"
54
  msgstr ""
55
 
56
+ #: includes/i18n.php:46
57
  msgid "Awesome"
58
  msgstr ""
59
 
60
+ #: includes/i18n.php:47
61
  msgctxt "noun"
62
  msgid "Pricing"
63
  msgstr ""
64
 
65
+ #: includes/i18n.php:48
66
  msgctxt "noun"
67
  msgid "Price"
68
  msgstr ""
69
 
70
+ #: includes/i18n.php:49
71
  msgid "Unlimited Updates"
72
  msgstr ""
73
 
74
+ #: includes/i18n.php:50
75
  msgctxt "verb"
76
  msgid "Downgrade"
77
  msgstr ""
78
 
79
+ #: includes/i18n.php:51
80
  msgid "Cancel Trial"
81
  msgstr ""
82
 
83
+ #: includes/i18n.php:52
84
  msgid "Free Trial"
85
  msgstr ""
86
 
87
+ #: includes/i18n.php:53
88
  msgid "Start my free %s"
89
  msgstr ""
90
 
91
+ #: includes/i18n.php:54
92
  msgid "No commitment for %s - cancel anytime"
93
  msgstr ""
94
 
95
+ #: includes/i18n.php:55
96
  msgid "After your free %s, pay as little as %s"
97
  msgstr ""
98
 
99
+ #: includes/i18n.php:56
100
  msgid "Details"
101
  msgstr ""
102
 
103
+ #: includes/i18n.php:57
104
  msgid "Account Details"
105
  msgstr ""
106
 
107
+ #: includes/i18n.php:58
108
  msgctxt "verb"
109
  msgid "Delete"
110
  msgstr ""
111
 
112
+ #: includes/i18n.php:59
113
  msgctxt "verb"
114
  msgid "Show"
115
  msgstr ""
116
 
117
+ #: includes/i18n.php:60
118
  msgctxt "verb"
119
  msgid "Hide"
120
  msgstr ""
121
 
122
+ #: includes/i18n.php:61
123
  msgctxt "verb"
124
  msgid "Edit"
125
  msgstr ""
126
 
127
+ #: includes/i18n.php:62
128
  msgctxt "verb"
129
  msgid "Update"
130
  msgstr ""
131
 
132
+ #: includes/i18n.php:63
133
  msgid "Date"
134
  msgstr ""
135
 
136
+ #: includes/i18n.php:64
137
  msgid "Amount"
138
  msgstr ""
139
 
140
+ #: includes/i18n.php:65
141
  msgid "Invoice"
142
  msgstr ""
143
 
144
+ #: includes/i18n.php:66
145
  msgid "Billing"
146
  msgstr ""
147
 
148
+ #: includes/i18n.php:67
149
  msgid "Payments"
150
  msgstr ""
151
 
152
+ #: includes/i18n.php:68
153
  msgid "Delete Account"
154
  msgstr ""
155
 
156
+ #: includes/i18n.php:69
157
  msgctxt "as close a window"
158
  msgid "Dismiss"
159
  msgstr ""
160
 
161
+ #: includes/i18n.php:70
162
  msgctxt "as product pricing plan"
163
  msgid "Plan"
164
  msgstr ""
165
 
166
+ #: includes/i18n.php:71
167
  msgid "Change Plan"
168
  msgstr ""
169
 
170
+ #: includes/i18n.php:72
171
  msgctxt "as download professional version"
172
  msgid "Download %s Version"
173
  msgstr ""
174
 
175
+ #: includes/i18n.php:73
176
  msgctxt "as download professional version now"
177
  msgid "Download %s version now"
178
  msgstr ""
179
 
180
+ #: includes/i18n.php:74
181
  msgctxt "as download latest version"
182
  msgid "Download Latest"
183
  msgstr ""
184
 
185
+ #: includes/i18n.php:75
186
  msgctxt "E.g. you have a professional license."
187
  msgid "You have a %s license."
188
  msgstr ""
189
 
190
+ #: includes/i18n.php:76
191
  msgid "New"
192
  msgstr ""
193
 
194
+ #: includes/i18n.php:77
195
  msgid "Free"
196
  msgstr ""
197
 
198
+ #: includes/i18n.php:78
199
  msgctxt "as trial plan"
200
  msgid "Trial"
201
  msgstr ""
202
 
203
+ #: includes/i18n.php:79
204
  msgctxt "as starting a trial plan"
205
  msgid "Start Trial"
206
  msgstr ""
207
 
208
+ #: includes/i18n.php:80
209
  msgctxt "verb"
210
  msgid "Purchase"
211
  msgstr ""
212
 
213
+ #: includes/i18n.php:81
214
  msgid "Purchase License"
215
  msgstr ""
216
 
217
+ #: includes/i18n.php:82
218
  msgctxt "verb"
219
  msgid "Buy"
220
  msgstr ""
221
 
222
+ #: includes/i18n.php:83
223
  msgid "Buy License"
224
  msgstr ""
225
 
226
+ #: includes/i18n.php:84
227
  msgid "Single Site License"
228
  msgstr ""
229
 
230
+ #: includes/i18n.php:85
231
  msgid "Unlimited Licenses"
232
  msgstr ""
233
 
234
+ #: includes/i18n.php:86
235
  msgid "Up to %s Sites"
236
  msgstr ""
237
 
238
+ #: includes/i18n.php:87
239
  msgid "%sRenew your license now%s to access version %s features and support."
240
  msgstr ""
241
 
242
+ #: includes/i18n.php:88
243
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
244
  msgstr ""
245
 
246
+ #: includes/i18n.php:89
247
  msgctxt "e.g. Professional Plan"
248
  msgid "%s Plan"
249
  msgstr ""
250
 
251
+ #: includes/i18n.php:90
252
  msgid "You are just one step away - %s"
253
  msgstr ""
254
 
255
+ #: includes/i18n.php:91
256
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
257
  msgid "Complete \"%s\" Activation Now"
258
  msgstr ""
259
 
260
+ #: includes/i18n.php:93
261
  msgid "We made a few tweaks to the plugin, %s"
262
  msgstr ""
263
 
264
+ #: includes/i18n.php:94
265
  msgid "Opt-in to make \"%s\" Better!"
266
  msgstr ""
267
 
268
+ #: includes/i18n.php:95
269
  msgid "Error"
270
  msgstr ""
271
 
272
+ #: includes/i18n.php:96
273
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
274
  msgstr ""
275
 
276
+ #: includes/i18n.php:99
277
  msgctxt "as expiration date"
278
  msgid "Expiration"
279
  msgstr ""
280
 
281
+ #: includes/i18n.php:100
282
  msgctxt "as software license"
283
  msgid "License"
284
  msgstr ""
285
 
286
+ #: includes/i18n.php:101
287
  msgid "not verified"
288
  msgstr ""
289
 
290
+ #: includes/i18n.php:102
291
  msgid "Verify Email"
292
  msgstr ""
293
 
294
+ #: includes/i18n.php:103
295
  msgctxt "e.g. expires in 2 months"
296
  msgid "Expires in %s"
297
  msgstr ""
298
 
299
+ #: includes/i18n.php:104
300
  msgctxt "e.g. auto renews in 2 months"
301
  msgid "Auto renews in %s"
302
  msgstr ""
303
 
304
+ #: includes/i18n.php:105
305
  msgid "No expiration"
306
  msgstr ""
307
 
308
+ #: includes/i18n.php:106
309
  msgid "Expired"
310
  msgstr ""
311
 
312
+ #: includes/i18n.php:107
313
  msgid "Cancelled"
314
  msgstr ""
315
 
316
+ #: includes/i18n.php:108
317
  msgctxt "e.g. In 2 hours"
318
  msgid "In %s"
319
  msgstr ""
320
 
321
+ #: includes/i18n.php:109
322
  msgctxt "e.g. 2 min ago"
323
  msgid "%s ago"
324
  msgstr ""
325
 
326
+ #: includes/i18n.php:111
327
+ msgid "%s or higher"
328
+ msgstr ""
329
+
330
+ #: includes/i18n.php:112
331
  msgctxt "as plugin version"
332
  msgid "Version"
333
  msgstr ""
334
 
335
+ #: includes/i18n.php:113
336
  msgid "Name"
337
  msgstr ""
338
 
339
+ #: includes/i18n.php:114
340
  msgid "Email"
341
  msgstr ""
342
 
343
+ #: includes/i18n.php:115
344
  msgid "Email address"
345
  msgstr ""
346
 
347
+ #: includes/i18n.php:116
348
  msgid "Verified"
349
  msgstr ""
350
 
351
+ #: includes/i18n.php:117
352
+ msgid "Module"
353
+ msgstr ""
354
+
355
+ #: includes/i18n.php:118
356
+ msgid "Module Type"
357
+ msgstr ""
358
+
359
+ #: includes/i18n.php:119
360
  msgid "Plugin"
361
  msgstr ""
362
 
363
+ #: includes/i18n.php:120
364
  msgid "Plugins"
365
  msgstr ""
366
 
367
+ #: includes/i18n.php:121
368
+ msgid "Theme"
369
+ msgstr ""
370
+
371
+ #: includes/i18n.php:122
372
  msgid "Themes"
373
  msgstr ""
374
 
375
+ #: includes/i18n.php:123
376
  msgctxt "as file/folder path"
377
  msgid "Path"
378
  msgstr ""
379
 
380
+ #: includes/i18n.php:124
381
  msgid "Title"
382
  msgstr ""
383
 
384
+ #: includes/i18n.php:125
385
  msgid "Free version"
386
  msgstr ""
387
 
388
+ #: includes/i18n.php:126
389
  msgid "Premium version"
390
  msgstr ""
391
 
392
+ #: includes/i18n.php:127
393
  msgctxt "as WP plugin slug"
394
  msgid "Slug"
395
  msgstr ""
396
 
397
+ #: includes/i18n.php:128
398
  msgid "ID"
399
  msgstr ""
400
 
401
+ #: includes/i18n.php:129
402
  msgid "Users"
403
  msgstr ""
404
 
405
+ #: includes/i18n.php:130
406
  msgid "Plugin Installs"
407
  msgstr ""
408
 
409
+ #: includes/i18n.php:131
410
+ msgid "%s Installs"
411
+ msgstr ""
412
+
413
+ #: includes/i18n.php:132
414
  msgctxt "like websites"
415
  msgid "Sites"
416
  msgstr ""
417
 
418
+ #: includes/i18n.php:133
419
  msgid "User ID"
420
  msgstr ""
421
 
422
+ #: includes/i18n.php:134
423
  msgid "Site ID"
424
  msgstr ""
425
 
426
+ #: includes/i18n.php:135
427
  msgid "Public Key"
428
  msgstr ""
429
 
430
+ #: includes/i18n.php:136
431
  msgid "Secret Key"
432
  msgstr ""
433
 
434
+ #: includes/i18n.php:137
435
  msgctxt "as secret encryption key missing"
436
  msgid "No Secret"
437
  msgstr ""
438
 
439
+ #: includes/i18n.php:138
440
  msgid "No ID"
441
  msgstr ""
442
 
443
+ #: includes/i18n.php:139
444
  msgctxt "as synchronize license"
445
  msgid "Sync License"
446
  msgstr ""
447
 
448
+ #: includes/i18n.php:140
449
  msgctxt "as synchronize"
450
  msgid "Sync"
451
  msgstr ""
452
 
453
+ #: includes/i18n.php:141
454
  msgid "Activate License"
455
  msgstr ""
456
 
457
+ #: includes/i18n.php:142
458
  msgid "Activate Free Version"
459
  msgstr ""
460
 
461
+ #: includes/i18n.php:143
462
  msgid "Please enter the license key that you received in the email right after the purchase:"
463
  msgstr ""
464
 
465
+ #: includes/i18n.php:144
466
  msgid "Activating license..."
467
  msgstr ""
468
 
469
+ #: includes/i18n.php:145
470
  msgid "Change License"
471
  msgstr ""
472
 
473
+ #: includes/i18n.php:146
474
  msgid "Update License"
475
  msgstr ""
476
 
477
+ #: includes/i18n.php:147
478
  msgid "Deactivate License"
479
  msgstr ""
480
 
481
+ #: includes/i18n.php:148
482
  msgid "Activate"
483
  msgstr ""
484
 
485
+ #: includes/i18n.php:149
486
  msgid "Deactivate"
487
  msgstr ""
488
 
489
+ #: includes/i18n.php:150
490
  msgid "Skip & Deactivate"
491
  msgstr ""
492
 
493
+ #: includes/i18n.php:151
494
+ msgid "Skip & %s"
495
+ msgstr ""
496
+
497
+ #: includes/i18n.php:152
498
  msgid "No - just deactivate"
499
  msgstr ""
500
 
501
+ #: includes/i18n.php:153
502
  msgid "Yes - do your thing"
503
  msgstr ""
504
 
505
+ #: includes/i18n.php:154
506
  msgctxt "active mode"
507
  msgid "Active"
508
  msgstr ""
509
 
510
+ #: includes/i18n.php:155
511
  msgctxt "is active mode?"
512
  msgid "Is Active"
513
  msgstr ""
514
 
515
+ #: includes/i18n.php:156
516
  msgid "Install Now"
517
  msgstr ""
518
 
519
+ #: includes/i18n.php:157
520
  msgid "Install Update Now"
521
  msgstr ""
522
 
523
+ #: includes/i18n.php:158
524
  msgid "More information about %s"
525
  msgstr ""
526
 
527
+ #: includes/i18n.php:159
528
  msgid "Localhost"
529
  msgstr ""
530
 
531
+ #: includes/i18n.php:160
532
  msgctxt "as activate Professional plan"
533
  msgid "Activate %s Plan"
534
  msgstr ""
535
 
536
+ #: includes/i18n.php:161
537
  msgctxt "as 5 licenses left"
538
  msgid "%s left"
539
  msgstr ""
540
 
541
+ #: includes/i18n.php:162
542
  msgid "Last license"
543
  msgstr ""
544
 
545
+ #: includes/i18n.php:163
546
  msgid "What is your %s?"
547
  msgstr ""
548
 
549
+ #: includes/i18n.php:164
550
  msgid "Activate this add-on"
551
  msgstr ""
552
 
553
+ #: includes/i18n.php:165
554
  msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
555
  msgstr ""
556
 
557
+ #: includes/i18n.php:166
558
  msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
559
  msgstr ""
560
 
561
+ #: includes/i18n.php:167
562
  msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
563
  msgstr ""
564
 
565
+ #: includes/i18n.php:168
566
  msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
567
  msgstr ""
568
 
569
+ #: includes/i18n.php:169
570
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
571
  msgstr ""
572
 
573
+ #: includes/i18n.php:170
574
  msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
575
  msgstr ""
576
 
577
+ #: includes/i18n.php:171
578
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
579
  msgstr ""
580
 
581
+ #: includes/i18n.php:172
582
  msgid "Are you sure you want to proceed?"
583
  msgstr ""
584
 
585
+ #: includes/i18n.php:175
586
  msgid "Add Ons for %s"
587
  msgstr ""
588
 
589
+ #: includes/i18n.php:176
590
  msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
591
  msgstr ""
592
 
593
+ #: includes/i18n.php:178
594
  msgid "Anonymous feedback"
595
  msgstr ""
596
 
597
+ #: includes/i18n.php:179
598
  msgid "Quick feedback"
599
  msgstr ""
600
 
601
+ #: includes/i18n.php:180
602
  msgid "If you have a moment, please let us know why you are deactivating"
603
  msgstr ""
604
 
605
+ #: includes/i18n.php:181
606
  msgid "Yes - Deactivate"
607
  msgstr ""
608
 
609
+ #: includes/i18n.php:182
610
  msgid "Submit & Deactivate"
611
  msgstr ""
612
 
613
+ #: includes/i18n.php:183
614
  msgid "Cancel"
615
  msgstr ""
616
 
617
+ #: includes/i18n.php:184
618
  msgid "I no longer need the plugin"
619
  msgstr ""
620
 
621
+ #: includes/i18n.php:185
622
  msgid "I found a better plugin"
623
  msgstr ""
624
 
625
+ #: includes/i18n.php:186
626
  msgid "I only needed the plugin for a short period"
627
  msgstr ""
628
 
629
+ #: includes/i18n.php:187
630
  msgid "The plugin broke my site"
631
  msgstr ""
632
 
633
+ #: includes/i18n.php:188
634
  msgid "The plugin suddenly stopped working"
635
  msgstr ""
636
 
637
+ #: includes/i18n.php:189
638
  msgid "I can't pay for it anymore"
639
  msgstr ""
640
 
641
+ #: includes/i18n.php:190
642
  msgid "It's a temporary deactivation. I'm just debugging an issue."
643
  msgstr ""
644
 
645
+ #: includes/i18n.php:191
646
  msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
647
  msgid "Other"
648
  msgstr ""
649
 
650
+ #: includes/i18n.php:193
651
  msgid "Kindly tell us the reason so we can improve."
652
  msgstr ""
653
 
654
+ #: includes/i18n.php:194
655
  msgid "What's the plugin's name?"
656
  msgstr ""
657
 
658
+ #: includes/i18n.php:195
659
  msgid "What price would you feel comfortable paying?"
660
  msgstr ""
661
 
662
+ #: includes/i18n.php:196
663
  msgid "I couldn't understand how to make it work"
664
  msgstr ""
665
 
666
+ #: includes/i18n.php:197
667
  msgid "The plugin is great, but I need specific feature that you don't support"
668
  msgstr ""
669
 
670
+ #: includes/i18n.php:198
671
  msgid "The plugin is not working"
672
  msgstr ""
673
 
674
+ #: includes/i18n.php:199
675
  msgid "It's not what I was looking for"
676
  msgstr ""
677
 
678
+ #: includes/i18n.php:200
679
  msgid "The plugin didn't work as expected"
680
  msgstr ""
681
 
682
+ #: includes/i18n.php:201
683
  msgid "What feature?"
684
  msgstr ""
685
 
686
+ #: includes/i18n.php:202
687
  msgid "Kindly share what didn't work so we can fix it for future users..."
688
  msgstr ""
689
 
690
+ #: includes/i18n.php:203
691
  msgid "What you've been looking for?"
692
  msgstr ""
693
 
694
+ #: includes/i18n.php:204
695
  msgid "What did you expect?"
696
  msgstr ""
697
 
698
+ #: includes/i18n.php:205
699
  msgid "The plugin didn't work"
700
  msgstr ""
701
 
702
+ #: includes/i18n.php:206
703
  msgid "I don't like to share my information with you"
704
  msgstr ""
705
 
706
+ #: includes/i18n.php:207
707
  msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
708
  msgstr ""
709
 
710
+ #: includes/i18n.php:211
711
  msgctxt "greeting"
712
  msgid "Hey %s,"
713
  msgstr ""
714
 
715
+ #: includes/i18n.php:212
716
  msgctxt "a greeting. E.g. Thanks John!"
717
  msgid "Thanks %s!"
718
  msgstr ""
719
 
720
+ #: includes/i18n.php:213
721
  msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
722
  msgstr ""
723
 
724
+ #: includes/i18n.php:214
725
  msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
726
  msgstr ""
727
 
728
+ #: includes/i18n.php:215
729
  msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
730
  msgstr ""
731
 
732
+ #: includes/i18n.php:216
733
  msgid "complete the install"
734
  msgstr ""
735
 
736
+ #: includes/i18n.php:217
737
  msgid "start the trial"
738
  msgstr ""
739
 
740
+ #: includes/i18n.php:218
741
  msgid "Thanks for purchasing %s! To get started, please enter your license key:"
742
  msgstr ""
743
 
744
+ #: includes/i18n.php:219
745
  msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
746
  msgstr ""
747
 
748
+ #: includes/i18n.php:220
749
  msgid "What permissions are being granted?"
750
  msgstr ""
751
 
752
+ #: includes/i18n.php:221
753
  msgid "Your Profile Overview"
754
  msgstr ""
755
 
756
+ #: includes/i18n.php:222
757
  msgid "Name and email address"
758
  msgstr ""
759
 
760
+ #: includes/i18n.php:223
761
  msgid "Your Site Overview"
762
  msgstr ""
763
 
764
+ #: includes/i18n.php:224
765
  msgid "Site URL, WP version, PHP info, plugins & themes"
766
  msgstr ""
767
 
768
+ #: includes/i18n.php:225
769
  msgid "Current Plugin Events"
770
  msgstr ""
771
 
772
+ #: includes/i18n.php:226
773
  msgid "Activation, deactivation and uninstall"
774
  msgstr ""
775
 
776
+ #: includes/i18n.php:227
777
  msgid "Plugins & Themes"
778
  msgstr ""
779
 
780
+ #: includes/i18n.php:228
781
  msgid "Titles, versions and state."
782
  msgstr ""
783
 
784
+ #: includes/i18n.php:229
785
  msgid "Admin Notices"
786
  msgstr ""
787
 
788
+ #: includes/i18n.php:230
789
  msgid "Newsletter"
790
  msgstr ""
791
 
792
+ #: includes/i18n.php:231
793
  msgid "Updates, announcements, marketing, no spam"
794
  msgstr ""
795
 
796
+ #: includes/i18n.php:232
797
  msgid "Privacy Policy"
798
  msgstr ""
799
 
800
+ #: includes/i18n.php:233
801
  msgid "Terms of Service"
802
  msgstr ""
803
 
804
+ #: includes/i18n.php:234
805
  msgctxt "as activating plugin"
806
  msgid "Activating"
807
  msgstr ""
808
 
809
+ #: includes/i18n.php:235
810
  msgctxt "as in the process of sending an email"
811
  msgid "Sending email"
812
  msgstr ""
813
 
814
+ #: includes/i18n.php:236
815
  msgctxt "button label"
816
  msgid "Allow & Continue"
817
  msgstr ""
818
 
819
+ #: includes/i18n.php:237
820
  msgctxt "button label"
821
  msgid "Agree & Activate License"
822
  msgstr ""
823
 
824
+ #: includes/i18n.php:238
825
  msgctxt "verb"
826
  msgid "Skip"
827
  msgstr ""
828
 
829
+ #: includes/i18n.php:239
830
  msgid "Click here to use the plugin anonymously"
831
  msgstr ""
832
 
833
+ #: includes/i18n.php:240
834
  msgid "Re-send activation email"
835
  msgstr ""
836
 
837
+ #: includes/i18n.php:241
838
  msgid "License key"
839
  msgstr ""
840
 
841
+ #: includes/i18n.php:242
842
  msgid "Send License Key"
843
  msgstr ""
844
 
845
+ #: includes/i18n.php:243
846
  msgid "Sending license key"
847
  msgstr ""
848
 
849
+ #: includes/i18n.php:244
850
  msgid "Have a license key?"
851
  msgstr ""
852
 
853
+ #: includes/i18n.php:245
854
  msgid "Don't have a license key?"
855
  msgstr ""
856
 
857
+ #: includes/i18n.php:246
858
  msgid "Can't find your license key?"
859
  msgstr ""
860
 
861
+ #: includes/i18n.php:247
862
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
863
  msgstr ""
864
 
865
+ #: includes/i18n.php:248
866
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
867
  msgstr ""
868
 
869
+ #: includes/i18n.php:249
870
  msgid "Opt In"
871
  msgstr ""
872
 
873
+ #: includes/i18n.php:250
874
  msgid "Opt Out"
875
  msgstr ""
876
 
877
+ #: includes/i18n.php:251
878
  msgid "On second thought - I want to continue helping"
879
  msgstr ""
880
 
881
+ #: includes/i18n.php:252
882
  msgid "Opting out..."
883
  msgstr ""
884
 
885
+ #: includes/i18n.php:253
886
  msgid "Opting in..."
887
  msgstr ""
888
 
889
+ #: includes/i18n.php:254
890
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
891
  msgstr ""
892
 
893
+ #: includes/i18n.php:255
894
  msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
895
  msgstr ""
896
 
897
+ #: includes/i18n.php:256
898
  msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
899
  msgstr ""
900
 
901
+ #: includes/i18n.php:260
902
  msgid "Screenshots"
903
  msgstr ""
904
 
905
+ #: includes/i18n.php:261
906
  msgid "Click to view full-size screenshot %d"
907
  msgstr ""
908
 
909
+ #: includes/i18n.php:265
910
  msgid "Freemius Debug"
911
  msgstr ""
912
 
913
+ #: includes/i18n.php:266
914
  msgctxt "as turned on"
915
  msgid "On"
916
  msgstr ""
917
 
918
+ #: includes/i18n.php:267
919
  msgctxt "as turned off"
920
  msgid "Off"
921
  msgstr ""
922
 
923
+ #: includes/i18n.php:268
924
  msgctxt "as code debugging"
925
  msgid "Debugging"
926
  msgstr ""
927
 
928
+ #: includes/i18n.php:269
929
  msgid "Freemius State"
930
  msgstr ""
931
 
932
+ #: includes/i18n.php:270
933
  msgctxt "as connection was successful"
934
  msgid "Connected"
935
  msgstr ""
936
 
937
+ #: includes/i18n.php:271
938
  msgctxt "as connection blocked"
939
  msgid "Blocked"
940
  msgstr ""
941
 
942
+ #: includes/i18n.php:272
943
  msgctxt "as application program interface"
944
  msgid "API"
945
  msgstr ""
946
 
947
+ #: includes/i18n.php:273
948
  msgctxt "as software development kit versions"
949
  msgid "SDK"
950
  msgstr ""
951
 
952
+ #: includes/i18n.php:274
953
  msgctxt "as software development kit versions"
954
  msgid "SDK Versions"
955
  msgstr ""
956
 
957
+ #: includes/i18n.php:275
958
  msgctxt "as plugin folder path"
959
  msgid "Plugin Path"
960
  msgstr ""
961
 
962
+ #: includes/i18n.php:276
963
  msgctxt "as sdk path"
964
  msgid "SDK Path"
965
  msgstr ""
966
 
967
+ #: includes/i18n.php:277
968
  msgid "Add Ons of Plugin %s"
969
  msgstr ""
970
 
971
+ #: includes/i18n.php:278
972
  msgid "Are you sure you want to delete all Freemius data?"
973
  msgstr ""
974
 
975
+ #: includes/i18n.php:279
976
  msgid "Actions"
977
  msgstr ""
978
 
979
+ #: includes/i18n.php:280
980
  msgid "Delete All Accounts"
981
  msgstr ""
982
 
983
+ #: includes/i18n.php:281
984
  msgid "Start Fresh"
985
  msgstr ""
986
 
987
+ #: includes/i18n.php:282
988
  msgid "Clear API Cache"
989
  msgstr ""
990
 
991
+ #: includes/i18n.php:283
992
  msgid "Sync Data From Server"
993
  msgstr ""
994
 
995
+ #: includes/i18n.php:284
996
  msgid "Scheduled Crons"
997
  msgstr ""
998
 
999
+ #: includes/i18n.php:285
1000
+ msgid "Cron Type"
1001
+ msgstr ""
1002
+
1003
+ #: includes/i18n.php:286
1004
  msgid "Plugins & Themes Sync"
1005
  msgstr ""
1006
 
1007
+ #: includes/i18n.php:287
1008
+ msgid "Licenses"
1009
+ msgstr ""
1010
+
1011
+ #: includes/i18n.php:288
1012
+ msgid "Debug Log"
1013
+ msgstr ""
1014
+
1015
+ #: includes/i18n.php:289
1016
+ msgid "All"
1017
+ msgstr ""
1018
+
1019
+ #: includes/i18n.php:290
1020
+ msgid "File"
1021
+ msgstr ""
1022
+
1023
+ #: includes/i18n.php:291
1024
+ msgid "Function"
1025
+ msgstr ""
1026
+
1027
+ #: includes/i18n.php:292
1028
+ msgid "Process ID"
1029
+ msgstr ""
1030
+
1031
+ #: includes/i18n.php:293
1032
+ msgid "Logger"
1033
+ msgstr ""
1034
+
1035
+ #: includes/i18n.php:294
1036
+ msgid "Message"
1037
+ msgstr ""
1038
+
1039
+ #: includes/i18n.php:295
1040
+ msgid "Download"
1041
+ msgstr ""
1042
+
1043
+ #: includes/i18n.php:296
1044
+ msgid "Filter"
1045
+ msgstr ""
1046
+
1047
+ #: includes/i18n.php:297
1048
+ msgid "Type"
1049
+ msgstr ""
1050
+
1051
+ #: includes/i18n.php:298
1052
+ msgid "All Types"
1053
+ msgstr ""
1054
+
1055
+ #: includes/i18n.php:299
1056
+ msgid "All Requests"
1057
+ msgstr ""
1058
+
1059
+ #: includes/i18n.php:303
1060
  msgctxt "as congratulations"
1061
  msgid "Congrats"
1062
  msgstr ""
1063
 
1064
+ #: includes/i18n.php:304
1065
  msgctxt "exclamation"
1066
  msgid "Oops"
1067
  msgstr ""
1068
 
1069
+ #: includes/i18n.php:305
1070
  msgctxt "interjection expressing joy or exuberance"
1071
  msgid "Yee-haw"
1072
  msgstr ""
1073
 
1074
+ #: includes/i18n.php:306
1075
  msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1076
  msgid "W00t"
1077
  msgstr ""
1078
 
1079
+ #: includes/i18n.php:308
1080
  msgctxt "a positive response"
1081
  msgid "Right on"
1082
  msgstr ""
1083
 
1084
+ #: includes/i18n.php:309
1085
  msgctxt "something somebody says when they are thinking about what you have just said. "
1086
  msgid "Hmm"
1087
  msgstr ""
1088
 
1089
+ #: includes/i18n.php:311
1090
  msgid "O.K"
1091
  msgstr ""
1092
 
1093
+ #: includes/i18n.php:312
1094
  msgctxt "exclamation"
1095
  msgid "Hey"
1096
  msgstr ""
1097
 
1098
+ #: includes/i18n.php:313
1099
  msgctxt "advance notice of something that will need attention."
1100
  msgid "Heads up"
1101
  msgstr ""
1102
 
1103
+ #: includes/i18n.php:318
1104
  msgid "Seems like you got the latest release."
1105
  msgstr ""
1106
 
1107
+ #: includes/i18n.php:319
1108
  msgid "You are all good!"
1109
  msgstr ""
1110
 
1111
+ #: includes/i18n.php:320
1112
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1113
  msgstr ""
1114
 
1115
+ #: includes/i18n.php:321
1116
  msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1117
  msgstr ""
1118
 
1119
+ #: includes/i18n.php:322
1120
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1121
  msgstr ""
1122
 
1123
+ #: includes/i18n.php:323
1124
  msgid "Your name was successfully updated."
1125
  msgstr ""
1126
 
1127
+ #: includes/i18n.php:324
1128
  msgid "You have successfully updated your %s."
1129
  msgstr ""
1130
 
1131
+ #: includes/i18n.php:325
1132
  msgid "Please provide your full name."
1133
  msgstr ""
1134
 
1135
+ #: includes/i18n.php:326
1136
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1137
  msgstr ""
1138
 
1139
+ #: includes/i18n.php:327
1140
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1141
  msgstr ""
1142
 
1143
+ #: includes/i18n.php:328
1144
  msgid "No credit card required"
1145
  msgstr ""
1146
 
1147
+ #: includes/i18n.php:329
1148
  msgid "Premium plugin version was successfully activated."
1149
  msgstr ""
1150
 
1151
+ #: includes/i18n.php:330
1152
  msgid "The upgrade of %s was successfully completed."
1153
  msgstr ""
1154
 
1155
+ #: includes/i18n.php:331
1156
  msgid "Your account was successfully activated with the %s plan."
1157
  msgstr ""
1158
 
1159
+ #: includes/i18n.php:332
1160
  msgid "Download the latest %s version now"
1161
  msgstr ""
1162
 
1163
+ #: includes/i18n.php:333
1164
  msgid "Please follow these steps to complete the upgrade"
1165
  msgstr ""
1166
 
1167
+ #: includes/i18n.php:334
1168
  msgid "Download the latest %s version"
1169
  msgstr ""
1170
 
1171
+ #: includes/i18n.php:335
1172
  msgid "Download the latest version"
1173
  msgstr ""
1174
 
1175
+ #: includes/i18n.php:336
1176
  msgid "Deactivate the free version"
1177
  msgstr ""
1178
 
1179
+ #: includes/i18n.php:337
1180
  msgid "Upload and activate the downloaded version"
1181
  msgstr ""
1182
 
1183
+ #: includes/i18n.php:338
1184
  msgid "How to upload and activate?"
1185
  msgstr ""
1186
 
1187
+ #: includes/i18n.php:339
1188
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1189
  msgid "%s Add-on was successfully purchased."
1190
  msgstr ""
1191
 
1192
+ #: includes/i18n.php:341
1193
  msgid "Your %s Add-on plan was successfully upgraded."
1194
  msgstr ""
1195
 
1196
+ #: includes/i18n.php:342
1197
  msgid "Your email has been successfully verified - you are AWESOME!"
1198
  msgstr ""
1199
 
1200
+ #: includes/i18n.php:343
1201
  msgid "Your plan was successfully upgraded."
1202
  msgstr ""
1203
 
1204
+ #: includes/i18n.php:344
1205
  msgid "Your plan was successfully changed to %s."
1206
  msgstr ""
1207
 
1208
+ #: includes/i18n.php:345
1209
  msgid "Your license has expired. You can still continue using the free plugin forever."
1210
  msgstr ""
1211
 
1212
+ #: includes/i18n.php:346
1213
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1214
  msgstr ""
1215
 
1216
+ #: includes/i18n.php:347
1217
  msgid "Your trial has been successfully started."
1218
  msgstr ""
1219
 
1220
+ #: includes/i18n.php:348
1221
  msgid "Your license was successfully activated."
1222
  msgstr ""
1223
 
1224
+ #: includes/i18n.php:349
1225
  msgid "It looks like your site currently doesn't have an active license."
1226
  msgstr ""
1227
 
1228
+ #: includes/i18n.php:350
1229
  msgid "Your license was successfully deactivated, you are back to the %s plan."
1230
  msgstr ""
1231
 
1232
+ #: includes/i18n.php:351
1233
  msgid "It looks like the license deactivation failed."
1234
  msgstr ""
1235
 
1236
+ #: includes/i18n.php:352
1237
  msgid "It looks like the license could not be activated."
1238
  msgstr ""
1239
 
1240
+ #: includes/i18n.php:353
1241
  msgid "Error received from the server:"
1242
  msgstr ""
1243
 
1244
+ #: includes/i18n.php:354
1245
  msgid "Your trial has expired. You can still continue using all our free features."
1246
  msgstr ""
1247
 
1248
+ #: includes/i18n.php:355
1249
  msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1250
  msgstr ""
1251
 
1252
+ #: includes/i18n.php:356
1253
  msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1254
  msgstr ""
1255
 
1256
+ #: includes/i18n.php:357
1257
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1258
  msgstr ""
1259
 
1260
+ #: includes/i18n.php:358
1261
  msgid "Your %s free trial was successfully cancelled."
1262
  msgstr ""
1263
 
1264
+ #: includes/i18n.php:359
1265
  msgctxt "%s - numeric version number"
1266
  msgid "Version %s was released."
1267
  msgstr ""
1268
 
1269
+ #: includes/i18n.php:360
1270
  msgid "Please download %s."
1271
  msgstr ""
1272
 
1273
+ #: includes/i18n.php:361
1274
  msgctxt "%s - plan name, as the latest professional version here"
1275
  msgid "the latest %s version here"
1276
  msgstr ""
1277
 
1278
+ #: includes/i18n.php:363
1279
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1280
  msgstr ""
1281
 
1282
+ #: includes/i18n.php:364
1283
  msgctxt "call to action"
1284
  msgid "Start free trial"
1285
  msgstr ""
1286
 
1287
+ #: includes/i18n.php:365
1288
  msgid "Starting trial"
1289
  msgstr ""
1290
 
1291
+ #: includes/i18n.php:366
1292
  msgid "Please wait"
1293
  msgstr ""
1294
 
1295
+ #: includes/i18n.php:367
1296
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1297
  msgstr ""
1298
 
1299
+ #: includes/i18n.php:368
1300
  msgid "You already utilized a trial before."
1301
  msgstr ""
1302
 
1303
+ #: includes/i18n.php:369
1304
  msgid "You are already running the plugin in a trial mode."
1305
  msgstr ""
1306
 
1307
+ #: includes/i18n.php:370
1308
  msgid "Plan %s do not exist, therefore, can't start a trial."
1309
  msgstr ""
1310
 
1311
+ #: includes/i18n.php:371
1312
  msgid "Plan %s does not support a trial period."
1313
  msgstr ""
1314
 
1315
+ #: includes/i18n.php:372
1316
  msgid "None of the plugin's plans supports a trial period."
1317
  msgstr ""
1318
 
1319
+ #: includes/i18n.php:373
1320
  msgid "Unexpected API error. Please contact the plugin's author with the following error."
1321
  msgstr ""
1322
 
1323
+ #: includes/i18n.php:374
1324
  msgid "No commitment for %s days - cancel anytime!"
1325
  msgstr ""
1326
 
1327
+ #: includes/i18n.php:375
1328
  msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
1329
  msgstr ""
1330
 
1331
+ #: includes/i18n.php:376
1332
  msgid "Couldn't activate %s."
1333
  msgstr ""
1334
 
1335
+ #: includes/i18n.php:377
1336
  msgid "Please contact us with the following message:"
1337
  msgstr ""
1338
 
1339
+ #: includes/i18n.php:378
1340
  msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
1341
  msgstr ""
1342
 
1343
+ #: includes/i18n.php:379
1344
  msgid "Please contact us here"
1345
  msgstr ""
1346
 
1347
+ #: includes/i18n.php:380
1348
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1349
  msgstr ""
1350
 
1351
+ #: includes/i18n.php:383
1352
  msgid "From unknown reason, the API connectivity test failed."
1353
  msgstr ""
1354
 
1355
+ #: includes/i18n.php:384
1356
  msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1357
  msgstr ""
1358
 
1359
+ #: includes/i18n.php:385
1360
  msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
1361
  msgstr ""
1362
 
1363
+ #: includes/i18n.php:386
1364
  msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1365
  msgstr ""
1366
 
1367
+ #: includes/i18n.php:387
1368
  msgctxt "as pluginX requires an access to our API"
1369
  msgid "%s requires an access to our API."
1370
  msgstr ""
1371
 
1372
+ #: includes/i18n.php:389
1373
  msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1374
  msgstr ""
1375
 
1376
+ #: includes/i18n.php:390
1377
  msgid "I don't know what is Squid or ACL, help me!"
1378
  msgstr ""
1379
 
1380
+ #: includes/i18n.php:391, includes/i18n.php:395
1381
  msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
1382
  msgstr ""
1383
 
1384
+ #: includes/i18n.php:392
1385
  msgid "I'm a system administrator"
1386
  msgstr ""
1387
 
1388
+ #: includes/i18n.php:393
1389
+ msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1390
  msgstr ""
1391
 
1392
+ #: includes/i18n.php:394
1393
  msgid "I don't know what is cURL or how to install it, help me!"
1394
  msgstr ""
1395
 
1396
+ #: includes/i18n.php:396
1397
  msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
1398
  msgstr ""
1399
 
1400
+ #: includes/i18n.php:397
1401
  msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1402
  msgstr ""
1403
 
1404
+ #: includes/i18n.php:398
1405
  msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1406
  msgstr ""
1407
 
1408
+ #: includes/i18n.php:399
1409
  msgid "Yes - I'm giving you a chance to fix it"
1410
  msgstr ""
1411
 
1412
+ #: includes/i18n.php:400
1413
  msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1414
  msgstr ""
1415
 
1416
+ #: includes/i18n.php:401
1417
  msgid "Let's try your previous version"
1418
  msgstr ""
1419
 
1420
+ #: includes/i18n.php:402
1421
  msgid "Uninstall this version and install the previous one."
1422
  msgstr ""
1423
 
1424
+ #: includes/i18n.php:403
1425
  msgid "That's exhausting, please deactivate"
1426
  msgstr ""
1427
 
1428
+ #: includes/i18n.php:404
1429
  msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1430
  msgstr ""
1431
 
1432
+ #: includes/i18n.php:405
1433
  msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
1434
  msgstr ""
1435
 
1436
+ #: includes/i18n.php:406
1437
  msgctxt "%1s - plugin title, %2s - API domain"
1438
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1439
  msgstr ""
1440
 
1441
+ #: includes/i18n.php:408
1442
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1443
  msgstr ""
1444
 
1445
+ #: includes/i18n.php:411
1446
  msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
1447
  msgstr ""
1448
 
1449
+ #: includes/i18n.php:412
1450
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1451
  msgstr ""
1452
 
1453
+ #: includes/i18n.php:413
1454
  msgid "%s is the new owner of the account."
1455
  msgstr ""
1456
 
1457
+ #: includes/i18n.php:415
1458
  msgctxt "addonX cannot run without pluginY"
1459
  msgid "%s cannot run without %s."
1460
  msgstr ""
1461
 
1462
+ #: includes/i18n.php:417
1463
  msgctxt "addonX cannot run..."
1464
  msgid "%s cannot run without the plugin."
1465
  msgstr ""
1466
 
1467
+ #: includes/i18n.php:418
1468
  msgctxt "pluginX activation was successfully..."
1469
  msgid "%s activation was successfully completed."
1470
  msgstr ""
1471
 
1472
+ #: includes/i18n.php:420
1473
  msgctxt "Plugin installer section title"
1474
  msgid "Features & Pricing"
1475
  msgstr ""
1476
 
1477
+ #: includes/i18n.php:421
1478
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1479
  msgstr ""
1480
 
1481
+ #: includes/i18n.php:422
1482
  msgid "Paid add-on must be deployed to Freemius."
1483
  msgstr ""
1484
 
1485
+ #: includes/i18n.php:426
1486
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1487
  msgstr ""
1488
 
1489
+ #: includes/i18n.php:427
1490
  msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
1491
  msgstr ""
1492
 
1493
+ #: includes/i18n.php:432
1494
  msgctxt "as every month"
1495
  msgid "Monthly"
1496
  msgstr ""
1497
 
1498
+ #: includes/i18n.php:433
1499
  msgctxt "as monthly period"
1500
  msgid "mo"
1501
  msgstr ""
1502
 
1503
+ #: includes/i18n.php:434
1504
  msgctxt "as once a year"
1505
  msgid "Annual"
1506
  msgstr ""
1507
 
1508
+ #: includes/i18n.php:435
1509
  msgctxt "as once a year"
1510
  msgid "Annually"
1511
  msgstr ""
1512
 
1513
+ #: includes/i18n.php:436
1514
  msgctxt "as once a year"
1515
  msgid "Once"
1516
  msgstr ""
1517
 
1518
+ #: includes/i18n.php:437
1519
  msgctxt "as annual period"
1520
  msgid "year"
1521
  msgstr ""
1522
 
1523
+ #: includes/i18n.php:438
1524
  msgid "Lifetime"
1525
  msgstr ""
1526
 
1527
+ #: includes/i18n.php:439
1528
  msgctxt "e.g. the best product"
1529
  msgid "Best"
1530
  msgstr ""
1531
 
1532
+ #: includes/i18n.php:440
1533
  msgctxt "e.g. billed monthly"
1534
  msgid "Billed %s"
1535
  msgstr ""
1536
 
1537
+ #: includes/i18n.php:441
1538
  msgctxt "as a discount of $5 or 10%"
1539
  msgid "Save %s"
1540
  msgstr ""
1541
 
1542
+ #: includes/i18n.php:443
1543
  msgid "View details"
1544
  msgstr ""
1545
 
1546
+ #: includes/i18n.php:447
1547
  msgctxt "button label"
1548
  msgid "Approve & Start Trial"
1549
  msgstr ""
1550
 
1551
+ #: includes/i18n.php:449
1552
  msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1553
  msgstr ""
1554
 
1555
+ #: includes/i18n.php:451
1556
  msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
1557
  msgstr ""
1558
 
1559
+ #: includes/i18n.php:457
1560
  msgid "Business name"
1561
  msgstr ""
1562
 
1563
+ #: includes/i18n.php:458
1564
  msgid "Tax / VAT ID"
1565
  msgstr ""
1566
 
1567
+ #: includes/i18n.php:459
1568
  msgid "Address Line %d"
1569
  msgstr ""
1570
 
1571
+ #: includes/i18n.php:460
1572
  msgid "Country"
1573
  msgstr ""
1574
 
1575
+ #: includes/i18n.php:461
1576
  msgid "Select Country"
1577
  msgstr ""
1578
 
1579
+ #: includes/i18n.php:462
1580
  msgid "City"
1581
  msgstr ""
1582
 
1583
+ #: includes/i18n.php:463
1584
  msgid "Town"
1585
  msgstr ""
1586
 
1587
+ #: includes/i18n.php:464
1588
  msgid "State"
1589
  msgstr ""
1590
 
1591
+ #: includes/i18n.php:465
1592
  msgid "Province"
1593
  msgstr ""
1594
 
1595
+ #: includes/i18n.php:466
1596
  msgid "ZIP / Postal Code"
1597
  msgstr ""
1598
+
1599
+ #: includes/i18n.php:481
1600
+ msgctxt "Plugin installer section title"
1601
+ msgid "Description"
1602
+ msgstr ""
1603
+
1604
+ #: includes/i18n.php:482
1605
+ msgctxt "Plugin installer section title"
1606
+ msgid "Installation"
1607
+ msgstr ""
1608
+
1609
+ #: includes/i18n.php:483
1610
+ msgctxt "Plugin installer section title"
1611
+ msgid "FAQ"
1612
+ msgstr ""
1613
+
1614
+ #: includes/i18n.php:484
1615
+ msgctxt "Plugin installer section title"
1616
+ msgid "Changelog"
1617
+ msgstr ""
1618
+
1619
+ #: includes/i18n.php:485
1620
+ msgctxt "Plugin installer section title"
1621
+ msgid "Reviews"
1622
+ msgstr ""
1623
+
1624
+ #: includes/i18n.php:486
1625
+ msgctxt "Plugin installer section title"
1626
+ msgid "Other Notes"
1627
+ msgstr ""
1628
+
1629
+ #: includes/i18n.php:488
1630
+ msgid "%s star"
1631
+ msgstr ""
1632
+
1633
+ #: includes/i18n.php:490
1634
+ msgid "%s stars"
1635
+ msgstr ""
1636
+
1637
+ #: includes/i18n.php:492
1638
+ msgid "%s rating"
1639
+ msgstr ""
1640
+
1641
+ #: includes/i18n.php:494
1642
+ msgid "%s ratings"
1643
+ msgstr ""
1644
+
1645
+ #: includes/i18n.php:496
1646
+ msgid "%s time"
1647
+ msgstr ""
1648
+
1649
+ #: includes/i18n.php:498
1650
+ msgid "%s times"
1651
+ msgstr ""
1652
+
1653
+ #: includes/i18n.php:500
1654
+ msgid "Click to see reviews that provided a rating of %s"
1655
+ msgstr ""
1656
+
1657
+ #: includes/i18n.php:501
1658
+ msgid "Last Updated"
1659
+ msgstr ""
1660
+
1661
+ #: includes/i18n.php:502
1662
+ msgid "Requires WordPress Version:"
1663
+ msgstr ""
1664
+
1665
+ #: includes/i18n.php:503
1666
+ msgctxt "as the plugin author"
1667
+ msgid "Author:"
1668
+ msgstr ""
1669
+
1670
+ #: includes/i18n.php:504
1671
+ msgid "Compatible up to:"
1672
+ msgstr ""
1673
+
1674
+ #: includes/i18n.php:505
1675
+ msgid "Downloaded:"
1676
+ msgstr ""
1677
+
1678
+ #: includes/i18n.php:506
1679
+ msgid "WordPress.org Plugin Page"
1680
+ msgstr ""
1681
+
1682
+ #: includes/i18n.php:507
1683
+ msgid "Plugin Homepage"
1684
+ msgstr ""
1685
+
1686
+ #: includes/i18n.php:508
1687
+ msgid "Donate to this plugin"
1688
+ msgstr ""
1689
+
1690
+ #: includes/i18n.php:509
1691
+ msgid "Average Rating"
1692
+ msgstr ""
1693
+
1694
+ #: includes/i18n.php:510
1695
+ msgid "based on %s"
1696
+ msgstr ""
1697
+
1698
+ #: includes/i18n.php:511
1699
+ msgid "Warning:"
1700
+ msgstr ""
1701
+
1702
+ #: includes/i18n.php:512
1703
+ msgid "Contributors"
1704
+ msgstr ""
1705
+
1706
+ #: includes/i18n.php:513
1707
+ msgid "Plugin Install"
1708
+ msgstr ""
1709
+
1710
+ #: includes/i18n.php:514
1711
+ msgid "This plugin has not been tested with your current version of WordPress."
1712
+ msgstr ""
1713
+
1714
+ #: includes/i18n.php:515
1715
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1716
+ msgstr ""
1717
+
1718
+ #: includes/i18n.php:516
1719
+ msgid "Newer Version (%s) Installed"
1720
+ msgstr ""
1721
+
1722
+ #: includes/i18n.php:517
1723
+ msgid "Latest Version Installed"
1724
+ msgstr ""
includes/pum-sdk/freemius/languages/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/package.json CHANGED
@@ -9,7 +9,7 @@
9
  "gulp-pofill": "^1.0.0",
10
  "gulp-rename": "^1.2.2",
11
  "gulp-sort": "^2.0.0",
12
- "gulp-wp-pot": "^1.3.1"
13
  },
14
  "scripts": {
15
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -27,6 +27,6 @@
27
  "gulp-pofill": "^1.0.0",
28
  "gulp-rename": "^1.2.2",
29
  "gulp-sort": "^2.0.0",
30
- "gulp-wp-pot": "^1.3.1"
31
  }
32
  }
9
  "gulp-pofill": "^1.0.0",
10
  "gulp-rename": "^1.2.2",
11
  "gulp-sort": "^2.0.0",
12
+ "gulp-wp-pot": "^2.0.4"
13
  },
14
  "scripts": {
15
  "test": "echo \"Error: no test specified\" && exit 1"
27
  "gulp-pofill": "^1.0.0",
28
  "gulp-rename": "^1.2.2",
29
  "gulp-sort": "^2.0.0",
30
+ "gulp-wp-pot": "^2.0.4"
31
  }
32
  }
includes/pum-sdk/freemius/start.php CHANGED
@@ -1,308 +1,308 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
- * @since 1.0.3
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * Freemius SDK Version.
15
- *
16
- * @var string
17
- */
18
- $this_sdk_version = '1.2.1.5';
19
-
20
- #region SDK Selection Logic --------------------------------------------------------------------
21
-
22
- /**
23
- * Special logic added on 1.1.6 to make sure that every Freemius powered plugin
24
- * will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
25
- *
26
- * Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
27
- * plugins will run correctly.
28
- *
29
- * @since 1.1.6
30
- */
31
-
32
- global $fs_active_plugins;
33
-
34
- $this_sdk_relative_path = plugin_basename( dirname( __FILE__ ) );
35
-
36
- if ( ! isset( $fs_active_plugins ) ) {
37
- // Require SDK essentials.
38
- require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
39
-
40
- // Load all Freemius powered active plugins.
41
- $fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
42
-
43
- if ( ! isset( $fs_active_plugins->plugins ) ) {
44
- $fs_active_plugins->plugins = array();
45
- }
46
- }
47
-
48
- if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
49
- require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
50
- }
51
-
52
- // Update current SDK info based on the SDK path.
53
- if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
54
- $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
55
- ) {
56
- $fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
57
- 'version' => $this_sdk_version,
58
- 'timestamp' => time(),
59
- 'plugin_path' => plugin_basename( fs_find_direct_caller_plugin_file( __FILE__ ) ),
60
- );
61
- }
62
-
63
- $is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
64
-
65
- if ( ! isset( $fs_active_plugins->newest ) ) {
66
- /**
67
- * This will be executed only once, for the first time a Freemius powered plugin is activated.
68
- */
69
- fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
70
-
71
- $is_current_sdk_newest = true;
72
- } else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
73
- /**
74
- * Current SDK is newer than the newest stored SDK.
75
- */
76
- fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
77
-
78
- if ( class_exists( 'Freemius' ) ) {
79
- // Older SDK version was already loaded.
80
-
81
- if ( ! $fs_active_plugins->newest->in_activation ) {
82
- // Re-order plugins to load this plugin first.
83
- fs_newest_sdk_plugin_first();
84
- }
85
-
86
- // Refresh page.
87
- fs_redirect( $_SERVER['REQUEST_URI'] );
88
- }
89
- } else {
90
- if ( ! function_exists( 'get_plugins' ) ) {
91
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
92
- }
93
-
94
- $is_newest_sdk_plugin_activate = is_plugin_active( $fs_active_plugins->newest->plugin_path );
95
-
96
- if ( $is_current_sdk_newest &&
97
- ! $is_newest_sdk_plugin_activate &&
98
- ! $fs_active_plugins->newest->in_activation
99
- ) {
100
- // If current SDK is the newest and the plugin is NOT active, it means
101
- // that the current plugin in activation mode.
102
- $fs_active_plugins->newest->in_activation = true;
103
- update_option( 'fs_active_plugins', $fs_active_plugins );
104
- }
105
-
106
- $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) );
107
-
108
- if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
109
- // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
110
- unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
111
- }
112
-
113
- if ( ! ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) ||
114
- ! $is_newest_sdk_path_valid ||
115
- // Is newest SDK downgraded.
116
- ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
117
- version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
118
- ) {
119
- /**
120
- * Plugin with newest SDK is no longer active.
121
- * OR
122
- * The newest SDK was in the current plugin. BUT, seems like the version of
123
- * the SDK was downgraded to a lower SDK.
124
- */
125
- // Find the active plugin with the newest SDK version and update the newest reference.
126
- fs_fallback_to_newest_active_sdk();
127
- } else {
128
- if ( $is_newest_sdk_plugin_activate &&
129
- $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
130
- ( $fs_active_plugins->newest->in_activation ||
131
- ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
132
- )
133
-
134
- ) {
135
- if ( $fs_active_plugins->newest->in_activation ) {
136
- // Plugin no more in activation.
137
- $fs_active_plugins->newest->in_activation = false;
138
- update_option( 'fs_active_plugins', $fs_active_plugins );
139
- }
140
-
141
- // Reorder plugins to load plugin with newest SDK first.
142
- if ( fs_newest_sdk_plugin_first() ) {
143
- // Refresh page after re-order to make sure activated plugin loads newest SDK.
144
- if ( class_exists( 'Freemius' ) ) {
145
- fs_redirect( $_SERVER['REQUEST_URI'] );
146
- }
147
- }
148
- }
149
- }
150
- }
151
-
152
- if ( class_exists( 'Freemius' ) ) {
153
- // SDK was already loaded.
154
- return;
155
- }
156
-
157
- if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
158
- $newest_sdk_starter = fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs_active_plugins->newest->sdk_path . '/start.php' );
159
-
160
- if ( file_exists( $newest_sdk_starter ) ) {
161
- // Reorder plugins to load plugin with newest SDK first.
162
- fs_newest_sdk_plugin_first();
163
-
164
- // There's a newer SDK version, load it instead of the current one!
165
- require_once $newest_sdk_starter;
166
-
167
- return;
168
- }
169
- }
170
-
171
- #endregion SDK Selection Logic --------------------------------------------------------------------
172
-
173
- #region Hooks & Filters Collection --------------------------------------------------------------------
174
-
175
- /**
176
- * Freemius hooks (actions & filters) tags structure:
177
- *
178
- * fs_{filter/action_name}_{plugin_slug}
179
- *
180
- * --------------------------------------------------------
181
- *
182
- * Usage with WordPress' add_action() / add_filter():
183
- *
184
- * add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
185
- *
186
- * --------------------------------------------------------
187
- *
188
- * Usage with Freemius' instance add_action() / add_filter():
189
- *
190
- * // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
191
- * my_freemius()->add_action('{action_name}', $callable);
192
- *
193
- * --------------------------------------------------------
194
- *
195
- * Freemius filters collection:
196
- *
197
- * fs_connect_url_{plugin_slug}
198
- * fs_trial_promotion_message_{plugin_slug}
199
- * fs_is_long_term_user_{plugin_slug}
200
- * fs_uninstall_reasons_{plugin_slug}
201
- * fs_is_plugin_update_{plugin_slug}
202
- * fs_api_domains_{plugin_slug}
203
- * fs_email_template_sections_{plugin_slug}
204
- * fs_support_forum_submenu_{plugin_slug}
205
- * fs_support_forum_url_{plugin_slug}
206
- * fs_connect_message_{plugin_slug}
207
- * fs_connect_message_on_update_{plugin_slug}
208
- * fs_uninstall_confirmation_message_{plugin_slug}
209
- * fs_pending_activation_message_{plugin_slug}
210
- * fs_is_submenu_visible_{plugin_slug}
211
- * fs_plugin_icon_{plugin_slug}
212
- * fs_show_trial_{plugin_slug}
213
- *
214
- * --------------------------------------------------------
215
- *
216
- * Freemius actions collection:
217
- *
218
- * fs_after_license_loaded_{plugin_slug}
219
- * fs_after_license_change_{plugin_slug}
220
- * fs_after_plans_sync_{plugin_slug}
221
- *
222
- * fs_after_account_details_{plugin_slug}
223
- * fs_after_account_user_sync_{plugin_slug}
224
- * fs_after_account_plan_sync_{plugin_slug}
225
- * fs_before_account_load_{plugin_slug}
226
- * fs_after_account_connection_{plugin_slug}
227
- * fs_account_property_edit_{plugin_slug}
228
- * fs_account_email_verified_{plugin_slug}
229
- * fs_account_page_load_before_departure_{plugin_slug}
230
- * fs_before_account_delete_{plugin_slug}
231
- * fs_after_account_delete_{plugin_slug}
232
- *
233
- * fs_sdk_version_update_{plugin_slug}
234
- * fs_plugin_version_update_{plugin_slug}
235
- *
236
- * fs_initiated_{plugin_slug}
237
- * fs_after_init_plugin_registered_{plugin_slug}
238
- * fs_after_init_plugin_anonymous_{plugin_slug}
239
- * fs_after_init_plugin_pending_activations_{plugin_slug}
240
- * fs_after_init_addon_registered_{plugin_slug}
241
- * fs_after_init_addon_anonymous_{plugin_slug}
242
- * fs_after_init_addon_pending_activations_{plugin_slug}
243
- *
244
- * fs_after_premium_version_activation_{plugin_slug}
245
- * fs_after_free_version_reactivation_{plugin_slug}
246
- *
247
- * fs_after_uninstall_{plugin_slug}
248
- * fs_before_admin_menu_init_{plugin_slug}
249
- */
250
-
251
- #endregion Hooks & Filters Collection --------------------------------------------------------------------
252
-
253
- if ( ! class_exists( 'Freemius' ) ) {
254
-
255
- if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
256
- define( 'WP_FS__SDK_VERSION', $this_sdk_version );
257
- }
258
-
259
- // Load SDK files.
260
- require_once dirname( __FILE__ ) . '/require.php';
261
-
262
- /**
263
- * Quick shortcut to get Freemius for specified plugin.
264
- * Used by various templates.
265
- *
266
- * @param string $slug
267
- *
268
- * @return Freemius
269
- */
270
- function freemius( $slug ) {
271
- return Freemius::instance( $slug );
272
- }
273
-
274
- /**
275
- * @param string $slug
276
- * @param number $plugin_id
277
- * @param string $public_key
278
- * @param bool $is_live Is live or test plugin.
279
- * @param bool $is_premium Hints freemius if running the premium plugin or not.
280
- *
281
- * @return Freemius
282
- *
283
- * @deprecated Please use fs_dynamic_init().
284
- */
285
- function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
286
- $fs = Freemius::instance( $slug, true );
287
- $fs->init( $plugin_id, $public_key, $is_live, $is_premium );
288
-
289
- return $fs;
290
- }
291
-
292
- /**
293
- * @param array<string,string> $module Plugin or Theme details.
294
- *
295
- * @return Freemius
296
- * @throws Freemius_Exception
297
- */
298
- function fs_dynamic_init( $module ) {
299
- $fs = Freemius::instance( $module['slug'], true );
300
- $fs->dynamic_init( $module );
301
-
302
- return $fs;
303
- }
304
-
305
- function fs_dump_log() {
306
- FS_Logger::dump();
307
- }
308
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.0.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Freemius SDK Version.
15
+ *
16
+ * @var string
17
+ */
18
+ $this_sdk_version = '1.2.1.6';
19
+
20
+ #region SDK Selection Logic --------------------------------------------------------------------
21
+
22
+ /**
23
+ * Special logic added on 1.1.6 to make sure that every Freemius powered plugin
24
+ * will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
25
+ *
26
+ * Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
27
+ * plugins will run correctly.
28
+ *
29
+ * @since 1.1.6
30
+ */
31
+
32
+ global $fs_active_plugins;
33
+
34
+ $this_sdk_relative_path = plugin_basename( dirname( __FILE__ ) );
35
+
36
+ if ( ! isset( $fs_active_plugins ) ) {
37
+ // Require SDK essentials.
38
+ require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
39
+
40
+ // Load all Freemius powered active plugins.
41
+ $fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
42
+
43
+ if ( ! isset( $fs_active_plugins->plugins ) ) {
44
+ $fs_active_plugins->plugins = array();
45
+ }
46
+ }
47
+
48
+ if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
49
+ require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
50
+ }
51
+
52
+ // Update current SDK info based on the SDK path.
53
+ if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
54
+ $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
55
+ ) {
56
+ $fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
57
+ 'version' => $this_sdk_version,
58
+ 'timestamp' => time(),
59
+ 'plugin_path' => plugin_basename( fs_find_direct_caller_plugin_file( __FILE__ ) ),
60
+ );
61
+ }
62
+
63
+ $is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
64
+
65
+ if ( ! isset( $fs_active_plugins->newest ) ) {
66
+ /**
67
+ * This will be executed only once, for the first time a Freemius powered plugin is activated.
68
+ */
69
+ fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
70
+
71
+ $is_current_sdk_newest = true;
72
+ } else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
73
+ /**
74
+ * Current SDK is newer than the newest stored SDK.
75
+ */
76
+ fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
77
+
78
+ if ( class_exists( 'Freemius' ) ) {
79
+ // Older SDK version was already loaded.
80
+
81
+ if ( ! $fs_active_plugins->newest->in_activation ) {
82
+ // Re-order plugins to load this plugin first.
83
+ fs_newest_sdk_plugin_first();
84
+ }
85
+
86
+ // Refresh page.
87
+ fs_redirect( $_SERVER['REQUEST_URI'] );
88
+ }
89
+ } else {
90
+ if ( ! function_exists( 'get_plugins' ) ) {
91
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
92
+ }
93
+
94
+ $is_newest_sdk_plugin_activate = is_plugin_active( $fs_active_plugins->newest->plugin_path );
95
+
96
+ if ( $is_current_sdk_newest &&
97
+ ! $is_newest_sdk_plugin_activate &&
98
+ ! $fs_active_plugins->newest->in_activation
99
+ ) {
100
+ // If current SDK is the newest and the plugin is NOT active, it means
101
+ // that the current plugin in activation mode.
102
+ $fs_active_plugins->newest->in_activation = true;
103
+ update_option( 'fs_active_plugins', $fs_active_plugins );
104
+ }
105
+
106
+ $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) );
107
+
108
+ if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
109
+ // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
110
+ unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
111
+ }
112
+
113
+ if ( ! ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) ||
114
+ ! $is_newest_sdk_path_valid ||
115
+ // Is newest SDK downgraded.
116
+ ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
117
+ version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
118
+ ) {
119
+ /**
120
+ * Plugin with newest SDK is no longer active.
121
+ * OR
122
+ * The newest SDK was in the current plugin. BUT, seems like the version of
123
+ * the SDK was downgraded to a lower SDK.
124
+ */
125
+ // Find the active plugin with the newest SDK version and update the newest reference.
126
+ fs_fallback_to_newest_active_sdk();
127
+ } else {
128
+ if ( $is_newest_sdk_plugin_activate &&
129
+ $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
130
+ ( $fs_active_plugins->newest->in_activation ||
131
+ ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
132
+ )
133
+
134
+ ) {
135
+ if ( $fs_active_plugins->newest->in_activation ) {
136
+ // Plugin no more in activation.
137
+ $fs_active_plugins->newest->in_activation = false;
138
+ update_option( 'fs_active_plugins', $fs_active_plugins );
139
+ }
140
+
141
+ // Reorder plugins to load plugin with newest SDK first.
142
+ if ( fs_newest_sdk_plugin_first() ) {
143
+ // Refresh page after re-order to make sure activated plugin loads newest SDK.
144
+ if ( class_exists( 'Freemius' ) ) {
145
+ fs_redirect( $_SERVER['REQUEST_URI'] );
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+
152
+ if ( class_exists( 'Freemius' ) ) {
153
+ // SDK was already loaded.
154
+ return;
155
+ }
156
+
157
+ if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
158
+ $newest_sdk_starter = fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs_active_plugins->newest->sdk_path . '/start.php' );
159
+
160
+ if ( file_exists( $newest_sdk_starter ) ) {
161
+ // Reorder plugins to load plugin with newest SDK first.
162
+ fs_newest_sdk_plugin_first();
163
+
164
+ // There's a newer SDK version, load it instead of the current one!
165
+ require_once $newest_sdk_starter;
166
+
167
+ return;
168
+ }
169
+ }
170
+
171
+ #endregion SDK Selection Logic --------------------------------------------------------------------
172
+
173
+ #region Hooks & Filters Collection --------------------------------------------------------------------
174
+
175
+ /**
176
+ * Freemius hooks (actions & filters) tags structure:
177
+ *
178
+ * fs_{filter/action_name}_{plugin_slug}
179
+ *
180
+ * --------------------------------------------------------
181
+ *
182
+ * Usage with WordPress' add_action() / add_filter():
183
+ *
184
+ * add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
185
+ *
186
+ * --------------------------------------------------------
187
+ *
188
+ * Usage with Freemius' instance add_action() / add_filter():
189
+ *
190
+ * // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
191
+ * my_freemius()->add_action('{action_name}', $callable);
192
+ *
193
+ * --------------------------------------------------------
194
+ *
195
+ * Freemius filters collection:
196
+ *
197
+ * fs_connect_url_{plugin_slug}
198
+ * fs_trial_promotion_message_{plugin_slug}
199
+ * fs_is_long_term_user_{plugin_slug}
200
+ * fs_uninstall_reasons_{plugin_slug}
201
+ * fs_is_plugin_update_{plugin_slug}
202
+ * fs_api_domains_{plugin_slug}
203
+ * fs_email_template_sections_{plugin_slug}
204
+ * fs_support_forum_submenu_{plugin_slug}
205
+ * fs_support_forum_url_{plugin_slug}
206
+ * fs_connect_message_{plugin_slug}
207
+ * fs_connect_message_on_update_{plugin_slug}
208
+ * fs_uninstall_confirmation_message_{plugin_slug}
209
+ * fs_pending_activation_message_{plugin_slug}
210
+ * fs_is_submenu_visible_{plugin_slug}
211
+ * fs_plugin_icon_{plugin_slug}
212
+ * fs_show_trial_{plugin_slug}
213
+ *
214
+ * --------------------------------------------------------
215
+ *
216
+ * Freemius actions collection:
217
+ *
218
+ * fs_after_license_loaded_{plugin_slug}
219
+ * fs_after_license_change_{plugin_slug}
220
+ * fs_after_plans_sync_{plugin_slug}
221
+ *
222
+ * fs_after_account_details_{plugin_slug}
223
+ * fs_after_account_user_sync_{plugin_slug}
224
+ * fs_after_account_plan_sync_{plugin_slug}
225
+ * fs_before_account_load_{plugin_slug}
226
+ * fs_after_account_connection_{plugin_slug}
227
+ * fs_account_property_edit_{plugin_slug}
228
+ * fs_account_email_verified_{plugin_slug}
229
+ * fs_account_page_load_before_departure_{plugin_slug}
230
+ * fs_before_account_delete_{plugin_slug}
231
+ * fs_after_account_delete_{plugin_slug}
232
+ *
233
+ * fs_sdk_version_update_{plugin_slug}
234
+ * fs_plugin_version_update_{plugin_slug}
235
+ *
236
+ * fs_initiated_{plugin_slug}
237
+ * fs_after_init_plugin_registered_{plugin_slug}
238
+ * fs_after_init_plugin_anonymous_{plugin_slug}
239
+ * fs_after_init_plugin_pending_activations_{plugin_slug}
240
+ * fs_after_init_addon_registered_{plugin_slug}
241
+ * fs_after_init_addon_anonymous_{plugin_slug}
242
+ * fs_after_init_addon_pending_activations_{plugin_slug}
243
+ *
244
+ * fs_after_premium_version_activation_{plugin_slug}
245
+ * fs_after_free_version_reactivation_{plugin_slug}
246
+ *
247
+ * fs_after_uninstall_{plugin_slug}
248
+ * fs_before_admin_menu_init_{plugin_slug}
249
+ */
250
+
251
+ #endregion Hooks & Filters Collection --------------------------------------------------------------------
252
+
253
+ if ( ! class_exists( 'Freemius' ) ) {
254
+
255
+ if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
256
+ define( 'WP_FS__SDK_VERSION', $this_sdk_version );
257
+ }
258
+
259
+ // Load SDK files.
260
+ require_once dirname( __FILE__ ) . '/require.php';
261
+
262
+ /**
263
+ * Quick shortcut to get Freemius for specified plugin.
264
+ * Used by various templates.
265
+ *
266
+ * @param string $slug
267
+ *
268
+ * @return Freemius
269
+ */
270
+ function freemius( $slug ) {
271
+ return Freemius::instance( $slug );
272
+ }
273
+
274
+ /**
275
+ * @param string $slug
276
+ * @param number $plugin_id
277
+ * @param string $public_key
278
+ * @param bool $is_live Is live or test plugin.
279
+ * @param bool $is_premium Hints freemius if running the premium plugin or not.
280
+ *
281
+ * @return Freemius
282
+ *
283
+ * @deprecated Please use fs_dynamic_init().
284
+ */
285
+ function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
286
+ $fs = Freemius::instance( $slug, true );
287
+ $fs->init( $plugin_id, $public_key, $is_live, $is_premium );
288
+
289
+ return $fs;
290
+ }
291
+
292
+ /**
293
+ * @param array<string,string> $module Plugin or Theme details.
294
+ *
295
+ * @return Freemius
296
+ * @throws Freemius_Exception
297
+ */
298
+ function fs_dynamic_init( $module ) {
299
+ $fs = Freemius::instance( $module['slug'], true );
300
+ $fs->dynamic_init( $module );
301
+
302
+ return $fs;
303
+ }
304
+
305
+ function fs_dump_log() {
306
+ FS_Logger::dump();
307
+ }
308
  }
includes/pum-sdk/freemius/templates/account.php CHANGED
@@ -35,7 +35,7 @@
35
  $is_paid_trial = $fs->is_paid_trial();
36
  $show_upgrade = ( $fs->has_paid_plan() && ! $is_paying && ! $is_paid_trial );
37
 
38
- if ( $show_upgrade ) {
39
  $fs->_add_license_activation_dialog_box();
40
  }
41
  ?>
@@ -144,6 +144,8 @@
144
  <div class="inside">
145
  <table id="fs_account_details" cellspacing="0" class="fs-key-value-table">
146
  <?php
 
 
147
  $profile = array();
148
  $profile[] = array(
149
  'id' => 'user_name',
@@ -215,11 +217,13 @@
215
  );
216
 
217
  if ( is_object( $license ) ) {
218
- $profile[] = array(
219
- 'id' => 'license_key',
220
- 'title' => __fs( 'License Key', $slug ),
221
- 'value' => $license->secret_key,
222
- );
 
 
223
  }
224
  }
225
  }
@@ -246,23 +250,23 @@
246
  <code><?php echo htmlspecialchars( $p['value'] ) ?></code>
247
  <?php endif ?>
248
  <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
249
- <label class="fs-tag fs-warn"><?php _efs( 'not-verified', $slug ) ?></label>
250
  <?php endif ?>
251
  <?php if ( 'plan' === $p['id'] ) : ?>
252
  <?php if ( $fs->is_trial() ) : ?>
253
- <label class="fs-tag fs-success"><?php _efs( 'trial', $slug ) ?></label>
254
  <?php endif ?>
255
  <?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
256
  <?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
257
  <label
258
- class="fs-tag fs-warn"><?php printf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ) ?></label>
259
  <?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
260
  <label
261
- class="fs-tag fs-success"><?php printf( __fs( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ?></label>
262
  <?php endif ?>
263
  <?php elseif ( $fs->is_trial() ) : ?>
264
  <label
265
- class="fs-tag fs-warn"><?php printf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ?></label>
266
  <?php endif ?>
267
  <div class="button-group">
268
  <?php $available_license = $fs->is_free_plan() ? $fs->_get_available_premium_license() : false ?>
@@ -274,7 +278,7 @@
274
  <input type="hidden" name="license_id" value="<?php echo $available_license->id ?>">
275
  <?php wp_nonce_field( 'activate_license' ) ?>
276
  <input type="submit" class="button button-primary"
277
- value="<?php printf(
278
  __fs( 'activate-x-plan', $slug ) . '%s',
279
  $premium_plan->title,
280
  ( $site->is_localhost() && $available_license->is_free_localhost ) ?
@@ -285,16 +289,16 @@
285
  sprintf( __fs( 'x-left', $slug ), $available_license->left() ) :
286
  strtolower( __fs( 'last-license', $slug ) ) ) . ']'
287
  )
288
- ) ?> ">
289
  </form>
290
  <?php else : ?>
291
  <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
292
  method="POST" class="button-group">
293
  <?php if ( $show_upgrade && $fs->is_premium() ) : ?>
294
- <a class="button activate-license-trigger <?php echo $slug ?>" href="#"><?php _efs( 'activate-license', $slug ) ?></a>
295
  <?php endif ?>
296
  <input type="submit" class="button"
297
- value="<?php _efs( 'sync-license', $slug ) ?>">
298
  <input type="hidden" name="fs_action"
299
  value="<?php echo $slug ?>_sync_license">
300
  <?php wp_nonce_field( $slug . '_sync_license' ) ?>
@@ -302,19 +306,18 @@
302
  class="button<?php if ( $show_upgrade ) {
303
  echo ' button-primary';
304
  } ?> button-upgrade"><i
305
- class="dashicons dashicons-cart"></i> <?php ( $show_upgrade ) ?
306
- _efs( 'upgrade', $slug ) :
307
- _efs( 'change-plan', $slug )
308
- ?></a>
309
  </form>
310
  <?php endif ?>
311
  </div>
312
  <?php elseif ( 'version' === $p['id'] && $fs->has_paid_plan() ) : ?>
313
- <?php if ( $fs->is_premium() ) : ?>
314
- <label
315
- class="fs-tag fs-<?php echo $fs->can_use_premium_code() ? 'success' : 'warn' ?>"><?php _efs( 'premium-version' ) ?></label>
316
- <?php elseif ( $fs->can_use_premium_code() ) : ?>
317
- <label class="fs-tag fs-warn"><?php _efs( 'free-version' ) ?></label>
 
 
318
  <?php endif ?>
319
  <?php endif ?>
320
  </td>
@@ -325,10 +328,11 @@
325
  <input type="hidden" name="fs_action" value="verify_email">
326
  <?php wp_nonce_field( 'verify_email' ) ?>
327
  <input type="submit" class="button button-small"
328
- value="<?php _efs( 'verify-email', $slug ) ?>">
329
  </form>
330
  <?php endif ?>
331
  <?php if ( 'version' === $p['id'] ) : ?>
 
332
  <div class="button-group">
333
  <?php if ( $is_paying || $fs->is_trial() ) : ?>
334
  <?php if ( ! $fs->is_allowed_to_install() ) : ?>
@@ -336,13 +340,17 @@
336
  href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( __fs( 'download-x-version', $slug ), ( $fs->is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
337
  <?php elseif ( is_object( $update ) ) : ?>
338
  <a class="button button-primary"
339
- href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $fs->get_plugin_basename() ), 'upgrade-plugin_' . $fs->get_plugin_basename() ) ?>"><?php echo __fs( 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
340
  <?php endif ?>
341
  <?php endif; ?>
342
  </div>
 
343
  <?php
344
  elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
345
- <button class="button button-small"><?php _efs( 'show', $slug ) ?></button>
 
 
 
346
  <?php
347
  elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
348
  ( is_string( $user->secret_key ) && in_array( $p['id'], array(
@@ -357,7 +365,7 @@
357
  value="">
358
  <?php wp_nonce_field( 'update_' . $p['id'] ) ?>
359
  <input type="submit" class="button button-small"
360
- value="<?php _efs( 'edit', $slug ) ?>">
361
  </form>
362
  <?php endif ?>
363
  </td>
@@ -370,7 +378,7 @@
370
  </div>
371
  <script type="text/javascript">
372
  (function ($) {
373
- $('.fs-field-license_key button, .fs-field-site_secret_key button').click(function () {
374
  var
375
  $this = $(this),
376
  $parent = $this.closest('tr'),
@@ -380,13 +388,13 @@
380
  $input.toggle();
381
 
382
  if ($input.is(':visible')) {
383
- $this.html('<?php _efs( 'hide', $slug ) ?>');
384
  setTimeout(function () {
385
  $input.select().focus();
386
  }, 100);
387
  }
388
  else {
389
- $this.html('<?php _efs( 'show', $slug ) ?>');
390
  }
391
  });
392
  }(jQuery));
@@ -415,11 +423,11 @@
415
  <table id="fs_addons" class="widefat">
416
  <thead>
417
  <tr>
418
- <th><h3><?php _efs( 'add-ons', $slug ) ?></h3></th>
419
- <th><?php _efs( 'id', $slug ) ?></th>
420
- <th><?php _efs( 'version', $slug ) ?></th>
421
- <th><?php _efs( 'plan', $slug ) ?></th>
422
- <th><?php _efs( 'license', $slug ) ?></th>
423
  <th></th>
424
  <?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
425
  <th></th>
@@ -605,21 +613,21 @@
605
  if ( $fs->is_addon_installed( $addon->slug ) ) {
606
  $addon_file = $fs->get_addon_basename( $addon->slug );
607
  $buttons[] = sprintf(
608
- '<a class="button button-primary" href="%s" title="%s" class="edit">%s</a>',
609
  wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ),
610
- esc_attr( __fs( 'activate-this-addon', $slug ) ),
611
  __fs( 'activate', $slug )
612
  );
613
  } else {
614
  if ( $fs->is_allowed_to_install() ) {
615
  $buttons[] = sprintf(
616
- '<a class="button button-primary" href="%s" class="edit">%s</a>',
617
  wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ),
618
  __fs( 'install-now', $slug )
619
  );
620
  } else {
621
  $buttons[] = sprintf(
622
- '<a target="_blank" class="button button-primary" href="%s" class="edit">%s</a>',
623
  $fs->_get_latest_download_local_url( $addon_id ),
624
  __fs( 'download-latest', $slug )
625
  );
@@ -661,15 +669,15 @@
661
  <?php $addon_file = $fs->get_addon_basename( $addon->slug ) ?>
662
  <a class="button button-primary"
663
  href="<?php echo wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
664
- title="<?php esc_attr( __fs( 'activate-this-addon', $slug ) ) ?>"
665
- class="edit"><?php _efs( 'activate', $slug ) ?></a>
666
  <?php else : ?>
667
  <?php if ( $fs->is_allowed_to_install() ) : ?>
668
  <a class="button button-primary"
669
- href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php _efs( 'install-now', $slug ) ?></a>
670
  <?php else : ?>
671
  <a target="_blank" class="button button-primary"
672
- href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php _efs( 'download-latest', $slug ) ?></a>
673
  <?php endif ?>
674
  <?php endif ?>
675
  </td>
@@ -712,5 +720,4 @@
712
  'module_slug' => $slug,
713
  'module_version' => $fs->get_plugin_version(),
714
  );
715
- fs_require_template( 'powered-by.php', $params );
716
- ?>
35
  $is_paid_trial = $fs->is_paid_trial();
36
  $show_upgrade = ( $fs->has_paid_plan() && ! $is_paying && ! $is_paid_trial );
37
 
38
+ if ( $fs->has_paid_plan() ) {
39
  $fs->_add_license_activation_dialog_box();
40
  }
41
  ?>
144
  <div class="inside">
145
  <table id="fs_account_details" cellspacing="0" class="fs-key-value-table">
146
  <?php
147
+ $hide_license_key = $fs->apply_filters( 'hide_license_key', false );
148
+
149
  $profile = array();
150
  $profile[] = array(
151
  'id' => 'user_name',
217
  );
218
 
219
  if ( is_object( $license ) ) {
220
+ if ( ! $hide_license_key ) {
221
+ $profile[] = array(
222
+ 'id' => 'license_key',
223
+ 'title' => __fs( 'License Key', $slug ),
224
+ 'value' => $license->secret_key,
225
+ );
226
+ }
227
  }
228
  }
229
  }
250
  <code><?php echo htmlspecialchars( $p['value'] ) ?></code>
251
  <?php endif ?>
252
  <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
253
+ <label class="fs-tag fs-warn"><?php fs_esc_html_echo( 'not-verified', $slug ) ?></label>
254
  <?php endif ?>
255
  <?php if ( 'plan' === $p['id'] ) : ?>
256
  <?php if ( $fs->is_trial() ) : ?>
257
+ <label class="fs-tag fs-success"><?php fs_esc_html_echo( 'trial', $slug ) ?></label>
258
  <?php endif ?>
259
  <?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
260
  <?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
261
  <label
262
+ class="fs-tag fs-warn"><?php echo esc_html( sprintf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ) ) ?></label>
263
  <?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
264
  <label
265
+ class="fs-tag fs-success"><?php echo esc_html( sprintf( __fs( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ) ?></label>
266
  <?php endif ?>
267
  <?php elseif ( $fs->is_trial() ) : ?>
268
  <label
269
+ class="fs-tag fs-warn"><?php echo esc_html( sprintf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ) ?></label>
270
  <?php endif ?>
271
  <div class="button-group">
272
  <?php $available_license = $fs->is_free_plan() ? $fs->_get_available_premium_license() : false ?>
278
  <input type="hidden" name="license_id" value="<?php echo $available_license->id ?>">
279
  <?php wp_nonce_field( 'activate_license' ) ?>
280
  <input type="submit" class="button button-primary"
281
+ value="<?php echo esc_attr( sprintf(
282
  __fs( 'activate-x-plan', $slug ) . '%s',
283
  $premium_plan->title,
284
  ( $site->is_localhost() && $available_license->is_free_localhost ) ?
289
  sprintf( __fs( 'x-left', $slug ), $available_license->left() ) :
290
  strtolower( __fs( 'last-license', $slug ) ) ) . ']'
291
  )
292
+ ) ) ?> ">
293
  </form>
294
  <?php else : ?>
295
  <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
296
  method="POST" class="button-group">
297
  <?php if ( $show_upgrade && $fs->is_premium() ) : ?>
298
+ <a class="button activate-license-trigger <?php echo $slug ?>" href="#"><?php fs_esc_html_echo( 'activate-license', $slug ) ?></a>
299
  <?php endif ?>
300
  <input type="submit" class="button"
301
+ value="<?php fs_esc_attr_echo( 'sync-license', $slug ) ?>">
302
  <input type="hidden" name="fs_action"
303
  value="<?php echo $slug ?>_sync_license">
304
  <?php wp_nonce_field( $slug . '_sync_license' ) ?>
306
  class="button<?php if ( $show_upgrade ) {
307
  echo ' button-primary';
308
  } ?> button-upgrade"><i
309
+ class="dashicons dashicons-cart"></i> <?php fs_esc_html_echo( $show_upgrade ? 'upgrade' : 'change-plan', $slug ) ?></a>
 
 
 
310
  </form>
311
  <?php endif ?>
312
  </div>
313
  <?php elseif ( 'version' === $p['id'] && $fs->has_paid_plan() ) : ?>
314
+ <?php if ( $fs->has_premium_version() ) : ?>
315
+ <?php if ( $fs->is_premium() ) : ?>
316
+ <label
317
+ class="fs-tag fs-<?php echo $fs->can_use_premium_code() ? 'success' : 'warn' ?>"><?php fs_esc_html_echo( 'premium-version', $slug ) ?></label>
318
+ <?php elseif ( $fs->can_use_premium_code() ) : ?>
319
+ <label class="fs-tag fs-warn"><?php fs_esc_html_echo( 'free-version', $slug ) ?></label>
320
+ <?php endif ?>
321
  <?php endif ?>
322
  <?php endif ?>
323
  </td>
328
  <input type="hidden" name="fs_action" value="verify_email">
329
  <?php wp_nonce_field( 'verify_email' ) ?>
330
  <input type="submit" class="button button-small"
331
+ value="<?php fs_esc_attr_echo( 'verify-email', $slug ) ?>">
332
  </form>
333
  <?php endif ?>
334
  <?php if ( 'version' === $p['id'] ) : ?>
335
+ <?php if ( $fs->has_release_on_freemius() ) : ?>
336
  <div class="button-group">
337
  <?php if ( $is_paying || $fs->is_trial() ) : ?>
338
  <?php if ( ! $fs->is_allowed_to_install() ) : ?>
340
  href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( __fs( 'download-x-version', $slug ), ( $fs->is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
341
  <?php elseif ( is_object( $update ) ) : ?>
342
  <a class="button button-primary"
343
+ href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $fs->get_plugin_basename() ), 'upgrade-plugin_' . $fs->get_plugin_basename() ) ?>"><?php echo fs_esc_html( 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
344
  <?php endif ?>
345
  <?php endif; ?>
346
  </div>
347
+ <?php endif ?>
348
  <?php
349
  elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
350
+ <button class="button button-small fs-toggle-visibility"><?php echo esc_html( __fs( 'show', $slug ) ) ?></button>
351
+ <?php if ('license_key' === $p['id']) : ?>
352
+ <button class="button button-small activate-license-trigger <?php echo $slug ?>"><?php echo esc_html( __fs( 'change-license', $slug ) ) ?></button>
353
+ <?php endif ?>
354
  <?php
355
  elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
356
  ( is_string( $user->secret_key ) && in_array( $p['id'], array(
365
  value="">
366
  <?php wp_nonce_field( 'update_' . $p['id'] ) ?>
367
  <input type="submit" class="button button-small"
368
+ value="<?php fs_esc_attr_echo( 'edit', $slug ) ?>">
369
  </form>
370
  <?php endif ?>
371
  </td>
378
  </div>
379
  <script type="text/javascript">
380
  (function ($) {
381
+ $('.fs-toggle-visibility').click(function () {
382
  var
383
  $this = $(this),
384
  $parent = $this.closest('tr'),
388
  $input.toggle();
389
 
390
  if ($input.is(':visible')) {
391
+ $this.html(<?php fs_json_encode_echo( 'hide', $slug ) ?>);
392
  setTimeout(function () {
393
  $input.select().focus();
394
  }, 100);
395
  }
396
  else {
397
+ $this.html(<?php fs_json_encode_echo( 'show', $slug ) ?>);
398
  }
399
  });
400
  }(jQuery));
423
  <table id="fs_addons" class="widefat">
424
  <thead>
425
  <tr>
426
+ <th><h3><?php fs_esc_html_echo( 'add-ons', $slug ) ?></h3></th>
427
+ <th><?php fs_esc_html_echo( 'id', $slug ) ?></th>
428
+ <th><?php fs_esc_html_echo( 'version', $slug ) ?></th>
429
+ <th><?php fs_esc_html_echo( 'plan', $slug ) ?></th>
430
+ <th><?php fs_esc_html_echo( 'license', $slug ) ?></th>
431
  <th></th>
432
  <?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
433
  <th></th>
613
  if ( $fs->is_addon_installed( $addon->slug ) ) {
614
  $addon_file = $fs->get_addon_basename( $addon->slug );
615
  $buttons[] = sprintf(
616
+ '<a class="button button-primary edit" href="%s" title="%s">%s</a>',
617
  wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ),
618
+ fs_esc_attr( 'activate-this-addon', $slug ),
619
  __fs( 'activate', $slug )
620
  );
621
  } else {
622
  if ( $fs->is_allowed_to_install() ) {
623
  $buttons[] = sprintf(
624
+ '<a class="button button-primary edit" href="%s">%s</a>',
625
  wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ),
626
  __fs( 'install-now', $slug )
627
  );
628
  } else {
629
  $buttons[] = sprintf(
630
+ '<a target="_blank" class="button button-primary edit" href="%s">%s</a>',
631
  $fs->_get_latest_download_local_url( $addon_id ),
632
  __fs( 'download-latest', $slug )
633
  );
669
  <?php $addon_file = $fs->get_addon_basename( $addon->slug ) ?>
670
  <a class="button button-primary"
671
  href="<?php echo wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
672
+ title="<?php fs_esc_attr_echo( 'activate-this-addon', $slug ) ?>"
673
+ class="edit"><?php fs_esc_html_echo( 'activate', $slug ) ?></a>
674
  <?php else : ?>
675
  <?php if ( $fs->is_allowed_to_install() ) : ?>
676
  <a class="button button-primary"
677
+ href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php fs_esc_html_echo( 'install-now', $slug ) ?></a>
678
  <?php else : ?>
679
  <a target="_blank" class="button button-primary"
680
+ href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php fs_esc_html_echo( 'download-latest', $slug ) ?></a>
681
  <?php endif ?>
682
  <?php endif ?>
683
  </td>
720
  'module_slug' => $slug,
721
  'module_version' => $fs->get_plugin_version(),
722
  );
723
+ fs_require_template( 'powered-by.php', $params );
 
includes/pum-sdk/freemius/templates/add-ons.php CHANGED
@@ -123,6 +123,17 @@
123
 
124
  var interval = setInterval(function () {
125
  // Open add-on information page.
 
 
 
 
 
 
 
 
 
 
 
126
  $('.fs-card[data-slug=<?php echo $open_addon_slug ?>] a').click();
127
  if ($('#TB_iframeContent').length > 0) {
128
  clearInterval(interval);
123
 
124
  var interval = setInterval(function () {
125
  // Open add-on information page.
126
+ <?php
127
+ /**
128
+ * @author Vova Feldman
129
+ *
130
+ * This code does NOT expose an XSS vulnerability because:
131
+ * 1. This page only renders for admins, so if an attacker manage to get
132
+ * admin access, they can do more harm.
133
+ * 2. This code won't be rendered unless $open_addon_slug matches any of
134
+ * the plugin's add-ons slugs.
135
+ */
136
+ ?>
137
  $('.fs-card[data-slug=<?php echo $open_addon_slug ?>] a').click();
138
  if ($('#TB_iframeContent').length > 0) {
139
  clearInterval(interval);
includes/pum-sdk/freemius/templates/checkout-legacy.php ADDED
@@ -0,0 +1,242 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.0.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ wp_enqueue_script( 'jquery' );
14
+ wp_enqueue_script( 'json2' );
15
+ fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
16
+ fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
17
+ fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
18
+
19
+ /**
20
+ * @var array $VARS
21
+ */
22
+ $slug = $VARS['slug'];
23
+ $fs = freemius( $slug );
24
+
25
+ $timestamp = time();
26
+
27
+ $context_params = array(
28
+ 'plugin_id' => $fs->get_id(),
29
+ 'plugin_public_key' => $fs->get_public_key(),
30
+ 'plugin_version' => $fs->get_plugin_version(),
31
+ );
32
+
33
+ // Get site context secure params.
34
+ if ( $fs->is_registered() ) {
35
+ $site = $fs->get_site();
36
+ $plugin_id = fs_request_get( 'plugin_id', $fs->get_id() );
37
+
38
+ if ( $plugin_id != $fs->get_id() ) {
39
+ if ( $fs->is_addon_activated( $plugin_id ) ) {
40
+ $fs_addon = Freemius::get_instance_by_id( $plugin_id );
41
+ $site = $fs_addon->get_site();
42
+ }
43
+ }
44
+
45
+ $context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
46
+ $site,
47
+ $timestamp,
48
+ 'checkout'
49
+ ) );
50
+ } else {
51
+ $current_user = Freemius::_get_current_wp_user();
52
+
53
+ // Add site and user info to the request, this information
54
+ // is NOT being stored unless the user complete the purchase
55
+ // and agrees to the TOS.
56
+ $context_params = array_merge( $context_params, array(
57
+ 'user_firstname' => $current_user->user_firstname,
58
+ 'user_lastname' => $current_user->user_lastname,
59
+ 'user_email' => $current_user->user_email,
60
+ 'home_url' => home_url(),
61
+ ) );
62
+
63
+ $fs_user = Freemius::_get_user_by_email( $current_user->user_email );
64
+
65
+ if ( is_object( $fs_user ) ) {
66
+ $context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
67
+ $fs_user,
68
+ $timestamp,
69
+ 'checkout'
70
+ ) );
71
+ }
72
+ }
73
+
74
+ if ( $fs->is_payments_sandbox() ) {
75
+ // Append plugin secure token for sandbox mode authentication.
76
+ $context_params['sandbox'] = FS_Security::instance()->get_secure_token(
77
+ $fs->get_plugin(),
78
+ $timestamp,
79
+ 'checkout'
80
+ );
81
+
82
+ /**
83
+ * @since 1.1.7.3 Add security timestamp for sandbox even for anonymous user.
84
+ */
85
+ if ( empty( $context_params['s_ctx_ts'] ) ) {
86
+ $context_params['s_ctx_ts'] = $timestamp;
87
+ }
88
+ }
89
+
90
+ $return_url = $fs->_get_sync_license_url( isset( $_GET['plugin_id'] ) ? $_GET['plugin_id'] : $fs->get_id() );
91
+
92
+ $query_params = array_merge( $context_params, $_GET, array(
93
+ // Current plugin version.
94
+ 'plugin_version' => $fs->get_plugin_version(),
95
+ 'sdk_version' => WP_FS__SDK_VERSION,
96
+ 'return_url' => $return_url,
97
+ // Admin CSS URL for style/design competability.
98
+ // 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
99
+ ) );
100
+ ?>
101
+ <div id="fs_checkout" class="wrap" style="margin: 0 0 -65px -20px;">
102
+ <div id="iframe"></div>
103
+ <script type="text/javascript">
104
+ // http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
105
+ jQuery(function ($) {
106
+ $.extend({
107
+ form: function (url, data, method) {
108
+ if (method == null) method = 'POST';
109
+ if (data == null) data = {};
110
+
111
+ var form = $('<form>').attr({
112
+ method: method,
113
+ action: url
114
+ }).css({
115
+ display: 'none'
116
+ });
117
+
118
+ var addData = function (name, data) {
119
+ if ($.isArray(data)) {
120
+ for (var i = 0; i < data.length; i++) {
121
+ var value = data[i];
122
+ addData(name + '[]', value);
123
+ }
124
+ } else if (typeof data === 'object') {
125
+ for (var key in data) {
126
+ if (data.hasOwnProperty(key)) {
127
+ addData(name + '[' + key + ']', data[key]);
128
+ }
129
+ }
130
+ } else if (data != null) {
131
+ form.append($('<input>').attr({
132
+ type : 'hidden',
133
+ name : String(name),
134
+ value: String(data)
135
+ }));
136
+ }
137
+ };
138
+
139
+ for (var key in data) {
140
+ if (data.hasOwnProperty(key)) {
141
+ addData(key, data[key]);
142
+ }
143
+ }
144
+
145
+ return form.appendTo('body');
146
+ }
147
+ });
148
+ });
149
+
150
+ (function ($) {
151
+ $(function () {
152
+
153
+ var
154
+ // Keep track of the iframe height.
155
+ iframe_height = 800,
156
+ base_url = '<?php echo WP_FS__ADDRESS ?>',
157
+ // Pass the parent page URL into the Iframe in a meaningful way (this URL could be
158
+ // passed via query string or hard coded into the child page, it depends on your needs).
159
+ src = base_url + '/checkout/?<?php echo ( isset( $_REQUEST['XDEBUG_SESSION'] ) ? 'XDEBUG_SESSION=' . $_REQUEST['XDEBUG_SESSION'] . '&' : '' ) . http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
160
+
161
+ // Append the Iframe into the DOM.
162
+ iframe = $('<iframe " src="' + src + '" width="100%" height="' + iframe_height + 'px" scrolling="no" frameborder="0" style="background: transparent;"><\/iframe>')
163
+ .appendTo('#iframe');
164
+
165
+ FS.PostMessage.init(base_url, [iframe[0]]);
166
+ FS.PostMessage.receiveOnce('height', function (data) {
167
+ var h = data.height;
168
+ if (!isNaN(h) && h > 0 && h != iframe_height) {
169
+ iframe_height = h;
170
+ iframe.height(iframe_height + 'px');
171
+
172
+ FS.PostMessage.postScroll(iframe[0]);
173
+ }
174
+ });
175
+
176
+ FS.PostMessage.receiveOnce('install', function (data) {
177
+ // Post data to activation URL.
178
+ $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
179
+ 'fs_action' => $slug . '_activate_new',
180
+ 'plugin_id' => isset( $_GET['plugin_id'] ) ? $_GET['plugin_id'] : $fs->get_id()
181
+ ) ), $slug . '_activate_new' ) ?>', {
182
+ user_id : data.user.id,
183
+ user_secret_key : data.user.secret_key,
184
+ user_public_key : data.user.public_key,
185
+ install_id : data.install.id,
186
+ install_secret_key: data.install.secret_key,
187
+ install_public_key: data.install.public_key
188
+ }).submit();
189
+ });
190
+
191
+ FS.PostMessage.receiveOnce('pending_activation', function (data) {
192
+ $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
193
+ 'fs_action' => $slug . '_activate_new',
194
+ 'plugin_id' => fs_request_get( 'plugin_id', $fs->get_id() ),
195
+ 'pending_activation' => true,
196
+ ) ), $slug . '_activate_new' ) ?>', {
197
+ user_email: data.user_email
198
+ }).submit();
199
+ });
200
+
201
+ FS.PostMessage.receiveOnce('get_context', function () {
202
+ console.debug('receiveOnce', 'get_context');
203
+
204
+ // If the user didn't connect his account with Freemius,
205
+ // once he accepts the Terms of Service and Privacy Policy,
206
+ // and then click the purchase button, the context information
207
+ // of the user will be shared with Freemius in order to complete the
208
+ // purchase workflow and activate the license for the right user.
209
+ <?php $install_data = array_merge( $fs->get_opt_in_params(),
210
+ array(
211
+ 'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
212
+ array(
213
+ 'fs_action' => $slug . '_activate_new',
214
+ 'plugin_id' => fs_request_get( 'plugin_id', $fs->get_id() ),
215
+
216
+ ) ),
217
+ $slug . '_activate_new' )
218
+ ) ) ?>
219
+ FS.PostMessage.post('context', <?php echo json_encode( $install_data ) ?>, iframe[0]);
220
+ });
221
+
222
+ FS.PostMessage.receiveOnce('get_dimensions', function (data) {
223
+ console.debug('receiveOnce', 'get_dimensions');
224
+
225
+ FS.PostMessage.post('dimensions', {
226
+ height : $(document.body).height(),
227
+ scrollTop: $(document).scrollTop()
228
+ }, iframe[0]);
229
+ });
230
+ });
231
+ })(jQuery);
232
+ </script>
233
+ </div>
234
+ <?php
235
+ $params = array(
236
+ 'page' => 'checkout',
237
+ 'module_id' => $fs->get_id(),
238
+ 'module_slug' => $slug,
239
+ 'module_version' => $fs->get_plugin_version(),
240
+ );
241
+ fs_require_template( 'powered-by.php', $params );
242
+ ?>
includes/pum-sdk/freemius/templates/checkout.php CHANGED
@@ -15,6 +15,7 @@
15
  fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
16
  fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
17
  fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
 
18
 
19
  /**
20
  * @var array $VARS
@@ -25,15 +26,31 @@
25
  $timestamp = time();
26
 
27
  $context_params = array(
28
- 'plugin_id' => $fs->get_id(),
29
- 'plugin_public_key' => $fs->get_public_key(),
30
- 'plugin_version' => $fs->get_plugin_version(),
 
 
31
  );
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  // Get site context secure params.
34
  if ( $fs->is_registered() ) {
35
- $site = $fs->get_site();
36
- $plugin_id = fs_request_get( 'plugin_id', $fs->get_id() );
37
 
38
  if ( $plugin_id != $fs->get_id() ) {
39
  if ( $fs->is_addon_activated( $plugin_id ) ) {
@@ -87,7 +104,7 @@
87
  }
88
  }
89
 
90
- $return_url = $fs->_get_sync_license_url( isset( $_GET['plugin_id'] ) ? $_GET['plugin_id'] : $fs->get_id() );
91
 
92
  $query_params = array_merge( $context_params, $_GET, array(
93
  // Current plugin version.
@@ -97,8 +114,13 @@
97
  // Admin CSS URL for style/design competability.
98
  // 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
99
  ) );
 
 
 
 
 
100
  ?>
101
- <div id="fs_checkout" class="wrap" style="margin: 0 0 -65px -20px;">
102
  <div id="iframe"></div>
103
  <script type="text/javascript">
104
  // http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
@@ -153,10 +175,10 @@
153
  var
154
  // Keep track of the iframe height.
155
  iframe_height = 800,
156
- base_url = '<?php echo WP_FS__ADDRESS ?>',
157
  // Pass the parent page URL into the Iframe in a meaningful way (this URL could be
158
  // passed via query string or hard coded into the child page, it depends on your needs).
159
- src = base_url + '/checkout/?<?php echo ( isset( $_REQUEST['XDEBUG_SESSION'] ) ? 'XDEBUG_SESSION=' . $_REQUEST['XDEBUG_SESSION'] . '&' : '' ) . http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
160
 
161
  // Append the Iframe into the DOM.
162
  iframe = $('<iframe " src="' + src + '" width="100%" height="' + iframe_height + 'px" scrolling="no" frameborder="0" style="background: transparent;"><\/iframe>')
@@ -177,7 +199,7 @@
177
  // Post data to activation URL.
178
  $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
179
  'fs_action' => $slug . '_activate_new',
180
- 'plugin_id' => isset( $_GET['plugin_id'] ) ? $_GET['plugin_id'] : $fs->get_id()
181
  ) ), $slug . '_activate_new' ) ?>', {
182
  user_id : data.user.id,
183
  user_secret_key : data.user.secret_key,
@@ -191,7 +213,7 @@
191
  FS.PostMessage.receiveOnce('pending_activation', function (data) {
192
  $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
193
  'fs_action' => $slug . '_activate_new',
194
- 'plugin_id' => fs_request_get( 'plugin_id', $fs->get_id() ),
195
  'pending_activation' => true,
196
  ) ), $slug . '_activate_new' ) ?>', {
197
  user_email: data.user_email
@@ -211,7 +233,7 @@
211
  'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
212
  array(
213
  'fs_action' => $slug . '_activate_new',
214
- 'plugin_id' => fs_request_get( 'plugin_id', $fs->get_id() ),
215
 
216
  ) ),
217
  $slug . '_activate_new' )
@@ -220,23 +242,20 @@
220
  });
221
 
222
  FS.PostMessage.receiveOnce('get_dimensions', function (data) {
223
- console.debug('receiveOnce', 'get_dimensions');
224
-
225
  FS.PostMessage.post('dimensions', {
226
  height : $(document.body).height(),
227
  scrollTop: $(document).scrollTop()
228
  }, iframe[0]);
229
  });
 
 
 
 
 
 
 
 
230
  });
231
  })(jQuery);
232
  </script>
233
- </div>
234
- <?php
235
- $params = array(
236
- 'page' => 'checkout',
237
- 'module_id' => $fs->get_id(),
238
- 'module_slug' => $slug,
239
- 'module_version' => $fs->get_plugin_version(),
240
- );
241
- fs_require_template( 'powered-by.php', $params );
242
- ?>
15
  fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
16
  fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
17
  fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
18
+ fs_enqueue_local_style( 'fs_checkout', '/admin/checkout.css' );
19
 
20
  /**
21
  * @var array $VARS
26
  $timestamp = time();
27
 
28
  $context_params = array(
29
+ 'plugin_id' => $fs->get_id(),
30
+ 'plugin_version' => $fs->get_plugin_version(),
31
+ 'public_key' => $fs->get_public_key(),
32
+ 'mode' => 'dashboard',
33
+ 'trial' => fs_request_get_bool( 'trial' ),
34
  );
35
 
36
+ $plan_id = fs_request_get( 'plan_id' );
37
+ if ( FS_Plugin_Plan::is_valid_id( $plan_id ) ) {
38
+ $context_params['plan_id'] = $plan_id;
39
+ }
40
+
41
+ $licenses = fs_request_get( 'licenses' );
42
+ if ( $licenses === strval( intval( $licenses ) ) && $licenses > 0 ) {
43
+ $context_params['licenses'] = $licenses;
44
+ }
45
+
46
+ $plugin_id = fs_request_get( 'plugin_id' );
47
+ if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
48
+ $plugin_id = $fs->get_id();
49
+ }
50
+
51
  // Get site context secure params.
52
  if ( $fs->is_registered() ) {
53
+ $site = $fs->get_site();
 
54
 
55
  if ( $plugin_id != $fs->get_id() ) {
56
  if ( $fs->is_addon_activated( $plugin_id ) ) {
104
  }
105
  }
106
 
107
+ $return_url = $fs->_get_sync_license_url( $plugin_id );
108
 
109
  $query_params = array_merge( $context_params, $_GET, array(
110
  // Current plugin version.
114
  // Admin CSS URL for style/design competability.
115
  // 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
116
  ) );
117
+
118
+ $xdebug_session = fs_request_get( 'XDEBUG_SESSION' );
119
+ if ( false !== $xdebug_session ) {
120
+ $query_params['XDEBUG_SESSION'] = $xdebug_session;
121
+ }
122
  ?>
123
+ <div id="fs_checkout" class="wrap fs-full-size-wrapper">
124
  <div id="iframe"></div>
125
  <script type="text/javascript">
126
  // http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
175
  var
176
  // Keep track of the iframe height.
177
  iframe_height = 800,
178
+ base_url = '<?php echo FS_CHECKOUT__ADDRESS ?>',
179
  // Pass the parent page URL into the Iframe in a meaningful way (this URL could be
180
  // passed via query string or hard coded into the child page, it depends on your needs).
181
+ src = base_url + '/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
182
 
183
  // Append the Iframe into the DOM.
184
  iframe = $('<iframe " src="' + src + '" width="100%" height="' + iframe_height + 'px" scrolling="no" frameborder="0" style="background: transparent;"><\/iframe>')
199
  // Post data to activation URL.
200
  $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
201
  'fs_action' => $slug . '_activate_new',
202
+ 'plugin_id' => $plugin_id
203
  ) ), $slug . '_activate_new' ) ?>', {
204
  user_id : data.user.id,
205
  user_secret_key : data.user.secret_key,
213
  FS.PostMessage.receiveOnce('pending_activation', function (data) {
214
  $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
215
  'fs_action' => $slug . '_activate_new',
216
+ 'plugin_id' => $plugin_id,
217
  'pending_activation' => true,
218
  ) ), $slug . '_activate_new' ) ?>', {
219
  user_email: data.user_email
233
  'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
234
  array(
235
  'fs_action' => $slug . '_activate_new',
236
+ 'plugin_id' => $plugin_id,
237
 
238
  ) ),
239
  $slug . '_activate_new' )
242
  });
243
 
244
  FS.PostMessage.receiveOnce('get_dimensions', function (data) {
 
 
245
  FS.PostMessage.post('dimensions', {
246
  height : $(document.body).height(),
247
  scrollTop: $(document).scrollTop()
248
  }, iframe[0]);
249
  });
250
+
251
+ var updateHeight = function(){
252
+ iframe.css('min-height', $('#wpwrap').height() + 'px');
253
+ };
254
+
255
+ $(document).ready(updateHeight);
256
+
257
+ $(window).resize(updateHeight)
258
  });
259
  })(jQuery);
260
  </script>
261
+ </div>
 
 
 
 
 
 
 
 
 
includes/pum-sdk/freemius/templates/connect.php CHANGED
@@ -1,405 +1,407 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
- * @since 1.0.7
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * @var array $VARS
15
- */
16
- $slug = $VARS['slug'];
17
- $fs = freemius( $slug );
18
- $is_pending_activation = $fs->is_pending_activation();
19
- $is_premium_only = $fs->is_only_premium();
20
- $has_paid_plans = $fs->has_paid_plan();
21
- $is_premium_code = $fs->is_premium();
22
- $is_freemium = $fs->is_freemium();
23
-
24
- $fs->_enqueue_connect_essentials();
25
-
26
- $current_user = Freemius::_get_current_wp_user();
27
-
28
- $first_name = $current_user->user_firstname;
29
- if ( empty( $first_name ) ) {
30
- $first_name = $current_user->nickname;
31
- }
32
-
33
- $site_url = get_site_url();
34
- $protocol_pos = strpos( $site_url, '://' );
35
- if ( false !== $protocol_pos ) {
36
- $site_url = substr( $site_url, $protocol_pos + 3 );
37
- }
38
-
39
- $freemius_site_url = $fs->has_paid_plan() ?
40
- 'https://freemius.com/wordpress/' :
41
- // Insights platform information.
42
- 'https://freemius.com/wordpress/usage-tracking/';
43
-
44
- $freemius_site_url .= '?' . http_build_query( array(
45
- 'id' => $fs->get_id(),
46
- 'slug' => $slug,
47
- ) );
48
-
49
- $freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="1">freemius.com</a>';
50
-
51
- $error = fs_request_get( 'error' );
52
-
53
- $require_license_key = $is_premium_only ||
54
- ( $is_freemium && $is_premium_code && fs_request_get_bool( 'require_license', true ) );
55
-
56
- if ( $is_pending_activation ) {
57
- $require_license_key = false;
58
- }
59
-
60
- if ( $require_license_key ) {
61
- $fs->_add_license_activation_dialog_box();
62
- }
63
-
64
- $fs_user = Freemius::_get_user_by_email( $current_user->user_email );
65
- $activate_with_current_user = is_object( $fs_user ) && ! $is_pending_activation;
66
- ?>
67
- <div id="fs_connect"
68
- class="wrap<?php if ( ! $fs->is_enable_anonymous() || $is_pending_activation || $require_license_key ) {
69
- echo ' fs-anonymous-disabled';
70
- } ?>">
71
- <div class="fs-visual">
72
- <b class="fs-site-icon"><i class="dashicons dashicons-wordpress"></i></b>
73
- <i class="dashicons dashicons-plus fs-first"></i>
74
- <?php
75
- $vars = array( 'slug' => $slug );
76
- fs_require_once_template( 'plugin-icon.php', $vars );
77
- ?>
78
- <i class="dashicons dashicons-plus fs-second"></i>
79
- <img class="fs-connect-logo" width="80" height="80" src="//img.freemius.com/connect-logo.png"/>
80
- </div>
81
- <div class="fs-content">
82
- <?php if ( ! empty( $error ) ) : ?>
83
- <p class="fs-error"><?php echo $error ?></p>
84
- <?php endif ?>
85
- <p><?php
86
- $button_label = 'opt-in-connect';
87
-
88
- if ( $is_pending_activation ) {
89
- $button_label = 'resend-activation-email';
90
-
91
- echo $fs->apply_filters( 'pending_activation_message', sprintf(
92
- __fs( 'thanks-x', $slug ) . '<br>' .
93
- __fs( 'pending-activation-message', $slug ),
94
- $first_name,
95
- '<b>' . $fs->get_plugin_name() . '</b>',
96
- '<b>' . $current_user->user_email . '</b>',
97
- __fs( 'complete-the-install', $slug )
98
- ) );
99
- } else if ( $require_license_key ) {
100
- $button_label = 'agree-activate-license';
101
-
102
- echo $fs->apply_filters( 'connect-message_on-premium',
103
- sprintf( __fs( 'hey-x', $slug ), $first_name ) . '<br>' .
104
- sprintf( __fs( 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
105
- $first_name,
106
- $fs->get_plugin_name()
107
- );
108
- } else {
109
- $filter = 'connect_message';
110
- $default_optin_message = 'connect-message';
111
-
112
- if ( $fs->is_plugin_update() ) {
113
- // If Freemius was added on a plugin update, set different
114
- // opt-in message.
115
- $default_optin_message = 'connect-message_on-update';
116
-
117
- // If user customized the opt-in message on update, use
118
- // that message. Otherwise, fallback to regular opt-in
119
- // custom message if exist.
120
- if ( $fs->has_filter( 'connect_message_on_update' ) ) {
121
- $filter = 'connect_message_on_update';
122
- }
123
- }
124
-
125
- echo $fs->apply_filters( $filter,
126
- sprintf( __fs( 'hey-x', $slug ), $first_name ) . '<br>' .
127
- sprintf(
128
- __fs( $default_optin_message, $slug ),
129
- '<b>' . $fs->get_plugin_name() . '</b>',
130
- '<b>' . $current_user->user_login . '</b>',
131
- '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
132
- $freemius_link
133
- ),
134
- $first_name,
135
- $fs->get_plugin_name(),
136
- $current_user->user_login,
137
- '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
138
- $freemius_link
139
- );
140
- }
141
- ?></p>
142
- <?php if ( $require_license_key ) : ?>
143
- <div class="fs-license-key-container">
144
- <input id="fs_license_key" name="fs_key" type="text" required maxlength="32"
145
- placeholder="<?php _efs( 'license-key', $slug ) ?>" tabindex="1"/>
146
- <i class="dashicons dashicons-admin-network"></i>
147
- <a class="show-license-resend-modal show-license-resend-modal-<?php echo $slug; ?>"
148
- href="#"><?php _efs( 'cant-find-license-key' ); ?></a>
149
- </div>
150
- <?php endif ?>
151
- </div>
152
- <div class="fs-actions">
153
- <?php if ( $fs->is_enable_anonymous() && ! $is_pending_activation && ! $require_license_key ) : ?>
154
- <a href="<?php echo fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ) ?>"
155
- class="button button-secondary" tabindex="2"><?php _efs( 'skip', $slug ) ?></a>
156
- <?php endif ?>
157
-
158
- <?php if ( $activate_with_current_user ) : ?>
159
- <form action="" method="POST">
160
- <input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
161
- <?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
162
- <button class="button button-primary" tabindex="1"
163
- type="submit"<?php if ( $require_license_key ) {
164
- echo ' disabled="disabled"';
165
- } ?>><?php _efs( $button_label, $slug ) ?></button>
166
- </form>
167
- <?php else : ?>
168
- <form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
169
- <?php $params = $fs->get_opt_in_params() ?>
170
- <?php foreach ( $params as $name => $value ) : ?>
171
- <input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
172
- <?php endforeach ?>
173
- <button class="button button-primary" tabindex="1"
174
- type="submit"<?php if ( $require_license_key ) {
175
- echo ' disabled="disabled"';
176
- } ?>><?php _efs( $button_label, $slug ) ?></button>
177
- </form>
178
- <?php endif ?>
179
- </div><?php
180
-
181
- // Set core permission list items.
182
- $permissions = array(
183
- 'profile' => array(
184
- 'icon-class' => 'dashicons dashicons-admin-users',
185
- 'label' => __fs( 'permissions-profile' ),
186
- 'desc' => __fs( 'permissions-profile_desc' ),
187
- 'priority' => 5,
188
- ),
189
- 'site' => array(
190
- 'icon-class' => 'dashicons dashicons-admin-settings',
191
- 'label' => __fs( 'permissions-site' ),
192
- 'desc' => __fs( 'permissions-site_desc' ),
193
- 'priority' => 10,
194
- ),
195
- 'notices' => array(
196
- 'icon-class' => 'dashicons dashicons-testimonial',
197
- 'label' => __fs( 'permissions-admin-notices' ),
198
- 'desc' => __fs( 'permissions-newsletter_desc' ),
199
- 'priority' => 13,
200
- ),
201
- 'events' => array(
202
- 'icon-class' => 'dashicons dashicons-admin-plugins',
203
- 'label' => __fs( 'permissions-events' ),
204
- 'desc' => __fs( 'permissions-events_desc' ),
205
- 'priority' => 20,
206
- ),
207
- // 'plugins_themes' => array(
208
- // 'icon-class' => 'dashicons dashicons-admin-settings',
209
- // 'label' => __fs( 'permissions-plugins_themes' ),
210
- // 'desc' => __fs( 'permissions-plugins_themes_desc' ),
211
- // 'priority' => 30,
212
- // ),
213
- );
214
-
215
- // Add newsletter permissions if enabled.
216
- if ( $fs->is_permission_requested( 'newsletter' ) ) {
217
- $permissions['newsletter'] = array(
218
- 'icon-class' => 'dashicons dashicons-email-alt',
219
- 'label' => __fs( 'permissions-newsletter' ),
220
- 'desc' => __fs( 'permissions-newsletter_desc' ),
221
- 'priority' => 15,
222
- );
223
- }
224
-
225
- // Allow filtering of the permissions list.
226
- $permissions = $fs->apply_filters( 'permission_list', $permissions );
227
-
228
- // Sort by priority.
229
- uasort( $permissions, 'fs_sort_by_priority' );
230
-
231
- if ( ! empty( $permissions ) ) : ?>
232
- <div class="fs-permissions">
233
- <?php if ( $require_license_key ) : ?>
234
- <p class="fs-license-sync-disclaimer"><?php printf( __fs( 'license-sync-disclaimer', $slug ), $freemius_link ) ?></p>
235
- <?php endif ?>
236
- <a class="fs-trigger" href="#" tabindex="1"><?php _efs( 'what-permissions', $slug ) ?></a>
237
- <ul><?php
238
- foreach ( $permissions as $id => $permission ) : ?>
239
- <li id="fs-permission-<?php echo esc_attr( $id ); ?>"
240
- class="fs-permission fs-<?php echo esc_attr( $id ); ?>">
241
- <i class="<?php echo esc_attr( $permission['icon-class'] ); ?>"></i>
242
-
243
- <div>
244
- <span><?php echo esc_html( $permission['label'] ); ?></span>
245
-
246
- <p><?php echo esc_html( $permission['desc'] ); ?></p>
247
- </div>
248
- </li>
249
- <?php endforeach; ?>
250
- </ul>
251
- </div>
252
- <?php endif ?>
253
- <?php if ( $is_premium_code && $is_freemium ) : ?>
254
- <div class="fs-freemium-licensing">
255
- <p>
256
- <?php if ( $require_license_key ) : ?>
257
- <?php _efs( 'dont-have-license-key', $slug ) ?>
258
- <a data-require-license="false" tabindex="1"><?php _efs( 'activate-free-version', $slug ) ?></a>
259
- <?php else : ?>
260
- <?php _efs( 'have-license-key', $slug ) ?>
261
- <a data-require-license="true" tabindex="1"><?php _efs( 'activate-license', $slug ) ?></a>
262
- <?php endif ?>
263
- </p>
264
- </div>
265
- <?php endif ?>
266
- <div class="fs-terms">
267
- <a href="https://freemius.com/privacy/" target="_blank"
268
- tabindex="1"><?php _efs( 'privacy-policy', $slug ) ?></a>
269
- &nbsp;&nbsp;-&nbsp;&nbsp;
270
- <a href="https://freemius.com/terms/" target="_blank" tabindex="1"><?php _efs( 'tos', $slug ) ?></a>
271
- </div>
272
- </div>
273
- <script type="text/javascript">
274
- (function ($) {
275
- var $primaryCta = $('.fs-actions .button.button-primary'),
276
- $form = $('.fs-actions form'),
277
- requireLicenseKey = <?php echo $require_license_key ? 'true' : 'false' ?>,
278
- hasContextUser = <?php echo $activate_with_current_user ? 'true' : 'false' ?>,
279
- $licenseSecret,
280
- $licenseKeyInput = $('#fs_license_key');
281
-
282
- $('.fs-actions .button').on('click', function () {
283
- // Set loading mode.
284
- $(document.body).css({'cursor': 'wait'});
285
-
286
- var $this = $(this);
287
- $this.css({'cursor': 'wait'});
288
-
289
- setTimeout(function () {
290
- $this.attr('disabled', 'disabled');
291
- }, 200);
292
- });
293
-
294
- $form.on('submit', function () {
295
- /**
296
- * @author Vova Feldman (@svovaf)
297
- * @since 1.1.9
298
- */
299
- if (requireLicenseKey) {
300
- if (!hasContextUser) {
301
- $('.fs-error').remove();
302
-
303
- /**
304
- * Use the AJAX opt-in when license key is required to potentially
305
- * process the after install failure hook.
306
- *
307
- * @author Vova Feldman (@svovaf)
308
- * @since 1.2.1.5
309
- */
310
- $.ajax({
311
- url : ajaxurl,
312
- method : 'POST',
313
- data : {
314
- action : 'fs_activate_license_<?php echo $slug ?>',
315
- slug : '<?php echo $slug ?>',
316
- license_key: $licenseKeyInput.val()
317
- },
318
- success: function (result) {
319
- var resultObj = $.parseJSON(result);
320
- if (resultObj.success) {
321
- // Redirect to the "Account" page and sync the license.
322
- window.location.href = resultObj.next_page;
323
- } else {
324
- // Show error.
325
- $('.fs-content').prepend('<p class="fs-error">' + resultObj.error + '</p>');
326
-
327
- // Reset loading mode.
328
- $primaryCta.removeClass('fs-loading').css({'cursor': 'auto'});
329
- $primaryCta.html(<?php echo json_encode(__fs( $button_label, $slug )) ?>);
330
- $primaryCta.prop('disabled', false);
331
- $(document.body).css({'cursor': 'auto'});
332
- }
333
- }
334
- });
335
-
336
- return false;
337
- }
338
- else {
339
- if (null == $licenseSecret) {
340
- $licenseSecret = $('<input type="hidden" name="license_secret_key" value="" />');
341
- $form.append($licenseSecret);
342
- }
343
-
344
- // Update secret key if premium only plugin.
345
- $licenseSecret.val($licenseKeyInput.val());
346
- }
347
- }
348
-
349
- return true;
350
- });
351
-
352
- $primaryCta.on('click', function () {
353
- $(this).addClass('fs-loading');
354
- $(this).html(<?php echo json_encode(__fs( $is_pending_activation ? 'sending-email' : 'activating' , $slug )) ?> +'...');
355
- });
356
-
357
- $('.fs-permissions .fs-trigger').on('click', function () {
358
- $('.fs-permissions').toggleClass('fs-open');
359
- });
360
-
361
- if (requireLicenseKey) {
362
- /**
363
- * Submit license key on enter.
364
- *
365
- * @author Vova Feldman (@svovaf)
366
- * @since 1.1.9
367
- */
368
- $licenseKeyInput.keypress(function (e) {
369
- if (e.which == 13) {
370
- if ('' !== $(this).val()) {
371
- $primaryCta.click();
372
- return false;
373
- }
374
- }
375
- });
376
-
377
- /**
378
- * Disable activation button when empty license key.
379
- *
380
- * @author Vova Feldman (@svovaf)
381
- * @since 1.1.9
382
- */
383
- $licenseKeyInput.on('keyup paste delete cut', function () {
384
- setTimeout(function () {
385
- if ('' === $licenseKeyInput.val()) {
386
- $primaryCta.attr('disabled', 'disabled');
387
- } else {
388
- $primaryCta.prop('disabled', false);
389
- }
390
- }, 100);
391
- }).focus();
392
- }
393
-
394
- /**
395
- * Set license mode trigger URL.
396
- *
397
- * @author Vova Feldman (@svovaf)
398
- * @since 1.1.9
399
- */
400
- var $connectLicenseModeTrigger = $('#fs_connect .fs-freemium-licensing a');
401
- if ($connectLicenseModeTrigger.length > 0) {
402
- $connectLicenseModeTrigger.attr('href', window.location.href + '&require_license=' + $connectLicenseModeTrigger.attr('data-require-license'))
403
- }
404
- })(jQuery);
 
 
405
  </script>
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.0.7
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * @var array $VARS
15
+ */
16
+ $slug = $VARS['slug'];
17
+ $fs = freemius( $slug );
18
+ $is_pending_activation = $fs->is_pending_activation();
19
+ $is_premium_only = $fs->is_only_premium();
20
+ $has_paid_plans = $fs->has_paid_plan();
21
+ $is_premium_code = $fs->is_premium();
22
+ $is_freemium = $fs->is_freemium();
23
+
24
+ $fs->_enqueue_connect_essentials();
25
+
26
+ $current_user = Freemius::_get_current_wp_user();
27
+
28
+ $first_name = $current_user->user_firstname;
29
+ if ( empty( $first_name ) ) {
30
+ $first_name = $current_user->nickname;
31
+ }
32
+
33
+ $site_url = get_site_url();
34
+ $protocol_pos = strpos( $site_url, '://' );
35
+ if ( false !== $protocol_pos ) {
36
+ $site_url = substr( $site_url, $protocol_pos + 3 );
37
+ }
38
+
39
+ $freemius_site_www = 'https://freemius.com';
40
+
41
+ $freemius_site_url = $freemius_site_www . '/' . ($fs->has_paid_plan() ?
42
+ 'wordpress/' :
43
+ // Insights platform information.
44
+ 'wordpress/usage-tracking/');
45
+
46
+ $freemius_site_url .= '?' . http_build_query( array(
47
+ 'id' => $fs->get_id(),
48
+ 'slug' => $slug,
49
+ ) );
50
+
51
+ $freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="1">freemius.com</a>';
52
+
53
+ $error = fs_request_get( 'error' );
54
+
55
+ $require_license_key = $is_premium_only ||
56
+ ( $is_freemium && $is_premium_code && fs_request_get_bool( 'require_license', true ) );
57
+
58
+ if ( $is_pending_activation ) {
59
+ $require_license_key = false;
60
+ }
61
+
62
+ if ( $require_license_key ) {
63
+ $fs->_add_license_activation_dialog_box();
64
+ }
65
+
66
+ $fs_user = Freemius::_get_user_by_email( $current_user->user_email );
67
+ $activate_with_current_user = is_object( $fs_user ) && ! $is_pending_activation;
68
+ ?>
69
+ <div id="fs_connect"
70
+ class="wrap<?php if ( ! $fs->is_enable_anonymous() || $is_pending_activation || $require_license_key ) {
71
+ echo ' fs-anonymous-disabled';
72
+ } ?>">
73
+ <div class="fs-visual">
74
+ <b class="fs-site-icon"><i class="dashicons dashicons-wordpress"></i></b>
75
+ <i class="dashicons dashicons-plus fs-first"></i>
76
+ <?php
77
+ $vars = array( 'slug' => $slug );
78
+ fs_require_once_template( 'plugin-icon.php', $vars );
79
+ ?>
80
+ <i class="dashicons dashicons-plus fs-second"></i>
81
+ <img class="fs-connect-logo" width="80" height="80" src="//img.freemius.com/connect-logo.png"/>
82
+ </div>
83
+ <div class="fs-content">
84
+ <?php if ( ! empty( $error ) ) : ?>
85
+ <p class="fs-error"><?php echo esc_html( $error ) ?></p>
86
+ <?php endif ?>
87
+ <p><?php
88
+ $button_label = 'opt-in-connect';
89
+
90
+ if ( $is_pending_activation ) {
91
+ $button_label = 'resend-activation-email';
92
+
93
+ echo $fs->apply_filters( 'pending_activation_message', sprintf(
94
+ __fs( 'thanks-x', $slug ) . '<br>' .
95
+ __fs( 'pending-activation-message', $slug ),
96
+ $first_name,
97
+ '<b>' . $fs->get_plugin_name() . '</b>',
98
+ '<b>' . $current_user->user_email . '</b>',
99
+ __fs( 'complete-the-install', $slug )
100
+ ) );
101
+ } else if ( $require_license_key ) {
102
+ $button_label = 'agree-activate-license';
103
+
104
+ echo $fs->apply_filters( 'connect-message_on-premium',
105
+ sprintf( __fs( 'hey-x', $slug ), $first_name ) . '<br>' .
106
+ sprintf( __fs( 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
107
+ $first_name,
108
+ $fs->get_plugin_name()
109
+ );
110
+ } else {
111
+ $filter = 'connect_message';
112
+ $default_optin_message = 'connect-message';
113
+
114
+ if ( $fs->is_plugin_update() ) {
115
+ // If Freemius was added on a plugin update, set different
116
+ // opt-in message.
117
+ $default_optin_message = 'connect-message_on-update';
118
+
119
+ // If user customized the opt-in message on update, use
120
+ // that message. Otherwise, fallback to regular opt-in
121
+ // custom message if exist.
122
+ if ( $fs->has_filter( 'connect_message_on_update' ) ) {
123
+ $filter = 'connect_message_on_update';
124
+ }
125
+ }
126
+
127
+ echo $fs->apply_filters( $filter,
128
+ sprintf( __fs( 'hey-x', $slug ), $first_name ) . '<br>' .
129
+ sprintf(
130
+ __fs( $default_optin_message, $slug ),
131
+ '<b>' . $fs->get_plugin_name() . '</b>',
132
+ '<b>' . $current_user->user_login . '</b>',
133
+ '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
134
+ $freemius_link
135
+ ),
136
+ $first_name,
137
+ $fs->get_plugin_name(),
138
+ $current_user->user_login,
139
+ '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
140
+ $freemius_link
141
+ );
142
+ }
143
+ ?></p>
144
+ <?php if ( $require_license_key ) : ?>
145
+ <div class="fs-license-key-container">
146
+ <input id="fs_license_key" name="fs_key" type="text" required maxlength="32"
147
+ placeholder="<?php _efs( 'license-key', $slug ) ?>" tabindex="1"/>
148
+ <i class="dashicons dashicons-admin-network"></i>
149
+ <a class="show-license-resend-modal show-license-resend-modal-<?php echo $slug; ?>"
150
+ href="#"><?php _efs( 'cant-find-license-key' ); ?></a>
151
+ </div>
152
+ <?php endif ?>
153
+ </div>
154
+ <div class="fs-actions">
155
+ <?php if ( $fs->is_enable_anonymous() && ! $is_pending_activation && ! $require_license_key ) : ?>
156
+ <a href="<?php echo fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ) ?>"
157
+ class="button button-secondary" tabindex="2"><?php _efs( 'skip', $slug ) ?></a>
158
+ <?php endif ?>
159
+
160
+ <?php if ( $activate_with_current_user ) : ?>
161
+ <form action="" method="POST">
162
+ <input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
163
+ <?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
164
+ <button class="button button-primary" tabindex="1"
165
+ type="submit"<?php if ( $require_license_key ) {
166
+ echo ' disabled="disabled"';
167
+ } ?>><?php _efs( $button_label, $slug ) ?></button>
168
+ </form>
169
+ <?php else : ?>
170
+ <form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
171
+ <?php $params = $fs->get_opt_in_params() ?>
172
+ <?php foreach ( $params as $name => $value ) : ?>
173
+ <input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
174
+ <?php endforeach ?>
175
+ <button class="button button-primary" tabindex="1"
176
+ type="submit"<?php if ( $require_license_key ) {
177
+ echo ' disabled="disabled"';
178
+ } ?>><?php _efs( $button_label, $slug ) ?></button>
179
+ </form>
180
+ <?php endif ?>
181
+ </div><?php
182
+
183
+ // Set core permission list items.
184
+ $permissions = array(
185
+ 'profile' => array(
186
+ 'icon-class' => 'dashicons dashicons-admin-users',
187
+ 'label' => __fs( 'permissions-profile' ),
188
+ 'desc' => __fs( 'permissions-profile_desc' ),
189
+ 'priority' => 5,
190
+ ),
191
+ 'site' => array(
192
+ 'icon-class' => 'dashicons dashicons-admin-settings',
193
+ 'label' => __fs( 'permissions-site' ),
194
+ 'desc' => __fs( 'permissions-site_desc' ),
195
+ 'priority' => 10,
196
+ ),
197
+ 'notices' => array(
198
+ 'icon-class' => 'dashicons dashicons-testimonial',
199
+ 'label' => __fs( 'permissions-admin-notices' ),
200
+ 'desc' => __fs( 'permissions-newsletter_desc' ),
201
+ 'priority' => 13,
202
+ ),
203
+ 'events' => array(
204
+ 'icon-class' => 'dashicons dashicons-admin-plugins',
205
+ 'label' => __fs( 'permissions-events' ),
206
+ 'desc' => __fs( 'permissions-events_desc' ),
207
+ 'priority' => 20,
208
+ ),
209
+ // 'plugins_themes' => array(
210
+ // 'icon-class' => 'dashicons dashicons-admin-settings',
211
+ // 'label' => __fs( 'permissions-plugins_themes' ),
212
+ // 'desc' => __fs( 'permissions-plugins_themes_desc' ),
213
+ // 'priority' => 30,
214
+ // ),
215
+ );
216
+
217
+ // Add newsletter permissions if enabled.
218
+ if ( $fs->is_permission_requested( 'newsletter' ) ) {
219
+ $permissions['newsletter'] = array(
220
+ 'icon-class' => 'dashicons dashicons-email-alt',
221
+ 'label' => __fs( 'permissions-newsletter' ),
222
+ 'desc' => __fs( 'permissions-newsletter_desc' ),
223
+ 'priority' => 15,
224
+ );
225
+ }
226
+
227
+ // Allow filtering of the permissions list.
228
+ $permissions = $fs->apply_filters( 'permission_list', $permissions );
229
+
230
+ // Sort by priority.
231
+ uasort( $permissions, 'fs_sort_by_priority' );
232
+
233
+ if ( ! empty( $permissions ) ) : ?>
234
+ <div class="fs-permissions">
235
+ <?php if ( $require_license_key ) : ?>
236
+ <p class="fs-license-sync-disclaimer"><?php printf( __fs( 'license-sync-disclaimer', $slug ), $freemius_link ) ?></p>
237
+ <?php endif ?>
238
+ <a class="fs-trigger" href="#" tabindex="1"><?php _efs( 'what-permissions', $slug ) ?></a>
239
+ <ul><?php
240
+ foreach ( $permissions as $id => $permission ) : ?>
241
+ <li id="fs-permission-<?php echo esc_attr( $id ); ?>"
242
+ class="fs-permission fs-<?php echo esc_attr( $id ); ?>">
243
+ <i class="<?php echo esc_attr( $permission['icon-class'] ); ?>"></i>
244
+
245
+ <div>
246
+ <span><?php echo esc_html( $permission['label'] ); ?></span>
247
+
248
+ <p><?php echo esc_html( $permission['desc'] ); ?></p>
249
+ </div>
250
+ </li>
251
+ <?php endforeach; ?>
252
+ </ul>
253
+ </div>
254
+ <?php endif ?>
255
+ <?php if ( $is_premium_code && $is_freemium ) : ?>
256
+ <div class="fs-freemium-licensing">
257
+ <p>
258
+ <?php if ( $require_license_key ) : ?>
259
+ <?php _efs( 'dont-have-license-key', $slug ) ?>
260
+ <a data-require-license="false" tabindex="1"><?php _efs( 'activate-free-version', $slug ) ?></a>
261
+ <?php else : ?>
262
+ <?php _efs( 'have-license-key', $slug ) ?>
263
+ <a data-require-license="true" tabindex="1"><?php _efs( 'activate-license', $slug ) ?></a>
264
+ <?php endif ?>
265
+ </p>
266
+ </div>
267
+ <?php endif ?>
268
+ <div class="fs-terms">
269
+ <a href="https://freemius.com/privacy/" target="_blank"
270
+ tabindex="1"><?php _efs( 'privacy-policy', $slug ) ?></a>
271
+ &nbsp;&nbsp;-&nbsp;&nbsp;
272
+ <a href="<?php echo $freemius_site_www ?>/terms/" target="_blank" tabindex="1"><?php _efs( 'tos', $slug ) ?></a>
273
+ </div>
274
+ </div>
275
+ <script type="text/javascript">
276
+ (function ($) {
277
+ var $primaryCta = $('.fs-actions .button.button-primary'),
278
+ $form = $('.fs-actions form'),
279
+ requireLicenseKey = <?php echo $require_license_key ? 'true' : 'false' ?>,
280
+ hasContextUser = <?php echo $activate_with_current_user ? 'true' : 'false' ?>,
281
+ $licenseSecret,
282
+ $licenseKeyInput = $('#fs_license_key');
283
+
284
+ $('.fs-actions .button').on('click', function () {
285
+ // Set loading mode.
286
+ $(document.body).css({'cursor': 'wait'});
287
+
288
+ var $this = $(this);
289
+ $this.css({'cursor': 'wait'});
290
+
291
+ setTimeout(function () {
292
+ $this.attr('disabled', 'disabled');
293
+ }, 200);
294
+ });
295
+
296
+ $form.on('submit', function () {
297
+ /**
298
+ * @author Vova Feldman (@svovaf)
299
+ * @since 1.1.9
300
+ */
301
+ if (requireLicenseKey) {
302
+ if (!hasContextUser) {
303
+ $('.fs-error').remove();
304
+
305
+ /**
306
+ * Use the AJAX opt-in when license key is required to potentially
307
+ * process the after install failure hook.
308
+ *
309
+ * @author Vova Feldman (@svovaf)
310
+ * @since 1.2.1.5
311
+ */
312
+ $.ajax({
313
+ url : ajaxurl,
314
+ method : 'POST',
315
+ data : {
316
+ action : 'fs_activate_license_<?php echo $slug ?>',
317
+ slug : '<?php echo $slug ?>',
318
+ license_key: $licenseKeyInput.val()
319
+ },
320
+ success: function (result) {
321
+ var resultObj = $.parseJSON(result);
322
+ if (resultObj.success) {
323
+ // Redirect to the "Account" page and sync the license.
324
+ window.location.href = resultObj.next_page;
325
+ } else {
326
+ // Show error.
327
+ $('.fs-content').prepend('<p class="fs-error">' + resultObj.error + '</p>');
328
+
329
+ // Reset loading mode.
330
+ $primaryCta.removeClass('fs-loading').css({'cursor': 'auto'});
331
+ $primaryCta.html(<?php echo json_encode(__fs( $button_label, $slug )) ?>);
332
+ $primaryCta.prop('disabled', false);
333
+ $(document.body).css({'cursor': 'auto'});
334
+ }
335
+ }
336
+ });
337
+
338
+ return false;
339
+ }
340
+ else {
341
+ if (null == $licenseSecret) {
342
+ $licenseSecret = $('<input type="hidden" name="license_secret_key" value="" />');
343
+ $form.append($licenseSecret);
344
+ }
345
+
346
+ // Update secret key if premium only plugin.
347
+ $licenseSecret.val($licenseKeyInput.val());
348
+ }
349
+ }
350
+
351
+ return true;
352
+ });
353
+
354
+ $primaryCta.on('click', function () {
355
+ $(this).addClass('fs-loading');
356
+ $(this).html(<?php echo json_encode(__fs( $is_pending_activation ? 'sending-email' : 'activating' , $slug )) ?> +'...');
357
+ });
358
+
359
+ $('.fs-permissions .fs-trigger').on('click', function () {
360
+ $('.fs-permissions').toggleClass('fs-open');
361
+ });
362
+
363
+ if (requireLicenseKey) {
364
+ /**
365
+ * Submit license key on enter.
366
+ *
367
+ * @author Vova Feldman (@svovaf)
368
+ * @since 1.1.9
369
+ */
370
+ $licenseKeyInput.keypress(function (e) {
371
+ if (e.which == 13) {
372
+ if ('' !== $(this).val()) {
373
+ $primaryCta.click();
374
+ return false;
375
+ }
376
+ }
377
+ });
378
+
379
+ /**
380
+ * Disable activation button when empty license key.
381
+ *
382
+ * @author Vova Feldman (@svovaf)
383
+ * @since 1.1.9
384
+ */
385
+ $licenseKeyInput.on('keyup paste delete cut', function () {
386
+ setTimeout(function () {
387
+ if ('' === $licenseKeyInput.val()) {
388
+ $primaryCta.attr('disabled', 'disabled');
389
+ } else {
390
+ $primaryCta.prop('disabled', false);
391
+ }
392
+ }, 100);
393
+ }).focus();
394
+ }
395
+
396
+ /**
397
+ * Set license mode trigger URL.
398
+ *
399
+ * @author Vova Feldman (@svovaf)
400
+ * @since 1.1.9
401
+ */
402
+ var $connectLicenseModeTrigger = $('#fs_connect .fs-freemium-licensing a');
403
+ if ($connectLicenseModeTrigger.length > 0) {
404
+ $connectLicenseModeTrigger.attr('href', window.location.href + '&require_license=' + $connectLicenseModeTrigger.attr('data-require-license'))
405
+ }
406
+ })(jQuery);
407
  </script>
includes/pum-sdk/freemius/templates/debug.php CHANGED
@@ -14,70 +14,70 @@
14
 
15
  $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
16
  ?>
17
- <h1><?php echo __fs( 'Freemius Debug' ) . ' - ' . __fs( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
18
- <div>
19
- <!-- Debugging Switch -->
20
- <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
21
- <span class="switch-label"><?php _efs( 'debugging' ) ?></span>
22
-
23
- <div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
24
- <div class="toggle"></div>
25
- <span class="on"><?php _efs( 'on' ) ?></span>
26
- <span class="off"><?php _efs( 'off' ) ?></span>
27
- </div>
28
- <script type="text/javascript">
29
- (function ($) {
30
- $(document).ready(function () {
31
- // Switch toggle
32
- $('.switch').click(function () {
33
- $(this)
34
- .toggleClass('on')
35
- .toggleClass('off');
36
-
37
- $.post(ajaxurl, {
38
- action: 'fs_toggle_debug_mode',
39
- is_on : ($(this).hasClass('off') ? 1 : 0)
40
- }, function (response) {
41
- if (1 == response) {
42
- // Refresh page on success.
43
- location.reload();
44
- }
45
- });
46
  });
47
  });
48
- }(jQuery));
49
- </script>
50
- </div>
51
- <h2><?php _efs( 'actions' ) ?></h2>
52
- <table>
53
- <tbody>
54
- <tr>
55
- <td>
56
- <!-- Delete All Accounts -->
57
- <form action="" method="POST">
58
- <input type="hidden" name="fs_action" value="restart_freemius">
59
- <?php wp_nonce_field( 'restart_freemius' ) ?>
60
- <button class="button button-primary"
61
- onclick="if (confirm('<?php _efs( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php _efs( 'delete-all-accounts' ) ?></button>
62
- </form>
63
- </td>
64
- <td>
65
- <!-- Clear API Cache -->
66
- <form action="" method="POST">
67
- <input type="hidden" name="fs_clear_api_cache" value="true">
68
- <button class="button button-primary"><?php _efs( 'clear-api-cache' ) ?></button>
69
- </form>
70
- </td>
71
- <td>
72
- <!-- Sync Data with Server -->
73
- <form action="" method="POST">
74
- <input type="hidden" name="background_sync" value="true">
75
- <button class="button button-primary"><?php _efs( 'sync-data-from-server' ) ?></button>
76
- </form>
77
- </td>
78
- </tr>
79
- </tbody>
80
- </table>
 
81
  <?php
82
  if ( ! defined( 'FS_API__ADDRESS' ) ) {
83
  define( 'FS_API__ADDRESS', '://api.freemius.com' );
@@ -109,51 +109,51 @@
109
  ),
110
  )
111
  ?>
112
- <br>
113
- <table class="widefat">
114
- <thead>
115
- <tr>
116
- <th><?php _efs( 'key' ) ?></th>
117
- <th><?php _efs( 'value' ) ?></th>
118
- </tr>
119
- </thead>
120
- <tbody>
121
- <?php $alternate = false;
122
- foreach ( $defines as $p ) : ?>
123
- <tr<?php if ( $alternate ) {
124
- echo ' class="alternate"';
125
- } ?>>
126
- <td><?php echo $p['key'] ?></td>
127
- <td><?php echo $p['val'] ?></td>
128
- </tr>
129
- <?php $alternate = ! $alternate ?>
130
- <?php endforeach ?>
131
- </tbody>
132
- </table>
133
- <h2><?php _efs( 'sdk-versions' ) ?></h2>
134
- <table id="fs_sdks" class="widefat">
135
- <thead>
136
- <tr>
137
- <th><?php _efs( 'version' ) ?></th>
138
- <th><?php _efs( 'sdk-path' ) ?></th>
139
- <th><?php _efs( 'plugin-path' ) ?></th>
140
- <th><?php _efs( 'is-active' ) ?></th>
141
- </tr>
142
- </thead>
143
- <tbody>
144
- <?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?>
145
- <?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
146
- <tr<?php if ( $is_active ) {
147
- echo ' style="background: #E6FFE6; font-weight: bold"';
148
  } ?>>
149
- <td><?php echo $data->version ?></td>
150
- <td><?php echo $sdk_path ?></td>
151
- <td><?php echo $data->plugin_path ?></td>
152
- <td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
153
  </tr>
 
154
  <?php endforeach ?>
155
- </tbody>
156
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  <?php $plugins = $fs_options->get_option( 'plugins' ) ?>
158
  <?php if ( is_array( $plugins ) && 0 < count( $plugins ) ) : ?>
159
  <h2><?php _efs( 'plugins' ) ?></h2>
@@ -176,9 +176,9 @@
176
  <?php $is_active = is_plugin_active( $data->file ) ?>
177
  <?php $fs = $is_active ? freemius( $slug ) : null ?>
178
  <tr<?php if ( $is_active ) {
179
- if ($fs->has_api_connectivity() && $fs->is_on()) {
180
  echo ' style="background: #E6FFE6; font-weight: bold"';
181
- }else{
182
  echo ' style="background: #ffd0d0; font-weight: bold"';
183
  }
184
  } ?>>
@@ -203,13 +203,15 @@
203
  <td><?php echo $data->file ?></td>
204
  <td><?php echo $data->public_key ?></td>
205
  <td>
206
- <?php if ($is_active && $fs->has_trial_plan()) : ?>
207
- <form action="" method="POST">
208
- <input type="hidden" name="fs_action" value="simulate_trial">
209
- <input type="hidden" name="slug" value="<?php echo $slug ?>">
210
- <?php wp_nonce_field( 'simulate_trial' ) ?>
211
 
212
- <button type="submit" class="button button-primary simulate-trial"><?php _efs( 'Simulate Trial' ) ?></button>
 
 
213
  <?php endif ?>
214
  </td>
215
  </tr>
@@ -320,6 +322,7 @@
320
  </tbody>
321
  </table>
322
  <?php endif ?>
 
323
  <?php
324
  /**
325
  * @var FS_Plugin_License[] $licenses
@@ -364,4 +367,177 @@
364
  <?php endforeach ?>
365
  </tbody>
366
  </table>
367
- <?php endif ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
16
  ?>
17
+ <h1><?php echo __fs( 'Freemius Debug' ) . ' - ' . __fs( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
18
+ <div>
19
+ <!-- Debugging Switch -->
20
+ <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
21
+ <span class="switch-label"><?php _efs( 'debugging' ) ?></span>
22
+
23
+ <div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
24
+ <div class="toggle"></div>
25
+ <span class="on"><?php _efs( 'on' ) ?></span>
26
+ <span class="off"><?php _efs( 'off' ) ?></span>
27
+ </div>
28
+ <script type="text/javascript">
29
+ (function ($) {
30
+ $(document).ready(function () {
31
+ // Switch toggle
32
+ $('.switch').click(function () {
33
+ $(this)
34
+ .toggleClass('on')
35
+ .toggleClass('off');
36
+
37
+ $.post(ajaxurl, {
38
+ action: 'fs_toggle_debug_mode',
39
+ is_on : ($(this).hasClass('off') ? 1 : 0)
40
+ }, function (response) {
41
+ if (1 == response) {
42
+ // Refresh page on success.
43
+ location.reload();
44
+ }
 
45
  });
46
  });
47
+ });
48
+ }(jQuery));
49
+ </script>
50
+ </div>
51
+ <h2><?php _efs( 'actions' ) ?></h2>
52
+ <table>
53
+ <tbody>
54
+ <tr>
55
+ <td>
56
+ <!-- Delete All Accounts -->
57
+ <form action="" method="POST">
58
+ <input type="hidden" name="fs_action" value="restart_freemius">
59
+ <?php wp_nonce_field( 'restart_freemius' ) ?>
60
+ <button class="button button-primary"
61
+ onclick="if (confirm('<?php _efs( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php _efs( 'delete-all-accounts' ) ?></button>
62
+ </form>
63
+ </td>
64
+ <td>
65
+ <!-- Clear API Cache -->
66
+ <form action="" method="POST">
67
+ <input type="hidden" name="fs_clear_api_cache" value="true">
68
+ <button class="button button-primary"><?php _efs( 'clear-api-cache' ) ?></button>
69
+ </form>
70
+ </td>
71
+ <td>
72
+ <!-- Sync Data with Server -->
73
+ <form action="" method="POST">
74
+ <input type="hidden" name="background_sync" value="true">
75
+ <button class="button button-primary"><?php _efs( 'sync-data-from-server' ) ?></button>
76
+ </form>
77
+ </td>
78
+ </tr>
79
+ </tbody>
80
+ </table>
81
  <?php
82
  if ( ! defined( 'FS_API__ADDRESS' ) ) {
83
  define( 'FS_API__ADDRESS', '://api.freemius.com' );
109
  ),
110
  )
111
  ?>
112
+ <br>
113
+ <table class="widefat">
114
+ <thead>
115
+ <tr>
116
+ <th><?php _efs( 'key' ) ?></th>
117
+ <th><?php _efs( 'value' ) ?></th>
118
+ </tr>
119
+ </thead>
120
+ <tbody>
121
+ <?php $alternate = false;
122
+ foreach ( $defines as $p ) : ?>
123
+ <tr<?php if ( $alternate ) {
124
+ echo ' class="alternate"';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  } ?>>
126
+ <td><?php echo $p['key'] ?></td>
127
+ <td><?php echo $p['val'] ?></td>
 
 
128
  </tr>
129
+ <?php $alternate = ! $alternate ?>
130
  <?php endforeach ?>
131
+ </tbody>
132
+ </table>
133
+ <h2><?php _efs( 'sdk-versions' ) ?></h2>
134
+ <table id="fs_sdks" class="widefat">
135
+ <thead>
136
+ <tr>
137
+ <th><?php _efs( 'version' ) ?></th>
138
+ <th><?php _efs( 'sdk-path' ) ?></th>
139
+ <th><?php _efs( 'plugin-path' ) ?></th>
140
+ <th><?php _efs( 'is-active' ) ?></th>
141
+ </tr>
142
+ </thead>
143
+ <tbody>
144
+ <?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?>
145
+ <?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
146
+ <tr<?php if ( $is_active ) {
147
+ echo ' style="background: #E6FFE6; font-weight: bold"';
148
+ } ?>>
149
+ <td><?php echo $data->version ?></td>
150
+ <td><?php echo $sdk_path ?></td>
151
+ <td><?php echo $data->plugin_path ?></td>
152
+ <td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
153
+ </tr>
154
+ <?php endforeach ?>
155
+ </tbody>
156
+ </table>
157
  <?php $plugins = $fs_options->get_option( 'plugins' ) ?>
158
  <?php if ( is_array( $plugins ) && 0 < count( $plugins ) ) : ?>
159
  <h2><?php _efs( 'plugins' ) ?></h2>
176
  <?php $is_active = is_plugin_active( $data->file ) ?>
177
  <?php $fs = $is_active ? freemius( $slug ) : null ?>
178
  <tr<?php if ( $is_active ) {
179
+ if ( $fs->has_api_connectivity() && $fs->is_on() ) {
180
  echo ' style="background: #E6FFE6; font-weight: bold"';
181
+ } else {
182
  echo ' style="background: #ffd0d0; font-weight: bold"';
183
  }
184
  } ?>>
203
  <td><?php echo $data->file ?></td>
204
  <td><?php echo $data->public_key ?></td>
205
  <td>
206
+ <?php if ( $is_active && $fs->has_trial_plan() ) : ?>
207
+ <form action="" method="POST">
208
+ <input type="hidden" name="fs_action" value="simulate_trial">
209
+ <input type="hidden" name="slug" value="<?php echo $slug ?>">
210
+ <?php wp_nonce_field( 'simulate_trial' ) ?>
211
 
212
+ <button type="submit"
213
+ class="button button-primary simulate-trial"><?php _efs( 'Simulate Trial' ) ?></button>
214
+ </form>
215
  <?php endif ?>
216
  </td>
217
  </tr>
322
  </tbody>
323
  </table>
324
  <?php endif ?>
325
+
326
  <?php
327
  /**
328
  * @var FS_Plugin_License[] $licenses
367
  <?php endforeach ?>
368
  </tbody>
369
  </table>
370
+ <?php endif ?>
371
+
372
+ <?php if ( FS_Logger::is_storage_logging_on() ) : ?>
373
+
374
+ <h2><?php _efs( 'debug-log' ) ?></h2>
375
+
376
+ <div id="fs_debug_filters">
377
+ <select name="type">
378
+ <option value="" selected="selected"><?php _efs( 'all-types' ) ?></option>
379
+ <option value="warn_error">Warnings & Errors</option>
380
+ <option value="error">Errors</option>
381
+ <option value="warn">Warnings</option>
382
+ <option value="info">Info</option>
383
+ </select>
384
+ <select name="request_type">
385
+ <option value="" selected="selected"><?php _efs( 'all-requests' ) ?></option>
386
+ <option value="call">Sync</option>
387
+ <option value="ajax">AJAX</option>
388
+ <option value="cron">WP Cron</option>
389
+ </select>
390
+ <input name="file" type="text" placeholder="<?php _efs( 'file' ) ?>"/>
391
+ <input name="function" type="text" placeholder="<?php _efs( 'function' ) ?>"/>
392
+ <input name="process_id" type="text" placeholder="<?php _efs( 'process-id' ) ?>"/>
393
+ <input name="logger" type="text" placeholder="<?php _efs( 'logger' ) ?>"/>
394
+ <input name="message" type="text" placeholder="<?php _efs( 'message' ) ?>"/>
395
+ <div style="margin: 10px 0">
396
+ <button id="fs_filter" class="button" style="float: left"><i class="dashicons dashicons-filter"></i> <?php _efs( 'filter' ) ?>
397
+ </button>
398
+
399
+ <form action="" method="POST" style="float: left; margin-left: 10px;">
400
+ <input type="hidden" name="fs_action" value="download_logs">
401
+ <?php wp_nonce_field( 'download_logs' ) ?>
402
+ <div class="fs-filters"></div>
403
+ <button id="fs_download" class="button" type="submit"><i
404
+ class="dashicons dashicons-download"></i> <?php _efs( 'download' ) ?></button>
405
+ </form>
406
+ <div style="clear: both"></div>
407
+ </div>
408
+ </div>
409
+
410
+ <div id="fs_log_book" style="height: 300px; overflow: auto;">
411
+ <table class="widefat">
412
+ <thead>
413
+ <tr>
414
+ <th>#</th>
415
+ <th><?php _efs( 'type' ) ?></th>
416
+ <th><?php _efs( 'id' ) ?></th>
417
+ <th><?php _efs( 'function' ) ?></th>
418
+ <th><?php _efs( 'message' ) ?></th>
419
+ <th><?php _efs( 'file' ) ?></th>
420
+ <th><?php _efs( 'timestamp' ) ?></th>
421
+ </tr>
422
+ </thead>
423
+ <tbody>
424
+ <tr style="display: none">
425
+ <td>{$log.log_order}.</td>
426
+ <td class="fs-col--type">{$log.type}</td>
427
+ <td class="fs-col--logger">{$log.logger}</td>
428
+ <td class="fs-col--function">{$log.function}</td>
429
+ <td class="fs-col--message">
430
+ <a href="#" onclick="jQuery(this).parent().find('div').toggle(); return false;">
431
+ <nobr>{$log.message_short}</nobr>
432
+ </a>
433
+ <div style="display: none;">{$log.message}</div>
434
+ </td>
435
+ <td class="fs-col--file">{$log.file}:{$log.line}</td>
436
+ <td class="fs-col--timestamp">{$log.created}</td>
437
+ </tr>
438
+
439
+ </tbody>
440
+ </table>
441
+ </div>
442
+ <script type="text/javascript">
443
+ jQuery(document).ready(function ($) {
444
+ var filtersChanged = false,
445
+ offset = 0,
446
+ limit = 200,
447
+ prevFiltersSignature = null;
448
+
449
+ var getFilters = function () {
450
+ var filters = {},
451
+ signature = '';
452
+
453
+ $('#fs_debug_filters').find('select, input').each(function (i, e) {
454
+ var $element = $(e);
455
+
456
+ if ('hidden' === $element.attr('type'))
457
+ return;
458
+
459
+ var val = $element.val();
460
+ if ('' !== val.trim()) {
461
+ var name = $(e).attr('name');
462
+ filters[name] = val;
463
+ signature += name + '=' + val + '~';
464
+ }
465
+ });
466
+
467
+ if (signature != prevFiltersSignature) {
468
+ filtersChanged = true;
469
+ prevFiltersSignature = signature;
470
+ } else {
471
+ filtersChanged = false;
472
+ }
473
+
474
+ return filters;
475
+ };
476
+
477
+ $('#fs_download').parent().submit(function () {
478
+ var filters = getFilters(),
479
+ hiddenFields = '';
480
+
481
+ for (var f in filters) {
482
+ if (filters.hasOwnProperty(f)) {
483
+ hiddenFields += '<input type="hidden" name="filters[' + f + ']" value="' + filters[f] + '" />';
484
+ }
485
+ }
486
+
487
+ $(this).find('.fs-filters').html(hiddenFields);
488
+ });
489
+
490
+ var loadLogs = function () {
491
+ var $tbody = $('#fs_log_book tbody'),
492
+ template = $tbody.find('tr:first-child').html(),
493
+ filters = getFilters();
494
+
495
+ if (!filtersChanged) {
496
+ offset += limit;
497
+ } else {
498
+ // Cleanup table for new filter (only keep template row).
499
+ $tbody.find('tr').each(function(i, e){
500
+ if (0 == i)
501
+ return;
502
+
503
+ $(e).remove();
504
+ });
505
+
506
+ offset = 0;
507
+ }
508
+
509
+ $.post(ajaxurl, {
510
+ action : 'fs_get_debug_log',
511
+ filters: filters,
512
+ offset: offset,
513
+ limit: limit
514
+ }, function (response) {
515
+
516
+ for (var i = 0; i < response.data.length; i++) {
517
+ var templateCopy = template;
518
+
519
+ response.data[i].message_short = (response.data[i].message.length > 32) ?
520
+ response.data[i].message.substr(0, 32) + '...' :
521
+ response.data[i].message;
522
+
523
+ for (var p in response.data[i]) {
524
+ if (response.data[i].hasOwnProperty(p)) {
525
+ templateCopy = templateCopy.replace('{$log.' + p + '}', response.data[i][p]);
526
+ }
527
+ }
528
+
529
+ $tbody.append('<tr' + (i % 2 ? ' class="alternate"' : '') + '>' + templateCopy + '</tr>');
530
+ }
531
+ });
532
+ };
533
+
534
+ $('#fs_filter').click(function () {
535
+ loadLogs();
536
+
537
+ return false;
538
+ });
539
+
540
+ loadLogs();
541
+ });
542
+ </script>
543
+ <?php endif ?>
includes/pum-sdk/freemius/templates/debug/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/templates/debug/logger.php CHANGED
@@ -41,8 +41,8 @@
41
  } ?>>
42
  <td><?php echo $log['cnt'] ?>.</td>
43
  <td><?php echo $logger->get_id() ?></td>
44
- <td><?php echo $log['type'] ?></td>
45
- <td><b><code style="color: blue;"><?php echo $log['function'] ?></code></b></td>
46
  <td>
47
  <?php
48
  printf(
@@ -56,7 +56,7 @@
56
  </td>
57
  <td><?php
58
  if ( isset( $log['file'] ) ) {
59
- echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line'] . ')';
60
  }
61
  ?></td>
62
  <td><?php echo number_format( 100 * ( $log['timestamp'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . __fs( 'ms' ) ?></td>
41
  } ?>>
42
  <td><?php echo $log['cnt'] ?>.</td>
43
  <td><?php echo $logger->get_id() ?></td>
44
+ <td><?php echo $log['log_type'] ?></td>
45
+ <td><b><code style="color: blue;"><?php echo ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] ?></code></b></td>
46
  <td>
47
  <?php
48
  printf(
56
  </td>
57
  <td><?php
58
  if ( isset( $log['file'] ) ) {
59
+ echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line'];
60
  }
61
  ?></td>
62
  <td><?php echo number_format( 100 * ( $log['timestamp'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . __fs( 'ms' ) ?></td>
includes/pum-sdk/freemius/templates/email.php CHANGED
@@ -20,7 +20,7 @@
20
  foreach ( $sections as $section_id => $section ) {
21
  ?>
22
  <thead>
23
- <tr><th colspan="2" style="text-align: left; background: #333; color: #fff; padding: 5px;"><?php echo $section['title']; ?></th></tr>
24
  </thead>
25
  <tbody>
26
  <?php
@@ -30,10 +30,10 @@
30
  <tr>
31
  <?php
32
  if ( 1 === $col_count ) { ?>
33
- <td style="vertical-align: top;" colspan="2"><?php echo $row[0]; ?></td>
34
  <?php
35
  } else { ?>
36
- <td style="vertical-align: top;"><b><?php echo $row[0]; ?>:</b></td>
37
  <td><?php echo $row[1]; ?></td>
38
  <?php
39
  }
20
  foreach ( $sections as $section_id => $section ) {
21
  ?>
22
  <thead>
23
+ <tr><th colspan="2" style="text-align: left; background: #333; color: #fff; padding: 5px;"><?php echo esc_html($section['title']) ?></th></tr>
24
  </thead>
25
  <tbody>
26
  <?php
30
  <tr>
31
  <?php
32
  if ( 1 === $col_count ) { ?>
33
+ <td style="vertical-align: top;" colspan="2"><?php echo $row[0] ?></td>
34
  <?php
35
  } else { ?>
36
+ <td style="vertical-align: top;"><b><?php echo esc_html($row[0]) ?>:</b></td>
37
  <td><?php echo $row[1]; ?></td>
38
  <?php
39
  }
includes/pum-sdk/freemius/templates/forms/deactivation/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/templates/forms/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/templates/forms/license-activation.php CHANGED
@@ -63,15 +63,15 @@ HTML;
63
  '<div class="fs-modal fs-modal-license-activation">'
64
  + ' <div class="fs-modal-dialog">'
65
  + ' <div class="fs-modal-header">'
66
- + ' <h4><?php echo $header_title ?></h4>'
67
- + ' <a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="<?php _efs( 'dismiss' ) ?>"></i></a>'
68
  + ' </div>'
69
  + ' <div class="fs-modal-body">'
70
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
71
  + ' </div>'
72
  + ' <div class="fs-modal-footer">'
73
- + ' <button class="button button-secondary button-close" tabindex="4"><?php _efs('cancel', $slug); ?></button>'
74
- + ' <button class="button button-primary button-activate-license" tabindex="3"><?php echo $activate_button_text; ?></button>'
75
  + ' </div>'
76
  + ' </div>'
77
  + '</div>',
@@ -138,7 +138,7 @@ HTML;
138
  license_key: licenseKey
139
  },
140
  beforeSend: function () {
141
- $activateLicenseButton.text( '<?php _efs( 'activating-license', $slug ); ?>' );
142
  },
143
  success: function( result ) {
144
  var resultObj = $.parseJSON( result );
@@ -181,7 +181,7 @@ HTML;
181
 
182
  function resetActivateLicenseButton() {
183
  enableActivateLicenseButton();
184
- $activateLicenseButton.text( '<?php echo $activate_button_text; ?>' );
185
  }
186
 
187
  function resetModal() {
63
  '<div class="fs-modal fs-modal-license-activation">'
64
  + ' <div class="fs-modal-dialog">'
65
  + ' <div class="fs-modal-header">'
66
+ + ' <h4><?php echo esc_js($header_title) ?></h4>'
67
+ + ' <a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="<?php fs_esc_attr_echo( 'dismiss', $slug ) ?>"></i></a>'
68
  + ' </div>'
69
  + ' <div class="fs-modal-body">'
70
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
71
  + ' </div>'
72
  + ' <div class="fs-modal-footer">'
73
+ + ' <button class="button button-secondary button-close" tabindex="4"><?php fs_esc_js_echo( 'cancel', $slug ) ?></button>'
74
+ + ' <button class="button button-primary button-activate-license" tabindex="3"><?php echo esc_js( $activate_button_text ) ?></button>'
75
  + ' </div>'
76
  + ' </div>'
77
  + '</div>',
138
  license_key: licenseKey
139
  },
140
  beforeSend: function () {
141
+ $activateLicenseButton.text( <?php fs_json_encode_echo( 'activating-license', $slug ) ?> );
142
  },
143
  success: function( result ) {
144
  var resultObj = $.parseJSON( result );
181
 
182
  function resetActivateLicenseButton() {
183
  enableActivateLicenseButton();
184
+ $activateLicenseButton.text( <?php echo json_encode( $activate_button_text ) ?> );
185
  }
186
 
187
  function resetModal() {
includes/pum-sdk/freemius/templates/forms/optout.php CHANGED
@@ -24,11 +24,16 @@
24
  $opt_out_button_text = __fs( 'opt-out', $slug );
25
  // @todo Change 'plugin' with module type when migrating with 1.2.2 (themes version).
26
  $opt_out_message_appreciation = sprintf( __fs( 'opt-out-message-appreciation', $slug ), 'plugin' );
27
- $opt_out_message_usage_tracking = sprintf( __fs( 'opt-out-message-usage-tracking', $slug ),
28
- $plugin_title );
29
- $opt_out_message_clicking_opt_out = sprintf( __fs( 'opt-out-message-clicking-opt-out', $slug ),
30
- $plugin_title,
31
- '<a href="http://freemius.com" target="_blank">freemius.com</a>' );
 
 
 
 
 
32
 
33
  $admin_notice_params = array(
34
  'id' => '',
@@ -59,14 +64,14 @@ HTML;
59
  '<div class="fs-modal fs-modal-opt-out">'
60
  + ' <div class="fs-modal-dialog">'
61
  + ' <div class="fs-modal-header">'
62
- + ' <h4><?php echo $opt_out_button_text ?></h4>'
63
  + ' </div>'
64
  + ' <div class="fs-modal-body">'
65
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
66
  + ' </div>'
67
  + ' <div class="fs-modal-footer">'
68
- + ' <button class="button button-secondary button-opt-out" tabindex="1"><?php echo $opt_out_button_text ?></button>'
69
- + ' <button class="button button-primary button-close" tabindex="2"><?php _efs( 'opt-out-cancel', $slug ) ?></button>'
70
  + ' </div>'
71
  + ' </div>'
72
  + '</div>',
@@ -129,7 +134,7 @@ HTML;
129
 
130
  function resetOptOutButton() {
131
  enableOptOutButton();
132
- $optOutButton.text( '<?php echo $opt_out_button_text; ?>' );
133
  }
134
 
135
  function resetModal() {
@@ -155,20 +160,20 @@ HTML;
155
  },
156
  beforeSend: function() {
157
  if ( 'opt-in' == action ) {
158
- $actionLink.text( '<?php _efs( 'opting-in', $slug ) ?>' )
159
  } else {
160
- $optOutButton.text( '<?php _efs( 'opting-out', $slug ) ?>' );
161
  }
162
  },
163
  success: function( resultObj ) {
164
  if ( resultObj.success ) {
165
  if ( 'allow_tracking' == action ) {
166
  action = 'stop_tracking';
167
- $actionLink.text( '<?php _efs( 'opt-out', $slug ) ?>' );
168
  showOptInAppreciationMessageAndScrollToTop();
169
  } else {
170
  action = 'allow_tracking';
171
- $actionLink.text( '<?php _efs( 'opt-in', $slug ) ?>' );
172
  closeModal();
173
 
174
  if ( $adminNotice.length > 0 ) {
24
  $opt_out_button_text = __fs( 'opt-out', $slug );
25
  // @todo Change 'plugin' with module type when migrating with 1.2.2 (themes version).
26
  $opt_out_message_appreciation = sprintf( __fs( 'opt-out-message-appreciation', $slug ), 'plugin' );
27
+ $opt_out_message_usage_tracking = sprintf( __fs( 'opt-out-message-usage-tracking', $slug ), $plugin_title );
28
+ $opt_out_message_clicking_opt_out = sprintf(
29
+ __fs( 'opt-out-message-clicking-opt-out', $slug ),
30
+ $plugin_title,
31
+ sprintf(
32
+ '<a href="%s" target="_blank">%s</a>',
33
+ 'https://freemius.com',
34
+ 'freemius.com'
35
+ )
36
+ );
37
 
38
  $admin_notice_params = array(
39
  'id' => '',
64
  '<div class="fs-modal fs-modal-opt-out">'
65
  + ' <div class="fs-modal-dialog">'
66
  + ' <div class="fs-modal-header">'
67
+ + ' <h4><?php echo esc_js($opt_out_button_text) ?></h4>'
68
  + ' </div>'
69
  + ' <div class="fs-modal-body">'
70
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
71
  + ' </div>'
72
  + ' <div class="fs-modal-footer">'
73
+ + ' <button class="button button-secondary button-opt-out" tabindex="1"><?php echo esc_js($opt_out_button_text) ?></button>'
74
+ + ' <button class="button button-primary button-close" tabindex="2"><?php echo esc_js( __fs( 'opt-out-cancel', $slug ) ) ?></button>'
75
  + ' </div>'
76
  + ' </div>'
77
  + '</div>',
134
 
135
  function resetOptOutButton() {
136
  enableOptOutButton();
137
+ $optOutButton.text( <?php echo json_encode($opt_out_button_text) ?> );
138
  }
139
 
140
  function resetModal() {
160
  },
161
  beforeSend: function() {
162
  if ( 'opt-in' == action ) {
163
+ $actionLink.text( <?php fs_json_encode_echo( 'opting-in', $slug ) ?> )
164
  } else {
165
+ $optOutButton.text( <?php fs_json_encode_echo( 'opting-out', $slug ) ?> );
166
  }
167
  },
168
  success: function( resultObj ) {
169
  if ( resultObj.success ) {
170
  if ( 'allow_tracking' == action ) {
171
  action = 'stop_tracking';
172
+ $actionLink.text( <?php fs_json_encode_echo( 'opt-out', $slug ) ?> );
173
  showOptInAppreciationMessageAndScrollToTop();
174
  } else {
175
  action = 'allow_tracking';
176
+ $actionLink.text( <?php fs_json_encode_echo( 'opt-in', $slug ) ?> );
177
  closeModal();
178
 
179
  if ( $adminNotice.length > 0 ) {
includes/pum-sdk/freemius/templates/forms/resend-key.php CHANGED
@@ -16,21 +16,48 @@
16
  $slug = $VARS['slug'];
17
  $fs = freemius( $slug );
18
 
19
- $message_above_input_field = __fs( 'ask-for-upgrade-email-address', $slug );
20
  $send_button_text = __fs( 'send-license-key', $slug );
21
  $cancel_button_text = __fs( 'cancel', $slug );
22
- $email_address_placeholder = __fs( 'email-address', $slug );
 
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  $modal_content_html = <<< HTML
25
  <div class="notice notice-error inline license-resend-message"><p></p></div>
26
  <p>{$message_above_input_field}</p>
27
  <div class="input-container">
28
- <div class="button-container">
29
- <a href="#" class="button button-primary button-send-license-key disabled" tabindex="2">{$send_button_text}</a>
30
- </div>
31
- <div class="email-address-container">
32
- <input class="email-address" type="text" placeholder="{$email_address_placeholder}" tabindex="1">
33
- </div>
34
  </div>
35
  HTML;
36
 
@@ -39,30 +66,30 @@ HTML;
39
  <script type="text/javascript">
40
  (function ($) {
41
  $(document).ready(function () {
42
- var modalContentHtml = <?php echo json_encode( $modal_content_html ); ?>,
43
- modalHtml =
44
- '<div class="fs-modal fs-modal-license-key-resend">'
45
  + ' <div class="fs-modal-dialog">'
46
  + ' <div class="fs-modal-header">'
47
- + ' <h4><?php echo $send_button_text ?></h4>'
48
- + ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php _efs( 'dismiss' ) ?>"></i></a>'
49
  + ' </div>'
50
  + ' <div class="fs-modal-body">'
51
- + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
52
  + ' </div>'
53
  + ' </div>'
54
  + '</div>',
55
- $modal = $(modalHtml),
56
- $sendLicenseKeyButton = $modal.find('.button-send-license-key'),
57
- $emailAddressInput = $modal.find('input.email-address'),
58
- $licenseResendMessage = $modal.find('.license-resend-message'),
59
- moduleSlug = '<?php echo $slug; ?>',
60
- isChild = false;
 
 
61
 
62
  $modal.appendTo($('body'));
63
 
64
- registerEventHandlers();
65
-
66
  function registerEventHandlers() {
67
  $('a.show-license-resend-modal-' + moduleSlug).click(function (evt) {
68
  evt.preventDefault();
@@ -70,30 +97,28 @@ HTML;
70
  showModal();
71
  });
72
 
73
- $modal.on('input propertychange', 'input.email-address', function () {
 
 
 
74
 
75
- var emailAddress = $(this).val().trim();
 
 
76
 
77
- /**
78
- * If email address is not empty, enable the send license key button.
79
- */
80
- if (emailAddress.length > 0) {
81
- enableSendLicenseKeyButton();
82
- }
83
  });
84
 
85
  $modal.on('blur', 'input.email-address', function () {
86
- var emailAddress = $(this).val().trim();
87
-
88
- /**
89
- * If email address is empty, disable the send license key button.
90
- */
91
- if (0 === emailAddress.length) {
92
- disableSendLicenseKeyButton();
93
- }
94
  });
95
 
96
- $modal.on('click', '.fs-close', function (){
97
  closeModal();
98
  return false;
99
  });
@@ -105,11 +130,11 @@ HTML;
105
  return;
106
  }
107
 
108
- var emailAddress = $emailAddressInput.val().trim();
109
 
110
- disableSendLicenseKeyButton();
111
 
112
- if (0 === emailAddress.length) {
113
  return;
114
  }
115
 
@@ -119,10 +144,10 @@ HTML;
119
  data : {
120
  action: '<?php echo $fs->get_action_tag( 'resend_license_key' ) ?>',
121
  slug : moduleSlug,
122
- email : emailAddress
123
  },
124
  beforeSend: function () {
125
- $sendLicenseKeyButton.text('<?php _efs( 'sending-license-key', $slug ) ?>...');
126
  },
127
  success : function (result) {
128
  var resultObj = $.parseJSON(result);
@@ -130,19 +155,25 @@ HTML;
130
  closeModal();
131
  } else {
132
  showError(resultObj.error);
133
- resetSendLicenseKeyButton();
134
  }
135
  }
136
  });
137
  });
138
  }
139
 
 
 
 
 
140
  function showModal() {
141
  resetModal();
142
 
143
  // Display the dialog box.
144
  $modal.addClass('active');
145
- $emailAddressInput.focus();
 
 
146
 
147
  var $body = $('body');
148
 
@@ -165,32 +196,51 @@ HTML;
165
  $('body').removeClass('has-fs-modal');
166
  }
167
 
168
- function resetSendLicenseKeyButton() {
169
- enableSendLicenseKeyButton();
170
- $sendLicenseKeyButton.text('<?php echo $send_button_text; ?>');
171
  }
172
 
173
  function resetModal() {
174
  hideError();
175
- resetSendLicenseKeyButton();
176
- $emailAddressInput.val('');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  }
178
 
179
- function enableSendLicenseKeyButton() {
180
- $sendLicenseKeyButton.removeClass('disabled');
181
  }
182
 
183
- function disableSendLicenseKeyButton() {
184
- $sendLicenseKeyButton.addClass('disabled');
185
  }
186
 
187
  function hideError() {
188
- $licenseResendMessage.hide();
189
  }
190
 
191
  function showError(msg) {
192
- $licenseResendMessage.find(' > p').html(msg);
193
- $licenseResendMessage.show();
194
  }
195
  });
196
  })(jQuery);
16
  $slug = $VARS['slug'];
17
  $fs = freemius( $slug );
18
 
 
19
  $send_button_text = __fs( 'send-license-key', $slug );
20
  $cancel_button_text = __fs( 'cancel', $slug );
21
+ $email_address_placeholder = fs_esc_attr( 'email-address', $slug );
22
+ $other_text = __fs( 'reason-other', $slug );
23
 
24
+ $is_freemium = $fs->is_freemium();
25
+
26
+ $send_button_text_html = esc_html($send_button_text);
27
+
28
+ $button_html = <<< HTML
29
+ <div class="button-container">
30
+ <a href="#" class="button button-primary button-send-license-key" tabindex="2">{$send_button_text_html}</a>
31
+ </div>
32
+ HTML;
33
+
34
+ if ( $is_freemium ) {
35
+ $current_user = Freemius::_get_current_wp_user();
36
+ $email = $current_user->user_email;
37
+ $esc_email = esc_attr( $email );
38
+ $form_html = <<< HTML
39
+ <div class="email-address-container">
40
+ <label><input name="email-address" type="radio" checked="checked" tabindex="1" value="{$esc_email}"> {$email}</label>
41
+ <label><input name="email-address" type="radio" tabindex="1" value="other">{$other_text}: <input class="email-address" type="text" placeholder="{$email_address_placeholder}"></label>
42
+ </div>
43
+ {$button_html}
44
+ HTML;
45
+ } else {
46
+ $email = '';
47
+ $form_html = <<< HTML
48
+ {$button_html}
49
+ <div class="email-address-container">
50
+ <input class="email-address" type="text" placeholder="{$email_address_placeholder}" tabindex="1">
51
+ </div>
52
+ HTML;
53
+ }
54
+
55
+ $message_above_input_field = esc_html( __fs( 'ask-for-upgrade-email-address', $slug ) );
56
  $modal_content_html = <<< HTML
57
  <div class="notice notice-error inline license-resend-message"><p></p></div>
58
  <p>{$message_above_input_field}</p>
59
  <div class="input-container">
60
+ {$form_html}
 
 
 
 
 
61
  </div>
62
  HTML;
63
 
66
  <script type="text/javascript">
67
  (function ($) {
68
  $(document).ready(function () {
69
+ var contentHtml = <?php echo json_encode( $modal_content_html ); ?>,
70
+ modalHtml =
71
+ '<div class="fs-modal fs-modal-license-key-resend <?php echo $is_freemium ? 'fs-freemium' : 'fs-premium' ?>">'
72
  + ' <div class="fs-modal-dialog">'
73
  + ' <div class="fs-modal-header">'
74
+ + ' <h4><?php echo esc_js( $send_button_text ) ?></h4>'
75
+ + ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php fs_esc_js_echo( 'dismiss', $slug ) ?>"></i></a>'
76
  + ' </div>'
77
  + ' <div class="fs-modal-body">'
78
+ + ' <div class="fs-modal-panel active">' + contentHtml + '</div>'
79
  + ' </div>'
80
  + ' </div>'
81
  + '</div>',
82
+ $modal = $(modalHtml),
83
+ $sendButton = $modal.find('.button-send-license-key'),
84
+ $emailInput = $modal.find('input.email-address'),
85
+ $feedbackMessage = $modal.find('.license-resend-message'),
86
+ moduleSlug = '<?php echo $slug; ?>',
87
+ isFreemium = <?php echo json_encode( $is_freemium ) ?>,
88
+ userEmail =<?php echo json_encode( $email ) ?>,
89
+ isChild = false;
90
 
91
  $modal.appendTo($('body'));
92
 
 
 
93
  function registerEventHandlers() {
94
  $('a.show-license-resend-modal-' + moduleSlug).click(function (evt) {
95
  evt.preventDefault();
97
  showModal();
98
  });
99
 
100
+ if (isFreemium) {
101
+ $modal.on('change', 'input[type=radio][name=email-address]', function () {
102
+ updateButtonState();
103
+ });
104
 
105
+ $modal.on('focus', 'input.email-address', function () {
106
+ // Check custom email radio button on email input focus.
107
+ $($modal.find('input[type=radio]')[1]).prop('checked', true);
108
 
109
+ updateButtonState();
110
+ });
111
+ }
112
+
113
+ $modal.on('input propertychange', 'input.email-address', function () {
114
+ updateButtonState();
115
  });
116
 
117
  $modal.on('blur', 'input.email-address', function () {
118
+ updateButtonState();
 
 
 
 
 
 
 
119
  });
120
 
121
+ $modal.on('click', '.fs-close', function () {
122
  closeModal();
123
  return false;
124
  });
130
  return;
131
  }
132
 
133
+ var email = getEmail();
134
 
135
+ disableButton();
136
 
137
+ if (!(-1 < email.indexOf('@'))) {
138
  return;
139
  }
140
 
144
  data : {
145
  action: '<?php echo $fs->get_action_tag( 'resend_license_key' ) ?>',
146
  slug : moduleSlug,
147
+ email : email
148
  },
149
  beforeSend: function () {
150
+ $sendButton.text(<?php fs_json_encode_echo( 'sending-license-key', $slug ) ?> + '...');
151
  },
152
  success : function (result) {
153
  var resultObj = $.parseJSON(result);
155
  closeModal();
156
  } else {
157
  showError(resultObj.error);
158
+ resetButton();
159
  }
160
  }
161
  });
162
  });
163
  }
164
 
165
+ registerEventHandlers();
166
+
167
+ resetButton();
168
+
169
  function showModal() {
170
  resetModal();
171
 
172
  // Display the dialog box.
173
  $modal.addClass('active');
174
+
175
+ if (!isFreemium)
176
+ $emailInput.focus();
177
 
178
  var $body = $('body');
179
 
196
  $('body').removeClass('has-fs-modal');
197
  }
198
 
199
+ function resetButton() {
200
+ updateButtonState();
201
+ $sendButton.text(<?php echo json_encode($send_button_text) ?>);
202
  }
203
 
204
  function resetModal() {
205
  hideError();
206
+ resetButton();
207
+ $emailInput.val('');
208
+ }
209
+
210
+ function getEmail() {
211
+ var email = $emailInput.val().trim();
212
+
213
+ if (isFreemium) {
214
+ if ('other' != $modal.find('input[type=radio][name=email-address]:checked').val()) {
215
+ email = userEmail;
216
+ }
217
+ }
218
+
219
+ return email;
220
+ }
221
+
222
+ function updateButtonState() {
223
+ /**
224
+ * If email address is not empty, enable the send license key button.
225
+ */
226
+ $sendButton.toggleClass('disabled', !( -1 < getEmail().indexOf('@') ));
227
  }
228
 
229
+ function enableButton() {
230
+ $sendButton.removeClass('disabled');
231
  }
232
 
233
+ function disableButton() {
234
+ $sendButton.addClass('disabled');
235
  }
236
 
237
  function hideError() {
238
+ $feedbackMessage.hide();
239
  }
240
 
241
  function showError(msg) {
242
+ $feedbackMessage.find(' > p').html(msg);
243
+ $feedbackMessage.show();
244
  }
245
  });
246
  })(jQuery);
includes/pum-sdk/freemius/templates/forms/trial-start.php CHANGED
@@ -23,7 +23,11 @@
23
  );
24
  $message_content = sprintf(
25
  __fs( 'start-trial-prompt-message', $slug ),
26
- '<a href="https://freemius.com" target="_blank">freemius.com</a>'
 
 
 
 
27
  );
28
 
29
  $modal_content_html = <<< HTML
@@ -42,12 +46,12 @@ HTML;
42
  '<div class="fs-modal fs-modal-license-key-resend">'
43
  + ' <div class="fs-modal-dialog">'
44
  + ' <div class="fs-modal-header">'
45
- + ' <h4><?php _efs( 'start-free-trial' ) ?></h4>'
46
  + ' </div>'
47
  + ' <div class="fs-modal-body">' + modalContentHtml + '</div>'
48
  + ' <div class="fs-modal-footer">'
49
- + ' <button class="button button-secondary button-close">' + <?php echo json_encode( __fs( 'cancel', $slug ) ) ?> +'</button>'
50
- + ' <button class="button button-primary button-connect">' + <?php echo json_encode( __fs( 'approve-start-trial', $slug ) ) ?> +'</button>'
51
  + ' </div>'
52
  + ' </div>'
53
  + '</div>',
@@ -85,18 +89,18 @@ HTML;
85
  // Disable all buttons during trial activation.
86
  $modal.find('.button').prop('disabled', true);
87
 
88
- $button.text('<?php _efs( 'starting-trial', $slug ) ?>...');
89
 
90
  setLoadingMode();
91
  },
92
  success : function (resultObj) {
93
  if (resultObj.success) {
94
- $button.text('<?php _efs( 'please-wait', $slug ) ?>...');
95
 
96
  // Redirect to the "Account" page and sync the license.
97
  window.location.href = resultObj.data.next_page;
98
  } else {
99
- $button.text(<?php json_encode( __fs( 'approve-start-trial', $slug ) ) ?>);
100
 
101
  resetLoadingMode();
102
  showError(resultObj.error);
23
  );
24
  $message_content = sprintf(
25
  __fs( 'start-trial-prompt-message', $slug ),
26
+ sprintf(
27
+ '<a href="%s" target="_blank">%s</a>',
28
+ 'https://freemius.com',
29
+ 'freemius.com'
30
+ )
31
  );
32
 
33
  $modal_content_html = <<< HTML
46
  '<div class="fs-modal fs-modal-license-key-resend">'
47
  + ' <div class="fs-modal-dialog">'
48
  + ' <div class="fs-modal-header">'
49
+ + ' <h4><?php fs_esc_js_echo( 'start-free-trial', $slug ) ?></h4>'
50
  + ' </div>'
51
  + ' <div class="fs-modal-body">' + modalContentHtml + '</div>'
52
  + ' <div class="fs-modal-footer">'
53
+ + ' <button class="button button-secondary button-close">' + <?php fs_json_encode_echo( 'cancel', $slug ) ?> +'</button>'
54
+ + ' <button class="button button-primary button-connect">' + <?php fs_json_encode_echo( 'approve-start-trial', $slug ) ?> +'</button>'
55
  + ' </div>'
56
  + ' </div>'
57
  + '</div>',
89
  // Disable all buttons during trial activation.
90
  $modal.find('.button').prop('disabled', true);
91
 
92
+ $button.text(<?php fs_json_encode_echo( 'starting-trial', $slug ) ?> + '...');
93
 
94
  setLoadingMode();
95
  },
96
  success : function (resultObj) {
97
  if (resultObj.success) {
98
+ $button.text(<?php fs_json_encode_echo( 'please-wait', $slug ) ?> + '...');
99
 
100
  // Redirect to the "Account" page and sync the license.
101
  window.location.href = resultObj.data.next_page;
102
  } else {
103
+ $button.text(<?php fs_json_encode_echo( 'approve-start-trial', $slug ) ?>);
104
 
105
  resetLoadingMode();
106
  showError(resultObj.error);
includes/pum-sdk/freemius/templates/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
includes/pum-sdk/freemius/templates/plugin-icon.php CHANGED
@@ -60,7 +60,7 @@
60
  * the repository.
61
  */
62
  if ( ! function_exists( 'plugins_api' ) ) {
63
- require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
64
  }
65
 
66
  $plugin_information = plugins_api( 'plugin_information', array(
60
  * the repository.
61
  */
62
  if ( ! function_exists( 'plugins_api' ) ) {
63
+ require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
64
  }
65
 
66
  $plugin_information = plugins_api( 'plugin_information', array(
includes/pum-sdk/freemius/templates/plugin-info/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
popup-maker.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=plugin-uri
5
  * Description: Easily create & style popups with any content. Theme editor to quickly style your popups. Add forms, social media boxes, videos & more.
6
  * Author: WP Popup Maker
7
- * Version: 1.5.2
8
  * Author URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=author-uri
9
  * Text Domain: popup-maker
10
  *
@@ -147,7 +147,7 @@ if ( ! class_exists( 'Popup_Maker' ) ) :
147
  }
148
 
149
  if ( ! defined( 'POPMAKE_VERSION' ) ) {
150
- define( 'POPMAKE_VERSION', '1.5.2' );
151
  }
152
 
153
  if ( ! defined( 'POPMAKE_DB_VERSION' ) ) {
4
  * Plugin URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=plugin-uri
5
  * Description: Easily create & style popups with any content. Theme editor to quickly style your popups. Add forms, social media boxes, videos & more.
6
  * Author: WP Popup Maker
7
+ * Version: 1.5.3
8
  * Author URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=author-uri
9
  * Text Domain: popup-maker
10
  *
147
  }
148
 
149
  if ( ! defined( 'POPMAKE_VERSION' ) ) {
150
+ define( 'POPMAKE_VERSION', '1.5.3' );
151
  }
152
 
153
  if ( ! defined( 'POPMAKE_DB_VERSION' ) ) {
readme.txt CHANGED
@@ -6,7 +6,7 @@ Donate link:
6
  Tags: responsive popup, promotion, popover, pop-up, pop over, marketing, lightbox, advertising, conversion, modal, popup, popups
7
  Requires at least: 3.6
8
  Tested up to: 4.7.2
9
- Stable tag: 1.5.2
10
  License: GNU Version 3 or Any Later Version
11
 
12
  Create any popup imaginable! Customize your popups from head-to-toe and give your site more utility, usability, and conversions.
@@ -87,15 +87,19 @@ There are several common causes for this which include:
87
 
88
  == Changelog ==
89
 
90
- = v1.5.2 - 03/09/2017
 
 
 
 
91
  * Improvement: Added option to disable the admin bar Popups helper menu item.
92
  * Improvement: Simplified the nav menu editor modification class to reduce un-needed translation strings.
93
  * Fix: Added check for missing class in the nav menu editor walker classes.
94
 
95
- = v1.5.1 - 03/09/2017
96
  * Fix: PHP 5.2 Compatibility issue.
97
 
98
- = v1.5.0 - 03/08/2017
99
  * Feature: Position popups based on the click trigger. Tooltips & Popovers are now possible.
100
  * Feature: Added new conditions for targeting children & grandchildren / ancestors of selected content.
101
  * Feature: Added new settings to the Nav Menu editor to choose a popup that a menu item will trigger.
@@ -498,4 +502,4 @@ There are several common causes for this which include:
498
  * Misc Admin changes, including new filters/hooks for upcoming extensions.
499
 
500
  = v1.0.0 =
501
- * Initial Release
6
  Tags: responsive popup, promotion, popover, pop-up, pop over, marketing, lightbox, advertising, conversion, modal, popup, popups
7
  Requires at least: 3.6
8
  Tested up to: 4.7.2
9
+ Stable tag: 1.5.3
10
  License: GNU Version 3 or Any Later Version
11
 
12
  Create any popup imaginable! Customize your popups from head-to-toe and give your site more utility, usability, and conversions.
87
 
88
  == Changelog ==
89
 
90
+ = v1.5.3 - 03/13/2017 =
91
+ * Improvement: Added a catch for any triggers not initialized at page load.
92
+ * Fix: Typo in multi check field template that led to admin JS errors.
93
+
94
+ = v1.5.2 - 03/10/2017 =
95
  * Improvement: Added option to disable the admin bar Popups helper menu item.
96
  * Improvement: Simplified the nav menu editor modification class to reduce un-needed translation strings.
97
  * Fix: Added check for missing class in the nav menu editor walker classes.
98
 
99
+ = v1.5.1 - 03/09/2017 =
100
  * Fix: PHP 5.2 Compatibility issue.
101
 
102
+ = v1.5.0 - 03/08/2017 =
103
  * Feature: Position popups based on the click trigger. Tooltips & Popovers are now possible.
104
  * Feature: Added new conditions for targeting children & grandchildren / ancestors of selected content.
105
  * Feature: Added new settings to the Nav Menu editor to choose a popup that a menu item will trigger.
502
  * Misc Admin changes, including new filters/hooks for upcoming extensions.
503
 
504
  = v1.0.0 =
505
+ * Initial Release