<?php

require 'vendor/autoload.php';
use GuzzleHttp\Client;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;


$system = 'https://test.helpdeskeddy.com/';
$apiLogin = '';
$apiPass = '';
$apiUrl = 'api/v2/knowledge_base/articles';
$fileName = 'bz_test.xlsx';
$categories = '8,5';

$client = new Client([
    'base_uri' => $system,
]);

try {
    $response = $client->get($apiUrl, [ 'auth' => [ $apiLogin, $apiPass,]]);

    $resp = json_decode($response->getBody()->getContents());

    $pagination = $resp->pagination;
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $line = 2;

    // Задаем названия колонок
    $sheet->setCellValue( 'A1', "ID");
    $sheet->setCellValue( 'B1', "Название RU");
    $sheet->setCellValue( 'C1', "Содержание без оформления RU");
    $sheet->setCellValue( 'D1', "Содержание RU"); 

    for($i = 0; $i < $pagination->total_pages; $i++){
        sleep(1);

        $response = $client->get( $apiUrl . '?page=' . $i+1, [ 'auth' => [ $apiLogin, $apiPass]]);

        $resp = json_decode($response->getBody()->getContents());
        $data = $resp->data;
               
        foreach($data as $post){
        
            $sheet->setCellValue( 'A' . $line, $post->id);
            $sheet->setCellValue( 'B' . $line, $post->title->ru);
            $sheet->setCellValue( 'C' . $line, strip_tags($post->body->ru));
            $sheet->setCellValue( 'D' . $line, $post->body->ru);
    
            $line++;
        }
    }

    $writer = new Xlsx($spreadsheet);
    $writer->save($fileName);

    echo "Выгрузка завершена";
    
} catch (GuzzleHttp\Exception\ClientException $e) {
    $response = $e->getResponse();
    print_r($response->getBody()->getContents());
}

