You are here

protected function StringMongoDBStorage::getFilterFindArray in MongoDB 8

Creates a MongoDB find array based on conditions and filters.

Parameters

$conditions:

$options:

Return value

array

1 call to StringMongoDBStorage::getFilterFindArray()
StringMongoDBStorage::getStrings in mongodb_locale/src/StringStorage.php
Loads multiple source string objects.

File

mongodb_locale/src/StringStorage.php, line 60

Class

StringMongoDBStorage

Namespace

Drupal\mongodb_locale

Code

protected function getFilterFindArray($conditions, $options) {
  $find = $this
    ->getFindArray($conditions);
  if (isset($options['filters'])) {
    if (isset($options['filters']['source'])) {
      $find['source'] = $this
        ->getMongoRegex($options['filters']['source']);
    }
    if (isset($options['filters']['translation'])) {
      $find['translations'] = array(
        // Language must be set otherwise it makes no sense to search for a translation.
        'language' => $conditions['language'],
        'translation' => $this
          ->getMongoRegex($options['filters']['translation']),
        // We need something so that we always can run a full match.
        'customized' => isset($conditions['customized']) ? (bool) $conditions['customized'] : array(
          '$exists' => TRUE,
        ),
      );
      unset($conditions['customized']);
      unset($conditions['language']);
    }
  }
  if (isset($conditions['customized'])) {
    $find['translations']['$elemMatch']['customized'] = $conditions['customized'];
  }
  if (isset($conditions['language'])) {
    $find['translations']['$elemMatch']['language'] = $conditions['language'];
  }
  if (isset($conditions['translated']) && empty($find['translations'])) {
    $find['translations']['$exists'] = $conditions['translated'];
  }
  return $find;
}