parent = $parent; $this->status = $status; } /** * Execute the job. * * @return void */ public function handle() { $profile = $this->status->profile; $status = $this->status; $parent = $this->parent; $parent->reply_count = GroupComment::whereStatusId($parent->id)->count(); $parent->save(); if ($profile->no_autolink == false) { $this->parseEntities(); } } public function parseEntities() { $this->extractEntities(); } public function extractEntities() { $this->entities = Extractor::create()->extract($this->status->caption); $this->autolinkStatus(); } public function autolinkStatus() { $this->autolink = Autolink::create()->autolink($this->status->caption); $this->storeHashtags(); } public function storeHashtags() { $tags = array_unique($this->entities['hashtags']); $status = $this->status; foreach ($tags as $tag) { if (mb_strlen($tag) > 124) { continue; } DB::transaction(function () use ($status, $tag) { $hashtag = GroupHashtag::firstOrCreate([ 'name' => $tag, ]); GroupPostHashtag::firstOrCreate( [ 'status_id' => $status->id, 'group_id' => $status->group_id, 'hashtag_id' => $hashtag->id, 'profile_id' => $status->profile_id, 'status_visibility' => $status->visibility, ] ); }); } $this->storeMentions(); } public function storeMentions() { // todo } }