class FieldOrLanguageJoin extends JoinPluginBase (View source)

Implementation for the "field OR language" join.

If the extra conditions contain either ".langcode" or ".bundle", they will be grouped and joined with OR instead of AND. The entire group will then be joined to the other conditions with AND.

This is needed for configurable fields that are translatable on some bundles and untranslatable on others. The correct field values to fetch in this case have a langcode that matches the entity record or have a bundle on which the field is untranslatable. Thus, the entity base table (or data table, or revision data table, respectively) must join the field data table (or field revision table) on a matching langcode or a bundle where the field is untranslatable. The following example views data achieves this for a node field named 'field_tags' which is translatable on an 'article' node type, but not on the 'news' and 'page' node types:

Traits

Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.

Provides dependency injection friendly methods for serialization.

Provides a trait for the messenger service.

Constants

DERIVATIVE_SEPARATOR

A string which is used to separate base plugin IDs from the derivative ID.

Properties

protected string $pluginId

The plugin_id.

from  PluginBase
protected array $pluginDefinition

The plugin implementation definition.

from  PluginBase
array $configuration

The configuration array passed by initJoin.

from  JoinPluginBase
protected TranslationInterface $stringTranslation

The string translation service.

from  StringTranslationTrait
protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected MessengerInterface $messenger

The messenger.

from  MessengerTrait
string $table

The table to join (right table).

from  JoinPluginBase
string $field

The field to join on (right field).

from  JoinPluginBase
string $leftTable

The table we join to.

from  JoinPluginBase
string $leftField

The field we join to.

from  JoinPluginBase
string $leftFormula

A formula to be used instead of the left field.

from  JoinPluginBase
array $extra

An array of extra conditions on the join.

from  JoinPluginBase
string $type

The join type, so for example LEFT (default) or INNER.

from  JoinPluginBase
string $extraOperator

How all the extras will be combined. Either AND or OR.

from  JoinPluginBase
bool $adjusted

Defines whether a join has been adjusted.

from  JoinPluginBase

Methods

__construct(array $configuration, string $plugin_id, mixed $plugin_definition)

Constructs a Drupal\views\Plugin\views\join\JoinPluginBase object.

string
getPluginId()

Gets the plugin_id of the plugin instance.

string
getBaseId()

Gets the base_plugin_id of the plugin instance.

string|null
getDerivativeId()

Gets the derivative_id of the plugin instance.

array
getPluginDefinition()

Gets the definition of the plugin implementation.

bool
isConfigurable()

Determines if the plugin is configurable.

t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

getStringTranslation()

Gets the string translation service.

$this
setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

messenger()

Gets the messenger.

buildJoin($select_query, $table, QueryPluginBase $view_query)

Builds the SQL for the join this object represents.

joinAddExtra(array $arguments, string $condition, array $table, SelectInterface $select_query, array $left_table = NULL)

Adds the extras to the join condition.

string
buildExtra(array $info, array $arguments, array $table, SelectInterface $select_query, array $left)

Builds a single extra condition.

Details

__construct(array $configuration, string $plugin_id, mixed $plugin_definition)

Constructs a Drupal\views\Plugin\views\join\JoinPluginBase object.

Parameters

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin_id for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

string getPluginId()

Gets the plugin_id of the plugin instance.

Return Value

string

The plugin_id of the plugin instance.

string getBaseId()

Gets the base_plugin_id of the plugin instance.

Return Value

string

The base_plugin_id of the plugin instance.

string|null getDerivativeId()

Gets the derivative_id of the plugin instance.

Return Value

string|null

The derivative_id of the plugin instance NULL otherwise.

array getPluginDefinition()

Gets the definition of the plugin implementation.

Return Value

array

The plugin definition, as returned by the discovery object used by the plugin manager.

bool isConfigurable()

Determines if the plugin is configurable.

Return Value

bool

A boolean indicating whether the plugin is configurable.

protected TranslatableMarkup t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.

In order for strings to be localized, make them available in one of the ways supported by the

Parameters

string $string

A string containing the English text to translate.

array $args

(optional) An associative array of replacements to make after translation. Based on the first character of the key, the value is escaped and/or themed. See \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for details.

array $options

(optional) An associative array of additional options, with the following elements:

  • 'langcode' (defaults to the current language): A language code, to translate to a language other than what is used to display the page.
  • 'context' (defaults to the empty context): The context the source string belongs to. See the @link i18n Internationalization topic @endlink for more information about string contexts.

Return Value

TranslatableMarkup

An object that, when cast to a string, returns the translated string.

See also

FormattableMarkup::placeholderFormat
TranslatableMarkup::__construct

protected formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

Parameters

$count
$singular
$plural
array $args
array $options

See also

TranslationInterface::formatPlural

protected getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

Parameters

$langcode

See also

PluralFormulaInterface::getNumberOfPlurals

protected TranslationInterface getStringTranslation()

Gets the string translation service.

Return Value

TranslationInterface

The string translation service.

$this setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

Parameters

TranslationInterface $translation

The string translation service.

Return Value

$this

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

Parameters

MessengerInterface $messenger

The messenger.

MessengerInterface messenger()

Gets the messenger.

Return Value

MessengerInterface

The messenger.

buildJoin($select_query, $table, QueryPluginBase $view_query)

Builds the SQL for the join this object represents.

When possible, try to use table alias instead of table names.

Parameters

$select_query

A select query object.

$table

The base table to join.

QueryPluginBase $view_query

The source views query.

protected joinAddExtra(array $arguments, string $condition, array $table, SelectInterface $select_query, array $left_table = NULL)

Adds the extras to the join condition.

Parameters

array $arguments

Array of query arguments.

string $condition

The condition to be built.

array $table

The right table.

SelectInterface $select_query

The current select query being built.

array $left_table

The left table.

protected string buildExtra(array $info, array $arguments, array $table, SelectInterface $select_query, array $left)

Builds a single extra condition.

Parameters

array $info

The extra information. See JoinPluginBase::$extra for details.

array $arguments

Array of query arguments.

array $table

The right table.

SelectInterface $select_query

The current select query being built.

array $left

The left table.

Return Value

string

The extra condition