Danny Lamb
8 years ago
1 changed files with 80 additions and 0 deletions
@ -0,0 +1,80 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora\Plugin\RulesAction; |
||||||
|
|
||||||
|
use Drupal\Core\Entity\EntityInterface; |
||||||
|
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; |
||||||
|
use Drupal\rules\Core\RulesActionBase; |
||||||
|
use Symfony\Component\DependencyInjection\ContainerInterface; |
||||||
|
use Symfony\Component\Serializer\SerializerInterface; |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides a 'Index in Fedora' action. |
||||||
|
* |
||||||
|
* @RulesAction( |
||||||
|
* id = "islandora_fedora_indexer", |
||||||
|
* label = @Translation("Index in Fedora"), |
||||||
|
* category = @Translation("Islandora"), |
||||||
|
* context = { |
||||||
|
* "entity" = @ContextDefinition("entity", |
||||||
|
* label = @Translation("Entity"), |
||||||
|
* description = @Translation("Specifies the entity to index in Fedora.") |
||||||
|
* ), |
||||||
|
* "broker_url" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Broker URL"), |
||||||
|
* description = @Translation("URL of STOMP Broker"), |
||||||
|
* default_value = "http://localhost:61613" |
||||||
|
* ), |
||||||
|
* "queue" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Queue"), |
||||||
|
* description = @Translation("Queue to publish message"), |
||||||
|
* default_value = "islandora/indexing/fedora" |
||||||
|
* ) |
||||||
|
* } |
||||||
|
* ) |
||||||
|
*/ |
||||||
|
class FedoraIndexer extends RulesActionBase implements ContainerFactoryPluginInterface { |
||||||
|
|
||||||
|
protected $serializer; |
||||||
|
|
||||||
|
/** |
||||||
|
* Constructs a FedoraIndexer object. |
||||||
|
* |
||||||
|
* @param array $configuration |
||||||
|
* A configuration array containing information about the plugin instance. |
||||||
|
* @param string $plugin_id |
||||||
|
* The plugin ID for the plugin instance. |
||||||
|
* @param mixed $plugin_definition |
||||||
|
* The plugin implementation definition. |
||||||
|
* @param \Symfony\Component\Serializer\SerializerInterface $serializer |
||||||
|
* Serialization service. |
||||||
|
*/ |
||||||
|
public function __construct(array $configuration, $plugin_id, $plugin_definition, SerializerInterface $serializer) { |
||||||
|
parent::__construct($configuration, $plugin_id, $plugin_definition); |
||||||
|
$this->serializer = $serializer; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { |
||||||
|
return new static( |
||||||
|
$configuration, |
||||||
|
$plugin_id, |
||||||
|
$plugin_definition, |
||||||
|
$container->get('serializer') |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set a system message. |
||||||
|
* |
||||||
|
*/ |
||||||
|
protected function doExecute(EntityInterface $entity, $broker_url, $queue) { |
||||||
|
$message = new array( |
||||||
|
|
||||||
|
); |
||||||
|
$serialized = $this->serializer->serialize($entity, 'jsonld'); |
||||||
|
drupal_set_message($serialized, "info", FALSE); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue