1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
<?php
namespace GeniBase\Storager;
use Gedcomx\Common\ExtensibleData;
use Gedcomx\Conclusion\Identifier;
use Gedcomx\Conclusion\Subject;
class SubjectStorager extends ConclusionStorager
{
protected function getObject($o = null)
{
return new Subject($o);
}
protected function detectId(ExtensibleData &$entity)
{
if (! empty($r = $entity->getIdentifiers())
&& ! empty($id = $this->newStorager(Identifier::class)->getIdByIdentifier($r))
) {
$entity->setId($id);
return true;
}
return false;
}
public function save($entity, ExtensibleData $context = null, $o = null)
{
if (! $entity instanceof ExtensibleData) {
$entity = $this->getObject($entity);
}
$o = $this->applyDefaultOptions($o, $entity);
$this->makeUuidIfEmpty($entity, $o);
parent::save($entity, $context, $o);
if (! empty($r = $entity->getIdentifiers())) {
foreach ($r as $id) {
$this->newStorager(Identifier::class)->save($id, $entity);
}
}
return $entity;
}
protected function processRaw($entity, $result)
{
if (! is_array($result)) {
return $result;
}
$entity = parent::processRaw($entity, $result);
if (! empty($res = $this->newStorager(Identifier::class)->loadList($entity))) {
$entity->setIdentifiers($res);
}
return $entity;
}
}