block_generation-8.x-1.x-dev/src/Plugin/DataType/BlockGenerationEffectAwarePluginInstance.php
src/Plugin/DataType/BlockGenerationEffectAwarePluginInstance.php
<?php
namespace Drupal\block_generation\Plugin\DataType;
use Drupal\block_generation\BlockGenerationEffectAwareInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\plugin\Plugin\DataType\PluginInstance;
/**
* Provides a variable plugin instance data type.
*
* @DataType(
* id = "block_generation_effect_aware_plugin_instance",
* label = @Translation("Block Generation Effect plugin instance")
* )
*/
class BlockGenerationEffectAwarePluginInstance extends PluginInstance {
/**
* {@inheritdoc}
*/
public function setValue($value, $notify = TRUE) {
if ($value instanceof BlockGenerationEffectAwareInterface) {
$entity = $this;
while ($entity = $entity->getParent()) {
if ($entity instanceof EntityInterface) {
$value->setEntity($entity);
break;
}
}
}
parent::setValue($value, $notify);
}
}
