12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\MediaTag;
- use App\Profile;
- use App\UserFilter;
- use App\User;
- use Illuminate\Support\Str;
- class MediaTagController extends Controller
- {
- public function usernameLookup(Request $request)
- {
- abort_if(!$request->user(), 403);
- $this->validate($request, [
- 'q' => 'required|string|min:1|max:50'
- ]);
- $q = $request->input('q');
- if(Str::of($q)->startsWith('@')) {
- if(strlen($q) < 3) {
- return [];
- }
- $q = mb_substr($q, 1);
- }
- $blocked = UserFilter::whereFilterableType('App\Profile')
- ->whereFilterType('block')
- ->whereFilterableId($request->user()->profile_id)
- ->pluck('user_id');
- $blocked->push($request->user()->profile_id);
- $results = Profile::select('id','domain','username')
- ->whereNotIn('id', $blocked)
- ->whereNull('domain')
- ->where('username','like','%'.$q.'%')
- ->limit(15)
- ->get()
- ->map(function($r) {
- return [
- 'id' => (string) $r->id,
- 'name' => $r->username,
- 'privacy' => true,
- 'avatar' => $r->avatarUrl()
- ];
- });
- return $results;
- }
- }
|