ConditionManager.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Search\Adapter\Mysql;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\DB\Adapter\AdapterInterface;
  9. /**
  10. * MySQL search condition manager
  11. *
  12. * @api
  13. * @deprecated 102.0.0
  14. * @see \Magento\ElasticSearch
  15. * @since 100.0.2
  16. */
  17. class ConditionManager
  18. {
  19. const CONDITION_PATTERN_SIMPLE = '%s %s %s';
  20. const CONDITION_PATTERN_ARRAY = '%s %s (%s)';
  21. /**
  22. * @var AdapterInterface
  23. */
  24. private $connection;
  25. /**
  26. * @param \Magento\Framework\App\ResourceConnection $resource
  27. */
  28. public function __construct(ResourceConnection $resource)
  29. {
  30. $this->connection = $resource->getConnection();
  31. }
  32. /**
  33. * Wrap query with parentheses.
  34. *
  35. * @param string $query
  36. * @return string
  37. */
  38. public function wrapBrackets($query)
  39. {
  40. return empty($query)
  41. ? $query
  42. : '(' . $query . ')';
  43. }
  44. /**
  45. * Combine multiple queries.
  46. *
  47. * @param string[] $queries
  48. * @param string $unionOperator
  49. * @return string
  50. */
  51. public function combineQueries(array $queries, $unionOperator)
  52. {
  53. return implode(
  54. ' ' . $unionOperator . ' ',
  55. array_filter($queries, 'strlen')
  56. );
  57. }
  58. /**
  59. * Generate query condition.
  60. *
  61. * @param string $field
  62. * @param string $operator
  63. * @param mixed $value
  64. * @return string
  65. */
  66. public function generateCondition($field, $operator, $value)
  67. {
  68. return sprintf(
  69. is_array($value) ? self::CONDITION_PATTERN_ARRAY : self::CONDITION_PATTERN_SIMPLE,
  70. $this->connection->quoteIdentifier($field),
  71. $operator,
  72. $this->connection->quote($value)
  73. );
  74. }
  75. }