Changeset 2532824
- Timestamp:
- 05/17/2021 09:29:27 AM (5 years ago)
- Location:
- woocommerce-store-toolkit/trunk
- Files:
-
- 190 added
- 8 edited
-
freemius (added)
-
freemius/LICENSE.txt (added)
-
freemius/README.md (added)
-
freemius/assets (added)
-
freemius/assets/css (added)
-
freemius/assets/css/admin (added)
-
freemius/assets/css/admin/account.css (added)
-
freemius/assets/css/admin/add-ons.css (added)
-
freemius/assets/css/admin/affiliation.css (added)
-
freemius/assets/css/admin/checkout.css (added)
-
freemius/assets/css/admin/common.css (added)
-
freemius/assets/css/admin/connect.css (added)
-
freemius/assets/css/admin/debug.css (added)
-
freemius/assets/css/admin/dialog-boxes.css (added)
-
freemius/assets/css/admin/gdpr-optin-notice.css (added)
-
freemius/assets/css/admin/index.php (added)
-
freemius/assets/css/admin/plugins.css (added)
-
freemius/assets/css/customizer.css (added)
-
freemius/assets/css/index.php (added)
-
freemius/assets/img (added)
-
freemius/assets/img/index.php (added)
-
freemius/assets/img/plugin-icon.png (added)
-
freemius/assets/img/theme-icon.png (added)
-
freemius/assets/img/woocommerce-store-toolkit.png (added)
-
freemius/assets/index.php (added)
-
freemius/assets/js (added)
-
freemius/assets/js/index.php (added)
-
freemius/assets/js/nojquery.ba-postmessage.js (added)
-
freemius/assets/js/nojquery.ba-postmessage.min.js (added)
-
freemius/assets/js/postmessage.js (added)
-
freemius/config.php (added)
-
freemius/includes (added)
-
freemius/includes/class-freemius-abstract.php (added)
-
freemius/includes/class-freemius.php (added)
-
freemius/includes/class-fs-admin-notices.php (added)
-
freemius/includes/class-fs-api.php (added)
-
freemius/includes/class-fs-logger.php (added)
-
freemius/includes/class-fs-options.php (added)
-
freemius/includes/class-fs-plugin-updater.php (added)
-
freemius/includes/class-fs-security.php (added)
-
freemius/includes/class-fs-storage.php (added)
-
freemius/includes/class-fs-user-lock.php (added)
-
freemius/includes/customizer (added)
-
freemius/includes/customizer/class-fs-customizer-support-section.php (added)
-
freemius/includes/customizer/class-fs-customizer-upsell-control.php (added)
-
freemius/includes/customizer/index.php (added)
-
freemius/includes/debug (added)
-
freemius/includes/debug/class-fs-debug-bar-panel.php (added)
-
freemius/includes/debug/debug-bar-start.php (added)
-
freemius/includes/debug/index.php (added)
-
freemius/includes/entities (added)
-
freemius/includes/entities/class-fs-affiliate-terms.php (added)
-
freemius/includes/entities/class-fs-affiliate.php (added)
-
freemius/includes/entities/class-fs-billing.php (added)
-
freemius/includes/entities/class-fs-entity.php (added)
-
freemius/includes/entities/class-fs-payment.php (added)
-
freemius/includes/entities/class-fs-plugin-info.php (added)
-
freemius/includes/entities/class-fs-plugin-license.php (added)
-
freemius/includes/entities/class-fs-plugin-plan.php (added)
-
freemius/includes/entities/class-fs-plugin-tag.php (added)
-
freemius/includes/entities/class-fs-plugin.php (added)
-
freemius/includes/entities/class-fs-pricing.php (added)
-
freemius/includes/entities/class-fs-scope-entity.php (added)
-
freemius/includes/entities/class-fs-site.php (added)
-
freemius/includes/entities/class-fs-subscription.php (added)
-
freemius/includes/entities/class-fs-user.php (added)
-
freemius/includes/entities/index.php (added)
-
freemius/includes/fs-core-functions.php (added)
-
freemius/includes/fs-essential-functions.php (added)
-
freemius/includes/fs-plugin-info-dialog.php (added)
-
freemius/includes/i18n.php (added)
-
freemius/includes/index.php (added)
-
freemius/includes/l10n.php (added)
-
freemius/includes/managers (added)
-
freemius/includes/managers/class-fs-admin-menu-manager.php (added)
-
freemius/includes/managers/class-fs-admin-notice-manager.php (added)
-
freemius/includes/managers/class-fs-cache-manager.php (added)
-
freemius/includes/managers/class-fs-gdpr-manager.php (added)
-
freemius/includes/managers/class-fs-key-value-storage.php (added)
-
freemius/includes/managers/class-fs-license-manager.php (added)
-
freemius/includes/managers/class-fs-option-manager.php (added)
-
freemius/includes/managers/class-fs-plan-manager.php (added)
-
freemius/includes/managers/class-fs-plugin-manager.php (added)
-
freemius/includes/managers/index.php (added)
-
freemius/includes/sdk (added)
-
freemius/includes/sdk/Exceptions (added)
-
freemius/includes/sdk/Exceptions/ArgumentNotExistException.php (added)
-
freemius/includes/sdk/Exceptions/EmptyArgumentException.php (added)
-
freemius/includes/sdk/Exceptions/Exception.php (added)
-
freemius/includes/sdk/Exceptions/InvalidArgumentException.php (added)
-
freemius/includes/sdk/Exceptions/OAuthException.php (added)
-
freemius/includes/sdk/Exceptions/index.php (added)
-
freemius/includes/sdk/FreemiusBase.php (added)
-
freemius/includes/sdk/FreemiusWordPress.php (added)
-
freemius/includes/sdk/LICENSE.txt (added)
-
freemius/includes/sdk/index.php (added)
-
freemius/includes/supplements (added)
-
freemius/includes/supplements/fs-essential-functions-1.1.7.1.php (added)
-
freemius/includes/supplements/fs-essential-functions-2.2.1.php (added)
-
freemius/includes/supplements/index.php (added)
-
freemius/index.php (added)
-
freemius/languages (added)
-
freemius/languages/freemius-cs_CZ.mo (added)
-
freemius/languages/freemius-da_DK.mo (added)
-
freemius/languages/freemius-en.mo (added)
-
freemius/languages/freemius-es_ES.mo (added)
-
freemius/languages/freemius-fr_FR.mo (added)
-
freemius/languages/freemius-he_IL.mo (added)
-
freemius/languages/freemius-hu_HU.mo (added)
-
freemius/languages/freemius-it_IT.mo (added)
-
freemius/languages/freemius-ja.mo (added)
-
freemius/languages/freemius-nl_NL.mo (added)
-
freemius/languages/freemius-ru_RU.mo (added)
-
freemius/languages/freemius-ta.mo (added)
-
freemius/languages/freemius-zh_CN.mo (added)
-
freemius/languages/freemius.pot (added)
-
freemius/languages/index.php (added)
-
freemius/package.json (added)
-
freemius/require.php (added)
-
freemius/start.php (added)
-
freemius/templates (added)
-
freemius/templates/account (added)
-
freemius/templates/account.php (added)
-
freemius/templates/account/billing.php (added)
-
freemius/templates/account/index.php (added)
-
freemius/templates/account/partials (added)
-
freemius/templates/account/partials/activate-license-button.php (added)
-
freemius/templates/account/partials/addon.php (added)
-
freemius/templates/account/partials/deactivate-license-button.php (added)
-
freemius/templates/account/partials/index.php (added)
-
freemius/templates/account/partials/site.php (added)
-
freemius/templates/account/payments.php (added)
-
freemius/templates/add-ons.php (added)
-
freemius/templates/add-trial-to-pricing.php (added)
-
freemius/templates/admin-notice.php (added)
-
freemius/templates/ajax-loader.php (added)
-
freemius/templates/auto-installation.php (added)
-
freemius/templates/checkout.php (added)
-
freemius/templates/connect.php (added)
-
freemius/templates/contact.php (added)
-
freemius/templates/debug (added)
-
freemius/templates/debug.php (added)
-
freemius/templates/debug/api-calls.php (added)
-
freemius/templates/debug/index.php (added)
-
freemius/templates/debug/logger.php (added)
-
freemius/templates/debug/plugins-themes-sync.php (added)
-
freemius/templates/debug/scheduled-crons.php (added)
-
freemius/templates/email.php (added)
-
freemius/templates/firewall-issues-js.php (added)
-
freemius/templates/forms (added)
-
freemius/templates/forms/affiliation.php (added)
-
freemius/templates/forms/data-debug-mode.php (added)
-
freemius/templates/forms/deactivation (added)
-
freemius/templates/forms/deactivation/contact.php (added)
-
freemius/templates/forms/deactivation/form.php (added)
-
freemius/templates/forms/deactivation/index.php (added)
-
freemius/templates/forms/deactivation/retry-skip.php (added)
-
freemius/templates/forms/index.php (added)
-
freemius/templates/forms/license-activation.php (added)
-
freemius/templates/forms/optout.php (added)
-
freemius/templates/forms/premium-versions-upgrade-handler.php (added)
-
freemius/templates/forms/premium-versions-upgrade-metadata.php (added)
-
freemius/templates/forms/resend-key.php (added)
-
freemius/templates/forms/subscription-cancellation.php (added)
-
freemius/templates/forms/trial-start.php (added)
-
freemius/templates/forms/user-change.php (added)
-
freemius/templates/gdpr-optin-js.php (added)
-
freemius/templates/index.php (added)
-
freemius/templates/js (added)
-
freemius/templates/js/index.php (added)
-
freemius/templates/js/jquery.content-change.php (added)
-
freemius/templates/js/open-license-activation.php (added)
-
freemius/templates/js/style-premium-theme.php (added)
-
freemius/templates/partials (added)
-
freemius/templates/partials/index.php (added)
-
freemius/templates/partials/network-activation.php (added)
-
freemius/templates/plugin-icon.php (added)
-
freemius/templates/plugin-info (added)
-
freemius/templates/plugin-info/description.php (added)
-
freemius/templates/plugin-info/features.php (added)
-
freemius/templates/plugin-info/index.php (added)
-
freemius/templates/plugin-info/screenshots.php (added)
-
freemius/templates/powered-by.php (added)
-
freemius/templates/pricing.php (added)
-
freemius/templates/secure-https-header.php (added)
-
freemius/templates/sticky-admin-notice-js.php (added)
-
freemius/templates/tabs-capture-js.php (added)
-
freemius/templates/tabs.php (added)
-
includes/admin.php (modified) (4 diffs)
-
includes/formatting.php (added)
-
includes/freemius.php (added)
-
includes/functions.php (modified) (3 diffs)
-
readme.txt (modified) (3 diffs)
-
store-toolkit.php (modified) (4 diffs)
-
templates/admin/tabs-nuke.php (modified) (2 diffs)
-
templates/admin/tabs-overview.php (modified) (1 diff)
-
templates/admin/tabs-settings.php (modified) (2 diffs)
-
templates/admin/toolkit.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
woocommerce-store-toolkit/trunk/includes/admin.php
r2257020 r2532824 131 131 } 132 132 133 // Check Settings option 134 $permanently_delete_products = woo_st_get_option( 'permanently_delete_products', 1 ); 135 if( empty( $permanently_delete_products ) ) 136 return $actions; 137 133 138 $actions['permanent_delete'] = '<span class="delete"><a href="' . wp_nonce_url( admin_url( 'edit.php?post_type=product&ids=' . $post->ID . '&action=permanent_delete_product' ), 'woo_st-permanent_delete_' . $post->ID ) . '" title="' . esc_attr__( 'Permanently delete this product', 'woocommerce-store-toolkit' ) . '" rel="permalink">' . __( 'Delete Permanently', 'woocommerce' ) . '</a></span>'; 134 139 … … 175 180 } 176 181 177 $post_status = ( isset( $_REQUEST['post_status'] ) ? $_REQUEST['post_status'] : false ); 178 if( $post_type == 'product' && ( $post_status <> 'trash' ) ) { ?> 182 $post_status = ( isset( $_REQUEST['post_status'] ) ? sanitize_text_field( $_REQUEST['post_status'] ) : false ); 183 if( 184 $post_type == 'product' && 185 ( $post_status <> 'trash' ) 186 ) { 187 188 // Check Settings option 189 $permanently_delete_products = woo_st_get_option( 'permanently_delete_products', 1 ); 190 if( empty( $permanently_delete_products ) ) 191 return; 192 193 ?> 179 194 <script type="text/javascript"> 180 195 jQuery(document).ready(function() { 196 // Add Delete Permanently to bulk actions menu on the Products screen 181 197 jQuery('<option>').val('permanent_delete').text('<?php _e( 'Delete Permanently' )?>').appendTo("select[name='action']"); 182 198 jQuery('<option>').val('permanent_delete').text('<?php _e( 'Delete Permanently' )?>').appendTo("select[name='action2']"); … … 502 518 503 519 $products = woo_st_return_count( 'product' ); 520 if( !empty( $products ) ) { 521 $product_statuses = woo_st_get_product_statuses(); 522 } 504 523 $images = woo_st_return_count( 'product_image' ); 505 524 $tags = woo_st_return_count( 'product_tag' ); … … 573 592 case 'settings': 574 593 $troubleshooting_url = 'https://www.visser.com.au/documentation/store-toolkit/'; 594 595 $permanently_delete_products = woo_st_get_option( 'permanently_delete_products', 1 ); 596 575 597 $enable_cron = woo_st_get_option( 'enable_cron', 0 ); 576 598 $secret_key = woo_st_get_option( 'secret_key', '' ); -
woocommerce-store-toolkit/trunk/includes/functions.php
r2390340 r2532824 183 183 184 184 } 185 186 function woo_st_get_product_statuses() { 187 188 /* 189 $product_statuses = get_post_statuses(); 190 // $product_statuses = get_post_stati(); 191 if( !empty( $product_statuses ) ) { 192 foreach( $product_statuses as $key => $product_status ) { 193 $product_statuses[$key]->count = 194 } 195 } 196 */ 197 $post_type = 'product'; 198 $product_statuses = wp_count_posts( $post_type ); 199 // Trim off WooCommerce Order Statuses 200 if( !empty( $product_statuses ) ) { 201 $product_statuses = (array)$product_statuses; 202 foreach( $product_statuses as $product_status => $product_count ) { 203 if( 204 strstr( $product_status, 'wc-' ) !== false || 205 strstr( $product_status, 'request-' ) !== false 206 ) { 207 unset( $product_statuses[$product_status] ); 208 } 209 } 210 } 211 return $product_statuses; 212 213 } 185 214 186 215 function woo_st_get_order_statuses() { … … 476 505 function woo_st_settings_save() { 477 506 507 // Permanently Delete Products bulk action 508 woo_st_update_option( 'permanently_delete_products', ( isset( $_POST['permanently_delete_products'] ) ? absint( (int)$_POST['permanently_delete_products'] ) : 1 ) ); 509 478 510 // CRON settings 479 511 $enable_cron = absint( $_POST['enable_cron'] ); … … 594 626 'numberposts' => 100 595 627 ); 628 629 // Check for Product Status filter 630 if( !empty( $data['product_status'] ) ) { 631 $args['post_status'] = $data['product_status']; 632 } 596 633 597 634 // Allow Plugin/Theme authors to add support for tactical nukes -
woocommerce-store-toolkit/trunk/readme.txt
r2509934 r2532824 6 6 Requires at least: 2.9.2 7 7 Tested up to: 5.7 8 Stable tag: 2.3 8 Stable tag: 2.3.1 9 9 License: GPLv2 or later 10 10 … … 64 64 * WooCommerce Logs 65 65 * Advanced Google Product Feed 66 * Delete Products by Product Status 66 67 * Delete Products by Product Category 67 68 * Delete Orders by Order Status … … 121 122 122 123 == Changelog == 124 125 = 2.3.1 = 126 * Added: Delete Products by Product Status 127 * Added: Setting option to show/hide Delete Permanently Product button and menu item (thanks @eftcolumbus) 128 * Added: Opt-in Freemius Plugin usage monitoring 123 129 124 130 = 2.3 = -
woocommerce-store-toolkit/trunk/store-toolkit.php
r2509934 r2532824 4 4 Plugin URI: https://wordpress.org/plugins/woocommerce-store-toolkit/ 5 5 Description: Store Toolkit includes a growing set of commonly-used WooCommerce administration tools aimed at web developers and store maintainers. 6 Version: 2.3 6 Version: 2.3.1 7 7 Author: Visser Labs 8 8 Author URI: http://www.visser.com.au/about/ … … 13 13 14 14 WC requires at least: 2.3 15 WC tested up to: 5. 1.015 WC tested up to: 5.3.0 16 16 */ 17 17 … … 25 25 include_once( WOO_ST_PATH . 'common/common.php' ); 26 26 include_once( WOO_ST_PATH . 'includes/functions.php' ); 27 include_once( WOO_ST_PATH . 'includes/formatting.php' ); 28 include_once( WOO_ST_PATH . 'includes/freemius.php' ); 27 29 if( defined( 'WP_CLI' ) && WP_CLI ) 28 30 include_once( WOO_ST_PATH . 'includes/wp-cli.php' ); … … 86 88 87 89 // WooCommerce 88 if( isset( $_POST['woo_st_products'] ) ) 89 $response = woo_st_clear_dataset( 'product' ); 90 if( isset( $_POST['woo_st_products'] ) ) { 91 $product_status = ( isset( $_POST['woo_st_products_status'] ) ? array_map( 'sanitize_text_field', $_POST['woo_st_products_status'] ) : false ); 92 $args = array( 93 'product_status' => array_values( $product_status ) 94 ); 95 $response = woo_st_clear_dataset( 'product', $args ); 96 } 90 97 if( isset( $_POST['woo_st_products_category'] ) ) { 91 98 $categories = $_POST['woo_st_products_category']; -
woocommerce-store-toolkit/trunk/templates/admin/tabs-nuke.php
r1962510 r2532824 1 1 <ul class="subsubsub"> 2 2 <li><a href="#empty-woocommerce-tables"><?php _e( 'Empty WooCommerce Tables', 'woocommerce-store-toolkit' ); ?></a> |</li> 3 <li><a href="#empty-product-by-status"><?php _e( 'Delete Products by Product Status', 'woocommerce-store-toolkit' ); ?></a> |</li> 3 4 <li><a href="#empty-product-by-category"><?php _e( 'Delete Products by Product Category', 'woocommerce-store-toolkit' ); ?></a> |</li> 4 5 <li><a href="#delete-sales-by-sale-status"><?php _e( 'Delete Orders by Order Status', 'woocommerce-store-toolkit' ); ?></a> |</li> … … 248 249 <!-- .postbox --> 249 250 251 <div id="empty-product-by-status" class="postbox"> 252 <h3 class="hndle"><?php _e( 'Delete Products by Product Status', 'woocommerce-store-toolkit' ); ?></h3> 253 <div class="inside"> 254 <?php if( $products ) { ?> 255 <p class="description"><?php _e( 'Remove Products based on the Product Status by selecting the the Product Status below, then click Remove to permanently remove those Products.', 'woocommerce-store-toolkit' ); ?></p> 256 <ul> 257 <?php if( $product_statuses ) { ?> 258 <?php foreach( $product_statuses as $product_status => $product_count ) { ?> 259 <li> 260 <label> 261 <input type="checkbox" name="woo_st_products_status[<?php echo $product_status; ?>]" value="<?php echo $product_status; ?>"<?php if( $product_count == 0 ) { ?> disabled="disabled"<?php } ?> /> 262 <?php echo woo_st_format_post_status( $product_status ); ?> (<?php echo $product_count; ?>) 263 </label> 264 </li> 265 <?php } ?> 266 <?php } else { ?> 267 <li><?php _e( 'No Product Status\'s were found.', 'woocommerce-store-toolkit' ); ?></li> 268 <?php } ?> 269 </ul> 270 <p class="submit"> 271 <input type="button" id="empty-products-by-status-remove" value="<?php _e( 'Remove', 'woocommerce-store-toolkit' ); ?>" class="button-primary confirm-button" data-confirm="<?php _e( 'This will permanently remove Products matching the selected Product Status. Are you sure you want to proceed?', 'woocommerce-store-toolkit' ); ?>" /> 272 </p> 273 <?php } else { ?> 274 <p><?php _e( 'No Products were found.', 'woocommerce-store-toolkit' ); ?></p> 275 <?php } ?> 276 </div> 277 </div> 278 <!-- .postbox --> 250 279 <div id="empty-product-by-category" class="postbox"> 251 280 <h3 class="hndle"><?php _e( 'Delete Products by Product Category', 'woocommerce-store-toolkit' ); ?></h3> -
woocommerce-store-toolkit/trunk/templates/admin/tabs-overview.php
r1962510 r2532824 3 3 <ul class="ul-disc"> 4 4 <li><a href="<?php echo esc_url( add_query_arg( 'tab', 'nuke' ) ); ?>#empty-woocommerce-tables"><?php _e( 'Empty WooCommerce Tables', 'woocommerce-store-toolkit' ); ?></a></li> 5 <li><a href="<?php echo esc_url( add_query_arg( 'tab', 'nuke' ) ); ?>#empty-product-by-status"><?php _e( 'Delete Products by Product Status', 'woocommerce-store-toolkit' ); ?></a></li> 5 6 <li><a href="<?php echo esc_url( add_query_arg( 'tab', 'nuke' ) ); ?>#empty-product-by-category"><?php _e( 'Delete Products by Product Category', 'woocommerce-store-toolkit' ); ?></a></li> 6 7 <li><a href="<?php echo esc_url( add_query_arg( 'tab', 'nuke' ) ); ?>#delete-sales-by-sale-status"><?php _e( 'Delete Orders by Order Status', 'woocommerce-store-toolkit' ); ?></a></li> -
woocommerce-store-toolkit/trunk/templates/admin/tabs-settings.php
r1577286 r2532824 1 1 <ul class="subsubsub"> 2 <li><a href="#general-settings"><?php _e( 'General Settings', 'woocommerce-store-toolkit' ); ?></a> |</li> 2 3 <li><a href="#cron-nuke"><?php _e( 'CRON Nuke', 'woocommerce-store-toolkit' ); ?></a></li> 3 4 </ul> … … 8 9 <table class="form-table"> 9 10 <tbody> 11 12 <tr id="general-settings"> 13 <td colspan="2" style="padding:0;"> 14 <h3><div class="dashicons dashicons-admin-settings"></div> <?php _e( 'General Settings', 'woocommerce-store-toolkit' ); ?></h3> 15 <p class="description"><?php _e( 'Manage options across Store Toolkit from this screen.', 'woocommerce-store-toolkit' ); ?></p> 16 </td> 17 </tr> 18 <tr> 19 <th> 20 <label for="permanently_delete_products"><?php _e( 'Products bulk action: Delete Permanently', 'woocommerce-store-importer' ); ?></label> 21 </th> 22 <td> 23 <select id="permanently_delete_products" name="permanently_delete_products"> 24 <option value="1"<?php selected( $permanently_delete_products, 1 ); ?>><?php _e( 'Show Delete Permanently button and menu item', 'woocommerce-store-importer' ); ?></option> 25 <option value="0"<?php selected( $permanently_delete_products, 0 ); ?>><?php _e( 'Hide Delete Permanently button and menu item', 'woocommerce-store-importer' ); ?></option> 26 </select> 27 <p class="description"><?php _e( 'Store Toolkit adds a Delete Permanently button and Bulk actions menu item to the Products screen. By default this option is turned on.', 'woocommerce-store-toolkit' ); ?></p> 28 </td> 29 </tr> 10 30 11 31 <tr id="cron-exports"> -
woocommerce-store-toolkit/trunk/templates/admin/toolkit.js
r1890655 r2532824 24 24 }); 25 25 26 $j('#empty-products-by-status-remove').click(function (e) { 27 var checked_items = $j('#empty-product-by-status input:checked').length; 28 if( !checked_items ) { 29 alert( 'At least one Product Status needs to be selected.' ); 30 e.stopImmediatePropagation(); 31 return; 32 } 33 $j('#products').attr('checked', true); 34 }); 26 35 $j('#empty-product-by-category-remove').click(function () { 27 36 var checked_items = $j('#empty-product-by-category input:checked').length;
Note: See TracChangeset
for help on using the changeset viewer.