public function loadMultiple()

in modules/quanthub_indicator/src/Plugin/search_api/datasource/QuanthubContentEntity.php [234:291]


  public function loadMultiple(array $ids) {
    $allowed_languages = $this->getLanguages();

    $entity_ids = [];
    foreach ($ids as $item_id) {
      $indicator_node_flag = FALSE;
      $pos = strrpos($item_id, ':');
      // This can only happen if someone passes an invalid ID, since we always
      // include a language code. Still, no harm in guarding against bad input.
      if ($pos === FALSE) {
        continue;
      }
      $entity_id = substr($item_id, 0, $pos);
      $langcode = substr($item_id, $pos + 1);
      if (str_contains($langcode, '_indicator')) {
        $exploded_langcode = explode('_indicator', $langcode);
        if (!empty($exploded_langcode[0])) {
          $langcode = $exploded_langcode[0];
        }
        $indicator_node_flag = TRUE;
      }
      if (isset($allowed_languages[$langcode])) {
        if ($indicator_node_flag) {
          $entity_ids[$entity_id][$item_id] = $langcode . '_indicator' . $exploded_langcode[1];
        }
        else {
          $entity_ids[$entity_id][$item_id] = $langcode;
        }
      }
    }

    /** @var \Drupal\Core\Entity\ContentEntityInterface[] $entities */
    $entities = $this->getEntityStorage()->loadMultiple(array_keys($entity_ids));
    $items = [];
    $allowed_bundles = $this->getBundles();

    foreach ($entity_ids as $entity_id => $langcodes) {
      if (empty($entities[$entity_id]) || !isset($allowed_bundles[$entities[$entity_id]->bundle()])) {
        continue;
      }
      foreach ($langcodes as $item_id => $langcode) {

        $filtered_langcode = $langcode;
        if (str_contains($langcode, '_indicator')) {
          $exploded_langcode = explode('_indicator', $langcode);
          if (!empty($exploded_langcode[0])) {
            $filtered_langcode = $exploded_langcode[0];
          }
        }

        if ($entities[$entity_id]->hasTranslation($filtered_langcode)) {
          $items[$item_id] = $entities[$entity_id]->getTranslation($filtered_langcode)->getTypedData();
        }
      }
    }

    return $items;
  }