__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
namespace Nextend\Framework\Cache;
use Nextend\Framework\Filesystem\Filesystem;
use Nextend\Framework\Misc\HttpClient;
class CacheGoogleFont extends AbstractCache {
protected $_storageEngine = 'filesystem';
private $fontExtension;
public function __construct() {
parent::__construct('googlefonts', true);
}
/**
* @param string $url
*
* @return boolean|string The path of the cached file
*/
public function makeCache($url, $extension) {
$hash = $this->generateHash($url);
$fileName = $hash;
$fileNameWithExtension = $fileName . '.' . $extension;
$isCached = $this->exists($fileNameWithExtension);
if ($isCached) {
if (!$this->testManifestFile($fileName)) {
$isCached = false;
}
}
if (!$isCached) {
$cssContent = HttpClient::get($url);
if (!$cssContent) {
return false;
}
if ($extension === 'css') {
$fontExtensions = array(
'woff2',
'ttf'
);
foreach ($fontExtensions as $this->fontExtension) {
$cssContent = preg_replace_callback('/url\(["\']?(.*?\.' . $this->fontExtension . ')["\']?\)/i', function ($matches) {
$url = $matches[1];
$cache = new CacheGoogleFont();
$path = $cache->makeCache($url, $this->fontExtension);
if ($path) {
$url = Filesystem::pathToAbsoluteURL($path);
}
return 'url(' . $url . ')';
}, $cssContent);
}
}
$this->set($fileNameWithExtension, $cssContent);
$this->createManifestFile($fileName);
}
return $this->getPath($fileNameWithExtension);
}
private function generateHash($url) {
return md5($url);
}
protected function testManifestFile($fileName) {
$manifestKey = $this->getManifestKey($fileName);
if ($this->exists($manifestKey)) {
$manifestData = json_decode($this->get($manifestKey), true);
if ($manifestData['mtime'] > strtotime('-30 days')) {
return true;
}
}
return false;
}
protected function createManifestFile($fileName) {
$this->set($this->getManifestKey($fileName), json_encode($this->getManifestData()));
}
private function getManifestData() {
return array(
'mtime' => time()
);
}
protected function getManifestKey($fileName) {
return $fileName . '.manifest';
}
}| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Storage | Folder | 0775 |
|
|
| AbstractCache.php | File | 2.28 KB | 0775 |
|
| CacheGoogleFont.php | File | 2.75 KB | 0775 |
|
| CacheImage.php | File | 3.67 KB | 0775 |
|
| Manifest.php | File | 2.49 KB | 0775 |
|
| StoreImage.php | File | 899 B | 0775 |
|