__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php /** * @package Regular Labs Library * @version 25.6.10828 * * @author Peter van Westen <[email protected]> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Library; defined('_JEXEC') or die; use Exception; use Joomla\CMS\Cache\CacheControllerFactoryInterface as JCacheControllerFactoryInterface; use Joomla\CMS\Cache\Controller\OutputController as JOutputController; use Joomla\CMS\Factory as JFactory; class Cache { static array $cache = []; /** * @var [JOutputController] */ private array $file_cache_controllers = []; private bool $force_caching = \true; private string $group; private string $id; private int $time_to_life_in_seconds = 0; private bool $use_files = \false; public function __construct(mixed $id = null, string $group = 'regularlabs', int $class_offset = 1) { if (is_null($id)) { $caller = debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT, 1 + $class_offset)[$class_offset]; $id = [$caller['class'], $caller['function'], $caller['args']]; } if (!is_string($id)) { $id = json_encode($id); } $this->id = md5($id); $this->group = $group; } public function exists(): bool { if (!$this->use_files) { return $this->existsMemory(); } return $this->existsMemory() || $this->existsFile(); } public function get(): mixed { return $this->use_files ? $this->getFile() : $this->getMemory(); } public function reset(): void { unset(static::$cache[$this->id]); if ($this->use_files) { $this->getFileCache()->remove($this->id); } } public function resetAll(): void { static::$cache = []; if ($this->use_files) { $this->getFileCache()->clean($this->group); } } public function set(mixed $data): mixed { return $this->use_files ? $this->setFile($data) : $this->setMemory($data); } public function setTimeToLife(string|int $time_to_life_in_minutes = 0, bool $force_caching = \true): self { if (is_string($time_to_life_in_minutes)) { $time_to_life_in_minutes = round(strtotime($time_to_life_in_minutes) - time()) / 60; } $this->use_files = \true; // convert ttl to minutes $this->time_to_life_in_seconds = $time_to_life_in_minutes * 60; $this->force_caching = $force_caching; return $this; } public function useFiles(int $time_to_life_in_minutes = 0, bool $force_caching = \true): self { $this->setTimeToLife($time_to_life_in_minutes, $force_caching); return $this; } private function existsFile(): bool { if (\RegularLabs\Library\Document::isDebug()) { return \false; } return $this->getFileCache()->contains($this->id); } private function existsMemory(): bool { return array_key_exists($this->id, static::$cache); } /** * @throws Exception */ private function getFile(): mixed { if ($this->existsMemory()) { return $this->getMemory(); } $data = $this->getFileCache()->get($this->id); $this->setMemory($data); return $data; } private function getFileCache(): JOutputController { $options = ['defaultgroup' => $this->group]; if ($this->time_to_life_in_seconds) { $options['lifetime'] = $this->time_to_life_in_seconds; } if ($this->force_caching) { $options['caching'] = \true; } $id = json_encode($options); if (isset($this->file_cache_controllers[$id])) { return $this->file_cache_controllers[$id]; } $this->file_cache_controllers[$id] = JFactory::getContainer()->get(JCacheControllerFactoryInterface::class)->createCacheController('output', $options); return $this->file_cache_controllers[$id]; } private function getMemory(): mixed { if (!$this->existsMemory()) { return null; } $data = static::$cache[$this->id]; return is_object($data) ? clone $data : $data; } /** * @throws Exception */ private function setFile(mixed $data): mixed { $this->setMemory($data); if (\RegularLabs\Library\Document::isDebug()) { return $data; } $this->getFileCache()->store($data, $this->id); return $data; } private function setMemory(mixed $data): mixed { static::$cache[$this->id] = $data; return $data; } }
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Form | Folder | 0775 |
|
|
| ActionLogPlugin.php | File | 7.65 KB | 0664 |
|
| Alias.php | File | 3.38 KB | 0664 |
|
| ArrayHelper.php | File | 13.01 KB | 0664 |
|
| Article.php | File | 10.96 KB | 0664 |
|
| Cache.php | File | 4.74 KB | 0664 |
|
| Color.php | File | 1.9 KB | 0664 |
|
| DB.php | File | 16.24 KB | 0664 |
|
| Date.php | File | 5.18 KB | 0664 |
|
| Document.php | File | 13.34 KB | 0664 |
|
| DownloadKey.php | File | 3.93 KB | 0664 |
|
| EditorButtonPlugin.php | File | 5.61 KB | 0664 |
|
| EditorButtonPopup.php | File | 5.76 KB | 0664 |
|
| Extension.php | File | 14.38 KB | 0664 |
|
| FieldHelper.php | File | 1.92 KB | 0664 |
|
| FieldsPlugin.php | File | 979 B | 0664 |
|
| File.php | File | 12.96 KB | 0664 |
|
| Html.php | File | 24.53 KB | 0664 |
|
| HtmlTag.php | File | 4.53 KB | 0664 |
|
| Http.php | File | 4.33 KB | 0664 |
|
| Image.php | File | 28.24 KB | 0664 |
|
| Input.php | File | 5.28 KB | 0664 |
|
| Language.php | File | 999 B | 0664 |
|
| Layout.php | File | 1.08 KB | 0664 |
|
| License.php | File | 1.72 KB | 0664 |
|
| MobileDetect.php | File | 763 B | 0664 |
|
| ObjectHelper.php | File | 2.57 KB | 0664 |
|
| Parameters.php | File | 6.37 KB | 0664 |
|
| Php.php | File | 6.33 KB | 0664 |
|
| PluginTag.php | File | 15.52 KB | 0664 |
|
| Protect.php | File | 26.27 KB | 0664 |
|
| RegEx.php | File | 6.33 KB | 0664 |
|
| ShowOn.php | File | 1.32 KB | 0664 |
|
| SimpleCategory.php | File | 1.73 KB | 0664 |
|
| StringHelper.php | File | 22.05 KB | 0664 |
|
| StringReplacer.php | File | 13.25 KB | 0664 |
|
| SystemPlugin.php | File | 15.73 KB | 0664 |
|
| Text.php | File | 20.17 KB | 0664 |
|
| Title.php | File | 2.86 KB | 0664 |
|
| Uri.php | File | 5.76 KB | 0664 |
|
| User.php | File | 3.35 KB | 0664 |
|
| Variables.php | File | 11.06 KB | 0664 |
|
| Version.php | File | 7.88 KB | 0664 |
|
| Xml.php | File | 1.47 KB | 0664 |
|