class-report-factory.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. /**
  3. * Report Factory Class - Creates different types of reports
  4. *
  5. * @package StudiouWCCustomReports
  6. */
  7. if (!defined('ABSPATH')) {
  8. exit;
  9. }
  10. class StudiouWC_Report_Factory {
  11. private $db_manager;
  12. public function __construct($db_manager) {
  13. $this->db_manager = $db_manager;
  14. }
  15. public function create_report($type, $data) {
  16. switch ($type) {
  17. case 'product_categories_summary':
  18. return new StudiouWC_Product_Categories_Report($this->db_manager, $data);
  19. case 'order_customers_list':
  20. return new StudiouWC_Order_Customers_Report($this->db_manager, $data);
  21. default:
  22. /* translators: %s: report type name */
  23. throw new InvalidArgumentException(sprintf(__('Unknown report type: %s', StudiouWC_Main::get_text_domain()), $type));
  24. }
  25. }
  26. public function get_available_report_types() {
  27. return array(
  28. 'product_categories_summary' => __('Product Categories and Variants Summary', StudiouWC_Main::get_text_domain()),
  29. 'order_customers_list' => __('Order Customers List', StudiouWC_Main::get_text_domain())
  30. );
  31. }
  32. public function is_valid_report_type($type) {
  33. $available_types = array_keys($this->get_available_report_types());
  34. return in_array($type, $available_types);
  35. }
  36. }