Нет описания

CustomFieldsRepository.php 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace MailPoet\CustomFields;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Doctrine\Repository;
  5. use MailPoet\Entities\CustomFieldEntity;
  6. /**
  7. * @extends Repository<CustomFieldEntity>
  8. */
  9. class CustomFieldsRepository extends Repository {
  10. protected function getEntityClassName() {
  11. return CustomFieldEntity::class;
  12. }
  13. /**
  14. * @param array $data
  15. * @return CustomFieldEntity
  16. */
  17. public function createOrUpdate($data) {
  18. // set name as label by default
  19. if (empty($data['params']['label']) && isset($data['name'])) {
  20. $data['params']['label'] = $data['name'];
  21. }
  22. if (isset($data['id'])) {
  23. $field = $this->findOneById((int)$data['id']);
  24. } elseif (isset($data['name'])) {
  25. $field = $this->findOneBy(['name' => $data['name']]);
  26. }
  27. if (!isset($field)) {
  28. $field = new CustomFieldEntity();
  29. $this->entityManager->persist($field);
  30. }
  31. if (isset($data['name'])) $field->setName($data['name']);
  32. if (isset($data['type'])) $field->setType($data['type']);
  33. if (isset($data['params'])) $field->setParams($data['params']);
  34. $this->entityManager->flush();
  35. return $field;
  36. }
  37. }