File "ShippingRateQuery.php"
Full Path: /home/warrior1/public_html/languages/wp-content/plugins/google-listings-and-ads/src/DB/Query/ShippingRateQuery.php
File size: 1.65 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\DB\Query;
use Automattic\WooCommerce\GoogleListingsAndAds\DB\Query;
use Automattic\WooCommerce\GoogleListingsAndAds\DB\Table\ShippingRateTable;
use Automattic\WooCommerce\GoogleListingsAndAds\Exception\InvalidQuery;
use wpdb;
defined( 'ABSPATH' ) || exit;
/**
* Class ShippingRateQuery
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\DB\Query
*/
class ShippingRateQuery extends Query {
/**
* Query constructor.
*
* @param wpdb $wpdb
* @param ShippingRateTable $table
*/
public function __construct( wpdb $wpdb, ShippingRateTable $table ) {
parent::__construct( $wpdb, $table );
}
/**
* Sanitize a value for a given column before inserting it into the DB.
*
* @param string $column The column name.
* @param mixed $value The value to sanitize.
*
* @return mixed The sanitized value.
* @throws InvalidQuery When the code tries to set the ID column.
*/
protected function sanitize_value( string $column, $value ) {
if ( 'id' === $column ) {
throw InvalidQuery::cant_set_id( ShippingRateTable::class );
}
if ( 'options' === $column ) {
if ( ! is_array( $value ) ) {
throw InvalidQuery::invalid_value( $column );
}
$value = json_encode( $value );
}
return $value;
}
/**
* Perform the query and save it to the results.
*/
protected function query_results() {
parent::query_results();
$this->results = array_map(
function ( $row ) {
$row['options'] = ! empty( $row['options'] ) ? json_decode( $row['options'], true ) : $row['options'];
return $row;
},
$this->results
);
}
}