mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-07 00:02:47 +00:00
contents of zip
This commit is contained in:
27
backend/additional_text.php
Executable file
27
backend/additional_text.php
Executable file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
// Miscellaneous text
|
||||
getDefaultTranslation('HTTP');
|
||||
getDefaultTranslation('HTTPS');
|
||||
getDefaultTranslation('Ledger Nano S');
|
||||
getDefaultTranslation('Ledger Nano X');
|
||||
getDefaultTranslation('Ledger Nano S Plus');
|
||||
getDefaultTranslation('Ledger Stax');
|
||||
getDefaultTranslation('Ledger Flex');
|
||||
getDefaultTranslation('Trezor');
|
||||
getDefaultTranslation('Trezor Model One');
|
||||
getDefaultTranslation('Trezor Model T');
|
||||
getDefaultTranslation('Trezor Safe 3');
|
||||
getDefaultTranslation('Trezor Safe 5');
|
||||
|
||||
// Extension text
|
||||
getDefaultTranslation('MWC Wallet');
|
||||
getDefaultTranslation('A MimbleWimble Coin wallet.');
|
||||
getDefaultTranslation('Open in New Tab');
|
||||
getDefaultTranslation('Open in New Window');
|
||||
getDefaultTranslation('MWC Wallet is an extension that allows you to manage your MimbleWimble Coin in your web browser.');
|
||||
getDefaultTranslation('This extension injects an API into every website you visit making it possible for those websites to interact with MWC Wallet.');
|
||||
getDefaultTranslation('Manage your MimbleWimble Coin');
|
||||
getDefaultTranslation('Website API integration');
|
||||
getDefaultTranslation('Hardware wallet support');
|
||||
?>
|
77
backend/common.php
Executable file
77
backend/common.php
Executable file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
// Constants
|
||||
|
||||
// Version number
|
||||
const VERSION_NUMBER = "2.6.0";
|
||||
|
||||
// Version release date
|
||||
const VERSION_RELEASE_DATE = "20 Nov 2024 23:39:00 UTC";
|
||||
|
||||
// Version changes
|
||||
const VERSION_CHANGES = [
|
||||
"Fixed title and metadata not changing when language is changed.",
|
||||
"Added support for Ledger Flex and Trezor Safe 5 hardware wallets.",
|
||||
"Added notice to login screen to deter people from using potentially malicious clones of this service.",
|
||||
"Fixed wallet ordering buttons not updating when a wallet is deleted."
|
||||
];
|
||||
|
||||
// Maintenance start time
|
||||
const MAINTENANCE_START_TIME = "01 Jan 1970 00:00:00 UTC";
|
||||
|
||||
// Copyright year
|
||||
const COPYRIGHT_YEAR = 2022;
|
||||
|
||||
// Date year string
|
||||
const DATE_YEAR_STRING = "Y";
|
||||
|
||||
// Grace accent HTML entity
|
||||
const GRAVE_ACCENT_HTML_ENTITY = "`";
|
||||
|
||||
// Seconds in a minute
|
||||
const SECONDS_IN_A_MINUTE = 60;
|
||||
|
||||
// Minutes in an hour
|
||||
const MINUTES_IN_AN_HOUR = 60;
|
||||
|
||||
// Hours in a day
|
||||
const HOURS_IN_A_DAY = 24;
|
||||
|
||||
|
||||
// Supporting function implementation
|
||||
|
||||
// Encode string
|
||||
function encodeString($string) {
|
||||
|
||||
// Return string with backticks, ampersands, double quotes, single quotes, greater than signs, and less than signs encoded as HTML
|
||||
return preg_replace('/`/u', GRAVE_ACCENT_HTML_ENTITY, htmlspecialchars($string, ENT_QUOTES));
|
||||
}
|
||||
|
||||
// Escape string
|
||||
function escapeString($string) {
|
||||
|
||||
// Return string with double quotes and back slashes escaped
|
||||
return preg_replace('/(["\\\\])/u', "\\\\$1", $string);
|
||||
}
|
||||
|
||||
// Sanitize attribute name
|
||||
function sanitizeAttributeName($string) {
|
||||
|
||||
// Return string without spaces, equals, double quotes, single quotes, backticks, greater than signs, less than signs, and ampersands
|
||||
return preg_replace('/[ ="\'`<>&]/u', "", $string);
|
||||
}
|
||||
|
||||
// Get year
|
||||
function getYear() {
|
||||
|
||||
// Return year
|
||||
return intval(date(DATE_YEAR_STRING));
|
||||
}
|
||||
|
||||
// Starts with
|
||||
function startsWith($haystack, $needle) {
|
||||
|
||||
// Search backwards starting from haystack length characters from the end
|
||||
return $needle === "" || mb_strrpos($haystack, $needle, -mb_strlen($haystack)) !== FALSE;
|
||||
}
|
||||
?>
|
601
backend/language.php
Executable file
601
backend/language.php
Executable file
@@ -0,0 +1,601 @@
|
||||
<?php
|
||||
|
||||
// Constants
|
||||
|
||||
// Default language
|
||||
const DEFAULT_LANGUAGE = "en-US";
|
||||
|
||||
// Default locale
|
||||
const DEFAULT_LOCALE = "en_US.UTF-8";
|
||||
|
||||
// Single quote HTML entity
|
||||
const SINGLE_QUOTE_HTML_ENTITY = "'";
|
||||
|
||||
// Ampersand HTML entity
|
||||
const AMPERSAND_HTML_ENTITY = "&";
|
||||
|
||||
// Number format minimum fraction digits
|
||||
const NUMBER_FORMAT_MINIMUM_FRACTION_DIGITS = 0;
|
||||
|
||||
// Number format maximum fraction digits
|
||||
const NUMBER_FORMAT_MAXIMUM_FRACTION_DIGITS = 9;
|
||||
|
||||
// Number format use grouping
|
||||
const NUMBER_FORMAT_USE_GROUPING = FALSE;
|
||||
|
||||
// Bitcoin currency name
|
||||
const BITCOIN_CURRENCY_NAME = "BTC";
|
||||
|
||||
// Ethereum currency name
|
||||
const ETHEREUM_CURRENCY_NAME = "ETH";
|
||||
|
||||
// Escape character
|
||||
const ESCAPE_CHARACTER = "%";
|
||||
|
||||
// Placeholder pattern
|
||||
const PLACEHOLDER_PATTERN = '/^' . ESCAPE_CHARACTER . '[1-9]\d*\$s$/u';
|
||||
|
||||
|
||||
// Supporting function implementation
|
||||
|
||||
// Get available languages
|
||||
function getAvailableLanguages() {
|
||||
|
||||
// Declare available languages
|
||||
static $availableLanguages;
|
||||
|
||||
// Check if available languages doesn't exist
|
||||
if(isset($availableLanguages) === FALSE) {
|
||||
|
||||
// Set available languages
|
||||
$availableLanguages = [];
|
||||
|
||||
// Check if getting language files was successful
|
||||
$languageFiles = scandir(__DIR__ . "/../languages");
|
||||
if($languageFiles !== FALSE) {
|
||||
|
||||
// Go through all language files
|
||||
foreach($languageFiles as $languageFile) {
|
||||
|
||||
// Check if language file is a file
|
||||
$file = __DIR__ . "/../languages/" . $languageFile;
|
||||
if(is_file($file) === TRUE)
|
||||
|
||||
// Include language file
|
||||
require $file;
|
||||
}
|
||||
|
||||
// Sort available languages by language name
|
||||
uasort($availableLanguages, function($firstValue, $secondValue) {
|
||||
|
||||
return strcoll($firstValue["Constants"]["Language"], $secondValue["Constants"]["Language"]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Return available languages
|
||||
return $availableLanguages;
|
||||
}
|
||||
|
||||
// Get language
|
||||
function getLanguage() {
|
||||
|
||||
// Declare language
|
||||
static $language;
|
||||
|
||||
// Check if language doesn't exist
|
||||
if(isset($language) === FALSE) {
|
||||
|
||||
// Get locale language
|
||||
$localeLanguage = (array_key_exists("HTTP_ACCEPT_LANGUAGE", $_SERVER) === TRUE && is_string($_SERVER["HTTP_ACCEPT_LANGUAGE"]) === TRUE && mb_strlen($_SERVER["HTTP_ACCEPT_LANGUAGE"]) !== 0) ? locale_accept_from_http($_SERVER["HTTP_ACCEPT_LANGUAGE"]) : FALSE;
|
||||
|
||||
// Check if local language is should be simplified Chinese
|
||||
if($localeLanguage === "zh" && mb_strstr($_SERVER["HTTP_ACCEPT_LANGUAGE"], "zh-CN") !== FALSE) {
|
||||
|
||||
// Set local language to simplified Chinese
|
||||
$localeLanguage = "zh_CN";
|
||||
}
|
||||
|
||||
// Get language parameter
|
||||
$languageParameter = (array_key_exists("Language", $_GET) === TRUE && is_string($_GET["Language"]) === TRUE && mb_strlen($_GET["Language"]) !== 0) ? $_GET["Language"] : FALSE;
|
||||
|
||||
// Get prefered languages
|
||||
$preferedLanguages = array_unique(($languageParameter === FALSE) ? (($localeLanguage === FALSE) ? ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
] : [
|
||||
|
||||
// Choosen language
|
||||
$_COOKIE["__Host-Language"],
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
]) : ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
|
||||
|
||||
// Locale language with variant
|
||||
preg_replace('/_/u', "-", $localeLanguage),
|
||||
|
||||
// Locale language without variant
|
||||
preg_split('/_/u', $localeLanguage)[0],
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
] : [
|
||||
|
||||
// Choosen language
|
||||
$_COOKIE["__Host-Language"],
|
||||
|
||||
// Locale language with variant
|
||||
preg_replace('/_/u', "-", $localeLanguage),
|
||||
|
||||
// Locale language without variant
|
||||
preg_split('/_/u', $localeLanguage)[0],
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
])) : (($localeLanguage === FALSE) ? ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
|
||||
|
||||
// Language parameter
|
||||
$languageParameter,
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
] : [
|
||||
|
||||
// Choosen language
|
||||
$_COOKIE["__Host-Language"],
|
||||
|
||||
// Language parameter
|
||||
$languageParameter,
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
]) : ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
|
||||
|
||||
// Language parameter
|
||||
$languageParameter,
|
||||
|
||||
// Locale language with variant
|
||||
preg_replace('/_/u', "-", $localeLanguage),
|
||||
|
||||
// Locale language without variant
|
||||
preg_split('/_/u', $localeLanguage)[0],
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
|
||||
] : [
|
||||
|
||||
// Choosen language
|
||||
$_COOKIE["__Host-Language"],
|
||||
|
||||
// Language parameter
|
||||
$languageParameter,
|
||||
|
||||
// Locale language with variant
|
||||
preg_replace('/_/u', "-", $localeLanguage),
|
||||
|
||||
// Locale language without variant
|
||||
preg_split('/_/u', $localeLanguage)[0],
|
||||
|
||||
// Default language
|
||||
DEFAULT_LANGUAGE
|
||||
])));
|
||||
|
||||
// Get available languages
|
||||
$availableLanguages = getAvailableLanguages();
|
||||
|
||||
// Go through all prefered languages
|
||||
foreach($preferedLanguages as $preferedLanguage) {
|
||||
|
||||
// Check if prefered language is available
|
||||
if(array_key_exists($preferedLanguage, $availableLanguages) === TRUE) {
|
||||
|
||||
// Set language
|
||||
$language = $preferedLanguage;
|
||||
|
||||
// Break
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if language doesn't exist
|
||||
if(isset($language) === FALSE)
|
||||
|
||||
// Set language to default lnaguage
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
}
|
||||
|
||||
// Return language
|
||||
return $language;
|
||||
}
|
||||
|
||||
// Get language currencies
|
||||
function getLanguageCurrencies() {
|
||||
|
||||
// Declare language currencies
|
||||
static $languageCurrencies;
|
||||
|
||||
// Check if language currencies doesn't exist
|
||||
if(isset($languageCurrencies) === FALSE) {
|
||||
|
||||
// Set language currencies
|
||||
$languageCurrencies = [
|
||||
|
||||
// Bitcoin currency name
|
||||
BITCOIN_CURRENCY_NAME,
|
||||
|
||||
// Ethereum currency name
|
||||
ETHEREUM_CURRENCY_NAME
|
||||
];
|
||||
|
||||
// Go through all available languages
|
||||
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
|
||||
|
||||
// Check if available language has a currency constant
|
||||
if(array_key_exists("Currency", $availableLanguage["Constants"]) === TRUE) {
|
||||
|
||||
// Get available language's currency
|
||||
$currency = $availableLanguage["Constants"]["Currency"];
|
||||
|
||||
// Check if currency isn't already in the list of language currencies
|
||||
if(in_array($currency, $languageCurrencies, TRUE) === FALSE)
|
||||
|
||||
// Append currency to list of language currencies
|
||||
array_push($languageCurrencies, $currency);
|
||||
}
|
||||
}
|
||||
|
||||
// Sort language currencies by currency name
|
||||
usort($languageCurrencies, function($firstValue, $secondValue) {
|
||||
|
||||
return strcoll($firstValue, $secondValue);
|
||||
});
|
||||
}
|
||||
|
||||
// Return language currencies
|
||||
return $languageCurrencies;
|
||||
}
|
||||
|
||||
// Get translation contributors
|
||||
function getTransactionContributors() {
|
||||
|
||||
// Declare translation contributors
|
||||
static $translationContributors;
|
||||
|
||||
// Check if translation contributors doesn't exist
|
||||
if(isset($translationContributors) === FALSE) {
|
||||
|
||||
// Set translation contributors
|
||||
$translationContributors = [];
|
||||
|
||||
// Go through all available languages
|
||||
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
|
||||
|
||||
// Check if available language has contributors
|
||||
if(array_key_exists("Contributors", $availableLanguage) === TRUE) {
|
||||
|
||||
// Get available language's contributors
|
||||
$contributors = $availableLanguage["Contributors"];
|
||||
|
||||
// Go through all contributors
|
||||
foreach($contributors as $contributor => $link) {
|
||||
|
||||
// Check if contributor doesn't have a link
|
||||
if(is_int($contributor) === True) {
|
||||
|
||||
// Check if contributor isn't already in the list of translation contributors
|
||||
if(in_array($link, $translationContributors, TRUE) === FALSE)
|
||||
|
||||
// Append contributor to list of translation contributors
|
||||
array_push($translationContributors, $link);
|
||||
}
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Check if contributor isn't already in the list of translation contributors
|
||||
if(in_array($contributor, $translationContributors, TRUE) === FALSE)
|
||||
|
||||
// Append contributor to list of translation contributors
|
||||
$translationContributors[$link] = $contributor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sort translation contributors by contributor name
|
||||
uasort($translationContributors, function($firstValue, $secondValue) {
|
||||
|
||||
return strcoll($firstValue, $secondValue);
|
||||
});
|
||||
}
|
||||
|
||||
// Return translation contributors
|
||||
return $translationContributors;
|
||||
}
|
||||
|
||||
// Get translated type value
|
||||
function getTranslatedTypeValue($type, $value) {
|
||||
|
||||
// Get language
|
||||
$language = getLanguage();
|
||||
|
||||
// Check if type is text and value is a standalone placeholder
|
||||
if($type === "Text" && preg_match(PLACEHOLDER_PATTERN, $value) === 1) {
|
||||
|
||||
// Return value and the language used
|
||||
return [
|
||||
|
||||
// Result
|
||||
"Result" => $value,
|
||||
|
||||
// Language
|
||||
"Language" => $language
|
||||
];
|
||||
}
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Get available languages
|
||||
$availableLanguages = getAvailableLanguages();
|
||||
|
||||
// Loop until a result is returned
|
||||
while(TRUE) {
|
||||
|
||||
// Check if language is available
|
||||
if(array_key_exists($language, $availableLanguages) === TRUE) {
|
||||
|
||||
// Check if specified type exist for the language and the specified value exists
|
||||
if(array_key_exists($type, $availableLanguages[$language]) === TRUE && array_key_exists($value, $availableLanguages[$language][$type]) === TRUE)
|
||||
|
||||
// Return value for the language and the language used
|
||||
return [
|
||||
|
||||
// Result
|
||||
"Result" => $availableLanguages[$language][$type][$value],
|
||||
|
||||
// Language
|
||||
"Language" => $language
|
||||
];
|
||||
|
||||
// Otherwise check if language provided a fallback language
|
||||
else if($language !== DEFAULT_LANGUAGE && array_key_exists("Constants", $availableLanguages[$language]) === TRUE && array_key_exists("Fallback", $availableLanguages[$language]["Constants"]) === TRUE)
|
||||
|
||||
// Set language to the language's fallback language
|
||||
$language = $availableLanguages[$language]["Constants"]["Fallback"];
|
||||
|
||||
// Otherwise check if the language is not the default language
|
||||
else if($language !== DEFAULT_LANGUAGE)
|
||||
|
||||
// Set language to default language
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Check if type is constants
|
||||
if($type === "Constants") {
|
||||
|
||||
// Return empty string and the language used
|
||||
return [
|
||||
|
||||
// Result
|
||||
"Result" => "",
|
||||
|
||||
// Language
|
||||
"Language" => $language
|
||||
];
|
||||
}
|
||||
|
||||
// Otherwise assume type is text
|
||||
else {
|
||||
|
||||
// Return value and the language used
|
||||
return [
|
||||
|
||||
// Result
|
||||
"Result" => $value,
|
||||
|
||||
// Language
|
||||
"Language" => $language
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise check if the language is not the default language
|
||||
else if($language !== DEFAULT_LANGUAGE)
|
||||
|
||||
// Set language to default language
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Check if type is constants
|
||||
if($type === "Constants") {
|
||||
|
||||
// Return empty string and the language used
|
||||
return [
|
||||
|
||||
// Result
|
||||
"Result" => "",
|
||||
|
||||
// Language
|
||||
"Language" => $language
|
||||
];
|
||||
}
|
||||
|
||||
// Otherwise assume type is text
|
||||
else {
|
||||
|
||||
// Return value and the language used
|
||||
return [
|
||||
|
||||
// Result
|
||||
"Result" => $value,
|
||||
|
||||
// Language
|
||||
"Language" => $language
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get constant
|
||||
function getConstant($constant) {
|
||||
|
||||
// Return translation for the specified constant
|
||||
return getTranslatedTypeValue("Constants", $constant)["Result"];
|
||||
}
|
||||
|
||||
// Get translation
|
||||
function getTranslation($text, $arguments = []) {
|
||||
|
||||
// Get translated text
|
||||
$translatedText = getTranslatedTypeValue("Text", $text);
|
||||
|
||||
// Go through all arguments
|
||||
foreach($arguments as &$argument) {
|
||||
|
||||
// Check if argument is a function
|
||||
if(is_callable($argument) === TRUE)
|
||||
|
||||
// Resolve the argument's value using the translated text's language
|
||||
$argument = $argument($translatedText["Language"], $text);
|
||||
}
|
||||
|
||||
// Get formatted translation for the specified text
|
||||
$formattedTranslation = vsprintf($translatedText["Result"], $arguments);
|
||||
|
||||
// Check if formatting translation failed
|
||||
if($formattedTranslation === FALSE)
|
||||
|
||||
// Return empty string
|
||||
return "";
|
||||
|
||||
// Otherwise
|
||||
else
|
||||
|
||||
// Return formatted translation
|
||||
return $formattedTranslation;
|
||||
}
|
||||
|
||||
// Get default translation
|
||||
function getDefaultTranslation($text) {
|
||||
|
||||
// Return text
|
||||
return $text;
|
||||
}
|
||||
|
||||
// Get number translation
|
||||
function getNumberTranslation($number) {
|
||||
|
||||
// Check if number isn't valid
|
||||
if(is_string($number) === TRUE || is_numeric($number) === FALSE) {
|
||||
|
||||
// Return function
|
||||
return function($language, $value) {
|
||||
|
||||
// Return empty string
|
||||
return "";
|
||||
};
|
||||
}
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Return function
|
||||
return function($language, $value) use ($number) {
|
||||
|
||||
// Get available languages
|
||||
$availableLanguages = getAvailableLanguages();
|
||||
|
||||
// Loop until a result is returned
|
||||
while(TRUE) {
|
||||
|
||||
// Check if language is available or value is a standalone placeholder
|
||||
if(array_key_exists($language, $availableLanguages) === TRUE || preg_match(PLACEHOLDER_PATTERN, $value) === 1) {
|
||||
|
||||
// Set number formatter
|
||||
$numberFormatter = new NumberFormatter($language, NumberFormatter::DECIMAL);
|
||||
|
||||
// Check if number formatter is valid and it can format using the provided language
|
||||
if($numberFormatter !== FALSE && preg_replace('/_/u', "-", $numberFormatter->getLocale(Locale::VALID_LOCALE)) === $language) {
|
||||
|
||||
// Configure number formatter
|
||||
$numberFormatter->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, NUMBER_FORMAT_MINIMUM_FRACTION_DIGITS);
|
||||
$numberFormatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, NUMBER_FORMAT_MAXIMUM_FRACTION_DIGITS);
|
||||
$numberFormatter->setAttribute(NumberFormatter::GROUPING_USED, NUMBER_FORMAT_USE_GROUPING);
|
||||
$numberFormatter->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN);
|
||||
|
||||
// Return number formatted as the language
|
||||
return $numberFormatter->format($number);
|
||||
}
|
||||
|
||||
// Otherwise check if language provided a fallback language
|
||||
else if($language !== DEFAULT_LANGUAGE && array_key_exists("Constants", $availableLanguages[$language]) === TRUE && array_key_exists("Fallback", $availableLanguages[$language]["Constants"]) === TRUE)
|
||||
|
||||
// Set language to the language's fallback language
|
||||
$language = $availableLanguages[$language]["Constants"]["Fallback"];
|
||||
|
||||
// Otherwise check if the language is not the default language
|
||||
else if($language !== DEFAULT_LANGUAGE)
|
||||
|
||||
// Set language to default language
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
|
||||
// Otherwise
|
||||
else
|
||||
|
||||
// Return number
|
||||
return $number;
|
||||
}
|
||||
|
||||
// Otherwise check if the language is not the default language
|
||||
else if($language !== DEFAULT_LANGUAGE)
|
||||
|
||||
// Set language to default language
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
|
||||
// Otherwise
|
||||
else
|
||||
|
||||
// Return number
|
||||
return $number;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Escape text
|
||||
function escapeText($text) {
|
||||
|
||||
// Return text with all escape characters escaped
|
||||
return preg_replace('/' . ESCAPE_CHARACTER . '/u', ESCAPE_CHARACTER . ESCAPE_CHARACTER, $text);
|
||||
}
|
||||
|
||||
// Escape Data
|
||||
function escapeData($array) {
|
||||
|
||||
// Return array in JSON encoding with ampersands and single quotes encoded as HTML
|
||||
return preg_replace('/\'/u', SINGLE_QUOTE_HTML_ENTITY, preg_replace('/&/u', AMPERSAND_HTML_ENTITY, json_encode($array)));
|
||||
}
|
||||
|
||||
|
||||
// Main function
|
||||
|
||||
// Set locale
|
||||
setlocale(LC_ALL, DEFAULT_LOCALE);
|
||||
?>
|
1805
backend/resources.php
Executable file
1805
backend/resources.php
Executable file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user