= $btype && $x < (count($labels) - 1); $bytes /= $btype, $x++) ; if ($labels[$x] == 'TB') { return round($bytes, 3) . $beforeunit . $labels[$x] . $afterunit; } elseif ($labels[$x] == 'GB') { return round($bytes, 2) . $beforeunit . $labels[$x] . $afterunit; } elseif ($labels[$x] == 'MB') { return round($bytes, 2) . $beforeunit . $labels[$x] . $afterunit; } else { return round($bytes, 0) . $beforeunit . $labels[$x] . $afterunit; } } /** * @param $title * @param string $separator * @param string $language * @return string */ function str_slug($title, string $separator = '-', string $language = 'en'): string { return Str::slug($title, $separator, $language); } if (!function_exists('str_is')) { /** * Determine if a given string matches a given pattern. * * @param string|array $pattern * @param string $value * @return bool * * @deprecated Str::is() should be used directly instead. Will be removed in Laravel 6.0. */ function str_is($pattern, string $value): bool { return Str::is($pattern, $value); } } /** * @param $hex * @return float|int */ function get_brightness($hex) { // returns brightness value from 0 to 255 // strip off any leading # // $hex = str_replace('#', '', $hex); $hex = preg_replace("/[^0-9A-Fa-f]/", '', $hex); if (strlen($hex) == 3) { $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2]; } $c_r = hexdec(substr($hex, 0, 2)); $c_g = hexdec(substr($hex, 2, 2)); $c_b = hexdec(substr($hex, 4, 2)); return (($c_r * 299) + ($c_g * 587) + ($c_b * 114)) / 1000; } /** * @param $hex * @return string */ function title_color($hex): string { if (get_brightness($hex) > 130) { return ' black'; } else { return ' white'; } } /** * @return string */ function getLinkTargetAttribute(): string { $target = \App\Setting::fetch('window_target'); if ($target === 'current') { return ''; } else { return ' target="' . $target . '"'; } } /** * @param $name * @return array|string|string[]|null */ function className($name) { return preg_replace('/[^\p{L}\p{N}]/u', '', $name); } /** * @param string $file * @param string $extension * @return bool */ function isImage(string $file, string $extension): bool { $allowedExtensions = ['jpg', 'jpeg', 'png', 'bmp', 'gif', 'svg', 'webp']; if (!in_array($extension, $allowedExtensions)) { return false; } $tempFileName = @tempnam("/tmp", "image-check-"); $handle = fopen($tempFileName, "w"); fwrite($handle, $file); fclose($handle); if ($extension == 'svg') { return 'image/svg+xml' === mime_content_type($tempFileName); } $size = @getimagesize($tempFileName); return is_array($size) && str_starts_with($size['mime'], 'image'); }