function _webform_token_get_interval_wait in Webform 6.x
Same name and namespace in other branches
- 8.5 webform.tokens.inc \_webform_token_get_interval_wait()
Get interval wait time.
Parameters
string $interval_setting: Interval setting name.
\Drupal\Core\Render\BubbleableMetadata $bubbleable_metadata: (optional) Object to collect path processors' bubbleable metadata.
\Drupal\webform\WebformInterface|null $webform: (optional) A webform. If set the total number of submissions for the Webform will be returned.
\Drupal\Core\Entity\EntityInterface|null $source_entity: (optional) A webform submission source entity.
\Drupal\Core\Session\AccountInterface|null $account: (optional) A user account.
Return value
string Formatted interval wait time.
1 call to _webform_token_get_interval_wait()
- webform_tokens in ./
webform.tokens.inc - Implements hook_tokens().
File
- ./
webform.tokens.inc, line 1145 - Builds placeholder replacement tokens for webforms and submissions.
Code
function _webform_token_get_interval_wait($interval_setting, BubbleableMetadata $bubbleable_metadata, WebformInterface $webform = NULL, EntityInterface $source_entity = NULL, AccountInterface $account = NULL) {
// Get last submission completed time.
/** @var \Drupal\webform\WebformSubmissionStorageInterface $submission_storage */
$submission_storage = \Drupal::entityTypeManager()
->getStorage('webform_submission');
$options = [
'access_check' => FALSE,
];
$last_submission = $submission_storage
->getLastSubmission($webform, $source_entity, $account, $options);
if (!$last_submission) {
return '';
}
$completed_time = $last_submission
->getCompletedTime();
// Get interval.
$interval = $webform
->getSetting($interval_setting);
// Get wait time.
$wait_time = $completed_time + $interval;
// Get request time.
$request_time = \Drupal::request()->server
->get('REQUEST_TIME');
// Set cache max age.
$max_age = $wait_time - $request_time;
$bubbleable_metadata
->setCacheMaxAge($max_age > 0 ? $max_age : 0);
// Format time diff until next allows submission.
/** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
$date_formatter = \Drupal::service('date.formatter');
return $date_formatter
->formatTimeDiffUntil($wait_time);
}