Implement strict Eloquent when developing

This commit is contained in:
Jonny Barnes 2022-11-24 21:44:57 +00:00
parent 5f82c82818
commit 3f4634710c
Signed by: jonny
SSH key fingerprint: SHA256:CTuSlns5U7qlD9jqHvtnVmfYV3Zwl2Z7WnJ4/dqOaL8
9 changed files with 19 additions and 15 deletions

View file

@ -53,7 +53,7 @@ class Handler extends ExceptionHandler
{ {
parent::report($throwable); parent::report($throwable);
if ($this->shouldReport($throwable)) { if (config('logging.slack') && $this->shouldReport($throwable)) {
$guzzle = new Client([ $guzzle = new Client([
'headers' => [ 'headers' => [
'Content-Type' => 'application/json', 'Content-Type' => 'application/json',

View file

@ -41,13 +41,14 @@ class NotesController extends Controller
/** /**
* Process a request to make a new note. * Process a request to make a new note.
* *
* @return \Illuminate\Http\RedirectResponse * @param Request $request
* @return RedirectResponse
*/ */
public function store(): RedirectResponse public function store(Request $request): RedirectResponse
{ {
Note::create([ Note::create([
'in-reply-to' => request()->input('in-reply-to'), 'in_reply_to' => $request->input('in-reply-to'),
'note' => request()->input('content'), 'note' => $request->input('content'),
]); ]);
return redirect('/admin/notes'); return redirect('/admin/notes');

View file

@ -111,7 +111,7 @@ class FeedsController extends Controller
*/ */
public function notesJson() public function notesJson()
{ {
$notes = Note::latest()->take(20)->get(); $notes = Note::latest()->with('media')->take(20)->get();
$data = [ $data = [
'version' => 'https://jsonfeed.org/version/1', 'version' => 'https://jsonfeed.org/version/1',
'title' => 'The JSON Feed for ' . config('app.display_name') . 's notes', 'title' => 'The JSON Feed for ' . config('app.display_name') . 's notes',

View file

@ -23,7 +23,7 @@ class FrontPageController extends Controller
return (new ActivityStreamsService())->siteOwnerResponse(); return (new ActivityStreamsService())->siteOwnerResponse();
} }
$notes = Note::latest()->get(); $notes = Note::latest()->with(['media', 'client', 'place'])->get();
$articles = Article::latest()->get(); $articles = Article::latest()->get();
$bookmarks = Bookmark::latest()->get(); $bookmarks = Bookmark::latest()->get();
$likes = Like::latest()->get(); $likes = Like::latest()->get();

View file

@ -141,7 +141,6 @@ class Note extends Model
* *
* @return array * @return array
*/ */
#[ArrayShape(['note' => 'null|string'])]
public function toSearchableArray(): array public function toSearchableArray(): array
{ {
return [ return [
@ -190,7 +189,7 @@ class Note extends Model
/** /**
* Provide the content_html for JSON feed. * Provide the content_html for JSON feed.
* *
* In particular we want to include media links such as images. * In particular, we want to include media links such as images.
* *
* @return string * @return string
*/ */

View file

@ -5,6 +5,7 @@ namespace App\Providers;
use App\Models\Note; use App\Models\Note;
use App\Observers\NoteObserver; use App\Observers\NoteObserver;
use Codebird\Codebird; use Codebird\Codebird;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@ -102,6 +103,9 @@ class AppServiceProvider extends ServiceProvider
->forceAttribute('a', 'rel', 'noopener nofollow') ->forceAttribute('a', 'rel', 'noopener nofollow')
); );
}); });
// Turn on Eloquent strict mode when developing
Model::shouldBeStrict(! $this->app->isProduction());
} }
/** /**

View file

@ -1 +1 @@
<span class="u-category h-card mini-h-card"><a class="u-url p-name" href="{{ $contact->homepage }}">{!! $contact->name !!}</a><span class="hovercard">@if ($contact->facebook)<a class="u-url" href="https://www.facebook.com/{{ $contact->facebook }}"><img class="social-icon" src="/assets/img/social-icons/facebook.svg"> {{ $contact->facebook_name ?: 'Facebook' }}</a>@endif @if ($contact->twitter)<a class="u-url" href="https://twitter.com/{{ $contact->twitter }}"><img class="social-icon" src="/assets/img/social-icons/twitter.svg"> {{ $contact->twitter }}</a>@endif<img class="u-photo" alt="" src="{{ $contact->photo }}"></span></span> <span class="u-category h-card mini-h-card"><a class="u-url p-name" href="{{ $contact->homepage }}">{!! $contact->name !!}</a><span class="hovercard">@if ($contact->facebook)<a class="u-url" href="https://www.facebook.com/{{ $contact->facebook }}"><img class="social-icon" src="/assets/img/social-icons/facebook.svg"> Facebook</a>@endif @if ($contact->twitter)<a class="u-url" href="https://twitter.com/{{ $contact->twitter }}"><img class="social-icon" src="/assets/img/social-icons/twitter.svg"> {{ $contact->twitter }}</a>@endif<img class="u-photo" alt="" src="{{ $contact->photo }}"></span></span>

View file

@ -9,10 +9,10 @@
<div class="e-content p-name"> <div class="e-content p-name">
{!! $note->note !!} {!! $note->note !!}
@foreach($note->media as $media) @foreach($note->media as $media)
@if($media->type == 'image') <a class="naked-link" href="{{ $media->url }}"><img class="u-photo" src="{{ $media->url }}" alt="" @if($media->image_widths !== null) srcset="{{ $media->url }} {{ $media->image_widths }}w, {{ $media->mediumurl }} 1000w, {{ $media->smallurl }} 500w" sizes="80vh"@endif></a>@endif @if($media->type === 'image') <a class="naked-link" href="{{ $media->url }}"><img class="u-photo" src="{{ $media->url }}" alt="" @if($media->image_widths !== null) srcset="{{ $media->url }} {{ $media->image_widths }}w, {{ $media->mediumurl }} 1000w, {{ $media->smallurl }} 500w" sizes="80vh"@endif></a>@endif
@if($media->type == 'audio') <audio class="u-audio" src="{{ $media->url }}" controls>@endif @if($media->type === 'audio') <audio class="u-audio" src="{{ $media->url }}" controls>@endif
@if($media->type == 'video') <video class="u-video" src="{{ $media->url }}" controls>@endif @if($media->type === 'video') <video class="u-video" src="{{ $media->url }}" controls>@endif
@if($media->type == 'download') <p><a class="u-attachment" href="{{ $media->url }}">Download the attached media</a></p>@endif @if($media->type === 'download') <p><a class="u-attachment" href="{{ $media->url }}">Download the attached media</a></p>@endif
@endforeach @endforeach
</div> </div>
@if ($note->twitter_content) @if ($note->twitter_content)
@ -25,7 +25,6 @@
<a class="u-url" href="/notes/{{ $note->nb60id }}"><time class="dt-published" datetime="{{ $note->iso8601 }}" title="{{ $note->iso8601 }}">{{ $note->humandiff }}</time></a>@if($note->client) via <a class="client" href="{{ $note->client->client_url }}">{{ $note->client->client_name }}</a>@endif <a class="u-url" href="/notes/{{ $note->nb60id }}"><time class="dt-published" datetime="{{ $note->iso8601 }}" title="{{ $note->iso8601 }}">{{ $note->humandiff }}</time></a>@if($note->client) via <a class="client" href="{{ $note->client->client_url }}">{{ $note->client->client_name }}</a>@endif
@if($note->place)@if($note->getOriginal('note')) in <span class="p-location h-card"><a class="p-name u-url" href="{{ $note->place->longurl }}">{{ $note->address }}</a><data class="p-latitude" value="{{ $note->place->latitude }}"></data><data class="p-longitude" value="{{ $note->place->longitude }}"></data></span>@endif @if($note->place)@if($note->getOriginal('note')) in <span class="p-location h-card"><a class="p-name u-url" href="{{ $note->place->longurl }}">{{ $note->address }}</a><data class="p-latitude" value="{{ $note->place->latitude }}"></data><data class="p-longitude" value="{{ $note->place->longitude }}"></data></span>@endif
@elseif($note->address) in <span class="p-location h-adr">{!! $note->address !!}<data class="p-latitude" value="{{ $note->latitude }}"></data><data class="p-longitude" value="{{ $note->longitude }}"></data></span>@endif @elseif($note->address) in <span class="p-location h-adr">{!! $note->address !!}<data class="p-latitude" value="{{ $note->latitude }}"></data><data class="p-longitude" value="{{ $note->longitude }}"></data></span>@endif
@if($note->replies_count > 0) @include('templates.replies-icon'): {{ $note->replies_count }}@endif
</div> </div>
<div class="syndication-links"> <div class="syndication-links">

View file

@ -41,6 +41,7 @@ class NotesTest extends TestCase
$this->actingAs($user)->post('/admin/notes', [ $this->actingAs($user)->post('/admin/notes', [
'content' => 'A new test note', 'content' => 'A new test note',
]); ]);
$this->assertDatabaseHas('notes', [ $this->assertDatabaseHas('notes', [
'note' => 'A new test note', 'note' => 'A new test note',
]); ]);