<?php

require_once "functions.php";
include "config.php";
$Header("Setting Product Variation");
$r = rand(1, 9999999);
$sr = rand(1, 5);
$p = $sr * 1.25;
$master_product_data = array('name' => "An API Created Variable Product", 'price' => $p, 'sku' => "API{$r}", 'visibility' => 'visible', 'product_type' => 'variable', 'type' => 'product', 'status' => 'instock', 'attributes' => array('size' => array('name' => 'Size', 'value' => array('Small', 'Medium', 'Large'), 'is_variation' => 'yes', 'is_visible' => 'yes', 'is_taxonomy' => 'no')));
// Try uploading an image
$new_product_data = array('name' => "An API Created Product 203 Variation #1", 'price' => $p, 'sku' => "API{$r}V1", 'visibility' => 'visible', 'product_type' => 'simple', 'type' => 'product_variation', 'status' => 'instock', 'size_attribute' => 'small');
$new_product_data2 = array('name' => "An API Created Product 203 Variation #2", 'price' => $p, 'sku' => "API{$r}V2", 'visibility' => 'visible', 'product_type' => 'simple', 'type' => 'product_variation', 'status' => 'instock', 'size_attribute' => 'medium');
$master_product_data['variations'] = array($new_product_data, $new_product_data2);
$data = array('action' => 'woocommerce_json_api', 'proc' => 'set_products', 'arguments' => array('token' => $token), 'payload' => array($master_product_data), 'model_filters' => array('WCAPI_product_meta_attributes_table' => array('size_attribute' => array('name' => 'attribute_size', 'type' => 'string', 'values' => array('small', 'medium', 'large'), 'sizehint' => 2))));
$result = curl_post($url, $data);
$result = json_decode($result, true);
$product = $result['payload'][0];
keyExists('variations', $product, 'Is the variations key set?');
hasAtLeast($product['variations'], 1, "Has at least 1 variation?");
///////////////////////////////////////////////////////////////////
// STEP 1: Get available categories.
$data = array('action' => 'woocommerce_json_api', 'proc' => 'get_categories', 'arguments' => array('token' => $token));
$json = curl_post($url, $data);
$result = json_decode($json, true);
$categories = $result['payload'];
// STEP 2: Get a product
$data = array('action' => 'woocommerce_json_api', 'proc' => 'get_products', 'arguments' => array('token' => $token, 'per_page' => 2, 'page' => 1, 'order_by' => 'ID', 'order' => 'desc', 'include' => array('variations' => false, 'images' => false, 'featured_image' => false, 'reviews' => false)));
$json = curl_post($url, $data);
$result = json_decode($json, true);
$products = $result['payload'];
// STEP 3: Assign a category to the product you want
$category_count = count($products[0]['categories']);
$products[0]['categories'][] = $categories[0];
// STEP 4: Send it back to the server:
$result['payload'] = array($products[0]);
$result['proc'] = 'set_products';
$json = curl_post($url, $result);
$result = json_decode($json, true);
$products = $result['payload'];
hasAtLeast($products[0]['categories'], $category_count + 1, "Was the category connected?");
///////////////////////////////////////////////////////
//     Disconnecting a Category from a Product       //
//////////////////////////////////////////////////////
$products[0]['categories'][0]['__disconnect__'] = true;
$result['payload'] = array($products[0]);
$result['proc'] = 'set_products';
$json = curl_post($url, $result);
$result = json_decode($json, true);
$products = $result['payload'];
equal(true, $products[0]['categories'][0]['__disconnected__'], 'Was the category disconnected?');