You are here

protected function StringDatabaseStorageDecorator::dbStringLoad in Language Hierarchy 2.x

Loads multiple string objects.

Parameters

array $conditions: Any of the conditions used by dbStringSelect().

array $options: Any of the options used by dbStringSelect().

string $class: Class name to use for fetching returned objects.

Return value

\Drupal\locale\StringInterface[] Array of objects of the class requested.

Overrides StringDatabaseStorage::dbStringLoad

File

src/StringDatabaseStorageDecorator.php, line 68

Class

StringDatabaseStorageDecorator
Decorates the locale.storage service.

Namespace

Drupal\language_hierarchy

Code

protected function dbStringLoad(array $conditions, array $options, $class) {
  $strings = parent::dbStringLoad($conditions, $options, $class);

  // If querying for a single language, remove fallback results that also
  // have corresponding translations in a more specific language.
  if (!empty($conditions['language']) && is_scalar($conditions['language'])) {
    $filtered = [];
    foreach ($strings as $string) {
      $lid = $string
        ->getId();
      if (!isset($filtered[$lid])) {
        $filtered[$lid] = $string;
      }
    }
    $strings = array_values($filtered);
  }
  return $strings;
}