JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour
<?php use Cocur\Slugify\Slugify; use Common\Comments\Comment; use Common\Core\Contracts\AppUrlGenerator; use Common\Core\Middleware\EnsureFrontendRequestsAreStateful; use Common\Settings\Settings; use Common\Tags\Tag; use Common\Workspaces\Workspace; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\Str; if (!function_exists('slugify')) { function slugify(string $title, string $separator = '-'): string { $slugified = (new Slugify())->slugify($title, $separator); // $slugified = Str::slug($title, $separator); if (!$slugified) { $slugified = strtolower( preg_replace('/[\s_]+/', $separator, $title), ); } return $slugified; } } if (!function_exists('castToBoolean')) { function castToBoolean(mixed $string): bool|null|string { return match ($string) { true, 'true' => true, false, 'false' => false, 'null', null => null, default => (string) $string, }; } } if (!function_exists('modelTypeToNamespace')) { function modelTypeToNamespace(string $modelType): string { if (Str::contains($modelType, ['App', 'Common'])) { return $modelType; } // resolve models from common if ($modelType === 'workspace') { return Workspace::class; } if ($modelType === 'comment') { return Comment::class; } if ($modelType === 'tag' && !class_exists('App\Models\Tag')) { return Tag::class; } if ($namespace = Relation::getMorphedModel($modelType)) { return $namespace; } $modelName = Str::of($modelType) ->camel() ->singular() ->ucfirst(); return "App\\Models\\$modelName"; } } if (!function_exists('getIp')) { function getIp(): string { foreach ( [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', ] as $key ) { if (array_key_exists($key, $_SERVER) === true) { foreach (explode(',', $_SERVER[$key]) as $ip) { $ip = trim($ip); // just to be safe if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE, ) !== false ) { return $ip; } } } } return request()->ip(); } } if (!function_exists('requestIsFromFrontend')) { function requestIsFromFrontend(): bool { return EnsureFrontendRequestsAreStateful::fromFrontend(request()) || !isApiRequest(); } } if (!function_exists('settings')) { function settings(string|null $key = null, mixed $default = null) { if (empty(func_get_args())) { return app(Settings::class); } return app(Settings::class)->get($key, $default); } } if (!function_exists('urls')) { function urls() { return app(AppUrlGenerator::class); } } if (!function_exists('isApiRequest')) { function isApiRequest(): bool { return request()->route() && in_array('api', request()->route()->computedMiddleware); } }