Memory.php in SMS Framework 2.1.x
File
tests/modules/sms_test_gateway/src/Plugin/SmsGateway/Memory.php
View source
<?php
declare (strict_types=1);
namespace Drupal\sms_test_gateway\Plugin\SmsGateway;
use Drupal\Component\Serialization\Json;
use Drupal\Component\Utility\Random;
use Drupal\sms\Message\SmsDeliveryReport;
use Drupal\sms\Plugin\SmsGatewayPluginBase;
use Drupal\sms\Plugin\SmsGateway\SmsIncomingEventProcessorInterface;
use Drupal\sms\Event\SmsMessageEvent;
use Drupal\sms\Message\SmsMessageInterface;
use Drupal\sms\Message\SmsMessageResult;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Drupal\sms\Message\SmsMessageReportStatus;
class Memory extends SmsGatewayPluginBase implements SmsIncomingEventProcessorInterface {
public function defaultConfiguration() {
return [
'widget' => '',
'gateway_id' => '',
];
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form = parent::buildConfigurationForm($form, $form_state);
$config = $this
->getConfiguration();
$form['widget'] = [
'#type' => 'textfield',
'#title' => t('Widget'),
'#description' => t('Enter a widget.'),
'#default_value' => $config['widget'],
];
return $form;
}
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
$this->configuration['widget'] = $form_state
->getValue('widget');
}
public function send(SmsMessageInterface $sms_message) {
$gateway_id = $this->configuration['gateway_id'];
$state = \Drupal::state()
->get('sms_test_gateway.memory.send', []);
$state[$gateway_id][] = $sms_message;
\Drupal::state()
->set('sms_test_gateway.memory.send', $state);
$reports = \Drupal::state()
->get('sms_test_gateway.memory.report', []);
$gateway_reports = isset($reports[$gateway_id]) ? $reports[$gateway_id] : [];
$new_reports = $this
->randomDeliveryReports($sms_message);
$reports[$gateway_id] = array_merge($gateway_reports, $new_reports);
\Drupal::state()
->set('sms_test_gateway.memory.report', $reports);
return (new SmsMessageResult())
->setReports($new_reports);
}
public function incomingEvent(SmsMessageEvent $event) {
\Drupal::state()
->set('sms_test_gateway.memory.incoming', TRUE);
$execution_order = \Drupal::state()
->get('sms_test_event_subscriber__execution_order', []);
$execution_order[] = __METHOD__;
\Drupal::state()
->set('sms_test_event_subscriber__execution_order', $execution_order);
}
public function parseDeliveryReports(Request $request, Response $response) {
$gateway_id = $this->configuration['gateway_id'];
$memory_reports = \Drupal::state()
->get('sms_test_gateway.memory.report', []);
$data = Json::decode($request->request
->get('delivery_report'));
$return = [];
foreach ($data['reports'] as $report) {
$message_id = $report['message_id'];
$new_report = (new SmsDeliveryReport())
->setRecipient($report['recipient'])
->setMessageId($message_id)
->setStatus($report['status'])
->setStatusMessage($report['status_message'])
->setStatusTime($report['status_time']);
if ($report['status'] === SmsMessageReportStatus::QUEUED) {
$new_report
->setTimeQueued($report['status_time']);
}
if ($report['status'] === SmsMessageReportStatus::DELIVERED) {
$new_report
->setTimeDelivered($report['status_time']);
}
$return[] = $new_report;
$memory_reports[$gateway_id][$message_id] = $new_report;
}
\Drupal::state()
->set('sms_test_gateway.memory.report', $memory_reports);
$response
->setContent('custom response content');
return $return;
}
public function getDeliveryReports(array $message_ids = NULL) {
return [];
}
protected function randomDeliveryReports(SmsMessageInterface $sms_message) {
$random = new Random();
$request_time = \Drupal::time()
->getRequestTime();
$reports = [];
foreach ($sms_message
->getRecipients() as $number) {
$reports[] = (new SmsDeliveryReport())
->setRecipient($number)
->setMessageId($random
->name(16))
->setStatus(SmsMessageReportStatus::QUEUED)
->setStatusTime($request_time)
->setStatusMessage('Sent to memory gateway')
->setTimeQueued($request_time)
->setTimeDelivered($request_time + rand(0, 10));
}
return $reports;
}
public function getCreditsBalance() {
return 13.36;
}
}
Classes
Name |
Description |
Memory |
Defines a gateway storing transmitted SMS in memory. |