3
0
Fork 0
mirror of https://github.com/farmOS/farmOS.git synced 2024-02-23 11:37:38 +01:00
farmOS/modules/core/location/src/LogLocation.php

71 lines
1.4 KiB
PHP

<?php
namespace Drupal\farm_location;
use Drupal\log\Entity\LogInterface;
/**
* Log location logic.
*/
class LogLocation implements LogLocationInterface {
/**
* The name of the log location field.
*
* @var string
*/
const LOG_FIELD_LOCATION = 'location';
/**
* The name of the log geometry field.
*
* @var string
*/
const LOG_FIELD_GEOMETRY = 'geometry';
/**
* {@inheritdoc}
*/
public function hasLocation(LogInterface $log): bool {
return !$log->get(static::LOG_FIELD_LOCATION)->isEmpty();
}
/**
* {@inheritdoc}
*/
public function hasGeometry(LogInterface $log): bool {
return !$log->get(static::LOG_FIELD_GEOMETRY)->isEmpty();
}
/**
* {@inheritdoc}
*/
public function getLocation(LogInterface $log): array {
return $log->{static::LOG_FIELD_LOCATION}->referencedEntities() ?? [];
}
/**
* {@inheritdoc}
*/
public function getGeometry(LogInterface $log): string {
return $log->get(static::LOG_FIELD_GEOMETRY)->value ?? '';
}
/**
* {@inheritdoc}
*/
public function setLocation(LogInterface $log, array $assets): void {
foreach ($assets as $asset) {
$log->{static::LOG_FIELD_LOCATION}[] = ['target_id' => $asset->id()];
}
}
/**
* {@inheritdoc}
*/
public function setGeometry(LogInterface $log, string $wkt): void {
$log->{static::LOG_FIELD_GEOMETRY}->value = $wkt;
}
}