public function LicenseExpireNotify::process in Commerce License 8.2
Processes the given job.
Parameters
\Drupal\advancedqueue\Job $job: The job.
Return value
\Drupal\advancedqueue\JobResult The job result.
Overrides JobTypeInterface::process
File
- src/
Plugin/ AdvancedQueue/ JobType/ LicenseExpireNotify.php, line 93
Class
- LicenseExpireNotify
- Provides the job type to send an email notification of license expiry.
Namespace
Drupal\commerce_license\Plugin\AdvancedQueue\JobTypeCode
public function process(Job $job) {
$license_id = $job
->getPayload()['license_id'];
$license_storage = $this->entityTypeManager
->getStorage('commerce_license');
/** @var \Drupal\commerce_license\Entity\License $license */
$license = $license_storage
->load($license_id);
if (!$license) {
return JobResult::failure('License not found.');
}
$owner = $license
->getOwner();
if ($owner
->isAnonymous()) {
return JobResult::failure('License owner not found.');
}
$to = $owner
->getEmail();
// TODO: get the email address from the store that sold the product --
// for which we'd a method on the license entity that queries for the
// order item that refers to it.
// this is quick temporary hack.
$from = \Drupal::config('system.site')
->get('mail');
$params = [
'headers' => [
'Content-Type' => 'text/html; charset=UTF-8;',
'Content-Transfer-Encoding' => '8Bit',
],
'from' => $from,
'subject' => $this
->t('Your purchase of @license-label has now expired', [
'@license-label' => $license
->label(),
]),
'license' => $license,
];
$build = [
'#theme' => 'commerce_license_expire',
'#license_entity' => $license,
];
// Allow for the purchased entity to have been deleted.
if ($purchased_entity = $license
->getPurchasedEntity()) {
$build += [
'#purchased_entity' => $purchased_entity,
'#purchased_entity_url' => $purchased_entity
->toUrl()
->setAbsolute(),
];
}
$params['body'] = $this->renderer
->executeInRenderContext(new RenderContext(), function () use ($build) {
return $this->renderer
->render($build);
});
$langcode = $owner
->getPreferredLangcode();
$message = $this->pluginManagerMail
->mail('commerce_license', 'license_expire', $to, $langcode, $params);
if ($message['result']) {
return JobResult::success();
}
else {
return JobResult::failure('Unable to send expiry notification mail.');
}
}