forge/app/Observers/ModObserver.php

50 lines
1.1 KiB
PHP
Raw Normal View History

<?php
2025-01-30 00:23:55 -05:00
declare(strict_types=1);
namespace App\Observers;
use App\Models\Mod;
use App\Services\DependencyVersionService;
class ModObserver
{
2025-01-30 00:23:55 -05:00
public function __construct(protected DependencyVersionService $dependencyVersionService) {}
/**
* Handle the Mod "saved" event.
*/
public function saved(Mod $mod): void
{
2024-09-30 23:47:04 -04:00
$mod->load('versions.sptVersions');
foreach ($mod->versions as $modVersion) {
$this->dependencyVersionService->resolve($modVersion);
}
$this->updateRelatedSptVersions($mod);
}
/**
* Update properties on related SptVersions.
*/
protected function updateRelatedSptVersions(Mod $mod): void
{
$sptVersions = $mod->versions->flatMap->sptVersions->unique();
foreach ($sptVersions as $sptVersion) {
$sptVersion->updateModCount();
}
}
/**
* Handle the Mod "deleted" event.
*/
public function deleted(Mod $mod): void
{
2024-09-30 23:47:04 -04:00
$mod->load('versions.sptVersions');
$this->updateRelatedSptVersions($mod);
}
}