<?php
/**
* File: /helper/e2pdf-cache.php
*
* @package E2Pdf
* @license GPLv3
* @link https://e2pdf.com
*/
if (!defined('ABSPATH')) {
die('Access denied.');
}
class Helper_E2pdf_Cache {
private $helper;
public function __construct() {
$this->helper = Helper_E2pdf_Helper::instance();
}
public function purge_cache() {
$this->purge_objects_cache();
$this->purge_fonts_cache();
$this->purge_pdfs_cache();
}
public function pre_objects_cache() {
if (function_exists('w3tc_dbcache_flush')) {
w3tc_dbcache_flush();
}
if (
class_exists('SiteGround_Optimizer\Supercacher\Supercacher') &&
class_exists('SitePress') &&
get_option('siteground_optimizer_enable_memcached') &&
function_exists('wp_cache_flush')
) {
wp_cache_flush();
}
}
public function purge_objects_cache() {
if (function_exists('w3tc_dbcache_flush')) {
w3tc_dbcache_flush();
}
wp_cache_flush();
}
public function purge_fonts_cache() {
update_option('e2pdf_cached_fonts', []);
}
public function cache_pdf($cached_pdf = '', $request = []) {
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
if ($cached_pdf && get_option('e2pdf_cache_pdfs', '0') && !@file_exists($this->helper->get('cache_dir') . $cached_pdf)) {
if (!isset($request['error']) && !empty($request['file'])) {
// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents
file_put_contents($this->helper->get('cache_dir') . $cached_pdf, $request['file'], LOCK_EX);
}
}
}
public function get_cached_pdf($cached_pdf = '') {
$request = [];
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
if ($cached_pdf && get_option('e2pdf_cache_pdfs', '0') && @file_exists($this->helper->get('cache_dir') . $cached_pdf)) {
$request = [
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
'file' => @file_get_contents($this->helper->get('cache_dir') . $cached_pdf),
];
$this->purge_pdfs_cache_ttl();
}
return $request;
}
public function purge_pdfs_cache_ttl() {
$files = glob($this->helper->get('cache_dir') . '*', GLOB_MARK);
$ttl = max(10, (int) get_option('e2pdf_cache_pdfs_ttl', '180'));
foreach ($files as $file) {
if (false === strpos($file, 'index.php') && false === strpos($file, '.htaccess') && (time() - filectime($file)) > $ttl) {
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
@unlink($file);
}
}
}
public function purge_pdfs_cache() {
$files = glob($this->helper->get('cache_dir') . '*', GLOB_MARK);
foreach ($files as $file) {
if (false === strpos($file, 'index.php') && false === strpos($file, '.htaccess')) {
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
@unlink($file);
}
}
}
public function purge_tmp_cache() {
$files = glob($this->helper->get('tmp_dir') . '*', GLOB_MARK);
$ttl = (int) get_option('e2pdf_cache_tmp_ttl', '7200');
foreach ($files as $file) {
if (0 === strpos(basename($file), 'e2pdf') && (time() - filectime($file)) > $ttl) {
$this->helper->delete_dir($file);
}
}
}
}
|