diff --git a/app/Services/FollowerService.php b/app/Services/FollowerService.php index a96773cae..3ea3d8ddc 100644 --- a/app/Services/FollowerService.php +++ b/app/Services/FollowerService.php @@ -4,6 +4,7 @@ namespace App\Services; use Illuminate\Support\Facades\Redis; use Cache; +use DB; use App\{ Follower, Profile, @@ -12,6 +13,7 @@ use App\{ class FollowerService { + const CACHE_KEY = 'pf:services:followers:'; const FOLLOWING_KEY = 'pf:services:follow:following:id:'; const FOLLOWERS_KEY = 'pf:services:follow:followers:id:'; @@ -87,4 +89,29 @@ class FollowerService }); } + public static function mutualCount($pid, $mid) + { + return Cache::remember(self::CACHE_KEY . ':mutualcount:' . $pid . ':' . $mid, 3600, function() use($pid, $mid) { + return DB::table('followers as u') + ->join('followers as s', 'u.following_id', '=', 's.following_id') + ->where('s.profile_id', $mid) + ->where('u.profile_id', $pid) + ->count(); + }); + } + + public static function mutualIds($pid, $mid, $limit = 3) + { + $key = self::CACHE_KEY . ':mutualids:' . $pid . ':' . $mid . ':limit_' . $limit; + return Cache::remember($key, 3600, function() use($pid, $mid, $limit) { + return DB::table('followers as u') + ->join('followers as s', 'u.following_id', '=', 's.following_id') + ->where('s.profile_id', $mid) + ->where('u.profile_id', $pid) + ->limit($limit) + ->pluck('s.following_id') + ->toArray(); + }); + } + } diff --git a/app/Util/Sentiment/Bouncer.php b/app/Util/Sentiment/Bouncer.php index 4e1983334..45e002952 100644 --- a/app/Util/Sentiment/Bouncer.php +++ b/app/Util/Sentiment/Bouncer.php @@ -55,7 +55,6 @@ class Bouncer { } if( $status->profile->created_at->gt(now()->subMonths(6)) && - $status->profile->status_count < 2 && $status->profile->bio && $status->profile->website ) {