. */ declare(strict_types=1); namespace FireflyIII\Support; use Cache; use Illuminate\Support\Collection; use Preferences as Prefs; /** * Class CacheProperties. */ class CacheProperties { /** @var string */ protected $hash = ''; /** @var Collection */ protected $properties; /** * */ public function __construct() { $this->properties = new Collection; if (auth()->check()) { $this->addProperty(auth()->user()->id); $this->addProperty(Prefs::lastActivity()); } } /** * @param $property */ public function addProperty($property) { $this->properties->push($property); } /** * @return mixed */ public function get() { return Cache::get($this->hash); } /** * @return string */ public function getHash(): string { return $this->hash; } /** * @return bool */ public function has(): bool { if ('testing' === getenv('APP_ENV')) { return false; } $this->hash(); return Cache::has($this->hash); } /** * @param $data */ public function store($data) { Cache::forever($this->hash, $data); } /** */ private function hash() { $content = ''; foreach ($this->properties as $property) { $content .= json_encode($property); } $this->hash = substr(sha1($content), 0, 16); } }