class FieldItemListProcessor in Content Synchronizer 8
Same name and namespace in other branches
- 8.2 src/Plugin/content_synchronizer/type_processor/FieldItemListProcessor.php \Drupal\content_synchronizer\Plugin\content_synchronizer\type_processor\FieldItemListProcessor
- 3.x src/Plugin/content_synchronizer/type_processor/FieldItemListProcessor.php \Drupal\content_synchronizer\Plugin\content_synchronizer\type_processor\FieldItemListProcessor
Plugin implementation For the type processor .
Plugin annotation
@TypeProcessor(
id = "content_synchronzer_field_item_list_type_processor",
fieldType = "Drupal\Core\Field\FieldItemList"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\content_synchronizer\Processors\Type\TypeProcessorBase implements TypeProcessorInterface
- class \Drupal\content_synchronizer\Plugin\content_synchronizer\type_processor\FieldItemListProcessor
- class \Drupal\content_synchronizer\Processors\Type\TypeProcessorBase implements TypeProcessorInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of FieldItemListProcessor
File
- src/
Plugin/ content_synchronizer/ type_processor/ FieldItemListProcessor.php, line 19
Namespace
Drupal\content_synchronizer\Plugin\content_synchronizer\type_processorView source
class FieldItemListProcessor extends TypeProcessorBase {
/**
* {@inheritdoc}
*/
public function getExportedData(TypedData $propertyData) {
$data = [];
foreach ($propertyData as $order => $value) {
$data[] = $value
->getValue();
}
$this
->exportIncludedImages($data);
return $data;
}
/**
* Add all the included image in the data.
*
* @param $data
* The item data.
*/
protected function exportIncludedImages(&$data) {
foreach ($data as &$item) {
foreach ($item as $key => $value) {
preg_match_all('@src="([^"]+)"@', $value, $match);
$src = array_pop($match);
if (!empty($src)) {
foreach ($src as $image) {
$this
->exportImage($image, $item, $key, $value);
}
}
}
}
}
/**
* Add the included image in the export.
*
* @param string $image
* The image src.
* @param array $data
* The item data.
* @param string $key
* The item key.
* @param mixed $value
* The item value.
*/
protected function exportImage($image, &$data, $key, $value) {
$fileNameData = explode('/files/', urldecode($image));
$fileName = end($fileNameData);
/** @var \Drupal\file\Entity\File $file */
$file = \Drupal::entityQuery('file')
->condition('uri', '%://' . $fileName, 'LIKE')
->execute();
if ($file = File::load(reset($file))) {
$plugin = $this->pluginManager
->getInstanceByEntityType($file
->getEntityTypeId());
if ($fileGid = $plugin
->export($file)) {
$data[$key] = str_replace($file
->uuid(), $fileGid, $data[$key]);
$data['included_images'] = $fileGid;
}
}
}
/**
* {@inheritdoc}
*/
public function initImportedEntity(Entity $entityToImport, $propertyId, array $data) {
if (array_key_exists($propertyId, $data)) {
foreach ($data[$propertyId] as $item) {
if (array_key_exists('included_images', $item)) {
$this
->importIncludedImage($item['included_images'], $item);
}
}
$entityToImport
->set($propertyId, $data[$propertyId]);
}
}
/**
* Import the included files.
*
* @param string $fileGID
* The file export gid.
*/
protected function importIncludedImage($fileGID, &$item) {
if ($entityData = ImportProcessor::getCurrentImportProcessor()
->getImport()
->getEntityDataFromGid($fileGID)) {
// import the file.
$plugin = $this->pluginManager
->getInstanceByEntityType($this->referenceManager
->getEntityTypeFromGid($fileGID));
$file = $plugin
->import($entityData);
// set the file uuid in the data value.
unset($item['included_images']);
foreach ($item as $key => $value) {
$item[$key] = str_replace($fileGID, $file
->uuid(), $value);
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FieldItemListProcessor:: |
protected | function | Add the included image in the export. | |
FieldItemListProcessor:: |
protected | function | Add all the included image in the data. | |
FieldItemListProcessor:: |
public | function |
Get the data to export. Overrides TypeProcessorBase:: |
|
FieldItemListProcessor:: |
protected | function | Import the included files. | |
FieldItemListProcessor:: |
public | function |
Init the $propertyId value in the entity to import. Overrides TypeProcessorBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TypeProcessorBase:: |
protected | property | The entity processor plugin manager. | |
TypeProcessorBase:: |
protected | property | The global reference manager service. | |
TypeProcessorBase:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
1 |