Unverified Commit 6f339f28 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3113403 by Beakerboy, neelam_wadhwani, daffie, alexpott: Make...

Issue #3113403 by Beakerboy, neelam_wadhwani, daffie, alexpott: Make Drupal\Core\Database\Query\Condition driver overridable
parent ea742ff0
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace Drupal\Core\Database;

use Drupal\Core\Database\Query\Condition;

/**
 * Base Database API class.
 *
@@ -783,6 +785,11 @@ public function getDriverClass($class) {
      }
      $driver_class = $this->connectionOptions['namespace'] . '\\' . $class;
      $this->driverClasses[$class] = class_exists($driver_class) ? $driver_class : $class;
      if ($this->driverClasses[$class] === 'Condition') {
        // @todo Deprecate the fallback for contrib and custom drivers in 9.1.x
        //   in https://www.drupal.org/project/drupal/issues/3120036.
        $this->driverClasses[$class] = Condition::class;
      }
    }
    return $this->driverClasses[$class];
  }
@@ -944,6 +951,22 @@ public function schema() {
    return $this->schema;
  }

  /**
   * Prepares and returns a CONDITION query object.
   *
   * @param string $conjunction
   *   The operator to use to combine conditions: 'AND' or 'OR'.
   *
   * @return \Drupal\Core\Database\Query\Condition
   *   A new Condition query object.
   *
   * @see \Drupal\Core\Database\Query\Condition
   */
  public function condition($conjunction) {
    $class = $this->getDriverClass('Condition');
    return new $class($conjunction);
  }

  /**
   * Escapes a database name string.
   *
+1 −2
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@

namespace Drupal\Core\Database\Driver\mysql;

use Drupal\Core\Database\Query\Condition;
use Drupal\Core\Database\SchemaException;
use Drupal\Core\Database\SchemaObjectExistsException;
use Drupal\Core\Database\SchemaObjectDoesNotExistException;
@@ -75,7 +74,7 @@ protected function getPrefixInfo($table = 'default', $add_prefix = TRUE) {
  protected function buildTableNameCondition($table_name, $operator = '=', $add_prefix = TRUE) {
    $table_info = $this->getPrefixInfo($table_name, $add_prefix);

    $condition = new Condition('AND');
    $condition = $this->connection->condition('AND');
    $condition->condition('table_schema', $table_info['database']);
    $condition->condition('table_name', $table_info['table'], $operator);
    return $condition;
+1 −1
Original line number Diff line number Diff line
@@ -399,7 +399,7 @@ protected function mapConditionOperator($operator) {
   * {@inheritdoc}
   */
  public function conditionGroupFactory($conjunction = 'AND') {
    return new Condition($conjunction);
    return new static($conjunction);
  }

  /**
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public function __construct(Connection $connection, $table, array $options = [])
    parent::__construct($connection, $options);
    $this->table = $table;

    $this->condition = new Condition('AND');
    $this->condition = $this->connection->condition('AND');
  }

  /**
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ public function __construct(Connection $connection, $table, array $options = [])
    parent::__construct($connection, $options);
    $this->table = $table;
    $this->conditionTable = $table;
    $this->condition = new Condition('AND');
    $this->condition = $this->connection->condition('AND');
  }

  /**
Loading