[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
v1
/
lib
/
pkp
/
classes
/
core
/
[
Home
]
File: APIResponse.php
<?php /** * @file classes/core/APIResponse.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class APIResponse * * @ingroup core * * @brief Extends the Response class in the Slim microframework. */ namespace PKP\core; use Slim\Http\Response; class APIResponse extends Response { public const RESPONSE_CSV = 'text/csv'; public const RESPONSE_TSV = 'text/tab-separated-values'; /** * CSV Response * * @param integer $maxRows The total amount of rows, that is provided within the onw X-Total-Count header field */ public function withCSV(array $rows, array $columns, int $maxRows, string $mimeType = self::RESPONSE_CSV): self { $separator = ',' ; if ($mimeType == self::RESPONSE_TSV) { $separator = "\t"; } $fp = fopen('php://output', 'wt'); //Add BOM (byte order mark) to fix UTF-8 in Excel fprintf($fp, chr(0xEF) . chr(0xBB) . chr(0xBF)); if (!empty($columns)) { fputcsv($fp, [''], $separator); fputcsv($fp, $columns, $separator); } foreach ($rows as $row) { fputcsv($fp, $row, $separator); } $csvData = stream_get_contents($fp); fclose($fp); $this->getBody()->rewind(); $this->getBody()->write($csvData); $this->withStatus(200); return $this->withHeader('X-Total-Count', $maxRows)->withHeader('Content-Type', $mimeType); } /** * Response with an error message * * @param string $msg The message translation key * @param array $params Optional parameters to pass to the translation * * @return APIResponse */ public function withJsonError($msg, $params = null) { return $this->withJson( [ 'error' => $msg, 'errorMessage' => __($msg, $params ?? []), ] ); } } if (!PKP_STRICT_MODE) { class_alias('\PKP\core\APIResponse', '\APIResponse'); }