SendStatus.php in Simplenews 8.2
File
src/Plugin/views/field/SendStatus.php
View source
<?php
namespace Drupal\simplenews\Plugin\views\field;
use Drupal\node\Entity\Node;
use Drupal\views\Plugin\views\field\FieldPluginBase;
use Drupal\views\ResultRow;
class SendStatus extends FieldPluginBase {
public function render(ResultRow $values) {
$node = $values->_entity;
if ($node
->hasField('simplenews_issue')) {
$message = $this
->getMessage($node);
if (!empty($message['uri'])) {
$output['image'] = [
'#theme' => 'image',
'#uri' => $message['uri'],
'#alt' => $message['description'],
'#title' => $message['description'],
'#getsize' => TRUE,
];
}
$error_count = $message['error_count'] ? ' ❌{{ error_count }}' : '';
$output['text'] = [
'#type' => 'inline_template',
'#template' => "<span title=\"{{ description }}\">{{ sent_count }}/{{ count }}{$error_count}</span>",
'#context' => $message,
];
return $output;
}
}
protected function getMessage(Node $node) {
$status = $node->simplenews_issue->status;
$message = \Drupal::service('simplenews.spool_storage')
->issueSummary($node);
$images = [
SIMPLENEWS_STATUS_SEND_PENDING => 'images/sn-cron.png',
SIMPLENEWS_STATUS_SEND_READY => 'images/sn-sent.png',
];
if (isset($images[$status])) {
$message['uri'] = drupal_get_path('module', 'simplenews') . '/' . $images[$status];
}
else {
$message['uri'] = NULL;
}
return $message;
}
}
Classes
Name |
Description |
SendStatus |
Field handler to provide send status of a newsletter issue. |