autoship_check_lock_status_info()
(src/scheduled-orders.php) Used to calculate a Scheduled Order's Lock duration. It takes the Scheduled Order, the Wordpress User Id, and returns an array of Lock data for a supplied Autoship order.
Example
/**
* Returns the Duration Lock information for an order
*
* @param array|stdClass $autoship_order The scheduled order.
* @param int $customer_id Optional. The wc customer id to retrieve the orders for.
*
* @return array The Lock Information for an order.
*/
function autoship_check_lock_status_info ( $autoship_order, $customer_id = NULL, $settings = array() ){
// Convert stdClass objects to array if needed.
if ( $autoship_order instanceof stdClass )
$autoship_order = autoship_convert_object_to_array( $autoship_order );
// Grab the customer id
if ( !isset( $customer_id ) )
$customer_id = $autoship_order['customerId'];
// Get the Site Settings and Allow for Customized Lock Durations by Product, Order, and/or Customer.
$settings = empty( $settings ) ? autoship_get_site_order_settings() : $settings;
// Set up the current settings
$lock_data = array(
'locked' => $autoship_order['locked'],
'notice' => '',
'duration' => $settings['lockDurationDays'],
'processing_start' => autoship_get_formatted_date ( $autoship_order['lastEditableDate'] )
);
// If no Lock Duration or if filtered to not enable return the default.
if ( empty( $lock_data['duration'] ) || !apply_filters('autoship_enable_lock_duration_restriction', true ) ){
$lock_data['locked'] = false;
return $lock_data; }
// Allow merchants to filter the locked status based on order status and order details.
$lockable_status = apply_filters('autoship_order_is_lockable_status', $lock_data['locked'], $autoship_order['status'], $autoship_order, $customer_id );
if ( $lockable_status ){
// Add the default notice
$lock_data['notice'] = apply_filters( 'autoship_lock_duration_restriction_notification', __( "Your order started processing on <strong>{$lock_data['processing_start']}</strong>. Only the Payment Method can be changed on this order.", 'autoship' ), $lock_data );
}
return $lock_data;
}