mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
114 lines
3.1 KiB
PHP
114 lines
3.1 KiB
PHP
<?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;
|
|
}
|
|
}
|