epsomsegura/laraveldspaceclient
Composer 安装命令:
composer require epsomsegura/laraveldspaceclient
包简介
This is a laravel Dspace7 client to manage dublin core metadata between platforms.
README 文档
README
This is a Laravel Dspace7 client to manage dublin core metadata between platforms.
Installation
You can install this plugin using composer
composer require epsomsegura/laraveldspaceclient
Seting up Laravel environment
You should add this variables with your DSpace 7 administration information into .env file
# DSpace admin email
DSPACE_API_EMAIL="admin@email.com"
# Dspace admin password
DSPACE_API_PASS="mystrongpassword"
# DSpace API URL base
DSPACE_API_URL="https://mydomain.com/server/api/"
# DSpace API domain
DSPACE_API_DOMAIN="mydomain.com"
This variables makes plugin can connect to DSpace 7 backend and make requests to its API.
This is an example using plugin
<?php
...
use Epsomsegura\Laraveldspaceclient\Dspace7\Infrastructure\CreateItemController;
use Epsomsegura\Laraveldspaceclient\Dspace7\Infrastructure\CreateBitstreamByItemUuidController;
...
class SomeClass{
public function someMethod(){
// REQUIRED REPOSITORY NAME
/*
* THIS IS A REQUIRED METADATA TO SEND TO DSPACE
*/
$item = [
"name" => $repository->name,
"metadata" => [],
"inArchive" => true,
"discoverable" => true,
"withdrawn" => false,
"type" => "item"
];
/*
* GET MY OWN METADATA LIST FROM MY CODE/DATABASE TO SEND TO DSPACE
* IT´S IMPORTANT TO HAVE THE SAME METADATA SETTED INTO DSPACE METADATA!
*/
$metadataValues = $repository->metadataValues()->with('metadata')->get();
/*
* ITERATE TO FILL MY METADATA ARRAY TO SEND TO DSPACE
*/
foreach ($metadataValues as $metadataValue) {
$item["metadata"][$metadataValue->metadata->name][] = [
"value" => $metadataValue->value,
"language" => null,
"authority" => null,
"confidence" => -1,
"place" => 0
];
}
//REQUIRED REPOSITORY NAME
/*
* THIS IS A REQUIRED METADATA TO SEND TO DSPACE
*/
$item["metadata"]["dc.type"][] = [
"value" => "Recurso Educativo Abierto",
"language" => null,
"authority" => null,
"confidence" => -1,
"place" => 0
];
/*
* TRY/CATCH TO SAVE ITEM INTO DSPACE
*/
$collectionName = $request->collectionName;
try {
/*
* GETTING HANDLE AFTER CREATE ITEM INTO DSPACE
*/
$newItem = (new CreateItemController)->handler($item, $collectionName)->toArray();
$repository->dspace_uuid = $newItem['uuid'];
$repository->url_identification = $newItem['metadata']['dc.identifier.uri'][0]['value'];
$repository->save();
/*
* IN THIS SPECIFIC CASE WE ADD SOME BEATSTREAMS (FILES) TO OUR ITEM
* YOU CAN USE THIS CODE TO SEND FILES TO DSPACE IF YOU WANT IT
*/
$exeLearningFile = $repository->files()->wherePivot('type', 'exelearning')->first();
$filestream = Storage::get(str_replace('app/', '', $exeLearningFile->path));
$contentType = Storage::mimeType(str_replace('app/', '', $exeLearningFile->path));
$file = (new CreateBitstreamByItemUuidController)->handler($filestream, $exeLearningFile->name, $contentType, $repository->dspace_uuid, 'ORIGINAL');
$webFile = $repository->files()->wherePivot('type', 'web')->first();
$filestream = Storage::get(str_replace('app/', '', $webFile->path));
$contentType = Storage::mimeType(str_replace('app/', '', $webFile->path));
$file = (new CreateBitstreamByItemUuidController)->handler($filestream, $webFile->name, $contentType, $repository->dspace_uuid, 'ORIGINAL');
$scormFile = $repository->files()->wherePivot('type', 'scorm')->first();
$filestream = Storage::get(str_replace('app/', '', $scormFile->path));
$contentType = Storage::mimeType(str_replace('app/', '', $scormFile->path));
$file = (new CreateBitstreamByItemUuidController)->handler($filestream, $scormFile->name, $contentType, $repository->dspace_uuid, 'ORIGINAL');
Alert::success('¡Envío completo!', "El ítem ha sido enviado correctamente al repositorio ecoBUAP.");
return redirect()->back();
} catch (Exception $e) {
Alert::error($e->getMessage());
return redirect()->back();
}
}
}
Authors:
Epsom Segura: [Website] | [LinkedIn] | [Facebook] | [YouTube]
epsomsegura/laraveldspaceclient 适用场景与选型建议
epsomsegura/laraveldspaceclient 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 114 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 01 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 epsomsegura/laraveldspaceclient 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 epsomsegura/laraveldspaceclient 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 114
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-01-25