protected function License::calculateExpirationTime in Commerce License 8.2
Calculate the expiration time for this license from a start time.
Parameters
int $start: The timestamp to calculate the duration from.
Return value
int The expiry timestamp, or the value \Drupal\recurring_period\Plugin\RecurringPeriod\RecurringPeriodInterface::UNLIMITED if the license does not expire.
1 call to License::calculateExpirationTime()
- License::preSave in src/
Entity/ License.php - Acts on an entity before the presave hook is invoked.
File
- src/
Entity/ License.php, line 246
Class
- License
- Defines the License entity.
Namespace
Drupal\commerce_license\EntityCode
protected function calculateExpirationTime($start) {
/** @var \Drupal\recurring_period\Plugin\RecurringPeriod\RecurringPeriodInterface $expiration_type_plugin */
$expiration_type_plugin = $this
->getExpirationPlugin();
// The recurring period plugin needs DateTimeImmutable objects in order
// to handle timezones properly. So we convert the timestamp to a datetime
// using an appropriate timezone for the user, and then convert the
// expiration back into a UTC timestamp.
$start_date = (new \DateTimeImmutable('@' . $start))
->setTimezone(new \DateTimeZone(commerce_license_get_user_timezone($this
->getOwner())));
$expiration_date = $expiration_type_plugin
->calculateDate($start_date);
// The returned date is either \DateTimeImmutable or
// \Drupal\recurring_period\Plugin\RecurringPeriod\RecurringPeriodInterface::UNLIMITED.
if (is_object($expiration_date)) {
return $expiration_date
->format('U');
}
else {
return $expiration_date;
}
}