oont-contents/plugins/woocommerce-square/includes/API/Requests/Catalog.php
2025-02-08 15:10:23 +01:00

298 lines
9.5 KiB
PHP

<?php
/**
* WooCommerce Square
*
* This source file is subject to the GNU General Public License v3.0
* that is bundled with this package in the file license.txt.
* It is also available through the world-wide-web at this URL:
* http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@woocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade WooCommerce Square to newer
* versions in the future. If you wish to customize WooCommerce Square for your
* needs please refer to https://docs.woocommerce.com/document/woocommerce-square/
*
* @author WooCommerce
* @copyright Copyright: (c) 2019, Automattic, Inc.
* @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
*/
namespace WooCommerce\Square\API\Requests;
use WooCommerce\Square\API\Request;
defined( 'ABSPATH' ) || exit;
/**
* WooCommerce Square Catalog API Request class.
*
* @since 2.0.0
*/
class Catalog extends Request {
/**
* Initializes a new Catalog request.
*
* @since 2.0.0
*
* @param \Square\SquareClient $api_client the API client
*/
public function __construct( $api_client ) {
$this->square_api = $api_client->getCatalogApi();
}
/**
* Sets the data for a batchDeleteCatalogObjects request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-batchdeletecatalogobjects
* @see \Square\Apis\CatalogApi::batchDeleteCatalogObjects()
*
* @since 2.0.0
*
* @param string[] $object_ids the square catalog object IDs to delete
*/
public function set_batch_delete_catalog_objects_data( array $object_ids ) {
$this->square_api_method = 'batchDeleteCatalogObjects';
$body = new \Square\Models\BatchDeleteCatalogObjectsRequest();
$body->setObjectIds( $object_ids );
$this->square_api_args = array( $body );
}
/**
* Sets the data for a batchRetrieveCatalogObjects request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-batchretrievecatalogobjects
* @see \Square\Apis\CatalogApi::batchRetrieveCatalogObjects()
*
* @since 2.0.0
*
* @param string[] $object_ids the square catalog object IDs to delete
* @param bool $include_related_objects whether or not to include related objects in the response
*/
public function set_batch_retrieve_catalog_objects_data( array $object_ids, $include_related_objects = false ) {
$this->square_api_method = 'batchRetrieveCatalogObjects';
$body = new \Square\Models\BatchRetrieveCatalogObjectsRequest( $object_ids );
$body->setIncludeRelatedObjects( (bool) $include_related_objects );
$this->square_api_args = array( $body );
}
/**
* Sets the data for a batchUpsertCatalogObjects request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-batchupsertcatalogobjects
* @see \Square\Apis\CatalogApi::batchUpsertCatalogObjects()
*
* @since 2.0.0
*
* @param string $idempotency_key the UUID for this request
* @param \Square\Models\CatalogObjectBatch[] $batches array of catalog object batches
*/
public function set_batch_upsert_catalog_objects_data( $idempotency_key, array $batches ) {
$this->square_api_method = 'batchUpsertCatalogObjects';
$this->square_api_args = array(
new \Square\Models\BatchUpsertCatalogObjectsRequest(
$idempotency_key,
$batches
),
);
}
/**
* Sets the data for a catalogInfo request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-cataloginfo
* @see \Square\Apis\CatalogApi::catalogInfo()
*
* @since 2.0.0
*
* @param string $cursor
* @param array $types
*/
public function set_catalog_info_data( $cursor = '', $types = array() ) {
$this->square_api_method = 'catalogInfo';
}
/**
* Sets the data for a deleteCatalogObject request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-deletecatalogobject
* @see \Square\Apis\CatalogApi::deleteCatalogObject()
*
* @since 2.0.0
*
* @param string $object_id the Square catalog object ID to delete
*/
public function set_delete_catalog_object_data( $object_id ) {
$this->square_api_method = 'deleteCatalogObject';
$this->square_api_args = array( $object_id );
}
/**
* Sets the data for a listCatalog request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-listcatalog
* @see \Square\Apis\CatalogApi::listCatalog()
*
* @since 2.0.0
*
* @param string $cursor (optional) the pagination cursor
* @param array $types (optional) the catalog item types to filter by
*/
public function set_list_catalog_data( $cursor = '', $types = array() ) {
$this->square_api_method = 'listCatalog';
$this->square_api_args = array(
'cursor' => $cursor,
'types' => is_array( $types ) ? implode( ',', array_map( 'strtoupper', $types ) ) : '',
);
}
/**
* Sets the data for a retrieveCatalogObject request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-retrievecatalogobject
* @see \Square\Apis\CatalogApi::retrieveCatalogObject()
*
* @since 2.0.0
*
* @param string $object_id the Square catalog object ID to retrieve
* @param bool whether or not to include related objects (such as categories)
*/
public function set_retrieve_catalog_object_data( $object_id, $include_related_objects = false ) {
$this->square_api_method = 'retrieveCatalogObject';
$this->square_api_args = array( $object_id, (bool) $include_related_objects );
}
/**
* Sets the data for a searchCatalogObjects request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-searchcatalogobjects
* @see \Square\Apis\CatalogApi::searchCatalogObjects()
*
* @since 2.0.0
*
* @param array $args see Square documentation for full list of args allowed
*/
public function set_search_catalog_objects_data( array $args = array() ) {
// convert object types to array
if ( isset( $args['object_types'] ) && ! is_array( $args['object_types'] ) ) {
$args['object_types'] = array( $args['object_types'] );
}
$defaults = array(
'cursor' => null,
'object_types' => null,
'include_deleted_objects' => null,
'include_related_objects' => null,
'begin_time' => null,
'query' => null,
'limit' => null,
);
// apply defaults and remove any keys that aren't recognized
$args = array_intersect_key( wp_parse_args( $args, $defaults ), $defaults );
$body = new \Square\Models\SearchCatalogObjectsRequest();
$body->setCursor( $args['cursor'] );
$body->setObjectTypes( $args['object_types'] );
$body->setIncludeDeletedObjects( $args['include_deleted_objects'] );
$body->setIncludeRelatedObjects( $args['include_related_objects'] );
$body->setBeginTime( $args['begin_time'] );
$body->setQuery( $args['query'] );
$body->setLimit( $args['limit'] );
$this->square_api_method = 'searchCatalogObjects';
$this->square_api_args = array( $body );
}
/**
* Sets the data for a updateItemModifierLists request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-updateitemmodifierlists
* @see \Square\Apis\CatalogApi::updateItemModifierLists()
*
* @since 2.0.0
*
* @param string[] $item_ids array of item IDs to update
* @param string[] $modifier_lists_to_enable array of list IDs to enable
* @param string[] $modifier_lists_to_disable array of list IDs to disable
*/
public function set_update_item_modifier_lists_data( array $item_ids, array $modifier_lists_to_enable = array(), array $modifier_lists_to_disable = array() ) {
$this->square_api_method = 'updateItemModifierLists';
$body = new \Square\Models\UpdateItemModifierListsRequest( $item_ids );
$body->setModifierListsToEnable( $modifier_lists_to_enable );
$body->setModifierListsToDisable( $modifier_lists_to_disable );
$this->square_api_args = array( $body );
}
/**
* Sets the data for an updateItemTaxes request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-updateitemtaxes
* @see \Square\Apis\CatalogApi::updateItemTaxes()
*
* @since 2.0.0
*
* @param string[] $item_ids array of item IDs to update
* @param string[] $taxes_to_enable array of catalog tax IDs to enable
* @param string[] $taxes_to_disable array of catalog tax IDs to disable
*/
public function set_update_item_taxes_data( array $item_ids, array $taxes_to_enable = array(), array $taxes_to_disable = array() ) {
$this->square_api_method = 'updateItemTaxes';
$body = new \Square\Models\UpdateItemTaxesRequest( $item_ids );
$body->setTaxesToEnable( $taxes_to_enable );
$body->setTaxesToDisable( $taxes_to_disable );
$this->square_api_args = array( $body );
}
/**
* Sets the data for an upsertCatalogObject request.
*
* @see https://docs.connect.squareup.com/api/connect/v2#endpoint-catalog-upsertcatalogobject
* @see \Square\Apis\CatalogApi::upsertCatalogObject()
*
* @since 2.0.0
*
* @param string $idempotency_key a UUID for this request
* @param \Square\Models\CatalogObject $object the object to update
*/
public function set_upsert_catalog_object_data( $idempotency_key, $object ) {
$this->square_api_method = 'upsertCatalogObject';
$this->square_api_args = array(
new \Square\Models\UpsertCatalogObjectRequest(
$idempotency_key,
$object
),
);
}
}