Plugin Directory

Changeset 3081325


Ignore:
Timestamp:
05/04/2024 07:14:43 PM (2 years ago)
Author:
hcaptcha
Message:

Update to version 4.1.1 from GitHub

Location:
hcaptcha-for-forms-and-more
Files:
30 edited
1 copied

Legend:

Unmodified
Added
Removed
  • hcaptcha-for-forms-and-more/tags/4.1.1/assets/js/general.js

    r3064004 r3081325  
    231231    }
    232232
     233    function syncConfigParams( configParams, parentKey = '' ) {
     234        for ( const key in configParams ) {
     235            // Construct the full key path.
     236            const fullKey = parentKey ? `${ parentKey }--${ key }` : key;
     237
     238            // If the value is an object, recursively print its keys.
     239            if ( typeof configParams[ key ] === 'object' && configParams[ key ] !== null ) {
     240                syncConfigParams( configParams[ key ], fullKey );
     241            } else {
     242                // Update the custom property selector.
     243                const value = configParams[ key ];
     244                const propKey = fullKey.replace( /theme--/g, '' );
     245                const newValue = `${ propKey }=${ value }`;
     246                const $prop = $customProp.find( `option[value*="${ propKey }="]` );
     247
     248                if ( $prop.length === 1 ) {
     249                    $prop.attr( 'value', newValue );
     250                    if ( $prop.is( ':selected' ) ) {
     251                        $customValue.val( value );
     252                    }
     253                }
     254            }
     255        }
     256    }
     257
    233258    function applyCustomThemes( params = {} ) {
    234259        let configParamsJson = $configParams.val().trim();
     
    250275
    251276        $configParams.val( JSON.stringify( configParams, null, 2 ) );
     277
     278        syncConfigParams( configParams );
    252279
    253280        if ( ! $customThemes.prop( 'checked' ) ) {
  • hcaptcha-for-forms-and-more/tags/4.1.1/assets/js/general.min.js

    r3064004 r3081325  
    1 (()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#check_config"),l=a("#reset_notifications"),h=a('[name="hcaptcha_settings[theme]"]'),p=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),d=a('[name="hcaptcha_settings[mode]"]'),f=a('[name="hcaptcha_settings[custom_themes][]"]'),m=a(".hcaptcha-general-custom-prop select"),v=a(".hcaptcha-general-custom-value input"),g=a('[name="hcaptcha_settings[config_params]"]'),b=a(".hcaptcha-section-enterprise + table input"),y=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),C=o.find("#submit"),j={},O=r.val(),H=i.val(),k=T();j[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,j[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var G=!1,S=!1,_=[];function w(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function T(){return w(b)}function A(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter("#hcaptcha-options h2"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled"],e=[],a=0;a<_.length;a++){for(var n=_[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var l=o[s];"string"==typeof l&&-1===t.indexOf(l)&&i.push([c,l].join(" "))}e.push(i.join("\n"))}return _=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added");var o=a("#wpwrap").position().top;a("html, body").animate({scrollTop:c.offset().top-o-parseInt(c.css("margin-bottom"))},1e3)}}function x(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Object.assign(hCaptcha.getParams(),t);hCaptcha.setParams(e);var a=document.querySelector("#hcaptcha-options .h-captcha");for(var n in a.innerHTML="",t)a.setAttribute("data-".concat(n),"".concat(t[n]));hCaptcha.bindEvents()}function K(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=K(Object.assign({},c),o):t[e]=o})),t):a}function U(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=g.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return g.css("background-color","#ffabaf"),C.attr("disabled",!0),void N("Bad JSON!")}t=K(t,e),g.val(JSON.stringify(t,null,2)),f.prop("checked")||(t={sitekey:r.val(),theme:h.val(),size:p.val(),hl:u.val()}),L(t)}function B(){r.val()===O&&i.val()===H?(G=!1,A(),C.attr("disabled",!1)):G||(G=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))}function P(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){_=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){_.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){_.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){_.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){_.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){_=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){N()})),s.on("click",(function(t){t.preventDefault(),""!==a(".hcaptcha-general-sample-hcaptcha iframe").attr("data-hcaptcha-response")?function(){A(),C.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:d.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return x(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(O=r.val(),H=i.val(),k=w(b),S=!1,x(t.data),C.attr("disabled",!1)):N(t.data)})).fail((function(t){N(t.statusText)})).always((function(){L()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){L({sitekey:a(t.target).val()}),B()})),i.on("change",(function(){B()})),h.on("change",(function(t){L({theme:a(t.target).val()})})),p.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),L({size:n})})),u.on("change",(function(t){L({hl:a(t.target).val()})})),d.on("change",(function(t){var e=a(t.target).val();j.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),L({sitekey:j[e]}))})),f.on("change",(function(){U()})),g.on("blur",(function(){U()})),g.on("focus",(function(){g.css("background-color","unset"),C.attr("disabled",!1)})),b.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};y.prop("checked")&&(e.recaptchacompat="off"),f.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=T();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(P(o)))}var r=n.api_host.trim();r=P(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var s in e)i.searchParams.append(s,e[s]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,document.querySelector("#hcaptcha-options .h-captcha").innerHTML="";var l=document.getElementsByTagName("head")[0],h=document.createElement("script");h.type="text/javascript",h.id="hcaptcha-api",h.src=i.href,l.appendChild(h)}(),JSON.stringify(T())===JSON.stringify(k)?(S=!1,A(),C.attr("disabled",!1)):S||(S=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||N(t.data)})).fail((function(t){N(t.statusText)}))})),s.removeAttr("name"),l.removeAttr("name"),m.removeAttr("name"),v.removeAttr("name"),m.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),v.val(""),m.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(v.attr("type","text"),v.val(n)):(v.val(n),v.attr("type","color"))})),v.on("change",(function(t){var e=a(t.target).val(),n=m.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),U(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})();
     1(()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#check_config"),l=a("#reset_notifications"),h=a('[name="hcaptcha_settings[theme]"]'),p=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),d=a('[name="hcaptcha_settings[mode]"]'),f=a('[name="hcaptcha_settings[custom_themes][]"]'),v=a(".hcaptcha-general-custom-prop select"),m=a(".hcaptcha-general-custom-value input"),g=a('[name="hcaptcha_settings[config_params]"]'),b=a(".hcaptcha-section-enterprise + table input"),y=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),C=o.find("#submit"),j={},O=r.val(),H=i.val(),k=T();j[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,j[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var G=!1,S=!1,_=[];function w(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function T(){return w(b)}function A(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter("#hcaptcha-options h2"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled"],e=[],a=0;a<_.length;a++){for(var n=_[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var l=o[s];"string"==typeof l&&-1===t.indexOf(l)&&i.push([c,l].join(" "))}e.push(i.join("\n"))}return _=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added");var o=a("#wpwrap").position().top;a("html, body").animate({scrollTop:c.offset().top-o-parseInt(c.css("margin-bottom"))},1e3)}}function x(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Object.assign(hCaptcha.getParams(),t);hCaptcha.setParams(e);var a=document.querySelector("#hcaptcha-options .h-captcha");for(var n in a.innerHTML="",t)a.setAttribute("data-".concat(n),"".concat(t[n]));hCaptcha.bindEvents()}function K(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=K(Object.assign({},c),o):t[e]=o})),t):a}function U(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(var n in t){var c=a?"".concat(a,"--").concat(n):n;if("object"===e(t[n])&&null!==t[n])U(t[n],c);else{var o=t[n],r=c.replace(/theme--/g,""),i="".concat(r,"=").concat(o),s=v.find('option[value*="'.concat(r,'="]'));1===s.length&&(s.attr("value",i),s.is(":selected")&&m.val(o))}}}function B(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=g.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return g.css("background-color","#ffabaf"),C.attr("disabled",!0),void N("Bad JSON!")}t=K(t,e),g.val(JSON.stringify(t,null,2)),U(t),f.prop("checked")||(t={sitekey:r.val(),theme:h.val(),size:p.val(),hl:u.val()}),L(t)}function P(){r.val()===O&&i.val()===H?(G=!1,A(),C.attr("disabled",!1)):G||(G=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))}function J(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){_=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){_.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){_.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){_.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){_.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){_=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){N()})),s.on("click",(function(t){t.preventDefault(),""!==a(".hcaptcha-general-sample-hcaptcha iframe").attr("data-hcaptcha-response")?function(){A(),C.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:d.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return x(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(O=r.val(),H=i.val(),k=w(b),S=!1,x(t.data),C.attr("disabled",!1)):N(t.data)})).fail((function(t){N(t.statusText)})).always((function(){L()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){L({sitekey:a(t.target).val()}),P()})),i.on("change",(function(){P()})),h.on("change",(function(t){L({theme:a(t.target).val()})})),p.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),L({size:n})})),u.on("change",(function(t){L({hl:a(t.target).val()})})),d.on("change",(function(t){var e=a(t.target).val();j.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),L({sitekey:j[e]}))})),f.on("change",(function(){B()})),g.on("blur",(function(){B()})),g.on("focus",(function(){g.css("background-color","unset"),C.attr("disabled",!1)})),b.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};y.prop("checked")&&(e.recaptchacompat="off"),f.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=T();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(J(o)))}var r=n.api_host.trim();r=J(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var s in e)i.searchParams.append(s,e[s]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,document.querySelector("#hcaptcha-options .h-captcha").innerHTML="";var l=document.getElementsByTagName("head")[0],h=document.createElement("script");h.type="text/javascript",h.id="hcaptcha-api",h.src=i.href,l.appendChild(h)}(),JSON.stringify(T())===JSON.stringify(k)?(S=!1,A(),C.attr("disabled",!1)):S||(S=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||N(t.data)})).fail((function(t){N(t.statusText)}))})),s.removeAttr("name"),l.removeAttr("name"),v.removeAttr("name"),m.removeAttr("name"),v.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),m.val(""),v.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(m.attr("type","text"),m.val(n)):(m.val(n),m.attr("type","color"))})),m.on("change",(function(t){var e=a(t.target).val(),n=v.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),B(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})();
  • hcaptcha-for-forms-and-more/tags/4.1.1/changelog.txt

    r3080217 r3081325  
     1= 4.1.1 =
     2* Added updating of the Custom Themes properties on the General page upon manual editing of the Config Params JSON.
     3* Fixed a possible fatal error with third-party plugins using a Jetpack library.
     4
    15= 4.1.0 =
    26* Added Essential Blocks integration.
  • hcaptcha-for-forms-and-more/tags/4.1.1/hcaptcha.php

    r3080217 r3081325  
    1111 * Plugin URI:           https://www.hcaptcha.com/
    1212 * Description:          hCaptcha keeps out bots and spam while putting privacy first. It is a drop-in replacement for reCAPTCHA.
    13  * Version:              4.1.0
     13 * Version:              4.1.1
    1414 * Requires at least:    5.1
    1515 * Requires PHP:         7.0
     
    4040 * Plugin version.
    4141 */
    42 const HCAPTCHA_VERSION = '4.1.0';
     42const HCAPTCHA_VERSION = '4.1.1';
    4343
    4444/**
  • hcaptcha-for-forms-and-more/tags/4.1.1/readme.txt

    r3080217 r3081325  
    55Tested up to: 6.5
    66Requires PHP: 7.0.0
    7 Stable tag: 4.1.0
     7Stable tag: 4.1.1
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    426426You can customize this by returning it to the previous location in the admin Settings section, or tweak its appearance.
    427427
    428 To do this, use the following filter:
     428To do this, use the following filter to your plugin's (or mu-plugin's) main file. This code won't work being added to a theme's functions.php file.
    429429
    430430`
     
    473473
    474474Once you activate this plugin, the hCaptcha-answering user's IP address and browser data may be sent to the hCaptcha service on pages where you have activated hCaptcha protection. However, hCaptcha is designed to minimize data used, process it very close to the user, and rapidly discard it after analysis.
    475 
    476475For more details, please see the hCaptcha privacy policy at:
    477476
     
    567566== Changelog ==
    568567
     568= 4.1.1 =
     569* Added updating of the Custom Themes properties on the General page upon manual editing of the Config Params JSON.
     570* Fixed a possible fatal error with third-party plugins using a Jetpack library.
     571
    569572= 4.1.0 =
    570573* Added Essential Blocks integration.
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Admin/Notifications.php

    r3064004 r3081325  
    208208                'title'   => __( 'Events admin page', 'hcaptcha-for-forms-and-more' ),
    209209                'message' => sprintf(
    210                 /* translators: 1: statistics switch link, 2: the 'forms' page link. */
     210                /* translators: 1: statistics switch link, 2: Pro link, 3: the 'forms' page link. */
    211211                    __( '%1$s events statistics and %2$s to %3$s complete statistics on form events.', 'hcaptcha-for-forms-and-more' ),
    212212                    sprintf(
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Main.php

    r3080217 r3081325  
    699699
    700700        if ( $settings->is_on( 'custom_themes' ) && $this->is_pro_or_general() ) {
    701             $config_params = json_decode( $settings->get( 'config_params' ), true ) ?: [];
     701            $config_params = $settings->get_config_params();
    702702        }
    703703
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/Abstracts/SettingsBase.php

    r3080217 r3081325  
    7272
    7373    /**
    74      * Prefix for minified files.
     74     * Suffix for minified files.
    7575     *
    7676     * @var string
    7777     */
    78     protected $min_prefix;
     78    protected $min_suffix;
    7979
    8080    /**
     
    269269     */
    270270    public function init() {
    271         $this->min_prefix = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? '' : '.min';
     271        $this->min_suffix = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? '' : '.min';
    272272
    273273        $this->form_fields();
     
    539539        wp_enqueue_style(
    540540            static::PREFIX . '-settings-admin',
    541             $this->plugin_url() . "/assets/css/settings-admin$this->min_prefix.css",
     541            $this->plugin_url() . "/assets/css/settings-admin$this->min_suffix.css",
    542542            [],
    543543            $this->plugin_version()
     
    550550        wp_enqueue_script(
    551551            static::PREFIX . '-' . self::HANDLE,
    552             $this->plugin_url() . "/assets/js/settings-base$this->min_prefix.js",
     552            $this->plugin_url() . "/assets/js/settings-base$this->min_suffix.js",
    553553            [],
    554554            $this->plugin_version(),
     
    558558        wp_enqueue_style(
    559559            static::PREFIX . '-' . self::HANDLE,
    560             $this->plugin_url() . "/assets/css/settings-base$this->min_prefix.css",
     560            $this->plugin_url() . "/assets/css/settings-base$this->min_suffix.css",
    561561            [],
    562562            $this->plugin_version()
     
    610610
    611611        $tab = $this->get_active_tab();
     612
     613        if ( ! $this->is_options_screen( [ 'options', $tab->option_page() ] ) ) {
     614            return;
     615        }
    612616
    613617        add_settings_section(
     
    14041408        $current_suffix = preg_replace( '/.+_page_/', '', $current_screen->id );
    14051409
    1406         return $this->option_page() === $current_suffix || in_array( $current_screen->id, $ids, true );
     1410        return $this->option_page() === $current_suffix || in_array( $current_suffix, $ids, true );
    14071411    }
    14081412
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/EventsPage.php

    r3080217 r3081325  
    115115        wp_enqueue_style(
    116116            self::HANDLE,
    117             constant( 'HCAPTCHA_URL' ) . "/assets/css/events$this->min_prefix.css",
     117            constant( 'HCAPTCHA_URL' ) . "/assets/css/events$this->min_suffix.css",
    118118            [ static::PREFIX . '-' . SettingsBase::HANDLE ],
    119119            constant( 'HCAPTCHA_VERSION' )
     
    142142        wp_enqueue_script(
    143143            self::HANDLE,
    144             constant( 'HCAPTCHA_URL' ) . "/assets/js/events$this->min_prefix.js",
     144            constant( 'HCAPTCHA_URL' ) . "/assets/js/events$this->min_suffix.js",
    145145            [ 'chart', 'chart-adapter-date-fns' ],
    146146            constant( 'HCAPTCHA_VERSION' ),
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/FormsPage.php

    r3080217 r3081325  
    108108        wp_enqueue_style(
    109109            self::HANDLE,
    110             constant( 'HCAPTCHA_URL' ) . "/assets/css/forms$this->min_prefix.css",
     110            constant( 'HCAPTCHA_URL' ) . "/assets/css/forms$this->min_suffix.css",
    111111            [ static::PREFIX . '-' . SettingsBase::HANDLE ],
    112112            constant( 'HCAPTCHA_VERSION' )
     
    135135        wp_enqueue_script(
    136136            self::HANDLE,
    137             constant( 'HCAPTCHA_URL' ) . "/assets/js/forms$this->min_prefix.js",
     137            constant( 'HCAPTCHA_URL' ) . "/assets/js/forms$this->min_suffix.js",
    138138            [ 'chart', 'chart-adapter-date-fns' ],
    139139            constant( 'HCAPTCHA_VERSION' ),
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/General.php

    r3064004 r3081325  
    578578        }
    579579
    580         $custom_theme  = $settings->get( 'config_params' )['theme'] ?? [];
     580        $config_params = $settings->get_config_params();
     581        $custom_theme  = $config_params['theme'] ?? [];
    581582        $default_theme = $settings->get_default_theme();
    582         $custom_theme  = array_merge_recursive( $default_theme, $custom_theme );
     583        $custom_theme  = array_replace_recursive( $default_theme, $custom_theme );
    583584        $custom_theme  = $this->flatten_array( $custom_theme );
    584585        $options       = [];
     
    701702        wp_enqueue_script(
    702703            self::DIALOG_HANDLE,
    703             constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_prefix.js",
     704            constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_suffix.js",
    704705            [],
    705706            constant( 'HCAPTCHA_VERSION' ),
     
    709710        wp_enqueue_style(
    710711            self::DIALOG_HANDLE,
    711             constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_prefix.css",
     712            constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_suffix.css",
    712713            [],
    713714            constant( 'HCAPTCHA_VERSION' )
     
    716717        wp_enqueue_script(
    717718            self::HANDLE,
    718             constant( 'HCAPTCHA_URL' ) . "/assets/js/general$this->min_prefix.js",
     719            constant( 'HCAPTCHA_URL' ) . "/assets/js/general$this->min_suffix.js",
    719720            [ 'jquery', self::DIALOG_HANDLE ],
    720721            constant( 'HCAPTCHA_VERSION' ),
     
    753754        wp_enqueue_style(
    754755            self::HANDLE,
    755             constant( 'HCAPTCHA_URL' ) . "/assets/css/general$this->min_prefix.css",
     756            constant( 'HCAPTCHA_URL' ) . "/assets/css/general$this->min_suffix.css",
    756757            [ static::PREFIX . '-' . SettingsBase::HANDLE, self::DIALOG_HANDLE ],
    757758            constant( 'HCAPTCHA_VERSION' )
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/Integrations.php

    r3080217 r3081325  
    701701        wp_enqueue_script(
    702702            self::DIALOG_HANDLE,
    703             constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_prefix.js",
     703            constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_suffix.js",
    704704            [],
    705705            constant( 'HCAPTCHA_VERSION' ),
     
    709709        wp_enqueue_style(
    710710            self::DIALOG_HANDLE,
    711             constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_prefix.css",
     711            constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_suffix.css",
    712712            [],
    713713            constant( 'HCAPTCHA_VERSION' )
     
    716716        wp_enqueue_script(
    717717            self::HANDLE,
    718             constant( 'HCAPTCHA_URL' ) . "/assets/js/integrations$this->min_prefix.js",
     718            constant( 'HCAPTCHA_URL' ) . "/assets/js/integrations$this->min_suffix.js",
    719719            [ 'jquery', self::DIALOG_HANDLE ],
    720720            constant( 'HCAPTCHA_VERSION' ),
     
    749749        wp_enqueue_style(
    750750            self::HANDLE,
    751             constant( 'HCAPTCHA_URL' ) . "/assets/css/integrations$this->min_prefix.css",
     751            constant( 'HCAPTCHA_URL' ) . "/assets/css/integrations$this->min_suffix.css",
    752752            [ static::PREFIX . '-' . SettingsBase::HANDLE, self::DIALOG_HANDLE ],
    753753            constant( 'HCAPTCHA_VERSION' )
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/Settings.php

    r3080217 r3081325  
    105105
    106106        return $first_tab ? $first_tab->get_active_tab()->tab_name() : '';
     107    }
     108
     109    /**
     110     * Get config params.
     111     *
     112     * @return array
     113     */
     114    public function get_config_params(): array {
     115        return (array) ( json_decode( $this->get( 'config_params' ), true ) ?: [] );
    107116    }
    108117
  • hcaptcha-for-forms-and-more/tags/4.1.1/src/php/Settings/SystemInfo.php

    r3080217 r3081325  
    6262        wp_enqueue_script(
    6363            self::DIALOG_HANDLE,
    64             constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_prefix.js",
     64            constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_suffix.js",
    6565            [],
    6666            constant( 'HCAPTCHA_VERSION' ),
     
    7070        wp_enqueue_style(
    7171            self::DIALOG_HANDLE,
    72             constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_prefix.css",
     72            constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_suffix.css",
    7373            [],
    7474            constant( 'HCAPTCHA_VERSION' )
     
    7777        wp_enqueue_script(
    7878            self::HANDLE,
    79             constant( 'HCAPTCHA_URL' ) . "/assets/js/system-info$this->min_prefix.js",
     79            constant( 'HCAPTCHA_URL' ) . "/assets/js/system-info$this->min_suffix.js",
    8080            [ self::DIALOG_HANDLE ],
    8181            constant( 'HCAPTCHA_VERSION' ),
     
    9595        wp_enqueue_style(
    9696            self::HANDLE,
    97             constant( 'HCAPTCHA_URL' ) . "/assets/css/system-info$this->min_prefix.css",
     97            constant( 'HCAPTCHA_URL' ) . "/assets/css/system-info$this->min_suffix.css",
    9898            [ static::PREFIX . '-' . SettingsBase::HANDLE, self::DIALOG_HANDLE ],
    9999            constant( 'HCAPTCHA_VERSION' )
  • hcaptcha-for-forms-and-more/tags/4.1.1/vendor/composer/installed.php

    r3080217 r3081325  
    22    'root' => array(
    33        'name' => 'hcaptcha/hcaptcha-wordpress-plugin',
    4         'pretty_version' => '4.1.0',
    5         'version' => '4.1.0.0',
    6         'reference' => '9d4b7f18932e6d97cd09e5a6384121bffe09088d',
     4        'pretty_version' => '4.1.1',
     5        'version' => '4.1.1.0',
     6        'reference' => '9daed7afed0e03785e71c05cf9d9196d7b63c132',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        'hcaptcha/hcaptcha-wordpress-plugin' => array(
    14             'pretty_version' => '4.1.0',
    15             'version' => '4.1.0.0',
    16             'reference' => '9d4b7f18932e6d97cd09e5a6384121bffe09088d',
     14            'pretty_version' => '4.1.1',
     15            'version' => '4.1.1.0',
     16            'reference' => '9daed7afed0e03785e71c05cf9d9196d7b63c132',
    1717            'type' => 'wordpress-plugin',
    1818            'install_path' => __DIR__ . '/../../',
  • hcaptcha-for-forms-and-more/trunk/assets/js/general.js

    r3064004 r3081325  
    231231    }
    232232
     233    function syncConfigParams( configParams, parentKey = '' ) {
     234        for ( const key in configParams ) {
     235            // Construct the full key path.
     236            const fullKey = parentKey ? `${ parentKey }--${ key }` : key;
     237
     238            // If the value is an object, recursively print its keys.
     239            if ( typeof configParams[ key ] === 'object' && configParams[ key ] !== null ) {
     240                syncConfigParams( configParams[ key ], fullKey );
     241            } else {
     242                // Update the custom property selector.
     243                const value = configParams[ key ];
     244                const propKey = fullKey.replace( /theme--/g, '' );
     245                const newValue = `${ propKey }=${ value }`;
     246                const $prop = $customProp.find( `option[value*="${ propKey }="]` );
     247
     248                if ( $prop.length === 1 ) {
     249                    $prop.attr( 'value', newValue );
     250                    if ( $prop.is( ':selected' ) ) {
     251                        $customValue.val( value );
     252                    }
     253                }
     254            }
     255        }
     256    }
     257
    233258    function applyCustomThemes( params = {} ) {
    234259        let configParamsJson = $configParams.val().trim();
     
    250275
    251276        $configParams.val( JSON.stringify( configParams, null, 2 ) );
     277
     278        syncConfigParams( configParams );
    252279
    253280        if ( ! $customThemes.prop( 'checked' ) ) {
  • hcaptcha-for-forms-and-more/trunk/assets/js/general.min.js

    r3064004 r3081325  
    1 (()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#check_config"),l=a("#reset_notifications"),h=a('[name="hcaptcha_settings[theme]"]'),p=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),d=a('[name="hcaptcha_settings[mode]"]'),f=a('[name="hcaptcha_settings[custom_themes][]"]'),m=a(".hcaptcha-general-custom-prop select"),v=a(".hcaptcha-general-custom-value input"),g=a('[name="hcaptcha_settings[config_params]"]'),b=a(".hcaptcha-section-enterprise + table input"),y=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),C=o.find("#submit"),j={},O=r.val(),H=i.val(),k=T();j[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,j[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var G=!1,S=!1,_=[];function w(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function T(){return w(b)}function A(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter("#hcaptcha-options h2"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled"],e=[],a=0;a<_.length;a++){for(var n=_[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var l=o[s];"string"==typeof l&&-1===t.indexOf(l)&&i.push([c,l].join(" "))}e.push(i.join("\n"))}return _=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added");var o=a("#wpwrap").position().top;a("html, body").animate({scrollTop:c.offset().top-o-parseInt(c.css("margin-bottom"))},1e3)}}function x(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Object.assign(hCaptcha.getParams(),t);hCaptcha.setParams(e);var a=document.querySelector("#hcaptcha-options .h-captcha");for(var n in a.innerHTML="",t)a.setAttribute("data-".concat(n),"".concat(t[n]));hCaptcha.bindEvents()}function K(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=K(Object.assign({},c),o):t[e]=o})),t):a}function U(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=g.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return g.css("background-color","#ffabaf"),C.attr("disabled",!0),void N("Bad JSON!")}t=K(t,e),g.val(JSON.stringify(t,null,2)),f.prop("checked")||(t={sitekey:r.val(),theme:h.val(),size:p.val(),hl:u.val()}),L(t)}function B(){r.val()===O&&i.val()===H?(G=!1,A(),C.attr("disabled",!1)):G||(G=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))}function P(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){_=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){_.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){_.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){_.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){_.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){_=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){N()})),s.on("click",(function(t){t.preventDefault(),""!==a(".hcaptcha-general-sample-hcaptcha iframe").attr("data-hcaptcha-response")?function(){A(),C.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:d.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return x(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(O=r.val(),H=i.val(),k=w(b),S=!1,x(t.data),C.attr("disabled",!1)):N(t.data)})).fail((function(t){N(t.statusText)})).always((function(){L()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){L({sitekey:a(t.target).val()}),B()})),i.on("change",(function(){B()})),h.on("change",(function(t){L({theme:a(t.target).val()})})),p.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),L({size:n})})),u.on("change",(function(t){L({hl:a(t.target).val()})})),d.on("change",(function(t){var e=a(t.target).val();j.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),L({sitekey:j[e]}))})),f.on("change",(function(){U()})),g.on("blur",(function(){U()})),g.on("focus",(function(){g.css("background-color","unset"),C.attr("disabled",!1)})),b.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};y.prop("checked")&&(e.recaptchacompat="off"),f.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=T();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(P(o)))}var r=n.api_host.trim();r=P(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var s in e)i.searchParams.append(s,e[s]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,document.querySelector("#hcaptcha-options .h-captcha").innerHTML="";var l=document.getElementsByTagName("head")[0],h=document.createElement("script");h.type="text/javascript",h.id="hcaptcha-api",h.src=i.href,l.appendChild(h)}(),JSON.stringify(T())===JSON.stringify(k)?(S=!1,A(),C.attr("disabled",!1)):S||(S=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||N(t.data)})).fail((function(t){N(t.statusText)}))})),s.removeAttr("name"),l.removeAttr("name"),m.removeAttr("name"),v.removeAttr("name"),m.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),v.val(""),m.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(v.attr("type","text"),v.val(n)):(v.val(n),v.attr("type","color"))})),v.on("change",(function(t){var e=a(t.target).val(),n=m.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),U(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})();
     1(()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#check_config"),l=a("#reset_notifications"),h=a('[name="hcaptcha_settings[theme]"]'),p=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),d=a('[name="hcaptcha_settings[mode]"]'),f=a('[name="hcaptcha_settings[custom_themes][]"]'),v=a(".hcaptcha-general-custom-prop select"),m=a(".hcaptcha-general-custom-value input"),g=a('[name="hcaptcha_settings[config_params]"]'),b=a(".hcaptcha-section-enterprise + table input"),y=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),C=o.find("#submit"),j={},O=r.val(),H=i.val(),k=T();j[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,j[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,j[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var G=!1,S=!1,_=[];function w(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function T(){return w(b)}function A(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter("#hcaptcha-options h2"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled"],e=[],a=0;a<_.length;a++){for(var n=_[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var l=o[s];"string"==typeof l&&-1===t.indexOf(l)&&i.push([c,l].join(" "))}e.push(i.join("\n"))}return _=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added");var o=a("#wpwrap").position().top;a("html, body").animate({scrollTop:c.offset().top-o-parseInt(c.css("margin-bottom"))},1e3)}}function x(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Object.assign(hCaptcha.getParams(),t);hCaptcha.setParams(e);var a=document.querySelector("#hcaptcha-options .h-captcha");for(var n in a.innerHTML="",t)a.setAttribute("data-".concat(n),"".concat(t[n]));hCaptcha.bindEvents()}function K(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=K(Object.assign({},c),o):t[e]=o})),t):a}function U(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(var n in t){var c=a?"".concat(a,"--").concat(n):n;if("object"===e(t[n])&&null!==t[n])U(t[n],c);else{var o=t[n],r=c.replace(/theme--/g,""),i="".concat(r,"=").concat(o),s=v.find('option[value*="'.concat(r,'="]'));1===s.length&&(s.attr("value",i),s.is(":selected")&&m.val(o))}}}function B(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=g.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return g.css("background-color","#ffabaf"),C.attr("disabled",!0),void N("Bad JSON!")}t=K(t,e),g.val(JSON.stringify(t,null,2)),U(t),f.prop("checked")||(t={sitekey:r.val(),theme:h.val(),size:p.val(),hl:u.val()}),L(t)}function P(){r.val()===O&&i.val()===H?(G=!1,A(),C.attr("disabled",!1)):G||(G=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))}function J(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){_=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){_.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){_.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){_.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){_.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){_=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){N()})),s.on("click",(function(t){t.preventDefault(),""!==a(".hcaptcha-general-sample-hcaptcha iframe").attr("data-hcaptcha-response")?function(){A(),C.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:d.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return x(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(O=r.val(),H=i.val(),k=w(b),S=!1,x(t.data),C.attr("disabled",!1)):N(t.data)})).fail((function(t){N(t.statusText)})).always((function(){L()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){L({sitekey:a(t.target).val()}),P()})),i.on("change",(function(){P()})),h.on("change",(function(t){L({theme:a(t.target).val()})})),p.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),L({size:n})})),u.on("change",(function(t){L({hl:a(t.target).val()})})),d.on("change",(function(t){var e=a(t.target).val();j.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),L({sitekey:j[e]}))})),f.on("change",(function(){B()})),g.on("blur",(function(){B()})),g.on("focus",(function(){g.css("background-color","unset"),C.attr("disabled",!1)})),b.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};y.prop("checked")&&(e.recaptchacompat="off"),f.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=T();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(J(o)))}var r=n.api_host.trim();r=J(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var s in e)i.searchParams.append(s,e[s]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,document.querySelector("#hcaptcha-options .h-captcha").innerHTML="";var l=document.getElementsByTagName("head")[0],h=document.createElement("script");h.type="text/javascript",h.id="hcaptcha-api",h.src=i.href,l.appendChild(h)}(),JSON.stringify(T())===JSON.stringify(k)?(S=!1,A(),C.attr("disabled",!1)):S||(S=!0,N(HCaptchaGeneralObject.checkConfigNotice),C.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||N(t.data)})).fail((function(t){N(t.statusText)}))})),s.removeAttr("name"),l.removeAttr("name"),v.removeAttr("name"),m.removeAttr("name"),v.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),m.val(""),v.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(m.attr("type","text"),m.val(n)):(m.val(n),m.attr("type","color"))})),m.on("change",(function(t){var e=a(t.target).val(),n=v.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),B(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})();
  • hcaptcha-for-forms-and-more/trunk/changelog.txt

    r3080217 r3081325  
     1= 4.1.1 =
     2* Added updating of the Custom Themes properties on the General page upon manual editing of the Config Params JSON.
     3* Fixed a possible fatal error with third-party plugins using a Jetpack library.
     4
    15= 4.1.0 =
    26* Added Essential Blocks integration.
  • hcaptcha-for-forms-and-more/trunk/hcaptcha.php

    r3080217 r3081325  
    1111 * Plugin URI:           https://www.hcaptcha.com/
    1212 * Description:          hCaptcha keeps out bots and spam while putting privacy first. It is a drop-in replacement for reCAPTCHA.
    13  * Version:              4.1.0
     13 * Version:              4.1.1
    1414 * Requires at least:    5.1
    1515 * Requires PHP:         7.0
     
    4040 * Plugin version.
    4141 */
    42 const HCAPTCHA_VERSION = '4.1.0';
     42const HCAPTCHA_VERSION = '4.1.1';
    4343
    4444/**
  • hcaptcha-for-forms-and-more/trunk/readme.txt

    r3080217 r3081325  
    55Tested up to: 6.5
    66Requires PHP: 7.0.0
    7 Stable tag: 4.1.0
     7Stable tag: 4.1.1
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    426426You can customize this by returning it to the previous location in the admin Settings section, or tweak its appearance.
    427427
    428 To do this, use the following filter:
     428To do this, use the following filter to your plugin's (or mu-plugin's) main file. This code won't work being added to a theme's functions.php file.
    429429
    430430`
     
    473473
    474474Once you activate this plugin, the hCaptcha-answering user's IP address and browser data may be sent to the hCaptcha service on pages where you have activated hCaptcha protection. However, hCaptcha is designed to minimize data used, process it very close to the user, and rapidly discard it after analysis.
    475 
    476475For more details, please see the hCaptcha privacy policy at:
    477476
     
    567566== Changelog ==
    568567
     568= 4.1.1 =
     569* Added updating of the Custom Themes properties on the General page upon manual editing of the Config Params JSON.
     570* Fixed a possible fatal error with third-party plugins using a Jetpack library.
     571
    569572= 4.1.0 =
    570573* Added Essential Blocks integration.
  • hcaptcha-for-forms-and-more/trunk/src/php/Admin/Notifications.php

    r3064004 r3081325  
    208208                'title'   => __( 'Events admin page', 'hcaptcha-for-forms-and-more' ),
    209209                'message' => sprintf(
    210                 /* translators: 1: statistics switch link, 2: the 'forms' page link. */
     210                /* translators: 1: statistics switch link, 2: Pro link, 3: the 'forms' page link. */
    211211                    __( '%1$s events statistics and %2$s to %3$s complete statistics on form events.', 'hcaptcha-for-forms-and-more' ),
    212212                    sprintf(
  • hcaptcha-for-forms-and-more/trunk/src/php/Main.php

    r3080217 r3081325  
    699699
    700700        if ( $settings->is_on( 'custom_themes' ) && $this->is_pro_or_general() ) {
    701             $config_params = json_decode( $settings->get( 'config_params' ), true ) ?: [];
     701            $config_params = $settings->get_config_params();
    702702        }
    703703
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/Abstracts/SettingsBase.php

    r3080217 r3081325  
    7272
    7373    /**
    74      * Prefix for minified files.
     74     * Suffix for minified files.
    7575     *
    7676     * @var string
    7777     */
    78     protected $min_prefix;
     78    protected $min_suffix;
    7979
    8080    /**
     
    269269     */
    270270    public function init() {
    271         $this->min_prefix = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? '' : '.min';
     271        $this->min_suffix = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? '' : '.min';
    272272
    273273        $this->form_fields();
     
    539539        wp_enqueue_style(
    540540            static::PREFIX . '-settings-admin',
    541             $this->plugin_url() . "/assets/css/settings-admin$this->min_prefix.css",
     541            $this->plugin_url() . "/assets/css/settings-admin$this->min_suffix.css",
    542542            [],
    543543            $this->plugin_version()
     
    550550        wp_enqueue_script(
    551551            static::PREFIX . '-' . self::HANDLE,
    552             $this->plugin_url() . "/assets/js/settings-base$this->min_prefix.js",
     552            $this->plugin_url() . "/assets/js/settings-base$this->min_suffix.js",
    553553            [],
    554554            $this->plugin_version(),
     
    558558        wp_enqueue_style(
    559559            static::PREFIX . '-' . self::HANDLE,
    560             $this->plugin_url() . "/assets/css/settings-base$this->min_prefix.css",
     560            $this->plugin_url() . "/assets/css/settings-base$this->min_suffix.css",
    561561            [],
    562562            $this->plugin_version()
     
    610610
    611611        $tab = $this->get_active_tab();
     612
     613        if ( ! $this->is_options_screen( [ 'options', $tab->option_page() ] ) ) {
     614            return;
     615        }
    612616
    613617        add_settings_section(
     
    14041408        $current_suffix = preg_replace( '/.+_page_/', '', $current_screen->id );
    14051409
    1406         return $this->option_page() === $current_suffix || in_array( $current_screen->id, $ids, true );
     1410        return $this->option_page() === $current_suffix || in_array( $current_suffix, $ids, true );
    14071411    }
    14081412
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/EventsPage.php

    r3080217 r3081325  
    115115        wp_enqueue_style(
    116116            self::HANDLE,
    117             constant( 'HCAPTCHA_URL' ) . "/assets/css/events$this->min_prefix.css",
     117            constant( 'HCAPTCHA_URL' ) . "/assets/css/events$this->min_suffix.css",
    118118            [ static::PREFIX . '-' . SettingsBase::HANDLE ],
    119119            constant( 'HCAPTCHA_VERSION' )
     
    142142        wp_enqueue_script(
    143143            self::HANDLE,
    144             constant( 'HCAPTCHA_URL' ) . "/assets/js/events$this->min_prefix.js",
     144            constant( 'HCAPTCHA_URL' ) . "/assets/js/events$this->min_suffix.js",
    145145            [ 'chart', 'chart-adapter-date-fns' ],
    146146            constant( 'HCAPTCHA_VERSION' ),
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/FormsPage.php

    r3080217 r3081325  
    108108        wp_enqueue_style(
    109109            self::HANDLE,
    110             constant( 'HCAPTCHA_URL' ) . "/assets/css/forms$this->min_prefix.css",
     110            constant( 'HCAPTCHA_URL' ) . "/assets/css/forms$this->min_suffix.css",
    111111            [ static::PREFIX . '-' . SettingsBase::HANDLE ],
    112112            constant( 'HCAPTCHA_VERSION' )
     
    135135        wp_enqueue_script(
    136136            self::HANDLE,
    137             constant( 'HCAPTCHA_URL' ) . "/assets/js/forms$this->min_prefix.js",
     137            constant( 'HCAPTCHA_URL' ) . "/assets/js/forms$this->min_suffix.js",
    138138            [ 'chart', 'chart-adapter-date-fns' ],
    139139            constant( 'HCAPTCHA_VERSION' ),
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/General.php

    r3064004 r3081325  
    578578        }
    579579
    580         $custom_theme  = $settings->get( 'config_params' )['theme'] ?? [];
     580        $config_params = $settings->get_config_params();
     581        $custom_theme  = $config_params['theme'] ?? [];
    581582        $default_theme = $settings->get_default_theme();
    582         $custom_theme  = array_merge_recursive( $default_theme, $custom_theme );
     583        $custom_theme  = array_replace_recursive( $default_theme, $custom_theme );
    583584        $custom_theme  = $this->flatten_array( $custom_theme );
    584585        $options       = [];
     
    701702        wp_enqueue_script(
    702703            self::DIALOG_HANDLE,
    703             constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_prefix.js",
     704            constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_suffix.js",
    704705            [],
    705706            constant( 'HCAPTCHA_VERSION' ),
     
    709710        wp_enqueue_style(
    710711            self::DIALOG_HANDLE,
    711             constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_prefix.css",
     712            constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_suffix.css",
    712713            [],
    713714            constant( 'HCAPTCHA_VERSION' )
     
    716717        wp_enqueue_script(
    717718            self::HANDLE,
    718             constant( 'HCAPTCHA_URL' ) . "/assets/js/general$this->min_prefix.js",
     719            constant( 'HCAPTCHA_URL' ) . "/assets/js/general$this->min_suffix.js",
    719720            [ 'jquery', self::DIALOG_HANDLE ],
    720721            constant( 'HCAPTCHA_VERSION' ),
     
    753754        wp_enqueue_style(
    754755            self::HANDLE,
    755             constant( 'HCAPTCHA_URL' ) . "/assets/css/general$this->min_prefix.css",
     756            constant( 'HCAPTCHA_URL' ) . "/assets/css/general$this->min_suffix.css",
    756757            [ static::PREFIX . '-' . SettingsBase::HANDLE, self::DIALOG_HANDLE ],
    757758            constant( 'HCAPTCHA_VERSION' )
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/Integrations.php

    r3080217 r3081325  
    701701        wp_enqueue_script(
    702702            self::DIALOG_HANDLE,
    703             constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_prefix.js",
     703            constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_suffix.js",
    704704            [],
    705705            constant( 'HCAPTCHA_VERSION' ),
     
    709709        wp_enqueue_style(
    710710            self::DIALOG_HANDLE,
    711             constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_prefix.css",
     711            constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_suffix.css",
    712712            [],
    713713            constant( 'HCAPTCHA_VERSION' )
     
    716716        wp_enqueue_script(
    717717            self::HANDLE,
    718             constant( 'HCAPTCHA_URL' ) . "/assets/js/integrations$this->min_prefix.js",
     718            constant( 'HCAPTCHA_URL' ) . "/assets/js/integrations$this->min_suffix.js",
    719719            [ 'jquery', self::DIALOG_HANDLE ],
    720720            constant( 'HCAPTCHA_VERSION' ),
     
    749749        wp_enqueue_style(
    750750            self::HANDLE,
    751             constant( 'HCAPTCHA_URL' ) . "/assets/css/integrations$this->min_prefix.css",
     751            constant( 'HCAPTCHA_URL' ) . "/assets/css/integrations$this->min_suffix.css",
    752752            [ static::PREFIX . '-' . SettingsBase::HANDLE, self::DIALOG_HANDLE ],
    753753            constant( 'HCAPTCHA_VERSION' )
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/Settings.php

    r3080217 r3081325  
    105105
    106106        return $first_tab ? $first_tab->get_active_tab()->tab_name() : '';
     107    }
     108
     109    /**
     110     * Get config params.
     111     *
     112     * @return array
     113     */
     114    public function get_config_params(): array {
     115        return (array) ( json_decode( $this->get( 'config_params' ), true ) ?: [] );
    107116    }
    108117
  • hcaptcha-for-forms-and-more/trunk/src/php/Settings/SystemInfo.php

    r3080217 r3081325  
    6262        wp_enqueue_script(
    6363            self::DIALOG_HANDLE,
    64             constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_prefix.js",
     64            constant( 'HCAPTCHA_URL' ) . "/assets/js/kagg-dialog$this->min_suffix.js",
    6565            [],
    6666            constant( 'HCAPTCHA_VERSION' ),
     
    7070        wp_enqueue_style(
    7171            self::DIALOG_HANDLE,
    72             constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_prefix.css",
     72            constant( 'HCAPTCHA_URL' ) . "/assets/css/kagg-dialog$this->min_suffix.css",
    7373            [],
    7474            constant( 'HCAPTCHA_VERSION' )
     
    7777        wp_enqueue_script(
    7878            self::HANDLE,
    79             constant( 'HCAPTCHA_URL' ) . "/assets/js/system-info$this->min_prefix.js",
     79            constant( 'HCAPTCHA_URL' ) . "/assets/js/system-info$this->min_suffix.js",
    8080            [ self::DIALOG_HANDLE ],
    8181            constant( 'HCAPTCHA_VERSION' ),
     
    9595        wp_enqueue_style(
    9696            self::HANDLE,
    97             constant( 'HCAPTCHA_URL' ) . "/assets/css/system-info$this->min_prefix.css",
     97            constant( 'HCAPTCHA_URL' ) . "/assets/css/system-info$this->min_suffix.css",
    9898            [ static::PREFIX . '-' . SettingsBase::HANDLE, self::DIALOG_HANDLE ],
    9999            constant( 'HCAPTCHA_VERSION' )
  • hcaptcha-for-forms-and-more/trunk/vendor/composer/installed.php

    r3080217 r3081325  
    22    'root' => array(
    33        'name' => 'hcaptcha/hcaptcha-wordpress-plugin',
    4         'pretty_version' => '4.1.0',
    5         'version' => '4.1.0.0',
    6         'reference' => '9d4b7f18932e6d97cd09e5a6384121bffe09088d',
     4        'pretty_version' => '4.1.1',
     5        'version' => '4.1.1.0',
     6        'reference' => '9daed7afed0e03785e71c05cf9d9196d7b63c132',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        'hcaptcha/hcaptcha-wordpress-plugin' => array(
    14             'pretty_version' => '4.1.0',
    15             'version' => '4.1.0.0',
    16             'reference' => '9d4b7f18932e6d97cd09e5a6384121bffe09088d',
     14            'pretty_version' => '4.1.1',
     15            'version' => '4.1.1.0',
     16            'reference' => '9daed7afed0e03785e71c05cf9d9196d7b63c132',
    1717            'type' => 'wordpress-plugin',
    1818            'install_path' => __DIR__ . '/../../',
Note: See TracChangeset for help on using the changeset viewer.