fedi-feed-router/app/Http/Controllers/FeedsController.php

90 lines
2.6 KiB
PHP
Raw Normal View History

2025-07-05 02:37:38 +02:00
<?php
namespace App\Http\Controllers;
use App\Models\Feed;
use Illuminate\Http\Request;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
class FeedsController extends Controller
{
public function index(): View
{
$feeds = Feed::orderBy('is_active', 'desc')
->orderBy('name')
->get();
return view('pages.feeds.index', compact('feeds'));
}
public function create(): View
{
return view('pages.feeds.create');
}
public function store(Request $request): RedirectResponse
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'url' => 'required|url|unique:feeds,url',
'type' => 'required|in:website,rss',
2025-07-06 11:22:53 +02:00
'language_id' => 'required|exists:languages,id',
2025-07-05 02:37:38 +02:00
'description' => 'nullable|string',
'is_active' => 'boolean'
]);
// Default is_active to true if not provided
$validated['is_active'] = $validated['is_active'] ?? true;
Feed::create($validated);
2025-07-06 11:22:53 +02:00
// Check if there's a redirect_to parameter for onboarding flow
$redirectTo = $request->input('redirect_to');
if ($redirectTo) {
return redirect($redirectTo)
->with('success', 'Feed created successfully!');
}
2025-07-05 02:37:38 +02:00
return redirect()->route('feeds.index')
->with('success', 'Feed created successfully!');
}
public function show(Feed $feed): View
{
return view('pages.feeds.show', compact('feed'));
}
public function edit(Feed $feed): View
{
return view('pages.feeds.edit', compact('feed'));
}
public function update(Request $request, Feed $feed): RedirectResponse
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'url' => 'required|url|unique:feeds,url,' . $feed->id,
'type' => 'required|in:website,rss',
2025-07-06 11:22:53 +02:00
'language_id' => 'required|exists:languages,id',
2025-07-05 02:37:38 +02:00
'description' => 'nullable|string',
'is_active' => 'boolean'
]);
// Default is_active to current value if not provided
$validated['is_active'] = $validated['is_active'] ?? $feed->is_active;
$feed->update($validated);
return redirect()->route('feeds.index')
->with('success', 'Feed updated successfully!');
}
public function destroy(Feed $feed): RedirectResponse
{
$feed->delete();
return redirect()->route('feeds.index')
->with('success', 'Feed deleted successfully!');
}
}