From f93b448b7f24ca4221ad0438b4d959faff93fca2 Mon Sep 17 00:00:00 2001
From: Alexandre <44178713+alexbelgium@users.noreply.github.com>
Date: Tue, 26 Nov 2024 10:05:22 +0100
Subject: [PATCH] Add table for new and rare species
---
scripts/overview.php | 133 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 133 insertions(+)
diff --git a/scripts/overview.php b/scripts/overview.php
index 3abc40e..aaad22a 100644
--- a/scripts/overview.php
+++ b/scripts/overview.php
@@ -313,6 +313,139 @@ if (get_included_files()[0] === __FILE__) {
+prepare("
+SELECT d_today.Com_Name, d_today.Sci_Name, d_today.Date, d_today.Time, d_today.Confidence, d_today.File_Name,
+ MAX(d_today.Confidence) as MaxConfidence,
+ (SELECT MAX(Date) FROM detections d_prev WHERE d_prev.Com_Name = d_today.Com_Name AND d_prev.Date < DATE('now', 'localtime')) as LastSeenDate,
+ (SELECT COUNT(*) FROM detections d_occ WHERE d_occ.Com_Name = d_today.Com_Name AND d_occ.Date = DATE('now', 'localtime') AND d_occ.Time >= d_today.Time) as OccurrenceCount
+FROM detections d_today
+WHERE d_today.Date = DATE('now', 'localtime')
+GROUP BY d_today.Com_Name
+");
+ensure_db_ok($statement);
+$result = $statement->execute();
+
+$new_species = [];
+$rare_species = [];
+$rare_species_threshold = isset($config['RARE_SPECIES_THRESHOLD']) ? $config['RARE_SPECIES_THRESHOLD'] : 30;
+while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
+ $last_seen_date = $row['LastSeenDate'];
+ if ($last_seen_date === NULL) {
+ $new_species[] = $row;
+ } else {
+ $date1 = new DateTime($last_seen_date);
+ $date2 = new DateTime('now');
+ $interval = $date1->diff($date2);
+ $days_ago = $interval->days;
+ if ($days_ago > $rare_species_threshold) {
+ $row['DaysAgo'] = $days_ago;
+ $rare_species[] = $row;
+ }
+ }
+}
+
+if (!isset($_SESSION['images'])) {
+ $_SESSION['images'] = [];
+}
+$flickr = null;
+
+function display_species($species_list, $title, $show_last_seen=false) {
+ global $config, $_SESSION, $flickr;
+ $species_count = count($species_list);
+ if ($species_count > 0): ?>
+
+
detected today!
+ 5): ?>
+
+
+
+ get_uid_from_db()['uid']) {
+ unset($_SESSION['images']);
+ $_SESSION["FLICKR_FILTER_EMAIL"] = $flickr->get_uid_from_db()['uid'];
+ }
+
+ // Check if the Flickr image has been cached in the session
+ $key = array_search($comname, array_column($_SESSION['images'], 0));
+ if ($key !== false) {
+ $image = $_SESSION['images'][$key];
+ } else {
+ // Retrieve the image from Flickr API and cache it
+ $flickr_cache = $flickr->get_image($todaytable['Sci_Name']);
+ array_push($_SESSION["images"], array($comname, $flickr_cache["image_url"], $flickr_cache["title"], $flickr_cache["photos_url"], $flickr_cache["author_url"], $flickr_cache["license_url"]));
+ $image = $_SESSION['images'][count($_SESSION['images']) - 1];
+ }
+ $image_url = $image[1] ?? ""; // Get the image URL if available
+ }
+
+ if ($show_last_seen && isset($todaytable['DaysAgo'])) {
+ $days_ago = $todaytable['DaysAgo'];
+ if ($days_ago > 30) {
+ $months_ago = floor($days_ago / 30);
+ $last_seen_text = "
Last: {$months_ago}mo ago";
+ } else {
+ $last_seen_text = "
Last: {$days_ago}d ago";
+ }
+
+ }
+
+ $time_occurrence_text = "
{$todaytable['Time']}";
+ if (isset($todaytable['OccurrenceCount']) && $todaytable['OccurrenceCount'] > 1) {
+ $time_occurrence_text .= " ({$todaytable['OccurrenceCount']}x)";
+ }
+ ?>
+
+
+
+ |
+
+
+ |
+ Confidence:
|
+
+
+
+
+
+