| Server IP : 127.0.1.1 / Your IP : 216.73.216.60 Web Server : Apache/2.4.58 (Ubuntu) System : Linux nepub 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/public_html/plugins/generic/dataverse/dataverseAPI/actions/ |
Upload File : |
<?php
use GuzzleHttp\Psr7\Utils;
import('plugins.generic.dataverse.dataverseAPI.actions.interfaces.DatasetFileActionsInterface');
import('plugins.generic.dataverse.dataverseAPI.actions.DataverseActions');
class DatasetFileActions extends DataverseActions implements DatasetFileActionsInterface
{
public function getByDatasetId(string $persistentId): array
{
$args = '?persistentId=' . $persistentId;
$uri = $this->createNativeAPIURI('datasets', ':persistentId', 'versions', ':latest', 'files' . $args);
$response = $this->nativeAPIRequest('GET', $uri);
$jsonContent = json_decode($response->getBody(), true);
return array_map(function (array $file) {
import('plugins.generic.dataverse.classes.entities.DatasetFile');
$datasetFile = new DatasetFile();
$datasetFile->setId($file['dataFile']['id']);
$datasetFile->setFileName($file['label']);
$datasetFile->setOriginalFileName($file['dataFile']['filename']);
if (!mb_check_encoding($file['label'], 'UTF-8')) {
$datasetFile->setFileName(mb_convert_encoding($file['label'], 'UTF-8'));
}
if (!mb_check_encoding($file['dataFile']['filename'], 'UTF-8')) {
$datasetFile->setOriginalFileName(mb_convert_encoding($file['dataFile']['filename'], 'UTF-8'));
}
return $datasetFile;
}, $jsonContent['data']);
}
public function add(string $persistentId, string $filename, string $filePath): void
{
$args = '?persistentId=' . $persistentId;
$uri = $this->createNativeAPIURI('datasets', ':persistentId', 'add' . $args);
$options = [
'multipart' => [
[
'name' => 'file',
'contents' => Utils::tryFopen($filePath, 'rb'),
'filename' => $filename
],
[
'name' => 'jsonData',
'contents' => json_encode(['label' => $filename])
]
],
];
$this->nativeAPIRequest('POST', $uri, $options);
}
public function delete(int $datasetFileId): void
{
$uri = $this->createSWORDAPIURI('edit-media', 'file', $datasetFileId);
$this->swordAPIRequest('DELETE', $uri);
}
public function download(int $datasetFileId, string $filename): void
{
$filesDir = Config::getVar('files', 'files_dir');
$datasetFileDir = tempnam($filesDir, 'datasetFile');
unlink($datasetFileDir);
mkdir($datasetFileDir);
$filePath = $datasetFileDir . DIRECTORY_SEPARATOR . $filename;
$uri = $this->createNativeAPIURI('access', 'datafile', $datasetFileId);
$options = ['sink' => Utils::tryFopen($filePath, 'w')];
$this->nativeAPIRequest('GET', $uri, $options);
import('lib.pkp.classes.file.FileManager');
$fileManager = new FileManager();
$fileManager->downloadByPath($filePath);
$fileManager->rmtree($datasetFileDir);
}
}