1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace App\Jobs\StatusPipeline;
- use Cache;
- use App\{
- Hashtag,
- Media,
- Status,
- StatusHashtag
- };
- use App\Util\Lexer\Hashtag as HashtagLexer;
- use Illuminate\Bus\Queueable;
- use Illuminate\Queue\SerializesModels;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- class StatusEntityLexer implements ShouldQueue
- {
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
- protected $status;
- /**
- * Create a new job instance.
- *
- * @return void
- */
- public function __construct(Status $status)
- {
- $this->status = $status;
- }
- /**
- * Execute the job.
- *
- * @return void
- */
- public function handle()
- {
- $status = $this->status;
- $this->parseHashtags();
- }
- public function parseHashtags()
- {
- $status = $this->status;
- $text = $status->caption;
- $tags = HashtagLexer::getHashtags($text);
- $rendered = $text;
- if(count($tags) > 0) {
- $rendered = HashtagLexer::replaceHashtagsWithLinks($text);
- }
- $status->rendered = $rendered;
- $status->save();
-
- Cache::forever('post.' . $status->id, $status);
- foreach($tags as $tag) {
- $slug = str_slug($tag);
-
- $htag = Hashtag::firstOrCreate(
- ['name' => $tag],
- ['slug' => $slug]
- );
- $stag = new StatusHashtag;
- $stag->status_id = $status->id;
- $stag->hashtag_id = $htag->id;
- $stag->save();
- }
- }
- }
|