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:
+ +
+