Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. FieldOrLanguageJoin.php

function FieldOrLanguageJoin::joinAddExtra

Overrides JoinPluginBase::joinAddExtra

File

core/modules/views/src/Plugin/views/join/FieldOrLanguageJoin.php, line 69

Class

FieldOrLanguageJoin
Implementation for the "field OR language" join.

Namespace

Drupal\views\Plugin\views\join

Code

protected function joinAddExtra(&$arguments, &$condition, $table, SelectInterface $select_query, $left_table = NULL) {
    if (empty($this->extra)) {
        return;
    }
    if (is_array($this->extra)) {
        $extras = [];
        foreach ($this->extra as $extra) {
            $extras[] = $this->buildExtra($extra, $arguments, $table, $select_query, $left_table);
        }
        // Remove and store the langcode OR bundle join condition extra.
        $language_bundle_conditions = [];
        foreach ($extras as $key => $extra) {
            if (str_contains($extra, '.langcode') || str_contains($extra, '.bundle')) {
                $language_bundle_conditions[] = $extra;
                unset($extras[$key]);
            }
        }
        if (count($extras) > 1) {
            $condition .= ' AND (' . implode(' ' . $this->extraOperator . ' ', $extras) . ')';
        }
        elseif ($extras) {
            $condition .= ' AND ' . array_shift($extras);
        }
        // Tack on the langcode OR bundle join condition extra.
        if (!empty($language_bundle_conditions)) {
            $condition .= ' AND (' . implode(' OR ', $language_bundle_conditions) . ')';
        }
    }
    elseif (is_string($this->extra)) {
        $condition .= " AND ({$this->extra})";
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal