|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
|
|
namespace App\Jobs\StatusPipeline;
|
|
|
|
|
|
|
|
|
|
use Cache;
|
|
|
|
|
use DB, Cache;
|
|
|
|
|
use App\{
|
|
|
|
|
Hashtag,
|
|
|
|
|
Media,
|
|
|
|
@ -68,12 +68,14 @@ class StatusEntityLexer implements ShouldQueue
|
|
|
|
|
|
|
|
|
|
public function storeEntities()
|
|
|
|
|
{
|
|
|
|
|
$status = $this->status;
|
|
|
|
|
$this->storeHashtags();
|
|
|
|
|
$this->storeMentions();
|
|
|
|
|
$status->rendered = $this->autolink;
|
|
|
|
|
$status->entities = json_encode($this->entities);
|
|
|
|
|
$status->save();
|
|
|
|
|
DB::transaction(function () {
|
|
|
|
|
$status = $this->status;
|
|
|
|
|
$status->rendered = $this->autolink;
|
|
|
|
|
$status->entities = json_encode($this->entities);
|
|
|
|
|
$status->save();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function storeHashtags()
|
|
|
|
@ -82,17 +84,15 @@ class StatusEntityLexer implements ShouldQueue
|
|
|
|
|
$status = $this->status;
|
|
|
|
|
|
|
|
|
|
foreach($tags as $tag) {
|
|
|
|
|
$slug = str_slug($tag);
|
|
|
|
|
|
|
|
|
|
$htag = Hashtag::firstOrCreate(
|
|
|
|
|
['name' => $tag],
|
|
|
|
|
['slug' => $slug]
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
StatusHashtag::firstOrCreate(
|
|
|
|
|
['status_id' => $status->id],
|
|
|
|
|
['hashtag_id' => $htag->id]
|
|
|
|
|
);
|
|
|
|
|
DB::transaction(function () use ($status, $tag) {
|
|
|
|
|
$slug = str_slug($tag);
|
|
|
|
|
$hashtag = Hashtag::firstOrCreate(
|
|
|
|
|
['name' => $tag, 'slug' => $slug]
|
|
|
|
|
);
|
|
|
|
|
StatusHashtag::firstOrCreate(
|
|
|
|
|
['status_id' => $status->id, 'hashtag_id' => $hashtag->id]
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -102,16 +102,18 @@ class StatusEntityLexer implements ShouldQueue
|
|
|
|
|
$status = $this->status;
|
|
|
|
|
|
|
|
|
|
foreach($mentions as $mention) {
|
|
|
|
|
$mentioned = Profile::whereUsername($mention)->first();
|
|
|
|
|
$mentioned = Profile::whereUsername($mention)->firstOrFail();
|
|
|
|
|
|
|
|
|
|
if(empty($mentioned) || !isset($mentioned->id)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$m = new Mention;
|
|
|
|
|
$m->status_id = $status->id;
|
|
|
|
|
$m->profile_id = $mentioned->id;
|
|
|
|
|
$m->save();
|
|
|
|
|
|
|
|
|
|
DB::transaction(function () use ($status, $mentioned) {
|
|
|
|
|
$m = new Mention;
|
|
|
|
|
$m->status_id = $status->id;
|
|
|
|
|
$m->profile_id = $mentioned->id;
|
|
|
|
|
$m->save();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
MentionPipeline::dispatch($status, $m);
|
|
|
|
|
}
|
|
|
|
|