diff --git a/app/Controllers/Api/Images/Stats.php b/app/Controllers/Api/Images/Stats.php index deb9d64..911a8d7 100644 --- a/app/Controllers/Api/Images/Stats.php +++ b/app/Controllers/Api/Images/Stats.php @@ -1,77 +1,74 @@ 0, - "23.06.2024" => 0, - "24.06.2024" => 0, - "25.06.2024" => 0, - "26.06.2024" => 0, - "27.06.2024" => 0, - "28.06.2024" => 0, - "29.06.2024" => 0, - "30.06.2024" => 0, - "01.07.2024" => 0, - "02.07.2024" => 0, - "03.07.2024" => 0, - "04.07.2024" => 0, - "05.07.2024" => 0, - "06.07.2024" => 0, - "07.07.2024" => 0, - "08.07.2024" => 0, - "09.07.2024" => 0, - "10.07.2024" => 0, - "11.07.2024" => 0, - "12.07.2024" => 0, - "13.07.2024" => 0, - "14.07.2024" => 0, - "15.07.2024" => 292, - "16.07.2024" => 292, - "17.07.2024" => 154, - "18.07.2024" => 892, - "19.07.2024" => 606, - "20.07.2024" => 0010, - "21.07.2024" => 0 - ]; - + + $results = DB::query("SELECT DATE_FORMAT(FROM_UNIXTIME(time), '%d.%m.%Y') AS date, COUNT(*) AS views FROM photos_views WHERE photo_id = :photo_id AND time >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)) GROUP BY DATE_FORMAT(FROM_UNIXTIME(time), '%d.%m.%Y') ORDER BY date ASC;", array(':photo_id' => $_GET['id'])); + + + $data = []; + $period = new \DatePeriod( + new \DateTime('-30 days'), + new \DateInterval('P1D'), + new \DateTime('tomorrow') + ); + + foreach ($period as $date) { + $formattedDate = $date->format('d.m.Y'); + $data[$formattedDate] = 0; + } + + foreach ($results as $result) { + $date = $result['date']; + if (isset($data[$date])) { + $data[$date] = $result['views']; + } + } + + + + + $barWidth = 20; $barSpacing = 10; $maxBarHeight = $imageHeight - 110; $maxValue = max($data); - + if ($maxValue === 0) { + $maxValue = 1; + } + $x = 50; foreach ($data as $date => $value) { $barHeight = ($value / $maxValue) * $maxBarHeight; $y = $imageHeight - 70 - $barHeight; imagefilledrectangle($image, $x, $y, $x + $barWidth, $imageHeight - 70, $barColor); - imagettftext($image, 13, 0, $x + 2, $y - 10, $textColor, $_SERVER['DOCUMENT_ROOT'].'/static/TTCommons-Medium.ttf', $value); - imagettftext($image, 10, 90, $x + 15, $imageHeight - 0, $textColor, $_SERVER['DOCUMENT_ROOT'].'/static/TTCommons-Medium.ttf', $date); // Rotated date + imagettftext($image, 13, 0, $x + 2, $y - 10, $textColor, $_SERVER['DOCUMENT_ROOT'] . '/static/TTCommons-Medium.ttf', $value); + imagettftext($image, 10, 90, $x + 15, $imageHeight - 0, $textColor, $_SERVER['DOCUMENT_ROOT'] . '/static/TTCommons-Medium.ttf', $date); // Rotated date $x += $barWidth + $barSpacing; } imageline($image, 50, $imageHeight - 70, $imageWidth - 50, $imageHeight - 70, $axisColor); imageline($image, 50, 50, 50, $imageHeight - 70, $axisColor); - + header('Content-Type: image/png'); imagepng($image); imagedestroy($image); - } } -?> diff --git a/views/pages/PhotoExt.php b/views/pages/PhotoExt.php index 33e62a3..47fbef6 100644 --- a/views/pages/PhotoExt.php +++ b/views/pages/PhotoExt.php @@ -61,70 +61,13 @@ $photo = new \App\Models\Photo($_GET['id']); +