MOON
Server: Apache
System: Linux server.royaltuning.hu 4.18.0-425.13.1.el8_7.x86_64 #1 SMP Tue Feb 21 04:20:52 EST 2023 x86_64
User: royaltuning (1001)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/royaltuning/www/public/backoffice.royaltuning.hu/app/Services/WooCommerceService.php
<?php

namespace App\Services;

use Automattic\WooCommerce\Client;
use Automattic\WooCommerce\HttpClient\HttpClientException;
use Illuminate\Support\Facades\Storage;
use Log;

class WooCommerceService
{

    public function getOrders(array $config, $request, $type)
    {
        $page = 1;
        $woocommerce = new Client(
            $config['url'],
            $config['consumer_key'],
            $config['consumer_secret'],
            [
                'version' => 'wc/v3',
                'query_string_auth' => true,
                'timeout' => 600
            ]
        );

        $params = [];
        $params['per_page'] = 100;
        $params['page'] = $page;

        if ($request->after) {
            $params['after'] = date("Y-m-d\TH:i:s", strtotime($request->after));
        }

        if ($request->before) {
            $params['before'] = date("Y-m-d\TH:i:s", strtotime($request->before));
        }

        if ($request->status) {
            $params['status'] = $request->status;
        }

        $all_orders = [];

        try {
            do {
                $orders = $woocommerce->get('orders', $params);
                $all_orders = array_merge($all_orders, (array)$orders);
                Storage::disk('apilogsWoocommerce')->put($type . '-getorders-request.json', json_encode($params));
                Storage::disk('apilogsWoocommerce')->put($type . '-getorders-response.json', json_encode($all_orders));
                $params['page']++; // Next page
            } while (count($orders) === 100); // If less than 100, no more data

        } catch (HttpClientException $e) {
            Log::error("WooCommerce API request failed: " . $e->getMessage(), [
                'url' => $config['url'],
                'params' => $params,
                'response' => $e->getResponse()
            ]);
            throw $e; // Re-throw the exception if needed
        }

        return (array)$all_orders;
    }
}