1
0
Fork 0
pixelfed/app/Http/Controllers/BookmarkController.php

58 lines
1.5 KiB
PHP
Raw Normal View History

2018-05-31 21:56:46 +00:00
<?php
namespace App\Http\Controllers;
2018-08-28 03:07:36 +00:00
use App\Bookmark;
use App\Status;
2018-05-31 21:56:46 +00:00
use Auth;
use Illuminate\Http\Request;
2022-01-29 01:27:53 +00:00
use App\Services\BookmarkService;
2023-01-19 13:37:24 +00:00
use App\Services\FollowerService;
2018-05-31 21:56:46 +00:00
class BookmarkController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function store(Request $request)
{
$this->validate($request, [
2018-08-28 03:07:36 +00:00
'item' => 'required|integer|min:1',
2018-05-31 21:56:46 +00:00
]);
$profile = Auth::user()->profile;
$status = Status::findOrFail($request->input('item'));
2023-01-19 13:37:24 +00:00
abort_if(!in_array($status->scope, ['public', 'unlisted', 'private']), 404);
if($status->scope == 'private') {
abort_if(
$profile->id !== $status->profile_id && !FollowerService::follows($profile->id, $status->profile_id),
404,
'Error: Cannot bookmark private posts from accounts you do not follow.'
);
}
2018-05-31 21:56:46 +00:00
$bookmark = Bookmark::firstOrCreate(
2018-08-05 19:18:33 +00:00
['status_id' => $status->id], ['profile_id' => $profile->id]
2018-05-31 21:56:46 +00:00
);
2018-08-28 03:07:36 +00:00
if (!$bookmark->wasRecentlyCreated) {
2022-01-29 01:27:53 +00:00
BookmarkService::del($profile->id, $status->id);
2018-08-05 19:18:33 +00:00
$bookmark->delete();
2022-01-29 01:27:53 +00:00
} else {
BookmarkService::add($profile->id, $status->id);
2018-08-05 19:18:33 +00:00
}
2018-08-28 03:07:36 +00:00
if ($request->ajax()) {
$response = ['code' => 200, 'msg' => 'Bookmark saved!'];
} else {
$response = redirect()->back();
}
2018-05-31 21:56:46 +00:00
2018-08-28 03:07:36 +00:00
return $response;
}
2018-05-31 21:56:46 +00:00
}