Where-in-the-World-is-Ben/resources/views/partials/checkins-list.blade.php
2023-07-20 23:07:28 +00:00

79 lines
3.9 KiB
PHP

@foreach($checkinsList as $checkin)
<li>
@php
$hasEmbed = null;
$embedMissing = null;
if (preg_match("/\[\[([^\]]+)\]\]/", $checkin->note, $filepath)) {
if (preg_match("/\.webm/", $filepath[1])) {
$hasEmbed = 'videos';
$trip_slug = preg_replace( '/[^A-Za-z0-9-]+/', '-', strtolower( $trip->name ) );
if (file_exists(public_path() . "/" . $trip_slug . "/" . $hasEmbed . "/" . $filepath[1])) {
$path = "/" . $trip_slug . "/" .$hasEmbed . "/" . $filepath[1];
$embed = '<video class="popup__video" controls>';
$embed .= '<source src="' . url( $path ) . '" type="video/webm">';
$embed .= '<p>Your client doesn\'t support HTML video. Here is a <a href="' . url( $path ) . '">link to the video</a> instead.</p>';
$embed .= '</video>';
if (isset($email)) {
$embed .= '<p><i>If your email client doesn\'t support video embeds, here is a <a href="' . url( $path ) . '">link to the file</a> instead.</i></p>';
}
} else {
$embed = '<p>[The video \'' . $filepath[1] . '\' has not yet been uploaded, try again later.]</p>';
$embedMissing = true;
}
} elseif (preg_match("/\.ogg/", $filepath[1])) {
$hasEmbed = 'audio';
$trip_slug = preg_replace( '/[^A-Za-z0-9-]+/', '-', strtolower( $trip->name ) );
if (file_exists(public_path() . "/" . $trip_slug . "/" . $hasEmbed . "/" . $filepath[1])) {
$path = "/" . $trip_slug . "/" .$hasEmbed . "/" . $filepath[1];
$embed = '<audio class="popup__audio" controls>';
$embed .= '<source src="' . url( $path ) . '" type="audio/ogg">';
$embed .= '<p>Download <a href="' . url( $path ) . '">OGG</a> audio.</p>';
$embed .= '</audio>';
if (isset($email)) {
$embed .= '<p><i>If your email client doesn\' support audio embeds, here is a <a href="' . url( $path ) . '">link to the file</a> instead.</i></p>';
}
} else {
$embed = '<p>[The recording \'' . $filepath[1] . '\' has not yet been uploaded, try again later.]</p>';
$embedMissing = true;
}
}
$checkin->note = preg_replace("/\[\[[^\]]+\]\]/", $embed, $checkin->note);
}
@endphp
<details class="checkin" id="{{ $checkin->id }}" ontoggle="toggleCheckin(this.open, this.id)">
<summary class="checkin__summary">
<h2 class="checkin__title">
{!! $checkin->title ?? "<i>Untitled</i>" !!}
@if($checkin->image_url)
<span class="checkin-icon">🖼️</span>
@endif
@if($hasEmbed)
@if($hasEmbed === 'videos')
<span class="checkin-icon @if($embedMissing) checkin-icon--missing @endif">&#128249;</span>
@endif
@if($hasEmbed === 'audio')
<span class="checkin-icon @if($embedMissing) checkin-icon--missing @endif">&#128264;</span>
@endif
@endif
</h2>
<p class="checkin__meta">{!! render_date_difference($checkin->date) !!}</p>
</summary>
@if($checkin->note)
@if($checkin->id === 3930)
@include('partials.abolition-checkin')
@else
{!! $checkin->note !!}
@endif
@endif
@if($checkin->image_url)
<img class="popup__image" loading="lazy" src="{{ $checkin->image_url }}">
@endif
</details>
</li>
@endforeach