123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?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);
- }
- }
|