Plugin Directory

Changeset 3253534


Ignore:
Timestamp:
03/10/2025 06:43:22 PM (9 months ago)
Author:
google
Message:

Update to version 1.148.0 from GitHub

Location:
google-site-kit
Files:
130 added
94 deleted
48 edited
1 copied

Legend:

Unmodified
Added
Removed
  • google-site-kit/tags/1.148.0/dist/assets/js/blocks/sign-in-with-google/block.json

    r3246532 r3253534  
    33    "apiVersion": 2,
    44    "name": "google-site-kit/sign-in-with-google",
    5     "version": "1.147.0",
     5    "version": "1.148.0",
    66    "title": "Sign in with Google",
    77    "category": "widgets",
  • google-site-kit/tags/1.148.0/dist/assets/js/blocks/sign-in-with-google/editor-styles.js

    r3246532 r3253534  
    1 !function(e){var _={};function __webpack_require__(r){if(_[r])return _[r].exports;var t=_[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,__webpack_require__),t.l=!0,t.exports}__webpack_require__.m=e,__webpack_require__.c=_,__webpack_require__.d=function(e,_,r){__webpack_require__.o(e,_)||Object.defineProperty(e,_,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,_){if(1&_&&(e=__webpack_require__(e)),8&_)return e;if(4&_&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&_&&"string"!=typeof e)for(var t in e)__webpack_require__.d(r,t,function(_){return e[_]}.bind(null,t));return r},__webpack_require__.n=function(e){var _=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(_,"a",_),_},__webpack_require__.o=function(e,_){return Object.prototype.hasOwnProperty.call(e,_)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=7)}({7:function(e,_,r){"use strict";r.r(_)}});
     1!function(e){var _={};function __webpack_require__(r){if(_[r])return _[r].exports;var t=_[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,__webpack_require__),t.l=!0,t.exports}__webpack_require__.m=e,__webpack_require__.c=_,__webpack_require__.d=function(e,_,r){__webpack_require__.o(e,_)||Object.defineProperty(e,_,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,_){if(1&_&&(e=__webpack_require__(e)),8&_)return e;if(4&_&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&_&&"string"!=typeof e)for(var t in e)__webpack_require__.d(r,t,function(_){return e[_]}.bind(null,t));return r},__webpack_require__.n=function(e){var _=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(_,"a",_),_},__webpack_require__.o=function(e,_){return Object.prototype.hasOwnProperty.call(e,_)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=43)}({43:function(e,_,r){"use strict";r.r(_)}});
  • google-site-kit/tags/1.148.0/dist/assets/js/blocks/sign-in-with-google/index.js

    r3246532 r3253534  
    1 !function(e){var t={};function __webpack_require__(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.l=!0,n.exports}__webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,r){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)__webpack_require__.d(r,n,function(t){return e[t]}.bind(null,n));return r},__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=8)}([function(e,t,r){"use strict";e.exports=r(5)},function(e,t){e.exports=wp.blocks},function(e,t){e.exports=wp.blockEditor},function(e){e.exports=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"google-site-kit/sign-in-with-google","version":"1.147.0","title":"Sign in with Google","category":"widgets","icon":"google","description":"Allow users to sign in to your site using their Google Account.","textdomain":"google-site-kit"}')},,function(e,t,r){"use strict";var n=r(6),A="function"==typeof Symbol&&Symbol.for,o=A?Symbol.for("react.element"):60103,i=A?Symbol.for("react.portal"):60106,u=A?Symbol.for("react.fragment"):60107,c=A?Symbol.for("react.strict_mode"):60108,l=A?Symbol.for("react.profiler"):60114,a=A?Symbol.for("react.provider"):60109,f=A?Symbol.for("react.context"):60110,s=A?Symbol.for("react.forward_ref"):60112,p=A?Symbol.for("react.suspense"):60113,g=A?Symbol.for("react.memo"):60115,v=A?Symbol.for("react.lazy"):60116,C="function"==typeof Symbol&&Symbol.iterator;function h(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function B(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}function b(){}function m(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}B.prototype.isReactComponent={},B.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(h(85));this.updater.enqueueSetState(this,e,t,"setState")},B.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=B.prototype;var E=m.prototype=new b;E.constructor=m,n(E,B.prototype),E.isPureReactComponent=!0;var R={current:null},d=Object.prototype.hasOwnProperty,Y={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,r){var n,A={},i=null,u=null;if(null!=t)for(n in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(i=""+t.key),t)d.call(t,n)&&!Y.hasOwnProperty(n)&&(A[n]=t[n]);var c=arguments.length-2;if(1===c)A.children=r;else if(1<c){for(var l=Array(c),a=0;a<c;a++)l[a]=arguments[a+2];A.children=l}if(e&&e.defaultProps)for(n in c=e.defaultProps)void 0===A[n]&&(A[n]=c[n]);return{$$typeof:o,type:e,key:i,ref:u,props:A,_owner:R.current}}function G(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var P=/\/+/g,I=[];function F(e,t,r,n){if(I.length){var A=I.pop();return A.result=e,A.keyPrefix=t,A.func=r,A.context=n,A.count=0,A}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function S(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>I.length&&I.push(e)}function k(e,t,r){return null==e?0:function e(t,r,n,A){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var c=!1;if(null===t)c=!0;else switch(u){case"string":case"number":c=!0;break;case"object":switch(t.$$typeof){case o:case i:c=!0}}if(c)return n(A,t,""===r?"."+W(t,0):r),1;if(c=0,r=""===r?".":r+":",Array.isArray(t))for(var l=0;l<t.length;l++){var a=r+W(u=t[l],l);c+=e(u,a,n,A)}else if(null===t||"object"!=typeof t?a=null:a="function"==typeof(a=C&&t[C]||t["@@iterator"])?a:null,"function"==typeof a)for(t=a.call(t),l=0;!(u=t.next()).done;)c+=e(u=u.value,a=r+W(u,l++),n,A);else if("object"===u)throw n=""+t,Error(h(31,"[object Object]"===n?"object with keys {"+Object.keys(t).join(", ")+"}":n,""));return c}(e,"",t,r)}function W(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function L(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,r){var n=e.result,A=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?q(e,n,r,(function(e){return e})):null!=e&&(G(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,A+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(P,"$&/")+"/")+r)),n.push(e))}function q(e,t,r,n,A){var o="";null!=r&&(o=(""+r).replace(P,"$&/")+"/"),k(e,N,t=F(t,o,n,A)),S(t)}var V={current:null};function Z(){var e=V.current;if(null===e)throw Error(h(321));return e}var D={ReactCurrentDispatcher:V,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:R,IsSomeRendererActing:{current:!1},assign:n};t.Children={map:function(e,t,r){if(null==e)return e;var n=[];return q(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;k(e,L,t=F(null,null,t,r)),S(t)},count:function(e){return k(e,(function(){return null}),null)},toArray:function(e){var t=[];return q(e,t,null,(function(e){return e})),t},only:function(e){if(!G(e))throw Error(h(143));return e}},t.Component=B,t.Fragment=u,t.Profiler=l,t.PureComponent=m,t.StrictMode=c,t.Suspense=p,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=D,t.cloneElement=function(e,t,r){if(null==e)throw Error(h(267,e));var A=n({},e.props),i=e.key,u=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(u=t.ref,c=R.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(a in t)d.call(t,a)&&!Y.hasOwnProperty(a)&&(A[a]=void 0===t[a]&&void 0!==l?l[a]:t[a])}var a=arguments.length-2;if(1===a)A.children=r;else if(1<a){l=Array(a);for(var f=0;f<a;f++)l[f]=arguments[f+2];A.children=l}return{$$typeof:o,type:e.type,key:i,ref:u,props:A,_owner:c}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=j,t.createFactory=function(e){var t=j.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=G,t.lazy=function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:g,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return Z().useCallback(e,t)},t.useContext=function(e,t){return Z().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return Z().useEffect(e,t)},t.useImperativeHandle=function(e,t,r){return Z().useImperativeHandle(e,t,r)},t.useLayoutEffect=function(e,t){return Z().useLayoutEffect(e,t)},t.useMemo=function(e,t){return Z().useMemo(e,t)},t.useReducer=function(e,t,r){return Z().useReducer(e,t,r)},t.useRef=function(e){return Z().useRef(e)},t.useState=function(e){return Z().useState(e)},t.version="16.14.0"},function(e,t,r){"use strict";var n=Object.getOwnPropertySymbols,A=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(e){n[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,u,c=i(e),l=1;l<arguments.length;l++){for(var a in r=Object(arguments[l]))A.call(r,a)&&(c[a]=r[a]);if(n){u=n(r);for(var f=0;f<u.length;f++)o.call(r,u[f])&&(c[u[f]]=r[u[f]])}}return c}},,function(e,t,r){"use strict";r.r(t);var n=r(1),A=r(2),o=r(0);function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var u=o.createElement("rect",{width:180,height:41,rx:20.5,fill:"#fff"}),c=o.createElement("path",{fill:"url(#icon_svg__pattern0_1_99)",d:"M9 8h162v26H9z"}),l=o.createElement("defs",null,o.createElement("pattern",{id:"icon_svg__pattern0_1_99",patternContentUnits:"objectBoundingBox",width:1,height:1},o.createElement("use",{xlinkHref:"#icon_svg__image0_1_99",transform:"matrix(.00309 0 0 .01923 -.117 -.692)"})),o.createElement("image",{id:"icon_svg__image0_1_99",width:406,height:126,xlinkHref:"data:image/png;base64,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"}));var a=function SvgIcon(e){return o.createElement("svg",i({viewBox:"0 0 180 41",fill:"none"},e),u,c,l)};var f=r(3);Object(n.registerBlockType)(f.name,{edit:function Edit(){var e=Object(A.useBlockProps)();return React.createElement("div",e,React.createElement("div",{className:"googlesitekit-blocks-sign-in-with-google",style:{maxWidth:"180px",minWidth:"120px"}},React.createElement(a,null)))}})}]);
     1!function(e){var t={};function __webpack_require__(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.l=!0,n.exports}__webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,r){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)__webpack_require__.d(r,n,function(t){return e[t]}.bind(null,n));return r},__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=45)}({1:function(e,t,r){"use strict";e.exports=r(17)},12:function(e,t){e.exports=wp.blockEditor},16:function(e,t){e.exports=wp.blocks},17:function(e,t,r){"use strict";var n=r(18),A="function"==typeof Symbol&&Symbol.for,o=A?Symbol.for("react.element"):60103,i=A?Symbol.for("react.portal"):60106,u=A?Symbol.for("react.fragment"):60107,c=A?Symbol.for("react.strict_mode"):60108,l=A?Symbol.for("react.profiler"):60114,a=A?Symbol.for("react.provider"):60109,f=A?Symbol.for("react.context"):60110,s=A?Symbol.for("react.forward_ref"):60112,p=A?Symbol.for("react.suspense"):60113,g=A?Symbol.for("react.memo"):60115,v=A?Symbol.for("react.lazy"):60116,C="function"==typeof Symbol&&Symbol.iterator;function h(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function B(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}function b(){}function m(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}B.prototype.isReactComponent={},B.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(h(85));this.updater.enqueueSetState(this,e,t,"setState")},B.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=B.prototype;var E=m.prototype=new b;E.constructor=m,n(E,B.prototype),E.isPureReactComponent=!0;var R={current:null},d=Object.prototype.hasOwnProperty,Y={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,r){var n,A={},i=null,u=null;if(null!=t)for(n in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(i=""+t.key),t)d.call(t,n)&&!Y.hasOwnProperty(n)&&(A[n]=t[n]);var c=arguments.length-2;if(1===c)A.children=r;else if(1<c){for(var l=Array(c),a=0;a<c;a++)l[a]=arguments[a+2];A.children=l}if(e&&e.defaultProps)for(n in c=e.defaultProps)void 0===A[n]&&(A[n]=c[n]);return{$$typeof:o,type:e,key:i,ref:u,props:A,_owner:R.current}}function G(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var P=/\/+/g,I=[];function F(e,t,r,n){if(I.length){var A=I.pop();return A.result=e,A.keyPrefix=t,A.func=r,A.context=n,A.count=0,A}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function S(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>I.length&&I.push(e)}function k(e,t,r){return null==e?0:function e(t,r,n,A){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var c=!1;if(null===t)c=!0;else switch(u){case"string":case"number":c=!0;break;case"object":switch(t.$$typeof){case o:case i:c=!0}}if(c)return n(A,t,""===r?"."+W(t,0):r),1;if(c=0,r=""===r?".":r+":",Array.isArray(t))for(var l=0;l<t.length;l++){var a=r+W(u=t[l],l);c+=e(u,a,n,A)}else if(null===t||"object"!=typeof t?a=null:a="function"==typeof(a=C&&t[C]||t["@@iterator"])?a:null,"function"==typeof a)for(t=a.call(t),l=0;!(u=t.next()).done;)c+=e(u=u.value,a=r+W(u,l++),n,A);else if("object"===u)throw n=""+t,Error(h(31,"[object Object]"===n?"object with keys {"+Object.keys(t).join(", ")+"}":n,""));return c}(e,"",t,r)}function W(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function L(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,r){var n=e.result,A=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?q(e,n,r,(function(e){return e})):null!=e&&(G(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,A+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(P,"$&/")+"/")+r)),n.push(e))}function q(e,t,r,n,A){var o="";null!=r&&(o=(""+r).replace(P,"$&/")+"/"),k(e,N,t=F(t,o,n,A)),S(t)}var V={current:null};function Z(){var e=V.current;if(null===e)throw Error(h(321));return e}var D={ReactCurrentDispatcher:V,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:R,IsSomeRendererActing:{current:!1},assign:n};t.Children={map:function(e,t,r){if(null==e)return e;var n=[];return q(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;k(e,L,t=F(null,null,t,r)),S(t)},count:function(e){return k(e,(function(){return null}),null)},toArray:function(e){var t=[];return q(e,t,null,(function(e){return e})),t},only:function(e){if(!G(e))throw Error(h(143));return e}},t.Component=B,t.Fragment=u,t.Profiler=l,t.PureComponent=m,t.StrictMode=c,t.Suspense=p,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=D,t.cloneElement=function(e,t,r){if(null==e)throw Error(h(267,e));var A=n({},e.props),i=e.key,u=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(u=t.ref,c=R.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(a in t)d.call(t,a)&&!Y.hasOwnProperty(a)&&(A[a]=void 0===t[a]&&void 0!==l?l[a]:t[a])}var a=arguments.length-2;if(1===a)A.children=r;else if(1<a){l=Array(a);for(var f=0;f<a;f++)l[f]=arguments[f+2];A.children=l}return{$$typeof:o,type:e.type,key:i,ref:u,props:A,_owner:c}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=j,t.createFactory=function(e){var t=j.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=G,t.lazy=function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:g,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return Z().useCallback(e,t)},t.useContext=function(e,t){return Z().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return Z().useEffect(e,t)},t.useImperativeHandle=function(e,t,r){return Z().useImperativeHandle(e,t,r)},t.useLayoutEffect=function(e,t){return Z().useLayoutEffect(e,t)},t.useMemo=function(e,t){return Z().useMemo(e,t)},t.useReducer=function(e,t,r){return Z().useReducer(e,t,r)},t.useRef=function(e){return Z().useRef(e)},t.useState=function(e){return Z().useState(e)},t.version="16.14.0"},18:function(e,t,r){"use strict";var n=Object.getOwnPropertySymbols,A=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(e){n[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,u,c=i(e),l=1;l<arguments.length;l++){for(var a in r=Object(arguments[l]))A.call(r,a)&&(c[a]=r[a]);if(n){u=n(r);for(var f=0;f<u.length;f++)o.call(r,u[f])&&(c[u[f]]=r[u[f]])}}return c}},37:function(e){e.exports=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"google-site-kit/sign-in-with-google","version":"1.148.0","title":"Sign in with Google","category":"widgets","icon":"google","description":"Allow users to sign in to your site using their Google Account.","textdomain":"google-site-kit"}')},45:function(e,t,r){"use strict";r.r(t);var n=r(16),A=r(12),o=r(1);function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var u=o.createElement("rect",{width:180,height:41,rx:20.5,fill:"#fff"}),c=o.createElement("path",{fill:"url(#icon_svg__pattern0_1_99)",d:"M9 8h162v26H9z"}),l=o.createElement("defs",null,o.createElement("pattern",{id:"icon_svg__pattern0_1_99",patternContentUnits:"objectBoundingBox",width:1,height:1},o.createElement("use",{xlinkHref:"#icon_svg__image0_1_99",transform:"matrix(.00309 0 0 .01923 -.117 -.692)"})),o.createElement("image",{id:"icon_svg__image0_1_99",width:406,height:126,xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZYAAAB+CAYAAAAHmDfNAAAKpGlDQ1BJQ0MgUHJvZmlsZQAASImVlwdQk9kWgO//p4eEllClhN6ktwBSQg9FerURkhBCiTEQVOyKuIIriogIqAuyKKCgqICsDUSxsCjY6wZZFNR1sSAqKu8PDGF337z35p2Zk/PNybnnnHvn3pnzA0BGs4TCDFgRgExBtigywJsWn5BIww0DPFAEMLAGZBY7S8gIDw8BiMzYv8vHuwCS2luW0lz//v9/FSUON4sNABSOcDIni52J8ElEJWyhKBsAVAniN1ieLZRyG8JUEdIgwj1S5k2zRMrJ0/xhKiY60gcANB4APInFEvEAIFERPy2HzUPykBwQthFw+AKEOQh7ZGYuRSypBmFTJEaIsDQ/PfkveXh/y5ksy8li8WQ8vZcpwfvys4QZrJX/53H8b8nMEM/UMEaUlCoKjJTWQ87sfvrSYBkLkueHzTCfM92TlFPFgTEzzM7ySZxhDss3WLY2Y37IDKfw/ZmyPNnM6BnmZvlFzbBoaaSsVorIhzHDLNFsXXF6jMyfymXK8uemRsfNcA4/dv4MZ6VHBc/G+Mj8InGkrH+uIMB7tq6/bO+ZWX/ZL58pW5udGh0o2ztrtn+ugDGbMyte1huH6+s3GxMjixdme8tqCTPCZfHcjACZPysnSrY2G7mQs2vDZWeYxgoKn2HAB6GABdjZ3BXZ0uZ9lgpXivi81GwaA3lVXBpTwLaaS7OzsUNur/SNTl+B0RtTbw/SUJr15cPIle6YnJxsmfUxVQE4fg4A4udZn8lZABTWA3BlDVssypn2oaU/GEAECoAKNIAOMACmwBLYASfgBryAHwgCYSAaJIDFgA1SQSYQgeVgNdgA8kEh2AF2g3JwABwEh8FR0AxawRnQAS6D6+AmuAMeAQkYAq/AKPgIJiAIwkFkiAJpQLqQEWQB2UF0yAPyg0KgSCgBSoJ4kAASQ6uhTVAhVAyVQ1VQHXQcOg11QFehPugBNACNQO+gLzAKJsFUWBs2hq1hOsyAg+FoeBHMg5fBuXAevB0ug6vhI3AL3AFfh+/AEvgVPIYCKDmUKkoPZYmio3xQYahEVApKhFqLKkCVoqpRjah2VDfqFkqCeo36jMaiKWga2hLthg5Ex6DZ6GXoteht6HL0YXQLugt9Cz2AHkV/x5AxWhgLjCuGiYnH8DDLMfmYUkwt5hTmEuYOZgjzEYvFqmJNsM7YQGwCNg27CrsNuw/bhL2A7cMOYsdwOJwGzgLnjgvDsXDZuHzcXtwR3HlcP24I9wkvh9fF2+H98Yl4AX4jvhRfjz+H78e/wE8QFAlGBFdCGIFDWEkoItQQ2gk3CEOECaIS0YToTowmphE3EMuIjcRLxMfE93JycvpyLnIRcny59XJlcsfkrsgNyH0mKZPMST6khSQxaTvpEOkC6QHpPZlMNiZ7kRPJ2eTt5DryRfJT8id5iryVPFOeI79OvkK+Rb5f/o0CQcFIgaGwWCFXoVThhMINhdeKBEVjRR9FluJaxQrF04r3FMeUKEq2SmFKmUrblOqVrioNK+OUjZX9lDnKecoHlS8qD1JQFAOKD4VN2USpoVyiDFGxVBMqk5pGLaQepfZSR1WUVRxUYlVWqFSonFWRqKJUjVWZqhmqRarNqndVv6hpqzHUuGpb1RrV+tXG1eeoe6lz1QvUm9TvqH/RoGn4aaRr7NRo1XiiidY014zQXK65X/OS5us51Dluc9hzCuY0z3moBWuZa0VqrdI6qNWjNaatox2gLdTeq31R+7WOqo6XTppOic45nRFdiq6HLl+3RPe87kuaCo1By6CV0bpoo3paeoF6Yr0qvV69CX0T/Rj9jfpN+k8MiAZ0gxSDEoNOg1FDXcNQw9WGDYYPjQhGdKNUoz1G3UbjxibGccZbjFuNh03UTZgmuSYNJo9NyaaepstMq01vm2HN6GbpZvvMbprD5o7mqeYV5jcsYAsnC77FPou+uZi5LnMFc6vn3rMkWTIscywbLAesVK1CrDZatVq9sTa0TrTead1t/d3G0SbDpsbmka2ybZDtRtt223d25nZsuwq72/Zke3/7dfZt9m8dLBy4Dvsd7jtSHEMdtzh2On5zcnYSOTU6jTgbOic5Vzrfo1Pp4fRt9CsuGBdvl3UuZ1w+uzq5Zrs2u/7pZumW7lbvNjzPZB53Xs28QXd9d5Z7lbvEg+aR5PGTh8RTz5PlWe35zMvAi+NV6/WCYcZIYxxhvPG28RZ5n/Ie93H1WeNzwRflG+Bb4Nvrp+wX41fu99Rf35/n3+A/GuAYsCrgQiAmMDhwZ+A9pjaTzaxjjgY5B60J6gomBUcFlwc/CzEPEYW0h8KhQaG7Qh/PN5ovmN8aBsKYYbvCnoSbhC8L/yUCGxEeURHxPNI2cnVkdxQlaklUfdTHaO/oouhHMaYx4pjOWIXYhbF1seNxvnHFcZJ46/g18dcTNBP4CW2JuMTYxNrEsQV+C3YvGFrouDB/4d1FJotWLLq6WHNxxuKzSxSWsJacSMIkxSXVJ31lhbGqWWPJzOTK5FG2D3sP+xXHi1PCGeG6c4u5L1LcU4pThnnuvF28kVTP1NLU13wffjn/bVpg2oG08fSw9EPpkxlxGU2Z+MykzNMCZUG6oGupztIVS/uEFsJ8oWSZ67Ldy0ZFwaLaLChrUVZbNhUZhnrEpuLN4oEcj5yKnE/LY5efWKG0QrCiZ6X5yq0rX+T65/68Cr2Kvapztd7qDasH1jDWVK2F1iav7VxnsC5v3dD6gPWHNxA3pG/4daPNxuKNHzbFbWrP085bnze4OWBzQ758vij/3ha3LQd+QP/A/6F3q/3WvVu/F3AKrhXaFJYWft3G3nbtR9sfy36c3J6yvbfIqWj/DuwOwY67Oz13Hi5WKs4tHtwVuqulhFZSUPJh95LdV0sdSg/sIe4R75GUhZS17TXcu2Pv1/LU8jsV3hVNlVqVWyvH93H29e/32t94QPtA4YEvP/F/ul8VUNVSbVxdehB7MOfg85rYmu6f6T/X1WrWFtZ+OyQ4JDkcebirzrmurl6rvqgBbhA3jBxZeOTmUd+jbY2WjVVNqk2Fx8Ax8bGXx5OO320Obu48QT/ReNLoZOUpyqmCFqhlZctoa2qrpC2hre900OnOdrf2U79Y/XLojN6ZirMqZ4vOEc/lnZs8n3t+7ILwwusOXsdg55LORxfjL97uiujqvRR86cpl/8sXuxnd56+4Xzlz1fXq6Wv0a63Xna639Dj2nPrV8ddTvU69LTecb7TddLnZ3jev71y/Z3/HLd9bl28zb1+/M/9O392Yu/fvLbwnuc+5P/wg48HbhzkPJx6tf4x5XPBE8UnpU62n1b+Z/dYkcZKcHfAd6HkW9ezRIHvw1e9Zv38dyntOfl76QvdF3bDd8JkR/5GbLxe8HHolfDXxOv8PpT8q35i+Ofmn1589o/GjQ29FbyffbXuv8f7QB4cPnWPhY08/Zn6cGC/4pPHp8Gf65+4vcV9eTCz/ivta9s3sW/v34O+PJzMnJ4UsEWtqFEAhCqekAPDuEADkBAAoN5H5YcH0DD0l0PTcP0XgP/H0nD0lTgA0IkY6CjG8AGi+gIywiJVHNAzRaC8A29vLdGbenZrNpYJFvlIaKYW8+yH93zfHg3/I9Nz+l77/aYE0q3T0/7v9F0jiBfB415r+AAAAimVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAh2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAAAAAEAA5KGAAcAAAASAAAAeKACAAQAAAABAAABlqADAAQAAAABAAAAfgAAAABBU0NJSQAAAFNjcmVlbnNob3QyXLg8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xMjY8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NDA2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CmF5lmAAAAAcaURPVAAAAAIAAAAAAAAAPwAAACgAAAA/AAAAPwAAFCuUliEGAAAT90lEQVR4AexdCZxN1R//YRhmMMxmZyaDwTBGSvlHtoSoJFRkqZStRUgpSYuytln/kiVFJJ+iUskoxUdh7AYz/5lsw2yMZRgG//s9da777rz3Zt7Mve/dN36/z4d37z3nnnvu95w53/NbzrklGse0vU4sjAAjwAgwAoyAQQiUYGIxCEkuhhFgBBgBRkAgwMTCHYERYAQYAUbAUASYWAyFkwtjBBgBRoARYGLhPsAIMAKMACNgKAJMLIbCyYUxAowAI8AIMLFwH2AEGAFGgBEwFAEmFkPh5MIYAUaAEWAEmFi4DzACjAAjwAgYigATi6FwcmGMACPACDACTCzcBxgBRoARYAQMRYCJxVA4uTBGgBFgBBgBJhbuA4wAI8AIMAKGIsDEYiicXBgjwAgwAowAEwv3AUaAEWAEGAFDEWBiMRROLowRYAQYAUaAiYX7ACPACDACjIChCDCxGAonF8YIMAKMACPAxMJ9gBFgBBgBRsBQBJhYDIWTC2MEGAFGgBFgYuE+wAgwAowAI2AoAkwshsLJhTECjAAjwAh4PbH4+pamgIr+VKF8OfL3K0vlyvkSrpUp40M+pUpRyZIluJUZAUaAEfAIAteuXafcq1fp8uVcysm5Qhcv5tCF7Et07vxFyjp7QVzzSMVMfqjXEQuIIjS4EgUHB1Bg5QpU3r+syRBx8YwAI8AImIPA+QuXKPP0OUpPz6LU9DMEIioO4jXEEhpSiapXDaSqVQJttBBfX1+qWbMWVa9WjUJDQikwMJAqBgQohOOvaC6+5OPjUxzaid+BEWAEvBCB3FxoKjl0/sIFOpuVRZmZmZSalkonUlLo2LGjIk2+Fkjl5KlMOnESec7Iy175a2ligXZSp1YVqlUzxEYzCQsLo8gGkRQREUG1a9X2SuC50owAI8AIHDl6hBISEij+YDwlJyergECTOXosjf4+esortRjLEkvd8GoUHlaVypT+R+MIUbSRW5s3p+im0RQUFKQ2AB8wAowAI1AcEMjIyKBdu3fR9h07KE3RaiCXr+RSUvJJSkxK8apXtByx1KgeTPXqVic/xQkPqVs3gv5zZyuKioryKmC5sowAI8AIFBaBvXv30h9bNlNiYoIoIltx+h9OPEHHT6QXtki33mcZYkFEV2SDWlRF8aVAYO5q17YdNYxs6FZA+GGMACPACFgFgQPxByh2Y6xqJjul+F7iDx4VkWVWqaO9eliCWOBDaRxZRzjl/fz8qcu9nally5b26svXGAFGgBG46RDYunUr/fDjOsrOviB8Lvvi/xY+GKsC4XFiiWoURrUVYoE0j2lO3bt1J38loouFEWAEGAFG4AYCF5TIsjVr19COuB3i4hHFub93f/KNDBY68hixYBFjsyZ1KSiwgoCjZ4+erKVYqGNwVRgBRsCaCEB7WbV6lahcRuY52rkn0XILLT1CLFglHxMdIUKIEe3Vp3dvDhu2Zh/mWjECjIAFEUCY8pcrVojoMYQmx+1KEKv5rVJVtxNLxYp+1CKmPpVVNBZEfPV7rC+bvqzSG7gejAAj4DUIwDS29IvPReTYJWW7mG1xh+js2WxL1N+txAJN5bZbGwhSadyoMQ3oP8ASIHAlGAFGgBHwVgQWL1lM+/bvI5DLX9sPWkJzcRuxwKfSskWkMH8xqXhrF+Z6MwKMgBURkOQCs9jWbfEe97m4jVhAKnDUw/z1zOCnrdg2XCdGgBFgBLwWgXnz/yvMYnDog1w8KW4hFhlSDEf9sCFD2afiyRbnZzMCjECxRAA+l9lz5wiHvqdDkU0nFix+bKKsVYGMGD6Co78EEvwfI8AIMALGI4BosZmzZoqC9yhrXLCRpSfEVGLBNi2tW0WJFfW8TsUTzcvPZAQYgZsNAbnOBdvwb9q81yPbv5hKLLfG1BN7f2FF/SN9HrnZ2pfflxFgBBgBjyCw/MvlYoU+9hbbHnfY7XUwjViwS3F0VDhh768xo0azX8XtTcsPZAQYgZsVAfhbpk6fJvYW27U3ye27IptGLG1bNxVb31vBBHYl9SRl791J+L2Sdoqy9+0U/Q3npUOrin+44NcomgLad1bPb9ZOye/NCDAC3o+ANIlhy/2Nm3a79YVMIRZ8pKtBvZpi6/thQ4a59YW0D8vasI6yNv4oSEV7Pb9jv6hmTDL5gcTpjAAjYHkEZs+dLbbcP3j4mFs/FmY4seBzwu3vbia+/Dho4CCPfE8FhJK+YrHQUIra8sG9B7AWU1QQ+X5GgBHwCAL4nsvCRQvFlyg3/LrTbZ85NpxYwutUpYbKB7s8sRAS5q4jr480vAFhLqs2YixBk2FhBBgBRsCbEJALJw8oHwhL+vukW6puOLG0+U8TsW1L/3793fo5YbNIRdsK0F6CHxmovcTHjAAjwAhYGgF85njJ0iWE7V5++2OPW+pqKLGEKp8VbqGEGGOFPSLB3CXpyxcJ05fZz4PmUvvN99m5bzbQXD4jwAgYigAixNLSUpUdkA9TqhKCbLYYSizNmtxC1asFUWfl08Lt27U3u+6ifJi+oK2YLWwOMxthLp8RYATMQmBD7AZap3za+ERKhvJhsP+Z9Ri1XMOIBU77Tu1vFavsx44ZS0FBQepDzDooqqYCskDIcX7CpJIfQpzOCDACVkYgIyODJk+dLJz3P23YbroT3zBiqRpamZo3i3BbiDEIIXHIoy61JXwkIAk44fELUde3KOUhNFlPNEwqLkHMmT2IwK5duwgDCMTf358/9W1yW5w7d47++usv9SmNGzemKlWqqOdWO5Chxzt2JtDJ1NOmVs8wYpE7GLvLDOaKCcwVp3vKx5PFAkq5eNLq0WAYSJKSkujIkSOUmZlJERER1KhRIwoNDXXacf78809aoXzatFq1avTYY4+JX6c3WCgRf9BffPEFwSnZtWtX6tKli4VqV7iqGNEejz/+OG3atElUAO26ZcuWwlXGhbvQ5w4dOiT+lSpVimrXrk01atSgOnXqEM6Ls8TFxVGPHj3UV5wxYwY99NBD6rnVDqQ5zB07HxtGLDIazB07GBfUBAbNBM52VwVaDNbBgJCsGmJ84sQJmjVrFn3++ed2Xw+mSAw0zz33nGKeLGmT5+LFi9SiRQvCtg8Q/HG8/77rONkU6saTuXPn0nvvvac+ccOGDXTLLbeo5952YFR7uJNYfv/9dxozZgylpKTYhTsyMpJeffVVat26td304nDR24hF7nzsjugwQ4gFX4fsoCyK9PX1pbcmvmVqn7l26SSd3/IuZa5NoUtJjreELiypmFp5gwrfvn079ezZs0Cl3XfffTRt2jQqV66cmj89PV0Qi7wQExNDq1evlqeW/33zzTfp008/Vev52WefefUAVpD2WL58OcXGxop3xkTh448/Jh8fHxUDHLiDWHJzcwkz89mzZ9s829HJoEGDaMKECY6Svfq6txELwB4/Ybzydckc+kVZLJmjfMrYLDGEWGSYsTsWReYkLaac5CVUonQIZay+ZpdcijOppKWlUdu2bVVtQ3YMmCCghSBdmkNkGojjq6++sjFNvPHGG7Ro0SIRZIHZ/z333COzW/533759NHToUGH+AxaffPJJnkHW8i+hq2B+7TF+/HgCgUo5fPgwlS5dWp6KX3cQy/Tp0wWpaR8Mf86dd94pJpY7duzIo8VAG9aajLT3evOxNxKLXCxpdtixIcQi9wZrfVdr6t6tu6l95fyWvgStRUrO8SjK+Np2g7W6c5epznmZr7j8zp8/n9555x31dWBqwDmIRUpiYiJhpgi/i5R58+bRvffeK0/FL0xh0DL1M1+bTBY9uX79OsHXUrFiRYvW0PVqOWsPKxDLqVOn8gQEvPzyy/TMM89QiRIlxAtDowEBTpw40QYA+GHKlCljc83bT7yRWNasXUObft9EZu8dZgixNG0cTjVrBJPZOxn/Ywbrm6c/Xr3QlLJijwvtxRVHfZ6CvODCwIEDaePGjWpNf/nlF2X7nLrquTyA1oIZrBQ46CdNmiRPhWZz7do1cY4ZZ/ny5dU07QEG8KNHj9KBAwfEIA7beeXKlenKlSsiWEDm1UbDYHCR0UlIh78H5HXp0iU6ePAgHTt2jKpXry7qXRhigE/i7Nmz8tEiUEEObLgIrU2+W4UKFZRPN/jR1atXRZADBrhKlSqJZ2vrrBbm5ABElp2dLXLAMR0cHGyTG1ilpqaKa9AmAgMDbdJRB5i9pKAeIHaIts7a9kB5KBdt980338hbhVaKgVqb157GgnuBd3x8vBjY4YuqWbOmSgRqgQU4eO2112jp0qVqzpdeeomGDbO/yey4ceNEgIXMjGCLVq1aydM8vwgCwIQI5BUSEiKCUFxZsgBsocXB93j58mXhcwsPD8+j1eV58L8XCtPPXSUWvGNCQoLoIwiuQKBNQECAoyqZcl3ueHzseDrt3pdkyjNQqCHE0rJFJAUFVqDBTw6mevXqmVZZaQaz94ASpesqprEzVGPsR8VWW8F7P/XUU7R+/XoVgs2bN4tBWr3w7wFmv23atFEvw2QEM4aUsLAweUh9+vShyZMnq+fyAOT0wgsv2JAE0mA2u//+++nZZ5+VWQmhrvKPRO8DWrlyJX3//fe0cOFCNb88gAmof//+eQIMZLq9X73zHvWsVauWyApC0TryMRhiAB89Ou9OEI8++qhwMDsiVf2z4StYvHixellvjtq9e7fABRkw4AMTrTaoxwXv0blzZ1GevfYAiSHCz5ngHd59912RRU8sc+bMESZDvYMdWi7aG+ReUNHjivu0ba4vRz/ownQ5duxYfTahVU+dOpXWrFmTJw1aOOoJM5sjASEsW7aMgKVWQ5f5gQm0KrSHIylsP9e/o6OosNOnTwurAszReomOjqYPP/xQLNPQp5lxjj47f8F8ysg8R1u3xZvxCFGmIcQiI8JGvTiaquQT5lqUN3FGLCjXp1I0+cXMKPAjNu7OKXDe/DK2bfrPzDO/fEVNx+CsNTN069ZNRHTp7e35PUc7kPXu3ZumTJlicwtmmJh1FlS0g8y2bdvo4YcfLuitov6u2OD1xPLbb7+ppkB7A6CzijgiVXv3/PDDD2KglmnQIDAwSMEAoY2uQzj37bffLpNJb8YE0chZub32KAqxqA91cIAJ4Lp162z8bg6yist6MxjCajGQOhJoEJidS4H2Bk1EKxiY+/Xrl8dfqM2DY0ekBM0YWtPXX3+tv8XmHNrBkiVL7E56i9LPC0Is0K5BbvibcCaYsNx9993OshiSdkrRgKfPmGb6vmGGEEvHdjFim/wJ4yc4nRkUFZnsuBcp98wuh8X4hvUn3/ABDtP1Cb0mZeovFeo8JKAkzR5eqVD3unoTTDmdOnWyuQ0zO4QVw4cC009BxN5AJu/TDyK4jhlf8+bNaf/+/Xk0GKQXhFjwB46BFOtPtILr0Ly05ixtuv64MMSC+jds2NDuH/ivv/4q1l3on6M/x8wTgRBSXn/9dXriiSfkqdA+YHKSoh8QBw8eTD///LNIjoqKorVr18qsNjNWSfQwN2K2jVk51qRoNY8HHnhAkALMS5LEtRqLWrByAHJDwIMML5dpM2fOJExMCiJ6bWvkyJH0/PPPF+RWu3mysrKoffv2Nn0JfQN1hTkL/UkrCNDo2LGj9pII2nj77bdtriGABaZa9Cft+2ICsGrVKhsNsqj9PD9iAbmOGDGCMCGRgr9V9MPjx4/b/B3gbwD90Gw/FDCZ+NZEsY3++tg4WS3Dfw0hls4dW4itXCa9Pcmm4YyurVWJBe+5cpytPd3od9eWh5kwZmr2BAMFBh2YO8qWLWsvi7jmjFj04bwwfX300UdqyPK3334riExbeH7Eop2RwWfz4IMP2gwqWMGsn9Fqy9ceu0osGARhtkOYLgY0mMXkAI9yYTIq6CJLYCsHPRA5giIgGPT1JhsMItCmINCkmjRpog52qM+oUaNEGv5z1h5Id9V5j3swEIM80A8wu8eaJ23o75NPPinKRd78RN/mMF/16tUrv9scpkND1oYso98iLF72WWhTQ4YMUe8H6QBLadI6c+YMNWt24zMWuL5gwQK64447xD3wwQ0fPtwmQhKa/oABNyaeRe3n+RGL3roALQ+mPWldQN+RZkxUGvWBWdhMQT8Y99o4saXLuvXOtaii1MMQYuna6TZRhynv2ZpTilIxe/eeje1g77J6DWYwmMMKKkZpLHgeNBZoLu4S/R+6/rn4Q8MAClOD7MjaPM4GMmxNoZ3tQcPQ+yGw+E27ONMZscCk9vTTT2sfLwY4rb8C62i02oBNZt2JK8SCWbF2zQuKgr9H63SGVqAdxHSPszn94IMPCP8gwHjPnj2CsGDnf+WVV2zy4kQu3oRjukOHG/0X61LkIIh8ztoD6a4SC+oG84t2/ZLeTGgPGzzLnqCttKSk1yAw0CN83ZHUr19f7JKAdMzkoZnIAA/UFTsP4FcrCINHW0tB4MBdd90lTuG3wwJNKfDfQEPUSn7rg4raz/MjFvjPtBqs1mSLegIHkD92zoC40h7ihkL+99LL/0xKv//pxnY0hSzK4W1eRSz6UGP9W91MxIJ3hyoPuz0GNS0RaHFBx8UKfRl9JNMcDWSY6TVt2lRmo759+9qEN8sEzLww05fijFgwEEND0cp3330nZpTymiuLHF0hFq1zWz5LbwLRaw8yn71faFbamTo0H/grYBIDiUAwu5aDpjSXwXGrDSBAdJy2TRy1h6yDq8QC04q9LV3atWunDmSuLIzVE4tey9MTp6y3/IVGAu0JkpycTAgmkeJIc9Ln05IHtD2YtqRg/Yw+Cg9pwFzrNIffBwEVRvRzZ8SCCDCYjqXAFAeNSi8IXpEmUUSxyUWw+nxGnruDWP4PAAD//6k6zWkAABSGSURBVO1dCVhVxR7/qyghKj02lycmggkiKahh+vC5lVZamZmWllq5pLZpPr80U7Msc2kzs6xM01JLrZd9ark98WkWAooELojbE1ldQQXUd35jczz3cO/lBufcy/Kf74NZzyy/M3d+85/5z5xqYRFdrlMZTa8e7ah69Wo0842Z5ObmVsbcbD9+cdcgunb5tM0EHqH/opoNetqM10f0n5mrDyq1/9tJ3qV+tqwPFhQUUExMDK1bt47Wrl1bLLsuXbrQp59+SrVq1VLjmjZtqrofffRReuedd4Q/JSWFevXqpca99tpr9NRTT6l+6Zg1axZ9/PHH0kt79+4lLy8v4Y+NjaVHHnlEjXvvvffooYceUv1w/PzzzzRixAg17KuvvqLo6GjVb8+xcOFCevvtt9Uk27dvpyZNmgj/tWvXqFmzZmrcY489Rm+99ZbqhyM3N5ciIyPVsOeee47Gjx+v+u05CgsLqXnz5moS4Hb//fdTWFiYGvbZZ5/RM888I/wdOnSgFStW0CuvvELffPONCOvWrRt98cUXano4bL0PmWjKlCkEjKQ5dOgQ1axZU3qF/cQTT4h+AE/Dhg1p165dFvHw3H333YRnYSIiIqz2FxGp+7d69WoLjKZNm0ZDhw5VU6WmplL37t1Vv97Ru3dvmj9/vgj+/fffqX///mqSN954gwYPHqz6paOoqIiCg4Oll7R5PP7447Rz504R5+npSUlJSWo6rQN9FH1Vmo0bN1KLFi3IiH4eHx9Pffv2lVnTvHnz6OGHHxZ+ff5qohIcwLFGjRolpCp9NDCd9OokunbtOm3YFFv6jEp4spoRxNKjawTVqulGU6dMJbxks0x+/DgqOrvXZvY1G/Ykj5B/2YzXR1QWYtG26+LFi7R48WKaO3euNlgMStqB29ZApv+xzJ4922IQkJlWVWJB+4cPH06//PKLgAIEeu+999LTTz8t/CCZd999VwzaeXl5IgyYPvjgg3T8+HHhnz59Og0ZMkS45T9b70PGu5pYduzYYTH4A4PJkyfL6hHaun79etWPfgjykUZLClu2bLGYrAAv7QAtn4ENwpY4YoL05Zdfimjkt3//fuG2RaKI/Prrr2nSpEkiHf59//331KZNGzKin+vz0BLL7t27acCAAWq5jjrQpjp16jia/C+nA5bTZ0yngsIi2rQ1/i8/7+gDhhBL507hVMfzFho/7mWq7+/vaNl/Od2llHeoMH2jzefcbm1NtSPm2YzXRxhFLH5e1WnBmFv12Rvuz8zMFJKBzDg0NJQaN24svRb2d999Ry+//LIa9vzzz9O4ceNUv62B7OjRo4QfsDTWBkHEVWViWb58uTqoYlCDBIIwGCmdAes1a9aIMJDCjBkzhBv/IK3dfvvtqh8OW+9DJnI1sej7RUnSzrlz56h169ay+hbShn42P3PmTIIEojeQxLU4QRrA4A0zZswY+umnn4TbnsTy/vvvC6IXCZV/IDVItPr2lKaf2yOWAwcOUM+ePWWxQqK+8847Vb81R/Xq1QnSm3ZlwVq6soRlKGPI3Hlz6GLeZdr+38SyZGX3WUOIJapdCPl416XhTw+3WCawW3IpIgtPb6RLyTeWbPSPp9ZqSUuyq9PkHlPIz9NXH23Vn3XumtVwfWDSsUL6aN2N2ac+Dv6w29xo2qB61qIMDdPP9F588UXCnzWj/2F37NhRzN5kWlsD2eXLlykkJEQmo0GDBtGbb76p+qWjKhPLkSNHBJlILLR2XFwceXt7i9n7s88+q40Sbh8fH8JSYbVq1SzibL0PmcjVxIJ6dO3aldLS0mSV6Ntvv6X27durfq1D3/+0Ekt+fj61bNlSTT5s2DCaOnWq6pcOPQEBz4kTJ4poSOQffvihTCow9fUt/rvXEhASS4nAiH5uj1iuXLkiltxkBbWkKMNcYWMZdNHniygn9wLtjk0xrQqGEMsdYYHU+O++1K9vP4qKijKtslgGw3KY3qynCPp3eoYIfji8L/ULv7HOqU9XWv+05ecp6ViRzce73OFOY3qbtwQoC9YPaNhXwPKDteXHxMRE6tOnj3xUSCFyGQGB9gaytm3bUk5Ojvqsdv9EBr7wwgv0ww8/SG+V2WORDb7rrrsoPT1deoUt91PguXDhAoWHh1vEw4PlEe2av0xg730gjZ5YkpOTycPDQz4ubDP3WFDAggUL1L04+CG1LFmyhOrVKz6pskcseFaP3759+4rlA7JB/tJo9+GwpKWdVEFChFSuNXg/KEcaSFDaPlvWfm6PWFCmnoi3bdtm8buT9dq0aZMI1+4nyTijbSzRrV67mk7+L5v2Jd2cJBhdjiHEEhTYkFo0b0zR/4imPr1vDmZGVxb56TfwPyjoQMk5N9auZXnvPfiuw1KLfMaWDWll2vILtqJF+LRBdRWpxXIj1e4DZYgcOHAg/frrr2oOkEQw6GBZTBqQCn5k2tkl0sh9AKSzN5DpNzwhwmPDHDNxzPQWLVpUbA9HSz6VefNeYvzqq6/SsmXLpFfYGAgx+5YGSg+QMrUGG9iYveuNvfeBtFASwMAuDSYJ2iVLhJtNLCDLe+65x4JQAwMDac6cOYJEsYRz9epVoRwAKRcKJdJoJRaEQZEBCg3SYP8P2EgFkJUrV6rSCdJA0sOgKJWD0A8xcGvJHfjcd999Isvs7GzR39EvpYESB5Q5pClrPy+JWNA/0E+kgdIHpCy5IgDJDb8l7DFhcojla+3vWD5npP3juh8pZkcMHTh0klLTLCdGRpZjCLH4+91K7SKaU1BQMI0cflPTx8iKyryupC2hK0eX0hm3BvRVftNipIJ0fnX8aHL3SYaQS0nSCspzpkYYlgf69eunbmiifBh0zICAAMrKyrKQNmQcfuQgBmnsDWTYeIXkKTdN5TMYRLRkJcNhVzVigXbRyJEjtRCQfkaqHxyRGKRrbcnG3vvAc/qBGGHY3wG5SK03s4kFZULTTDs4I0waDP5aSVeGw8Z+39ixY9UgaCeBbNCftQZSxcmTJy3yQd+GVpockGX6DRs20KhRo6RX2MAE9ZAb+zISkiI0CbVLkGXt5yURC0gWyh1IpzUgGHd392J1dMZy2SeLPqXU1MMUG3+IMrPOaqtlqNsQYnF3r0nd/9lGgDVj+s1NSkNrqsksIXYqzT54RBNS3NmyfiiN6DCiTOSCfZVt+64Uz1wT4qxlME2RlJCQQFhv1s7WtPFaN36Uq1atslCHRXxJAxkGSa06qTZPa+6qRixnz54V2kUSC5Du1q1bpVfYGRkZFkvDGBgxGFozJb0PvYq0zAPqw5j1wjiDWFDOb7/9JiQz/cQDcdaMtWUqpMPS7ujRo4uRiz4P9F9bG9/65Tn9s/D36NFDSNxS2tGmKUs/L4lYUA40AaHOrpWctOVLN5QXXn/9dVUik+FG21OmTiHs/2z+T4JiFxqdvZqfIcSC3KRm2NgxY6lJQBO1ADMcqxPX0JrEtSVmXRZycYRUUAFnLoNpG3zp0iWxeYof+Z49e4qRDGZtmM2hw4Jc9EY7kCENNHP05uDBg0JVE7NsrQGpYQ0dqpzSaIlF/4OD+K/d78Ezmzdvtliag1ZVp06dZHZ2bQykWoUCnGdo1KiReOb69euEQV4aa8oHelKwpwQh87FmQ0VWzkb1WncyvTYNNpInTJggoyxsR94HpE7UVSsVaIkFEwEMlDDYf8P5Hr3BGSUpJbRr104sv+jTOOJHHSCRff755xb1wbPoe1ATxh/6FiRpWwaDHDTpsGeinyh17txZSDm2SEXmib6H/oDfgtag30MtGpKlfj9Km660/RzlQo1cmg8++IAeeOAB6VVtSGdYuly6dKmqci4j0Ua8E+Bktjl+4jjN/2i+6RphaIdhxNKqZVNq0tiPevXsRd26djMbI3rx3+Mo62KWQ+WMVCSXUEWCcURbLDkjmVYmrKU616Nod1yE3fxdIa3YqhBmtFhCgA48lgPs/ZBs5WErHCQG9UzkiUECB7i0s2P8gLGvA3VJNuYigEEK7/n8+fNiSa1+/fqmHqgrqTUg8jNnzhCkMxxOhfq73Ccp6Vl9PCYraBv6FyYK1pQC9M9o/cAGEgIkKSz7AhtrUor2Ga3bGf0c+yqoI+qFCZCZhyG1bYN7y9YttGHjBjp+Mov2/3FUH22o3zBiaeD/N4psE0yYeY0eNdrQSlrLLCsvm97cPNNhcsG+S3TgP6ilfyj5Km4YEA3yAZnAxKTF0B9/uuEP8epDiUmRdL3o5t4EwqVxlbQiyzfTxkYp1qQhbejPyug1zqydJDezbpw3I2AUAlWpny9YuEBMEOMSDtPpzDNGQWg1H8OIBVe63NOtrbjaZeKEiUIctlqigYGOLomVpcjmPqF0+shAyjljeQCyf7QHPar8VUaDJQmsS2PmB2kEm65QLa1du7ZYdoMWkHZ9XXviuDLiwW2qnAhUpX6OpctZs2eJq1x+3rJH2Ga+VcOIBZVsE96MGjX0cdpyGMr85NdFtP1I8bVkxBllfGr7UUH6WJVcnHUg0qj6/9V8sFaN+8McMdo1fkfScxpGoLwgUJX6uVwGO5WeQwmJ9hWfjHg/hhKLVDv28/OnCeNvXidiREXt5eEMyQXlR3gPpYs57Z1yyt5ee50Rhz0VSCp6tU1t2TgX89JLL5l6t5G2PHYzAkYjUFX6+ey5c5SjCJmmqxnL92MosSBTqR325OAnqVWrVrIc022QS0zaDof3XEpTIWiZ4XxMVTHQ2IHWE7RfoOKMMzLYQwsKChJXmuCWWDaMQEVHoLL3c0wOly5b6hRtMNkXDCeWwNsaUGiLAKcclpSNkDY24T/ZvcgUcjHjqhhZb7YZAUaAETALAXkoMvnACUo7dtqsYizyNZxYsInfTTksiWv0hw0dRqEhN68asSjZRM/2IzG0Zv9aQwimc7PO1FnRJoO6MhtGgBFgBCoSAskpybT4y8XimvwtyqFIfIfFGcZwYkGl5d1hzlI9tgVUWSQYJhRbqHI4I8AIVBQEpIqx2XeD6fEwhVhQSJfoO6i2h7vpNx7rG2TNL8+p/JGZTCmZN+4mwvkVHLDE+RacZ/H19FP+fMQ5F5ZOrKHIYYwAI1CREJA3GedfukLbYvY5teqmEcvfG/lS61aBytkHT6EhZu1aEae2lAtjBBgBRqCKIIBzZtAEy8/Po7370+h/p7Kd2nLTiAWtaKvceFxfufk4MiKSBg4Y6NSGcWGMACPACFRVBFasXEFx8XGUodxgvEe5ydjZxlRi8ax9C0V3bCVO45v9ETBnA8flMQKMACNQHhGQS2DYqI/ZuZ/y8i87vZqmEgtaE6BcTBmuXFAJ44ybj0VB/I8RYAQYgSqIgLzBGE1PVC6aPKFcOOkKYzqxoFHy5mOcyB896lmr17i7ovFcJiPACDAClQUB7KssWPixOGHvjBuM7eHmFGJBBaLahZCPd12XHJy0BwDHMQKMACNQGRCQByFzci/Q7tgb2q+uapfTiAVfmQS51PG8hcJahtGQJ4e4qs1cLiPACDAClQqBJUuXUNIfSeLaFpCKmV+HdAQ4pxELKlO3jge1b9uCblFIhsnFkdfDaRgBRoARsI+AJJXLyqeGf99zgC5cvGT/ASfEOpVY0J569WpTu4jbBbkEBQXT4McH8Z6LE140F8EIMAKVCwHsqSz7ejmlph4mkEps/EHly6L55aKRTicWtBqSS0TrYLEshg39Acq3P5oENCkXgHAlGAFGgBEo7whA+2vlqlVio/5i3mWK33u4XEgqEjeXEAsKx55Lm/AgsaEPP59zAQpsGAFGgBGwj4A8p4JU2KhPSEx1+Z6KvsYuIxZZEamKDD9O6Pfp3YeXxiQ4bDMCjAAj8CcCWPr6cd2P4kQ9glytUmzvxbicWFA5HKIMC7lNnNDH3WL39uxFUVFR9urNcYwAI8AIVBkEIKWs37hB3P2FE/VJKcdcdvjREdDLBbGgorj+JUT5QBjuFoPBlftdu3R1yfdcRAX4HyPACDACLkYA31PZum0r4RPKMLj7K0X5YJcrrmkRFXDwX7khFllf3IrcPKiRuHIfYdAc63RXR6d+5ljWhW1GgBFgBFyBAD4n/N9dO4XGF8rH1feHUk85/Zbi0ra93BGLbAg+FhbYtIH4EiXCoD3WNjKSWt/Rmnx8fGQythkBRoARqBQI5OTk0N59e2lPXJzQ9kKjCgqLKO3oaUpNS69QbSy3xAIU8Znj2wLqiz0YnNiXBstkIS1CKDg4mNWUJShsMwKMQIVDAGrDhw8fVpa3UtTlLjQCKsS4QPLYiQynfU7YSPDKNbFoG+qv7L00auBNDep7C8KRce7u7tS4cQA1atiQ/BWpxtvbm+p5eSlnZDwVlWZ3cnNzk0nZZgQYAUbAqQgUFRUpqsBXFKLIo/PnzlFubi5lZmXSqfR0OnnyhIiTFcKm/OmMXDp1GmnOyuAKaVcYYpHoQorx972VfH29yPtvdcUhSxnHNiPACDACFQkBSCa5Zy5QdvY5ysw+WyGlE2t4Vzhi0TcCBy296nmK0/zQLPPwcBeHL2vVciO3GjUspBv9s+xnBBgBRsBMBCCFFF29SgUFkFwK6ZKyCQ+NLtznde58Xrk72GgUFhWeWIwCgvNhBBgBRoARMAYBJhZjcORcGAFGgBFgBP5EgImFuwIjwAgwAoyAoQgwsRgKJ2fGCDACjAAjwMTCfYARYAQYAUbAUASYWAyFkzNjBBgBRoARYGLhPsAIMAKMACNgKAJMLIbCyZkxAowAI8AIMLFwH2AEGAFGgBEwFAEmFkPh5MwYAUaAEWAEmFi4DzACjAAjwAgYigATi6FwcmaMACPACDACTCzcBxgBRoARYAQMRYCJxVA4OTNGgBFgBBgBJhbuA4wAI8AIMAKGIsDEYiicnBkjwAgwAowAEwv3AUaAEWAEGAFDEWBiMRROzowRYAQYAUaAiYX7ACPACDACjIChCDCxGAonZ8YIMAKMACPAxMJ9gBFgBBgBRsBQBJhYDIWTM2MEGAFGgBFgYuE+wAgwAowAI2AoAkwshsLJmTECjAAjwAj8H8yd9deKaZbhAAAAAElFTkSuQmCC"}));var a=function SvgIcon(e){return o.createElement("svg",i({viewBox:"0 0 180 41",fill:"none"},e),u,c,l)};var f=r(37);Object(n.registerBlockType)(f.name,{edit:function Edit(){var e=Object(A.useBlockProps)();return React.createElement("div",e,React.createElement("div",{className:"googlesitekit-blocks-sign-in-with-google",style:{maxWidth:"180px",minWidth:"120px"}},React.createElement(a,null)))}})}});
  • google-site-kit/tags/1.148.0/dist/config.php

    r3221899 r3253534  
    88
    99return array(
    10     'features' => array( 'adsPax','audienceSegmentation','conversionReporting','firstPartyMode','gm3Components','privacySandboxModule','rrmModule','rrmModuleV2','signInWithGoogleModule' ),
     10    'features' => array( 'adsPax','audienceSegmentation','conversionReporting','firstPartyMode','gm3Components','privacySandboxModule','rrmModule','rrmModuleV2' ),
    1111);
  • google-site-kit/tags/1.148.0/dist/manifest.php

    r3246532 r3253534  
    88
    99return array(
    10     'googlesitekit-consent-mode'                           => array( "googlesitekit-consent-mode-3d6495dceaebc28bcca3.js", null ),
    11     'googlesitekit-events-provider-contact-form-7'         => array( "googlesitekit-events-provider-contact-form-7-21cf1c445673c649970d.js", null ),
    12     'googlesitekit-events-provider-easy-digital-downloads' => array( "googlesitekit-events-provider-easy-digital-downloads-a3b438fc133106da6a33.js", null ),
    13     'googlesitekit-events-provider-mailchimp'              => array( "googlesitekit-events-provider-mailchimp-7920d200a07d3bcd60bb.js", null ),
    14     'googlesitekit-events-provider-ninja-forms'            => array( "googlesitekit-events-provider-ninja-forms-ddd9645222a85c7954f3.js", null ),
    15     'googlesitekit-events-provider-optin-monster'          => array( "googlesitekit-events-provider-optin-monster-2bb9e40daaa87763f38e.js", null ),
    16     'googlesitekit-events-provider-popup-maker'            => array( "googlesitekit-events-provider-popup-maker-e1863af0c352a2ce8748.js", null ),
    17     'googlesitekit-events-provider-woocommerce'            => array( "googlesitekit-events-provider-woocommerce-9043ca3351c215979b62.js", null ),
    18     'googlesitekit-events-provider-wpforms'                => array( "googlesitekit-events-provider-wpforms-b35450445f9cb0eeb855.js", null ),
    19     'analytics-advanced-tracking'                          => array( "analytics-advanced-tracking-ea84b2c367b69f5c094b.js", null ),
    20     'googlesitekit-i18n'                                   => array( "googlesitekit-i18n-33cdd2dee5d1d1f4fb34.js", null ),
    21     'googlesitekit-reader-revenue-manager-block-editor'    => array( "googlesitekit-reader-revenue-manager-block-editor.js", null ),
    22     'sign-in-with-google/editor-styles'                    => array( "sign-in-with-google/editor-styles.js", null ),
    23     'sign-in-with-google/index'                            => array( "sign-in-with-google/index.js", null ),
    24     'googlesitekit-admin-css'                              => array( "googlesitekit-admin-css-0ed888e9f46eb775c4a9.min.css", null ),
    25     'googlesitekit-adminbar-css'                           => array( "googlesitekit-adminbar-css-281d66e21d2b87430998.min.css", null ),
    26     'googlesitekit-authorize-application-css'              => array( "googlesitekit-authorize-application-css-ce25e97404abc5a02921.min.css", null ),
    27     'googlesitekit-wp-dashboard-css'                       => array( "googlesitekit-wp-dashboard-css-55d9d8bb13cf249a2389.min.css", null ),
    28     'googlesitekit-vendor'                                 => array( "googlesitekit-vendor-68e1c45ab88797e2725b.js", null ),
    29     'googlesitekit-runtime'                                => array( "runtime-89f677636011f47c68b1.js", null ),
    30     'googlesitekit-activation'                             => array( "googlesitekit-activation-08970804363d3f89f12e.js", null ),
    31     'googlesitekit-ad-blocking-recovery'                   => array( "googlesitekit-ad-blocking-recovery-7c1bee68a11e1537fba9.js", null ),
    32     'googlesitekit-adminbar'                               => array( "googlesitekit-adminbar-494060be019092a480bf.js", null ),
    33     'googlesitekit-api'                                    => array( "googlesitekit-api-2766e9472b9ab9216ca1.js", null ),
    34     'googlesitekit-components'                             => array( array( "googlesitekit-components-gm2-8ef0fd892597f5776726.js", null ), array( "googlesitekit-components-gm3-96f619a4dfa6a62e80b0.js", null ) ),
    35     'googlesitekit-data'                                   => array( "googlesitekit-data-b9cd43cf5269111852ae.js", null ),
    36     'googlesitekit-datastore-forms'                        => array( "googlesitekit-datastore-forms-fda104b042221bd85889.js", null ),
    37     'googlesitekit-datastore-location'                     => array( "googlesitekit-datastore-location-f342a662bcd23bad5197.js", null ),
    38     'googlesitekit-datastore-site'                         => array( "googlesitekit-datastore-site-6a6c78749feb8856beac.js", null ),
    39     'googlesitekit-datastore-ui'                           => array( "googlesitekit-datastore-ui-abfcc74f97bbff8b2eac.js", null ),
    40     'googlesitekit-datastore-user'                         => array( "googlesitekit-datastore-user-3378174b7e259484c79a.js", null ),
    41     'googlesitekit-entity-dashboard'                       => array( "googlesitekit-entity-dashboard-12ac51781ea2a575d5d6.js", null ),
    42     'googlesitekit-main-dashboard'                         => array( "googlesitekit-main-dashboard-d2235f7e737fa3cc6542.js", null ),
    43     'googlesitekit-metric-selection'                       => array( "googlesitekit-metric-selection-4e96dd3bd15106d6f9b1.js", null ),
    44     'googlesitekit-modules'                                => array( "googlesitekit-modules-271a2bc6321bc5512177.js", null ),
    45     'googlesitekit-modules-ads'                            => array( "googlesitekit-modules-ads-5c3840d282a55fec7b91.js", null ),
    46     'googlesitekit-modules-adsense'                        => array( "googlesitekit-modules-adsense-8dae88c7b504d6eeffbd.js", null ),
    47     'googlesitekit-modules-analytics-4'                    => array( "googlesitekit-modules-analytics-4-03ff53d67f0730fef532.js", null ),
    48     'googlesitekit-modules-pagespeed-insights'             => array( "googlesitekit-modules-pagespeed-insights-c03a4bc015c93be68ba2.js", null ),
    49     'googlesitekit-modules-reader-revenue-manager'         => array( "googlesitekit-modules-reader-revenue-manager-f64ae5a06452a7c70545.js", null ),
    50     'googlesitekit-modules-search-console'                 => array( "googlesitekit-modules-search-console-76205470debaed0c391f.js", null ),
    51     'googlesitekit-modules-sign-in-with-google'            => array( "googlesitekit-modules-sign-in-with-google-72ac70043d96dfcec075.js", null ),
    52     'googlesitekit-modules-tagmanager'                     => array( "googlesitekit-modules-tagmanager-3dd7cdfe4eab5a246d90.js", null ),
    53     'googlesitekit-notifications'                          => array( "googlesitekit-notifications-05633f57dd25402f9646.js", null ),
    54     'googlesitekit-polyfills'                              => array( "googlesitekit-polyfills-b90168a70cb376a88ee6.js", null ),
    55     'googlesitekit-settings'                               => array( "googlesitekit-settings-1e24b6995d523f1fa3d1.js", null ),
    56     'googlesitekit-splash'                                 => array( "googlesitekit-splash-b273b7be927790dc2c4e.js", null ),
    57     'googlesitekit-user-input'                             => array( "googlesitekit-user-input-818d71397d6d1f15d951.js", null ),
    58     'googlesitekit-widgets'                                => array( "googlesitekit-widgets-79a0290d39373d503c60.js", null ),
    59     'googlesitekit-wp-dashboard'                           => array( "googlesitekit-wp-dashboard-4e8db01e6c2bad945b9c.js", null ),
     10    'googlesitekit-consent-mode'                               => array( "googlesitekit-consent-mode-3d6495dceaebc28bcca3.js", null ),
     11    'googlesitekit-events-provider-contact-form-7'             => array( "googlesitekit-events-provider-contact-form-7-21cf1c445673c649970d.js", null ),
     12    'googlesitekit-events-provider-easy-digital-downloads'     => array( "googlesitekit-events-provider-easy-digital-downloads-a3b438fc133106da6a33.js", null ),
     13    'googlesitekit-events-provider-mailchimp'                  => array( "googlesitekit-events-provider-mailchimp-7920d200a07d3bcd60bb.js", null ),
     14    'googlesitekit-events-provider-ninja-forms'                => array( "googlesitekit-events-provider-ninja-forms-ddd9645222a85c7954f3.js", null ),
     15    'googlesitekit-events-provider-optin-monster'              => array( "googlesitekit-events-provider-optin-monster-2bb9e40daaa87763f38e.js", null ),
     16    'googlesitekit-events-provider-popup-maker'                => array( "googlesitekit-events-provider-popup-maker-e1863af0c352a2ce8748.js", null ),
     17    'googlesitekit-events-provider-woocommerce'                => array( "googlesitekit-events-provider-woocommerce-9043ca3351c215979b62.js", null ),
     18    'googlesitekit-events-provider-wpforms'                    => array( "googlesitekit-events-provider-wpforms-b35450445f9cb0eeb855.js", null ),
     19    'analytics-advanced-tracking'                              => array( "analytics-advanced-tracking-ea84b2c367b69f5c094b.js", null ),
     20    'googlesitekit-i18n'                                       => array( "googlesitekit-i18n-33cdd2dee5d1d1f4fb34.js", null ),
     21    'reader-revenue-manager/block-editor-plugin/editor-styles' => array( "reader-revenue-manager/block-editor-plugin/editor-styles.js", null ),
     22    'reader-revenue-manager/block-editor-plugin/index'         => array( "reader-revenue-manager/block-editor-plugin/index.js", null ),
     23    'reader-revenue-manager/common/editor-styles'              => array( "reader-revenue-manager/common/editor-styles.js", null ),
     24    'reader-revenue-manager/contribute-with-google/index'      => array( "reader-revenue-manager/contribute-with-google/index.js", null ),
     25    'reader-revenue-manager/subscribe-with-google/index'       => array( "reader-revenue-manager/subscribe-with-google/index.js", null ),
     26    'sign-in-with-google/editor-styles'                        => array( "sign-in-with-google/editor-styles.js", null ),
     27    'sign-in-with-google/index'                                => array( "sign-in-with-google/index.js", null ),
     28    'googlesitekit-admin-css'                                  => array( "googlesitekit-admin-css-e86016510d7baa4a7353.min.css", null ),
     29    'googlesitekit-adminbar-css'                               => array( "googlesitekit-adminbar-css-281d66e21d2b87430998.min.css", null ),
     30    'googlesitekit-authorize-application-css'                  => array( "googlesitekit-authorize-application-css-ce25e97404abc5a02921.min.css", null ),
     31    'googlesitekit-wp-dashboard-css'                           => array( "googlesitekit-wp-dashboard-css-55d9d8bb13cf249a2389.min.css", null ),
     32    'googlesitekit-vendor'                                     => array( "googlesitekit-vendor-5aa94214da516df44edd.js", null ),
     33    'googlesitekit-runtime'                                    => array( "runtime-fb338303cadc59781996.js", null ),
     34    'googlesitekit-activation'                                 => array( "googlesitekit-activation-ef136fa2d705890f91b3.js", null ),
     35    'googlesitekit-ad-blocking-recovery'                       => array( "googlesitekit-ad-blocking-recovery-ea1f8cdd3eebac89f55c.js", null ),
     36    'googlesitekit-adminbar'                                   => array( "googlesitekit-adminbar-8186a58dffbe9861983a.js", null ),
     37    'googlesitekit-api'                                        => array( "googlesitekit-api-bcc1c62e15d079907a56.js", null ),
     38    'googlesitekit-components'                                 => array( array( "googlesitekit-components-gm2-8bf8544d07a6da530f8f.js", null ), array( "googlesitekit-components-gm3-3d043a9ad4684e207690.js", null ) ),
     39    'googlesitekit-data'                                       => array( "googlesitekit-data-10660ec4fa4de9e5a0ad.js", null ),
     40    'googlesitekit-datastore-forms'                            => array( "googlesitekit-datastore-forms-58356fd14af30247220b.js", null ),
     41    'googlesitekit-datastore-location'                         => array( "googlesitekit-datastore-location-d6cc723fb9213326c8df.js", null ),
     42    'googlesitekit-datastore-site'                             => array( "googlesitekit-datastore-site-32262604b05a3f29ffbd.js", null ),
     43    'googlesitekit-datastore-ui'                               => array( "googlesitekit-datastore-ui-2a4a47d4c0cd789f71e9.js", null ),
     44    'googlesitekit-datastore-user'                             => array( "googlesitekit-datastore-user-3cd7c04a250e40fbee46.js", null ),
     45    'googlesitekit-entity-dashboard'                           => array( "googlesitekit-entity-dashboard-594bf471eb193b4f1a94.js", null ),
     46    'googlesitekit-main-dashboard'                             => array( "googlesitekit-main-dashboard-be615811bedf8348b6b3.js", null ),
     47    'googlesitekit-metric-selection'                           => array( "googlesitekit-metric-selection-8a40812867bda4ccc557.js", null ),
     48    'googlesitekit-modules'                                    => array( "googlesitekit-modules-f29528994921322c9c2d.js", null ),
     49    'googlesitekit-modules-ads'                                => array( "googlesitekit-modules-ads-dbd862ea5480cfe6c092.js", null ),
     50    'googlesitekit-modules-adsense'                            => array( "googlesitekit-modules-adsense-aac303a1bfa905c4953e.js", null ),
     51    'googlesitekit-modules-analytics-4'                        => array( "googlesitekit-modules-analytics-4-4107886672cca10485da.js", null ),
     52    'googlesitekit-modules-pagespeed-insights'                 => array( "googlesitekit-modules-pagespeed-insights-fa61f9f00c3cb3a11b48.js", null ),
     53    'googlesitekit-modules-reader-revenue-manager'             => array( "googlesitekit-modules-reader-revenue-manager-28ec1502574278161523.js", null ),
     54    'googlesitekit-modules-search-console'                     => array( "googlesitekit-modules-search-console-c5ee61ebe5c4758697f7.js", null ),
     55    'googlesitekit-modules-sign-in-with-google'                => array( "googlesitekit-modules-sign-in-with-google-ff4cc66e0355cefa5b59.js", null ),
     56    'googlesitekit-modules-tagmanager'                         => array( "googlesitekit-modules-tagmanager-6e0cd98eb5fa67a088fd.js", null ),
     57    'googlesitekit-notifications'                              => array( "googlesitekit-notifications-68b6123744fc1447c597.js", null ),
     58    'googlesitekit-polyfills'                                  => array( "googlesitekit-polyfills-f5a1154bf6114abcdbae.js", null ),
     59    'googlesitekit-settings'                                   => array( "googlesitekit-settings-f38fb475207deb40d30a.js", null ),
     60    'googlesitekit-splash'                                     => array( "googlesitekit-splash-8149844e0600ee696450.js", null ),
     61    'googlesitekit-user-input'                                 => array( "googlesitekit-user-input-32ce19372c4a80d3525c.js", null ),
     62    'googlesitekit-widgets'                                    => array( "googlesitekit-widgets-66b135342a210db1628b.js", null ),
     63    'googlesitekit-wp-dashboard'                               => array( "googlesitekit-wp-dashboard-26aef10466d76e72e042.js", null ),
    6064);
  • google-site-kit/tags/1.148.0/google-site-kit.php

    r3246532 r3253534  
    1212 * Plugin URI:        https://sitekit.withgoogle.com
    1313 * Description:       Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web.
    14  * Version:           1.147.0
     14 * Version:           1.148.0
    1515 * Requires at least: 5.2
    1616 * Requires PHP:      7.4
     
    2727
    2828// Define most essential constants.
    29 define( 'GOOGLESITEKIT_VERSION', '1.147.0' );
     29define( 'GOOGLESITEKIT_VERSION', '1.148.0' );
    3030define( 'GOOGLESITEKIT_PLUGIN_MAIN_FILE', __FILE__ );
    3131define( 'GOOGLESITEKIT_PHP_MINIMUM', '7.4.0' );
  • google-site-kit/tags/1.148.0/includes/Core/Assets/Assets.php

    r3246532 r3253534  
    1616use Google\Site_Kit\Core\Storage\Options;
    1717use Google\Site_Kit\Core\Util\Feature_Flags;
    18 use Google\Site_Kit\Core\Util\URL;
     18use Google\Site_Kit\Core\Util\Plugin_Status;
    1919use WP_Dependencies;
    2020use WP_Post_Type;
  • google-site-kit/tags/1.148.0/includes/Core/Consent_Mode/REST_Consent_Mode_Controller.php

    r3208808 r3253534  
    1616use Google\Site_Kit\Core\REST_API\REST_Routes;
    1717use Google\Site_Kit\Core\Storage\Options;
     18use Google\Site_Kit\Core\Util\Plugin_Status;
    1819use Google\Site_Kit\Modules\Ads;
    1920use Google\Site_Kit\Modules\Analytics_4;
     
    188189                        'methods'             => WP_REST_Server::READABLE,
    189190                        'callback'            => function () {
    190                             $is_active  = function_exists( 'wp_set_consent' );
    191                             $installed  = $is_active;
    192                             $plugin_uri = 'https://wordpress.org/plugins/wp-consent-api';
    193                             $plugin     = 'wp-consent-api/wp-consent-api.php';
    194 
    195                             $response = array(
     191                            // Here we intentionally use a non-plugin-specific detection strategy.
     192                            $is_active = function_exists( 'wp_set_consent' );
     193                            $response  = array(
    196194                                'hasConsentAPI' => $is_active,
    197195                            );
    198196
     197                            // Alternate wp_nonce_url without esc_html breaking query parameters.
     198                            $nonce_url = function ( $action_url, $action ) {
     199                                return add_query_arg( '_wpnonce', wp_create_nonce( $action ), $action_url );
     200                            };
     201
    199202                            if ( ! $is_active ) {
    200                                 if ( ! function_exists( 'get_plugins' ) ) {
    201                                     require_once ABSPATH . 'wp-admin/includes/plugin.php';
    202                                 }
    203 
    204                                 $plugins = get_plugins();
    205 
    206                                 if ( array_key_exists( $plugin, $plugins ) ) {
    207                                     $installed = true;
    208                                 } else {
    209                                     foreach ( $plugins as $plugin_file => $installed_plugin ) {
    210                                         if ( $installed_plugin['PluginURI'] === $plugin_uri ) {
    211                                             $plugin    = $plugin_file;
    212                                             $installed = true;
    213                                             break;
    214                                         }
    215                                     }
    216                                 }
    217 
    218                                 // Alternate wp_nonce_url without esc_html breaking query parameters.
    219                                 $nonce_url = function ( $action_url, $action ) {
    220                                     return add_query_arg( '_wpnonce', wp_create_nonce( $action ), $action_url );
    221                                 };
    222                                 $activate_url = $nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=' . $plugin ), 'activate-plugin_' . $plugin );
    223                                 $install_url = $nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=wp-consent-api' ), 'install-plugin_wp-consent-api' );
    224 
    225                                 $response['wpConsentPlugin'] = array(
    226                                     'installed'   => $installed,
    227                                     'activateURL' => current_user_can( 'activate_plugin', $plugin ) ? esc_url_raw( $activate_url ) : false,
    228                                     'installURL'  => current_user_can( 'install_plugins' ) ? esc_url_raw( $install_url ) : false,
     203                                $installed_plugin = $this->get_consent_api_plugin_file();
     204
     205                                $consent_plugin = array(
     206                                    'installed'   => (bool) $installed_plugin,
     207                                    'installURL'  => false,
     208                                    'activateURL' => false,
    229209                                );
     210
     211                                if ( ! $installed_plugin && current_user_can( 'install_plugins' ) ) {
     212                                    $consent_plugin['installURL'] = $nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=wp-consent-api' ), 'install-plugin_wp-consent-api' );
     213                                }
     214
     215                                if ( $installed_plugin && current_user_can( 'activate_plugin', $installed_plugin ) ) {
     216                                    $consent_plugin['activateURL'] = $nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=' . $installed_plugin ), 'activate-plugin_' . $installed_plugin );
     217                                }
     218
     219                                $response['wpConsentPlugin'] = $consent_plugin;
    230220                            }
    231221
     
    321311        );
    322312    }
     313
     314    /**
     315     * Gets the plugin file of the installed WP Consent API if found.
     316     *
     317     * @since 1.148.0
     318     *
     319     * @return false|string
     320     */
     321    protected function get_consent_api_plugin_file() {
     322        // Check the default location first.
     323        if ( Plugin_Status::is_plugin_installed( 'wp-consent-api/wp-consent-api.php' ) ) {
     324            return 'wp-consent-api/wp-consent-api.php';
     325        }
     326
     327        // Here we make an extra effort to attempt to detect the plugin if installed in a non-standard location.
     328        return Plugin_Status::is_plugin_installed(
     329            fn ( $installed_plugin ) => 'https://wordpress.org/plugins/wp-consent-api' === $installed_plugin['PluginURI']
     330        );
     331    }
    323332}
  • google-site-kit/tags/1.148.0/includes/Core/Conversion_Tracking/Conversion_Event_Providers/WooCommerce.php

    r3181737 r3253534  
    3434     */
    3535    public function is_active() {
    36         return did_action( 'woocommerce_loaded' ) > 0;
     36        return class_exists( 'WooCommerce' );
    3737    }
    3838
  • google-site-kit/tags/1.148.0/includes/Core/Dismissals/REST_Dismissals_Controller.php

    r3134468 r3253534  
    1212
    1313use Google\Site_Kit\Core\Permissions\Permissions;
     14use Google\Site_Kit\Core\REST_API\Exception\Invalid_Param_Exception;
    1415use Google\Site_Kit\Core\REST_API\REST_Route;
    1516use Google\Site_Kit\Core\REST_API\REST_Routes;
     
    102103                    'methods'             => WP_REST_Server::DELETABLE,
    103104                    'callback'            => function ( WP_REST_Request $request ) {
    104                         $slugs = $request['data']['slugs'];
     105                        if ( empty( $request['data']['slugs'] ) ) {
     106                            // Schema validation does not catch empty object params
     107                            // in older versions of WP.
     108                            return ( new Invalid_Param_Exception( 'data' ) )->to_wp_error();
     109                        }
    105110
    106                         foreach ( $slugs as $slug ) {
     111                        foreach ( $request['data']['slugs'] as $slug ) {
    107112                            $this->dismissed_items->remove( $slug );
    108113                        }
  • google-site-kit/tags/1.148.0/includes/Core/Modules/Modules.php

    r3164469 r3253534  
    146146     */
    147147    private $core_modules = array(
    148         Site_Verification::MODULE_SLUG  => Site_Verification::class,
    149         Search_Console::MODULE_SLUG     => Search_Console::class,
    150         Ads::MODULE_SLUG                => Ads::class,
    151         Analytics_4::MODULE_SLUG        => Analytics_4::class,
    152         Tag_Manager::MODULE_SLUG        => Tag_Manager::class,
    153         AdSense::MODULE_SLUG            => AdSense::class,
    154         PageSpeed_Insights::MODULE_SLUG => PageSpeed_Insights::class,
     148        Site_Verification::MODULE_SLUG   => Site_Verification::class,
     149        Search_Console::MODULE_SLUG      => Search_Console::class,
     150        Ads::MODULE_SLUG                 => Ads::class,
     151        Analytics_4::MODULE_SLUG         => Analytics_4::class,
     152        Tag_Manager::MODULE_SLUG         => Tag_Manager::class,
     153        AdSense::MODULE_SLUG             => AdSense::class,
     154        PageSpeed_Insights::MODULE_SLUG  => PageSpeed_Insights::class,
     155        Sign_In_With_Google::MODULE_SLUG => Sign_In_With_Google::class,
    155156    );
    156157
     
    182183        if ( Feature_Flags::enabled( 'rrmModule' ) ) {
    183184            $this->core_modules[ Reader_Revenue_Manager::MODULE_SLUG ] = Reader_Revenue_Manager::class;
    184         }
    185 
    186         if ( Feature_Flags::enabled( 'signInWithGoogleModule' ) ) {
    187             $this->core_modules[ Sign_In_With_Google::MODULE_SLUG ] = Sign_In_With_Google::class;
    188185        }
    189186
  • google-site-kit/tags/1.148.0/includes/Modules/Ads.php

    r3246532 r3253534  
    2323use Google\Site_Kit\Core\Modules\Module_With_Debug_Fields;
    2424use Google\Site_Kit\Core\Modules\Module_With_Deactivation;
     25use Google\Site_Kit\Core\Modules\Module_With_Persistent_Registration;
    2526use Google\Site_Kit\Core\Modules\Module_With_Scopes;
    2627use Google\Site_Kit\Core\Modules\Module_With_Scopes_Trait;
     
    3536use Google\Site_Kit\Core\Storage\User_Options;
    3637use Google\Site_Kit\Core\Tags\First_Party_Mode\First_Party_Mode;
     38use Google\Site_Kit\Core\Util\Plugin_Status;
    3739use Google\Site_Kit\Modules\Ads\PAX_Config;
    3840use Google\Site_Kit\Modules\Ads\Settings;
     
    5557 * @ignore
    5658 */
    57 final class Ads extends Module implements Module_With_Assets, Module_With_Debug_Fields, Module_With_Scopes, Module_With_Settings, Module_With_Tag, Module_With_Deactivation {
     59final class Ads extends Module implements Module_With_Assets, Module_With_Debug_Fields, Module_With_Scopes, Module_With_Settings, Module_With_Tag, Module_With_Deactivation, Module_With_Persistent_Registration {
    5860    use Module_With_Assets_Trait;
    5961    use Module_With_Scopes_Trait;
     
    106108
    107109        add_filter( 'googlesitekit_inline_modules_data', $this->get_method_proxy( 'inline_modules_data' ) );
     110    }
     111
     112    /**
     113     * Registers functionality independent of module activation.
     114     *
     115     * @since 1.148.0
     116     */
     117    public function register_persistent() {
     118        add_filter( 'googlesitekit_inline_modules_data', fn ( $data ) => $this->persistent_inline_modules_data( $data ) );
    108119    }
    109120
     
    190201
    191202    /**
    192      * Populates module data to pass to JS via _googlesitekitModulesData.
    193      *
    194      * @since 1.126.0
     203     * Populates module data needed independent of Ads module activation.
     204     *
     205     * @since 1.148.0
    195206     *
    196207     * @param array $modules_data Inline modules data.
    197208     * @return array Inline modules data.
    198209     */
     210    protected function persistent_inline_modules_data( $modules_data ) {
     211        if ( ! Feature_Flags::enabled( 'adsPax' ) ) {
     212            return $modules_data;
     213        }
     214
     215        if ( empty( $modules_data['ads'] ) ) {
     216            $modules_data['ads'] = array();
     217        }
     218
     219        $active_wc  = class_exists( 'WooCommerce' );
     220        $active_gla = defined( 'WC_GLA_VERSION' );
     221
     222        $gla_ads_conversion_action = get_option( 'gla_ads_conversion_action' );
     223
     224        $modules_data['ads']['plugins'] = array(
     225            'woocommerce'             => array(
     226                'active'    => $active_wc,
     227                'installed' => $active_wc || Plugin_Status::is_plugin_installed( 'woocommerce/woocommerce.php' ),
     228            ),
     229            'google-listings-and-ads' => array(
     230                'active'       => $active_gla,
     231                'installed'    => $active_gla || Plugin_Status::is_plugin_installed( 'google-listings-and-ads/google-listings-and-ads.php' ),
     232                'adsConnected' => $active_gla && get_option( 'gla_ads_id' ),
     233                'conversionID' => is_array( $gla_ads_conversion_action ) ? $gla_ads_conversion_action['conversion_id'] : '',
     234            ),
     235        );
     236
     237        return $modules_data;
     238    }
     239
     240    /**
     241     * Populates module data to pass to JS via _googlesitekitModulesData.
     242     *
     243     * @since 1.126.0
     244     *
     245     * @param array $modules_data Inline modules data.
     246     * @return array Inline modules data.
     247     */
    199248    private function inline_modules_data( $modules_data ) {
    200         if ( Feature_Flags::enabled( 'adsPax' ) ) {
    201             // Get detected events.
    202             $detected_events = $this->get_supported_conversion_events();
    203             // Add the data under the `ads` key to make it clear it's scoped to this module.
    204             $modules_data['ads'] = array(
    205                 'supportedConversionEvents' => $detected_events,
    206             );
    207         }
     249        if ( ! Feature_Flags::enabled( 'adsPax' ) ) {
     250            return $modules_data;
     251        }
     252
     253        if ( empty( $modules_data['ads'] ) ) {
     254            $modules_data['ads'] = array();
     255        }
     256
     257        $modules_data['ads']['supportedConversionEvents'] = $this->get_supported_conversion_events();
    208258
    209259        return $modules_data;
     
    343393        $debug_fields = array(
    344394            'ads_conversion_tracking_id' => array(
    345                 'label' => __( 'Ads: Conversion Tracking ID', 'google-site-kit' ),
     395                'label' => __( 'Ads: Conversion ID', 'google-site-kit' ),
    346396                'value' => $settings['conversionID'],
    347397                'debug' => Debug_Data::redact_debug_value( $settings['conversionID'] ),
  • google-site-kit/tags/1.148.0/includes/Modules/Analytics_4.php

    r3229883 r3253534  
    9191use Google\Site_Kit\Core\REST_API\REST_Routes;
    9292use Google\Site_Kit\Core\Tags\First_Party_Mode\First_Party_Mode;
     93use Google\Site_Kit\Modules\Analytics_4\Audience_Settings;
    9394use Google\Site_Kit\Modules\Analytics_4\Conversion_Reporting\Conversion_Reporting_Cron;
    9495use Google\Site_Kit\Modules\Analytics_4\Conversion_Reporting\Conversion_Reporting_Events_Sync;
     
    172173     */
    173174    protected $resource_data_availability_date;
     175
     176    /**
     177     * Audience_Settings instance.
     178     *
     179     * @since 1.148.0
     180     *
     181     * @var Audience_Settings
     182     */
     183    protected $audience_settings;
    174184
    175185    /**
     
    235245        }
    236246
     247        if ( Feature_Flags::enabled( 'audienceSegmentation' ) ) {
     248            $this->audience_settings = new Audience_Settings( $this->options );
     249            $this->audience_settings->register();
     250        }
     251
    237252        ( new Advanced_Tracking( $this->context ) )->register();
    238253
     
    311326
    312327                        if ( Feature_Flags::enabled( 'conversionReporting' ) ) {
     328                            // Reset event detection and new badge events.
     329                            $this->transients->delete( Conversion_Reporting_Events_Sync::DETECTED_EVENTS_TRANSIENT );
     330                            $this->transients->delete( Conversion_Reporting_Events_Sync::LOST_EVENTS_TRANSIENT );
     331                            $this->transients->delete( Conversion_Reporting_New_Badge_Events_Sync::NEW_EVENTS_BADGE_TRANSIENT );
     332
     333                            $this->transients->set( Conversion_Reporting_New_Badge_Events_Sync::SKIP_NEW_BADGE_TRANSIENT, 1 );
     334
    313335                            do_action( Conversion_Reporting_Cron::CRON_ACTION );
    314336                        }
     
    706728                'shareable' => true,
    707729            );
     730            $datapoints['GET:audience-settings']                     = array(
     731                'service'   => '',
     732                'shareable' => true,
     733            );
     734            $datapoints['POST:save-audience-settings']               = array(
     735                'service' => '',
     736            );
    708737        }
    709738
     
    809838
    810839        if ( $this->context->is_amp() ) : ?>
    811             <!-- <?php esc_html_e( 'Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    812             <meta name="ga-opt-out" content="" id="__gaOptOutExtension">
    813             <!-- <?php esc_html_e( 'End Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    814         <?php else : ?>
    815             <!-- <?php esc_html_e( 'Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    816             <?php
     840<!-- <?php esc_html_e( 'Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     841<meta name="ga-opt-out" content="" id="__gaOptOutExtension">
     842<!-- <?php esc_html_e( 'End Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     843<?php else : ?>
     844<!-- <?php esc_html_e( 'Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     845    <?php
    817846            // Opt-out should always use the measurement ID, even when using a GT tag.
    818847            $tag_id = $this->get_measurement_id();
    819             if ( ! empty( $tag_id ) ) {
    820                 BC_Functions::wp_print_inline_script_tag( sprintf( 'window["ga-disable-%s"] = true;', esc_attr( $tag_id ) ) );
    821             }
    822             ?>
    823             <?php do_action( 'googlesitekit_analytics_tracking_opt_out', $property_id, $account_id ); ?>
    824             <!-- <?php esc_html_e( 'End Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    825             <?php
     848    if ( ! empty( $tag_id ) ) {
     849        BC_Functions::wp_print_inline_script_tag( sprintf( 'window["ga-disable-%s"] = true;', esc_attr( $tag_id ) ) );
     850    }
     851    ?>
     852    <?php do_action( 'googlesitekit_analytics_tracking_opt_out', $property_id, $account_id ); ?>
     853<!-- <?php esc_html_e( 'End Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     854    <?php
    826855        endif;
    827856    }
     
    14701499                        $custom_dimension
    14711500                    );
     1501
     1502            case 'GET:audience-settings':
     1503                return function () {
     1504                    $settings = $this->audience_settings->get();
     1505                    return current_user_can( Permissions::MANAGE_OPTIONS ) ? $settings : array_intersect_key( $settings, array_flip( $this->audience_settings->get_view_only_keys() ) );
     1506                };
     1507
     1508            case 'POST:save-audience-settings':
     1509                if ( ! current_user_can( Permissions::MANAGE_OPTIONS ) ) {
     1510                    return new WP_Error(
     1511                        'forbidden',
     1512                        __( 'User does not have permission to save audience settings.', 'google-site-kit' ),
     1513                        array( 'status' => 403 )
     1514                    );
     1515                }
     1516
     1517                if ( isset( $data['audienceSegmentationSetupCompletedBy'] ) && ! is_int( $data['audienceSegmentationSetupCompletedBy'] ) ) {
     1518                    throw new Invalid_Param_Exception( 'audienceSegmentationSetupCompletedBy' );
     1519                }
     1520
     1521                return function () use ( $data ) {
     1522                    if ( isset( $data['audienceSegmentationSetupCompletedBy'] ) ) {
     1523                        $new_settings['audienceSegmentationSetupCompletedBy'] = $data['audienceSegmentationSetupCompletedBy'];
     1524                    }
     1525
     1526                    $settings = $this->audience_settings->merge( $new_settings );
     1527
     1528                    return $settings;
     1529                };
     1530
    14721531            case 'POST:sync-audiences':
    14731532                if ( ! $this->authentication->is_authenticated() ) {
  • google-site-kit/tags/1.148.0/includes/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_Events_Sync.php

    r3221899 r3253534  
    156156            $this->new_badge_events_sync->sync_new_badge_events( $new_events );
    157157            $settings_partial['newConversionEventsLastUpdateAt'] = time();
     158
     159            // Remove new events from lost events if present.
     160            $saved_lost_events = $this->transients->get( self::LOST_EVENTS_TRANSIENT );
     161            if ( $saved_lost_events ) {
     162                $filtered_lost_events = array_diff( $saved_lost_events, $new_events );
     163                $lost_events          = array_merge( $lost_events, $filtered_lost_events );
     164            }
    158165        }
    159166
  • google-site-kit/tags/1.148.0/includes/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_New_Badge_Events_Sync.php

    r3221899 r3253534  
    2626     */
    2727    public const NEW_EVENTS_BADGE_TRANSIENT = 'googlesitekit_conversion_reporting_new_badge_events';
     28
     29    /**
     30     * The skip new badge events transient name.
     31     */
     32    public const SKIP_NEW_BADGE_TRANSIENT = 'googlesitekit_conversion_reporting_skip_new_badge_events';
    2833
    2934    /**
     
    5661     */
    5762    public function sync_new_badge_events( $new_events ) {
     63        $skip_events_badge = $this->transients->get( self::SKIP_NEW_BADGE_TRANSIENT );
     64        if ( $skip_events_badge ) {
     65            $this->transients->delete( self::SKIP_NEW_BADGE_TRANSIENT );
     66            return;
     67        }
     68
    5869        $new_events_badge         = $this->transients->get( self::NEW_EVENTS_BADGE_TRANSIENT );
    5970        $save_new_badge_transient = fn( $events ) => $this->transients->set(
  • google-site-kit/tags/1.148.0/includes/Modules/Reader_Revenue_Manager.php

    r3246532 r3253534  
    1212
    1313use Exception;
     14use Google\Site_Kit\Context;
    1415use Google\Site_Kit\Core\Assets\Asset;
     16use Google\Site_Kit\Core\Assets\Assets;
    1517use Google\Site_Kit\Core\Assets\Script;
     18use Google\Site_Kit\Core\Assets\Stylesheet;
     19use Google\Site_Kit\Core\Authentication\Authentication;
    1620use Google\Site_Kit\Core\Authentication\Clients\Google_Site_Kit_Client;
    1721use Google\Site_Kit\Core\Modules\Module;
     
    3236use Google\Site_Kit\Core\REST_API\Exception\Missing_Required_Param_Exception;
    3337use Google\Site_Kit\Core\Site_Health\Debug_Data;
     38use Google\Site_Kit\Core\Storage\Options;
    3439use Google\Site_Kit\Core\Storage\Post_Meta;
    35 use Google\Site_Kit\Core\Storage\Term_Meta;
     40use Google\Site_Kit\Core\Storage\User_Options;
    3641use Google\Site_Kit\Core\Tags\Guards\Tag_Environment_Type_Guard;
    3742use Google\Site_Kit\Core\Tags\Guards\Tag_Verify_Guard;
     43use Google\Site_Kit\Core\Util\Block_Support;
    3844use Google\Site_Kit\Core\Util\Feature_Flags;
    3945use Google\Site_Kit\Core\Util\URL;
     46use Google\Site_Kit\Modules\Reader_Revenue_Manager\Admin_Post_List;
     47use Google\Site_Kit\Modules\Reader_Revenue_Manager\Contribute_With_Google_Block;
     48use Google\Site_Kit\Modules\Reader_Revenue_Manager\Subscribe_With_Google_Block;
    4049use Google\Site_Kit\Modules\Reader_Revenue_Manager\Post_Product_ID;
    41 use Google\Site_Kit\Modules\Reader_Revenue_Manager\Term_Product_ID;
    4250use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings;
    4351use Google\Site_Kit\Modules\Reader_Revenue_Manager\Synchronize_Publication;
     
    6977
    7078    /**
     79     * Post_Product_ID instance.
     80     *
     81     * @since 1.148.0
     82     *
     83     * @var Post_Product_ID
     84     */
     85    private $post_product_id;
     86
     87    /**
     88     * Contribute_With_Google_Block instance.
     89     *
     90     * @since 1.148.0
     91     *
     92     * @var Contribute_With_Google_Block
     93     */
     94    private $contribute_with_google_block;
     95
     96    /**
     97     * Subscribe_With_Google_Block instance.
     98     *
     99     * @since 1.148.0
     100     *
     101     * @var Subscribe_With_Google_Block
     102     */
     103    private $subscribe_with_google_block;
     104
     105    /**
     106     * Tag_Guard instance.
     107     *
     108     * @since 1.148.0
     109     *
     110     * @var Tag_Guard
     111     */
     112    private $tag_guard;
     113
     114    /**
     115     * Constructor.
     116     *
     117     * @since 1.148.0
     118     *
     119     * @param Context        $context        Plugin context.
     120     * @param Options        $options        Optional. Option API instance. Default is a new instance.
     121     * @param User_Options   $user_options   Optional. User Option API instance. Default is a new instance.
     122     * @param Authentication $authentication Optional. Authentication instance. Default is a new instance.
     123     * @param Assets         $assets         Optional. Assets API instance. Default is a new instance.
     124     */
     125    public function __construct(
     126        Context $context,
     127        Options $options = null,
     128        User_Options $user_options = null,
     129        Authentication $authentication = null,
     130        Assets $assets = null
     131    ) {
     132        parent::__construct( $context, $options, $user_options, $authentication, $assets );
     133
     134        $post_meta = new Post_Meta();
     135        $settings  = $this->get_settings();
     136
     137        $this->post_product_id              = new Post_Product_ID( $post_meta, $settings );
     138        $this->tag_guard                    = new Tag_Guard( $settings, $this->post_product_id );
     139        $this->contribute_with_google_block = new Contribute_With_Google_Block( $this->context, $this->tag_guard, $settings );
     140        $this->subscribe_with_google_block  = new Subscribe_With_Google_Block( $this->context, $this->tag_guard, $settings );
     141    }
     142
     143    /**
    71144     * Registers functionality through WordPress hooks.
    72145     *
     
    83156
    84157        if ( Feature_Flags::enabled( 'rrmModuleV2' ) && $this->is_connected() ) {
    85             $post_meta       = new Post_Meta();
    86             $publication_id  = $this->get_settings()->get()['publicationID'];
    87             $post_product_id = new Post_Product_ID( $post_meta, $publication_id );
    88             $post_product_id->register();
    89 
    90             $term_meta       = new Term_Meta();
    91             $term_product_id = new Term_Product_ID( $term_meta, $publication_id );
    92             $term_product_id->register();
     158            $this->post_product_id->register();
     159
     160            $admin_post_list = new Admin_Post_List(
     161                $this->get_settings(),
     162                $this->post_product_id
     163            );
     164            $admin_post_list->register();
     165
     166            if ( Block_Support::has_block_support() ) {
     167                $this->contribute_with_google_block->register();
     168                $this->subscribe_with_google_block->register();
     169            }
    93170        }
    94171
     
    411488                        'googlesitekit-data',
    412489                        'googlesitekit-modules',
     490                        'googlesitekit-notifications',
    413491                        'googlesitekit-datastore-site',
    414492                        'googlesitekit-datastore-user',
     
    419497        );
    420498
    421         if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     499        if ( Feature_Flags::enabled( 'rrmModuleV2' ) && Block_Support::has_block_support() ) {
    422500            $assets[] = new Script(
    423                 'googlesitekit-reader-revenue-manager-block-editor',
     501                'blocks-reader-revenue-manager-block-editor-plugin',
    424502                array(
    425                     'src'           => $base_url . 'js/blocks/googlesitekit-reader-revenue-manager-block-editor.js',
     503                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/block-editor-plugin/index.js',
     504                    'dependencies'  => array(
     505                        'googlesitekit-data',
     506                        'googlesitekit-i18n',
     507                        'googlesitekit-modules',
     508                        'googlesitekit-modules-reader-revenue-manager',
     509                    ),
     510                    'execution'     => 'defer',
     511                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     512                )
     513            );
     514
     515            $assets[] = new Stylesheet(
     516                'blocks-reader-revenue-manager-block-editor-plugin-styles',
     517                array(
     518                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/block-editor-plugin/editor-styles.css',
     519                    'dependencies'  => array(),
     520                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     521                )
     522            );
     523
     524            $assets[] = new Script(
     525                'blocks-contribute-with-google',
     526                array(
     527                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/contribute-with-google/index.js',
     528                    'dependencies'  => array(
     529                        'googlesitekit-data',
     530                        'googlesitekit-i18n',
     531                        'googlesitekit-modules',
     532                        'googlesitekit-modules-reader-revenue-manager',
     533                    ),
     534                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     535                    'execution'     => 'defer',
     536                )
     537            );
     538
     539            $assets[] = new Script(
     540                'blocks-subscribe-with-google',
     541                array(
     542                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/subscribe-with-google/index.js',
     543                    'dependencies'  => array(
     544                        'googlesitekit-data',
     545                        'googlesitekit-i18n',
     546                        'googlesitekit-modules',
     547                        'googlesitekit-modules-reader-revenue-manager',
     548                    ),
     549                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     550                    'execution'     => 'defer',
     551                )
     552            );
     553
     554            $assets[] = new Stylesheet(
     555                'blocks-reader-revenue-manager-common-editor-styles',
     556                array(
     557                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/common/editor-styles.css',
    426558                    'dependencies'  => array(),
    427559                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     
    460592
    461593        $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) );
    462         $tag->use_guard( new Tag_Guard( $module_settings ) );
     594        $tag->use_guard( $this->tag_guard );
    463595        $tag->use_guard( new Tag_Environment_Type_Guard() );
    464596
     
    467599        }
    468600
     601        $product_id = 'openaccess';
     602
     603        if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     604            $product_id      = $settings['productID'];
     605            $post_product_id = '';
     606
     607            if ( is_singular() ) {
     608                $post_product_id = $this->post_product_id->get( get_the_ID() );
     609
     610                if ( ! empty( $post_product_id ) ) {
     611                    $product_id = $post_product_id;
     612                }
     613            }
     614
     615            // Extract the product ID from the setting, which is in the format
     616            // of `publicationID:productID`.
     617            if ( 'openaccess' !== $product_id ) {
     618                $separator_index = strpos( $product_id, ':' );
     619
     620                if ( false !== $separator_index ) {
     621                    $product_id = substr( $product_id, $separator_index + 1 );
     622                }
     623            }
     624        }
     625
     626        $tag->set_product_id( $product_id );
    469627        $tag->register();
    470628    }
  • google-site-kit/tags/1.148.0/includes/Modules/Reader_Revenue_Manager/Post_Product_ID.php

    r3238118 r3253534  
    1111namespace Google\Site_Kit\Modules\Reader_Revenue_Manager;
    1212
     13use Google\Site_Kit\Core\Storage\Meta_Setting_Trait;
    1314use Google\Site_Kit\Core\Storage\Post_Meta;
    14 use Google\Site_Kit\Core\Storage\Meta_Setting_Trait;
     15use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings;
    1516
    1617/**
     
    2627
    2728    /**
    28      * Publication ID.
     29     * Settings instance.
    2930     *
    30      * @since 1.145.0
     31     * @since 1.148.0
    3132     *
    32      * @var string
     33     * @var Settings
    3334     */
    34     private string $publication_id;
     35    private $settings;
    3536
    3637    /**
     
    4041     *
    4142     * @param Post_Meta $post_meta Post_Meta instance.
    42      * @param string    $publication_id Publication ID.
     43     * @param Settings  $settings  Reader Revenue Manager module settings instance.
    4344     */
    44     public function __construct( Post_Meta $post_meta, string $publication_id ) {
    45         $this->meta           = $post_meta;
    46         $this->publication_id = $publication_id;
     45    public function __construct( Post_Meta $post_meta, Settings $settings ) {
     46        $this->meta     = $post_meta;
     47        $this->settings = $settings;
    4748    }
    4849
     
    5556     */
    5657    protected function get_meta_key(): string {
    57         return 'googlesitekit_rrm_' . $this->publication_id . ':productID';
     58        $publication_id = $this->settings->get()['publicationID'];
     59        return 'googlesitekit_rrm_' . $publication_id . ':productID';
    5860    }
    5961
  • google-site-kit/tags/1.148.0/includes/Modules/Reader_Revenue_Manager/Settings.php

    r3229883 r3253534  
    101101     */
    102102    public function get_view_only_keys() {
    103         return array();
     103        $keys = array(
     104            'publicationID',
     105        );
     106
     107        if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     108            $keys = array_merge(
     109                $keys,
     110                array(
     111                    'snippetMode',
     112                    'postTypes',
     113                    'paymentOption',
     114                )
     115            );
     116        }
     117
     118        return $keys;
    104119    }
    105120
  • google-site-kit/tags/1.148.0/includes/Modules/Reader_Revenue_Manager/Tag_Guard.php

    r3127664 r3253534  
    1111namespace Google\Site_Kit\Modules\Reader_Revenue_Manager;
    1212
     13use Google\Site_Kit\Core\Modules\Module_Settings;
    1314use Google\Site_Kit\Core\Modules\Tags\Module_Tag_Guard;
     15use Google\Site_Kit\Core\Util\Feature_Flags;
     16use Google\Site_Kit\Modules\Reader_Revenue_Manager\Post_Product_ID;
    1417
    1518/**
     
    2326
    2427    /**
     28     * Post_Product_ID instance.
     29     *
     30     * @since 1.148.0
     31     *
     32     * @var Post_Product_ID
     33     */
     34    private $post_product_id;
     35
     36    /**
     37     * Constructor.
     38     *
     39     * @since 1.148.0
     40     *
     41     * @param Module_Settings $settings Module settings instance.
     42     * @param Post_Product_ID $post_product_id Post_Product_ID instance.
     43     */
     44    public function __construct( Module_Settings $settings, $post_product_id ) {
     45        parent::__construct( $settings );
     46
     47        $this->post_product_id = $post_product_id;
     48    }
     49
     50    /**
    2551     * Determines whether the guarded tag can be activated or not.
    2652     *
     
    3157    public function can_activate() {
    3258        $settings = $this->settings->get();
    33         return ! empty( $settings['publicationID'] );
     59
     60        if ( empty( $settings['publicationID'] ) ) {
     61            return false;
     62        }
     63
     64        if ( ! Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     65            return true;
     66        }
     67
     68        if ( is_singular() ) {
     69            return $this->can_activate_for_singular_post();
     70        }
     71
     72        return 'sitewide' === $settings['snippetMode'];
     73    }
     74
     75    /**
     76     * Determines whether the guarded tag can be activated for a singular post or not.
     77     *
     78     * @since 1.148.0
     79     *
     80     * @return bool TRUE if guarded tag can be activated for a singular post, otherwise FALSE.
     81     */
     82    private function can_activate_for_singular_post() {
     83        $post_product_id = $this->post_product_id->get( get_the_ID() );
     84
     85        if ( 'none' === $post_product_id ) {
     86            return false;
     87        }
     88
     89        if ( ! empty( $post_product_id ) ) {
     90            return true;
     91        }
     92
     93        $settings = $this->settings->get();
     94
     95        // If the snippet mode is `per_post` and there is no post product ID,
     96        // we don't want to render the tag.
     97        if ( 'per_post' === $settings['snippetMode'] ) {
     98            return false;
     99        }
     100
     101        // If the snippet mode is `post_types`, we only want to render the tag
     102        // if the current post type is in the list of allowed post types.
     103        if ( 'post_types' === $settings['snippetMode'] ) {
     104            /**
     105             * Filters the post types where Reader Revenue Manager CTAs should appear.
     106             *
     107             * @since 1.140.0
     108             *
     109             * @param array $cta_post_types The array of post types.
     110             */
     111            $cta_post_types = apply_filters(
     112                'googlesitekit_reader_revenue_manager_cta_post_types',
     113                $settings['postTypes']
     114            );
     115
     116            return in_array( get_post_type(), $cta_post_types, true );
     117        }
     118
     119        // Snippet mode is `sitewide` at this point, so we want to render the tag.
     120        return true;
    34121    }
    35122}
  • google-site-kit/tags/1.148.0/includes/Modules/Reader_Revenue_Manager/Web_Tag.php

    r3191565 r3253534  
    2626    use Method_Proxy_Trait;
    2727    use Tag_With_DNS_Prefetch_Trait;
     28
     29    /**
     30     * Product ID.
     31     *
     32     * @since 1.148.0
     33     *
     34     * @var string
     35     */
     36    private $product_id;
     37
     38    /**
     39     * Sets the product ID.
     40     *
     41     * @since 1.148.0
     42     *
     43     * @param string $product_id Product ID.
     44     */
     45    public function set_product_id( $product_id ) {
     46        $this->product_id = $product_id;
     47    }
    2848
    2949    /**
     
    6181        $locale = str_replace( '_', '-', get_locale() );
    6282
     83        /**
     84         * Filters the Reader Revenue Manager product ID.
     85         *
     86         * @since 1.148.0
     87         *
     88         * @param string $product_id The array of post types.
     89         */
     90        $product_id = apply_filters(
     91            'googlesitekit_reader_revenue_manager_product_id',
     92            $this->product_id
     93        );
     94
    6395        $subscription = array(
    6496            'type'              => 'NewsArticle',
    6597            'isPartOfType'      => array( 'Product' ),
    66             'isPartOfProductId' => $this->tag_id . ':openaccess',
     98            'isPartOfProductId' => $this->tag_id . ':' . $product_id,
    6799            'clientOptions'     => array(
    68100                'theme' => 'light',
     
    87119        wp_add_inline_script( 'google_swgjs', $swg_inline_script, 'before' );
    88120
    89         /**
    90          * Filters the post types where Reader Revenue Manager CTAs should appear.
    91          *
    92          * @since 1.140.0
    93          *
    94          * @param array $cta_post_types The array of post types.
    95          */
    96         $cta_post_types = apply_filters(
    97             'googlesitekit_reader_revenue_manager_cta_post_types',
    98             array( 'post' )
    99         );
    100 
    101         if ( is_singular( $cta_post_types ) ) {
    102             wp_enqueue_script( 'google_swgjs' );
    103         }
     121        wp_enqueue_script( 'google_swgjs' );
    104122    }
    105123
  • google-site-kit/tags/1.148.0/includes/Modules/Sign_In_With_Google.php

    r3246532 r3253534  
    1717use Google\Site_Kit\Core\Assets\Stylesheet;
    1818use Google\Site_Kit\Core\Authentication\Authentication;
    19 use Google\Site_Kit\Core\Conversion_Tracking\Conversion_Event_Providers\WooCommerce;
    2019use Google\Site_Kit\Core\Modules\Module;
    2120use Google\Site_Kit\Core\Modules\Module_With_Assets;
     
    3433use Google\Site_Kit\Core\Util\BC_Functions;
    3534use Google\Site_Kit\Core\Util\Method_Proxy_Trait;
     35use Google\Site_Kit\Core\Util\Plugin_Status;
    3636use Google\Site_Kit\Modules\Sign_In_With_Google\Authenticator;
    3737use Google\Site_Kit\Modules\Sign_In_With_Google\Authenticator_Interface;
     
    9292
    9393    /**
    94      * WooCommerce instance.
    95      *
    96      * @since 1.146.0
    97      * @var WooCommerce
    98      */
    99     protected $woocommerce;
     94     * Stores the active state of the WooCommerce plugin.
     95     *
     96     * @since 1.148.0
     97     * @var bool Whether WooCommerce is active or not.
     98     */
     99    protected $is_woocommerce_active;
     100
    100101
    101102    /**
     
    118119    ) {
    119120        parent::__construct( $context, $options, $user_options, $authentication, $assets );
     121
    120122        $this->existing_client_id        = new Existing_Client_ID( $this->options );
    121123        $this->sign_in_with_google_block = new Sign_In_With_Google_Block( $this->context );
    122         $this->woocommerce               = new WooCommerce( $this->context );
    123124    }
    124125
     
    368369         *
    369370         * - the Sign in with Google module is connected
    370          * - WooCommerce is active
    371371         * - the user is not logged in
    372372         */
    373         if ( ! $this->is_connected() || ! $this->woocommerce->is_active() || is_user_logged_in() ) {
     373        if ( ! $this->is_connected() || is_user_logged_in() ) {
    374374            return;
    375375        }
     
    389389     */
    390390    private function render_signinwithgoogle() {
    391         $is_wp_login          = is_login();
     391        // `is_login()` isn't available until WP 6.1.
     392        $is_wp_login          = false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] ?? '' ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
    392393        $is_woocommerce       = class_exists( 'woocommerce' );
    393394        $is_woocommerce_login = did_action( 'woocommerce_login_form_start' );
     
    621622     * @since 1.140.0
    622623     *
    623      * @return string TRUE if tag is found, FALSE if not.
     624     * @return string|array
    624625     */
    625626    public function get_content_url() {
    626627        $wp_login_url = wp_login_url();
    627628
    628         if ( $this->woocommerce->is_active() ) {
     629        if ( $this->is_woocommerce_active() ) {
    629630            $wc_login_page_id = wc_get_page_id( 'myaccount' );
    630631            $wc_login_url     = get_permalink( $wc_login_page_id );
     
    781782        }
    782783
    783         $is_woocommerce_active            = $this->woocommerce->is_active();
     784        $is_woocommerce_active            = $this->is_woocommerce_active();
    784785        $woocommerce_registration_enabled = $is_woocommerce_active ? get_option( 'woocommerce_enable_myaccount_registration' ) : null;
    785786
     
    792793        return $modules_data;
    793794    }
     795
     796    /**
     797     * Helper method to determine if the WooCommerce plugin is active.
     798     *
     799     * @since 1.148.0
     800     *
     801     * @return bool True if active, false if not.
     802     */
     803    protected function is_woocommerce_active() {
     804        return class_exists( 'WooCommerce' );
     805    }
    794806}
  • google-site-kit/tags/1.148.0/includes/Modules/Sign_In_With_Google/Sign_In_With_Google_Block.php

    r3246532 r3253534  
    1212
    1313use Google\Site_Kit\Context;
     14use Google\Site_Kit\Core\Util\Block_Support;
    1415
    1516/**
     
    4647     */
    4748    public static function can_register() {
    48         $wp_version = get_bloginfo( 'version' );
    49         // The block currently requires version WP 5.8 or higher.
    50         return (bool) version_compare( '5.8', $wp_version, '<=' );
     49        return Block_Support::has_block_support();
    5150    }
    5251
  • google-site-kit/tags/1.148.0/includes/vendor/composer/autoload_classmap.php

    r3246532 r3253534  
    214214    'Google\\Site_Kit\\Core\\Util\\Auto_Updates' => $baseDir . '/Core/Util/Auto_Updates.php',
    215215    'Google\\Site_Kit\\Core\\Util\\BC_Functions' => $baseDir . '/Core/Util/BC_Functions.php',
     216    'Google\\Site_Kit\\Core\\Util\\Block_Support' => $baseDir . '/Core/Util/Block_Support.php',
    216217    'Google\\Site_Kit\\Core\\Util\\Collection_Key_Cap_Filter' => $baseDir . '/Core/Util/Collection_Key_Cap_Filter.php',
    217218    'Google\\Site_Kit\\Core\\Util\\Date' => $baseDir . '/Core/Util/Date.php',
     
    232233    'Google\\Site_Kit\\Core\\Util\\Migration_1_3_0' => $baseDir . '/Core/Util/Migration_1_3_0.php',
    233234    'Google\\Site_Kit\\Core\\Util\\Migration_1_8_1' => $baseDir . '/Core/Util/Migration_1_8_1.php',
     235    'Google\\Site_Kit\\Core\\Util\\Plugin_Status' => $baseDir . '/Core/Util/Plugin_Status.php',
    234236    'Google\\Site_Kit\\Core\\Util\\REST_Entity_Search_Controller' => $baseDir . '/Core/Util/REST_Entity_Search_Controller.php',
    235237    'Google\\Site_Kit\\Core\\Util\\Requires_Javascript_Trait' => $baseDir . '/Core/Util/Requires_Javascript_Trait.php',
     
    271273    'Google\\Site_Kit\\Modules\\Analytics_4\\Advanced_Tracking\\Event_List_Registry' => $baseDir . '/Modules/Analytics_4/Advanced_Tracking/Event_List_Registry.php',
    272274    'Google\\Site_Kit\\Modules\\Analytics_4\\Advanced_Tracking\\Script_Injector' => $baseDir . '/Modules/Analytics_4/Advanced_Tracking/Script_Injector.php',
     275    'Google\\Site_Kit\\Modules\\Analytics_4\\Audience_Settings' => $baseDir . '/Modules/Analytics_4/Audience_Settings.php',
    273276    'Google\\Site_Kit\\Modules\\Analytics_4\\Conversion_Reporting\\Conversion_Reporting_Cron' => $baseDir . '/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_Cron.php',
    274277    'Google\\Site_Kit\\Modules\\Analytics_4\\Conversion_Reporting\\Conversion_Reporting_Events_Sync' => $baseDir . '/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_Events_Sync.php',
     
    310313    'Google\\Site_Kit\\Modules\\PageSpeed_Insights\\Settings' => $baseDir . '/Modules/PageSpeed_Insights/Settings.php',
    311314    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager' => $baseDir . '/Modules/Reader_Revenue_Manager.php',
     315    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Admin_Post_List' => $baseDir . '/Modules/Reader_Revenue_Manager/Admin_Post_List.php',
     316    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Contribute_With_Google_Block' => $baseDir . '/Modules/Reader_Revenue_Manager/Contribute_With_Google_Block.php',
    312317    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Post_Product_ID' => $baseDir . '/Modules/Reader_Revenue_Manager/Post_Product_ID.php',
    313318    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Settings' => $baseDir . '/Modules/Reader_Revenue_Manager/Settings.php',
     319    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Subscribe_With_Google_Block' => $baseDir . '/Modules/Reader_Revenue_Manager/Subscribe_With_Google_Block.php',
    314320    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Synchronize_Publication' => $baseDir . '/Modules/Reader_Revenue_Manager/Synchronize_Publication.php',
    315321    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Tag_Guard' => $baseDir . '/Modules/Reader_Revenue_Manager/Tag_Guard.php',
    316322    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Tag_Matchers' => $baseDir . '/Modules/Reader_Revenue_Manager/Tag_Matchers.php',
    317     'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Term_Product_ID' => $baseDir . '/Modules/Reader_Revenue_Manager/Term_Product_ID.php',
    318323    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Web_Tag' => $baseDir . '/Modules/Reader_Revenue_Manager/Web_Tag.php',
    319324    'Google\\Site_Kit\\Modules\\Search_Console' => $baseDir . '/Modules/Search_Console.php',
  • google-site-kit/tags/1.148.0/readme.txt

    r3246532 r3253534  
    55Tested up to:      6.7
    66Requires PHP:      7.4
    7 Stable tag:        1.147.0
     7Stable tag:        1.148.0
    88License:           Apache License 2.0
    99License URI:       https://www.apache.org/licenses/LICENSE-2.0
     
    110110== Changelog ==
    111111
    112 = 1.147.0 =
     112= 1.148.0 =
     113
     114**Added**
     115
     116* Unregister the `PartnerAdsPAXWidget` widget. See [#10219](https://github.com/google/site-kit-wp/issues/10219).
    113117
    114118**Enhanced**
    115119
    116 * Retain the publication ID prefix for product IDs when storing them in Reader Revenue Manager settings. See [#10228](https://github.com/google/site-kit-wp/issues/10228).
    117 * Update URL for RRM publication creation to streamline configuration. See [#10166](https://github.com/google/site-kit-wp/issues/10166).
    118 * Update the Analytics zero-data report to include the comparison date range, ensuring we check for data across both the  previous and current date range when determining the gathering data state. See [#10105](https://github.com/google/site-kit-wp/issues/10105).
    119 * Add Reader Revenue Manager introductory overlay notifications. See [#10070](https://github.com/google/site-kit-wp/issues/10070).
    120 * Add Reader Revenue Manager product ID notifications. See [#10069](https://github.com/google/site-kit-wp/issues/10069).
    121 * Add a new "CTA placement" section to the Reader Revenue Manager settings, allowing users to select where CTAs should appear using a dropdown and chip multi-select. See [#10066](https://github.com/google/site-kit-wp/issues/10066).
    122 * Add the learn more link to the lost events banner. See [#10045](https://github.com/google/site-kit-wp/issues/10045).
    123 * Update Ads PAX Application to be aware of supported conversion events. See [#10032](https://github.com/google/site-kit-wp/issues/10032).
     120* Update the Ads setup CTA banner to appear before the Audience Segmentation banner. See [#10290](https://github.com/google/site-kit-wp/issues/10290).
     121* Update the "Learn more" link in the Ads Module Setup banner. See [#10278](https://github.com/google/site-kit-wp/issues/10278).
     122* Show warning when Google for WooCommerce ads account is enabled. See [#10257](https://github.com/google/site-kit-wp/issues/10257).
     123* Add WordPress post list bulk edit setting for Reader Revenue Manager. See [#10248](https://github.com/google/site-kit-wp/issues/10248).
     124* Update the Ads module setup layout. See [#10193](https://github.com/google/site-kit-wp/issues/10193).
     125* Fix bug that could cause console errors when answering tailored metrics questions. See [#10182](https://github.com/google/site-kit-wp/issues/10182).
     126* Add the subtle notification component for existing Google for WooCommerce Ads users. See [#10176](https://github.com/google/site-kit-wp/issues/10176).
     127* Update Ads Setup CTA to add support for WooCommerce plugins. See [#10175](https://github.com/google/site-kit-wp/issues/10175).
     128* Add the `WooCommerceRedirectModal` component. See [#10172](https://github.com/google/site-kit-wp/issues/10172).
     129* Add plugin detection selectors to the core/site datastore. See [#10170](https://github.com/google/site-kit-wp/issues/10170).
     130* Add support for detecting WooCommerce and Google for Woo plugins. See [#10169](https://github.com/google/site-kit-wp/issues/10169).
     131* Handle the error case where the saved product ID is no longer available in the current Reader Revenue Manager publication. See [#10131](https://github.com/google/site-kit-wp/issues/10131).
     132* Display context-aware messaging based on the publication’s monetization mode in the Reader Revenue Manager module's the setup success notification. See [#10068](https://github.com/google/site-kit-wp/issues/10068).
     133* Add a dropdown and associated informational elements to the Reader Revenue Manager setup and settings screens, to aid the selection of a product ID. See [#10065](https://github.com/google/site-kit-wp/issues/10065).
     134* Enable conditional and context-aware placement of the Reader Revenue Manager code snippet. See [#9973](https://github.com/google/site-kit-wp/issues/9973).
     135* Add WordPress editor blocks for Reader Revenue Manager inline CTA buttons. See [#9963](https://github.com/google/site-kit-wp/issues/9963).
     136* Add a panel to the WordPress post editor to users to override the Reader Revenue Manager snippet configuration at the post level. See [#9962](https://github.com/google/site-kit-wp/issues/9962).
     137* When enabling groups, ensure Analytics scope is only requested when needed. See [#9595](https://github.com/google/site-kit-wp/issues/9595).
     138* Rework the Auto Update banner to use the new notification infrastructure. See [#9295](https://github.com/google/site-kit-wp/issues/9295).
    124139
    125140**Changed**
    126141
    127 * Move js dependencies required for backstop tests to their own workspace. See [#10093](https://github.com/google/site-kit-wp/issues/10093).
    128 * Refactor filtering of `(not set)` values in reports to use the new `EmptyFilter` filter type. See [#10059](https://github.com/google/site-kit-wp/issues/10059).
    129 * Implement the Sign in with Google block. See [#10046](https://github.com/google/site-kit-wp/issues/10046).
    130 * Move e2e related dependencies into their own workspace. See [#10013](https://github.com/google/site-kit-wp/issues/10013).
    131 * Refactor report filters so as to be usable for both dimensions and metrics. See [#7634](https://github.com/google/site-kit-wp/issues/7634).
     142* Ensure that client-side filtering of unset Analytics report values filters out empty strings as well as '(not set)', to align with changes to the Analytics Data API. See [#10143](https://github.com/google/site-kit-wp/issues/10143).
    132143
    133144**Fixed**
    134145
    135 * Fix error that could occur on the dashboard when connecting a new Analytics account after connecting a previously-connected account. See [#10187](https://github.com/google/site-kit-wp/issues/10187).
    136 * Fix Key Metrics positioning on large screens. See [#10050](https://github.com/google/site-kit-wp/issues/10050).
    137 * Update description of the new detected events notice. See [#10049](https://github.com/google/site-kit-wp/issues/10049).
    138 * Update language used in tailored metrics questionnaire. See [#10040](https://github.com/google/site-kit-wp/issues/10040).
    139 * Fix incorrect dismiss notification event tracking. See [#10038](https://github.com/google/site-kit-wp/issues/10038).
    140 * Fix duplicate survey triggers issue. See [#10036](https://github.com/google/site-kit-wp/issues/10036).
     146* Fix the console error that appears when the `conversionReporting` flag is enabled and the Analytics module is not connected. See [#10289](https://github.com/google/site-kit-wp/issues/10289).
     147* Add a datastore slice with actions and selectors for retrieving and updating the new set of audience settings. See [#10154](https://github.com/google/site-kit-wp/issues/10154).
     148* Add a new option for audience settings, with REST endpoints to retrieve and update it. See [#10153](https://github.com/google/site-kit-wp/issues/10153).
     149* Hide the new badge in the key metrics settings when they have been configured in the full screen editing for the first time. See [#10083](https://github.com/google/site-kit-wp/issues/10083).
    141150
    142151[See changelog for all versions](https://raw.githubusercontent.com/google/site-kit-wp/main/changelog.txt).
  • google-site-kit/trunk/dist/assets/js/blocks/sign-in-with-google/block.json

    r3246532 r3253534  
    33    "apiVersion": 2,
    44    "name": "google-site-kit/sign-in-with-google",
    5     "version": "1.147.0",
     5    "version": "1.148.0",
    66    "title": "Sign in with Google",
    77    "category": "widgets",
  • google-site-kit/trunk/dist/assets/js/blocks/sign-in-with-google/editor-styles.js

    r3246532 r3253534  
    1 !function(e){var _={};function __webpack_require__(r){if(_[r])return _[r].exports;var t=_[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,__webpack_require__),t.l=!0,t.exports}__webpack_require__.m=e,__webpack_require__.c=_,__webpack_require__.d=function(e,_,r){__webpack_require__.o(e,_)||Object.defineProperty(e,_,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,_){if(1&_&&(e=__webpack_require__(e)),8&_)return e;if(4&_&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&_&&"string"!=typeof e)for(var t in e)__webpack_require__.d(r,t,function(_){return e[_]}.bind(null,t));return r},__webpack_require__.n=function(e){var _=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(_,"a",_),_},__webpack_require__.o=function(e,_){return Object.prototype.hasOwnProperty.call(e,_)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=7)}({7:function(e,_,r){"use strict";r.r(_)}});
     1!function(e){var _={};function __webpack_require__(r){if(_[r])return _[r].exports;var t=_[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,__webpack_require__),t.l=!0,t.exports}__webpack_require__.m=e,__webpack_require__.c=_,__webpack_require__.d=function(e,_,r){__webpack_require__.o(e,_)||Object.defineProperty(e,_,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,_){if(1&_&&(e=__webpack_require__(e)),8&_)return e;if(4&_&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&_&&"string"!=typeof e)for(var t in e)__webpack_require__.d(r,t,function(_){return e[_]}.bind(null,t));return r},__webpack_require__.n=function(e){var _=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(_,"a",_),_},__webpack_require__.o=function(e,_){return Object.prototype.hasOwnProperty.call(e,_)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=43)}({43:function(e,_,r){"use strict";r.r(_)}});
  • google-site-kit/trunk/dist/assets/js/blocks/sign-in-with-google/index.js

    r3246532 r3253534  
    1 !function(e){var t={};function __webpack_require__(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.l=!0,n.exports}__webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,r){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)__webpack_require__.d(r,n,function(t){return e[t]}.bind(null,n));return r},__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=8)}([function(e,t,r){"use strict";e.exports=r(5)},function(e,t){e.exports=wp.blocks},function(e,t){e.exports=wp.blockEditor},function(e){e.exports=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"google-site-kit/sign-in-with-google","version":"1.147.0","title":"Sign in with Google","category":"widgets","icon":"google","description":"Allow users to sign in to your site using their Google Account.","textdomain":"google-site-kit"}')},,function(e,t,r){"use strict";var n=r(6),A="function"==typeof Symbol&&Symbol.for,o=A?Symbol.for("react.element"):60103,i=A?Symbol.for("react.portal"):60106,u=A?Symbol.for("react.fragment"):60107,c=A?Symbol.for("react.strict_mode"):60108,l=A?Symbol.for("react.profiler"):60114,a=A?Symbol.for("react.provider"):60109,f=A?Symbol.for("react.context"):60110,s=A?Symbol.for("react.forward_ref"):60112,p=A?Symbol.for("react.suspense"):60113,g=A?Symbol.for("react.memo"):60115,v=A?Symbol.for("react.lazy"):60116,C="function"==typeof Symbol&&Symbol.iterator;function h(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function B(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}function b(){}function m(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}B.prototype.isReactComponent={},B.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(h(85));this.updater.enqueueSetState(this,e,t,"setState")},B.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=B.prototype;var E=m.prototype=new b;E.constructor=m,n(E,B.prototype),E.isPureReactComponent=!0;var R={current:null},d=Object.prototype.hasOwnProperty,Y={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,r){var n,A={},i=null,u=null;if(null!=t)for(n in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(i=""+t.key),t)d.call(t,n)&&!Y.hasOwnProperty(n)&&(A[n]=t[n]);var c=arguments.length-2;if(1===c)A.children=r;else if(1<c){for(var l=Array(c),a=0;a<c;a++)l[a]=arguments[a+2];A.children=l}if(e&&e.defaultProps)for(n in c=e.defaultProps)void 0===A[n]&&(A[n]=c[n]);return{$$typeof:o,type:e,key:i,ref:u,props:A,_owner:R.current}}function G(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var P=/\/+/g,I=[];function F(e,t,r,n){if(I.length){var A=I.pop();return A.result=e,A.keyPrefix=t,A.func=r,A.context=n,A.count=0,A}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function S(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>I.length&&I.push(e)}function k(e,t,r){return null==e?0:function e(t,r,n,A){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var c=!1;if(null===t)c=!0;else switch(u){case"string":case"number":c=!0;break;case"object":switch(t.$$typeof){case o:case i:c=!0}}if(c)return n(A,t,""===r?"."+W(t,0):r),1;if(c=0,r=""===r?".":r+":",Array.isArray(t))for(var l=0;l<t.length;l++){var a=r+W(u=t[l],l);c+=e(u,a,n,A)}else if(null===t||"object"!=typeof t?a=null:a="function"==typeof(a=C&&t[C]||t["@@iterator"])?a:null,"function"==typeof a)for(t=a.call(t),l=0;!(u=t.next()).done;)c+=e(u=u.value,a=r+W(u,l++),n,A);else if("object"===u)throw n=""+t,Error(h(31,"[object Object]"===n?"object with keys {"+Object.keys(t).join(", ")+"}":n,""));return c}(e,"",t,r)}function W(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function L(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,r){var n=e.result,A=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?q(e,n,r,(function(e){return e})):null!=e&&(G(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,A+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(P,"$&/")+"/")+r)),n.push(e))}function q(e,t,r,n,A){var o="";null!=r&&(o=(""+r).replace(P,"$&/")+"/"),k(e,N,t=F(t,o,n,A)),S(t)}var V={current:null};function Z(){var e=V.current;if(null===e)throw Error(h(321));return e}var D={ReactCurrentDispatcher:V,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:R,IsSomeRendererActing:{current:!1},assign:n};t.Children={map:function(e,t,r){if(null==e)return e;var n=[];return q(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;k(e,L,t=F(null,null,t,r)),S(t)},count:function(e){return k(e,(function(){return null}),null)},toArray:function(e){var t=[];return q(e,t,null,(function(e){return e})),t},only:function(e){if(!G(e))throw Error(h(143));return e}},t.Component=B,t.Fragment=u,t.Profiler=l,t.PureComponent=m,t.StrictMode=c,t.Suspense=p,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=D,t.cloneElement=function(e,t,r){if(null==e)throw Error(h(267,e));var A=n({},e.props),i=e.key,u=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(u=t.ref,c=R.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(a in t)d.call(t,a)&&!Y.hasOwnProperty(a)&&(A[a]=void 0===t[a]&&void 0!==l?l[a]:t[a])}var a=arguments.length-2;if(1===a)A.children=r;else if(1<a){l=Array(a);for(var f=0;f<a;f++)l[f]=arguments[f+2];A.children=l}return{$$typeof:o,type:e.type,key:i,ref:u,props:A,_owner:c}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=j,t.createFactory=function(e){var t=j.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=G,t.lazy=function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:g,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return Z().useCallback(e,t)},t.useContext=function(e,t){return Z().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return Z().useEffect(e,t)},t.useImperativeHandle=function(e,t,r){return Z().useImperativeHandle(e,t,r)},t.useLayoutEffect=function(e,t){return Z().useLayoutEffect(e,t)},t.useMemo=function(e,t){return Z().useMemo(e,t)},t.useReducer=function(e,t,r){return Z().useReducer(e,t,r)},t.useRef=function(e){return Z().useRef(e)},t.useState=function(e){return Z().useState(e)},t.version="16.14.0"},function(e,t,r){"use strict";var n=Object.getOwnPropertySymbols,A=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(e){n[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,u,c=i(e),l=1;l<arguments.length;l++){for(var a in r=Object(arguments[l]))A.call(r,a)&&(c[a]=r[a]);if(n){u=n(r);for(var f=0;f<u.length;f++)o.call(r,u[f])&&(c[u[f]]=r[u[f]])}}return c}},,function(e,t,r){"use strict";r.r(t);var n=r(1),A=r(2),o=r(0);function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var u=o.createElement("rect",{width:180,height:41,rx:20.5,fill:"#fff"}),c=o.createElement("path",{fill:"url(#icon_svg__pattern0_1_99)",d:"M9 8h162v26H9z"}),l=o.createElement("defs",null,o.createElement("pattern",{id:"icon_svg__pattern0_1_99",patternContentUnits:"objectBoundingBox",width:1,height:1},o.createElement("use",{xlinkHref:"#icon_svg__image0_1_99",transform:"matrix(.00309 0 0 .01923 -.117 -.692)"})),o.createElement("image",{id:"icon_svg__image0_1_99",width:406,height:126,xlinkHref:"data:image/png;base64,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"}));var a=function SvgIcon(e){return o.createElement("svg",i({viewBox:"0 0 180 41",fill:"none"},e),u,c,l)};var f=r(3);Object(n.registerBlockType)(f.name,{edit:function Edit(){var e=Object(A.useBlockProps)();return React.createElement("div",e,React.createElement("div",{className:"googlesitekit-blocks-sign-in-with-google",style:{maxWidth:"180px",minWidth:"120px"}},React.createElement(a,null)))}})}]);
     1!function(e){var t={};function __webpack_require__(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.l=!0,n.exports}__webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,r){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)__webpack_require__.d(r,n,function(t){return e[t]}.bind(null,n));return r},__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=45)}({1:function(e,t,r){"use strict";e.exports=r(17)},12:function(e,t){e.exports=wp.blockEditor},16:function(e,t){e.exports=wp.blocks},17:function(e,t,r){"use strict";var n=r(18),A="function"==typeof Symbol&&Symbol.for,o=A?Symbol.for("react.element"):60103,i=A?Symbol.for("react.portal"):60106,u=A?Symbol.for("react.fragment"):60107,c=A?Symbol.for("react.strict_mode"):60108,l=A?Symbol.for("react.profiler"):60114,a=A?Symbol.for("react.provider"):60109,f=A?Symbol.for("react.context"):60110,s=A?Symbol.for("react.forward_ref"):60112,p=A?Symbol.for("react.suspense"):60113,g=A?Symbol.for("react.memo"):60115,v=A?Symbol.for("react.lazy"):60116,C="function"==typeof Symbol&&Symbol.iterator;function h(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function B(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}function b(){}function m(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||y}B.prototype.isReactComponent={},B.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(h(85));this.updater.enqueueSetState(this,e,t,"setState")},B.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=B.prototype;var E=m.prototype=new b;E.constructor=m,n(E,B.prototype),E.isPureReactComponent=!0;var R={current:null},d=Object.prototype.hasOwnProperty,Y={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,r){var n,A={},i=null,u=null;if(null!=t)for(n in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(i=""+t.key),t)d.call(t,n)&&!Y.hasOwnProperty(n)&&(A[n]=t[n]);var c=arguments.length-2;if(1===c)A.children=r;else if(1<c){for(var l=Array(c),a=0;a<c;a++)l[a]=arguments[a+2];A.children=l}if(e&&e.defaultProps)for(n in c=e.defaultProps)void 0===A[n]&&(A[n]=c[n]);return{$$typeof:o,type:e,key:i,ref:u,props:A,_owner:R.current}}function G(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var P=/\/+/g,I=[];function F(e,t,r,n){if(I.length){var A=I.pop();return A.result=e,A.keyPrefix=t,A.func=r,A.context=n,A.count=0,A}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function S(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>I.length&&I.push(e)}function k(e,t,r){return null==e?0:function e(t,r,n,A){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var c=!1;if(null===t)c=!0;else switch(u){case"string":case"number":c=!0;break;case"object":switch(t.$$typeof){case o:case i:c=!0}}if(c)return n(A,t,""===r?"."+W(t,0):r),1;if(c=0,r=""===r?".":r+":",Array.isArray(t))for(var l=0;l<t.length;l++){var a=r+W(u=t[l],l);c+=e(u,a,n,A)}else if(null===t||"object"!=typeof t?a=null:a="function"==typeof(a=C&&t[C]||t["@@iterator"])?a:null,"function"==typeof a)for(t=a.call(t),l=0;!(u=t.next()).done;)c+=e(u=u.value,a=r+W(u,l++),n,A);else if("object"===u)throw n=""+t,Error(h(31,"[object Object]"===n?"object with keys {"+Object.keys(t).join(", ")+"}":n,""));return c}(e,"",t,r)}function W(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function L(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,r){var n=e.result,A=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?q(e,n,r,(function(e){return e})):null!=e&&(G(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,A+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(P,"$&/")+"/")+r)),n.push(e))}function q(e,t,r,n,A){var o="";null!=r&&(o=(""+r).replace(P,"$&/")+"/"),k(e,N,t=F(t,o,n,A)),S(t)}var V={current:null};function Z(){var e=V.current;if(null===e)throw Error(h(321));return e}var D={ReactCurrentDispatcher:V,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:R,IsSomeRendererActing:{current:!1},assign:n};t.Children={map:function(e,t,r){if(null==e)return e;var n=[];return q(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;k(e,L,t=F(null,null,t,r)),S(t)},count:function(e){return k(e,(function(){return null}),null)},toArray:function(e){var t=[];return q(e,t,null,(function(e){return e})),t},only:function(e){if(!G(e))throw Error(h(143));return e}},t.Component=B,t.Fragment=u,t.Profiler=l,t.PureComponent=m,t.StrictMode=c,t.Suspense=p,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=D,t.cloneElement=function(e,t,r){if(null==e)throw Error(h(267,e));var A=n({},e.props),i=e.key,u=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(u=t.ref,c=R.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(a in t)d.call(t,a)&&!Y.hasOwnProperty(a)&&(A[a]=void 0===t[a]&&void 0!==l?l[a]:t[a])}var a=arguments.length-2;if(1===a)A.children=r;else if(1<a){l=Array(a);for(var f=0;f<a;f++)l[f]=arguments[f+2];A.children=l}return{$$typeof:o,type:e.type,key:i,ref:u,props:A,_owner:c}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=j,t.createFactory=function(e){var t=j.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=G,t.lazy=function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:g,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return Z().useCallback(e,t)},t.useContext=function(e,t){return Z().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return Z().useEffect(e,t)},t.useImperativeHandle=function(e,t,r){return Z().useImperativeHandle(e,t,r)},t.useLayoutEffect=function(e,t){return Z().useLayoutEffect(e,t)},t.useMemo=function(e,t){return Z().useMemo(e,t)},t.useReducer=function(e,t,r){return Z().useReducer(e,t,r)},t.useRef=function(e){return Z().useRef(e)},t.useState=function(e){return Z().useState(e)},t.version="16.14.0"},18:function(e,t,r){"use strict";var n=Object.getOwnPropertySymbols,A=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(e){n[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,u,c=i(e),l=1;l<arguments.length;l++){for(var a in r=Object(arguments[l]))A.call(r,a)&&(c[a]=r[a]);if(n){u=n(r);for(var f=0;f<u.length;f++)o.call(r,u[f])&&(c[u[f]]=r[u[f]])}}return c}},37:function(e){e.exports=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"google-site-kit/sign-in-with-google","version":"1.148.0","title":"Sign in with Google","category":"widgets","icon":"google","description":"Allow users to sign in to your site using their Google Account.","textdomain":"google-site-kit"}')},45:function(e,t,r){"use strict";r.r(t);var n=r(16),A=r(12),o=r(1);function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var u=o.createElement("rect",{width:180,height:41,rx:20.5,fill:"#fff"}),c=o.createElement("path",{fill:"url(#icon_svg__pattern0_1_99)",d:"M9 8h162v26H9z"}),l=o.createElement("defs",null,o.createElement("pattern",{id:"icon_svg__pattern0_1_99",patternContentUnits:"objectBoundingBox",width:1,height:1},o.createElement("use",{xlinkHref:"#icon_svg__image0_1_99",transform:"matrix(.00309 0 0 .01923 -.117 -.692)"})),o.createElement("image",{id:"icon_svg__image0_1_99",width:406,height:126,xlinkHref:"data:image/png;base64,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"}));var a=function SvgIcon(e){return o.createElement("svg",i({viewBox:"0 0 180 41",fill:"none"},e),u,c,l)};var f=r(37);Object(n.registerBlockType)(f.name,{edit:function Edit(){var e=Object(A.useBlockProps)();return React.createElement("div",e,React.createElement("div",{className:"googlesitekit-blocks-sign-in-with-google",style:{maxWidth:"180px",minWidth:"120px"}},React.createElement(a,null)))}})}});
  • google-site-kit/trunk/dist/config.php

    r3221899 r3253534  
    88
    99return array(
    10     'features' => array( 'adsPax','audienceSegmentation','conversionReporting','firstPartyMode','gm3Components','privacySandboxModule','rrmModule','rrmModuleV2','signInWithGoogleModule' ),
     10    'features' => array( 'adsPax','audienceSegmentation','conversionReporting','firstPartyMode','gm3Components','privacySandboxModule','rrmModule','rrmModuleV2' ),
    1111);
  • google-site-kit/trunk/dist/manifest.php

    r3246532 r3253534  
    88
    99return array(
    10     'googlesitekit-consent-mode'                           => array( "googlesitekit-consent-mode-3d6495dceaebc28bcca3.js", null ),
    11     'googlesitekit-events-provider-contact-form-7'         => array( "googlesitekit-events-provider-contact-form-7-21cf1c445673c649970d.js", null ),
    12     'googlesitekit-events-provider-easy-digital-downloads' => array( "googlesitekit-events-provider-easy-digital-downloads-a3b438fc133106da6a33.js", null ),
    13     'googlesitekit-events-provider-mailchimp'              => array( "googlesitekit-events-provider-mailchimp-7920d200a07d3bcd60bb.js", null ),
    14     'googlesitekit-events-provider-ninja-forms'            => array( "googlesitekit-events-provider-ninja-forms-ddd9645222a85c7954f3.js", null ),
    15     'googlesitekit-events-provider-optin-monster'          => array( "googlesitekit-events-provider-optin-monster-2bb9e40daaa87763f38e.js", null ),
    16     'googlesitekit-events-provider-popup-maker'            => array( "googlesitekit-events-provider-popup-maker-e1863af0c352a2ce8748.js", null ),
    17     'googlesitekit-events-provider-woocommerce'            => array( "googlesitekit-events-provider-woocommerce-9043ca3351c215979b62.js", null ),
    18     'googlesitekit-events-provider-wpforms'                => array( "googlesitekit-events-provider-wpforms-b35450445f9cb0eeb855.js", null ),
    19     'analytics-advanced-tracking'                          => array( "analytics-advanced-tracking-ea84b2c367b69f5c094b.js", null ),
    20     'googlesitekit-i18n'                                   => array( "googlesitekit-i18n-33cdd2dee5d1d1f4fb34.js", null ),
    21     'googlesitekit-reader-revenue-manager-block-editor'    => array( "googlesitekit-reader-revenue-manager-block-editor.js", null ),
    22     'sign-in-with-google/editor-styles'                    => array( "sign-in-with-google/editor-styles.js", null ),
    23     'sign-in-with-google/index'                            => array( "sign-in-with-google/index.js", null ),
    24     'googlesitekit-admin-css'                              => array( "googlesitekit-admin-css-0ed888e9f46eb775c4a9.min.css", null ),
    25     'googlesitekit-adminbar-css'                           => array( "googlesitekit-adminbar-css-281d66e21d2b87430998.min.css", null ),
    26     'googlesitekit-authorize-application-css'              => array( "googlesitekit-authorize-application-css-ce25e97404abc5a02921.min.css", null ),
    27     'googlesitekit-wp-dashboard-css'                       => array( "googlesitekit-wp-dashboard-css-55d9d8bb13cf249a2389.min.css", null ),
    28     'googlesitekit-vendor'                                 => array( "googlesitekit-vendor-68e1c45ab88797e2725b.js", null ),
    29     'googlesitekit-runtime'                                => array( "runtime-89f677636011f47c68b1.js", null ),
    30     'googlesitekit-activation'                             => array( "googlesitekit-activation-08970804363d3f89f12e.js", null ),
    31     'googlesitekit-ad-blocking-recovery'                   => array( "googlesitekit-ad-blocking-recovery-7c1bee68a11e1537fba9.js", null ),
    32     'googlesitekit-adminbar'                               => array( "googlesitekit-adminbar-494060be019092a480bf.js", null ),
    33     'googlesitekit-api'                                    => array( "googlesitekit-api-2766e9472b9ab9216ca1.js", null ),
    34     'googlesitekit-components'                             => array( array( "googlesitekit-components-gm2-8ef0fd892597f5776726.js", null ), array( "googlesitekit-components-gm3-96f619a4dfa6a62e80b0.js", null ) ),
    35     'googlesitekit-data'                                   => array( "googlesitekit-data-b9cd43cf5269111852ae.js", null ),
    36     'googlesitekit-datastore-forms'                        => array( "googlesitekit-datastore-forms-fda104b042221bd85889.js", null ),
    37     'googlesitekit-datastore-location'                     => array( "googlesitekit-datastore-location-f342a662bcd23bad5197.js", null ),
    38     'googlesitekit-datastore-site'                         => array( "googlesitekit-datastore-site-6a6c78749feb8856beac.js", null ),
    39     'googlesitekit-datastore-ui'                           => array( "googlesitekit-datastore-ui-abfcc74f97bbff8b2eac.js", null ),
    40     'googlesitekit-datastore-user'                         => array( "googlesitekit-datastore-user-3378174b7e259484c79a.js", null ),
    41     'googlesitekit-entity-dashboard'                       => array( "googlesitekit-entity-dashboard-12ac51781ea2a575d5d6.js", null ),
    42     'googlesitekit-main-dashboard'                         => array( "googlesitekit-main-dashboard-d2235f7e737fa3cc6542.js", null ),
    43     'googlesitekit-metric-selection'                       => array( "googlesitekit-metric-selection-4e96dd3bd15106d6f9b1.js", null ),
    44     'googlesitekit-modules'                                => array( "googlesitekit-modules-271a2bc6321bc5512177.js", null ),
    45     'googlesitekit-modules-ads'                            => array( "googlesitekit-modules-ads-5c3840d282a55fec7b91.js", null ),
    46     'googlesitekit-modules-adsense'                        => array( "googlesitekit-modules-adsense-8dae88c7b504d6eeffbd.js", null ),
    47     'googlesitekit-modules-analytics-4'                    => array( "googlesitekit-modules-analytics-4-03ff53d67f0730fef532.js", null ),
    48     'googlesitekit-modules-pagespeed-insights'             => array( "googlesitekit-modules-pagespeed-insights-c03a4bc015c93be68ba2.js", null ),
    49     'googlesitekit-modules-reader-revenue-manager'         => array( "googlesitekit-modules-reader-revenue-manager-f64ae5a06452a7c70545.js", null ),
    50     'googlesitekit-modules-search-console'                 => array( "googlesitekit-modules-search-console-76205470debaed0c391f.js", null ),
    51     'googlesitekit-modules-sign-in-with-google'            => array( "googlesitekit-modules-sign-in-with-google-72ac70043d96dfcec075.js", null ),
    52     'googlesitekit-modules-tagmanager'                     => array( "googlesitekit-modules-tagmanager-3dd7cdfe4eab5a246d90.js", null ),
    53     'googlesitekit-notifications'                          => array( "googlesitekit-notifications-05633f57dd25402f9646.js", null ),
    54     'googlesitekit-polyfills'                              => array( "googlesitekit-polyfills-b90168a70cb376a88ee6.js", null ),
    55     'googlesitekit-settings'                               => array( "googlesitekit-settings-1e24b6995d523f1fa3d1.js", null ),
    56     'googlesitekit-splash'                                 => array( "googlesitekit-splash-b273b7be927790dc2c4e.js", null ),
    57     'googlesitekit-user-input'                             => array( "googlesitekit-user-input-818d71397d6d1f15d951.js", null ),
    58     'googlesitekit-widgets'                                => array( "googlesitekit-widgets-79a0290d39373d503c60.js", null ),
    59     'googlesitekit-wp-dashboard'                           => array( "googlesitekit-wp-dashboard-4e8db01e6c2bad945b9c.js", null ),
     10    'googlesitekit-consent-mode'                               => array( "googlesitekit-consent-mode-3d6495dceaebc28bcca3.js", null ),
     11    'googlesitekit-events-provider-contact-form-7'             => array( "googlesitekit-events-provider-contact-form-7-21cf1c445673c649970d.js", null ),
     12    'googlesitekit-events-provider-easy-digital-downloads'     => array( "googlesitekit-events-provider-easy-digital-downloads-a3b438fc133106da6a33.js", null ),
     13    'googlesitekit-events-provider-mailchimp'                  => array( "googlesitekit-events-provider-mailchimp-7920d200a07d3bcd60bb.js", null ),
     14    'googlesitekit-events-provider-ninja-forms'                => array( "googlesitekit-events-provider-ninja-forms-ddd9645222a85c7954f3.js", null ),
     15    'googlesitekit-events-provider-optin-monster'              => array( "googlesitekit-events-provider-optin-monster-2bb9e40daaa87763f38e.js", null ),
     16    'googlesitekit-events-provider-popup-maker'                => array( "googlesitekit-events-provider-popup-maker-e1863af0c352a2ce8748.js", null ),
     17    'googlesitekit-events-provider-woocommerce'                => array( "googlesitekit-events-provider-woocommerce-9043ca3351c215979b62.js", null ),
     18    'googlesitekit-events-provider-wpforms'                    => array( "googlesitekit-events-provider-wpforms-b35450445f9cb0eeb855.js", null ),
     19    'analytics-advanced-tracking'                              => array( "analytics-advanced-tracking-ea84b2c367b69f5c094b.js", null ),
     20    'googlesitekit-i18n'                                       => array( "googlesitekit-i18n-33cdd2dee5d1d1f4fb34.js", null ),
     21    'reader-revenue-manager/block-editor-plugin/editor-styles' => array( "reader-revenue-manager/block-editor-plugin/editor-styles.js", null ),
     22    'reader-revenue-manager/block-editor-plugin/index'         => array( "reader-revenue-manager/block-editor-plugin/index.js", null ),
     23    'reader-revenue-manager/common/editor-styles'              => array( "reader-revenue-manager/common/editor-styles.js", null ),
     24    'reader-revenue-manager/contribute-with-google/index'      => array( "reader-revenue-manager/contribute-with-google/index.js", null ),
     25    'reader-revenue-manager/subscribe-with-google/index'       => array( "reader-revenue-manager/subscribe-with-google/index.js", null ),
     26    'sign-in-with-google/editor-styles'                        => array( "sign-in-with-google/editor-styles.js", null ),
     27    'sign-in-with-google/index'                                => array( "sign-in-with-google/index.js", null ),
     28    'googlesitekit-admin-css'                                  => array( "googlesitekit-admin-css-e86016510d7baa4a7353.min.css", null ),
     29    'googlesitekit-adminbar-css'                               => array( "googlesitekit-adminbar-css-281d66e21d2b87430998.min.css", null ),
     30    'googlesitekit-authorize-application-css'                  => array( "googlesitekit-authorize-application-css-ce25e97404abc5a02921.min.css", null ),
     31    'googlesitekit-wp-dashboard-css'                           => array( "googlesitekit-wp-dashboard-css-55d9d8bb13cf249a2389.min.css", null ),
     32    'googlesitekit-vendor'                                     => array( "googlesitekit-vendor-5aa94214da516df44edd.js", null ),
     33    'googlesitekit-runtime'                                    => array( "runtime-fb338303cadc59781996.js", null ),
     34    'googlesitekit-activation'                                 => array( "googlesitekit-activation-ef136fa2d705890f91b3.js", null ),
     35    'googlesitekit-ad-blocking-recovery'                       => array( "googlesitekit-ad-blocking-recovery-ea1f8cdd3eebac89f55c.js", null ),
     36    'googlesitekit-adminbar'                                   => array( "googlesitekit-adminbar-8186a58dffbe9861983a.js", null ),
     37    'googlesitekit-api'                                        => array( "googlesitekit-api-bcc1c62e15d079907a56.js", null ),
     38    'googlesitekit-components'                                 => array( array( "googlesitekit-components-gm2-8bf8544d07a6da530f8f.js", null ), array( "googlesitekit-components-gm3-3d043a9ad4684e207690.js", null ) ),
     39    'googlesitekit-data'                                       => array( "googlesitekit-data-10660ec4fa4de9e5a0ad.js", null ),
     40    'googlesitekit-datastore-forms'                            => array( "googlesitekit-datastore-forms-58356fd14af30247220b.js", null ),
     41    'googlesitekit-datastore-location'                         => array( "googlesitekit-datastore-location-d6cc723fb9213326c8df.js", null ),
     42    'googlesitekit-datastore-site'                             => array( "googlesitekit-datastore-site-32262604b05a3f29ffbd.js", null ),
     43    'googlesitekit-datastore-ui'                               => array( "googlesitekit-datastore-ui-2a4a47d4c0cd789f71e9.js", null ),
     44    'googlesitekit-datastore-user'                             => array( "googlesitekit-datastore-user-3cd7c04a250e40fbee46.js", null ),
     45    'googlesitekit-entity-dashboard'                           => array( "googlesitekit-entity-dashboard-594bf471eb193b4f1a94.js", null ),
     46    'googlesitekit-main-dashboard'                             => array( "googlesitekit-main-dashboard-be615811bedf8348b6b3.js", null ),
     47    'googlesitekit-metric-selection'                           => array( "googlesitekit-metric-selection-8a40812867bda4ccc557.js", null ),
     48    'googlesitekit-modules'                                    => array( "googlesitekit-modules-f29528994921322c9c2d.js", null ),
     49    'googlesitekit-modules-ads'                                => array( "googlesitekit-modules-ads-dbd862ea5480cfe6c092.js", null ),
     50    'googlesitekit-modules-adsense'                            => array( "googlesitekit-modules-adsense-aac303a1bfa905c4953e.js", null ),
     51    'googlesitekit-modules-analytics-4'                        => array( "googlesitekit-modules-analytics-4-4107886672cca10485da.js", null ),
     52    'googlesitekit-modules-pagespeed-insights'                 => array( "googlesitekit-modules-pagespeed-insights-fa61f9f00c3cb3a11b48.js", null ),
     53    'googlesitekit-modules-reader-revenue-manager'             => array( "googlesitekit-modules-reader-revenue-manager-28ec1502574278161523.js", null ),
     54    'googlesitekit-modules-search-console'                     => array( "googlesitekit-modules-search-console-c5ee61ebe5c4758697f7.js", null ),
     55    'googlesitekit-modules-sign-in-with-google'                => array( "googlesitekit-modules-sign-in-with-google-ff4cc66e0355cefa5b59.js", null ),
     56    'googlesitekit-modules-tagmanager'                         => array( "googlesitekit-modules-tagmanager-6e0cd98eb5fa67a088fd.js", null ),
     57    'googlesitekit-notifications'                              => array( "googlesitekit-notifications-68b6123744fc1447c597.js", null ),
     58    'googlesitekit-polyfills'                                  => array( "googlesitekit-polyfills-f5a1154bf6114abcdbae.js", null ),
     59    'googlesitekit-settings'                                   => array( "googlesitekit-settings-f38fb475207deb40d30a.js", null ),
     60    'googlesitekit-splash'                                     => array( "googlesitekit-splash-8149844e0600ee696450.js", null ),
     61    'googlesitekit-user-input'                                 => array( "googlesitekit-user-input-32ce19372c4a80d3525c.js", null ),
     62    'googlesitekit-widgets'                                    => array( "googlesitekit-widgets-66b135342a210db1628b.js", null ),
     63    'googlesitekit-wp-dashboard'                               => array( "googlesitekit-wp-dashboard-26aef10466d76e72e042.js", null ),
    6064);
  • google-site-kit/trunk/google-site-kit.php

    r3246532 r3253534  
    1212 * Plugin URI:        https://sitekit.withgoogle.com
    1313 * Description:       Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web.
    14  * Version:           1.147.0
     14 * Version:           1.148.0
    1515 * Requires at least: 5.2
    1616 * Requires PHP:      7.4
     
    2727
    2828// Define most essential constants.
    29 define( 'GOOGLESITEKIT_VERSION', '1.147.0' );
     29define( 'GOOGLESITEKIT_VERSION', '1.148.0' );
    3030define( 'GOOGLESITEKIT_PLUGIN_MAIN_FILE', __FILE__ );
    3131define( 'GOOGLESITEKIT_PHP_MINIMUM', '7.4.0' );
  • google-site-kit/trunk/includes/Core/Assets/Assets.php

    r3246532 r3253534  
    1616use Google\Site_Kit\Core\Storage\Options;
    1717use Google\Site_Kit\Core\Util\Feature_Flags;
    18 use Google\Site_Kit\Core\Util\URL;
     18use Google\Site_Kit\Core\Util\Plugin_Status;
    1919use WP_Dependencies;
    2020use WP_Post_Type;
  • google-site-kit/trunk/includes/Core/Consent_Mode/REST_Consent_Mode_Controller.php

    r3208808 r3253534  
    1616use Google\Site_Kit\Core\REST_API\REST_Routes;
    1717use Google\Site_Kit\Core\Storage\Options;
     18use Google\Site_Kit\Core\Util\Plugin_Status;
    1819use Google\Site_Kit\Modules\Ads;
    1920use Google\Site_Kit\Modules\Analytics_4;
     
    188189                        'methods'             => WP_REST_Server::READABLE,
    189190                        'callback'            => function () {
    190                             $is_active  = function_exists( 'wp_set_consent' );
    191                             $installed  = $is_active;
    192                             $plugin_uri = 'https://wordpress.org/plugins/wp-consent-api';
    193                             $plugin     = 'wp-consent-api/wp-consent-api.php';
    194 
    195                             $response = array(
     191                            // Here we intentionally use a non-plugin-specific detection strategy.
     192                            $is_active = function_exists( 'wp_set_consent' );
     193                            $response  = array(
    196194                                'hasConsentAPI' => $is_active,
    197195                            );
    198196
     197                            // Alternate wp_nonce_url without esc_html breaking query parameters.
     198                            $nonce_url = function ( $action_url, $action ) {
     199                                return add_query_arg( '_wpnonce', wp_create_nonce( $action ), $action_url );
     200                            };
     201
    199202                            if ( ! $is_active ) {
    200                                 if ( ! function_exists( 'get_plugins' ) ) {
    201                                     require_once ABSPATH . 'wp-admin/includes/plugin.php';
    202                                 }
    203 
    204                                 $plugins = get_plugins();
    205 
    206                                 if ( array_key_exists( $plugin, $plugins ) ) {
    207                                     $installed = true;
    208                                 } else {
    209                                     foreach ( $plugins as $plugin_file => $installed_plugin ) {
    210                                         if ( $installed_plugin['PluginURI'] === $plugin_uri ) {
    211                                             $plugin    = $plugin_file;
    212                                             $installed = true;
    213                                             break;
    214                                         }
    215                                     }
    216                                 }
    217 
    218                                 // Alternate wp_nonce_url without esc_html breaking query parameters.
    219                                 $nonce_url = function ( $action_url, $action ) {
    220                                     return add_query_arg( '_wpnonce', wp_create_nonce( $action ), $action_url );
    221                                 };
    222                                 $activate_url = $nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=' . $plugin ), 'activate-plugin_' . $plugin );
    223                                 $install_url = $nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=wp-consent-api' ), 'install-plugin_wp-consent-api' );
    224 
    225                                 $response['wpConsentPlugin'] = array(
    226                                     'installed'   => $installed,
    227                                     'activateURL' => current_user_can( 'activate_plugin', $plugin ) ? esc_url_raw( $activate_url ) : false,
    228                                     'installURL'  => current_user_can( 'install_plugins' ) ? esc_url_raw( $install_url ) : false,
     203                                $installed_plugin = $this->get_consent_api_plugin_file();
     204
     205                                $consent_plugin = array(
     206                                    'installed'   => (bool) $installed_plugin,
     207                                    'installURL'  => false,
     208                                    'activateURL' => false,
    229209                                );
     210
     211                                if ( ! $installed_plugin && current_user_can( 'install_plugins' ) ) {
     212                                    $consent_plugin['installURL'] = $nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=wp-consent-api' ), 'install-plugin_wp-consent-api' );
     213                                }
     214
     215                                if ( $installed_plugin && current_user_can( 'activate_plugin', $installed_plugin ) ) {
     216                                    $consent_plugin['activateURL'] = $nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=' . $installed_plugin ), 'activate-plugin_' . $installed_plugin );
     217                                }
     218
     219                                $response['wpConsentPlugin'] = $consent_plugin;
    230220                            }
    231221
     
    321311        );
    322312    }
     313
     314    /**
     315     * Gets the plugin file of the installed WP Consent API if found.
     316     *
     317     * @since 1.148.0
     318     *
     319     * @return false|string
     320     */
     321    protected function get_consent_api_plugin_file() {
     322        // Check the default location first.
     323        if ( Plugin_Status::is_plugin_installed( 'wp-consent-api/wp-consent-api.php' ) ) {
     324            return 'wp-consent-api/wp-consent-api.php';
     325        }
     326
     327        // Here we make an extra effort to attempt to detect the plugin if installed in a non-standard location.
     328        return Plugin_Status::is_plugin_installed(
     329            fn ( $installed_plugin ) => 'https://wordpress.org/plugins/wp-consent-api' === $installed_plugin['PluginURI']
     330        );
     331    }
    323332}
  • google-site-kit/trunk/includes/Core/Conversion_Tracking/Conversion_Event_Providers/WooCommerce.php

    r3181737 r3253534  
    3434     */
    3535    public function is_active() {
    36         return did_action( 'woocommerce_loaded' ) > 0;
     36        return class_exists( 'WooCommerce' );
    3737    }
    3838
  • google-site-kit/trunk/includes/Core/Dismissals/REST_Dismissals_Controller.php

    r3134468 r3253534  
    1212
    1313use Google\Site_Kit\Core\Permissions\Permissions;
     14use Google\Site_Kit\Core\REST_API\Exception\Invalid_Param_Exception;
    1415use Google\Site_Kit\Core\REST_API\REST_Route;
    1516use Google\Site_Kit\Core\REST_API\REST_Routes;
     
    102103                    'methods'             => WP_REST_Server::DELETABLE,
    103104                    'callback'            => function ( WP_REST_Request $request ) {
    104                         $slugs = $request['data']['slugs'];
     105                        if ( empty( $request['data']['slugs'] ) ) {
     106                            // Schema validation does not catch empty object params
     107                            // in older versions of WP.
     108                            return ( new Invalid_Param_Exception( 'data' ) )->to_wp_error();
     109                        }
    105110
    106                         foreach ( $slugs as $slug ) {
     111                        foreach ( $request['data']['slugs'] as $slug ) {
    107112                            $this->dismissed_items->remove( $slug );
    108113                        }
  • google-site-kit/trunk/includes/Core/Modules/Modules.php

    r3164469 r3253534  
    146146     */
    147147    private $core_modules = array(
    148         Site_Verification::MODULE_SLUG  => Site_Verification::class,
    149         Search_Console::MODULE_SLUG     => Search_Console::class,
    150         Ads::MODULE_SLUG                => Ads::class,
    151         Analytics_4::MODULE_SLUG        => Analytics_4::class,
    152         Tag_Manager::MODULE_SLUG        => Tag_Manager::class,
    153         AdSense::MODULE_SLUG            => AdSense::class,
    154         PageSpeed_Insights::MODULE_SLUG => PageSpeed_Insights::class,
     148        Site_Verification::MODULE_SLUG   => Site_Verification::class,
     149        Search_Console::MODULE_SLUG      => Search_Console::class,
     150        Ads::MODULE_SLUG                 => Ads::class,
     151        Analytics_4::MODULE_SLUG         => Analytics_4::class,
     152        Tag_Manager::MODULE_SLUG         => Tag_Manager::class,
     153        AdSense::MODULE_SLUG             => AdSense::class,
     154        PageSpeed_Insights::MODULE_SLUG  => PageSpeed_Insights::class,
     155        Sign_In_With_Google::MODULE_SLUG => Sign_In_With_Google::class,
    155156    );
    156157
     
    182183        if ( Feature_Flags::enabled( 'rrmModule' ) ) {
    183184            $this->core_modules[ Reader_Revenue_Manager::MODULE_SLUG ] = Reader_Revenue_Manager::class;
    184         }
    185 
    186         if ( Feature_Flags::enabled( 'signInWithGoogleModule' ) ) {
    187             $this->core_modules[ Sign_In_With_Google::MODULE_SLUG ] = Sign_In_With_Google::class;
    188185        }
    189186
  • google-site-kit/trunk/includes/Modules/Ads.php

    r3246532 r3253534  
    2323use Google\Site_Kit\Core\Modules\Module_With_Debug_Fields;
    2424use Google\Site_Kit\Core\Modules\Module_With_Deactivation;
     25use Google\Site_Kit\Core\Modules\Module_With_Persistent_Registration;
    2526use Google\Site_Kit\Core\Modules\Module_With_Scopes;
    2627use Google\Site_Kit\Core\Modules\Module_With_Scopes_Trait;
     
    3536use Google\Site_Kit\Core\Storage\User_Options;
    3637use Google\Site_Kit\Core\Tags\First_Party_Mode\First_Party_Mode;
     38use Google\Site_Kit\Core\Util\Plugin_Status;
    3739use Google\Site_Kit\Modules\Ads\PAX_Config;
    3840use Google\Site_Kit\Modules\Ads\Settings;
     
    5557 * @ignore
    5658 */
    57 final class Ads extends Module implements Module_With_Assets, Module_With_Debug_Fields, Module_With_Scopes, Module_With_Settings, Module_With_Tag, Module_With_Deactivation {
     59final class Ads extends Module implements Module_With_Assets, Module_With_Debug_Fields, Module_With_Scopes, Module_With_Settings, Module_With_Tag, Module_With_Deactivation, Module_With_Persistent_Registration {
    5860    use Module_With_Assets_Trait;
    5961    use Module_With_Scopes_Trait;
     
    106108
    107109        add_filter( 'googlesitekit_inline_modules_data', $this->get_method_proxy( 'inline_modules_data' ) );
     110    }
     111
     112    /**
     113     * Registers functionality independent of module activation.
     114     *
     115     * @since 1.148.0
     116     */
     117    public function register_persistent() {
     118        add_filter( 'googlesitekit_inline_modules_data', fn ( $data ) => $this->persistent_inline_modules_data( $data ) );
    108119    }
    109120
     
    190201
    191202    /**
    192      * Populates module data to pass to JS via _googlesitekitModulesData.
    193      *
    194      * @since 1.126.0
     203     * Populates module data needed independent of Ads module activation.
     204     *
     205     * @since 1.148.0
    195206     *
    196207     * @param array $modules_data Inline modules data.
    197208     * @return array Inline modules data.
    198209     */
     210    protected function persistent_inline_modules_data( $modules_data ) {
     211        if ( ! Feature_Flags::enabled( 'adsPax' ) ) {
     212            return $modules_data;
     213        }
     214
     215        if ( empty( $modules_data['ads'] ) ) {
     216            $modules_data['ads'] = array();
     217        }
     218
     219        $active_wc  = class_exists( 'WooCommerce' );
     220        $active_gla = defined( 'WC_GLA_VERSION' );
     221
     222        $gla_ads_conversion_action = get_option( 'gla_ads_conversion_action' );
     223
     224        $modules_data['ads']['plugins'] = array(
     225            'woocommerce'             => array(
     226                'active'    => $active_wc,
     227                'installed' => $active_wc || Plugin_Status::is_plugin_installed( 'woocommerce/woocommerce.php' ),
     228            ),
     229            'google-listings-and-ads' => array(
     230                'active'       => $active_gla,
     231                'installed'    => $active_gla || Plugin_Status::is_plugin_installed( 'google-listings-and-ads/google-listings-and-ads.php' ),
     232                'adsConnected' => $active_gla && get_option( 'gla_ads_id' ),
     233                'conversionID' => is_array( $gla_ads_conversion_action ) ? $gla_ads_conversion_action['conversion_id'] : '',
     234            ),
     235        );
     236
     237        return $modules_data;
     238    }
     239
     240    /**
     241     * Populates module data to pass to JS via _googlesitekitModulesData.
     242     *
     243     * @since 1.126.0
     244     *
     245     * @param array $modules_data Inline modules data.
     246     * @return array Inline modules data.
     247     */
    199248    private function inline_modules_data( $modules_data ) {
    200         if ( Feature_Flags::enabled( 'adsPax' ) ) {
    201             // Get detected events.
    202             $detected_events = $this->get_supported_conversion_events();
    203             // Add the data under the `ads` key to make it clear it's scoped to this module.
    204             $modules_data['ads'] = array(
    205                 'supportedConversionEvents' => $detected_events,
    206             );
    207         }
     249        if ( ! Feature_Flags::enabled( 'adsPax' ) ) {
     250            return $modules_data;
     251        }
     252
     253        if ( empty( $modules_data['ads'] ) ) {
     254            $modules_data['ads'] = array();
     255        }
     256
     257        $modules_data['ads']['supportedConversionEvents'] = $this->get_supported_conversion_events();
    208258
    209259        return $modules_data;
     
    343393        $debug_fields = array(
    344394            'ads_conversion_tracking_id' => array(
    345                 'label' => __( 'Ads: Conversion Tracking ID', 'google-site-kit' ),
     395                'label' => __( 'Ads: Conversion ID', 'google-site-kit' ),
    346396                'value' => $settings['conversionID'],
    347397                'debug' => Debug_Data::redact_debug_value( $settings['conversionID'] ),
  • google-site-kit/trunk/includes/Modules/Analytics_4.php

    r3229883 r3253534  
    9191use Google\Site_Kit\Core\REST_API\REST_Routes;
    9292use Google\Site_Kit\Core\Tags\First_Party_Mode\First_Party_Mode;
     93use Google\Site_Kit\Modules\Analytics_4\Audience_Settings;
    9394use Google\Site_Kit\Modules\Analytics_4\Conversion_Reporting\Conversion_Reporting_Cron;
    9495use Google\Site_Kit\Modules\Analytics_4\Conversion_Reporting\Conversion_Reporting_Events_Sync;
     
    172173     */
    173174    protected $resource_data_availability_date;
     175
     176    /**
     177     * Audience_Settings instance.
     178     *
     179     * @since 1.148.0
     180     *
     181     * @var Audience_Settings
     182     */
     183    protected $audience_settings;
    174184
    175185    /**
     
    235245        }
    236246
     247        if ( Feature_Flags::enabled( 'audienceSegmentation' ) ) {
     248            $this->audience_settings = new Audience_Settings( $this->options );
     249            $this->audience_settings->register();
     250        }
     251
    237252        ( new Advanced_Tracking( $this->context ) )->register();
    238253
     
    311326
    312327                        if ( Feature_Flags::enabled( 'conversionReporting' ) ) {
     328                            // Reset event detection and new badge events.
     329                            $this->transients->delete( Conversion_Reporting_Events_Sync::DETECTED_EVENTS_TRANSIENT );
     330                            $this->transients->delete( Conversion_Reporting_Events_Sync::LOST_EVENTS_TRANSIENT );
     331                            $this->transients->delete( Conversion_Reporting_New_Badge_Events_Sync::NEW_EVENTS_BADGE_TRANSIENT );
     332
     333                            $this->transients->set( Conversion_Reporting_New_Badge_Events_Sync::SKIP_NEW_BADGE_TRANSIENT, 1 );
     334
    313335                            do_action( Conversion_Reporting_Cron::CRON_ACTION );
    314336                        }
     
    706728                'shareable' => true,
    707729            );
     730            $datapoints['GET:audience-settings']                     = array(
     731                'service'   => '',
     732                'shareable' => true,
     733            );
     734            $datapoints['POST:save-audience-settings']               = array(
     735                'service' => '',
     736            );
    708737        }
    709738
     
    809838
    810839        if ( $this->context->is_amp() ) : ?>
    811             <!-- <?php esc_html_e( 'Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    812             <meta name="ga-opt-out" content="" id="__gaOptOutExtension">
    813             <!-- <?php esc_html_e( 'End Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    814         <?php else : ?>
    815             <!-- <?php esc_html_e( 'Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    816             <?php
     840<!-- <?php esc_html_e( 'Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     841<meta name="ga-opt-out" content="" id="__gaOptOutExtension">
     842<!-- <?php esc_html_e( 'End Google Analytics AMP opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     843<?php else : ?>
     844<!-- <?php esc_html_e( 'Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     845    <?php
    817846            // Opt-out should always use the measurement ID, even when using a GT tag.
    818847            $tag_id = $this->get_measurement_id();
    819             if ( ! empty( $tag_id ) ) {
    820                 BC_Functions::wp_print_inline_script_tag( sprintf( 'window["ga-disable-%s"] = true;', esc_attr( $tag_id ) ) );
    821             }
    822             ?>
    823             <?php do_action( 'googlesitekit_analytics_tracking_opt_out', $property_id, $account_id ); ?>
    824             <!-- <?php esc_html_e( 'End Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
    825             <?php
     848    if ( ! empty( $tag_id ) ) {
     849        BC_Functions::wp_print_inline_script_tag( sprintf( 'window["ga-disable-%s"] = true;', esc_attr( $tag_id ) ) );
     850    }
     851    ?>
     852    <?php do_action( 'googlesitekit_analytics_tracking_opt_out', $property_id, $account_id ); ?>
     853<!-- <?php esc_html_e( 'End Google Analytics opt-out snippet added by Site Kit', 'google-site-kit' ); ?> -->
     854    <?php
    826855        endif;
    827856    }
     
    14701499                        $custom_dimension
    14711500                    );
     1501
     1502            case 'GET:audience-settings':
     1503                return function () {
     1504                    $settings = $this->audience_settings->get();
     1505                    return current_user_can( Permissions::MANAGE_OPTIONS ) ? $settings : array_intersect_key( $settings, array_flip( $this->audience_settings->get_view_only_keys() ) );
     1506                };
     1507
     1508            case 'POST:save-audience-settings':
     1509                if ( ! current_user_can( Permissions::MANAGE_OPTIONS ) ) {
     1510                    return new WP_Error(
     1511                        'forbidden',
     1512                        __( 'User does not have permission to save audience settings.', 'google-site-kit' ),
     1513                        array( 'status' => 403 )
     1514                    );
     1515                }
     1516
     1517                if ( isset( $data['audienceSegmentationSetupCompletedBy'] ) && ! is_int( $data['audienceSegmentationSetupCompletedBy'] ) ) {
     1518                    throw new Invalid_Param_Exception( 'audienceSegmentationSetupCompletedBy' );
     1519                }
     1520
     1521                return function () use ( $data ) {
     1522                    if ( isset( $data['audienceSegmentationSetupCompletedBy'] ) ) {
     1523                        $new_settings['audienceSegmentationSetupCompletedBy'] = $data['audienceSegmentationSetupCompletedBy'];
     1524                    }
     1525
     1526                    $settings = $this->audience_settings->merge( $new_settings );
     1527
     1528                    return $settings;
     1529                };
     1530
    14721531            case 'POST:sync-audiences':
    14731532                if ( ! $this->authentication->is_authenticated() ) {
  • google-site-kit/trunk/includes/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_Events_Sync.php

    r3221899 r3253534  
    156156            $this->new_badge_events_sync->sync_new_badge_events( $new_events );
    157157            $settings_partial['newConversionEventsLastUpdateAt'] = time();
     158
     159            // Remove new events from lost events if present.
     160            $saved_lost_events = $this->transients->get( self::LOST_EVENTS_TRANSIENT );
     161            if ( $saved_lost_events ) {
     162                $filtered_lost_events = array_diff( $saved_lost_events, $new_events );
     163                $lost_events          = array_merge( $lost_events, $filtered_lost_events );
     164            }
    158165        }
    159166
  • google-site-kit/trunk/includes/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_New_Badge_Events_Sync.php

    r3221899 r3253534  
    2626     */
    2727    public const NEW_EVENTS_BADGE_TRANSIENT = 'googlesitekit_conversion_reporting_new_badge_events';
     28
     29    /**
     30     * The skip new badge events transient name.
     31     */
     32    public const SKIP_NEW_BADGE_TRANSIENT = 'googlesitekit_conversion_reporting_skip_new_badge_events';
    2833
    2934    /**
     
    5661     */
    5762    public function sync_new_badge_events( $new_events ) {
     63        $skip_events_badge = $this->transients->get( self::SKIP_NEW_BADGE_TRANSIENT );
     64        if ( $skip_events_badge ) {
     65            $this->transients->delete( self::SKIP_NEW_BADGE_TRANSIENT );
     66            return;
     67        }
     68
    5869        $new_events_badge         = $this->transients->get( self::NEW_EVENTS_BADGE_TRANSIENT );
    5970        $save_new_badge_transient = fn( $events ) => $this->transients->set(
  • google-site-kit/trunk/includes/Modules/Reader_Revenue_Manager.php

    r3246532 r3253534  
    1212
    1313use Exception;
     14use Google\Site_Kit\Context;
    1415use Google\Site_Kit\Core\Assets\Asset;
     16use Google\Site_Kit\Core\Assets\Assets;
    1517use Google\Site_Kit\Core\Assets\Script;
     18use Google\Site_Kit\Core\Assets\Stylesheet;
     19use Google\Site_Kit\Core\Authentication\Authentication;
    1620use Google\Site_Kit\Core\Authentication\Clients\Google_Site_Kit_Client;
    1721use Google\Site_Kit\Core\Modules\Module;
     
    3236use Google\Site_Kit\Core\REST_API\Exception\Missing_Required_Param_Exception;
    3337use Google\Site_Kit\Core\Site_Health\Debug_Data;
     38use Google\Site_Kit\Core\Storage\Options;
    3439use Google\Site_Kit\Core\Storage\Post_Meta;
    35 use Google\Site_Kit\Core\Storage\Term_Meta;
     40use Google\Site_Kit\Core\Storage\User_Options;
    3641use Google\Site_Kit\Core\Tags\Guards\Tag_Environment_Type_Guard;
    3742use Google\Site_Kit\Core\Tags\Guards\Tag_Verify_Guard;
     43use Google\Site_Kit\Core\Util\Block_Support;
    3844use Google\Site_Kit\Core\Util\Feature_Flags;
    3945use Google\Site_Kit\Core\Util\URL;
     46use Google\Site_Kit\Modules\Reader_Revenue_Manager\Admin_Post_List;
     47use Google\Site_Kit\Modules\Reader_Revenue_Manager\Contribute_With_Google_Block;
     48use Google\Site_Kit\Modules\Reader_Revenue_Manager\Subscribe_With_Google_Block;
    4049use Google\Site_Kit\Modules\Reader_Revenue_Manager\Post_Product_ID;
    41 use Google\Site_Kit\Modules\Reader_Revenue_Manager\Term_Product_ID;
    4250use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings;
    4351use Google\Site_Kit\Modules\Reader_Revenue_Manager\Synchronize_Publication;
     
    6977
    7078    /**
     79     * Post_Product_ID instance.
     80     *
     81     * @since 1.148.0
     82     *
     83     * @var Post_Product_ID
     84     */
     85    private $post_product_id;
     86
     87    /**
     88     * Contribute_With_Google_Block instance.
     89     *
     90     * @since 1.148.0
     91     *
     92     * @var Contribute_With_Google_Block
     93     */
     94    private $contribute_with_google_block;
     95
     96    /**
     97     * Subscribe_With_Google_Block instance.
     98     *
     99     * @since 1.148.0
     100     *
     101     * @var Subscribe_With_Google_Block
     102     */
     103    private $subscribe_with_google_block;
     104
     105    /**
     106     * Tag_Guard instance.
     107     *
     108     * @since 1.148.0
     109     *
     110     * @var Tag_Guard
     111     */
     112    private $tag_guard;
     113
     114    /**
     115     * Constructor.
     116     *
     117     * @since 1.148.0
     118     *
     119     * @param Context        $context        Plugin context.
     120     * @param Options        $options        Optional. Option API instance. Default is a new instance.
     121     * @param User_Options   $user_options   Optional. User Option API instance. Default is a new instance.
     122     * @param Authentication $authentication Optional. Authentication instance. Default is a new instance.
     123     * @param Assets         $assets         Optional. Assets API instance. Default is a new instance.
     124     */
     125    public function __construct(
     126        Context $context,
     127        Options $options = null,
     128        User_Options $user_options = null,
     129        Authentication $authentication = null,
     130        Assets $assets = null
     131    ) {
     132        parent::__construct( $context, $options, $user_options, $authentication, $assets );
     133
     134        $post_meta = new Post_Meta();
     135        $settings  = $this->get_settings();
     136
     137        $this->post_product_id              = new Post_Product_ID( $post_meta, $settings );
     138        $this->tag_guard                    = new Tag_Guard( $settings, $this->post_product_id );
     139        $this->contribute_with_google_block = new Contribute_With_Google_Block( $this->context, $this->tag_guard, $settings );
     140        $this->subscribe_with_google_block  = new Subscribe_With_Google_Block( $this->context, $this->tag_guard, $settings );
     141    }
     142
     143    /**
    71144     * Registers functionality through WordPress hooks.
    72145     *
     
    83156
    84157        if ( Feature_Flags::enabled( 'rrmModuleV2' ) && $this->is_connected() ) {
    85             $post_meta       = new Post_Meta();
    86             $publication_id  = $this->get_settings()->get()['publicationID'];
    87             $post_product_id = new Post_Product_ID( $post_meta, $publication_id );
    88             $post_product_id->register();
    89 
    90             $term_meta       = new Term_Meta();
    91             $term_product_id = new Term_Product_ID( $term_meta, $publication_id );
    92             $term_product_id->register();
     158            $this->post_product_id->register();
     159
     160            $admin_post_list = new Admin_Post_List(
     161                $this->get_settings(),
     162                $this->post_product_id
     163            );
     164            $admin_post_list->register();
     165
     166            if ( Block_Support::has_block_support() ) {
     167                $this->contribute_with_google_block->register();
     168                $this->subscribe_with_google_block->register();
     169            }
    93170        }
    94171
     
    411488                        'googlesitekit-data',
    412489                        'googlesitekit-modules',
     490                        'googlesitekit-notifications',
    413491                        'googlesitekit-datastore-site',
    414492                        'googlesitekit-datastore-user',
     
    419497        );
    420498
    421         if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     499        if ( Feature_Flags::enabled( 'rrmModuleV2' ) && Block_Support::has_block_support() ) {
    422500            $assets[] = new Script(
    423                 'googlesitekit-reader-revenue-manager-block-editor',
     501                'blocks-reader-revenue-manager-block-editor-plugin',
    424502                array(
    425                     'src'           => $base_url . 'js/blocks/googlesitekit-reader-revenue-manager-block-editor.js',
     503                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/block-editor-plugin/index.js',
     504                    'dependencies'  => array(
     505                        'googlesitekit-data',
     506                        'googlesitekit-i18n',
     507                        'googlesitekit-modules',
     508                        'googlesitekit-modules-reader-revenue-manager',
     509                    ),
     510                    'execution'     => 'defer',
     511                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     512                )
     513            );
     514
     515            $assets[] = new Stylesheet(
     516                'blocks-reader-revenue-manager-block-editor-plugin-styles',
     517                array(
     518                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/block-editor-plugin/editor-styles.css',
     519                    'dependencies'  => array(),
     520                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     521                )
     522            );
     523
     524            $assets[] = new Script(
     525                'blocks-contribute-with-google',
     526                array(
     527                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/contribute-with-google/index.js',
     528                    'dependencies'  => array(
     529                        'googlesitekit-data',
     530                        'googlesitekit-i18n',
     531                        'googlesitekit-modules',
     532                        'googlesitekit-modules-reader-revenue-manager',
     533                    ),
     534                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     535                    'execution'     => 'defer',
     536                )
     537            );
     538
     539            $assets[] = new Script(
     540                'blocks-subscribe-with-google',
     541                array(
     542                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/subscribe-with-google/index.js',
     543                    'dependencies'  => array(
     544                        'googlesitekit-data',
     545                        'googlesitekit-i18n',
     546                        'googlesitekit-modules',
     547                        'googlesitekit-modules-reader-revenue-manager',
     548                    ),
     549                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     550                    'execution'     => 'defer',
     551                )
     552            );
     553
     554            $assets[] = new Stylesheet(
     555                'blocks-reader-revenue-manager-common-editor-styles',
     556                array(
     557                    'src'           => $base_url . 'js/blocks/reader-revenue-manager/common/editor-styles.css',
    426558                    'dependencies'  => array(),
    427559                    'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ),
     
    460592
    461593        $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) );
    462         $tag->use_guard( new Tag_Guard( $module_settings ) );
     594        $tag->use_guard( $this->tag_guard );
    463595        $tag->use_guard( new Tag_Environment_Type_Guard() );
    464596
     
    467599        }
    468600
     601        $product_id = 'openaccess';
     602
     603        if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     604            $product_id      = $settings['productID'];
     605            $post_product_id = '';
     606
     607            if ( is_singular() ) {
     608                $post_product_id = $this->post_product_id->get( get_the_ID() );
     609
     610                if ( ! empty( $post_product_id ) ) {
     611                    $product_id = $post_product_id;
     612                }
     613            }
     614
     615            // Extract the product ID from the setting, which is in the format
     616            // of `publicationID:productID`.
     617            if ( 'openaccess' !== $product_id ) {
     618                $separator_index = strpos( $product_id, ':' );
     619
     620                if ( false !== $separator_index ) {
     621                    $product_id = substr( $product_id, $separator_index + 1 );
     622                }
     623            }
     624        }
     625
     626        $tag->set_product_id( $product_id );
    469627        $tag->register();
    470628    }
  • google-site-kit/trunk/includes/Modules/Reader_Revenue_Manager/Post_Product_ID.php

    r3238118 r3253534  
    1111namespace Google\Site_Kit\Modules\Reader_Revenue_Manager;
    1212
     13use Google\Site_Kit\Core\Storage\Meta_Setting_Trait;
    1314use Google\Site_Kit\Core\Storage\Post_Meta;
    14 use Google\Site_Kit\Core\Storage\Meta_Setting_Trait;
     15use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings;
    1516
    1617/**
     
    2627
    2728    /**
    28      * Publication ID.
     29     * Settings instance.
    2930     *
    30      * @since 1.145.0
     31     * @since 1.148.0
    3132     *
    32      * @var string
     33     * @var Settings
    3334     */
    34     private string $publication_id;
     35    private $settings;
    3536
    3637    /**
     
    4041     *
    4142     * @param Post_Meta $post_meta Post_Meta instance.
    42      * @param string    $publication_id Publication ID.
     43     * @param Settings  $settings  Reader Revenue Manager module settings instance.
    4344     */
    44     public function __construct( Post_Meta $post_meta, string $publication_id ) {
    45         $this->meta           = $post_meta;
    46         $this->publication_id = $publication_id;
     45    public function __construct( Post_Meta $post_meta, Settings $settings ) {
     46        $this->meta     = $post_meta;
     47        $this->settings = $settings;
    4748    }
    4849
     
    5556     */
    5657    protected function get_meta_key(): string {
    57         return 'googlesitekit_rrm_' . $this->publication_id . ':productID';
     58        $publication_id = $this->settings->get()['publicationID'];
     59        return 'googlesitekit_rrm_' . $publication_id . ':productID';
    5860    }
    5961
  • google-site-kit/trunk/includes/Modules/Reader_Revenue_Manager/Settings.php

    r3229883 r3253534  
    101101     */
    102102    public function get_view_only_keys() {
    103         return array();
     103        $keys = array(
     104            'publicationID',
     105        );
     106
     107        if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     108            $keys = array_merge(
     109                $keys,
     110                array(
     111                    'snippetMode',
     112                    'postTypes',
     113                    'paymentOption',
     114                )
     115            );
     116        }
     117
     118        return $keys;
    104119    }
    105120
  • google-site-kit/trunk/includes/Modules/Reader_Revenue_Manager/Tag_Guard.php

    r3127664 r3253534  
    1111namespace Google\Site_Kit\Modules\Reader_Revenue_Manager;
    1212
     13use Google\Site_Kit\Core\Modules\Module_Settings;
    1314use Google\Site_Kit\Core\Modules\Tags\Module_Tag_Guard;
     15use Google\Site_Kit\Core\Util\Feature_Flags;
     16use Google\Site_Kit\Modules\Reader_Revenue_Manager\Post_Product_ID;
    1417
    1518/**
     
    2326
    2427    /**
     28     * Post_Product_ID instance.
     29     *
     30     * @since 1.148.0
     31     *
     32     * @var Post_Product_ID
     33     */
     34    private $post_product_id;
     35
     36    /**
     37     * Constructor.
     38     *
     39     * @since 1.148.0
     40     *
     41     * @param Module_Settings $settings Module settings instance.
     42     * @param Post_Product_ID $post_product_id Post_Product_ID instance.
     43     */
     44    public function __construct( Module_Settings $settings, $post_product_id ) {
     45        parent::__construct( $settings );
     46
     47        $this->post_product_id = $post_product_id;
     48    }
     49
     50    /**
    2551     * Determines whether the guarded tag can be activated or not.
    2652     *
     
    3157    public function can_activate() {
    3258        $settings = $this->settings->get();
    33         return ! empty( $settings['publicationID'] );
     59
     60        if ( empty( $settings['publicationID'] ) ) {
     61            return false;
     62        }
     63
     64        if ( ! Feature_Flags::enabled( 'rrmModuleV2' ) ) {
     65            return true;
     66        }
     67
     68        if ( is_singular() ) {
     69            return $this->can_activate_for_singular_post();
     70        }
     71
     72        return 'sitewide' === $settings['snippetMode'];
     73    }
     74
     75    /**
     76     * Determines whether the guarded tag can be activated for a singular post or not.
     77     *
     78     * @since 1.148.0
     79     *
     80     * @return bool TRUE if guarded tag can be activated for a singular post, otherwise FALSE.
     81     */
     82    private function can_activate_for_singular_post() {
     83        $post_product_id = $this->post_product_id->get( get_the_ID() );
     84
     85        if ( 'none' === $post_product_id ) {
     86            return false;
     87        }
     88
     89        if ( ! empty( $post_product_id ) ) {
     90            return true;
     91        }
     92
     93        $settings = $this->settings->get();
     94
     95        // If the snippet mode is `per_post` and there is no post product ID,
     96        // we don't want to render the tag.
     97        if ( 'per_post' === $settings['snippetMode'] ) {
     98            return false;
     99        }
     100
     101        // If the snippet mode is `post_types`, we only want to render the tag
     102        // if the current post type is in the list of allowed post types.
     103        if ( 'post_types' === $settings['snippetMode'] ) {
     104            /**
     105             * Filters the post types where Reader Revenue Manager CTAs should appear.
     106             *
     107             * @since 1.140.0
     108             *
     109             * @param array $cta_post_types The array of post types.
     110             */
     111            $cta_post_types = apply_filters(
     112                'googlesitekit_reader_revenue_manager_cta_post_types',
     113                $settings['postTypes']
     114            );
     115
     116            return in_array( get_post_type(), $cta_post_types, true );
     117        }
     118
     119        // Snippet mode is `sitewide` at this point, so we want to render the tag.
     120        return true;
    34121    }
    35122}
  • google-site-kit/trunk/includes/Modules/Reader_Revenue_Manager/Web_Tag.php

    r3191565 r3253534  
    2626    use Method_Proxy_Trait;
    2727    use Tag_With_DNS_Prefetch_Trait;
     28
     29    /**
     30     * Product ID.
     31     *
     32     * @since 1.148.0
     33     *
     34     * @var string
     35     */
     36    private $product_id;
     37
     38    /**
     39     * Sets the product ID.
     40     *
     41     * @since 1.148.0
     42     *
     43     * @param string $product_id Product ID.
     44     */
     45    public function set_product_id( $product_id ) {
     46        $this->product_id = $product_id;
     47    }
    2848
    2949    /**
     
    6181        $locale = str_replace( '_', '-', get_locale() );
    6282
     83        /**
     84         * Filters the Reader Revenue Manager product ID.
     85         *
     86         * @since 1.148.0
     87         *
     88         * @param string $product_id The array of post types.
     89         */
     90        $product_id = apply_filters(
     91            'googlesitekit_reader_revenue_manager_product_id',
     92            $this->product_id
     93        );
     94
    6395        $subscription = array(
    6496            'type'              => 'NewsArticle',
    6597            'isPartOfType'      => array( 'Product' ),
    66             'isPartOfProductId' => $this->tag_id . ':openaccess',
     98            'isPartOfProductId' => $this->tag_id . ':' . $product_id,
    6799            'clientOptions'     => array(
    68100                'theme' => 'light',
     
    87119        wp_add_inline_script( 'google_swgjs', $swg_inline_script, 'before' );
    88120
    89         /**
    90          * Filters the post types where Reader Revenue Manager CTAs should appear.
    91          *
    92          * @since 1.140.0
    93          *
    94          * @param array $cta_post_types The array of post types.
    95          */
    96         $cta_post_types = apply_filters(
    97             'googlesitekit_reader_revenue_manager_cta_post_types',
    98             array( 'post' )
    99         );
    100 
    101         if ( is_singular( $cta_post_types ) ) {
    102             wp_enqueue_script( 'google_swgjs' );
    103         }
     121        wp_enqueue_script( 'google_swgjs' );
    104122    }
    105123
  • google-site-kit/trunk/includes/Modules/Sign_In_With_Google.php

    r3246532 r3253534  
    1717use Google\Site_Kit\Core\Assets\Stylesheet;
    1818use Google\Site_Kit\Core\Authentication\Authentication;
    19 use Google\Site_Kit\Core\Conversion_Tracking\Conversion_Event_Providers\WooCommerce;
    2019use Google\Site_Kit\Core\Modules\Module;
    2120use Google\Site_Kit\Core\Modules\Module_With_Assets;
     
    3433use Google\Site_Kit\Core\Util\BC_Functions;
    3534use Google\Site_Kit\Core\Util\Method_Proxy_Trait;
     35use Google\Site_Kit\Core\Util\Plugin_Status;
    3636use Google\Site_Kit\Modules\Sign_In_With_Google\Authenticator;
    3737use Google\Site_Kit\Modules\Sign_In_With_Google\Authenticator_Interface;
     
    9292
    9393    /**
    94      * WooCommerce instance.
    95      *
    96      * @since 1.146.0
    97      * @var WooCommerce
    98      */
    99     protected $woocommerce;
     94     * Stores the active state of the WooCommerce plugin.
     95     *
     96     * @since 1.148.0
     97     * @var bool Whether WooCommerce is active or not.
     98     */
     99    protected $is_woocommerce_active;
     100
    100101
    101102    /**
     
    118119    ) {
    119120        parent::__construct( $context, $options, $user_options, $authentication, $assets );
     121
    120122        $this->existing_client_id        = new Existing_Client_ID( $this->options );
    121123        $this->sign_in_with_google_block = new Sign_In_With_Google_Block( $this->context );
    122         $this->woocommerce               = new WooCommerce( $this->context );
    123124    }
    124125
     
    368369         *
    369370         * - the Sign in with Google module is connected
    370          * - WooCommerce is active
    371371         * - the user is not logged in
    372372         */
    373         if ( ! $this->is_connected() || ! $this->woocommerce->is_active() || is_user_logged_in() ) {
     373        if ( ! $this->is_connected() || is_user_logged_in() ) {
    374374            return;
    375375        }
     
    389389     */
    390390    private function render_signinwithgoogle() {
    391         $is_wp_login          = is_login();
     391        // `is_login()` isn't available until WP 6.1.
     392        $is_wp_login          = false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] ?? '' ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
    392393        $is_woocommerce       = class_exists( 'woocommerce' );
    393394        $is_woocommerce_login = did_action( 'woocommerce_login_form_start' );
     
    621622     * @since 1.140.0
    622623     *
    623      * @return string TRUE if tag is found, FALSE if not.
     624     * @return string|array
    624625     */
    625626    public function get_content_url() {
    626627        $wp_login_url = wp_login_url();
    627628
    628         if ( $this->woocommerce->is_active() ) {
     629        if ( $this->is_woocommerce_active() ) {
    629630            $wc_login_page_id = wc_get_page_id( 'myaccount' );
    630631            $wc_login_url     = get_permalink( $wc_login_page_id );
     
    781782        }
    782783
    783         $is_woocommerce_active            = $this->woocommerce->is_active();
     784        $is_woocommerce_active            = $this->is_woocommerce_active();
    784785        $woocommerce_registration_enabled = $is_woocommerce_active ? get_option( 'woocommerce_enable_myaccount_registration' ) : null;
    785786
     
    792793        return $modules_data;
    793794    }
     795
     796    /**
     797     * Helper method to determine if the WooCommerce plugin is active.
     798     *
     799     * @since 1.148.0
     800     *
     801     * @return bool True if active, false if not.
     802     */
     803    protected function is_woocommerce_active() {
     804        return class_exists( 'WooCommerce' );
     805    }
    794806}
  • google-site-kit/trunk/includes/Modules/Sign_In_With_Google/Sign_In_With_Google_Block.php

    r3246532 r3253534  
    1212
    1313use Google\Site_Kit\Context;
     14use Google\Site_Kit\Core\Util\Block_Support;
    1415
    1516/**
     
    4647     */
    4748    public static function can_register() {
    48         $wp_version = get_bloginfo( 'version' );
    49         // The block currently requires version WP 5.8 or higher.
    50         return (bool) version_compare( '5.8', $wp_version, '<=' );
     49        return Block_Support::has_block_support();
    5150    }
    5251
  • google-site-kit/trunk/includes/vendor/composer/autoload_classmap.php

    r3246532 r3253534  
    214214    'Google\\Site_Kit\\Core\\Util\\Auto_Updates' => $baseDir . '/Core/Util/Auto_Updates.php',
    215215    'Google\\Site_Kit\\Core\\Util\\BC_Functions' => $baseDir . '/Core/Util/BC_Functions.php',
     216    'Google\\Site_Kit\\Core\\Util\\Block_Support' => $baseDir . '/Core/Util/Block_Support.php',
    216217    'Google\\Site_Kit\\Core\\Util\\Collection_Key_Cap_Filter' => $baseDir . '/Core/Util/Collection_Key_Cap_Filter.php',
    217218    'Google\\Site_Kit\\Core\\Util\\Date' => $baseDir . '/Core/Util/Date.php',
     
    232233    'Google\\Site_Kit\\Core\\Util\\Migration_1_3_0' => $baseDir . '/Core/Util/Migration_1_3_0.php',
    233234    'Google\\Site_Kit\\Core\\Util\\Migration_1_8_1' => $baseDir . '/Core/Util/Migration_1_8_1.php',
     235    'Google\\Site_Kit\\Core\\Util\\Plugin_Status' => $baseDir . '/Core/Util/Plugin_Status.php',
    234236    'Google\\Site_Kit\\Core\\Util\\REST_Entity_Search_Controller' => $baseDir . '/Core/Util/REST_Entity_Search_Controller.php',
    235237    'Google\\Site_Kit\\Core\\Util\\Requires_Javascript_Trait' => $baseDir . '/Core/Util/Requires_Javascript_Trait.php',
     
    271273    'Google\\Site_Kit\\Modules\\Analytics_4\\Advanced_Tracking\\Event_List_Registry' => $baseDir . '/Modules/Analytics_4/Advanced_Tracking/Event_List_Registry.php',
    272274    'Google\\Site_Kit\\Modules\\Analytics_4\\Advanced_Tracking\\Script_Injector' => $baseDir . '/Modules/Analytics_4/Advanced_Tracking/Script_Injector.php',
     275    'Google\\Site_Kit\\Modules\\Analytics_4\\Audience_Settings' => $baseDir . '/Modules/Analytics_4/Audience_Settings.php',
    273276    'Google\\Site_Kit\\Modules\\Analytics_4\\Conversion_Reporting\\Conversion_Reporting_Cron' => $baseDir . '/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_Cron.php',
    274277    'Google\\Site_Kit\\Modules\\Analytics_4\\Conversion_Reporting\\Conversion_Reporting_Events_Sync' => $baseDir . '/Modules/Analytics_4/Conversion_Reporting/Conversion_Reporting_Events_Sync.php',
     
    310313    'Google\\Site_Kit\\Modules\\PageSpeed_Insights\\Settings' => $baseDir . '/Modules/PageSpeed_Insights/Settings.php',
    311314    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager' => $baseDir . '/Modules/Reader_Revenue_Manager.php',
     315    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Admin_Post_List' => $baseDir . '/Modules/Reader_Revenue_Manager/Admin_Post_List.php',
     316    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Contribute_With_Google_Block' => $baseDir . '/Modules/Reader_Revenue_Manager/Contribute_With_Google_Block.php',
    312317    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Post_Product_ID' => $baseDir . '/Modules/Reader_Revenue_Manager/Post_Product_ID.php',
    313318    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Settings' => $baseDir . '/Modules/Reader_Revenue_Manager/Settings.php',
     319    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Subscribe_With_Google_Block' => $baseDir . '/Modules/Reader_Revenue_Manager/Subscribe_With_Google_Block.php',
    314320    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Synchronize_Publication' => $baseDir . '/Modules/Reader_Revenue_Manager/Synchronize_Publication.php',
    315321    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Tag_Guard' => $baseDir . '/Modules/Reader_Revenue_Manager/Tag_Guard.php',
    316322    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Tag_Matchers' => $baseDir . '/Modules/Reader_Revenue_Manager/Tag_Matchers.php',
    317     'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Term_Product_ID' => $baseDir . '/Modules/Reader_Revenue_Manager/Term_Product_ID.php',
    318323    'Google\\Site_Kit\\Modules\\Reader_Revenue_Manager\\Web_Tag' => $baseDir . '/Modules/Reader_Revenue_Manager/Web_Tag.php',
    319324    'Google\\Site_Kit\\Modules\\Search_Console' => $baseDir . '/Modules/Search_Console.php',
  • google-site-kit/trunk/readme.txt

    r3246532 r3253534  
    55Tested up to:      6.7
    66Requires PHP:      7.4
    7 Stable tag:        1.147.0
     7Stable tag:        1.148.0
    88License:           Apache License 2.0
    99License URI:       https://www.apache.org/licenses/LICENSE-2.0
     
    110110== Changelog ==
    111111
    112 = 1.147.0 =
     112= 1.148.0 =
     113
     114**Added**
     115
     116* Unregister the `PartnerAdsPAXWidget` widget. See [#10219](https://github.com/google/site-kit-wp/issues/10219).
    113117
    114118**Enhanced**
    115119
    116 * Retain the publication ID prefix for product IDs when storing them in Reader Revenue Manager settings. See [#10228](https://github.com/google/site-kit-wp/issues/10228).
    117 * Update URL for RRM publication creation to streamline configuration. See [#10166](https://github.com/google/site-kit-wp/issues/10166).
    118 * Update the Analytics zero-data report to include the comparison date range, ensuring we check for data across both the  previous and current date range when determining the gathering data state. See [#10105](https://github.com/google/site-kit-wp/issues/10105).
    119 * Add Reader Revenue Manager introductory overlay notifications. See [#10070](https://github.com/google/site-kit-wp/issues/10070).
    120 * Add Reader Revenue Manager product ID notifications. See [#10069](https://github.com/google/site-kit-wp/issues/10069).
    121 * Add a new "CTA placement" section to the Reader Revenue Manager settings, allowing users to select where CTAs should appear using a dropdown and chip multi-select. See [#10066](https://github.com/google/site-kit-wp/issues/10066).
    122 * Add the learn more link to the lost events banner. See [#10045](https://github.com/google/site-kit-wp/issues/10045).
    123 * Update Ads PAX Application to be aware of supported conversion events. See [#10032](https://github.com/google/site-kit-wp/issues/10032).
     120* Update the Ads setup CTA banner to appear before the Audience Segmentation banner. See [#10290](https://github.com/google/site-kit-wp/issues/10290).
     121* Update the "Learn more" link in the Ads Module Setup banner. See [#10278](https://github.com/google/site-kit-wp/issues/10278).
     122* Show warning when Google for WooCommerce ads account is enabled. See [#10257](https://github.com/google/site-kit-wp/issues/10257).
     123* Add WordPress post list bulk edit setting for Reader Revenue Manager. See [#10248](https://github.com/google/site-kit-wp/issues/10248).
     124* Update the Ads module setup layout. See [#10193](https://github.com/google/site-kit-wp/issues/10193).
     125* Fix bug that could cause console errors when answering tailored metrics questions. See [#10182](https://github.com/google/site-kit-wp/issues/10182).
     126* Add the subtle notification component for existing Google for WooCommerce Ads users. See [#10176](https://github.com/google/site-kit-wp/issues/10176).
     127* Update Ads Setup CTA to add support for WooCommerce plugins. See [#10175](https://github.com/google/site-kit-wp/issues/10175).
     128* Add the `WooCommerceRedirectModal` component. See [#10172](https://github.com/google/site-kit-wp/issues/10172).
     129* Add plugin detection selectors to the core/site datastore. See [#10170](https://github.com/google/site-kit-wp/issues/10170).
     130* Add support for detecting WooCommerce and Google for Woo plugins. See [#10169](https://github.com/google/site-kit-wp/issues/10169).
     131* Handle the error case where the saved product ID is no longer available in the current Reader Revenue Manager publication. See [#10131](https://github.com/google/site-kit-wp/issues/10131).
     132* Display context-aware messaging based on the publication’s monetization mode in the Reader Revenue Manager module's the setup success notification. See [#10068](https://github.com/google/site-kit-wp/issues/10068).
     133* Add a dropdown and associated informational elements to the Reader Revenue Manager setup and settings screens, to aid the selection of a product ID. See [#10065](https://github.com/google/site-kit-wp/issues/10065).
     134* Enable conditional and context-aware placement of the Reader Revenue Manager code snippet. See [#9973](https://github.com/google/site-kit-wp/issues/9973).
     135* Add WordPress editor blocks for Reader Revenue Manager inline CTA buttons. See [#9963](https://github.com/google/site-kit-wp/issues/9963).
     136* Add a panel to the WordPress post editor to users to override the Reader Revenue Manager snippet configuration at the post level. See [#9962](https://github.com/google/site-kit-wp/issues/9962).
     137* When enabling groups, ensure Analytics scope is only requested when needed. See [#9595](https://github.com/google/site-kit-wp/issues/9595).
     138* Rework the Auto Update banner to use the new notification infrastructure. See [#9295](https://github.com/google/site-kit-wp/issues/9295).
    124139
    125140**Changed**
    126141
    127 * Move js dependencies required for backstop tests to their own workspace. See [#10093](https://github.com/google/site-kit-wp/issues/10093).
    128 * Refactor filtering of `(not set)` values in reports to use the new `EmptyFilter` filter type. See [#10059](https://github.com/google/site-kit-wp/issues/10059).
    129 * Implement the Sign in with Google block. See [#10046](https://github.com/google/site-kit-wp/issues/10046).
    130 * Move e2e related dependencies into their own workspace. See [#10013](https://github.com/google/site-kit-wp/issues/10013).
    131 * Refactor report filters so as to be usable for both dimensions and metrics. See [#7634](https://github.com/google/site-kit-wp/issues/7634).
     142* Ensure that client-side filtering of unset Analytics report values filters out empty strings as well as '(not set)', to align with changes to the Analytics Data API. See [#10143](https://github.com/google/site-kit-wp/issues/10143).
    132143
    133144**Fixed**
    134145
    135 * Fix error that could occur on the dashboard when connecting a new Analytics account after connecting a previously-connected account. See [#10187](https://github.com/google/site-kit-wp/issues/10187).
    136 * Fix Key Metrics positioning on large screens. See [#10050](https://github.com/google/site-kit-wp/issues/10050).
    137 * Update description of the new detected events notice. See [#10049](https://github.com/google/site-kit-wp/issues/10049).
    138 * Update language used in tailored metrics questionnaire. See [#10040](https://github.com/google/site-kit-wp/issues/10040).
    139 * Fix incorrect dismiss notification event tracking. See [#10038](https://github.com/google/site-kit-wp/issues/10038).
    140 * Fix duplicate survey triggers issue. See [#10036](https://github.com/google/site-kit-wp/issues/10036).
     146* Fix the console error that appears when the `conversionReporting` flag is enabled and the Analytics module is not connected. See [#10289](https://github.com/google/site-kit-wp/issues/10289).
     147* Add a datastore slice with actions and selectors for retrieving and updating the new set of audience settings. See [#10154](https://github.com/google/site-kit-wp/issues/10154).
     148* Add a new option for audience settings, with REST endpoints to retrieve and update it. See [#10153](https://github.com/google/site-kit-wp/issues/10153).
     149* Hide the new badge in the key metrics settings when they have been configured in the full screen editing for the first time. See [#10083](https://github.com/google/site-kit-wp/issues/10083).
    141150
    142151[See changelog for all versions](https://raw.githubusercontent.com/google/site-kit-wp/main/changelog.txt).
Note: See TracChangeset for help on using the changeset viewer.