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);
}