6-send_message_activity.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace cx_newsletter;
  3. class send_message_activity
  4. extends activity {
  5. public function show_after_button() : string {
  6. return 'send_via_email';
  7. }
  8. public function inside_buttons() : array {
  9. return [ 'send_via_sms', 'test_via_email', 'test_via_sms' ];
  10. }
  11. public function init_inputs() : array {
  12. return [
  13. 'id' => 'int'
  14. ];
  15. }
  16. public function inside_inputs() : array {
  17. return $this->init_inputs();
  18. }
  19. public function get_site_template_name() : string {
  20. return 'send_message';
  21. }
  22. public function process() : self {
  23. if (!$this->is_validated('id')) {
  24. $this->error_toast('Message ID is not valid.');
  25. }
  26. try {
  27. $mapper = new messages_mapper(
  28. $this->get_database(),
  29. $this->get_tables()
  30. );
  31. $message = new message($this->get_validated('id'));
  32. $message = $mapper->complete($message);
  33. $builder = new campaign_builder();
  34. $builder->set_test();
  35. if ($this->is_received('send_via_sms')) {
  36. $builder->set_test(false);
  37. }
  38. if ($this->is_received('send_via_email')) {
  39. $builder->set_test(false);
  40. }
  41. $builder->set_type(campaign_type::email);
  42. if ($this->is_received('send_via_sms')) {
  43. $builder->set_type(campaign_type::sms);
  44. }
  45. if ($this->is_received('test_via_sms')) {
  46. $builder->set_type(campaign_type::sms);
  47. }
  48. $builder->set_message($message);
  49. if ($this->get_received('group') !== 'NULL') {
  50. $group = new group(intval($this->get_received('group')));
  51. $builder->set_group($group);
  52. }
  53. if (!$builder->is_complete()) {
  54. throw new \exception('Builder is yet not complete.');
  55. }
  56. $campaign = $builder->get();
  57. $repository = new campaigns_repository(
  58. $this->get_database(),
  59. $this->get_tables()
  60. );
  61. $repository->create($campaign);
  62. $this->success_toast('Start sending it...');
  63. } catch (\exception $exception) {
  64. $this->error_toast($exception->getMessage());
  65. }
  66. return $this;
  67. }
  68. }