ReportValidator.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\ReportXml\DB;
  7. use Magento\Analytics\ReportXml\ConnectionFactory;
  8. use Magento\Analytics\ReportXml\QueryFactory;
  9. use Magento\Framework\Api\SearchCriteriaInterface;
  10. /**
  11. * Validates report definitions by doing query to storage with limit 0
  12. */
  13. class ReportValidator
  14. {
  15. /**
  16. * @var ConnectionFactory
  17. */
  18. private $connectionFactory;
  19. /**
  20. * @var QueryFactory
  21. */
  22. private $queryFactory;
  23. /**
  24. * ReportValidator constructor.
  25. *
  26. * Needs connection and query factory for do a query
  27. *
  28. * @param ConnectionFactory $connectionFactory
  29. * @param QueryFactory $queryFactory
  30. */
  31. public function __construct(ConnectionFactory $connectionFactory, QueryFactory $queryFactory)
  32. {
  33. $this->connectionFactory = $connectionFactory;
  34. $this->queryFactory = $queryFactory;
  35. }
  36. /**
  37. * Tries to do query for provided report with limit 0 and return error information if it failed
  38. *
  39. * @param string $name
  40. * @param SearchCriteriaInterface $criteria
  41. * @return array
  42. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  43. */
  44. public function validate($name, SearchCriteriaInterface $criteria = null)
  45. {
  46. $query = $this->queryFactory->create($name);
  47. $connection = $this->connectionFactory->getConnection($query->getConnectionName());
  48. $query->getSelect()->limit(0);
  49. try {
  50. $connection->query($query->getSelect());
  51. } catch (\Zend_Db_Statement_Exception $e) {
  52. return [$name, $e->getMessage()];
  53. }
  54. return [];
  55. }
  56. }