7-show_campaigns_activity.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace cx_newsletter;
  3. class show_campaigns_activity
  4. extends activity {
  5. public function show_after_button() : null {
  6. return null;
  7. }
  8. public function get_site_template_name() : string {
  9. return 'show_campaigns';
  10. }
  11. public function load_campaigns() : \cx_appengine\string_builder {
  12. $result = new \cx_appengine\string_builder();
  13. $repository = new campaigns_repository(
  14. $this->get_database(),
  15. $this->get_tables()
  16. );
  17. $sended = new send_log_repository(
  18. $this->get_database(),
  19. $this->get_tables()
  20. );
  21. $template = (
  22. $this
  23. ->get_templates()
  24. ->prepare('single_campaign')
  25. );
  26. foreach ($repository->load_all() as $campaign) {
  27. $options = [];
  28. $options['id'] = $campaign->get_id();
  29. $options['title'] = $campaign->message->title;
  30. $options['sended'] = $sended->count($campaign, true);
  31. if ($campaign->finalized === null) {
  32. $options['to_send'] = $sended->count($campaign, false);
  33. } else {
  34. $options['to_send'] = 0;
  35. }
  36. $options['finalized'] = $campaign->finalized !== null ?
  37. $campaign->finalized->format('Y-m-d H:i:s') :
  38. __('No', 'cx_newsletter');
  39. $options['test'] = $campaign->test ?
  40. __('Yes', 'cx_newsletter') :
  41. __('No', 'cx_newsletter');
  42. $options['type'] = match ($campaign->type) {
  43. campaign_type::sms =>
  44. __('SMS campaign', 'cx_newsletter'),
  45. campaign_type::email =>
  46. __('E-Mail campaign', 'cx_newsletter')
  47. };
  48. $result->push($template->render($options));
  49. }
  50. return $result;
  51. }
  52. public function process() : self {
  53. $this->set('campaigns', $this->load_campaigns());
  54. return $this;
  55. }
  56. }