Add table for new and rare species
This commit is contained in:
@@ -313,6 +313,139 @@ if (get_included_files()[0] === __FILE__) {
|
||||
<div class="right-column">
|
||||
<div class="center-column">
|
||||
</div>
|
||||
<?php
|
||||
$statement = $db->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): ?>
|
||||
<div class="<?php echo strtolower(str_replace(' ', '_', $title)); ?>">
|
||||
<h2 style="text-align:center;"><?php echo $species_count; ?> <?php echo strtolower($title); ?> detected today!</h2>
|
||||
<?php if ($species_count > 5): ?>
|
||||
<table><tr><td style="text-align:center;"><form action="" method="GET"><input type="hidden" name="view" value="Recordings"><button type="submit" name="date" value="<?php echo date('Y-m-d');?>">Open Today's recordings page</button></form></td></tr></table>
|
||||
<?php else: ?>
|
||||
<table>
|
||||
<?php
|
||||
$iterations = 0;
|
||||
foreach($species_list as $todaytable):
|
||||
$iterations++;
|
||||
$comname = preg_replace('/ /', '_', $todaytable['Com_Name']);
|
||||
$comname = preg_replace('/\'/', '', $comname);
|
||||
$comnamegraph = str_replace("'", "\'", $todaytable['Com_Name']);
|
||||
$filename = "/By_Date/".$todaytable['Date']."/".$comname."/".$todaytable['File_Name'];
|
||||
$filename_formatted = $todaytable['Date']."/".$comname."/".$todaytable['File_Name'];
|
||||
$sciname = preg_replace('/ /', '_', $todaytable['Sci_Name']);
|
||||
$engname = get_com_en_name($todaytable['Sci_Name']);
|
||||
$engname_url = str_replace("'", '', str_replace(' ', '_', $engname));
|
||||
$info_url = get_info_url($todaytable['Sci_Name']);
|
||||
$url = $info_url['URL'];
|
||||
$url_title = $info_url['TITLE'];
|
||||
|
||||
$image_url = ""; // Default empty image URL
|
||||
|
||||
if (!empty($config["FLICKR_API_KEY"])) {
|
||||
if ($flickr === null) {
|
||||
$flickr = new Flickr();
|
||||
}
|
||||
if (isset($_SESSION["FLICKR_FILTER_EMAIL"]) && $_SESSION["FLICKR_FILTER_EMAIL"] !== $flickr->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 = "<br><i>Last: {$months_ago}mo ago</i>";
|
||||
} else {
|
||||
$last_seen_text = "<br><i>Last: {$days_ago}d ago</i>";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$time_occurrence_text = "<br>{$todaytable['Time']}";
|
||||
if (isset($todaytable['OccurrenceCount']) && $todaytable['OccurrenceCount'] > 1) {
|
||||
$time_occurrence_text .= " ({$todaytable['OccurrenceCount']}x)";
|
||||
}
|
||||
?>
|
||||
<tr class="relative" id="<?php echo $iterations; ?>">
|
||||
<td><?php if (!empty($image_url)): ?>
|
||||
<img onclick='setModalText(<?php echo $iterations; ?>,"<?php echo urlencode($image[2]); ?>", "<?php echo $image[3]; ?>", "<?php echo $image[4]; ?>", "<?php echo $image[1]; ?>", "<?php echo $image[5]; ?>")' src="<?php echo $image_url; ?>" style="max-width: none; height: 50px; width: 50px; border-radius: 5px; cursor: pointer;" class="img1" title="Image from Flickr" />
|
||||
<?php endif; ?></td>
|
||||
<td id="recent_detection_middle_td">
|
||||
<div><form action="" method="GET">
|
||||
<input type="hidden" name="view" value="Species Stats">
|
||||
<button class="a2" type="submit" name="species" value="<?php echo $todaytable['Com_Name']; ?>"><?php echo $todaytable['Com_Name']; ?></button>
|
||||
<br><i><?php echo $todaytable['Sci_Name']; ?><br>
|
||||
<a href="<?php echo $url; ?>" target="_blank"><img style="height: 1em;cursor:pointer;float:unset;display:inline" title="<?php echo $url_title; ?>" src="images/info.png" width="25"></a>
|
||||
<a href="https://wikipedia.org/wiki/<?php echo $sciname; ?>" target="_blank"><img style="height: 1em;cursor:pointer;float:unset;display:inline" title="Wikipedia" src="images/wiki.png" width="25"></a>
|
||||
<?php if ($show_last_seen): ?>
|
||||
<img style="height: 1em;cursor:pointer;float:unset;display:inline" title="View species stats" onclick="generateMiniGraph(this, '<?php echo $comnamegraph; ?>', 160)" width="25" src="images/chart.svg">
|
||||
<?php endif; ?>
|
||||
<a target="_blank" href="index.php?filename=<?php echo $todaytable['File_Name']; ?>"><img style="height: 1em;cursor:pointer;float:unset;display:inline" class="copyimage-mobile" title="Open in new tab" width="16" src="images/copy.png"></a>
|
||||
</i>
|
||||
</form></div>
|
||||
</td>
|
||||
<td style="white-space: nowrap;">Confidence: <?php echo round($todaytable['Confidence'] * 100 ) . '%'; echo $last_seen_text; echo $time_occurrence_text; ?><br></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endif;
|
||||
}
|
||||
|
||||
display_species($new_species, 'New Species');
|
||||
display_species($rare_species, 'Rare Species', true);
|
||||
?>
|
||||
<div class="chart">
|
||||
<?php
|
||||
$refresh = $config['RECORDING_LENGTH'];
|
||||
|
||||
Reference in New Issue
Block a user