Plugin Directory

Changeset 3078938


Ignore:
Timestamp:
04/29/2024 06:38:27 PM (20 months ago)
Author:
cklosows
Message:

Tagging 3.2.12

Location:
easy-digital-downloads
Files:
2 added
32 edited
1 copied

Legend:

Unmodified
Added
Removed
  • easy-digital-downloads/tags/3.2.12/assets/js/edd-admin-settings.js

    r3036940 r3078938  
    1 !function(e){var t={};function n(a){if(t[a])return t[a].exports;var d=t[a]={i:a,l:!1,exports:{}};return e[a].call(d.exports,d,d.exports,n),d.l=!0,d.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var d in e)n.d(a,d,function(t){return e[t]}.bind(null,d));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=318)}({1:function(e,t){e.exports=jQuery},291:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var a=function(){e.post(ajaxurl,{action:"edd_recapture_remote_install"},(function(e){!e.success&&e.data&&confirm(e.data.error)?location.reload():window.location.href="https://recapture.io/register"}))}}).call(this,n(1))},318:function(e,t,n){"use strict";n.r(t),function(e,t){var a=n(291),d=(n(319),{init:function(){this.general(),this.misc(),this.gateways(),this.emails()},general:function(){var t,n=e(".edd-color-picker");n.length&&n.wpColorPicker(),window.formfield="",e(document.body).on("click",".edd_settings_upload_button",(function(n){n.preventDefault();var a=e(this);window.formfield=e(a.data("input")),t||((t=wp.media.frames.file_frame=wp.media({title:a.data("uploader_title"),library:{type:"image"},button:{text:a.data("uploader_button_text")},multiple:!1})).on("menu:render:default",(function(e){e.unset("library-separator"),e.unset("gallery"),e.unset("featured-image"),e.unset("embed"),e.unset("playlist"),e.unset("video-playlist"),e.set({})})),t.on("select",(function(){t.state().get("selection").each((function(e,t){e=e.toJSON(),window.formfield.val(e.url)}))}))),t.open()})),window.formfield=""},misc:function(){var t=e('select[name="edd_settings[download_method]"]'),n=t.parent().parent().next(),a=e('input[name="edd_settings[allow_tracking]"]');"direct"===t.val()&&(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)),t.on("change",(function(){"direct"===e(this).val()?(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)):(n.find("input").prop("disabled",!1),n.css("opacity","1"))})),a.on("change",(function(){e(".allow_tracking.edd-heart").toggleClass("edd-hidden")}))},gateways:function(){e('#edd-payment-gateways input[type="checkbox"]').on("change",(function(){var t=e(this).data("gateway-key"),n=e("#edd_settings\\[default_gateway\\]"),a=n.find('option[value="'+t+'"]');a.prop("disabled",(function(e,t){return!t})),a.prop("selected")&&a.prop("selected",!1),n.trigger("chosen:updated")}))},emails:function(){e("#edd-recapture-connect").on("click",(function(t){t.preventDefault(),e(this).html(edd_vars.wait+' <span class="edd-loading"></span>'),document.body.style.cursor="wait",Object(a.a)()}));var t=e('select[name="edd_settings[email_summary_recipient]"]'),n=t.val(),d=e('textarea[name="edd_settings[email_summary_custom_recipients]"]').parents("tr"),o=e("#edd-send-test-summary-save-changes-notice"),s=e("#edd-send-test-summary"),i=e("#edd-send-test-summary-notice");t.on("change",(function(){d.toggleClass("hidden"),s.removeClass("hidden updated-message"),i.empty(),o.empty(),n!==t.val()&&(s.addClass("hidden"),o.html('<div class="notice notice-info"><p>'+edd_vars.test_email_save_changes+"</p></div>"))})),s.on("click",(function(t){t.preventDefault(),e.ajax({type:"GET",dataType:"json",url:ajaxurl,data:{action:"edd_send_test_email_summary"},beforeSend:function(){i.empty(),s.addClass("updating-message").prop("disabled",!0)},success:function(e){"error"==e.status?i.html('<div class="updated '+e.status+'"><p>'+e.message+"</p></div>"):(s.addClass("updated-message"),setTimeout((function(){s.removeClass("updated-message")}),3e3))}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){s.removeClass("updating-message").prop("disabled",!1)}))}))}});t(document).ready((function(e){d.init()}))}.call(this,n(1),n(1))},319:function(e,t,n){(function(e){e(document).ready((function(t){if("undefined"!=typeof eddPayPalConnectVars){var n=document.getElementById("edd-paypal-commerce-errors");if(n&&n.length){for(;n.firstChild;)n.removeChild(n.firstChild);n.classList.remove("notice notice-error")}if(eddPayPalConnectVars.isConnected){var a=document.getElementById("edd-paypal-commerce-reconnect");a&&a.addEventListener("click",(function(e){e.preventDefault();var n=t("#edd-paypal-commerce-errors");n.empty().removeClass("notice notice-error"),a.classList.add("updating-message"),a.disabled=!0,t.post(ajaxurl,{action:"edd_paypal_commerce_reconnect",_ajax_nonce:a.dataset.nonce}).done((function(){})).fail((function(e){console.log("Reconnect failure",e.data),a.classList.remove("updating-message"),a.disabled=!1,n.html("<p>"+e.data+"</p>").addClass("notice notice-error")}))})),function e(){var n=document.getElementById("edd-paypal-commerce-connect-wrap");n&&t.post(ajaxurl,{action:"edd_paypal_commerce_get_account_info",_ajax_nonce:n.getAttribute("data-nonce")},(function(a){var d="<p>"+eddPayPalConnectVars.defaultError+"</p>";a.success?(d=a.data.account_status,a.data.actions&&a.data.actions.length&&(d+='<p class="edd-paypal-connect-actions">'+a.data.actions.join(" ")+"</p>"),a.data.disconnect_links&&a.data.disconnect_links.length&&(document.getElementById("edd-paypal-disconnect").innerHTML=a.data.disconnect_links.join(" "))):a.data&&a.data.message&&(d=a.data.message),n.innerHTML=d,n.classList.remove("notice-success","notice-warning","notice-error","loading");var o=a.success&&a.data.status?"notice-"+a.data.status:"notice-error";n.classList.add(o);var s,i=document.getElementById("edd-paypal-commerce-get-help");"success"===a.data.status?(i.classList.add("edd-hidden"),i.classList.remove("button","button-secondary")):(i.classList.remove("edd-hidden"),i.classList.add("button","button-secondary")),(s=document.querySelectorAll(".edd-paypal-connect-action"))&&s.length&&s.forEach((function(n){n.addEventListener("click",(function(n){n.preventDefault();var a=n.target;a.disabled=!0,a.classList.add("updating-message");var d=document.getElementById("edd-paypal-commerce-connect-wrap");d&&d.length&&d.remove(),t.post(ajaxurl,{action:a.dataset.action,_ajax_nonce:a.dataset.nonce}).done((function(){e()})).fail((function(e){console.log("Failure",e.data),a.disabled=!1,a.classList.remove("updating-message"),d.html("<p>"+e.data+"</p>").addClass("edd-paypal-actions-error-wrap")}))}))}))}))}()}else{if(document.getElementById("edd-paypal-commerce-link")){var d=document.createElement("script");d.id="edd-paypal-commerce-onboarding",d.src="https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js",document.body.appendChild(d),setTimeout((function(){"undefined"!==window.PAYPAL.apps.Signup&&window.PAYPAL.apps.Signup.render()}),1e3)}window.eddPayPalOnboardingCallback=function(t,n){var a=document.getElementById("edd-paypal-commerce-link"),d=document.getElementById("edd-paypal-commerce-errors");e.post(ajaxurl,{action:"edd_paypal_commerce_get_access_token",auth_code:t,share_id:n,_ajax_nonce:a.dataset.nonce}).done((function(){a.classList.add("disabled","updating-message"),a.disabled=!0})).fail((function(e){d.innerHTML="<p>"+e.data+"</p>",d.classList.add("notice","notice-error");var t=document.getElementById("edd-paypal-commerce-get-help");t.classList.remove("edd-hidden"),t.classList.add("button","button-secondary")}))}}}}))}).call(this,n(1))}});
     1!function(e){var t={};function n(a){if(t[a])return t[a].exports;var d=t[a]={i:a,l:!1,exports:{}};return e[a].call(d.exports,d,d.exports,n),d.l=!0,d.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var d in e)n.d(a,d,function(t){return e[t]}.bind(null,d));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=318)}({1:function(e,t){e.exports=jQuery},291:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var a=function(){var t={action:"edd_recapture_remote_install",nonce:document.getElementById("edd-recapture-connect-nonce").value};e.post(ajaxurl,t,(function(e){!e.success&&e.data&&confirm(e.data.error)?location.reload():window.location.href="https://recapture.io/register"}))}}).call(this,n(1))},318:function(e,t,n){"use strict";n.r(t),function(e,t){var a=n(291),d=(n(319),{init:function(){this.general(),this.misc(),this.gateways(),this.emails()},general:function(){var t,n=e(".edd-color-picker");n.length&&n.wpColorPicker(),window.formfield="",e(document.body).on("click",".edd_settings_upload_button",(function(n){n.preventDefault();var a=e(this);window.formfield=e(a.data("input")),t||((t=wp.media.frames.file_frame=wp.media({title:a.data("uploader_title"),library:{type:"image"},button:{text:a.data("uploader_button_text")},multiple:!1})).on("menu:render:default",(function(e){e.unset("library-separator"),e.unset("gallery"),e.unset("featured-image"),e.unset("embed"),e.unset("playlist"),e.unset("video-playlist"),e.set({})})),t.on("select",(function(){t.state().get("selection").each((function(e,t){e=e.toJSON(),window.formfield.val(e.url)}))}))),t.open()})),window.formfield=""},misc:function(){var t=e('select[name="edd_settings[download_method]"]'),n=t.parent().parent().next(),a=e('input[name="edd_settings[allow_tracking]"]');"direct"===t.val()&&(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)),t.on("change",(function(){"direct"===e(this).val()?(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)):(n.find("input").prop("disabled",!1),n.css("opacity","1"))})),a.on("change",(function(){e(".allow_tracking.edd-heart").toggleClass("edd-hidden")}))},gateways:function(){e('#edd-payment-gateways input[type="checkbox"]').on("change",(function(){var t=e(this).data("gateway-key"),n=e("#edd_settings\\[default_gateway\\]"),a=n.find('option[value="'+t+'"]');a.prop("disabled",(function(e,t){return!t})),a.prop("selected")&&a.prop("selected",!1),n.trigger("chosen:updated")}))},emails:function(){e("#edd-recapture-connect").on("click",(function(t){t.preventDefault(),e(this).html(edd_vars.wait+' <span class="edd-loading"></span>'),document.body.style.cursor="wait",Object(a.a)()}));var t=e('select[name="edd_settings[email_summary_recipient]"]'),n=t.val(),d=e('textarea[name="edd_settings[email_summary_custom_recipients]"]').parents("tr"),o=e("#edd-send-test-summary-save-changes-notice"),s=e("#edd-send-test-summary"),c=e("#edd-send-test-summary-notice");t.on("change",(function(){d.toggleClass("hidden"),s.removeClass("hidden updated-message"),c.empty(),o.empty(),n!==t.val()&&(s.addClass("hidden"),o.html('<div class="notice notice-info"><p>'+edd_vars.test_email_save_changes+"</p></div>"))})),s.on("click",(function(t){t.preventDefault(),e.ajax({type:"GET",dataType:"json",url:ajaxurl,data:{action:"edd_send_test_email_summary"},beforeSend:function(){c.empty(),s.addClass("updating-message").prop("disabled",!0)},success:function(e){"error"==e.status?c.html('<div class="updated '+e.status+'"><p>'+e.message+"</p></div>"):(s.addClass("updated-message"),setTimeout((function(){s.removeClass("updated-message")}),3e3))}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){s.removeClass("updating-message").prop("disabled",!1)}))}))}});t(document).ready((function(e){d.init()}))}.call(this,n(1),n(1))},319:function(e,t,n){(function(e){e(document).ready((function(t){if("undefined"!=typeof eddPayPalConnectVars){var n=document.getElementById("edd-paypal-commerce-errors");if(n&&n.length){for(;n.firstChild;)n.removeChild(n.firstChild);n.classList.remove("notice notice-error")}if(eddPayPalConnectVars.isConnected){var a=document.getElementById("edd-paypal-commerce-reconnect");a&&a.addEventListener("click",(function(e){e.preventDefault();var n=t("#edd-paypal-commerce-errors");n.empty().removeClass("notice notice-error"),a.classList.add("updating-message"),a.disabled=!0,t.post(ajaxurl,{action:"edd_paypal_commerce_reconnect",_ajax_nonce:a.dataset.nonce}).done((function(){})).fail((function(e){console.log("Reconnect failure",e.data),a.classList.remove("updating-message"),a.disabled=!1,n.html("<p>"+e.data+"</p>").addClass("notice notice-error")}))})),function e(){var n=document.getElementById("edd-paypal-commerce-connect-wrap");n&&t.post(ajaxurl,{action:"edd_paypal_commerce_get_account_info",_ajax_nonce:n.getAttribute("data-nonce")},(function(a){var d="<p>"+eddPayPalConnectVars.defaultError+"</p>";a.success?(d=a.data.account_status,a.data.actions&&a.data.actions.length&&(d+='<p class="edd-paypal-connect-actions">'+a.data.actions.join(" ")+"</p>"),a.data.disconnect_links&&a.data.disconnect_links.length&&(document.getElementById("edd-paypal-disconnect").innerHTML=a.data.disconnect_links.join(" "))):a.data&&a.data.message&&(d=a.data.message),n.innerHTML=d,n.classList.remove("notice-success","notice-warning","notice-error","loading");var o=a.success&&a.data.status?"notice-"+a.data.status:"notice-error";n.classList.add(o);var s,c=document.getElementById("edd-paypal-commerce-get-help");"success"===a.data.status?(c.classList.add("edd-hidden"),c.classList.remove("button","button-secondary")):(c.classList.remove("edd-hidden"),c.classList.add("button","button-secondary")),(s=document.querySelectorAll(".edd-paypal-connect-action"))&&s.length&&s.forEach((function(n){n.addEventListener("click",(function(n){n.preventDefault();var a=n.target;a.disabled=!0,a.classList.add("updating-message");var d=document.getElementById("edd-paypal-commerce-connect-wrap");d&&d.length&&d.remove(),t.post(ajaxurl,{action:a.dataset.action,_ajax_nonce:a.dataset.nonce}).done((function(){e()})).fail((function(e){console.log("Failure",e.data),a.disabled=!1,a.classList.remove("updating-message"),d.html("<p>"+e.data+"</p>").addClass("edd-paypal-actions-error-wrap")}))}))}))}))}()}else{if(document.getElementById("edd-paypal-commerce-link")){var d=document.createElement("script");d.id="edd-paypal-commerce-onboarding",d.src="https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js",document.body.appendChild(d),setTimeout((function(){"undefined"!==window.PAYPAL.apps.Signup&&window.PAYPAL.apps.Signup.render()}),1e3)}window.eddPayPalOnboardingCallback=function(t,n){var a=document.getElementById("edd-paypal-commerce-link"),d=document.getElementById("edd-paypal-commerce-errors");e.post(ajaxurl,{action:"edd_paypal_commerce_get_access_token",auth_code:t,share_id:n,_ajax_nonce:a.dataset.nonce}).done((function(){a.classList.add("disabled","updating-message"),a.disabled=!0})).fail((function(e){d.innerHTML="<p>"+e.data+"</p>",d.classList.add("notice","notice-error");var t=document.getElementById("edd-paypal-commerce-get-help");t.classList.remove("edd-hidden"),t.classList.add("button","button-secondary")}))}}}}))}).call(this,n(1))}});
  • easy-digital-downloads/tags/3.2.12/easy-digital-downloads.php

    r3061317 r3078938  
    66 * Author: Easy Digital Downloads
    77 * Author URI: https://easydigitaldownloads.com
    8  * Version: 3.2.11
     8 * Version: 3.2.12
    99 * Text Domain: easy-digital-downloads
    1010 * Domain Path: /languages
     
    2828 * @category Core
    2929 * @author Easy Digital Downloads
    30  * @version 3.2.11
     30 * @version 3.2.12
    3131 */
    3232
  • easy-digital-downloads/tags/3.2.12/i18n/states-in.php

    r2940530 r3078938  
    3636    'AN' => __( 'Andaman and Nicobar Islands', 'easy-digital-downloads' ),
    3737    'CH' => __( 'Chandigarh', 'easy-digital-downloads' ),
    38     'DN' => __( 'Dadar and Nagar Haveli', 'easy-digital-downloads' ),
     38    'DN' => __( 'Dadra and Nagar Haveli', 'easy-digital-downloads' ),
    3939    'DD' => __( 'Daman and Diu', 'easy-digital-downloads' ),
    4040    'DL' => __( 'Delhi', 'easy-digital-downloads' ),
  • easy-digital-downloads/tags/3.2.12/includes/admin/reporting/export/class-batch-export.php

    r2990247 r3078938  
    134134    public function __construct( $_step = 1 ) {
    135135
    136         $upload_dir     = wp_upload_dir();
     136        $exports_dir    = edd_get_exports_dir();
    137137        $this->filetype = '.csv';
    138         $this->filename = 'edd-' . $this->export_type . $this->filetype;
    139         $this->file     = trailingslashit( $upload_dir['basedir'] ) . $this->filename;
    140 
    141         if ( ! is_writeable( $upload_dir['basedir'] ) ) {
     138        $file_date      = date( 'Y-m-d' );
     139        $file_hash      = substr( wp_hash( 'edd-' . $this->export_type . '-export', 'nonce' ), 0, 8 );
     140        $this->filename = sprintf(
     141            'edd-%1$s-export-%2$s-%3$s%4$s',
     142            $this->export_type,
     143            $file_date,
     144            $file_hash,
     145            $this->filetype
     146        );
     147        $this->file     = trailingslashit( $exports_dir ) . $this->filename;
     148
     149        if ( ! is_writeable( $exports_dir ) ) {
    142150            $this->is_writable = false;
    143151        }
  • easy-digital-downloads/tags/3.2.12/includes/admin/reporting/export/export-actions.php

    r2964278 r3078938  
    264264
    265265/**
    266  * Register the taxed orders report batch exporter.
     266 * Register the taxed customers report batch exporter.
    267267 *
    268268 * @since 3.0
  • easy-digital-downloads/tags/3.2.12/includes/admin/settings/register-settings.php

    r3036940 r3078938  
    18121812        <?php if ( current_user_can( 'install_plugins' ) ) : ?>
    18131813        <p>
    1814             <button type="button" id="edd-recapture-connect" class="button button-primary"><?php esc_html_e( 'Connect with Recapture', 'easy-digital-downloads' ); ?>
     1814            <button type="button" id="edd-recapture-connect" class="button button-primary">
     1815                <?php esc_html_e( 'Connect with Recapture', 'easy-digital-downloads' ); ?>
    18151816            </button>
     1817            <?php wp_nonce_field( 'edd-recapture-connect', 'edd-recapture-connect-nonce' ); ?>
    18161818        </p>
    18171819    <?php endif; ?>
  • easy-digital-downloads/tags/3.2.12/includes/class-easy-digital-downloads.php

    r3061317 r3078938  
    371371        // Plugin version.
    372372        if ( ! defined( 'EDD_VERSION' ) ) {
    373             define( 'EDD_VERSION', '3.2.11' );
     373            define( 'EDD_VERSION', '3.2.12' );
    374374        }
    375375
     
    730730        require_once EDD_PLUGIN_DIR . 'includes/emails/class-edd-email-tags.php';
    731731        require_once EDD_PLUGIN_DIR . 'includes/emails/functions.php';
     732        require_once EDD_PLUGIN_DIR . 'includes/emails/recapture.php';
    732733        require_once EDD_PLUGIN_DIR . 'includes/emails/tags.php';
    733734        require_once EDD_PLUGIN_DIR . 'includes/emails/tags-inserter.php';
  • easy-digital-downloads/tags/3.2.12/includes/class-edd-cron.php

    r2756001 r3078938  
    3030        add_filter( 'cron_schedules', array( $this, 'add_schedules'   ) );
    3131        add_action( 'wp',             array( $this, 'schedule_events' ) );
     32        add_action( 'edd_daily_scheduled_events', array( $this, 'exports_cleanup' ) );
    3233    }
    3334
     
    8788    }
    8889
     90    /**
     91     * Cleanup after ourselves during exports.
     92     *
     93     * @since 3.2.12
     94     *
     95     * @return void
     96     */
     97    public function exports_cleanup() {
     98        if ( class_exists( 'EDD\Cron\Loader' ) ) {
     99            return;
     100        }
     101
     102        $exports_dir = edd_get_exports_dir();
     103        $files       = scandir( $exports_dir );
     104
     105        if ( ! empty( $files ) ) {
     106            foreach ( $files as $file ) {
     107                if ( '.' === $file[0] ) {
     108                    continue;
     109                }
     110
     111                $full_path = trailingslashit( $exports_dir ) . $file;
     112
     113                if ( is_dir( $full_path ) || ( 'index.php' === basename( $full_path ) || 'index.html' === basename( $full_path ) ) ) {
     114                    continue;
     115                }
     116
     117                $modified_time = filemtime( $full_path );
     118
     119                // If the file hasn't been modified in the last 2 hours, delete it.
     120                if ( time() - $modified_time > HOUR_IN_SECONDS * 2 ) {
     121                    unlink( $full_path );
     122                }
     123            }
     124        }
     125
     126        // Also remove any older exports in the uploads directory.
     127        $uploads_dir = wp_upload_dir();
     128        $files       = scandir( $uploads_dir['basedir'] );
     129
     130        if ( ! empty( $files ) ) {
     131            foreach ( $files as $file ) {
     132                if ( '.' === $file[0] ) {
     133                    continue;
     134                }
     135
     136                $full_path = trailingslashit( $uploads_dir['basedir'] ) . $file;
     137
     138                if ( is_dir( $full_path ) || ( 'index.php' === basename( $full_path ) || 'index.html' === basename( $full_path ) ) ) {
     139                    continue;
     140                }
     141
     142                // If the filename doesn't start with `edd-` don't delete it.
     143                if ( false === strpos( $file, 'edd-' ) ) {
     144                    continue;
     145                }
     146
     147                // If the file is not a .csv, don't delete it.
     148                if ( '.csv' !== substr( $file, -4 ) ) {
     149                    continue;
     150                }
     151
     152                $modified_time = filemtime( $full_path );
     153
     154                // If the file hasn't been modified in the last 2 hours, delete it.
     155                if ( time() - $modified_time > HOUR_IN_SECONDS * 2 ) {
     156                    unlink( $full_path );
     157                }
     158            }
     159        }
     160    }
    89161}
    90 $edd_cron = new EDD_Cron;
     162$edd_cron = new EDD_Cron();
  • easy-digital-downloads/tags/3.2.12/includes/emails/functions.php

    r2973984 r3078938  
    4747    return (bool) apply_filters( 'edd_admin_notices_disabled', $ret, $payment_id );
    4848}
    49 
    50 /**
    51  * Handle installation and connection for Recapture via ajax
    52  *
    53  * @since 2.10.2
    54  */
    55 function edd_recapture_remote_install_handler () {
    56 
    57     if ( ! current_user_can( 'manage_shop_settings' ) || ! current_user_can( 'install_plugins' ) ) {
    58         wp_send_json_error( array(
    59             'error' => __( 'You do not have permission to do this.', 'easy-digital-downloads' )
    60         ) );
    61     }
    62 
    63     include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
    64     include_once ABSPATH . 'wp-admin/includes/file.php';
    65     include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
    66 
    67     $plugins = get_plugins();
    68 
    69     if( ! array_key_exists( 'recapture-for-edd/recapture.php', $plugins ) ) {
    70 
    71         /*
    72         * Use the WordPress Plugins API to get the plugin download link.
    73         */
    74         $api = plugins_api( 'plugin_information', array(
    75             'slug' => 'recapture-for-edd',
    76         ) );
    77 
    78         if ( is_wp_error( $api ) ) {
    79             wp_send_json_error( array(
    80                 'error' => $api->get_error_message(),
    81                 'debug' => $api
    82             ) );
    83         }
    84 
    85         /*
    86         * Use the AJAX Upgrader skin to quietly install the plugin.
    87         */
    88         $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() );
    89         $install = $upgrader->install( $api->download_link );
    90         if ( is_wp_error( $install ) ) {
    91             wp_send_json_error( array(
    92                 'error' => $install->get_error_message(),
    93                 'debug' => $api
    94             ) );
    95         }
    96 
    97         $activated = activate_plugin( $upgrader->plugin_info() );
    98 
    99     } else {
    100 
    101         $activated = activate_plugin( 'recapture-for-edd/recapture.php' );
    102 
    103     }
    104 
    105     /*
    106     * Final check to see if Recapture is available.
    107     */
    108     if ( is_wp_error( $activated ) ) {
    109         wp_send_json_error( array(
    110             'error' => __( 'Something went wrong. Recapture for EDD was not installed correctly.', 'easy-digital-downloads' )
    111         ) );
    112     }
    113 
    114     wp_send_json_success();
    115 }
    116 add_action( 'wp_ajax_edd_recapture_remote_install', 'edd_recapture_remote_install_handler' );
    117 
    118 /**
    119  * Maybe adds a notice to abandoned payments if Recapture isn't installed.
    120  *
    121  * @since 2.10.2
    122  *
    123  * @param int $payment_id The ID of the abandoned payment, for which a Recapture notice is being thrown.
    124  */
    125 function maybe_add_recapture_notice_to_abandoned_payment( $payment_id ) {
    126 
    127     if ( ! class_exists( 'Recapture' )
    128         && 'abandoned' === edd_get_payment_status( $payment_id )
    129         && ! get_user_meta( get_current_user_id(), '_edd_try_recapture_dismissed', true )
    130     ) {
    131         ?>
    132         <div class="notice notice-warning recapture-notice">
    133             <p>
    134                 <?php
    135                 echo wp_kses_post(
    136                     sprintf(
    137                         /* Translators: %1$s - <strong> tag, %2$s - </strong> tag, %3$s - <a> tag, %4$s - </a> tag */
    138                         __( '%1$sRecover abandoned purchases like this one.%2$s %3$sTry Recapture for free%4$s.', 'easy-digital-downloads' ),
    139                         '<strong>',
    140                         '</strong>',
    141                         '<a href="https://recapture.io/abandoned-carts-easy-digital-downloads" rel="noopener" target="_blank">',
    142                         '</a>'
    143                     )
    144                 );
    145                 ?>
    146             </p>
    147             <?php
    148             echo wp_kses_post(
    149                 sprintf(
    150                     /* Translators: %1$s - Opening anchor tag, %2$s - The url to dismiss the ajax notice, %3$s - Complete the opening of the anchor tag, %4$s - Open span tag, %4$s - Close span tag */
    151                     __( '%1$s %2$s %3$s %4$s Dismiss this notice. %5$s', 'easy-digital-downloads' ),
    152                     '<a href="',
    153                     esc_url(
    154                         wp_nonce_url(
    155                             add_query_arg(
    156                                 array(
    157                                     'edd_action' => 'dismiss_notices',
    158                                     'edd_notice' => 'try_recapture',
    159                                 )
    160                             ),
    161                             'edd_notice_nonce'
    162                         )
    163                     ),
    164                     '" type="button" class="notice-dismiss">',
    165                     '<span class="screen-reader-text">',
    166                     '</span>
    167                     </a>'
    168                 )
    169             );
    170             ?>
    171         </div>
    172         <?php
    173     }
    174 }
    175 add_action( 'edd_view_order_details_before', 'maybe_add_recapture_notice_to_abandoned_payment' );
  • easy-digital-downloads/tags/3.2.12/includes/gateways/stripe/includes/webhooks.php

    r2973984 r3078938  
    7373                // If this was completely refunded, set the status to refunded.
    7474                if ( $charge->refunded ) {
    75                     $refund_id = edd_refund_order( $order->id );
    76                     if ( $refund_id ) {
     75                    $refund_id = false;
     76                    if ( edd_is_order_refundable( $order->id ) ) {
     77                        $refund_id = edd_refund_order( $order->id );
     78                    } else {
     79                        $refunds = edd_get_orders(
     80                            array(
     81                                'type'   => 'refund',
     82                                'parent' => $order->id,
     83                            )
     84                        );
     85                        if ( ! empty( $refunds ) ) {
     86                            $refund_id = $refunds[0]->id;
     87                        }
     88                    }
     89                    if ( $refund_id && ! is_wp_error( $refund_id ) ) {
    7790                        edd_add_order_transaction(
    7891                            array(
  • easy-digital-downloads/tags/3.2.12/includes/misc-functions.php

    r2964278 r3078938  
    860860
    861861/**
     862 * Retrieve the absolute path to the file export directory without the trailing slash.
     863 *
     864 * @since 3.2.12
     865 *
     866 * @return string $path Absolute path to the EDD export directory
     867 */
     868function edd_get_exports_dir() {
     869    $wp_upload_dir = wp_upload_dir();
     870    $edd_dir       = edd_get_uploads_base_dir();
     871    $path          = $wp_upload_dir['basedir'] . '/' . $edd_dir . '/exports';
     872    $exports_dir   = apply_filters( 'edd_get_exports_dir', $path );
     873
     874    // Make sure the directory exists.
     875    wp_mkdir_p( $exports_dir );
     876
     877    // Return, possibly filtered.
     878    return $exports_dir;
     879}
     880
     881/**
    862882 * Retrieve the URL to the file upload directory without the trailing slash
    863883 *
  • easy-digital-downloads/tags/3.2.12/includes/orders/classes/class-refund-validator.php

    r2756001 r3078938  
    388388                         * %3$s - maximum amount allowed for refund
    389389                         */
    390                         __( 'The maximum refund %s for the adjustment "%s" is %s.', 'easy-digital-downloads' ),
     390                        __( 'The maximum refund %1$s for the adjustment "%2$s" is %3$s.', 'easy-digital-downloads' ),
    391391                        $column_name,
    392392                        $original_item->description,
  • easy-digital-downloads/tags/3.2.12/languages/easy-digital-downloads.pot

    r3061317 r3078938  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Easy Digital Downloads 3.2.11\n"
     5"Project-Id-Version: Easy Digital Downloads 3.2.12\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/easy-digital-downloads\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2024-03-29T18:25:38+00:00\n"
     12"POT-Creation-Date: 2024-04-29T18:21:19+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.10.0\n"
     
    25142514
    25152515#: i18n/states-in.php:38
    2516 msgid "Dadar and Nagar Haveli"
     2516msgid "Dadra and Nagar Haveli"
    25172517msgstr ""
    25182518
     
    57735773#: includes/admin/reporting/class-export.php:188
    57745774#: includes/admin/reporting/class-gateway-error-logs-list-table.php:109
    5775 #: includes/admin/reporting/export/class-batch-export.php:158
     5775#: includes/admin/reporting/export/class-batch-export.php:166
    57765776#: includes/admin/reporting/export/export-actions.php:24
    57775777#: includes/admin/tools.php:1161
     
    63596359#: includes/admin/customers/class-customer-table.php:127
    63606360#: includes/admin/payments/orders.php:1084
    6361 #: includes/misc-functions.php:1436
     6361#: includes/misc-functions.php:1456
    63626362#: includes/payments/functions.php:537
    63636363msgid "Pending"
     
    63706370#: includes/admin/discounts/edit-discount.php:287
    63716371#: includes/class-edd-discount.php:705
    6372 #: includes/misc-functions.php:1431
     6372#: includes/misc-functions.php:1451
    63736373#: src/Admin/Promos/About.php:865
    63746374msgid "Active"
     
    65536553#: includes/admin/discounts/edit-discount.php:288
    65546554#: includes/class-edd-discount.php:699
    6555 #: includes/misc-functions.php:1432
     6555#: includes/misc-functions.php:1452
    65566556#: src/Admin/Promos/About.php:871
    65576557msgid "Inactive"
     
    66236623#: includes/api/class-edd-api.php:1978
    66246624#: includes/class-edd-license-handler.php:478
     6625#: includes/emails/recapture.php:24
    66256626#: includes/user-functions.php:958
    66266627msgid "Nonce verification failed."
     
    77937794
    77947795#: includes/admin/downloads/metabox.php:522
    7795 #: src/Admin/Onboarding/Steps/Products.php:114
     7796#: src/Admin/Onboarding/Steps/Products.php:120
    77967797msgid "Add New Price"
    77977798msgstr ""
     
    78117812msgstr ""
    78127813
    7813 #. translators: %1$s is the remove link, %2$s is the screen reader text.
    78147814#: includes/admin/downloads/metabox.php:589
    78157815#: includes/admin/downloads/metabox.php:847
     
    94049404
    94059405#: includes/admin/reporting/class-export.php:188
    9406 #: includes/admin/reporting/export/class-batch-export.php:158
     9406#: includes/admin/reporting/export/class-batch-export.php:166
    94079407#: includes/admin/tools/class-edd-tools-recount-customer-stats.php:114
    94089408#: includes/admin/tools/class-edd-tools-recount-store-earnings.php:157
     
    1047010470msgstr ""
    1047110471
    10472 #: includes/admin/settings/register-settings.php:1814
     10472#: includes/admin/settings/register-settings.php:1815
    1047310473msgid "Connect with Recapture"
    1047410474msgstr ""
    1047510475
    1047610476#. translators: Tax rate country code
    10477 #: includes/admin/settings/register-settings.php:1847
     10477#: includes/admin/settings/register-settings.php:1849
    1047810478msgid "Duplicate tax rates are not allowed. Please deactivate the existing %s tax rate before adding or activating another."
    1047910479msgstr ""
    1048010480
    10481 #: includes/admin/settings/register-settings.php:1848
     10481#: includes/admin/settings/register-settings.php:1850
    1048210482msgid "Please select a country."
    1048310483msgstr ""
    1048410484
    10485 #: includes/admin/settings/register-settings.php:1849
     10485#: includes/admin/settings/register-settings.php:1851
    1048610486msgid "Please enter a tax rate greater than 0."
    1048710487msgstr ""
    1048810488
    10489 #: includes/admin/settings/register-settings.php:1850
     10489#: includes/admin/settings/register-settings.php:1852
    1049010490msgid "Are you sure you want to add a 0% tax rate?"
    1049110491msgstr ""
     
    1085710857
    1085810858#: includes/admin/tools.php:915
    10859 #: src/Admin/Onboarding/Steps/Products.php:51
     10859#: src/Admin/Onboarding/Steps/Products.php:57
    1086010860msgid "Product Image"
    1086110861msgstr ""
     
    1228912289msgstr ""
    1229012290
    12291 #. Translators: %s is the name of the download that was added to the cart.
    1229212291#: includes/cart/template.php:311
    1229312292msgid "Checkout."
     
    1314613145msgstr ""
    1314713146
    13148 #: includes/class-edd-cron.php:46
     13147#: includes/class-edd-cron.php:47
    1314913148msgid "Once Weekly"
    1315013149msgstr ""
     
    1316113160#: includes/class-edd-discount.php:696
    1316213161#: includes/gateways/stripe/includes/template-functions.php:377
    13163 #: includes/misc-functions.php:1433
     13162#: includes/misc-functions.php:1453
    1316413163msgid "Expired"
    1316513164msgstr ""
     
    1370413703#: includes/deprecated-functions.php:1591
    1370513704#: includes/deprecated-functions.php:1667
    13706 #: includes/emails/functions.php:59
     13705#: includes/emails/recapture.php:16
    1370713706msgid "You do not have permission to do this."
    1370813707msgstr ""
     
    1372013719#. Translators: %1$s - Opening anchor tag, %2$s - The url to dismiss the ajax notice, %3$s - Complete the opening of the anchor tag, %4$s - Open span tag, %4$s - Close span tag
    1372113720#: includes/deprecated-functions.php:1499
    13722 #: includes/emails/functions.php:151
     13721#: includes/emails/recapture.php:126
    1372313722msgid "%1$s %2$s %3$s %4$s Dismiss this notice. %5$s"
    1372413723msgstr ""
     
    1387913878msgstr ""
    1388013879
    13881 #: includes/emails/functions.php:110
     13880#: includes/emails/recapture.php:84
    1388213881msgid "Something went wrong. Recapture for EDD was not installed correctly."
    1388313882msgstr ""
    1388413883
    1388513884#. Translators: %1$s - <strong> tag, %2$s - </strong> tag, %3$s - <a> tag, %4$s - </a> tag
    13886 #: includes/emails/functions.php:138
     13885#: includes/emails/recapture.php:113
    1388713886msgid "%1$sRecover abandoned purchases like this one.%2$s %3$sTry Recapture for free%4$s."
    1388813887msgstr ""
     
    1592415923
    1592515924#. Translators: The charge ID from Stripe that is being refunded.
    15926 #: includes/gateways/stripe/includes/webhooks.php:92
     15925#: includes/gateways/stripe/includes/webhooks.php:105
    1592715926msgid "Charge %s has been fully refunded in Stripe."
    1592815927msgstr ""
    1592915928
    1593015929#. Translators: The charge ID from Stripe that is being partially refunded.
    15931 #: includes/gateways/stripe/includes/webhooks.php:96
     15930#: includes/gateways/stripe/includes/webhooks.php:109
    1593215931msgid "Charge %s partially refunded in Stripe."
    1593315932msgstr ""
    1593415933
    1593515934#. translators: %s Stripe Radar review opening reason.
    15936 #: includes/gateways/stripe/includes/webhooks.php:142
     15935#: includes/gateways/stripe/includes/webhooks.php:155
    1593715936msgid "Stripe Radar review opened with a reason of %s."
    1593815937msgstr ""
    1593915938
    1594015939#. translators: %s Stripe Radar review closing reason.
    15941 #: includes/gateways/stripe/includes/webhooks.php:187
     15940#: includes/gateways/stripe/includes/webhooks.php:200
    1594215941msgid "Stripe Radar review closed with a reason of %s."
    1594315942msgstr ""
     
    1599015989msgstr ""
    1599115990
    15992 #: includes/misc-functions.php:1217
     15991#: includes/misc-functions.php:1237
    1599315992msgid "Store Bot"
    1599415993msgstr ""
    1599515994
    15996 #: includes/misc-functions.php:1437
     15995#: includes/misc-functions.php:1457
    1599715996msgid "Verified"
    1599815997msgstr ""
    1599915998
    16000 #: includes/misc-functions.php:1438
     15999#: includes/misc-functions.php:1458
    1600116000msgid "Spam"
    1600216001msgstr ""
    1600316002
    16004 #: includes/misc-functions.php:1439
     16003#: includes/misc-functions.php:1459
    1600516004msgid "Deleted"
    1600616005msgstr ""
    1600716006
    16008 #: includes/misc-functions.php:1440
     16007#: includes/misc-functions.php:1460
    1600916008msgid "Cancelled"
    1601016009msgstr ""
    1601116010
    16012 #: includes/misc-functions.php:1554
     16011#: includes/misc-functions.php:1574
    1601316012msgid "Please define default parameters in the form of an array."
    1601416013msgstr ""
    1601516014
    16016 #: includes/misc-functions.php:1559
     16015#: includes/misc-functions.php:1579
    1601716016msgid "Please define an SVG icon filename."
    1601816017msgstr ""
     
    1604416043#. Translators: %1$s - type of amount being refunded (subtotal, tax, or total); %1$s - adjustment description; %3$s - maximum amount allowed for refund
    1604516044#: includes/orders/classes/class-refund-validator.php:390
    16046 msgid "The maximum refund %s for the adjustment \"%s\" is %s."
     16045msgid "The maximum refund %1$s for the adjustment \"%2$s\" is %3$s."
    1604716046msgstr ""
    1604816047
     
    1762517624msgstr ""
    1762617625
    17627 #. translators: %s is the name of the extension.
    1762817626#: src/Admin/Extensions/Legacy.php:45
    1762917627msgid "%s is now part of EDD!"
    1763017628msgstr ""
    1763117629
    17632 #. translators: %s is the name of the extension.
    1763317630#: src/Admin/Extensions/Legacy.php:50
    1763417631msgid "The functionality of %s has been merged into Easy Digital Downloads. It has been deactivated and you can safely delete the %s plugin."
     
    1769517692msgstr ""
    1769617693
    17697 #: src/Admin/Onboarding/Steps/Products.php:32
     17694#: src/Admin/Onboarding/Steps/Products.php:38
    1769817695msgid "Product details"
    1769917696msgstr ""
    1770017697
    17701 #: src/Admin/Onboarding/Steps/Products.php:37
     17698#: src/Admin/Onboarding/Steps/Products.php:43
    1770217699msgid "We'll get started with some basic information. Don't worry, you can add more details later. When you're finished here, the product will be saved as a draft so you can finish up later."
    1770317700msgstr ""
    1770417701
    17705 #: src/Admin/Onboarding/Steps/Products.php:45
     17702#: src/Admin/Onboarding/Steps/Products.php:51
    1770617703msgid "Product Name"
    1770717704msgstr ""
    1770817705
    17709 #: src/Admin/Onboarding/Steps/Products.php:57
     17706#: src/Admin/Onboarding/Steps/Products.php:63
    1771017707msgid "Set image"
    1771117708msgstr ""
    1771217709
    17713 #: src/Admin/Onboarding/Steps/Products.php:57
     17710#: src/Admin/Onboarding/Steps/Products.php:63
    1771417711msgid "Set Image"
    1771517712msgstr ""
    1771617713
    17717 #: src/Admin/Onboarding/Steps/Products.php:63
     17714#: src/Admin/Onboarding/Steps/Products.php:69
    1771817715msgid "Pricing Options"
    1771917716msgstr ""
    1772017717
    17721 #: src/Admin/Onboarding/Steps/Products.php:67
     17718#: src/Admin/Onboarding/Steps/Products.php:73
    1772217719msgid "Single price"
    1772317720msgstr ""
    1772417721
    17725 #: src/Admin/Onboarding/Steps/Products.php:68
     17722#: src/Admin/Onboarding/Steps/Products.php:74
    1772617723msgid "Variable price"
    1772717724msgstr ""
    1772817725
    17729 #: src/Admin/Onboarding/Steps/Products.php:73
     17726#: src/Admin/Onboarding/Steps/Products.php:79
    1773017727msgid "Product Price"
    1773117728msgstr ""
    1773217729
    17733 #: src/Admin/Onboarding/Steps/Products.php:127
     17730#: src/Admin/Onboarding/Steps/Products.php:141
    1773417731msgid "Add your first file"
    1773517732msgstr ""
    1773617733
    17737 #: src/Admin/Onboarding/Steps/Products.php:136
     17734#: src/Admin/Onboarding/Steps/Products.php:150
    1773817735msgid "Ready to add your first downloadable file to your product? Great! These files will be protected and only available to people who purchase your product. Not ready yet? No problem, you can always add and update files later."
    1773917736msgstr ""
    1774017737
    17741 #: src/Admin/Onboarding/Steps/Products.php:152
     17738#: src/Admin/Onboarding/Steps/Products.php:166
    1774217739msgid "Congratulations!"
    1774317740msgstr ""
    1774417741
    17745 #: src/Admin/Onboarding/Steps/Products.php:153
     17742#: src/Admin/Onboarding/Steps/Products.php:167
    1774617743msgid "You've set up your store and your first product has been created."
    1774717744msgstr ""
    1774817745
    17749 #: src/Admin/Onboarding/Steps/Products.php:154
     17746#: src/Admin/Onboarding/Steps/Products.php:168
    1775017747msgid "Edit My Product"
    1775117748msgstr ""
    1775217749
    17753 #: src/Admin/Onboarding/Steps/Products.php:155
     17750#: src/Admin/Onboarding/Steps/Products.php:169
    1775417751msgid "Explore Extensions"
    1775517752msgstr ""
     
    1890418901
    1890518902#: src/Admin/Settings/Tabs/Gateways.php:229
    18906 msgid "Enable Sequental Numbering"
     18903msgid "Enable Sequential Numbering"
    1890718904msgstr ""
    1890818905
     
    1898018977#. translators: %1$s: opening anchor tag, %2$s: closing anchor tag
    1898118978#: src/Admin/Settings/Tabs/Gateways.php:374
    18982 msgid "Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Dectection, %1$sUpgrade to Pro%2$s."
     18979msgid "Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Detection, %1$sUpgrade to Pro%2$s."
    1898318980msgstr ""
    1898418981
  • easy-digital-downloads/tags/3.2.12/readme.txt

    r3061317 r3078938  
    55Tags: ecommerce, payments, sell, digital store, stripe
    66Requires at least: 5.8
    7 Tested up to: 6.4
     7Tested up to: 6.5
    88Requires PHP: 7.4
    9 Stable Tag: 3.2.11
     9Stable Tag: 3.2.12
    1010License: GNU Version 2 or Any Later Version
    1111
     
    7575* Email Receipts - The included email receipts are fully customizable to ensure that your brand is represented in your receipts.
    7676* Customer Management - Track your customer lifetime value and purchase history with the included Customer Management system. Quickly access a customer's entire purchase history, add notes, and link to WordPress users.
    77 * Refund and Dispute Handling - With our accounting friendly store management system, refunds and disputes ensure that your records are accurate and customers only have access to files when they should.
     77* Refund and Dispute Handling - With our automated order management tools, EDD ensures that your records are accurate and customers only have access to files when they should.
    7878* Customer Profile Editor - Give your users to their purchase history and profile management with the included blocks.
    7979
     
    148148= Is there a sample import file I can use to setup a demo store? =
    149149
    150 Yes! Simply go to Tools > Import and install the WordPress Importer, then you can use the XML file located at wp-content/plugins/easy-digital-downloads/assets/ and select the sample-products-import.xml file. This will create several sample products and plugin pages for you.
     150Yes! Simply go to Tools > Import and install the WordPress Importer, then you can use the sample-products-import.xml file located in wp-content/plugins/easy-digital-downloads/assets/. This will create several sample products and plugin pages for you.
    151151
    152152= Can I import all the products from my existing store into EDD? =
     
    225225
    226226== Changelog ==
     227= 3.2.12 =
     228* Compatibility: Fixed a conflict between Setup Wizard and the Multi-Currency extension.
     229* Stripe: Improved the handling of refunding charges via the Stripe Dashboard.
     230* Exports: Improved performance, management, and protection of export files generated by EDD.
     231* Emails: Improved the validation before installing the Recapture integration.
     232
     233View the full changelog at [https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/](https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
     234
    227235= 3.2.11 =
    228236* Order Management: When searching orders, a Product ID was being erroneously added to the filter arguments when it not have been.
    229 
    230 View the full changelog at [https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/](https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
    231237
    232238= 3.2.10 =
     
    243249* HTML: The Textarea HTML field could add empty content to the value.
    244250* Checkout: The Privacy Policy checkbox may not always show when expected.
    245 * Blocks: Improved loading of Easy Digital Download blocks.
    246 * Blocks: Improved the handling of Easy Digital Download blocks when using a classic theme.
     251* Blocks: Improved loading of Easy Digital Downloads blocks.
     252* Blocks: Improved the handling of Easy Digital Downloads blocks when using a classic theme.
    247253* Orders: Manually creating orders in the admin could fail to save the order due to a capability check.
    248254* Migration: Improved the reliability of the EDD 3.0+ migration routine for possibly corrupt serialized data.
     
    251257= 3.2.9 =
    252258* Stripe: Resending the purchase receipt could fail if including the Stripe statement descriptor in the email template.
    253 * Settings: Improve the reliability of determining the timezone settings in WordPress.
     259* Settings: Improved the reliability of determining the timezone settings in WordPress.
    254260* Reports: When using custom dates for reporting, some timezone settings could make the dates show incorrectly.
    255261* Emails: Adjusted when the deprecation notices will be shown for the legacy email hooks.
     
    390396* Fix: EDD Blocks placeholder styles could interfere with WordPress Core placeholders.
    391397* Fix: Additional, not officially supported fee data is now stored as order adjustment metadata.
    392 * Dev: Many filters and hooks that passed EDD_Payment objects now have a complimentary hook or filter that uses EDD\Orders\Order objects.
     398* Dev: Many filters and hooks that passed EDD_Payment objects now have a complementary hook or filter that uses EDD\Orders\Order objects.
    393399* Dev: Easy Digital Downloads is no longer registering the edd_payment and edd_discount post types.
    394400* Dev: Easy Digital Downloads – Core now holds the Stripe base code, and Stripe Pro 3.0.0 only contains pro features.
  • easy-digital-downloads/tags/3.2.12/src/Admin/Onboarding/Steps/Products.php

    r3036940 r3078938  
    1313
    1414// Exit if accessed directly.
    15 defined( 'ABSPATH' ) || exit;
     15defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
    1616
     17/**
     18 * Products step class.
     19 */
    1720class Products extends Step {
    1821
     
    2326     */
    2427    public function step_html() {
    25         $currency_position  = edd_get_option( 'currency_position', 'before' );
     28        $currency_position = edd_get_option( 'currency_position', 'before' );
     29        // Remove all actions that may have been added by extensions.
     30        remove_all_actions( 'edd_after_price_field' );
     31        remove_all_actions( 'edd_download_price_option_row' );
    2632        ?>
    2733        <form method="post" class="edd-onboarding__create-product-form">
     
    124130                                <div class="edd-form-group__control">
    125131                                    <label class="edd-toggle edd-onboarding__upload-files-toggle" for="_edd_upload_files">
    126                                         <?php echo EDD()->html->checkbox( array( 'name' => '_edd_upload_files', 'current' => null, 'class' => 'edd-form-group__input', ) ); ?>
     132                                        <?php
     133                                        echo EDD()->html->checkbox(
     134                                            array(
     135                                                'name'    => '_edd_upload_files',
     136                                                'current' => null,
     137                                                'class'   => 'edd-form-group__input',
     138                                            )
     139                                        );
     140                                        ?>
    127141                                        <span><?php echo esc_html_e( 'Add your first file', 'easy-digital-downloads' ); ?></span>
    128142                                    </label>
  • easy-digital-downloads/tags/3.2.12/src/Admin/Settings/Tabs/Gateways.php

    r3036940 r3078938  
    227227            'enable_sequential'  => array(
    228228                'id'    => 'enable_sequential',
    229                 'name'  => __( 'Enable Sequental Numbering', 'easy-digital-downloads' ),
     229                'name'  => __( 'Enable Sequential Numbering', 'easy-digital-downloads' ),
    230230                'check' => __( 'Check this box to enable sequential order numbers.', 'easy-digital-downloads' ),
    231231                'desc'  => __( 'Does not impact previous orders. Future orders will be sequential.', 'easy-digital-downloads' ),
     
    372372        return sprintf(
    373373            /* translators: %1$s: opening anchor tag, %2$s: closing anchor tag */
    374             __( 'Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Dectection, %1$sUpgrade to Pro%2$s.', 'easy-digital-downloads' ),
     374            __( 'Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Detection, %1$sUpgrade to Pro%2$s.', 'easy-digital-downloads' ),
    375375            '<a href="' . $upgrade_link . '" class="edd-pro-upgrade" target="_blank">',
    376376            '</a>'
  • easy-digital-downloads/trunk/assets/js/edd-admin-settings.js

    r3036940 r3078938  
    1 !function(e){var t={};function n(a){if(t[a])return t[a].exports;var d=t[a]={i:a,l:!1,exports:{}};return e[a].call(d.exports,d,d.exports,n),d.l=!0,d.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var d in e)n.d(a,d,function(t){return e[t]}.bind(null,d));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=318)}({1:function(e,t){e.exports=jQuery},291:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var a=function(){e.post(ajaxurl,{action:"edd_recapture_remote_install"},(function(e){!e.success&&e.data&&confirm(e.data.error)?location.reload():window.location.href="https://recapture.io/register"}))}}).call(this,n(1))},318:function(e,t,n){"use strict";n.r(t),function(e,t){var a=n(291),d=(n(319),{init:function(){this.general(),this.misc(),this.gateways(),this.emails()},general:function(){var t,n=e(".edd-color-picker");n.length&&n.wpColorPicker(),window.formfield="",e(document.body).on("click",".edd_settings_upload_button",(function(n){n.preventDefault();var a=e(this);window.formfield=e(a.data("input")),t||((t=wp.media.frames.file_frame=wp.media({title:a.data("uploader_title"),library:{type:"image"},button:{text:a.data("uploader_button_text")},multiple:!1})).on("menu:render:default",(function(e){e.unset("library-separator"),e.unset("gallery"),e.unset("featured-image"),e.unset("embed"),e.unset("playlist"),e.unset("video-playlist"),e.set({})})),t.on("select",(function(){t.state().get("selection").each((function(e,t){e=e.toJSON(),window.formfield.val(e.url)}))}))),t.open()})),window.formfield=""},misc:function(){var t=e('select[name="edd_settings[download_method]"]'),n=t.parent().parent().next(),a=e('input[name="edd_settings[allow_tracking]"]');"direct"===t.val()&&(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)),t.on("change",(function(){"direct"===e(this).val()?(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)):(n.find("input").prop("disabled",!1),n.css("opacity","1"))})),a.on("change",(function(){e(".allow_tracking.edd-heart").toggleClass("edd-hidden")}))},gateways:function(){e('#edd-payment-gateways input[type="checkbox"]').on("change",(function(){var t=e(this).data("gateway-key"),n=e("#edd_settings\\[default_gateway\\]"),a=n.find('option[value="'+t+'"]');a.prop("disabled",(function(e,t){return!t})),a.prop("selected")&&a.prop("selected",!1),n.trigger("chosen:updated")}))},emails:function(){e("#edd-recapture-connect").on("click",(function(t){t.preventDefault(),e(this).html(edd_vars.wait+' <span class="edd-loading"></span>'),document.body.style.cursor="wait",Object(a.a)()}));var t=e('select[name="edd_settings[email_summary_recipient]"]'),n=t.val(),d=e('textarea[name="edd_settings[email_summary_custom_recipients]"]').parents("tr"),o=e("#edd-send-test-summary-save-changes-notice"),s=e("#edd-send-test-summary"),i=e("#edd-send-test-summary-notice");t.on("change",(function(){d.toggleClass("hidden"),s.removeClass("hidden updated-message"),i.empty(),o.empty(),n!==t.val()&&(s.addClass("hidden"),o.html('<div class="notice notice-info"><p>'+edd_vars.test_email_save_changes+"</p></div>"))})),s.on("click",(function(t){t.preventDefault(),e.ajax({type:"GET",dataType:"json",url:ajaxurl,data:{action:"edd_send_test_email_summary"},beforeSend:function(){i.empty(),s.addClass("updating-message").prop("disabled",!0)},success:function(e){"error"==e.status?i.html('<div class="updated '+e.status+'"><p>'+e.message+"</p></div>"):(s.addClass("updated-message"),setTimeout((function(){s.removeClass("updated-message")}),3e3))}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){s.removeClass("updating-message").prop("disabled",!1)}))}))}});t(document).ready((function(e){d.init()}))}.call(this,n(1),n(1))},319:function(e,t,n){(function(e){e(document).ready((function(t){if("undefined"!=typeof eddPayPalConnectVars){var n=document.getElementById("edd-paypal-commerce-errors");if(n&&n.length){for(;n.firstChild;)n.removeChild(n.firstChild);n.classList.remove("notice notice-error")}if(eddPayPalConnectVars.isConnected){var a=document.getElementById("edd-paypal-commerce-reconnect");a&&a.addEventListener("click",(function(e){e.preventDefault();var n=t("#edd-paypal-commerce-errors");n.empty().removeClass("notice notice-error"),a.classList.add("updating-message"),a.disabled=!0,t.post(ajaxurl,{action:"edd_paypal_commerce_reconnect",_ajax_nonce:a.dataset.nonce}).done((function(){})).fail((function(e){console.log("Reconnect failure",e.data),a.classList.remove("updating-message"),a.disabled=!1,n.html("<p>"+e.data+"</p>").addClass("notice notice-error")}))})),function e(){var n=document.getElementById("edd-paypal-commerce-connect-wrap");n&&t.post(ajaxurl,{action:"edd_paypal_commerce_get_account_info",_ajax_nonce:n.getAttribute("data-nonce")},(function(a){var d="<p>"+eddPayPalConnectVars.defaultError+"</p>";a.success?(d=a.data.account_status,a.data.actions&&a.data.actions.length&&(d+='<p class="edd-paypal-connect-actions">'+a.data.actions.join(" ")+"</p>"),a.data.disconnect_links&&a.data.disconnect_links.length&&(document.getElementById("edd-paypal-disconnect").innerHTML=a.data.disconnect_links.join(" "))):a.data&&a.data.message&&(d=a.data.message),n.innerHTML=d,n.classList.remove("notice-success","notice-warning","notice-error","loading");var o=a.success&&a.data.status?"notice-"+a.data.status:"notice-error";n.classList.add(o);var s,i=document.getElementById("edd-paypal-commerce-get-help");"success"===a.data.status?(i.classList.add("edd-hidden"),i.classList.remove("button","button-secondary")):(i.classList.remove("edd-hidden"),i.classList.add("button","button-secondary")),(s=document.querySelectorAll(".edd-paypal-connect-action"))&&s.length&&s.forEach((function(n){n.addEventListener("click",(function(n){n.preventDefault();var a=n.target;a.disabled=!0,a.classList.add("updating-message");var d=document.getElementById("edd-paypal-commerce-connect-wrap");d&&d.length&&d.remove(),t.post(ajaxurl,{action:a.dataset.action,_ajax_nonce:a.dataset.nonce}).done((function(){e()})).fail((function(e){console.log("Failure",e.data),a.disabled=!1,a.classList.remove("updating-message"),d.html("<p>"+e.data+"</p>").addClass("edd-paypal-actions-error-wrap")}))}))}))}))}()}else{if(document.getElementById("edd-paypal-commerce-link")){var d=document.createElement("script");d.id="edd-paypal-commerce-onboarding",d.src="https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js",document.body.appendChild(d),setTimeout((function(){"undefined"!==window.PAYPAL.apps.Signup&&window.PAYPAL.apps.Signup.render()}),1e3)}window.eddPayPalOnboardingCallback=function(t,n){var a=document.getElementById("edd-paypal-commerce-link"),d=document.getElementById("edd-paypal-commerce-errors");e.post(ajaxurl,{action:"edd_paypal_commerce_get_access_token",auth_code:t,share_id:n,_ajax_nonce:a.dataset.nonce}).done((function(){a.classList.add("disabled","updating-message"),a.disabled=!0})).fail((function(e){d.innerHTML="<p>"+e.data+"</p>",d.classList.add("notice","notice-error");var t=document.getElementById("edd-paypal-commerce-get-help");t.classList.remove("edd-hidden"),t.classList.add("button","button-secondary")}))}}}}))}).call(this,n(1))}});
     1!function(e){var t={};function n(a){if(t[a])return t[a].exports;var d=t[a]={i:a,l:!1,exports:{}};return e[a].call(d.exports,d,d.exports,n),d.l=!0,d.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var d in e)n.d(a,d,function(t){return e[t]}.bind(null,d));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=318)}({1:function(e,t){e.exports=jQuery},291:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var a=function(){var t={action:"edd_recapture_remote_install",nonce:document.getElementById("edd-recapture-connect-nonce").value};e.post(ajaxurl,t,(function(e){!e.success&&e.data&&confirm(e.data.error)?location.reload():window.location.href="https://recapture.io/register"}))}}).call(this,n(1))},318:function(e,t,n){"use strict";n.r(t),function(e,t){var a=n(291),d=(n(319),{init:function(){this.general(),this.misc(),this.gateways(),this.emails()},general:function(){var t,n=e(".edd-color-picker");n.length&&n.wpColorPicker(),window.formfield="",e(document.body).on("click",".edd_settings_upload_button",(function(n){n.preventDefault();var a=e(this);window.formfield=e(a.data("input")),t||((t=wp.media.frames.file_frame=wp.media({title:a.data("uploader_title"),library:{type:"image"},button:{text:a.data("uploader_button_text")},multiple:!1})).on("menu:render:default",(function(e){e.unset("library-separator"),e.unset("gallery"),e.unset("featured-image"),e.unset("embed"),e.unset("playlist"),e.unset("video-playlist"),e.set({})})),t.on("select",(function(){t.state().get("selection").each((function(e,t){e=e.toJSON(),window.formfield.val(e.url)}))}))),t.open()})),window.formfield=""},misc:function(){var t=e('select[name="edd_settings[download_method]"]'),n=t.parent().parent().next(),a=e('input[name="edd_settings[allow_tracking]"]');"direct"===t.val()&&(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)),t.on("change",(function(){"direct"===e(this).val()?(n.css("opacity","0.4"),n.find("input").prop("checked",!1).prop("disabled",!0)):(n.find("input").prop("disabled",!1),n.css("opacity","1"))})),a.on("change",(function(){e(".allow_tracking.edd-heart").toggleClass("edd-hidden")}))},gateways:function(){e('#edd-payment-gateways input[type="checkbox"]').on("change",(function(){var t=e(this).data("gateway-key"),n=e("#edd_settings\\[default_gateway\\]"),a=n.find('option[value="'+t+'"]');a.prop("disabled",(function(e,t){return!t})),a.prop("selected")&&a.prop("selected",!1),n.trigger("chosen:updated")}))},emails:function(){e("#edd-recapture-connect").on("click",(function(t){t.preventDefault(),e(this).html(edd_vars.wait+' <span class="edd-loading"></span>'),document.body.style.cursor="wait",Object(a.a)()}));var t=e('select[name="edd_settings[email_summary_recipient]"]'),n=t.val(),d=e('textarea[name="edd_settings[email_summary_custom_recipients]"]').parents("tr"),o=e("#edd-send-test-summary-save-changes-notice"),s=e("#edd-send-test-summary"),c=e("#edd-send-test-summary-notice");t.on("change",(function(){d.toggleClass("hidden"),s.removeClass("hidden updated-message"),c.empty(),o.empty(),n!==t.val()&&(s.addClass("hidden"),o.html('<div class="notice notice-info"><p>'+edd_vars.test_email_save_changes+"</p></div>"))})),s.on("click",(function(t){t.preventDefault(),e.ajax({type:"GET",dataType:"json",url:ajaxurl,data:{action:"edd_send_test_email_summary"},beforeSend:function(){c.empty(),s.addClass("updating-message").prop("disabled",!0)},success:function(e){"error"==e.status?c.html('<div class="updated '+e.status+'"><p>'+e.message+"</p></div>"):(s.addClass("updated-message"),setTimeout((function(){s.removeClass("updated-message")}),3e3))}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){s.removeClass("updating-message").prop("disabled",!1)}))}))}});t(document).ready((function(e){d.init()}))}.call(this,n(1),n(1))},319:function(e,t,n){(function(e){e(document).ready((function(t){if("undefined"!=typeof eddPayPalConnectVars){var n=document.getElementById("edd-paypal-commerce-errors");if(n&&n.length){for(;n.firstChild;)n.removeChild(n.firstChild);n.classList.remove("notice notice-error")}if(eddPayPalConnectVars.isConnected){var a=document.getElementById("edd-paypal-commerce-reconnect");a&&a.addEventListener("click",(function(e){e.preventDefault();var n=t("#edd-paypal-commerce-errors");n.empty().removeClass("notice notice-error"),a.classList.add("updating-message"),a.disabled=!0,t.post(ajaxurl,{action:"edd_paypal_commerce_reconnect",_ajax_nonce:a.dataset.nonce}).done((function(){})).fail((function(e){console.log("Reconnect failure",e.data),a.classList.remove("updating-message"),a.disabled=!1,n.html("<p>"+e.data+"</p>").addClass("notice notice-error")}))})),function e(){var n=document.getElementById("edd-paypal-commerce-connect-wrap");n&&t.post(ajaxurl,{action:"edd_paypal_commerce_get_account_info",_ajax_nonce:n.getAttribute("data-nonce")},(function(a){var d="<p>"+eddPayPalConnectVars.defaultError+"</p>";a.success?(d=a.data.account_status,a.data.actions&&a.data.actions.length&&(d+='<p class="edd-paypal-connect-actions">'+a.data.actions.join(" ")+"</p>"),a.data.disconnect_links&&a.data.disconnect_links.length&&(document.getElementById("edd-paypal-disconnect").innerHTML=a.data.disconnect_links.join(" "))):a.data&&a.data.message&&(d=a.data.message),n.innerHTML=d,n.classList.remove("notice-success","notice-warning","notice-error","loading");var o=a.success&&a.data.status?"notice-"+a.data.status:"notice-error";n.classList.add(o);var s,c=document.getElementById("edd-paypal-commerce-get-help");"success"===a.data.status?(c.classList.add("edd-hidden"),c.classList.remove("button","button-secondary")):(c.classList.remove("edd-hidden"),c.classList.add("button","button-secondary")),(s=document.querySelectorAll(".edd-paypal-connect-action"))&&s.length&&s.forEach((function(n){n.addEventListener("click",(function(n){n.preventDefault();var a=n.target;a.disabled=!0,a.classList.add("updating-message");var d=document.getElementById("edd-paypal-commerce-connect-wrap");d&&d.length&&d.remove(),t.post(ajaxurl,{action:a.dataset.action,_ajax_nonce:a.dataset.nonce}).done((function(){e()})).fail((function(e){console.log("Failure",e.data),a.disabled=!1,a.classList.remove("updating-message"),d.html("<p>"+e.data+"</p>").addClass("edd-paypal-actions-error-wrap")}))}))}))}))}()}else{if(document.getElementById("edd-paypal-commerce-link")){var d=document.createElement("script");d.id="edd-paypal-commerce-onboarding",d.src="https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js",document.body.appendChild(d),setTimeout((function(){"undefined"!==window.PAYPAL.apps.Signup&&window.PAYPAL.apps.Signup.render()}),1e3)}window.eddPayPalOnboardingCallback=function(t,n){var a=document.getElementById("edd-paypal-commerce-link"),d=document.getElementById("edd-paypal-commerce-errors");e.post(ajaxurl,{action:"edd_paypal_commerce_get_access_token",auth_code:t,share_id:n,_ajax_nonce:a.dataset.nonce}).done((function(){a.classList.add("disabled","updating-message"),a.disabled=!0})).fail((function(e){d.innerHTML="<p>"+e.data+"</p>",d.classList.add("notice","notice-error");var t=document.getElementById("edd-paypal-commerce-get-help");t.classList.remove("edd-hidden"),t.classList.add("button","button-secondary")}))}}}}))}).call(this,n(1))}});
  • easy-digital-downloads/trunk/easy-digital-downloads.php

    r3061317 r3078938  
    66 * Author: Easy Digital Downloads
    77 * Author URI: https://easydigitaldownloads.com
    8  * Version: 3.2.11
     8 * Version: 3.2.12
    99 * Text Domain: easy-digital-downloads
    1010 * Domain Path: /languages
     
    2828 * @category Core
    2929 * @author Easy Digital Downloads
    30  * @version 3.2.11
     30 * @version 3.2.12
    3131 */
    3232
  • easy-digital-downloads/trunk/i18n/states-in.php

    r2940530 r3078938  
    3636    'AN' => __( 'Andaman and Nicobar Islands', 'easy-digital-downloads' ),
    3737    'CH' => __( 'Chandigarh', 'easy-digital-downloads' ),
    38     'DN' => __( 'Dadar and Nagar Haveli', 'easy-digital-downloads' ),
     38    'DN' => __( 'Dadra and Nagar Haveli', 'easy-digital-downloads' ),
    3939    'DD' => __( 'Daman and Diu', 'easy-digital-downloads' ),
    4040    'DL' => __( 'Delhi', 'easy-digital-downloads' ),
  • easy-digital-downloads/trunk/includes/admin/reporting/export/class-batch-export.php

    r2990247 r3078938  
    134134    public function __construct( $_step = 1 ) {
    135135
    136         $upload_dir     = wp_upload_dir();
     136        $exports_dir    = edd_get_exports_dir();
    137137        $this->filetype = '.csv';
    138         $this->filename = 'edd-' . $this->export_type . $this->filetype;
    139         $this->file     = trailingslashit( $upload_dir['basedir'] ) . $this->filename;
    140 
    141         if ( ! is_writeable( $upload_dir['basedir'] ) ) {
     138        $file_date      = date( 'Y-m-d' );
     139        $file_hash      = substr( wp_hash( 'edd-' . $this->export_type . '-export', 'nonce' ), 0, 8 );
     140        $this->filename = sprintf(
     141            'edd-%1$s-export-%2$s-%3$s%4$s',
     142            $this->export_type,
     143            $file_date,
     144            $file_hash,
     145            $this->filetype
     146        );
     147        $this->file     = trailingslashit( $exports_dir ) . $this->filename;
     148
     149        if ( ! is_writeable( $exports_dir ) ) {
    142150            $this->is_writable = false;
    143151        }
  • easy-digital-downloads/trunk/includes/admin/reporting/export/export-actions.php

    r2964278 r3078938  
    264264
    265265/**
    266  * Register the taxed orders report batch exporter.
     266 * Register the taxed customers report batch exporter.
    267267 *
    268268 * @since 3.0
  • easy-digital-downloads/trunk/includes/admin/settings/register-settings.php

    r3036940 r3078938  
    18121812        <?php if ( current_user_can( 'install_plugins' ) ) : ?>
    18131813        <p>
    1814             <button type="button" id="edd-recapture-connect" class="button button-primary"><?php esc_html_e( 'Connect with Recapture', 'easy-digital-downloads' ); ?>
     1814            <button type="button" id="edd-recapture-connect" class="button button-primary">
     1815                <?php esc_html_e( 'Connect with Recapture', 'easy-digital-downloads' ); ?>
    18151816            </button>
     1817            <?php wp_nonce_field( 'edd-recapture-connect', 'edd-recapture-connect-nonce' ); ?>
    18161818        </p>
    18171819    <?php endif; ?>
  • easy-digital-downloads/trunk/includes/class-easy-digital-downloads.php

    r3061317 r3078938  
    371371        // Plugin version.
    372372        if ( ! defined( 'EDD_VERSION' ) ) {
    373             define( 'EDD_VERSION', '3.2.11' );
     373            define( 'EDD_VERSION', '3.2.12' );
    374374        }
    375375
     
    730730        require_once EDD_PLUGIN_DIR . 'includes/emails/class-edd-email-tags.php';
    731731        require_once EDD_PLUGIN_DIR . 'includes/emails/functions.php';
     732        require_once EDD_PLUGIN_DIR . 'includes/emails/recapture.php';
    732733        require_once EDD_PLUGIN_DIR . 'includes/emails/tags.php';
    733734        require_once EDD_PLUGIN_DIR . 'includes/emails/tags-inserter.php';
  • easy-digital-downloads/trunk/includes/class-edd-cron.php

    r2756001 r3078938  
    3030        add_filter( 'cron_schedules', array( $this, 'add_schedules'   ) );
    3131        add_action( 'wp',             array( $this, 'schedule_events' ) );
     32        add_action( 'edd_daily_scheduled_events', array( $this, 'exports_cleanup' ) );
    3233    }
    3334
     
    8788    }
    8889
     90    /**
     91     * Cleanup after ourselves during exports.
     92     *
     93     * @since 3.2.12
     94     *
     95     * @return void
     96     */
     97    public function exports_cleanup() {
     98        if ( class_exists( 'EDD\Cron\Loader' ) ) {
     99            return;
     100        }
     101
     102        $exports_dir = edd_get_exports_dir();
     103        $files       = scandir( $exports_dir );
     104
     105        if ( ! empty( $files ) ) {
     106            foreach ( $files as $file ) {
     107                if ( '.' === $file[0] ) {
     108                    continue;
     109                }
     110
     111                $full_path = trailingslashit( $exports_dir ) . $file;
     112
     113                if ( is_dir( $full_path ) || ( 'index.php' === basename( $full_path ) || 'index.html' === basename( $full_path ) ) ) {
     114                    continue;
     115                }
     116
     117                $modified_time = filemtime( $full_path );
     118
     119                // If the file hasn't been modified in the last 2 hours, delete it.
     120                if ( time() - $modified_time > HOUR_IN_SECONDS * 2 ) {
     121                    unlink( $full_path );
     122                }
     123            }
     124        }
     125
     126        // Also remove any older exports in the uploads directory.
     127        $uploads_dir = wp_upload_dir();
     128        $files       = scandir( $uploads_dir['basedir'] );
     129
     130        if ( ! empty( $files ) ) {
     131            foreach ( $files as $file ) {
     132                if ( '.' === $file[0] ) {
     133                    continue;
     134                }
     135
     136                $full_path = trailingslashit( $uploads_dir['basedir'] ) . $file;
     137
     138                if ( is_dir( $full_path ) || ( 'index.php' === basename( $full_path ) || 'index.html' === basename( $full_path ) ) ) {
     139                    continue;
     140                }
     141
     142                // If the filename doesn't start with `edd-` don't delete it.
     143                if ( false === strpos( $file, 'edd-' ) ) {
     144                    continue;
     145                }
     146
     147                // If the file is not a .csv, don't delete it.
     148                if ( '.csv' !== substr( $file, -4 ) ) {
     149                    continue;
     150                }
     151
     152                $modified_time = filemtime( $full_path );
     153
     154                // If the file hasn't been modified in the last 2 hours, delete it.
     155                if ( time() - $modified_time > HOUR_IN_SECONDS * 2 ) {
     156                    unlink( $full_path );
     157                }
     158            }
     159        }
     160    }
    89161}
    90 $edd_cron = new EDD_Cron;
     162$edd_cron = new EDD_Cron();
  • easy-digital-downloads/trunk/includes/emails/functions.php

    r2973984 r3078938  
    4747    return (bool) apply_filters( 'edd_admin_notices_disabled', $ret, $payment_id );
    4848}
    49 
    50 /**
    51  * Handle installation and connection for Recapture via ajax
    52  *
    53  * @since 2.10.2
    54  */
    55 function edd_recapture_remote_install_handler () {
    56 
    57     if ( ! current_user_can( 'manage_shop_settings' ) || ! current_user_can( 'install_plugins' ) ) {
    58         wp_send_json_error( array(
    59             'error' => __( 'You do not have permission to do this.', 'easy-digital-downloads' )
    60         ) );
    61     }
    62 
    63     include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
    64     include_once ABSPATH . 'wp-admin/includes/file.php';
    65     include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
    66 
    67     $plugins = get_plugins();
    68 
    69     if( ! array_key_exists( 'recapture-for-edd/recapture.php', $plugins ) ) {
    70 
    71         /*
    72         * Use the WordPress Plugins API to get the plugin download link.
    73         */
    74         $api = plugins_api( 'plugin_information', array(
    75             'slug' => 'recapture-for-edd',
    76         ) );
    77 
    78         if ( is_wp_error( $api ) ) {
    79             wp_send_json_error( array(
    80                 'error' => $api->get_error_message(),
    81                 'debug' => $api
    82             ) );
    83         }
    84 
    85         /*
    86         * Use the AJAX Upgrader skin to quietly install the plugin.
    87         */
    88         $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() );
    89         $install = $upgrader->install( $api->download_link );
    90         if ( is_wp_error( $install ) ) {
    91             wp_send_json_error( array(
    92                 'error' => $install->get_error_message(),
    93                 'debug' => $api
    94             ) );
    95         }
    96 
    97         $activated = activate_plugin( $upgrader->plugin_info() );
    98 
    99     } else {
    100 
    101         $activated = activate_plugin( 'recapture-for-edd/recapture.php' );
    102 
    103     }
    104 
    105     /*
    106     * Final check to see if Recapture is available.
    107     */
    108     if ( is_wp_error( $activated ) ) {
    109         wp_send_json_error( array(
    110             'error' => __( 'Something went wrong. Recapture for EDD was not installed correctly.', 'easy-digital-downloads' )
    111         ) );
    112     }
    113 
    114     wp_send_json_success();
    115 }
    116 add_action( 'wp_ajax_edd_recapture_remote_install', 'edd_recapture_remote_install_handler' );
    117 
    118 /**
    119  * Maybe adds a notice to abandoned payments if Recapture isn't installed.
    120  *
    121  * @since 2.10.2
    122  *
    123  * @param int $payment_id The ID of the abandoned payment, for which a Recapture notice is being thrown.
    124  */
    125 function maybe_add_recapture_notice_to_abandoned_payment( $payment_id ) {
    126 
    127     if ( ! class_exists( 'Recapture' )
    128         && 'abandoned' === edd_get_payment_status( $payment_id )
    129         && ! get_user_meta( get_current_user_id(), '_edd_try_recapture_dismissed', true )
    130     ) {
    131         ?>
    132         <div class="notice notice-warning recapture-notice">
    133             <p>
    134                 <?php
    135                 echo wp_kses_post(
    136                     sprintf(
    137                         /* Translators: %1$s - <strong> tag, %2$s - </strong> tag, %3$s - <a> tag, %4$s - </a> tag */
    138                         __( '%1$sRecover abandoned purchases like this one.%2$s %3$sTry Recapture for free%4$s.', 'easy-digital-downloads' ),
    139                         '<strong>',
    140                         '</strong>',
    141                         '<a href="https://recapture.io/abandoned-carts-easy-digital-downloads" rel="noopener" target="_blank">',
    142                         '</a>'
    143                     )
    144                 );
    145                 ?>
    146             </p>
    147             <?php
    148             echo wp_kses_post(
    149                 sprintf(
    150                     /* Translators: %1$s - Opening anchor tag, %2$s - The url to dismiss the ajax notice, %3$s - Complete the opening of the anchor tag, %4$s - Open span tag, %4$s - Close span tag */
    151                     __( '%1$s %2$s %3$s %4$s Dismiss this notice. %5$s', 'easy-digital-downloads' ),
    152                     '<a href="',
    153                     esc_url(
    154                         wp_nonce_url(
    155                             add_query_arg(
    156                                 array(
    157                                     'edd_action' => 'dismiss_notices',
    158                                     'edd_notice' => 'try_recapture',
    159                                 )
    160                             ),
    161                             'edd_notice_nonce'
    162                         )
    163                     ),
    164                     '" type="button" class="notice-dismiss">',
    165                     '<span class="screen-reader-text">',
    166                     '</span>
    167                     </a>'
    168                 )
    169             );
    170             ?>
    171         </div>
    172         <?php
    173     }
    174 }
    175 add_action( 'edd_view_order_details_before', 'maybe_add_recapture_notice_to_abandoned_payment' );
  • easy-digital-downloads/trunk/includes/gateways/stripe/includes/webhooks.php

    r2973984 r3078938  
    7373                // If this was completely refunded, set the status to refunded.
    7474                if ( $charge->refunded ) {
    75                     $refund_id = edd_refund_order( $order->id );
    76                     if ( $refund_id ) {
     75                    $refund_id = false;
     76                    if ( edd_is_order_refundable( $order->id ) ) {
     77                        $refund_id = edd_refund_order( $order->id );
     78                    } else {
     79                        $refunds = edd_get_orders(
     80                            array(
     81                                'type'   => 'refund',
     82                                'parent' => $order->id,
     83                            )
     84                        );
     85                        if ( ! empty( $refunds ) ) {
     86                            $refund_id = $refunds[0]->id;
     87                        }
     88                    }
     89                    if ( $refund_id && ! is_wp_error( $refund_id ) ) {
    7790                        edd_add_order_transaction(
    7891                            array(
  • easy-digital-downloads/trunk/includes/misc-functions.php

    r2964278 r3078938  
    860860
    861861/**
     862 * Retrieve the absolute path to the file export directory without the trailing slash.
     863 *
     864 * @since 3.2.12
     865 *
     866 * @return string $path Absolute path to the EDD export directory
     867 */
     868function edd_get_exports_dir() {
     869    $wp_upload_dir = wp_upload_dir();
     870    $edd_dir       = edd_get_uploads_base_dir();
     871    $path          = $wp_upload_dir['basedir'] . '/' . $edd_dir . '/exports';
     872    $exports_dir   = apply_filters( 'edd_get_exports_dir', $path );
     873
     874    // Make sure the directory exists.
     875    wp_mkdir_p( $exports_dir );
     876
     877    // Return, possibly filtered.
     878    return $exports_dir;
     879}
     880
     881/**
    862882 * Retrieve the URL to the file upload directory without the trailing slash
    863883 *
  • easy-digital-downloads/trunk/includes/orders/classes/class-refund-validator.php

    r2756001 r3078938  
    388388                         * %3$s - maximum amount allowed for refund
    389389                         */
    390                         __( 'The maximum refund %s for the adjustment "%s" is %s.', 'easy-digital-downloads' ),
     390                        __( 'The maximum refund %1$s for the adjustment "%2$s" is %3$s.', 'easy-digital-downloads' ),
    391391                        $column_name,
    392392                        $original_item->description,
  • easy-digital-downloads/trunk/languages/easy-digital-downloads.pot

    r3061317 r3078938  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Easy Digital Downloads 3.2.11\n"
     5"Project-Id-Version: Easy Digital Downloads 3.2.12\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/easy-digital-downloads\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2024-03-29T18:25:38+00:00\n"
     12"POT-Creation-Date: 2024-04-29T18:21:19+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.10.0\n"
     
    25142514
    25152515#: i18n/states-in.php:38
    2516 msgid "Dadar and Nagar Haveli"
     2516msgid "Dadra and Nagar Haveli"
    25172517msgstr ""
    25182518
     
    57735773#: includes/admin/reporting/class-export.php:188
    57745774#: includes/admin/reporting/class-gateway-error-logs-list-table.php:109
    5775 #: includes/admin/reporting/export/class-batch-export.php:158
     5775#: includes/admin/reporting/export/class-batch-export.php:166
    57765776#: includes/admin/reporting/export/export-actions.php:24
    57775777#: includes/admin/tools.php:1161
     
    63596359#: includes/admin/customers/class-customer-table.php:127
    63606360#: includes/admin/payments/orders.php:1084
    6361 #: includes/misc-functions.php:1436
     6361#: includes/misc-functions.php:1456
    63626362#: includes/payments/functions.php:537
    63636363msgid "Pending"
     
    63706370#: includes/admin/discounts/edit-discount.php:287
    63716371#: includes/class-edd-discount.php:705
    6372 #: includes/misc-functions.php:1431
     6372#: includes/misc-functions.php:1451
    63736373#: src/Admin/Promos/About.php:865
    63746374msgid "Active"
     
    65536553#: includes/admin/discounts/edit-discount.php:288
    65546554#: includes/class-edd-discount.php:699
    6555 #: includes/misc-functions.php:1432
     6555#: includes/misc-functions.php:1452
    65566556#: src/Admin/Promos/About.php:871
    65576557msgid "Inactive"
     
    66236623#: includes/api/class-edd-api.php:1978
    66246624#: includes/class-edd-license-handler.php:478
     6625#: includes/emails/recapture.php:24
    66256626#: includes/user-functions.php:958
    66266627msgid "Nonce verification failed."
     
    77937794
    77947795#: includes/admin/downloads/metabox.php:522
    7795 #: src/Admin/Onboarding/Steps/Products.php:114
     7796#: src/Admin/Onboarding/Steps/Products.php:120
    77967797msgid "Add New Price"
    77977798msgstr ""
     
    78117812msgstr ""
    78127813
    7813 #. translators: %1$s is the remove link, %2$s is the screen reader text.
    78147814#: includes/admin/downloads/metabox.php:589
    78157815#: includes/admin/downloads/metabox.php:847
     
    94049404
    94059405#: includes/admin/reporting/class-export.php:188
    9406 #: includes/admin/reporting/export/class-batch-export.php:158
     9406#: includes/admin/reporting/export/class-batch-export.php:166
    94079407#: includes/admin/tools/class-edd-tools-recount-customer-stats.php:114
    94089408#: includes/admin/tools/class-edd-tools-recount-store-earnings.php:157
     
    1047010470msgstr ""
    1047110471
    10472 #: includes/admin/settings/register-settings.php:1814
     10472#: includes/admin/settings/register-settings.php:1815
    1047310473msgid "Connect with Recapture"
    1047410474msgstr ""
    1047510475
    1047610476#. translators: Tax rate country code
    10477 #: includes/admin/settings/register-settings.php:1847
     10477#: includes/admin/settings/register-settings.php:1849
    1047810478msgid "Duplicate tax rates are not allowed. Please deactivate the existing %s tax rate before adding or activating another."
    1047910479msgstr ""
    1048010480
    10481 #: includes/admin/settings/register-settings.php:1848
     10481#: includes/admin/settings/register-settings.php:1850
    1048210482msgid "Please select a country."
    1048310483msgstr ""
    1048410484
    10485 #: includes/admin/settings/register-settings.php:1849
     10485#: includes/admin/settings/register-settings.php:1851
    1048610486msgid "Please enter a tax rate greater than 0."
    1048710487msgstr ""
    1048810488
    10489 #: includes/admin/settings/register-settings.php:1850
     10489#: includes/admin/settings/register-settings.php:1852
    1049010490msgid "Are you sure you want to add a 0% tax rate?"
    1049110491msgstr ""
     
    1085710857
    1085810858#: includes/admin/tools.php:915
    10859 #: src/Admin/Onboarding/Steps/Products.php:51
     10859#: src/Admin/Onboarding/Steps/Products.php:57
    1086010860msgid "Product Image"
    1086110861msgstr ""
     
    1228912289msgstr ""
    1229012290
    12291 #. Translators: %s is the name of the download that was added to the cart.
    1229212291#: includes/cart/template.php:311
    1229312292msgid "Checkout."
     
    1314613145msgstr ""
    1314713146
    13148 #: includes/class-edd-cron.php:46
     13147#: includes/class-edd-cron.php:47
    1314913148msgid "Once Weekly"
    1315013149msgstr ""
     
    1316113160#: includes/class-edd-discount.php:696
    1316213161#: includes/gateways/stripe/includes/template-functions.php:377
    13163 #: includes/misc-functions.php:1433
     13162#: includes/misc-functions.php:1453
    1316413163msgid "Expired"
    1316513164msgstr ""
     
    1370413703#: includes/deprecated-functions.php:1591
    1370513704#: includes/deprecated-functions.php:1667
    13706 #: includes/emails/functions.php:59
     13705#: includes/emails/recapture.php:16
    1370713706msgid "You do not have permission to do this."
    1370813707msgstr ""
     
    1372013719#. Translators: %1$s - Opening anchor tag, %2$s - The url to dismiss the ajax notice, %3$s - Complete the opening of the anchor tag, %4$s - Open span tag, %4$s - Close span tag
    1372113720#: includes/deprecated-functions.php:1499
    13722 #: includes/emails/functions.php:151
     13721#: includes/emails/recapture.php:126
    1372313722msgid "%1$s %2$s %3$s %4$s Dismiss this notice. %5$s"
    1372413723msgstr ""
     
    1387913878msgstr ""
    1388013879
    13881 #: includes/emails/functions.php:110
     13880#: includes/emails/recapture.php:84
    1388213881msgid "Something went wrong. Recapture for EDD was not installed correctly."
    1388313882msgstr ""
    1388413883
    1388513884#. Translators: %1$s - <strong> tag, %2$s - </strong> tag, %3$s - <a> tag, %4$s - </a> tag
    13886 #: includes/emails/functions.php:138
     13885#: includes/emails/recapture.php:113
    1388713886msgid "%1$sRecover abandoned purchases like this one.%2$s %3$sTry Recapture for free%4$s."
    1388813887msgstr ""
     
    1592415923
    1592515924#. Translators: The charge ID from Stripe that is being refunded.
    15926 #: includes/gateways/stripe/includes/webhooks.php:92
     15925#: includes/gateways/stripe/includes/webhooks.php:105
    1592715926msgid "Charge %s has been fully refunded in Stripe."
    1592815927msgstr ""
    1592915928
    1593015929#. Translators: The charge ID from Stripe that is being partially refunded.
    15931 #: includes/gateways/stripe/includes/webhooks.php:96
     15930#: includes/gateways/stripe/includes/webhooks.php:109
    1593215931msgid "Charge %s partially refunded in Stripe."
    1593315932msgstr ""
    1593415933
    1593515934#. translators: %s Stripe Radar review opening reason.
    15936 #: includes/gateways/stripe/includes/webhooks.php:142
     15935#: includes/gateways/stripe/includes/webhooks.php:155
    1593715936msgid "Stripe Radar review opened with a reason of %s."
    1593815937msgstr ""
    1593915938
    1594015939#. translators: %s Stripe Radar review closing reason.
    15941 #: includes/gateways/stripe/includes/webhooks.php:187
     15940#: includes/gateways/stripe/includes/webhooks.php:200
    1594215941msgid "Stripe Radar review closed with a reason of %s."
    1594315942msgstr ""
     
    1599015989msgstr ""
    1599115990
    15992 #: includes/misc-functions.php:1217
     15991#: includes/misc-functions.php:1237
    1599315992msgid "Store Bot"
    1599415993msgstr ""
    1599515994
    15996 #: includes/misc-functions.php:1437
     15995#: includes/misc-functions.php:1457
    1599715996msgid "Verified"
    1599815997msgstr ""
    1599915998
    16000 #: includes/misc-functions.php:1438
     15999#: includes/misc-functions.php:1458
    1600116000msgid "Spam"
    1600216001msgstr ""
    1600316002
    16004 #: includes/misc-functions.php:1439
     16003#: includes/misc-functions.php:1459
    1600516004msgid "Deleted"
    1600616005msgstr ""
    1600716006
    16008 #: includes/misc-functions.php:1440
     16007#: includes/misc-functions.php:1460
    1600916008msgid "Cancelled"
    1601016009msgstr ""
    1601116010
    16012 #: includes/misc-functions.php:1554
     16011#: includes/misc-functions.php:1574
    1601316012msgid "Please define default parameters in the form of an array."
    1601416013msgstr ""
    1601516014
    16016 #: includes/misc-functions.php:1559
     16015#: includes/misc-functions.php:1579
    1601716016msgid "Please define an SVG icon filename."
    1601816017msgstr ""
     
    1604416043#. Translators: %1$s - type of amount being refunded (subtotal, tax, or total); %1$s - adjustment description; %3$s - maximum amount allowed for refund
    1604516044#: includes/orders/classes/class-refund-validator.php:390
    16046 msgid "The maximum refund %s for the adjustment \"%s\" is %s."
     16045msgid "The maximum refund %1$s for the adjustment \"%2$s\" is %3$s."
    1604716046msgstr ""
    1604816047
     
    1762517624msgstr ""
    1762617625
    17627 #. translators: %s is the name of the extension.
    1762817626#: src/Admin/Extensions/Legacy.php:45
    1762917627msgid "%s is now part of EDD!"
    1763017628msgstr ""
    1763117629
    17632 #. translators: %s is the name of the extension.
    1763317630#: src/Admin/Extensions/Legacy.php:50
    1763417631msgid "The functionality of %s has been merged into Easy Digital Downloads. It has been deactivated and you can safely delete the %s plugin."
     
    1769517692msgstr ""
    1769617693
    17697 #: src/Admin/Onboarding/Steps/Products.php:32
     17694#: src/Admin/Onboarding/Steps/Products.php:38
    1769817695msgid "Product details"
    1769917696msgstr ""
    1770017697
    17701 #: src/Admin/Onboarding/Steps/Products.php:37
     17698#: src/Admin/Onboarding/Steps/Products.php:43
    1770217699msgid "We'll get started with some basic information. Don't worry, you can add more details later. When you're finished here, the product will be saved as a draft so you can finish up later."
    1770317700msgstr ""
    1770417701
    17705 #: src/Admin/Onboarding/Steps/Products.php:45
     17702#: src/Admin/Onboarding/Steps/Products.php:51
    1770617703msgid "Product Name"
    1770717704msgstr ""
    1770817705
    17709 #: src/Admin/Onboarding/Steps/Products.php:57
     17706#: src/Admin/Onboarding/Steps/Products.php:63
    1771017707msgid "Set image"
    1771117708msgstr ""
    1771217709
    17713 #: src/Admin/Onboarding/Steps/Products.php:57
     17710#: src/Admin/Onboarding/Steps/Products.php:63
    1771417711msgid "Set Image"
    1771517712msgstr ""
    1771617713
    17717 #: src/Admin/Onboarding/Steps/Products.php:63
     17714#: src/Admin/Onboarding/Steps/Products.php:69
    1771817715msgid "Pricing Options"
    1771917716msgstr ""
    1772017717
    17721 #: src/Admin/Onboarding/Steps/Products.php:67
     17718#: src/Admin/Onboarding/Steps/Products.php:73
    1772217719msgid "Single price"
    1772317720msgstr ""
    1772417721
    17725 #: src/Admin/Onboarding/Steps/Products.php:68
     17722#: src/Admin/Onboarding/Steps/Products.php:74
    1772617723msgid "Variable price"
    1772717724msgstr ""
    1772817725
    17729 #: src/Admin/Onboarding/Steps/Products.php:73
     17726#: src/Admin/Onboarding/Steps/Products.php:79
    1773017727msgid "Product Price"
    1773117728msgstr ""
    1773217729
    17733 #: src/Admin/Onboarding/Steps/Products.php:127
     17730#: src/Admin/Onboarding/Steps/Products.php:141
    1773417731msgid "Add your first file"
    1773517732msgstr ""
    1773617733
    17737 #: src/Admin/Onboarding/Steps/Products.php:136
     17734#: src/Admin/Onboarding/Steps/Products.php:150
    1773817735msgid "Ready to add your first downloadable file to your product? Great! These files will be protected and only available to people who purchase your product. Not ready yet? No problem, you can always add and update files later."
    1773917736msgstr ""
    1774017737
    17741 #: src/Admin/Onboarding/Steps/Products.php:152
     17738#: src/Admin/Onboarding/Steps/Products.php:166
    1774217739msgid "Congratulations!"
    1774317740msgstr ""
    1774417741
    17745 #: src/Admin/Onboarding/Steps/Products.php:153
     17742#: src/Admin/Onboarding/Steps/Products.php:167
    1774617743msgid "You've set up your store and your first product has been created."
    1774717744msgstr ""
    1774817745
    17749 #: src/Admin/Onboarding/Steps/Products.php:154
     17746#: src/Admin/Onboarding/Steps/Products.php:168
    1775017747msgid "Edit My Product"
    1775117748msgstr ""
    1775217749
    17753 #: src/Admin/Onboarding/Steps/Products.php:155
     17750#: src/Admin/Onboarding/Steps/Products.php:169
    1775417751msgid "Explore Extensions"
    1775517752msgstr ""
     
    1890418901
    1890518902#: src/Admin/Settings/Tabs/Gateways.php:229
    18906 msgid "Enable Sequental Numbering"
     18903msgid "Enable Sequential Numbering"
    1890718904msgstr ""
    1890818905
     
    1898018977#. translators: %1$s: opening anchor tag, %2$s: closing anchor tag
    1898118978#: src/Admin/Settings/Tabs/Gateways.php:374
    18982 msgid "Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Dectection, %1$sUpgrade to Pro%2$s."
     18979msgid "Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Detection, %1$sUpgrade to Pro%2$s."
    1898318980msgstr ""
    1898418981
  • easy-digital-downloads/trunk/readme.txt

    r3061317 r3078938  
    55Tags: ecommerce, payments, sell, digital store, stripe
    66Requires at least: 5.8
    7 Tested up to: 6.4
     7Tested up to: 6.5
    88Requires PHP: 7.4
    9 Stable Tag: 3.2.11
     9Stable Tag: 3.2.12
    1010License: GNU Version 2 or Any Later Version
    1111
     
    7575* Email Receipts - The included email receipts are fully customizable to ensure that your brand is represented in your receipts.
    7676* Customer Management - Track your customer lifetime value and purchase history with the included Customer Management system. Quickly access a customer's entire purchase history, add notes, and link to WordPress users.
    77 * Refund and Dispute Handling - With our accounting friendly store management system, refunds and disputes ensure that your records are accurate and customers only have access to files when they should.
     77* Refund and Dispute Handling - With our automated order management tools, EDD ensures that your records are accurate and customers only have access to files when they should.
    7878* Customer Profile Editor - Give your users to their purchase history and profile management with the included blocks.
    7979
     
    148148= Is there a sample import file I can use to setup a demo store? =
    149149
    150 Yes! Simply go to Tools > Import and install the WordPress Importer, then you can use the XML file located at wp-content/plugins/easy-digital-downloads/assets/ and select the sample-products-import.xml file. This will create several sample products and plugin pages for you.
     150Yes! Simply go to Tools > Import and install the WordPress Importer, then you can use the sample-products-import.xml file located in wp-content/plugins/easy-digital-downloads/assets/. This will create several sample products and plugin pages for you.
    151151
    152152= Can I import all the products from my existing store into EDD? =
     
    225225
    226226== Changelog ==
     227= 3.2.12 =
     228* Compatibility: Fixed a conflict between Setup Wizard and the Multi-Currency extension.
     229* Stripe: Improved the handling of refunding charges via the Stripe Dashboard.
     230* Exports: Improved performance, management, and protection of export files generated by EDD.
     231* Emails: Improved the validation before installing the Recapture integration.
     232
     233View the full changelog at [https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/](https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
     234
    227235= 3.2.11 =
    228236* Order Management: When searching orders, a Product ID was being erroneously added to the filter arguments when it not have been.
    229 
    230 View the full changelog at [https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/](https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
    231237
    232238= 3.2.10 =
     
    243249* HTML: The Textarea HTML field could add empty content to the value.
    244250* Checkout: The Privacy Policy checkbox may not always show when expected.
    245 * Blocks: Improved loading of Easy Digital Download blocks.
    246 * Blocks: Improved the handling of Easy Digital Download blocks when using a classic theme.
     251* Blocks: Improved loading of Easy Digital Downloads blocks.
     252* Blocks: Improved the handling of Easy Digital Downloads blocks when using a classic theme.
    247253* Orders: Manually creating orders in the admin could fail to save the order due to a capability check.
    248254* Migration: Improved the reliability of the EDD 3.0+ migration routine for possibly corrupt serialized data.
     
    251257= 3.2.9 =
    252258* Stripe: Resending the purchase receipt could fail if including the Stripe statement descriptor in the email template.
    253 * Settings: Improve the reliability of determining the timezone settings in WordPress.
     259* Settings: Improved the reliability of determining the timezone settings in WordPress.
    254260* Reports: When using custom dates for reporting, some timezone settings could make the dates show incorrectly.
    255261* Emails: Adjusted when the deprecation notices will be shown for the legacy email hooks.
     
    390396* Fix: EDD Blocks placeholder styles could interfere with WordPress Core placeholders.
    391397* Fix: Additional, not officially supported fee data is now stored as order adjustment metadata.
    392 * Dev: Many filters and hooks that passed EDD_Payment objects now have a complimentary hook or filter that uses EDD\Orders\Order objects.
     398* Dev: Many filters and hooks that passed EDD_Payment objects now have a complementary hook or filter that uses EDD\Orders\Order objects.
    393399* Dev: Easy Digital Downloads is no longer registering the edd_payment and edd_discount post types.
    394400* Dev: Easy Digital Downloads – Core now holds the Stripe base code, and Stripe Pro 3.0.0 only contains pro features.
  • easy-digital-downloads/trunk/src/Admin/Onboarding/Steps/Products.php

    r3036940 r3078938  
    1313
    1414// Exit if accessed directly.
    15 defined( 'ABSPATH' ) || exit;
     15defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
    1616
     17/**
     18 * Products step class.
     19 */
    1720class Products extends Step {
    1821
     
    2326     */
    2427    public function step_html() {
    25         $currency_position  = edd_get_option( 'currency_position', 'before' );
     28        $currency_position = edd_get_option( 'currency_position', 'before' );
     29        // Remove all actions that may have been added by extensions.
     30        remove_all_actions( 'edd_after_price_field' );
     31        remove_all_actions( 'edd_download_price_option_row' );
    2632        ?>
    2733        <form method="post" class="edd-onboarding__create-product-form">
     
    124130                                <div class="edd-form-group__control">
    125131                                    <label class="edd-toggle edd-onboarding__upload-files-toggle" for="_edd_upload_files">
    126                                         <?php echo EDD()->html->checkbox( array( 'name' => '_edd_upload_files', 'current' => null, 'class' => 'edd-form-group__input', ) ); ?>
     132                                        <?php
     133                                        echo EDD()->html->checkbox(
     134                                            array(
     135                                                'name'    => '_edd_upload_files',
     136                                                'current' => null,
     137                                                'class'   => 'edd-form-group__input',
     138                                            )
     139                                        );
     140                                        ?>
    127141                                        <span><?php echo esc_html_e( 'Add your first file', 'easy-digital-downloads' ); ?></span>
    128142                                    </label>
  • easy-digital-downloads/trunk/src/Admin/Settings/Tabs/Gateways.php

    r3036940 r3078938  
    227227            'enable_sequential'  => array(
    228228                'id'    => 'enable_sequential',
    229                 'name'  => __( 'Enable Sequental Numbering', 'easy-digital-downloads' ),
     229                'name'  => __( 'Enable Sequential Numbering', 'easy-digital-downloads' ),
    230230                'check' => __( 'Check this box to enable sequential order numbers.', 'easy-digital-downloads' ),
    231231                'desc'  => __( 'Does not impact previous orders. Future orders will be sequential.', 'easy-digital-downloads' ),
     
    372372        return sprintf(
    373373            /* translators: %1$s: opening anchor tag, %2$s: closing anchor tag */
    374             __( 'Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Dectection, %1$sUpgrade to Pro%2$s.', 'easy-digital-downloads' ),
     374            __( 'Increase conversions by auto-filling address information for customers during checkout. To enable GeoLocation Detection, %1$sUpgrade to Pro%2$s.', 'easy-digital-downloads' ),
    375375            '<a href="' . $upgrade_link . '" class="edd-pro-upgrade" target="_blank">',
    376376            '</a>'
Note: See TracChangeset for help on using the changeset viewer.