Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/popup-ma.../trunk/classes/Utils
File: I10n.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Utility for I10n
[2] Fix | Delete
*
[3] Fix | Delete
* @package PUM
[4] Fix | Delete
* @copyright Copyright (c) 2023, Code Atlantic LLC
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[8] Fix | Delete
exit;
[9] Fix | Delete
}
[10] Fix | Delete
[11] Fix | Delete
class PUM_Utils_I10n {
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Fetches translation status data from WordPress.org API.
[15] Fix | Delete
*
[16] Fix | Delete
* Stores it for 1 week.
[17] Fix | Delete
*
[18] Fix | Delete
* @return array
[19] Fix | Delete
*/
[20] Fix | Delete
public static function translation_status() {
[21] Fix | Delete
$translations = get_transient( 'pum_alerts_translation_status' );
[22] Fix | Delete
[23] Fix | Delete
if ( ! $translations ) {
[24] Fix | Delete
$response = wp_remote_get( 'https://api.wordpress.org/translations/plugins/1.0/?slug=popup-maker&version=' . Popup_Maker::$VER );
[25] Fix | Delete
[26] Fix | Delete
$response_body = json_decode( wp_remote_retrieve_body( $response ), true );
[27] Fix | Delete
[28] Fix | Delete
$translations = $response_body['translations'];
[29] Fix | Delete
[30] Fix | Delete
set_transient( 'pum_alerts_translation_status', $translations, 604800 );
[31] Fix | Delete
}
[32] Fix | Delete
[33] Fix | Delete
$ret = [];
[34] Fix | Delete
[35] Fix | Delete
foreach ( $translations as $translation ) {
[36] Fix | Delete
$ret[ $translation['language'] ] = $translation;
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
return $ret;
[40] Fix | Delete
}
[41] Fix | Delete
[42] Fix | Delete
[43] Fix | Delete
/**
[44] Fix | Delete
* Get locales matching the HTTP accept language header.
[45] Fix | Delete
*
[46] Fix | Delete
* @return array List of locales.
[47] Fix | Delete
*/
[48] Fix | Delete
public static function get_non_en_accepted_wp_locales_from_header() {
[49] Fix | Delete
$res = [];
[50] Fix | Delete
[51] Fix | Delete
$http_locales = self::get_http_locales();
[52] Fix | Delete
[53] Fix | Delete
if ( empty( $http_locales ) ) {
[54] Fix | Delete
return $res;
[55] Fix | Delete
}
[56] Fix | Delete
[57] Fix | Delete
if ( is_array( $http_locales ) ) {
[58] Fix | Delete
foreach ( $http_locales as $http_locale ) {
[59] Fix | Delete
$http_locale = explode( '-', $http_locale );
[60] Fix | Delete
[61] Fix | Delete
$lang = $http_locale[0];
[62] Fix | Delete
$region = ! empty( $http_locale[1] ) ? $http_locale[1] : null;
[63] Fix | Delete
[64] Fix | Delete
if ( is_null( $region ) ) {
[65] Fix | Delete
$region = $lang;
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
/*
[69] Fix | Delete
* Discard English -- it's the default for all browsers,
[70] Fix | Delete
* ergo not very reliable information
[71] Fix | Delete
*/
[72] Fix | Delete
if ( 'en' === $lang ) {
[73] Fix | Delete
continue;
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
// Region should be uppercase.
[77] Fix | Delete
$region = strtoupper( $region );
[78] Fix | Delete
[79] Fix | Delete
$mapped = self::map_locale( $lang, $region );
[80] Fix | Delete
[81] Fix | Delete
if ( $mapped ) {
[82] Fix | Delete
$res[] = $mapped;
[83] Fix | Delete
}
[84] Fix | Delete
}
[85] Fix | Delete
[86] Fix | Delete
$res = array_unique( $res );
[87] Fix | Delete
}
[88] Fix | Delete
[89] Fix | Delete
return $res;
[90] Fix | Delete
}
[91] Fix | Delete
[92] Fix | Delete
/**
[93] Fix | Delete
* @return array
[94] Fix | Delete
*/
[95] Fix | Delete
public static function available_locales() {
[96] Fix | Delete
static $available_locales;
[97] Fix | Delete
[98] Fix | Delete
if ( ! isset( $available_locales ) ) {
[99] Fix | Delete
if ( ! function_exists( 'wp_get_available_translations' ) ) {
[100] Fix | Delete
require_once ABSPATH . 'wp-admin/includes/translation-install.php';
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
$available_locales = wp_get_available_translations();
[104] Fix | Delete
}
[105] Fix | Delete
[106] Fix | Delete
return $available_locales;
[107] Fix | Delete
}
[108] Fix | Delete
[109] Fix | Delete
/**
[110] Fix | Delete
* Tries to map a lang/region pair to one of our locales.
[111] Fix | Delete
*
[112] Fix | Delete
* @param string $lang Lang part of the HTTP accept header.
[113] Fix | Delete
* @param string $region Region part of the HTTP accept header.
[114] Fix | Delete
*
[115] Fix | Delete
* @return string|false Our locale matching $lang and $region, false otherwise.
[116] Fix | Delete
*/
[117] Fix | Delete
public static function map_locale( $lang, $region ) {
[118] Fix | Delete
$uregion = strtoupper( $region );
[119] Fix | Delete
$ulang = strtoupper( $lang );
[120] Fix | Delete
$variants = [
[121] Fix | Delete
"$lang-$region",
[122] Fix | Delete
"{$lang}_$region",
[123] Fix | Delete
"$lang-$uregion",
[124] Fix | Delete
"{$lang}_$uregion",
[125] Fix | Delete
"{$lang}_$ulang",
[126] Fix | Delete
$lang,
[127] Fix | Delete
];
[128] Fix | Delete
[129] Fix | Delete
$available_locales = self::available_locales();
[130] Fix | Delete
[131] Fix | Delete
$available_locales = array_keys( $available_locales );
[132] Fix | Delete
[133] Fix | Delete
foreach ( $variants as $variant ) {
[134] Fix | Delete
if ( in_array( $variant, $available_locales ) ) {
[135] Fix | Delete
return $variant;
[136] Fix | Delete
}
[137] Fix | Delete
}
[138] Fix | Delete
[139] Fix | Delete
foreach ( $available_locales as $locale ) {
[140] Fix | Delete
list( $locale_lang, ) = preg_split( '/[_-]/', $locale );
[141] Fix | Delete
if ( $lang === $locale_lang ) {
[142] Fix | Delete
return $locale;
[143] Fix | Delete
}
[144] Fix | Delete
}
[145] Fix | Delete
[146] Fix | Delete
return false;
[147] Fix | Delete
}
[148] Fix | Delete
[149] Fix | Delete
/**
[150] Fix | Delete
* Given a HTTP Accept-Language header $header
[151] Fix | Delete
* returns all the locales in it.
[152] Fix | Delete
*
[153] Fix | Delete
* @return array Matched locales.
[154] Fix | Delete
*/
[155] Fix | Delete
public static function get_http_locales() {
[156] Fix | Delete
$locale_part_re = '[a-z]{2,}';
[157] Fix | Delete
$locale_re = "($locale_part_re(\-$locale_part_re)?)";
[158] Fix | Delete
[159] Fix | Delete
if ( preg_match_all( "/$locale_re/i", isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : '', $matches ) ) {
[160] Fix | Delete
return $matches[0];
[161] Fix | Delete
} else {
[162] Fix | Delete
return [];
[163] Fix | Delete
}
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
[167] Fix | Delete
}
[168] Fix | Delete
[169] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function