08-view.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace cx_newsletter;
  3. abstract class view
  4. implements view_interface {
  5. public function __construct(
  6. \wpdb $database,
  7. settings $settings,
  8. \cx_appengine\templates $templates,
  9. table_names $tables
  10. ) {
  11. $this->database = $database;
  12. $this->settings = $settings;
  13. $this->templates = $templates;
  14. $this->tables = $tables;
  15. $this->view = new \cx_appengine\view($_POST);
  16. }
  17. protected function get_settings() : settings {
  18. return $this->settings;
  19. }
  20. protected function get_database() : \wpdb {
  21. return $this->database;
  22. }
  23. protected function get_templates() : \cx_appengine\templates {
  24. return $this->templates;
  25. }
  26. protected function get_view() : \cx_appengine\view {
  27. return $this->view;
  28. }
  29. protected function get_tables() : table_names {
  30. return $this->tables;
  31. }
  32. protected function add_activity(string $name) : self {
  33. $activity = new $name(
  34. $this->get_database(),
  35. $this->get_settings(),
  36. $this->get_templates(),
  37. $this->get_tables()
  38. );
  39. $this->get_view()->add_activity($activity);
  40. return $this;
  41. }
  42. public function action() : void {
  43. $this->process();
  44. echo(
  45. $this
  46. ->get_view()
  47. ->prepare()
  48. ->choose()
  49. ->validate()
  50. ->process()
  51. ->render()
  52. ->get()
  53. );
  54. }
  55. private \cx_appengine\view $view;
  56. private \wpdb $database;
  57. private settings $settings;
  58. private table_names $tables;
  59. private \cx_appengine\templates $templates;
  60. }