. */ namespace ext\thirdPartyArchiving\bundle\medona\Controller; /** * Class for ArchiveModificationNotification * * @author Cyril Vazquez */ class ArchiveModificationNotification extends ArchiveNotification { /** * Send a new transfer reply * @param string $reference The notification message identifier * @param array $archives The archives to send * @param string $senderOrg The identifier of sender * @param string $recipientOrg The identifier of recipient * @param string $comment The comment of modification * * @return The message generated */ public function send($reference, $archives = array(), $senderOrg, $recipientOrg, $comment = false) { $message = \laabs::newInstance('medona/message'); $message->messageId = \laabs::newId(); $message->type = "ArchiveModificationNotification"; $schema = "medona"; if (\laabs::hasBundle('seda')) { $schema = "seda"; } $message->schema = $schema; $message->status = "sent"; $message->date = \laabs::newDatetime(null, "UTC"); $message->receptionDate = $message->date; $message->comment[] = $comment; $message->reference = $reference; $message->senderOrgRegNumber = $senderOrg; $message->recipientOrgRegNumber = $recipientOrg; $this->readOrgs($message); // read org names, addresses, communications, contacts $message->archive = $archives; foreach ($archives as $archive) { $unitIdentifier = \laabs::newInstance("medona/unitIdentifier"); $unitIdentifier->messageId = $message->messageId; $unitIdentifier->objectClass = "recordsManagement/archive"; $unitIdentifier->objectId = (string) $archive->archiveId; $message->unitIdentifier[] = $unitIdentifier; } $message->dataObjectCount = count($message->archive); try { if ($message->schema != 'medona') { $archiveModificationNotificationController = \laabs::newController($message->schema.'/ArchiveModificationNotification'); $archiveModificationNotificationController->send($message); } else { $archiveModificationNotification = $this->sendMessage($message); $message->object = $archiveModificationNotification; $archiveModificationNotification->originatingAgency = $this->sendOrganization($message->senderOrg); $archiveModificationNotification->archivalAgency = $this->sendOrganization($message->recipientOrg); $message->object->unitIdentifier = $message->unitIdentifier; $this->generate($message); $this->save($message); } $operationResult = true; } catch (\Exception $e) { $message->status = "error"; $operationResult = false; throw $e; } $this->lifeCycleJournalController->logEvent( 'medona/sending', 'medona/message', $message->messageId, $message, $operationResult ); $this->create($message); return $message; } }