'info', 'error' => 'error', 'warning' => 'warning' ]; $data = []; foreach ( $rows as $row ) { $message = (string) ( $row['message'] ?? '' ); if ( mb_strlen( $message ) > 120 ) { $message = mb_substr( $message, 0, 120 ) . '...'; } $client_label = ''; if ( !empty( $row['client_name'] ) ) { $client_label = htmlspecialchars( (string) $row['client_name'], ENT_QUOTES, 'UTF-8' ); } else if ( !empty( $row['client_id'] ) ) { $client_label = 'ID: ' . (int) $row['client_id']; } else { $client_label = '-'; } $data[] = [ (string) ( $row['date_add'] ?? '' ), $level_badges[ $row['level'] ] ?? htmlspecialchars( (string) $row['level'], ENT_QUOTES, 'UTF-8' ), htmlspecialchars( (string) ( $row['source'] ?? '' ), ENT_QUOTES, 'UTF-8' ), $client_label, htmlspecialchars( $message, ENT_QUOTES, 'UTF-8' ), '' ]; } echo json_encode( [ 'draw' => $draw, 'recordsTotal' => $total, 'recordsFiltered' => $total, 'data' => $data ] ); exit; } static public function get_detail() { $id = (int) \S::get( 'id' ); if ( $id <= 0 ) { echo json_encode( [ 'success' => false, 'message' => 'Nieprawidlowe ID.' ] ); exit; } $log = \factory\Logs::get_one( $id ); if ( !$log ) { echo json_encode( [ 'success' => false, 'message' => 'Wpis nie znaleziony.' ] ); exit; } $context = null; if ( !empty( $log['context_json'] ) ) { $decoded = json_decode( $log['context_json'], true ); if ( $decoded !== null ) { $context = json_encode( $decoded, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_INVALID_UTF8_SUBSTITUTE ); } else { $context = $log['context_json']; } } $response = json_encode( [ 'success' => true, 'log' => [ 'id' => (int) $log['id'], 'level' => $log['level'], 'source' => $log['source'], 'client_name' => $log['client_name'] ?? '', 'client_id' => $log['client_id'], 'message' => $log['message'], 'context' => $context, 'date_add' => $log['date_add'] ] ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE | JSON_PARTIAL_OUTPUT_ON_ERROR ); if ( $response === false ) { echo json_encode( [ 'success' => false, 'message' => 'Blad kodowania JSON: ' . json_last_error_msg() ] ); exit; } echo $response; exit; } }