-
Notifications
You must be signed in to change notification settings - Fork 0
/
sms.tokens.inc
97 lines (86 loc) · 2.64 KB
/
sms.tokens.inc
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
97
<?php
declare(strict_types = 1);
/**
* @file
* Token callbacks for the sms module.
*/
use Drupal\Core\GeneratedUrl;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\Core\Url;
use Drupal\sms\Message\SmsMessageInterface;
/**
* Implements hook_token_info().
*/
function sms_token_info() {
$info['types']['sms'] = [
'name' => t('SMS'),
'description' => t("SMS Framework tokens."),
];
$info['tokens']['sms']['verification-url'] = [
'name' => t("Verification URL"),
'description' => t("The URL of the site verification page."),
];
$info['types']['sms-message'] = [
'name' => t('SMS Message'),
'needs-data' => 'sms-message',
'description' => t("Tokens for an SMS Message."),
];
$info['tokens']['sms-message']['phone-number'] = [
'name' => t('Phone number'),
'description' => t("Recipient phone number"),
];
$info['tokens']['sms-message']['message'] = [
'name' => t('Message'),
'description' => t("Contents of the SMS message."),
];
$info['tokens']['sms-message']['verification-code'] = [
'name' => t("Verification Code"),
'description' => t("A verification code for a phone number."),
];
return $info;
}
/**
* Implements hook_tokens().
*/
function sms_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
$replacements = [];
if ($type == 'sms') {
foreach ($tokens as $name => $original) {
switch ($name) {
case 'verification-url':
$url_options = ['absolute' => TRUE];
$result = Url::fromRoute('sms.phone.verify', [], $url_options)->toString(TRUE);
assert($result instanceof GeneratedUrl);
$replacements[$original] = $result->getGeneratedUrl();
break;
}
}
}
if ($type == 'sms-message') {
if (!empty($data['sms-message']) && ($data['sms-message'] instanceof SmsMessageInterface)) {
/** @var \Drupal\sms\Message\SmsMessageInterface $sms_message */
$sms_message = $data['sms-message'];
foreach ($tokens as $name => $original) {
switch ($name) {
case 'phone-number':
$recipients = $sms_message->getRecipients();
$replacements[$original] = reset($recipients) ?: '';
break;
case 'message':
$replacements[$original] = $sms_message->getMessage();
break;
}
}
}
foreach ($tokens as $name => $original) {
switch ($name) {
case 'verification-code':
if (!empty($data['sms_verification_code'])) {
$replacements[$original] = $data['sms_verification_code'];
}
break;
}
}
}
return $replacements;
}