From eca0cf48ffa289ffa319c2f5f580ec2b0a523303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20Fefli=C5=84ski?= Date: Tue, 27 Jan 2026 12:49:49 +0100 Subject: [PATCH] Shortcode --- moje-statystyki.php | 200 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/moje-statystyki.php b/moje-statystyki.php index df4301d..e9e00fd 100644 --- a/moje-statystyki.php +++ b/moje-statystyki.php @@ -822,3 +822,203 @@ function mystat_render_history_table() { + + current_time( 'Y' ), + 'month' => current_time( 'n' ), + ), $atts, 'moje_statystyki' ); + + $year = intval( $atts['year'] ); + $month = intval( $atts['month'] ); + + // Pobieranie danych z bazy + $table_activities = $wpdb->prefix . 'mystat_activities'; + $sql = $wpdb->prepare(" + SELECT a.*, c.name as category_name, eq.name as equipment_name + FROM $table_activities a + LEFT JOIN {$wpdb->prefix}mystat_categories c ON a.category_id = c.id + LEFT JOIN {$wpdb->prefix}mystat_equipment eq ON a.equipment_id = eq.id + WHERE YEAR(a.date) = %d AND MONTH(a.date) = %d + ORDER BY a.date ASC + ", $year, $month); + + $activities = $wpdb->get_results( $sql ); + + // Obliczanie podsumowań + $total_distance = 0; + $total_seconds = 0; + foreach ($activities as $activity) { + $total_distance += $activity->distance; + if ( ! empty( $activity->duration ) ) { + list($h, $m, $s) = explode(':', $activity->duration); + $total_seconds += $h * 3600 + $m * 60 + $s; + } + } + $hours = floor($total_seconds / 3600); + $minutes = floor(($total_seconds % 3600) / 60); + $total_duration_formatted = sprintf('%d godz. %d min.', $hours, $minutes); + + // Rozpoczęcie buforowania wyjścia + ob_start(); + ?> +
+ +

Podsumowanie miesiąca

+ + + + + + + + + + + + + +
Całkowity dystansCałkowity czas
km
+ +

Lista aktywności

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DataTytułKategoriaDystansCzasSprzęt
date ) ) ); ?>title ); ?>category_name ); ?>distance, 2, ',', ' ' ); ?> kmduration ); ?>equipment_name ); ?>
Brak aktywności w tym miesiącu.
+
+ + + + 0, + ), $atts, 'moje_statystyki_wpis' ); + + $activity_id = intval( $atts['id'] ); + + if ( $activity_id === 0 ) { + return '

Błąd: Nie podano ID wpisu w shortcode.

'; + } + + // Pobieranie danych z bazy + $table_activities = $wpdb->prefix . 'mystat_activities'; + $sql = $wpdb->prepare(" + SELECT a.*, c.name as category_name, et.name as event_type_name, eq.name as equipment_name + FROM $table_activities a + LEFT JOIN {$wpdb->prefix}mystat_categories c ON a.category_id = c.id + LEFT JOIN {$wpdb->prefix}mystat_event_types et ON a.event_type_id = et.id + LEFT JOIN {$wpdb->prefix}mystat_equipment eq ON a.equipment_id = eq.id + WHERE a.id = %d + ", $activity_id); + + $activity = $wpdb->get_row( $sql ); + + if ( ! $activity ) { + return '

Błąd: Nie znaleziono wpisu o ID ' . esc_html($activity_id) . '.

'; + } + + // Funkcja pomocnicza do wyświetlania wiersza + $render_row = function($label, $value, $unit = '') { + if ( ! is_null($value) && $value !== '' && $value != 0) { + echo ''; + echo '' . esc_html($label) . ''; + echo '' . esc_html($value) . ($unit ? ' ' . esc_html($unit) : '') . ''; + echo ''; + } + }; + + ob_start(); + ?> +
+

title ); ?>

+

date ) ) ); ?>

+ + + + distance, 2, ',', ' '), 'km'); ?> + duration); ?> + avg_speed, 1, ',', ' '), 'km/h'); ?> + total_elevation_gain, 'm'); ?> + category_name); ?> + equipment_name); ?> + strava_url ) ) : ?> + + + +
StravaZobacz aktywność
+
+ +