private function ProjectSecurityRequirement::getDateEndRequirement in Drupal 9
Same name and namespace in other branches
- 8 core/modules/update/src/ProjectSecurityRequirement.php \Drupal\update\ProjectSecurityRequirement::getDateEndRequirement()
Gets the security coverage requirement based on an end date.
Return value
array Requirements array as specified by hook_requirements().
1 call to ProjectSecurityRequirement::getDateEndRequirement()
- ProjectSecurityRequirement::getRequirement in core/
modules/ update/ src/ ProjectSecurityRequirement.php - Gets the security coverage requirement, if any.
File
- core/
modules/ update/ src/ ProjectSecurityRequirement.php, line 202
Class
- ProjectSecurityRequirement
- Class for generating a project's security requirement.
Namespace
Drupal\updateCode
private function getDateEndRequirement() {
$requirement = [];
/** @var \Drupal\Component\Datetime\Time $time */
$time = \Drupal::service('datetime.time');
/** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
$date_formatter = \Drupal::service('date.formatter');
// 'security_coverage_end_date' will either be in format 'Y-m-d' or 'Y-m'.
if (substr_count($this->securityCoverageInfo['security_coverage_end_date'], '-') === 2) {
$date_format = 'Y-m-d';
$full_security_coverage_end_date = $this->securityCoverageInfo['security_coverage_end_date'];
}
else {
$date_format = 'Y-m';
// If the date does not include a day, use '15'. When calling
// \DateTime::createFromFormat() the current day will be used if one is
// not provided. This may cause the month to be wrong at the beginning or
// end of the month. '15' will never be displayed because we are using the
// 'Y-m' format.
$full_security_coverage_end_date = $this->securityCoverageInfo['security_coverage_end_date'] . '-15';
}
$comparable_request_date = $date_formatter
->format($time
->getRequestTime(), 'custom', $date_format);
if ($this->securityCoverageInfo['security_coverage_end_date'] <= $comparable_request_date) {
// Security coverage is over.
$requirement['value'] = $this
->t('Coverage has ended');
$requirement['severity'] = REQUIREMENT_ERROR;
$requirement['description']['coverage_message'] = [
'#markup' => $this
->getVersionNoSecurityCoverageMessage(),
'#suffix' => ' ',
];
}
else {
$security_coverage_end_timestamp = \DateTime::createFromFormat('Y-m-d', $full_security_coverage_end_date)
->getTimestamp();
$output_date_format = $date_format === 'Y-m-d' ? 'Y-M-d' : 'Y-M';
$formatted_end_date = $date_formatter
->format($security_coverage_end_timestamp, 'custom', $output_date_format);
$translation_arguments = [
'@date' => $formatted_end_date,
];
$requirement['value'] = $this
->t('Covered until @date', $translation_arguments);
$requirement['severity'] = REQUIREMENT_INFO;
// 'security_coverage_ending_warn_date' will always be in the format
// 'Y-m-d'.
$request_date = $date_formatter
->format($time
->getRequestTime(), 'custom', 'Y-m-d');
if (!empty($this->securityCoverageInfo['security_coverage_ending_warn_date']) && $this->securityCoverageInfo['security_coverage_ending_warn_date'] <= $request_date) {
$requirement['description']['coverage_message'] = [
'#markup' => $this
->t('Update to a supported minor version soon to continue receiving security updates.'),
'#suffix' => ' ',
];
$requirement['severity'] = REQUIREMENT_WARNING;
}
}
$requirement['description']['release_cycle_link'] = [
'#markup' => $this
->getReleaseCycleLink(),
];
return $requirement;
}