/**
  * Sync all inventory from Square (expensive)
  * @todo if searching for square id fails, check for SKU
  */
 public function sync_all_inventory()
 {
     // refresh cache first to get the latest inventory
     $this->connect->refresh_inventory_cache();
     $square_inventory = $this->connect->get_square_inventory();
     // hopefully there has been a manual sync prior so that square item id
     // has already been saved in the product/variation metas to prevent
     // unnecessary round trip requests to Square to find the SKU
     foreach ($square_inventory as $variation_id => $stock) {
         $wc_product = WC_Square_Utils::get_wc_product_for_square_item_variation_id($variation_id);
         if (is_object($wc_product)) {
             $wc_product->set_stock((int) $stock);
         }
     }
     return true;
 }
 /**
  * Update a Square Item Image for a WC Product
  *
  * @param WC_Product $wc_product
  * @param string     $square_item_id
  * @return bool Success.
  */
 public function update_product_image(WC_Product $wc_product, $square_item_id)
 {
     $image_id = get_post_thumbnail_id($wc_product->id);
     if (empty($image_id)) {
         WC_Square_Sync_Logger::log(sprintf('[WC -> Square] Update Product Image: No thumbnail ID for WC Product %d.', $wc_product->id));
         return true;
     }
     $mime_type = get_post_field('post_mime_type', $image_id, 'raw');
     $image_path = get_attached_file($image_id);
     $result = $this->connect->update_square_product_image($square_item_id, $mime_type, $image_path);
     if ($result && isset($result->id)) {
         WC_Square_Utils::update_wc_product_image_square_id($wc_product->id, $result->id);
         return true;
     } else {
         WC_Square_Sync_Logger::log(sprintf('[WC -> Square] Error updating Product Image for WC Product %d.', $wc_product->id));
         return false;
     }
 }