Files
piratepoet/lib/CustomFields/CustomFieldsRepository.php
Pavel Dohnal ff9bd232ec Refactor custom fields api to doctrine
[MAILPOET-2453]
2019-12-19 10:24:41 +01:00

42 lines
1.3 KiB
PHP

<?php
namespace MailPoet\CustomFields;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\CustomFieldEntity;
/**
* @method CustomFieldEntity[] findBy(array $criteria, array $order_by = null, int $limit = null, int $offset = null)
* @method CustomFieldEntity[] findAll()
* @method CustomFieldEntity|null findOneBy(array $criteria, array $order_by = null)
* @method CustomFieldEntity|null findOneById(mixed $id)
* @method void persist(CustomFieldEntity $entity)
* @method void remove(CustomFieldEntity $entity)
*/
class CustomFieldsRepository extends Repository {
protected function getEntityClassName() {
return CustomFieldEntity::class;
}
/**
* @param array $data
* @return CustomFieldEntity
*/
public function createOrUpdate($data) {
if (isset($data['id'])) {
$field = $this->findOneById((int)$data['id']);
} elseif (isset($data['name'])) {
$field = $this->findOneBy(['name' => $data['name']]);
}
if (!isset($field)) {
$field = new CustomFieldEntity();
$this->entity_manager->persist($field);
}
if (isset($data['name'])) $field->setName($data['name']);
if (isset($data['type'])) $field->setType($data['type']);
if (isset($data['params'])) $field->setParams($data['params']);
$this->entity_manager->flush();
return $field;
}
}