Commit e4e8a865 authored by thedut's avatar thedut
Browse files

Issue #2981682 by thedut: [META] Stabilize module for usage with PostgreSQL DB driver

parent 5424ccc9
Loading
Loading
Loading
Loading
+15 −2
Changes for dbee.module: 15 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -644,7 +644,8 @@ function _dbee_where_clause(&$query, $users_alias, $dbee_alias) {
            // Provide a tag to disabling this behavior, needed for testing or
            // for custom modules : dbee_mail_disable_insensitive_case and
            // dbee_init_disable_insensitive_case.
            if (empty($query->alterTags["dbee_{$dbee_field}_disable_insensitive_case"])) {
            $connection = \Drupal::service('database');
            if (empty($query->alterTags["dbee_{$dbee_field}_disable_insensitive_case"]) && !($connection->databaseType() == 'pgsql' && $dbee_field == 'init')) {
              $insensitive_search = 'TRUE';
            }

@@ -695,7 +696,7 @@ function _dbee_where_clause(&$query, $users_alias, $dbee_alias) {

            if ($need_rewrite) {

              if (!$where_match && $new_field == $users_alias . '.uid') {
              if (!$where_match) {
                // Add to ignore empty values values.
                // Retreive empty values.
                // @TODO fix depreciated db_or by orConditionGroup().
@@ -703,10 +704,22 @@ function _dbee_where_clause(&$query, $users_alias, $dbee_alias) {
                  ->fields('ufd', ['uid'])
                  ->condition(db_or()->condition("ufd.{$dbee_field}", '', '=')->isNull("ufd.{$dbee_field}"))
                  ->execute();
                $added_empty = FALSE;
                foreach ($empty_users as $account) {
                  if (array_search($account->uid, $new_values) === FALSE) {
                    if ($new_field == $users_alias . '.uid') {
                      $new_values[] = $account->uid;
                      $added_empty = TRUE;
                    }
                    else {
                      // Case 1 = 0 but need to eliminate some result.
                      $new_field = $users_alias . '.uid';
                      $new_values[] = $account->uid;
                    }
                  }
                }
                if ($added_empty) {
                  sort($new_values);
                }
              }

+6 −5
Changes for tests/src/Functional/DbeeQueryUsersTest.php: 6 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace Drupal\Tests\dbee\Functional;

use Drupal\Core\Database\Query\Condition;
use Drupal\KernelTests\AssertLegacyTrait;

/**
 * Database queries on user emails.
@@ -258,9 +259,9 @@ class DbeeQueryUsersTest extends DbeeWebSwitchTestBase {
          $query_args = $query->arguments();
          $this->queryResults[$test][$dbee][$dbee_field] = $result_uids;
          $verbose[$test][$dbee][$dbee_field] = "test #{$test}, dbee " . (($dbee) ? 'enabled' : 'uninstalled') . ", field : {$dbee_field}" .
            (($dbee) ? '' : (($this->queryResults[$test][0][$dbee_field] == $this->queryResults[$test][1][$dbee_field]) ? '<br />Test succeed' : '<br /><strong>Test Failed</strong>')) .
            '<br />' . (($dbee) ? 'Transformed query' : 'Query') . ' --> ' . strtr($query->__toString(), $query_args) .
            '<br /> ===> returned users ids : ' . implode(' ,', $result_uids);
            (($dbee) ? '' : (($this->queryResults[$test][0][$dbee_field] == $this->queryResults[$test][1][$dbee_field]) ? "\n" . 'Test succeed' : "\n" . '<strong>Test Failed</strong>')) .
            "\n" . (($dbee) ? 'Transformed query' : 'Query') . ' --> ' . strtr($query->__toString(), $query_args) .
            "\n" . ' ===> returned users ids : ' . implode(' ,', $result_uids);
        }
      }
    }
@@ -268,9 +269,9 @@ class DbeeQueryUsersTest extends DbeeWebSwitchTestBase {
    // Explore results.
    foreach ($this->queryResults as $test => $data) {
      foreach (['mail', 'init'] as $dbee_field) {
        $this->verbose($verbose[$test][0][$dbee_field] . '<br /><br />' . $verbose[$test][1][$dbee_field]);
        $debug = "\n\n\n" . $verbose[$test][0][$dbee_field] . "\n\n" . $verbose[$test][1][$dbee_field];
        $this->assertEquals($data[0][$dbee_field], $data[1][$dbee_field], "test #{$test} succeed : {$test_title[$test]} ({$dbee_field})" . $debug);
      }
      $this->assertEquals($data[0], $data[1], "test #{$test} succeed : {$test_title[$test]}");
    }
  }