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;

}