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
<?php
namespace GeniBase\Rs\Server;
use Gedcomx\Gedcomx;
use Gedcomx\Conclusion\DateInfo;
use Gedcomx\Conclusion\PlaceDescription;
use Gedcomx\Rt\GedcomxModelVisitorBase;
use Gedcomx\Common\TextValue;
use Gedcomx\Util\FormalDate;
class GedcomxRsUpdater extends GedcomxModelVisitorBase
{
public static function update(Gedcomx $document)
{
$visitor = new self();
$document->accept($visitor);
return $document;
}
public function visitPlaceDescription(PlaceDescription $place)
{
if (! empty($r = $place->getTemporalDescription())) {
array_push($this->contextStack, $place);
$r->accept($this);
array_pop($this->contextStack);
}
parent::visitPlaceDescription($place);
}
public function visitDate(DateInfo $date)
{
$tv = new TextValue(
[
'lang' => 'ru'
]
);
if (! empty($d = $date->getFormal())) {
$fd = new FormalDate();
$fd->parse($d);
$r = '';
if (! empty($x = $fd->getStart())) {
$r .= $x->getYear();
} else {
$r .= 'N/A';
}
if (! empty($x = $fd->getEnd())) {
$r .= '–' . $x->getYear();
} elseif (! empty($r)) {
$r .= '–N/A';
}
$tv->setValue($r);
} else {
$tv->setValue($date->getOriginal());
}
$date->setNormalizedExtensions([$tv]);
parent::visitDate($date);
}
}