File "ShippingMethodManagement.php"
Full Path: /home/jlklyejr/public_html/post-date/wp-content/plugins/flexible-shipping/src/WPDesk/FS/TableRate/ShippingMethod/Management/ShippingMethodManagement.php
File size: 2.77 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Class ShippingMethodManagement
*
* @package WPDesk\FS\TableRate\ShippingMethod\Management
*/
namespace WPDesk\FS\TableRate\ShippingMethod\Management;
use WC_Shipping_Zone;
use WC_Shipping_Zones;
use wpdb;
use WPDesk\FS\TableRate\ShippingMethodSingle;
/**
* @codeCoverageIgnore
*/
class ShippingMethodManagement {
/**
* @var wpdb
*/
private $wpdb;
/**
* @param wpdb $wpdb
*/
public function __construct( wpdb $wpdb ) {
$this->wpdb = $wpdb;
}
/**
* @param int $instance_id .
* @param bool $status .
* @param WC_Shipping_Zone $zone .
*/
public function set_shipping_method_status( int $instance_id, bool $status, WC_Shipping_Zone $zone ) {
$status = $status ? 1 : 0;
if ( $this->update_shipping_method_field( $instance_id, 'is_enabled', $status ) ) {
$shipping_method = WC_Shipping_Zones::get_shipping_method( $instance_id );
do_action( 'woocommerce_shipping_zone_method_status_toggled', $shipping_method->instance_id, $shipping_method->id, $zone->get_id(), $status );
}
}
/**
* @param int $zone_id .
* @param int $method_order .
* @param int $number_of_shipping_methods .
*/
public function update_shipping_methods_order( int $zone_id, int $method_order, int $number_of_shipping_methods ) {
$this->wpdb->query( $this->wpdb->prepare( sprintf( 'UPDATE `%s` SET `method_order` = `method_order`+%%d WHERE `zone_id` = %%d AND `method_order` > %%d', $this->get_table() ), $number_of_shipping_methods, $zone_id, $method_order ) ); // phpcs:ignore
}
/**
* @param int $instance_id .
*
* @return int
*/
public function get_shipping_method_order( int $instance_id ): int {
return (int) $this->wpdb->get_var( $this->wpdb->prepare( sprintf( 'SELECT `method_order` FROM `%s` WHERE `instance_id` = %%d ORDER BY `method_order` ASC', $this->get_table() ), $instance_id ) ); // phpcs:ignore
}
/**
* @param int $instance_id .
*
* @return bool|ShippingMethodSingle
*/
public function get_shipping_method( int $instance_id ) {
return WC_Shipping_Zones::get_shipping_method( $instance_id );
}
/**
* @param int $instance_id .
*
* @return bool|WC_Shipping_Zone
*/
public function get_shipping_zone( int $instance_id ) {
return WC_Shipping_Zones::get_zone_by( 'instance_id', $instance_id );
}
/**
* @param int $instance_id .
* @param string $key .
* @param string $value .
*
* @return bool|int
*/
public function update_shipping_method_field( int $instance_id, string $key, string $value ) {
return $this->wpdb->update( $this->get_table(), [ $key => $value ], [ 'instance_id' => $instance_id ] );
}
/**
* @return string
*/
private function get_table(): string {
return $this->wpdb->prefix . 'woocommerce_shipping_zone_methods';
}
}