Field Collection Item source plugin.
Available configuration keys:
@MigrateSource(
id = "d7_field_collection_item",
source_module = "field_collection",
)
Expanded class hierarchy of FieldCollectionItem
class FieldCollectionItem extends FieldableEntity {
/**
* Join string for getting current revisions.
*/
const JOIN = 'f.revision_id = fr.revision_id';
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'field_name' => '',
] + parent::defaultConfiguration();
}
/**
* {@inheritdoc}
*/
public function query() {
$query = $this
->select('field_collection_item', 'f')
->fields('f', [
'item_id',
'field_name',
'archived',
])
->fields('fr', [
'revision_id',
]);
$query
->innerJoin('field_collection_item_revision', 'fr', static::JOIN);
// This configuration item may be set by a deriver to restrict the
// bundles retrieved.
if ($this->configuration['field_name']) {
$query
->condition('f.field_name', $this->configuration['field_name']);
$query
->addField('fc', 'entity_type', 'parent_type');
$query
->addField('fc', 'entity_id', 'parent_id');
$query
->innerJoin('field_revision_' . $this->configuration['field_name'], 'fc', 'fc.' . $this->configuration['field_name'] . '_value = f.item_id and fc.' . $this->configuration['field_name'] . '_revision_id = f.revision_id');
}
return $query;
}
/**
* {@inheritdoc}
*/
public function prepareRow(Row $row) {
// Remove field_ prefix for new bundle.
$bundle = $row
->getSourceProperty('field_name');
$bundle = substr($bundle, FieldCollection::FIELD_COLLECTION_PREFIX_LENGTH);
$row
->setSourceProperty('bundle', $bundle);
// Get Field API field values.
$field_names = array_keys($this
->getFields('field_collection_item', $row
->getSourceProperty('field_name')));
$item_id = $row
->getSourceProperty('item_id');
$revision_id = $row
->getSourceProperty('revision_id');
foreach ($field_names as $field_name) {
$value = $this
->getFieldValues('field_collection_item', $field_name, $item_id, $revision_id);
$row
->setSourceProperty($field_name, $value);
}
return parent::prepareRow($row);
}
/**
* {@inheritdoc}
*/
public function fields() {
$fields = [
'item_id' => $this
->t('The field_collection_item id'),
'revision_id' => $this
->t('The field_collection_item revision id'),
'bundle' => $this
->t('The field_collection bundle'),
'field_name' => $this
->t('The field_collection field_name'),
'parent_type' => $this
->t('The type of the parent entity'),
'parent_id' => $this
->t('The identifier of the parent entity'),
];
return $fields;
}
/**
* {@inheritdoc}
*/
public function getIds() {
return [
'item_id' => [
'type' => 'integer',
'alias' => 'f',
],
];
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
FieldableEntity:: |
public | function | ||
FieldableEntity:: |
public | function | ||
FieldableEntity:: |
public | function | ||
FieldCollectionItem:: |
public | function |
Overrides FieldableEntity:: |
|
FieldCollectionItem:: |
public | function | ||
FieldCollectionItem:: |
public | function | 1 | |
FieldCollectionItem:: |
constant | Join string for getting current revisions. | 1 | |
FieldCollectionItem:: |
public | function | ||
FieldCollectionItem:: |
public | function |