4-campaigns_converter.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace cx_newsletter;
  3. class campaigns_converter
  4. extends database_converter
  5. implements database_converter_interface {
  6. public function load_array(array $target) : self {
  7. $this->check_all_exists($target, ['message', 'type', 'finalized']);
  8. $type_converter = new campaign_type_converter();
  9. $type = (
  10. $type_converter
  11. ->load_string($target['type'])
  12. ->get_enum()
  13. );
  14. $id = intval($target['message']);
  15. $message = new message($id);
  16. $finalized = $this->date_or_null($target['finalized']);
  17. $this->target = new campaign($this->id_or_null($target));
  18. $this->target->type = $type;
  19. $this->target->message = $message;
  20. $this->target->finalized = $finalized;
  21. $this->target->test = $target['test'];
  22. if ($target['grouped'] !== null) {
  23. $this->target->group = new group(intval($target['grouped']));
  24. }
  25. return $this;
  26. }
  27. public function get_array() : array {
  28. $this->check_target();
  29. $type_converter = new campaign_type_converter();
  30. $type = (
  31. $type_converter
  32. ->load_enum($this->target->type)
  33. ->get_string()
  34. );
  35. $finalized = $this->string_from_date($this->target->finalized);
  36. $target = [];
  37. $target['message'] = $this->target->message->get_id();
  38. $target['type'] = $type;
  39. $target['finalized'] = $finalized;
  40. $target['test'] = $this->target->test;
  41. $target['grouped'] = null;
  42. if ($this->target->group !== null and $this->target->group->has_id()) {
  43. $target['grouped'] = $this->target->group->get_id();
  44. }
  45. return $target;
  46. }
  47. }