defined( 'WPINC' ) || exit();
* Handles error message translation and throwing for LiteSpeed Cache.
* Error code mappings to numeric values.
private static $code_set = [
'HTA_LOGIN_COOKIE_INVALID' => 4300, // .htaccess did not find.
'HTA_DNF' => 4500, // .htaccess did not find.
'HTA_BK' => 9010, // backup
'HTA_R' => 9041, // read htaccess
'HTA_W' => 9042, // write
'HTA_GET' => 9030, // failed to get
* Throw an error with message
* Throws an exception with the translated error message.
* @param string $code Error code.
* @param mixed $args Optional arguments for message formatting.
* @throws \Exception Always throws an exception with the error message.
public static function t( $code, $args = null ) {
throw new \Exception( wp_kses_post( self::msg( $code, $args ) ) );
* Translate an error to description
* Converts error codes to human-readable messages.
* @param string $code Error code.
* @param mixed $args Optional arguments for message formatting.
* @return string Translated error message.
public static function msg( $code, $args = null ) {
case 'qc_setup_required':
__( 'You will need to finish %s setup to use the online services.', 'litespeed-cache' ),
'<strong>QUIC.cloud</strong>'
admin_url( 'admin.php?page=litespeed-general' ),
__( 'Click here to set.', 'litespeed-cache' ),
case 'out_of_daily_quota':
$msg = __( 'You have used all of your daily quota for today.', 'litespeed-cache' );
'https://docs.quic.cloud/billing/services/#daily-limits-on-free-quota-usage',
__( 'Learn more or purchase additional quota.', 'litespeed-cache' ),
$msg = __( 'You have used all of your quota left for current service this month.', 'litespeed-cache' );
'https://docs.quic.cloud/billing/services/#daily-limits-on-free-quota-usage',
__( 'Learn more or purchase additional quota.', 'litespeed-cache' ),
case 'too_many_requested':
$msg = __( 'You have too many requested images, please try again in a few minutes.', 'litespeed-cache' );
case 'too_many_notified':
$msg = __( 'You have images waiting to be pulled. Please wait for the automatic pull to complete, or pull them down manually now.', 'litespeed-cache' );
$msg = __( 'The image list is empty.', 'litespeed-cache' );
$msg = __( 'Not enough parameters. Please check if the QUIC.cloud connection is set correctly', 'litespeed-cache' );
$msg = __( 'There is proceeding queue not pulled yet.', 'litespeed-cache' );
case 0 === strpos( $code, 'unfinished_queue ' ):
__( 'There is proceeding queue not pulled yet. Queue info: %s.', 'litespeed-cache' ),
'<code>' . substr( $code, strlen( 'unfinished_queue ' ) ) . '</code>'
$msg = __( 'The site is not a valid alias on QUIC.cloud.', 'litespeed-cache' );
case 'site_not_registered':
$msg = __( 'The site is not registered on QUIC.cloud.', 'litespeed-cache' );
$msg = __( 'The QUIC.cloud connection is not correct. Please try to sync your QUIC.cloud connection again.', 'litespeed-cache' );
$msg = __( 'The current server is under heavy load.', 'litespeed-cache' );
$msg = __( 'Online node needs to be redetected.', 'litespeed-cache' );
$msg = __( 'Credits are not enough to proceed the current request.', 'litespeed-cache' );
$msg = __( '%s file not writable.', 'litespeed-cache' );
if ( ! is_array( $args ) ) {
$args = [ '<code>' . $args . '</code>' ];
$msg = __( 'Could not find %1$s in %2$s.', 'litespeed-cache' );
case 'HTA_LOGIN_COOKIE_INVALID':
$msg = sprintf( __( 'Invalid login cookie. Please check the %s file.', 'litespeed-cache' ), '.htaccess' );
$msg = sprintf( __( 'Failed to back up %s file, aborted changes.', 'litespeed-cache' ), '.htaccess' );
$msg = sprintf( __( '%s file not readable.', 'litespeed-cache' ), '.htaccess' );
$msg = sprintf( __( '%s file not writable.', 'litespeed-cache' ), '.htaccess' );
$msg = sprintf( __( 'Failed to get %s file contents.', 'litespeed-cache' ), '.htaccess' );
case 'failed_tb_creation':
$msg = __( 'Failed to create table %1$s! SQL: %2$s.', 'litespeed-cache' );
$msg = __( 'Crawler disabled by the server admin.', 'litespeed-cache' );
case 'try_later': // QC error code
$msg = __( 'Previous request too recent. Please try again later.', 'litespeed-cache' );
case 0 === strpos( $code, 'try_later ' ):
__( 'Previous request too recent. Please try again after %s.', 'litespeed-cache' ),
'<code>' . Utility::readable_time( substr( $code, strlen( 'try_later ' ) ), 3600, true ) . '</code>'
case 'waiting_for_approval':
$msg = __( 'Your application is waiting for approval.', 'litespeed-cache' );
case 'callback_fail_hash':
$msg = __( 'The callback validation to your domain failed due to hash mismatch.', 'litespeed-cache' );
$msg = __( 'The callback validation to your domain failed. Please make sure there is no firewall blocking our servers.', 'litespeed-cache' );
case substr( $code, 0, 14 ) === 'callback_fail ':
__( 'The callback validation to your domain failed. Please make sure there is no firewall blocking our servers. Response code: ', 'litespeed-cache' ) .
$msg = __( 'Your domain has been forbidden from using our services due to a previous policy violation.', 'litespeed-cache' );
'You cannot remove this DNS zone, because it is still in use. Please update the domain\'s nameservers, then try to delete this zone again, otherwise your site will become inaccessible.',
$msg = __( 'Unknown error', 'litespeed-cache' ) . ': ' . $code;
$msg = is_array( $args ) ? vsprintf( $msg, $args ) : sprintf( $msg, $args );
if ( isset( self::$code_set[ $code ] ) ) {
$msg = 'ERROR ' . self::$code_set[ $code ] . ': ' . $msg;