Files
citrus-cms/app/Functions/report-builder-functions.php
T
2026-04-28 21:14:25 +03:00

85 lines
2.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
use Carbon\Carbon;
function logProcessInfo($message, $data = [], $type = 'info') {
$logData = [
'timestamp' => now()->format('Y-m-d H:i:s'),
'message' => $message,
'memory_usage' => round(memory_get_usage() / 1024 / 1024, 2) . ' MB',
'data' => $data
];
switch ($type) {
case 'error':
Log::error($message, $logData);
break;
case 'warning':
Log::warning($message, $logData);
break;
case 'info':
Log::info($message, $logData);
break;
default:
Log::debug($message, $logData);
}
}
/**
* Sütun adında "date" geçen alanları Carbon ile formatlayan fonksiyon
* @param array|object $data Formatlanacak veri
* @param string $format Tarih formatı (default: d.m.Y)
* @return array|object Formatlanmış veri
*/
function formatDateColumns($data, $format = 'd.m.Y') {
// Veri tipini kontrol et
if (!is_array($data) && !is_object($data)) {
return $data;
}
// Array'e çevir
$dataArray = is_object($data) ? (array)$data : $data;
$modified = false;
foreach ($dataArray as $field => $value) {
// Eğer sütun adında "date" kelimesi varsa ve değer boş değilse
if (stripos($field, 'date') !== false && !empty($value) && $value !== null) {
// Zaten formatlanmış mı kontrol et (dd.mm.yyyy formatında)
if (preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $value)) {
continue; // Zaten doğru formatta
}
try {
// Carbon ile tarihi parse et
$carbonDate = Carbon::parse($value);
// Geçerli bir tarih mi kontrol et
if ($carbonDate->isValid()) {
$dataArray[$field] = $carbonDate->format($format);
$modified = true;
}
} catch (Exception $e) {
// Tarih parse edilemezse orijinal değeri koru
continue;
}
}
}
// Sadece değişiklik varsa yeni obje/array oluştur
if ($modified) {
return is_object($data) ? (object)$dataArray : $dataArray;
}
return $data;
}
function mb_str_replace($search, $replace, $subject) {
return implode($replace, explode($search, $subject, 2));
}
function replacePlaceholdersFileName($template, $data) {
return preg_replace_callback('/\{(\w+)\}/', function ($matches) use ($data) {
$key = $matches[1]; // Süslü parantez içindeki anahtar
return $data[$key] ?? $matches[0]; // Anahtar varsa değeri, yoksa orijinal metni döndür
}, $template);
}
?>