Skip to content

Commit

Permalink
LOOP-915: Refactored message helper
Browse files Browse the repository at this point in the history
  • Loading branch information
rimi-itk committed May 25, 2021
1 parent fba0412 commit 35270e1
Showing 1 changed file with 51 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,36 +24,7 @@ class Helper extends ControllerBase {
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function entityInsert(EntityInterface $entity) {
if ($entity instanceof NodeInterface) {
switch ($entity->bundle()) {
case 'os2loop_documents_collection':
$this->createMessage('os2loop_message_collection_ins', $entity);
break;

case 'os2loop_documents_document':
$this->createMessage('os2loop_message_document_ins', $entity);
break;

case 'os2loop_question':
$this->createMessage('os2loop_message_question_ins', $entity);
break;

case 'os2loop_post':
$this->createMessage('os2loop_message_post_ins', $entity);
break;
}
}
elseif ($entity instanceof CommentInterface) {
switch ($entity->bundle()) {
case 'os2loop_question_answer':
$this->createMessage('os2loop_message_answer_ins', $entity);
break;

case 'os2loop_post_comment':
$this->createMessage('os2loop_message_comment_ins', $entity);
break;
}
}
$this->createMessage($entity, 'ins');
}

/**
Expand All @@ -65,60 +36,68 @@ public function entityInsert(EntityInterface $entity) {
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function entityUpdate(EntityInterface $entity) {
if ($entity instanceof NodeInterface) {
switch ($entity->bundle()) {
case 'os2loop_documents_collection':
$this->createMessage('os2loop_message_collection_upd', $entity);
break;

case 'os2loop_documents_document':
$this->createMessage('os2loop_message_document_upd', $entity);
break;

case 'os2loop_question':
$this->createMessage('os2loop_message_question_upd', $entity);
break;

case 'os2loop_post':
$this->createMessage('os2loop_message_post_upd', $entity);
break;
}
}
elseif ($entity instanceof CommentInterface) {
switch ($entity->bundle()) {
case 'os2loop_question_answer':
$this->createMessage('os2loop_message_answer_upd', $entity);
break;

case 'os2loop_post_comment':
$this->createMessage('os2loop_message_comment_upd', $entity);
break;
}
}
$this->createMessage($entity, 'upd');
}

/**
* Create a message.
*
* @param string $template_name
* The name of the message template.
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity being to relate to.
* @param string $operation
* The operation performed.
*
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function createMessage(string $template_name, EntityInterface $entity) {
$message = Message::create(['template' => $template_name]);
if ($entity instanceof NodeInterface) {
$message->set('os2loop_message_node_refer', $entity);
private function createMessage(EntityInterface $entity, string $operation) {
$template = $this->getMessageTemplate($entity, $operation);
if (NULL !== $template) {
$message = Message::create(['template' => $template]);
if ($entity instanceof NodeInterface) {
$message->set('os2loop_message_node_refer', $entity);
}
elseif ($entity instanceof CommentInterface) {
$node_storage = $this->entityTypeManager()->getStorage('node');
$node = $node_storage->load($entity->get('entity_id')->getValue()[0]['target_id']);
$message->set('os2loop_message_node_refer', $node);
$message->set('os2loop_message_comment_refer', $entity);
}
$message->save();
}
elseif ($entity instanceof CommentInterface) {
$node_storage = $this->entityTypeManager()->getStorage('node');
$node = $node_storage->load($entity->get('entity_id')->getValue()[0]['target_id']);
$message->set('os2loop_message_node_refer', $node);
$message->set('os2loop_message_comment_refer', $entity);
}

/**
* Map from bundle to message type.
*
* @var array
*/
private const BUNDLE_MESSAGE_TYPES = [
'os2loop_documents_collection' => 'os2loop_message_collection',
'os2loop_documents_document' => 'os2loop_message_document',
'os2loop_post' => 'os2loop_message_post',
'os2loop_post_comment' => 'os2loop_message_comment',
'os2loop_question' => 'os2loop_message_question',
'os2loop_question_answer' => 'os2loop_message_answer',
];

/**
* Get message template for an entity operation.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity.
* @param string $operation
* The operation ('ins' or 'upd').
*
* @return null|string
* The message template name if any.
*/
private function getMessageTemplate(EntityInterface $entity, string $operation) {
$template = static::BUNDLE_MESSAGE_TYPES[$entity->bundle()] ?? NULL;
if (NULL !== $template) {
$template .= '_' . $operation;
}
$message->save();

return $template;
}

}

0 comments on commit 35270e1

Please sign in to comment.