X7ROOT File Manager
Current Path:
/home/cbholdings/pasukulu/lib/classes/local/guzzle
home
/
cbholdings
/
pasukulu
/
lib
/
classes
/
local
/
guzzle
/
📁
..
📄
cache_handler.php
(8.83 KB)
📄
cache_item.php
(6.47 KB)
📄
cache_storage.php
(2.94 KB)
📄
check_request.php
(3.43 KB)
📄
redirect_middleware.php
(3.76 KB)
Editing: cache_item.php
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace core\local\guzzle; /** * Class to define an interface for interacting with objects inside a cache. * * @package core * @copyright 2022 safatshahin <safat.shahin@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class cache_item { /** * Key to be used to store and identify the cache. * * @var string $key cache item key. */ private string $key; /** * Actual data of the cache. * * @var mixed $value cache data. */ private $value; /** * The expiry of the cache item according to TTL. * * @var \DateTime|null $expiration TTL time for the cache item. */ private ?\DateTime $expiration; /** * Confirms if the cache item lookup resulted in a cache hit. * * @var bool $ishit determine the cache lookup. */ private bool $ishit = false; /** * Constructor for the cache_item to get the key and module to retrieve or set the cache item. * * @param string $key The key for the current cache item. * @param string $module determines the location of the cache item. * @param int|null $ttl Time to live for the cache item. */ public function __construct(string $key, string $module, ?int $ttl = null) { global $CFG, $USER; $this->key = $key; // Set the directory for cache. $dir = $CFG->cachedir . '/' . $module . '/'; if (file_exists($dir)) { $filename = 'u' . $USER->id . '_' . md5(serialize($key)); // If the cache fine exists, set the value from the cache file. if (file_exists($dir . $filename)) { $this->ishit = true; $this->expires_after($ttl); $fp = fopen($dir . $filename, 'rb'); $size = filesize($dir . $filename); $content = fread($fp, $size); $this->value = unserialize($content); } } } /** * Returns the key for the current cache item. * * The key is loaded by the Implementing Library, but should be available to * the higher level callers when needed. * * @return string The key string for this cache item. */ public function get_key(): string { return $this->key; } /** * Retrieves the value of the item from the cache associated with this object's key. * * The value returned must be identical to the value originally stored by set(). * * If isHit() returns false, this method MUST return null. Note that null * is a legitimate cache value, so the isHit() method SHOULD be used to * differentiate between "null value was found" and "no value was found." * * @return mixed The value corresponding to this cache item's key, or null if not found. */ public function get() { return $this->is_hit() ? $this->value : null; } /** * Confirms if the cache item lookup resulted in a cache hit. * * Note: This method MUST NOT have a race condition between calling isHit() * and calling get(). * * @return bool True if the request resulted in a cache hit. False otherwise. */ public function is_hit():bool { if (!$this->ishit) { return false; } if ($this->expiration === null) { return true; } return $this->current_time()->getTimestamp() < $this->expiration->getTimestamp(); } /** * Sets the value represented by this cache item. * * The $value argument may be any item that can be serialized by PHP, * although the method of serialization is left up to the Implementing * Library. * * @param mixed $value The serializable value to be stored. * @return static The invoked object. */ public function set($value): cache_item { $this->ishit = true; $this->value = $value; return $this; } /** * Sets the absolute expiration time for this cache item. * * @param \DateTimeInterface|null $expiration * The point in time after which the item MUST be considered expired. * If null is passed explicitly, a default value MAY be used. If none is set, * the value should be stored permanently or for as long as the * implementation allows. * * @return static The called object. */ public function expires_at($expiration): cache_item { if (null === $expiration || $expiration instanceof \DateTimeInterface) { $this->expiration = $expiration; return $this; } throw new \coding_exception('Invalid argument passed'); } /** * Sets the relative expiration time for this cache item. * * @param int|\DateInterval|null $time * The period of time from the present after which the item MUST be considered * expired. An integer parameter is understood to be the time in seconds until * expiration. If null is passed explicitly, a default value MAY be used. * If none is set, the value should be stored permanently or for as long as the * implementation allows. * * @return static The called object. */ public function expires_after($time): cache_item { if (is_int($time) && $time >= 0) { $this->expiration = $this->current_time()->add(new \DateInterval("PT{$time}S")); } else if ($time instanceof \DateInterval) { $this->expiration = $this->current_time()->add($time); } else { $this->expiration = $time; } return $this; } /** * Gets the current time in the user timezone. * * @return \DateTime */ private function current_time(): \DateTime { return new \DateTime('now', new \DateTimeZone(get_user_timezone())); } }
Upload File
Create Folder