You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

238 lines
6.7 KiB

<?php
namespace SamApiLib;
class Archive
{
private $sam_api;
function __construct(SamApi $sam_api)
{
$this->sam_api = $sam_api;
}
/**
* list all archives
* http://sam2_dev.localhost/openapi.html#operation/recordsManagement/archives/read
* @return array[]|mixed[]
*/
public function read ()
{
$ws_route = "get /recordsManagement/archives";
$url_params = [];
$query_params = [
"archiveId" => "",
"profileReference" => "",
"status" => "",
"archiveName" => "",
"agreementReference" => "",
"archiveExpired" => "",
"finalDisposition" => "",
"originatorOrgRegNumber" => "",
"originatorOwnerOrgId" => "",
"originatorArchiveId" => "",
"originatingDate" => "",
"filePlanPosition" => "",
"hasParent" => "",
"description" => "",
"partialRetentionRule" => "",
"retentionRuleCode" => "",
"depositStartDate" => "",
"depositEndDate" => "",
"originatingStartDate" => "",
"originatingEndDate" => "",
"archiverArchiveId" => "",
"maxResults" => "",
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* list archives only inside an organization / folder
* @param string $registrationNumber
* @param string $folderId
* @return array[]|mixed[]
*/
public function readList ($registrationNumber = "", $folderId = "")
{
$ws_route = "get /recordsManagement/archives/List";
$url_params = [];
$query_params = [
"originatorOrgRegNumber" => $registrationNumber, // registrationNumber : m183129110301321
"filePlanPosition" => $folderId, // folderId : SAM_rak426-6xon-f8ywrz
"archiveUnit" => ""
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* get a particular archive
* @param $id
* @return array[]|mixed[]
*/
public function getArchiveById ($id)
{
$ws_route = " get /recordsManagement/archiveDescription/{archiveId}";
$url_params = [
"archiveId" => $id,
];
$query_params = [
"isCommunication" => "",
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* get archive metadata
* @param $archive_id
* @return array[]|mixed[]
*/
public function getMetadata ($archiveId, $originatorOwnerOrgRegNumber, $originatorOrgRegNumber)
{
$ws_route = " get /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}/{archiveId}/Metadata";
$url_params = [
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber,
"archiveId" => $archiveId,
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* get a resoure's content base 64 encoded
* @param $archive_id
* @param $resource_id
* @return array[]|mixed[]
*/
public function getResources ($archive_id, $originatorOwnerOrgRegNumber, $originatorOrgRegNumber)
{
$ws_route = " get /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}/{archiveId}";
$url_params = [
"archiveId" => $archive_id,
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber,
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* create an archive
* @param $archive_name
* @param $originatorOrgRegNumber
* @param $file_plan_position
* @return array[]|mixed[]
*/
public function createArchiveWithResources ($archiveId, $originatorOwnerOrgRegNumber, $originatorOrgRegNumber, $contents, $file_names, $hashs, $hashAlgorithms)
{
$ws_route = " post /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}";
$url_params = [
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber
];
$query_params = [];
$digitalResources = [];
foreach ($contents as $key => $content) {
$digitalResources[] = [
"handler" => base64_encode($content),
"fileName" => $file_names[$key],
"hash" => $hashs[$key],
"hashAlgorithm" => $hashAlgorithms[$key]
];
}
$body_params = [
"originatorArchiveId" => $archiveId,
"digitalResources" => $digitalResources
];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* count all archives
* @return array[]|mixed[]
*/
public function count ($originatorOwnerOrgRegNumber, $originatorOrgRegNumber)
{
$ws_route = "get /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}/Count";
$url_params = [
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* ask for an archive destruction
* @param $originatorOwnerOrgRegNumber
* @param $originatorOrgRegNumber
* @param $archiveId
* @return array[]|mixed[]
*/
public function destruct ($originatorOwnerOrgRegNumber, $originatorOrgRegNumber, $archiveId)
{
$ws_route = " delete /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}/{archiveId}";
$url_params = [
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber,
"archiveId" => $archiveId,
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* ask for an archive integrity check
* @param $archiveId
* @return array[]|mixed[]
*/
public function checkIntegrity ($originatorOwnerOrgRegNumber, $originatorOrgRegNumber, $archiveId)
{
$ws_route = " get /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}/{archiveId}/Integritycheck";
$url_params = [
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber,
"archiveId" => $archiveId,
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
}