<?php namespace App\Jobs\AutospamPipeline; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use App\Models\AutospamCustomTokens; use Illuminate\Support\Facades\Storage; use App\Services\AutospamService; use Cache; class AutospamUpdateCachedDataPipeline implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. */ public function __construct() { } /** * Execute the job. */ public function handle(): void { $spamExists = Storage::exists(AutospamService::MODEL_SPAM_PATH); if($spamExists) { $spam = json_decode(Storage::get(AutospamService::MODEL_SPAM_PATH), true); } else { $spam = [ 'documents' => [ 'spam' => 0 ], 'words' => [ 'spam' => [] ] ]; } $newSpam = AutospamCustomTokens::whereCategory('spam')->get(); foreach($newSpam as $ns) { $key = strtolower($ns->token); if(isset($spam['words']['spam'][$key])) { $spam['words']['spam'][$key] = $spam['words']['spam'][$key] + $ns->weight; } else { $spam['words']['spam'][$key] = $ns->weight; } } $newSpamCount = count($spam['words']['spam']); if($newSpamCount) { $spam['documents']['spam'] = $newSpamCount; arsort($spam['words']['spam']); Storage::put(AutospamService::MODEL_SPAM_PATH, json_encode($spam, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT)); } $hamExists = Storage::exists(AutospamService::MODEL_HAM_PATH); if($hamExists) { $ham = json_decode(Storage::get(AutospamService::MODEL_HAM_PATH), true); } else { $ham = [ 'documents' => [ 'ham' => 0 ], 'words' => [ 'ham' => [] ] ]; } $newHam = AutospamCustomTokens::whereCategory('ham')->get(); foreach($newHam as $ns) { $key = strtolower($ns->token); if(isset($spam['words']['ham'][$key])) { $ham['words']['ham'][$key] = $ham['words']['ham'][$key] + $ns->weight; } else { $ham['words']['ham'][$key] = $ns->weight; } } $newHamCount = count($ham['words']['ham']); if($newHamCount) { $ham['documents']['ham'] = $newHamCount; arsort($ham['words']['ham']); Storage::put(AutospamService::MODEL_HAM_PATH, json_encode($ham, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT)); } if($newSpamCount && $newHamCount) { $combined = [ 'documents' => [ 'spam' => $newSpamCount, 'ham' => $newHamCount, ], 'words' => [ 'spam' => $spam['words']['spam'], 'ham' => $ham['words']['ham'] ] ]; Storage::put(AutospamService::MODEL_FILE_PATH, json_encode($combined, JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES)); } Cache::forget(AutospamService::MODEL_CACHE_KEY); Cache::forget(AutospamService::CHCKD_CACHE_KEY); } }