PirateDayCacheContext.php

Same filename in other branches
  1. 9 core/modules/config/tests/config_override_test/src/Cache/PirateDayCacheContext.php
  2. 8.9.x core/modules/config/tests/config_override_test/src/Cache/PirateDayCacheContext.php
  3. 11.x core/modules/config/tests/config_override_test/src/Cache/PirateDayCacheContext.php

Namespace

Drupal\config_override_test\Cache

File

core/modules/config/tests/config_override_test/src/Cache/PirateDayCacheContext.php

View source
<?php

namespace Drupal\config_override_test\Cache;

use Drupal\Core\Cache\CacheableMetadata;
use Drupal\Core\Cache\Context\CacheContextInterface;
// cspell:ignore yarr

/**
 * Defines the PirateDayCacheContext service that allows to cache the booty.
 *
 * Cache context ID: 'pirate_day'.
 */
class PirateDayCacheContext implements CacheContextInterface {
    
    /**
     * The length of Pirate Day. It lasts 24 hours.
     *
     * This is a simplified test implementation. In a real life Pirate Day module
     * this data wouldn't be defined in a constant, but calculated in a static
     * method. If it were Pirate Day it should return the number of seconds until
     * midnight, and on all other days it should return the number of seconds
     * until the start of the next Pirate Day.
     */
    const PIRATE_DAY_MAX_AGE = 86400;
    
    /**
     * {@inheritdoc}
     */
    public static function getLabel() {
        return t('Pirate day');
    }
    
    /**
     * {@inheritdoc}
     */
    public function getContext() {
        $is_pirate_day = static::isPirateDay() ? 'yarr' : 'nay';
        return "pirate_day." . $is_pirate_day;
    }
    
    /**
     * Returns whether or not it is Pirate Day.
     *
     * To ease testing this is determined with a global variable rather than using
     * the traditional compass and sextant.
     *
     * @return bool
     *   Returns TRUE if it is Pirate Day today.
     */
    public static function isPirateDay() {
        return !empty($GLOBALS['it_is_pirate_day']);
    }
    
    /**
     * {@inheritdoc}
     */
    public function getCacheableMetadata() {
        return new CacheableMetadata();
    }

}

Classes

Title Deprecated Summary
PirateDayCacheContext Defines the PirateDayCacheContext service that allows to cache the booty.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.