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/smart-sl.../Nextend/Framewor.../Url
File: UrlHelper.php
<?php
[0] Fix | Delete
[1] Fix | Delete
[2] Fix | Delete
namespace Nextend\Framework\Url;
[3] Fix | Delete
[4] Fix | Delete
use Nextend\Framework\Request\Request;
[5] Fix | Delete
[6] Fix | Delete
class UrlHelper {
[7] Fix | Delete
[8] Fix | Delete
[9] Fix | Delete
/**
[10] Fix | Delete
* Retrieves a modified URL query string.
[11] Fix | Delete
*
[12] Fix | Delete
* You can rebuild the URL and append query variables to the URL query by using this function.
[13] Fix | Delete
* There are two ways to use this function; either a single key and value, or an associative array.
[14] Fix | Delete
*
[15] Fix | Delete
* Using a single key and value:
[16] Fix | Delete
*
[17] Fix | Delete
* add_query_arg( 'key', 'value', 'http://example.com' );
[18] Fix | Delete
*
[19] Fix | Delete
* Using an associative array:
[20] Fix | Delete
*
[21] Fix | Delete
* add_query_arg( array(
[22] Fix | Delete
* 'key1' => 'value1',
[23] Fix | Delete
* 'key2' => 'value2',
[24] Fix | Delete
* ), 'http://example.com' );
[25] Fix | Delete
*
[26] Fix | Delete
* Omitting the URL from either use results in the current URL being used
[27] Fix | Delete
* (the value of `$_SERVER['REQUEST_URI']`).
[28] Fix | Delete
*
[29] Fix | Delete
* Values are expected to be encoded appropriately with urlencode() or rawurlencode().
[30] Fix | Delete
*
[31] Fix | Delete
* Setting any query variable's value to boolean false removes the key (see remove_query_arg()).
[32] Fix | Delete
*
[33] Fix | Delete
* Important: The return value of add_query_arg() is not escaped by default. Output should be
[34] Fix | Delete
* late-escaped with esc_url() or similar to help prevent vulnerability to cross-site scripting
[35] Fix | Delete
* (XSS) attacks.
[36] Fix | Delete
*
[37] Fix | Delete
* @param string|array $key Either a query variable key, or an associative array of query variables.
[38] Fix | Delete
* @param string $value Optional. Either a query variable value, or a URL to act upon.
[39] Fix | Delete
* @param string $url Optional. A URL to act upon.
[40] Fix | Delete
*
[41] Fix | Delete
* @return string New URL query string (unescaped).
[42] Fix | Delete
*
[43] Fix | Delete
*/
[44] Fix | Delete
public static function add_query_arg() {
[45] Fix | Delete
$args = func_get_args();
[46] Fix | Delete
if (is_array($args[0])) {
[47] Fix | Delete
if (count($args) < 2 || false === $args[1]) {
[48] Fix | Delete
$uri = Request::$SERVER->getVar('REQUEST_URI');
[49] Fix | Delete
} else {
[50] Fix | Delete
$uri = $args[1];
[51] Fix | Delete
}
[52] Fix | Delete
} else {
[53] Fix | Delete
if (count($args) < 3 || false === $args[2]) {
[54] Fix | Delete
$uri = Request::$SERVER->getVar('REQUEST_URI');
[55] Fix | Delete
} else {
[56] Fix | Delete
$uri = $args[2];
[57] Fix | Delete
}
[58] Fix | Delete
}
[59] Fix | Delete
[60] Fix | Delete
if ($frag = strstr($uri, '#')) {
[61] Fix | Delete
$uri = substr($uri, 0, -strlen($frag));
[62] Fix | Delete
} else {
[63] Fix | Delete
$frag = '';
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
if (0 === stripos($uri, 'http://')) {
[67] Fix | Delete
$protocol = 'http://';
[68] Fix | Delete
$uri = substr($uri, 7);
[69] Fix | Delete
} elseif (0 === stripos($uri, 'https://')) {
[70] Fix | Delete
$protocol = 'https://';
[71] Fix | Delete
$uri = substr($uri, 8);
[72] Fix | Delete
} else {
[73] Fix | Delete
$protocol = '';
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
if (strpos($uri, '?') !== false) {
[77] Fix | Delete
list($base, $query) = explode('?', $uri, 2);
[78] Fix | Delete
$base .= '?';
[79] Fix | Delete
} elseif ($protocol || strpos($uri, '=') === false) {
[80] Fix | Delete
$base = $uri . '?';
[81] Fix | Delete
$query = '';
[82] Fix | Delete
} else {
[83] Fix | Delete
$base = '';
[84] Fix | Delete
$query = $uri;
[85] Fix | Delete
}
[86] Fix | Delete
[87] Fix | Delete
self::wp_parse_str($query, $qs);
[88] Fix | Delete
$qs = self::urlencode_deep($qs); // this re-URL-encodes things that were already in the query string
[89] Fix | Delete
if (is_array($args[0])) {
[90] Fix | Delete
foreach ($args[0] as $k => $v) {
[91] Fix | Delete
$qs[$k] = $v;
[92] Fix | Delete
}
[93] Fix | Delete
} else {
[94] Fix | Delete
$qs[$args[0]] = $args[1];
[95] Fix | Delete
}
[96] Fix | Delete
[97] Fix | Delete
foreach ($qs as $k => $v) {
[98] Fix | Delete
if ($v === false) {
[99] Fix | Delete
unset($qs[$k]);
[100] Fix | Delete
}
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
$ret = self::build_query($qs);
[104] Fix | Delete
$ret = trim($ret, '?');
[105] Fix | Delete
$ret = preg_replace('#=(&|$)#', '$1', $ret);
[106] Fix | Delete
$ret = $protocol . $base . $ret . $frag;
[107] Fix | Delete
$ret = rtrim($ret, '?');
[108] Fix | Delete
[109] Fix | Delete
return $ret;
[110] Fix | Delete
}
[111] Fix | Delete
[112] Fix | Delete
private static function wp_parse_str($string, &$array) {
[113] Fix | Delete
parse_str($string, $array);
[114] Fix | Delete
if (version_compare(PHP_VERSION, '7.4.0', '<')) {
[115] Fix | Delete
if (get_magic_quotes_gpc()) {
[116] Fix | Delete
$array = self::stripslashes_deep($array);
[117] Fix | Delete
}
[118] Fix | Delete
}
[119] Fix | Delete
[120] Fix | Delete
}
[121] Fix | Delete
[122] Fix | Delete
static function urlencode_deep($value) {
[123] Fix | Delete
return self::map_deep($value, 'urlencode');
[124] Fix | Delete
}
[125] Fix | Delete
[126] Fix | Delete
/**
[127] Fix | Delete
* Build URL query based on an associative and, or indexed array.
[128] Fix | Delete
*
[129] Fix | Delete
* This is a convenient function for easily building url queries. It sets the
[130] Fix | Delete
* separator to '&' and uses _http_build_query() function.
[131] Fix | Delete
*
[132] Fix | Delete
* @param array $data URL-encode key/value pairs.
[133] Fix | Delete
*
[134] Fix | Delete
* @return string URL-encoded string.
[135] Fix | Delete
* @link https://secure.php.net/manual/en/function.http-build-query.php for more on what
[136] Fix | Delete
* http_build_query() does.
[137] Fix | Delete
*
[138] Fix | Delete
* @since 2.3.0
[139] Fix | Delete
*
[140] Fix | Delete
* @see _http_build_query() Used to build the query
[141] Fix | Delete
*/
[142] Fix | Delete
private static function build_query($data) {
[143] Fix | Delete
return self::_http_build_query($data, null, '&', '', false);
[144] Fix | Delete
}
[145] Fix | Delete
[146] Fix | Delete
/**
[147] Fix | Delete
* From php.net (modified by Mark Jaquith to behave like the native PHP5 function).
[148] Fix | Delete
*
[149] Fix | Delete
* @param array|object $data An array or object of data. Converted to array.
[150] Fix | Delete
* @param string $prefix Optional. Numeric index. If set, start parameter numbering with it.
[151] Fix | Delete
* Default null.
[152] Fix | Delete
* @param string $sep Optional. Argument separator; defaults to 'arg_separator.output'.
[153] Fix | Delete
* Default null.
[154] Fix | Delete
* @param string $key Optional. Used to prefix key name. Default empty.
[155] Fix | Delete
* @param bool $urlencode Optional. Whether to use urlencode() in the result. Default true.
[156] Fix | Delete
*
[157] Fix | Delete
* @return string The query string.
[158] Fix | Delete
* @since 3.2.0
[159] Fix | Delete
* @access private
[160] Fix | Delete
*
[161] Fix | Delete
* @see https://secure.php.net/manual/en/function.http-build-query.php
[162] Fix | Delete
*
[163] Fix | Delete
*/
[164] Fix | Delete
private static function _http_build_query($data, $prefix = null, $sep = null, $key = '', $urlencode = true) {
[165] Fix | Delete
$ret = array();
[166] Fix | Delete
[167] Fix | Delete
foreach ((array)$data as $k => $v) {
[168] Fix | Delete
if ($urlencode) {
[169] Fix | Delete
$k = urlencode($k);
[170] Fix | Delete
}
[171] Fix | Delete
if (is_int($k) && $prefix != null) {
[172] Fix | Delete
$k = $prefix . $k;
[173] Fix | Delete
}
[174] Fix | Delete
if (!empty($key)) {
[175] Fix | Delete
$k = $key . '%5B' . $k . '%5D';
[176] Fix | Delete
}
[177] Fix | Delete
if ($v === null) {
[178] Fix | Delete
continue;
[179] Fix | Delete
} elseif ($v === false) {
[180] Fix | Delete
$v = '0';
[181] Fix | Delete
}
[182] Fix | Delete
[183] Fix | Delete
if (is_array($v) || is_object($v)) {
[184] Fix | Delete
array_push($ret, self::_http_build_query($v, '', $sep, $k, $urlencode));
[185] Fix | Delete
} elseif ($urlencode) {
[186] Fix | Delete
array_push($ret, $k . '=' . urlencode($v));
[187] Fix | Delete
} else {
[188] Fix | Delete
array_push($ret, $k . '=' . $v);
[189] Fix | Delete
}
[190] Fix | Delete
}
[191] Fix | Delete
[192] Fix | Delete
if (null === $sep) {
[193] Fix | Delete
$sep = ini_get('arg_separator.output');
[194] Fix | Delete
}
[195] Fix | Delete
[196] Fix | Delete
return implode($sep, $ret);
[197] Fix | Delete
}
[198] Fix | Delete
[199] Fix | Delete
/**
[200] Fix | Delete
* Parses a string into variables to be stored in an array.
[201] Fix | Delete
*
[202] Fix | Delete
* Uses {@link https://secure.php.net/parse_str parse_str()} and stripslashes if
[203] Fix | Delete
* {@link https://secure.php.net/magic_quotes magic_quotes_gpc} is on.
[204] Fix | Delete
*
[205] Fix | Delete
* @param string $string The string to be parsed.
[206] Fix | Delete
* @param array $array Variables will be stored in this array.
[207] Fix | Delete
*
[208] Fix | Delete
* @since 2.2.1
[209] Fix | Delete
*
[210] Fix | Delete
*/
[211] Fix | Delete
private static function parse_str($string, &$array) {
[212] Fix | Delete
parse_str($string, $array);
[213] Fix | Delete
if (version_compare(PHP_VERSION, '7.4.0', '<')) {
[214] Fix | Delete
if (get_magic_quotes_gpc()) {
[215] Fix | Delete
$array = self::stripslashes_deep($array);
[216] Fix | Delete
}
[217] Fix | Delete
}
[218] Fix | Delete
}
[219] Fix | Delete
[220] Fix | Delete
/**
[221] Fix | Delete
* Navigates through an array, object, or scalar, and removes slashes from the values.
[222] Fix | Delete
*
[223] Fix | Delete
* @param mixed $value The value to be stripped.
[224] Fix | Delete
*
[225] Fix | Delete
* @return mixed Stripped value.
[226] Fix | Delete
* @since 2.0.0
[227] Fix | Delete
*
[228] Fix | Delete
*/
[229] Fix | Delete
private static function stripslashes_deep($value) {
[230] Fix | Delete
return self::map_deep($value, array(
[231] Fix | Delete
self::class,
[232] Fix | Delete
'stripslashes_from_strings_only'
[233] Fix | Delete
));
[234] Fix | Delete
}
[235] Fix | Delete
[236] Fix | Delete
/**
[237] Fix | Delete
* Callback function for `stripslashes_deep()` which strips slashes from strings.
[238] Fix | Delete
*
[239] Fix | Delete
* @param mixed $value The array or string to be stripped.
[240] Fix | Delete
*
[241] Fix | Delete
* @return mixed $value The stripped value.
[242] Fix | Delete
* @since 4.4.0
[243] Fix | Delete
*
[244] Fix | Delete
*/
[245] Fix | Delete
public static function stripslashes_from_strings_only($value) {
[246] Fix | Delete
return is_string($value) ? stripslashes($value) : $value;
[247] Fix | Delete
}
[248] Fix | Delete
[249] Fix | Delete
/**
[250] Fix | Delete
* Maps a function to all non-iterable elements of an array or an object.
[251] Fix | Delete
*
[252] Fix | Delete
* This is similar to `array_walk_recursive()` but acts upon objects too.
[253] Fix | Delete
*
[254] Fix | Delete
* @param mixed $value The array, object, or scalar.
[255] Fix | Delete
* @param callable $callback The function to map onto $value.
[256] Fix | Delete
*
[257] Fix | Delete
* @return mixed The value with the callback applied to all non-arrays and non-objects inside it.
[258] Fix | Delete
* @since 4.4.0
[259] Fix | Delete
*
[260] Fix | Delete
*/
[261] Fix | Delete
private static function map_deep($value, $callback) {
[262] Fix | Delete
if (is_array($value)) {
[263] Fix | Delete
foreach ($value as $index => $item) {
[264] Fix | Delete
$value[$index] = self::map_deep($item, $callback);
[265] Fix | Delete
}
[266] Fix | Delete
} elseif (is_object($value)) {
[267] Fix | Delete
$object_vars = get_object_vars($value);
[268] Fix | Delete
foreach ($object_vars as $property_name => $property_value) {
[269] Fix | Delete
$value->$property_name = self::map_deep($property_value, $callback);
[270] Fix | Delete
}
[271] Fix | Delete
} else {
[272] Fix | Delete
$value = call_user_func($callback, $value);
[273] Fix | Delete
}
[274] Fix | Delete
[275] Fix | Delete
return $value;
[276] Fix | Delete
}
[277] Fix | Delete
}
[278] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function