-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkififeedback.module
96 lines (87 loc) · 3.22 KB
/
kififeedback.module
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
use Drupal\Component\Render\FormattableMarkup;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\Core\Render\Markup;
use Drupal\Core\Url;
use Drupal\kififeedback\LogEntryInterface;
function kififeedback_theme() {
return [
'kififeedback_form' => [
'render element' => 'form'
],
'kififeedback_log' => [
'variables' => [
'entry' => NULL,
'is_forward' => FALSE,
'is_response' => FALSE,
]
]
];
}
function kififeedback_mail($key, array &$message, array $params) {
switch ($key) {
case 'forward':
case 'reply':
$feedback = $params['kififeedback'];
$message['params']['feedback'] = [
'entity' => $feedback,
'subject' => $feedback->getSubject(),
'body' => $feedback->getBody(),
'author' => $feedback->getName(),
];
break;
}
}
function kififeedback_tokens($type, array $tokens, array $data, array $options, BubbleableMetadata $metadata) {
$replacements = [];
if ($type == 'feedback' && isset($data['kififeedback'])) {
$feedback = $data['kififeedback'];
foreach ($tokens as $name => $original) {
switch ($name) {
case 'subject':
$replacements[$original] = $feedback->getSubject();
break;
case 'body':
$replacements[$original] = Markup::create($feedback->getBody());
break;
case 'author':
$replacements[$original] = $feedback->getName();
break;
case 'email':
$replacements[$original] = $feedback->getEmail();
break;
case 'date':
$time = $feedback->getCreatedTime();
$langcode = $feedback->language()->getId();
$replacements[$original] = Drupal::service('date.formatter')->format($time, 'medium', NULL, NULL, $langcode);
break;
case 'forward-message':
case 'reply':
if ($log_entry = $feedback->getLatestAction()) {
// NOTE: Do not pass $tokens or recursion will happen.
$forward_message = \Drupal::service('token')->replace($log_entry->getMessage(), [], [], $metadata);
$replacements[$original] = check_markup($forward_message, $log_entry->getMessageFormat());
}
break;
}
}
}
return $replacements;
}
function template_preprocess_kififeedback_log(array &$variables) {
$entry = $variables['entry'];
$variables['is_forward'] = $entry->getAction() == LogEntryInterface::ACTION_FORWARD;
$variables['is_response'] = $entry->getAction() == LogEntryInterface::ACTION_RESPOND;
$variables['date'] = format_date($entry->getCreatedTime());
$author = $entry->getUser();
$author_link = new FormattableMarkup('<a href=":url">@name</a>', [':url' => $author->url(), '@name' => $author->getDisplayName()]);
$variables['author'] = Markup::create((string)$author_link);
if ($user = $entry->getForwardUser()) {
$recipient_link = new FormattableMarkup('<a href=":url">@name</a>', [':url' => $user->url(), '@name' => $user->getDisplayName()]);
$variables['recipient'] = Markup::create((string)$recipient_link);
} elseif ($email = $entry->getForwardEmail()) {
$variables['recipient'] = $email;
} else {
$variables['recipient'] = Markup::create('<i>not available</i>');
}
}