!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/kkart-pro/includes/   drwxr-xr-x
Free 290.66 GB of 429.69 GB (67.65%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     kkart-stock-functions.php (12.45 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Kkart Stock Functions
 *
 * Functions used to manage product stock levels.
 *
 * @package Kkart\Functions
 * @version 3.4.0
 */

defined'ABSPATH' ) || exit;

/**
 * Update a product's stock amount.
 *
 * Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues).
 *
 * @since  3.0.0 this supports set, increase and decrease.
 *
 * @param  int|KKART_Product $product        Product ID or product instance.
 * @param  int|null       $stock_quantity Stock quantity.
 * @param  string         $operation      Type of opertion, allows 'set', 'increase' and 'decrease'.
 * @param  bool           $updating       If true, the product object won't be saved here as it will be updated later.
 * @return bool|int|null
 */
function kkart_update_product_stock$product$stock_quantity null$operation 'set'$updating false ) {
    if ( ! 
is_a$product'KKART_Product' ) ) {
        
$product kkart_get_product$product );
    }

    if ( ! 
$product ) {
        return 
false;
    }

    if ( ! 
is_null$stock_quantity ) && $product->managing_stock() ) {
        
// Some products (variations) can have their stock managed by their parent. Get the correct object to be updated here.
        
$product_id_with_stock $product->get_stock_managed_by_id();
        
$product_with_stock    $product_id_with_stock !== $product->get_id() ? kkart_get_product$product_id_with_stock ) : $product;
        
$data_store            KKART_Data_Store::load'product' );

        
// Update the database.
        
$new_stock $data_store->update_product_stock$product_id_with_stock$stock_quantity$operation );

        
// Update the product object.
        
$data_store->read_stock_quantity$product_with_stock$new_stock );

        
// If this is not being called during an update routine, save the product so stock status etc is in sync, and caches are cleared.
        
if ( ! $updating ) {
            
$product_with_stock->save();
        }

        
// Fire actions to let 3rd parties know the stock changed.
        
if ( $product_with_stock->is_type'variation' ) ) {
            
do_action'kkart_variation_set_stock'$product_with_stock );
        } else {
            
do_action'kkart_product_set_stock'$product_with_stock );
        }

        return 
$product_with_stock->get_stock_quantity();
    }
    return 
$product->get_stock_quantity();
}

/**
 * Update a product's stock status.
 *
 * @param int    $product_id Product ID.
 * @param string $status     Status.
 */
function kkart_update_product_stock_status$product_id$status ) {
    
$product kkart_get_product$product_id );

    if ( 
$product ) {
        
$product->set_stock_status$status );
        
$product->save();
    }
}

/**
 * When a payment is complete, we can reduce stock levels for items within an order.
 *
 * @since 3.0.0
 * @param int $order_id Order ID.
 */
function kkart_maybe_reduce_stock_levels$order_id ) {
    
$order kkart_get_order$order_id );

    if ( ! 
$order ) {
        return;
    }

    
$stock_reduced  $order->get_data_store()->get_stock_reduced$order_id );
    
$trigger_reduce apply_filters'kkart_payment_complete_reduce_order_stock', ! $stock_reduced$order_id );

    
// Only continue if we're reducing stock.
    
if ( ! $trigger_reduce ) {
        return;
    }

    
kkart_reduce_stock_levels$order );

    
// Ensure stock is marked as "reduced" in case payment complete or other stock actions are called.
    
$order->get_data_store()->set_stock_reduced$order_idtrue );
}
add_action'kkart_payment_complete''kkart_maybe_reduce_stock_levels' );
add_action'kkart_order_status_completed''kkart_maybe_reduce_stock_levels' );
add_action'kkart_order_status_processing''kkart_maybe_reduce_stock_levels' );
add_action'kkart_order_status_on-hold''kkart_maybe_reduce_stock_levels' );

/**
 * When a payment is cancelled, restore stock.
 *
 * @since 3.0.0
 * @param int $order_id Order ID.
 */
function kkart_maybe_increase_stock_levels$order_id ) {
    
$order kkart_get_order$order_id );

    if ( ! 
$order ) {
        return;
    }

    
$stock_reduced    $order->get_data_store()->get_stock_reduced$order_id );
    
$trigger_increase = (bool) $stock_reduced;

    
// Only continue if we're increasing stock.
    
if ( ! $trigger_increase ) {
        return;
    }

    
kkart_increase_stock_levels$order );

    
// Ensure stock is not marked as "reduced" anymore.
    
$order->get_data_store()->set_stock_reduced$order_idfalse );
}
add_action'kkart_order_status_cancelled''kkart_maybe_increase_stock_levels' );
add_action'kkart_order_status_pending''kkart_maybe_increase_stock_levels' );

/**
 * Reduce stock levels for items within an order, if stock has not already been reduced for the items.
 *
 * @since 3.0.0
 * @param int|KKART_Order $order_id Order ID or order instance.
 */
function kkart_reduce_stock_levels$order_id ) {
    if ( 
is_a$order_id'KKART_Order' ) ) {
        
$order    $order_id;
        
$order_id $order->get_id();
    } else {
        
$order kkart_get_order$order_id );
    }
    
// We need an order, and a store with stock management to continue.
    
if ( ! $order || 'yes' !== get_option'kkart_manage_stock' ) || ! apply_filters'kkart_can_reduce_order_stock'true$order ) ) {
        return;
    }

    
$changes = array();

    
// Loop over all items.
    
foreach ( $order->get_items() as $item ) {
        if ( ! 
$item->is_type'line_item' ) ) {
            continue;
        }

        
// Only reduce stock once for each item.
        
$product            $item->get_product();
        
$item_stock_reduced $item->get_meta'_reduced_stock'true );

        if ( 
$item_stock_reduced || ! $product || ! $product->managing_stock() ) {
            continue;
        }

        
/**
         * Filter order item quantity.
         *
         * @param int|float             $quantity Quantity.
         * @param KKART_Order              $order    Order data.
         * @param KKART_Order_Item_Product $item Order item data.
         */
        
$qty       apply_filters'kkart_order_item_quantity'$item->get_quantity(), $order$item );
        
$item_name $product->get_formatted_name();
        
$new_stock kkart_update_product_stock$product$qty'decrease' );

        if ( 
is_wp_error$new_stock ) ) {
            
/* translators: %s item name. */
            
$order->add_order_notesprintf__'Unable to reduce stock for item %s.''kkart' ), $item_name ) );
            continue;
        }

        
$item->add_meta_data'_reduced_stock'$qtytrue );
        
$item->save();

        
$changes[] = array(
            
'product' => $product,
            
'from'    => $new_stock $qty,
            
'to'      => $new_stock,
        );
    }

    
kkart_trigger_stock_change_notifications$order$changes );

    
do_action'kkart_reduce_order_stock'$order );
}

/**
 * After stock change events, triggers emails and adds order notes.
 *
 * @since 3.5.0
 * @param KKART_Order $order order object.
 * @param array    $changes Array of changes.
 */
function kkart_trigger_stock_change_notifications$order$changes ) {
    if ( empty( 
$changes ) ) {
        return;
    }

    
$order_notes     = array();
    
$no_stock_amount absintget_option'kkart_notify_no_stock_amount') );

    foreach ( 
$changes as $change ) {
        
$order_notes[]    = $change['product']->get_formatted_name() . ' ' $change['from'] . '&rarr;' $change['to'];
        
$low_stock_amount absintkkart_get_low_stock_amountkkart_get_product$change['product']->get_id() ) ) );
        if ( 
$change['to'] <= $no_stock_amount ) {
            
do_action'kkart_no_stock'kkart_get_product$change['product']->get_id() ) );
        } elseif ( 
$change['to'] <= $low_stock_amount ) {
            
do_action'kkart_low_stock'kkart_get_product$change['product']->get_id() ) );
        }

        if ( 
$change['to'] < ) {
            
do_action(
                
'kkart_product_on_backorder',
                array(
                    
'product'  => kkart_get_product$change['product']->get_id() ),
                    
'order_id' => $order->get_id(),
                    
'quantity' => abs$change['from'] - $change['to'] ),
                )
            );
        }
    }

    
$order->add_order_note__'Stock levels reduced:''kkart' ) . ' ' implode', '$order_notes ) );
}

/**
 * Increase stock levels for items within an order.
 *
 * @since 3.0.0
 * @param int|KKART_Order $order_id Order ID or order instance.
 */
function kkart_increase_stock_levels$order_id ) {
    if ( 
is_a$order_id'KKART_Order' ) ) {
        
$order    $order_id;
        
$order_id $order->get_id();
    } else {
        
$order kkart_get_order$order_id );
    }

    
// We need an order, and a store with stock management to continue.
    
if ( ! $order || 'yes' !== get_option'kkart_manage_stock' ) || ! apply_filters'kkart_can_restore_order_stock'true$order ) ) {
        return;
    }

    
$changes = array();

    
// Loop over all items.
    
foreach ( $order->get_items() as $item ) {
        if ( ! 
$item->is_type'line_item' ) ) {
            continue;
        }

        
// Only increase stock once for each item.
        
$product            $item->get_product();
        
$item_stock_reduced $item->get_meta'_reduced_stock'true );

        if ( ! 
$item_stock_reduced || ! $product || ! $product->managing_stock() ) {
            continue;
        }

        
$item_name $product->get_formatted_name();
        
$new_stock kkart_update_product_stock$product$item_stock_reduced'increase' );

        if ( 
is_wp_error$new_stock ) ) {
            
/* translators: %s item name. */
            
$order->add_order_notesprintf__'Unable to restore stock for item %s.''kkart' ), $item_name ) );
            continue;
        }

        
$item->delete_meta_data'_reduced_stock' );
        
$item->save();

        
$changes[] = $item_name ' ' . ( $new_stock $item_stock_reduced ) . '&rarr;' $new_stock;
    }

    if ( 
$changes ) {
        
$order->add_order_note__'Stock levels increased:''kkart' ) . ' ' implode', '$changes ) );
    }

    
do_action'kkart_restore_order_stock'$order );
}

/**
 * See how much stock is being held in pending orders.
 *
 * @since 3.5.0
 * @param KKART_Product $product Product to check.
 * @param integer    $exclude_order_id Order ID to exclude.
 * @return int
 */
function kkart_get_held_stock_quantityKKART_Product $product$exclude_order_id ) {
    
/**
     * Filter: kkart_hold_stock_for_checkout
     * Allows enable/disable hold stock functionality on checkout.
     *
     * @since 4.3.0
     * @param bool $enabled Default to true if managing stock globally.
     */
    
if ( ! apply_filters'kkart_hold_stock_for_checkout'kkart_string_to_boolget_option'kkart_manage_stock''yes' ) ) ) ) {
        return 
0;
    }

    return ( new \
Automattic\Kkart\Checkout\Helpers\ReserveStock() )->get_reserved_stock$product$exclude_order_id );
}

/**
 * Hold stock for an order.
 *
 * @throws ReserveStockException If reserve stock fails.
 *
 * @since 4.1.0
 * @param \KKART_Order|int $order Order ID or instance.
 */
function kkart_reserve_stock_for_order$order ) {
    
/**
     * Filter: kkart_hold_stock_for_checkout
     * Allows enable/disable hold stock functionality on checkout.
     *
     * @since @since 4.1.0
     * @param bool $enabled Default to true if managing stock globally.
     */
    
if ( ! apply_filters'kkart_hold_stock_for_checkout'kkart_string_to_boolget_option'kkart_manage_stock''yes' ) ) ) ) {
        return;
    }

    
$order $order instanceof KKART_Order $order kkart_get_order$order );

    if ( 
$order ) {
        ( new \
Automattic\Kkart\Checkout\Helpers\ReserveStock() )->reserve_stock_for_order$order );
    }
}
add_action'kkart_checkout_order_created''kkart_reserve_stock_for_order' );

/**
 * Release held stock for an order.
 *
 * @since 4.3.0
 * @param \KKART_Order|int $order Order ID or instance.
 */
function kkart_release_stock_for_order$order ) {
    
/**
     * Filter: kkart_hold_stock_for_checkout
     * Allows enable/disable hold stock functionality on checkout.
     *
     * @since 4.3.0
     * @param bool $enabled Default to true if managing stock globally.
     */
    
if ( ! apply_filters'kkart_hold_stock_for_checkout'kkart_string_to_boolget_option'kkart_manage_stock''yes' ) ) ) ) {
        return;
    }

    
$order $order instanceof KKART_Order $order kkart_get_order$order );

    if ( 
$order ) {
        ( new \
Automattic\Kkart\Checkout\Helpers\ReserveStock() )->release_stock_for_order$order );
    }
}
add_action'kkart_checkout_order_exception''kkart_release_stock_for_order' );
add_action'kkart_payment_complete''kkart_release_stock_for_order'11 );
add_action'kkart_order_status_cancelled''kkart_release_stock_for_order'11 );
add_action'kkart_order_status_completed''kkart_release_stock_for_order'11 );
add_action'kkart_order_status_processing''kkart_release_stock_for_order'11 );
add_action'kkart_order_status_on-hold''kkart_release_stock_for_order'11 );

/**
 * Return low stock amount to determine if notification needs to be sent
 *
 * @param  KKART_Product $product Product to get data from.
 * @since  3.5.0
 * @return int
 */
function kkart_get_low_stock_amountKKART_Product $product ) {
    if ( 
$product->is_type'variation' ) ) {
        
$product kkart_get_product$product->get_parent_id() );
    }
    
$low_stock_amount $product->get_low_stock_amount();
    if ( 
'' === $low_stock_amount ) {
        
$low_stock_amount get_option'kkart_notify_low_stock_amount');
    }

    return 
$low_stock_amount;
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0977 ]--