shell bypass 403
<?php
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
if (! function_exists('set_active')) {
/**
* Determine if a route is the currently active route.
*
* @param string $path
* @param string $class
* @return string
*/
function set_active($path, $class = 'active')
{
return Request::is(config('translation.ui_url').$path) ? $class : '';
}
}
if (! function_exists('strs_contain')) {
/**
* Determine whether any of the provided strings in the haystack contain the needle.
*
* @param array $haystacks
* @param string $needle
* @return bool
*/
function strs_contain($haystacks, $needle)
{
$haystacks = (array) $haystacks;
foreach ($haystacks as $haystack) {
if (is_array($haystack)) {
return strs_contain($haystack, $needle);
} elseif (Str::contains(strtolower($haystack), strtolower($needle))) {
return true;
}
}
return false;
}
}
if (! function_exists('array_diff_assoc_recursive')) {
/**
* Recursively diff two arrays.
*
* @param array $arrayOne
* @param array $arrayTwo
* @return array
*/
function array_diff_assoc_recursive($arrayOne, $arrayTwo)
{
$difference = [];
foreach ($arrayOne as $key => $value) {
if (is_array($value) || $value instanceof Illuminate\Support\Collection) {
if (! isset($arrayTwo[$key])) {
$difference[$key] = $value;
} elseif (! (is_array($arrayTwo[$key]) || $arrayTwo[$key] instanceof Illuminate\Support\Collection)) {
$difference[$key] = $value;
} else {
$new_diff = array_diff_assoc_recursive($value, $arrayTwo[$key]);
if ($new_diff != false) {
$difference[$key] = $new_diff;
}
}
} elseif (! isset($arrayTwo[$key])) {
$difference[$key] = $value;
}
}
return $difference;
}
}
if (! function_exists('str_before')) {
/**
* Get the portion of a string before a given value.
*
* @param string $subject
* @param string $search
* @return string
*/
function str_before($subject, $search)
{
return $search === '' ? $subject : explode($search, $subject)[0];
}
}
// Array undot
if (! function_exists('array_undot')) {
/**
* Expands a single level array with dot notation into a multi-dimensional array.
*
* @param array $dotNotationArray
*
* @return array
*/
function array_undot(array $dotNotationArray)
{
$array = [];
foreach ($dotNotationArray as $key => $value) {
// if there is a space after the dot, this could legitimately be
// a single key and not nested.
if (count(explode('. ', $key)) > 1) {
$array[$key] = $value;
} else {
Arr::set($array, $key, $value);
}
}
return $array;
}
}