public function set_products($params) { JSONAPIHelpers::debug("set_products beginning"); $products = $this->orEq($params, 'payload', array()); foreach ($products as &$attrs) { $product = null; if (isset($attrs['id'])) { $product = API\Product::find($attrs['id']); } else { if (isset($attrs['sku']) && !empty($attrs['sku'])) { $product = API\Product::find_by_sku($attrs['sku']); } } if ($product && is_object($product) && $product->isValid()) { $product->fromApiArray($attrs); $product->update(); $attrs = $product->asApiArray(); } else { $this->result->addWarning(__('Product does not exist.', 'woocommerce_json_api'), JSONAPI_PRODUCT_NOT_EXISTS, array('id' => isset($attrs['id']) ? $attrs['id'] : 'none', 'sku' => isset($attrs['sku']) ? $attrs['sku'] : 'none')); // Let's create the product if it doesn't exist. JSONAPIHelpers::debug("Creating a new product"); $product = new API\Product(); $product->create($attrs); if (!$product->isValid()) { JSONAPIHelpers::debug("Product is not valid!"); return $this->done(); } else { $this->result->addNotification(__('Created product', 'woocommerce_json_api'), array('id' => $product->_actual_model_id, 'sku' => $product->sku)); } $attrs = $product->asApiArray(); } } $this->result->setPayload($products); JSONAPIHelpers::debug("set_products done."); return $this->done(); }