X7ROOT File Manager
Current Path:
/home/katmhsmi/lifecoachbostonma.com/wp-content/plugins/litespeed-cache/src
home
/
katmhsmi
/
lifecoachbostonma.com
/
wp-content
/
plugins
/
litespeed-cache
/
src
/
📁
..
📄
activation.cls.php
(15.06 KB)
📄
admin-display.cls.php
(33.98 KB)
📄
admin-settings.cls.php
(9.15 KB)
📄
admin.cls.php
(4.51 KB)
📄
api.cls.php
(11.28 KB)
📄
avatar.cls.php
(6.26 KB)
📄
base.cls.php
(30.87 KB)
📁
cdn
📄
cdn-setup.cls.php
(9.76 KB)
📄
cdn.cls.php
(13.52 KB)
📄
cloud.cls.php
(40 KB)
📄
conf.cls.php
(18.9 KB)
📄
control.cls.php
(20.75 KB)
📄
core.cls.php
(19.6 KB)
📄
crawler-map.cls.php
(13.44 KB)
📄
crawler.cls.php
(31.24 KB)
📄
css.cls.php
(13.07 KB)
📄
data.cls.php
(17.3 KB)
📄
data.upgrade.func.php
(22.31 KB)
📁
data_structure
📄
db-optm.cls.php
(8.66 KB)
📄
debug2.cls.php
(11.98 KB)
📄
doc.cls.php
(4.04 KB)
📄
error.cls.php
(6.38 KB)
📄
esi.cls.php
(26.45 KB)
📄
file.cls.php
(10.47 KB)
📄
gui.cls.php
(27.87 KB)
📄
health.cls.php
(3 KB)
📄
htaccess.cls.php
(24.33 KB)
📄
img-optm.cls.php
(55.81 KB)
📄
import.cls.php
(4.32 KB)
📄
instance.cls.php
(153 B)
📄
lang.cls.php
(16.64 KB)
📄
localization.cls.php
(3.53 KB)
📄
media.cls.php
(27.1 KB)
📄
metabox.cls.php
(4.22 KB)
📄
object-cache.cls.php
(15.82 KB)
📄
object.lib.php
(33.85 KB)
📄
optimize.cls.php
(35.34 KB)
📄
optimizer.cls.php
(8.81 KB)
📄
placeholder.cls.php
(14.5 KB)
📄
preset.cls.php
(5.56 KB)
📄
purge.cls.php
(30.43 KB)
📄
report.cls.php
(5.43 KB)
📄
rest.cls.php
(7.62 KB)
📄
root.cls.php
(12.9 KB)
📄
router.cls.php
(17.82 KB)
📄
str.cls.php
(1.18 KB)
📄
tag.cls.php
(8.78 KB)
📄
task.cls.php
(4.41 KB)
📄
tool.cls.php
(3.41 KB)
📄
ucss.cls.php
(14.77 KB)
📄
utility.cls.php
(21.15 KB)
📄
vary.cls.php
(19.63 KB)
📄
vpi.cls.php
(7.54 KB)
Editing: avatar.cls.php
<?php /** * The avatar cache class * * @since 3.0 * @package LiteSpeed * @subpackage LiteSpeed/inc * @author LiteSpeed Technologies <info@litespeedtech.com> */ namespace LiteSpeed; defined( 'WPINC' ) || exit; class Avatar extends Base { const TYPE_GENERATE = 'generate'; private $_conf_cache_ttl; private $_tb; private $_avatar_realtime_gen_dict = array(); protected $_summary; /** * Init * * @since 1.4 */ public function __construct() { if ( ! $this->conf( self::O_DISCUSS_AVATAR_CACHE ) ) { return; } Debug2::debug2( '[Avatar] init' ); $this->_tb = $this->cls( 'Data' )->tb( 'avatar' ); $this->_conf_cache_ttl = $this->conf( self::O_DISCUSS_AVATAR_CACHE_TTL ); add_filter( 'get_avatar_url', array( $this, 'crawl_avatar' ) ); $this->_summary = self::get_summary(); } /** * Check if need db table or not * * @since 3.0 * @access public */ public function need_db() { if ( $this->conf( self::O_DISCUSS_AVATAR_CACHE ) ) { return true; } return false; } /** * Get gravatar URL from DB and regenarate * * @since 3.0 * @access public */ public function serve_static( $md5 ) { global $wpdb; Debug2::debug( '[Avatar] is avatar request' ); if ( strlen( $md5 ) !== 32 ) { Debug2::debug( '[Avatar] wrong md5 ' . $md5 ); return; } $q = "SELECT url FROM `$this->_tb` WHERE md5=%s"; $url = $wpdb->get_var( $wpdb->prepare( $q, $md5 ) ); if ( ! $url ) { Debug2::debug( '[Avatar] no matched url for md5 ' . $md5 ); return; } $url = $this->_generate( $url ); wp_redirect( $url ); exit; } /** * Localize gravatar * * @since 3.0 * @access public */ public function crawl_avatar( $url ) { if ( ! $url ) { return $url; } // Check if its already in dict or not if ( ! empty( $this->_avatar_realtime_gen_dict[ $url ] ) ) { Debug2::debug2( '[Avatar] already in dict [url] ' . $url ); return $this->_avatar_realtime_gen_dict[ $url ]; } $realpath = $this->_realpath( $url ); if ( file_exists( $realpath ) && time() - filemtime( $realpath ) <= $this->_conf_cache_ttl ) { Debug2::debug2( '[Avatar] cache file exists [url] ' . $url ); return $this->_rewrite( $url, filemtime( $realpath ) ); } if ( ! strpos( $url, 'gravatar.com' ) ) { return $url; } // Send request if ( ! empty( $this->_summary[ 'curr_request' ] ) && time() - $this->_summary[ 'curr_request' ] < 300 ) { Debug2::debug2( '[Avatar] Bypass generating due to interval limit [url] ' . $url ); return $url; } // Generate immediately $this->_avatar_realtime_gen_dict[ $url ] = $this->_generate( $url ); return $this->_avatar_realtime_gen_dict[ $url ]; } /** * Read last time generated info * * @since 3.0 * @access public */ public function queue_count() { global $wpdb; // If var not exists, mean table not exists // todo: not true if ( ! $this->_tb ) { return false; } $q = "SELECT COUNT(*) FROM `$this->_tb` WHERE dateline<" . ( time() - $this->_conf_cache_ttl ); return $wpdb->get_var( $q ); } /** * Get the final URL of local avatar * * Check from db also * * @since 3.0 */ private function _rewrite( $url, $time = null ) { return LITESPEED_STATIC_URL . '/avatar/' . $this->_filepath( $url ) . ( $time ? '?ver=' . $time : '' ); } /** * Generate realpath of the cache file * * @since 3.0 * @access private */ private function _realpath( $url ) { return LITESPEED_STATIC_DIR . '/avatar/' . $this->_filepath( $url ); } /** * Get filepath * * @since 4.0 */ private function _filepath( $url ) { $filename = md5( $url ) . '.jpg'; if ( is_multisite() ) { $filename = get_current_blog_id() . '/' . $filename; } return $filename; } /** * Cron generation * * @since 3.0 * @access public */ public static function cron( $force = false ) { global $wpdb; $_instance = self::cls(); if ( ! $_instance->queue_count() ) { Debug2::debug( '[Avatar] no queue' ); return; } // For cron, need to check request interval too if ( ! $force ) { if ( ! empty( $_instance->_summary[ 'curr_request' ] ) && time() - $_instance->_summary[ 'curr_request' ] < 300 ) { Debug2::debug( '[Avatar] curr_request too close' ); return; } } $q = "SELECT url FROM `$_instance->_tb` WHERE dateline < %d ORDER BY id DESC LIMIT %d"; $q = $wpdb->prepare( $q, array( time() - $_instance->_conf_cache_ttl, apply_filters( 'litespeed_avatar_limit', 30 ) ) ); $list = $wpdb->get_results( $q ); Debug2::debug( '[Avatar] cron job [count] ' . count( $list ) ); foreach ( $list as $v ) { Debug2::debug( '[Avatar] cron job [url] ' . $v->url ); $_instance->_generate( $v->url ); } } /** * Remote generator * * @since 3.0 * @access private */ private function _generate( $url ) { global $wpdb; // Record the data $file = $this->_realpath( $url ); // Update request status self::save_summary( array( 'curr_request' => time() ) ); // Generate $this->_maybe_mk_cache_folder( 'avatar' ); $response = wp_remote_get( $url, array( 'timeout' => 180, 'stream' => true, 'filename' => $file ) ); Debug2::debug( '[Avatar] _generate [url] ' . $url ); // Parse response data if ( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); file_exists( $file ) && unlink( $file ); Debug2::debug( '[Avatar] failed to get: ' . $error_message ); return $url; } // Save summary data self::save_summary( array( 'last_spent' => time() - $this->_summary[ 'curr_request' ], 'last_request' => $this->_summary[ 'curr_request' ], 'curr_request' => 0, ) ); // Update DB $md5 = md5( $url ); $q = "UPDATE `$this->_tb` SET dateline=%d WHERE md5=%s"; $existed = $wpdb->query( $wpdb->prepare( $q, array( time(), $md5 ) ) ); if ( ! $existed ) { $q = "INSERT INTO `$this->_tb` SET url=%s, md5=%s, dateline=%d"; $wpdb->query( $wpdb->prepare( $q, array( $url, $md5, time() ) ) ); } Debug2::debug( '[Avatar] saved avatar ' . $file ); return $this->_rewrite( $url ); } /** * Handle all request actions from main cls * * @since 3.0 * @access public */ public function handler() { $type = Router::verify_type(); switch ( $type ) { case self::TYPE_GENERATE : self::cron( true ); break; default: break; } Admin::redirect(); } }
Upload File
Create Folder