pixelfed/app/Http/Controllers/FollowerController.php

53 lines
1.5 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
2018-08-28 03:07:36 +00:00
use App\Follower;
use App\FollowRequest;
2018-08-28 03:07:36 +00:00
use App\Jobs\FollowPipeline\FollowPipeline;
use App\Profile;
2018-05-30 02:59:10 +00:00
use Auth;
use Illuminate\Http\Request;
class FollowerController extends Controller
{
2018-05-30 02:59:10 +00:00
public function __construct()
{
2018-08-28 03:07:36 +00:00
$this->middleware('auth');
2018-05-30 02:59:10 +00:00
}
public function store(Request $request)
{
2018-08-28 03:07:36 +00:00
$this->validate($request, [
'item' => 'required|integer',
]);
$item = $request->input('item');
$this->handleFollowRequest($item);
return redirect()->back();
}
2018-05-30 02:59:10 +00:00
protected function handleFollowRequest($item)
{
2018-08-28 03:07:36 +00:00
$user = Auth::user()->profile;
$target = Profile::where('id', '!=', $user->id)->findOrFail($item);
$private = (bool) $target->is_private;
2018-08-28 03:07:36 +00:00
$isFollowing = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->count();
2018-05-30 02:59:10 +00:00
2018-09-02 05:25:06 +00:00
if($private == true && $isFollowing == 0) {
2018-09-03 04:00:31 +00:00
$follow = FollowRequest::firstOrCreate([
'follower_id' => $user->id,
'following_id' => $target->id
]);
} elseif ($isFollowing == 0) {
2018-08-28 03:07:36 +00:00
$follower = new Follower();
$follower->profile_id = $user->id;
$follower->following_id = $target->id;
$follower->save();
FollowPipeline::dispatch($follower);
} else {
$follower = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->firstOrFail();
$follower->delete();
}
2018-05-30 02:59:10 +00:00
}
}