📁 File Manager Pro
v10.0.3 | PHP: 8.2.31
Server: LiteSpeed
2026-07-03 18:13:45
📂
/ (Root)
/
home
/
orkouolp
/
web
/
orkofarms.com
/
wp-content
/
plugins
/
woocommerce-deals
/
includes
📍 /home/orkouolp/web/orkofarms.com/wp-content/plugins/woocommerce-deals/includes
🔄 Refresh
✏️
Editing: class-admin.php
Writable
<?php /** * Main class of plugin for admin */ class TAWC_Deals_Admin { /** * Class constructor. */ public function __construct() { add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'woocommerce_product_options_pricing', array( $this, 'add_deal_fields' ) ); add_action( 'save_post', array( $this, 'save_product_data' ) ); add_action( 'woocommerce_recorded_sales', array( $this, 'update_deal_sales' ) ); add_action( 'woocommerce_scheduled_sales', array( $this, 'schedule_deals' ) ); } /** * Enqueue scripts * * @param string $hook */ public function enqueue_scripts( $hook ) { global $post; if ( $hook != 'post-new.php' && $hook != 'post.php' ) { return; } if ( 'product' != $post->post_type ) { return; } wp_enqueue_script( 'tawc-deals-admin', plugins_url( '/assets/js/tawc-deals-admin.js', TAWC_DEALS_PLUGIN_FILE ), array( 'jquery' ), TAWC_DEALS_VERSION, true ); } /** * Add the sale quantity field */ public function add_deal_fields() { global $thepostid; $quantity = intval( get_post_meta( $thepostid, '_deal_quantity', true ) ); $sales_counts = get_post_meta( $thepostid, '_deal_sales_counts', true ); $sales_counts = intval( $sales_counts ); $min = $sales_counts > 0 ? $sales_counts + 1 : 0; ?> <p class="form-field _deal_quantity_field"> <label for="_sale_quantity"><?php esc_html_e( 'Sale quantity', 'tawc-deals' ) ?></label> <?php echo wc_help_tip( __( 'Set this quantity will make the product to be a deal. The sale will end when this quantity is sold out.', 'tawc-deals' ) ); ?> <input type="number" min="<?php echo $min; ?>" class="short" name="_deal_quantity" id="_deal_quantity" value="<?php echo esc_attr( $quantity ) ?>"> </p> <p class="form-field _deal_sales_counts_field"> <label for="_sale_quantity"><?php esc_html_e( 'Sold Items', 'tawc-deals' ) ?></label> <?php echo wc_help_tip( __( 'Set this sold items should be less than the sale quantity.', 'tawc-deals' ) ); ?> <input type="number" class="short" name="_deal_sales_counts" id="_deal_sales_counts" value="<?php echo esc_attr( $sales_counts ) ?>"> </p> <?php } /** * Save product data * * @param int $post_id */ public function save_product_data( $post_id ) { if ( 'product' !== get_post_type( $post_id ) ) { return; } if ( isset( $_POST['_deal_quantity'] ) ) { $current_sales = get_post_meta( $post_id, '_deal_sales_counts', true ); // Reset sales counts if set the qty to 0 if ( $_POST['_deal_quantity'] <= 0 ) { update_post_meta( $post_id, '_deal_sales_counts', 0 ); update_post_meta( $post_id, '_deal_quantity', '' ); } elseif ( $_POST['_deal_quantity'] < $current_sales ) { $this->end_deal( $post_id ); } elseif ( $_POST['_deal_quantity'] < $_POST['_deal_sales_counts'] ) { $this->end_deal( $post_id ); } else { update_post_meta( $post_id, '_deal_quantity', wc_clean( $_POST['_deal_quantity'] ) ); update_post_meta( $post_id, '_deal_sales_counts', wc_clean( $_POST['_deal_sales_counts'] ) ); } } else { // Reset sales counts and qty setting update_post_meta( $post_id, '_deal_sales_counts', 0 ); update_post_meta( $post_id, '_deal_quantity', '' ); } } /** * Update deal sales count * * @param int $order_id */ public function update_deal_sales( $order_id ) { $order_post = get_post( $order_id ); // Only apply for the main order if ( $order_post->post_parent != 0 ) { return; } $order = wc_get_order( $order_id ); if ( sizeof( $order->get_items() ) > 0 ) { foreach ( $order->get_items() as $item ) { if ( $product_id = $item->get_product_id() ) { if ( ! tawc_is_deal_product( $product_id ) ) { continue; } add_post_meta( $product_id, '_deal_sales_counts', 0, true ); $current_sales = get_post_meta( $product_id, '_deal_sales_counts', true ); $deal_quantity = get_post_meta( $product_id, '_deal_quantity', true ); $new_sales = $current_sales + absint( $item['qty'] ); // Reset deal sales and remove sale price when reach to limit sale quantity if ( $new_sales >= $deal_quantity ) { $this->end_deal( $product_id ); } else { update_post_meta( $product_id, '_deal_sales_counts', $new_sales ); } } } } } /** * Remove deal data when sale is scheduled end */ public function schedule_deals() { $data_store = WC_Data_Store::load( 'product' ); $product_ids = $data_store->get_ending_sales(); if ( $product_ids ) { foreach ( $product_ids as $product_id ) { if ( $product = wc_get_product( $product_id ) ) { update_post_meta( $product_id, '_deal_sales_counts', 0 ); update_post_meta( $product_id, '_deal_quantity', '' ); } } } } /** * Remove deal data of a product. * Remove sale price * Remove sale schedule dates * Remove sale quantity * Reset sales counts * * @param int $post_id */ public function end_deal( $post_id ) { update_post_meta( $post_id, '_deal_sales_counts', 0 ); update_post_meta( $post_id, '_deal_quantity', '' ); // Remove sale price $product = wc_get_product( $post_id ); $regular_price = $product->get_regular_price(); $product->set_price( $regular_price ); $product->set_sale_price( '' ); $product->set_date_on_sale_to( '' ); $product->set_date_on_sale_from( '' ); $product->save(); delete_transient( 'wc_products_onsale' ); } } new TAWC_Deals_Admin;
💾 Save Changes
❌ Cancel