277 lines
7.3 KiB
PHP
277 lines
7.3 KiB
PHP
<?php
|
|
|
|
use App\Models\Media;
|
|
use App\Models\User;
|
|
use App\Settings\AppSettings;
|
|
use Carbon\Carbon;
|
|
use Hashids\Hashids;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\File;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Str;
|
|
|
|
// Template
|
|
// if (! function_exists('my_custom_function')) {
|
|
// function my_custom_function($param) {
|
|
// }
|
|
// }
|
|
|
|
if (! function_exists('store_file')) {
|
|
function store_file($file = null, $path, $disk = 'public')
|
|
{
|
|
if ($file && $file instanceof \Illuminate\Http\UploadedFile) {
|
|
$randomFilename = Str::random(35).time().'.'.$file->getClientOriginalExtension();
|
|
$originalFileName = Str::slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)).'.'.$file->getClientOriginalExtension();
|
|
|
|
$file->storeAs($path, $randomFilename, $disk);
|
|
|
|
return [
|
|
'randomFileName' => $randomFilename,
|
|
'originalFileName' => $originalFileName,
|
|
'isSuccess' => true,
|
|
];
|
|
} else {
|
|
return [
|
|
'randomFileName' => null,
|
|
'originalFileName' => null,
|
|
'isSuccess' => false,
|
|
];
|
|
}
|
|
}
|
|
}
|
|
|
|
if (! function_exists('delete_file')) {
|
|
function delete_file($path)
|
|
{
|
|
if (File::exists(storage_path($path))) {
|
|
File::delete(storage_path($path));
|
|
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (! function_exists('is_file_exists')) {
|
|
function is_file_exists($path)
|
|
{
|
|
return File::exists(public_path('storage/' . $path));
|
|
}
|
|
}
|
|
|
|
if (!function_exists('get_role_name')) {
|
|
function get_role_name($role = null) {
|
|
|
|
if($role === null){
|
|
$role = Auth::user()->role_id;
|
|
}
|
|
|
|
switch($role) {
|
|
case '1':
|
|
return "Administrator";
|
|
case '2':
|
|
return "Admin Monitoring";
|
|
case '3':
|
|
return "Perusahaan";
|
|
case '4':
|
|
return "Admin Konten";
|
|
default:
|
|
return "Role Tidak Dikenal";
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!function_exists('shorten_text')) {
|
|
function shorten_text($text, $maxLength = 100) {
|
|
if (strlen($text) > $maxLength) {
|
|
return substr($text, 0, $maxLength) . '...';
|
|
}
|
|
|
|
return $text;
|
|
}
|
|
}
|
|
|
|
if (! function_exists('is_role')) {
|
|
function is_role($roles) {
|
|
if (Auth::check()) {
|
|
return in_array(Auth::user()->role_id, (array) $roles);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (! function_exists('encrypt_id')) {
|
|
function encrypt_id($id)
|
|
{
|
|
$hashids = new Hashids('alwayssaybismillahirrahmanirrahim', 15);
|
|
return $hashids->encode($id);
|
|
}
|
|
}
|
|
|
|
if (! function_exists('decrypt_id')) {
|
|
function decrypt_id($hash)
|
|
{
|
|
$hashids = new Hashids('alwayssaybismillahirrahmanirrahim', 15);
|
|
$result = $hashids->decode($hash);
|
|
return $result ? $result[0] : null;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('idn_date')) {
|
|
function idn_date($tanggal, $format = 'd F Y')
|
|
{
|
|
return Carbon::parse($tanggal)->locale('id')->translatedFormat($format);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('get_user_status')) {
|
|
function get_user_status($status)
|
|
{
|
|
switch($status){
|
|
case '0':
|
|
return 'Menunggu';
|
|
case '1':
|
|
return 'Aktif';
|
|
case '2':
|
|
return 'Nonaktif';
|
|
}
|
|
}
|
|
}
|
|
|
|
if (! function_exists('get_cooperation_notif')) {
|
|
function get_cooperation_notif() {
|
|
$user = User::findOrFail(Auth::id());
|
|
if($user->role_id === 3){
|
|
$mediaId = $user->company->media->id;
|
|
|
|
$media = Media::with('cooperations')->findOrFail($mediaId);
|
|
return $media->cooperations()
|
|
->where('start_date', '<=', Carbon::now()->locale('id')->toDateString())
|
|
->where('end_date', '>=', Carbon::now()->locale('id')->toDateString())
|
|
->count();
|
|
|
|
}else{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (! function_exists('slugify')) {
|
|
function slugify($param) {
|
|
return Str::slug($param);
|
|
}
|
|
}
|
|
|
|
if (! function_exists('get_unread_announcements')) {
|
|
function get_unread_announcements() {
|
|
$user = User::findOrFail(Auth::id());
|
|
if($user->role_id === 3){
|
|
$userId = $user->id;
|
|
|
|
$user = User::with('announcements')->findOrFail($userId);
|
|
return $user->announcements()
|
|
->wherePivot('status', '=', '0')
|
|
->count();
|
|
|
|
}else{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (! function_exists('display_image')) {
|
|
function display_image($name, $dir = 'defaults', $default = 'default.jpg') {
|
|
$path = "uploads/{$dir}/{$name}";
|
|
$defaultPath = "assets/defaults/{$default}";
|
|
|
|
if (Storage::disk('public')->exists($path)) {
|
|
try {
|
|
if(Storage::disk('public')->get($path)){
|
|
return "storage/{$path}";
|
|
}else{
|
|
return $defaultPath;
|
|
}
|
|
} catch (\Exception $e) {
|
|
return $defaultPath;
|
|
}
|
|
}
|
|
|
|
return $defaultPath;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('get_user_agent')) {
|
|
function get_user_agent($userAgentParam): array
|
|
{
|
|
$userAgent = $userAgentParam;
|
|
|
|
// Deteksi Sistem Operasi
|
|
$osArray = [
|
|
'Windows' => 'Windows',
|
|
'Mac' => 'Macintosh',
|
|
'Linux' => 'Linux',
|
|
'Android' => 'Android',
|
|
'iOS' => 'iPhone|iPad|iPod',
|
|
];
|
|
|
|
$osDetected = 'Unknown OS';
|
|
foreach ($osArray as $os => $pattern) {
|
|
if (preg_match("/$pattern/i", $userAgent)) {
|
|
$osDetected = $os;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Deteksi Browser
|
|
$browserArray = [
|
|
'Chrome' => 'Chrome',
|
|
'Firefox' => 'Firefox',
|
|
'Safari' => 'Safari',
|
|
'Edge' => 'Edg', // Microsoft Edge pakai "Edg" di User-Agent
|
|
'Opera' => 'Opera|OPR',
|
|
'Internet Explorer' => 'MSIE|Trident',
|
|
];
|
|
|
|
$browserDetected = 'Unknown Browser';
|
|
foreach ($browserArray as $browser => $pattern) {
|
|
if (preg_match("/$pattern/i", $userAgent)) {
|
|
$browserDetected = $browser;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return [
|
|
'os' => $osDetected,
|
|
'browser' => $browserDetected,
|
|
'user_agent' => $userAgent,
|
|
];
|
|
}
|
|
}
|
|
|
|
if (!function_exists('display_file')) {
|
|
function display_file($dir, $filename)
|
|
{
|
|
$path = storage_path("app/public/uploads/{$dir}/{$filename}");
|
|
|
|
if(!filled($filename)){
|
|
return '<p class="text-center">Belum ditambahkan.</p>';
|
|
}
|
|
|
|
if (!file_exists($path)) {
|
|
return '<p class="text-center">File tidak ditemukan.</p>';
|
|
}
|
|
|
|
$mimeType = mime_content_type($path);
|
|
$fileUrl = asset("storage/{$filename}");
|
|
|
|
if (str_contains($mimeType, 'image')) {
|
|
return "<img src='{$fileUrl}' alt='File Image' class='img-fluid'>";
|
|
} elseif ($mimeType === 'application/pdf') {
|
|
return "<iframe src='{$fileUrl}' width='100%' height='600px'></iframe>";
|
|
}
|
|
|
|
return '<p class="text-center">Format file tidak didukung</p>';
|
|
}
|
|
}
|