format('m-d'); // Month-Day format // Initialize player array if not existing if (!isset($dataPointsPerPlayer[$playername])) { $dataPointsPerPlayer[$playername] = []; } // Add to dataPoints for this player $dataPointsPerPlayer[$playername][] = [ "y" => $winplace, "label" => $label ]; } catch (Exception $e) { // Log or handle date parsing error error_log("Could not parse date '$createdTimestamp' in file: " . $filepath); continue; } } else { // Log or handle invalid JSON structure error_log("Invalid JSON structure or missing keys in file: " . $filepath); continue; } } closedir($handle); // Prepare data for the chart if processing was successful if (empty($dataError) && !empty($dataPointsPerPlayer)) { foreach ($dataPointsPerPlayer as $player => $dataPoints) { // Sort data points by label (date) for each player usort($dataPoints, function($a, $b) { return strcmp($a['label'], $b['label']); }); $chartData[] = [ 'type' => 'line', 'showInLegend' => true, 'legendText' => htmlspecialchars($player), // Escape player name for legend 'dataPoints' => $dataPoints ]; } // Encode the final chart data $encodedChartData = json_encode($chartData, JSON_NUMERIC_CHECK); if ($encodedChartData === false) { $dataError = "Failed to encode chart data into JSON."; $encodedChartData = '[]'; // Reset to empty array on encoding failure } } elseif (empty($dataError)) { $dataError = "No valid data found in '$directory' to generate chart."; } } } // Note: The original $dataPoints array with days of the week was unused, so it's removed. ?>