mirror of
https://github.com/sp-tarkov/forge.git
synced 2025-02-12 20:20:41 -05:00
54 lines
1.2 KiB
PHP
54 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Observers;
|
|
|
|
use App\Models\Mod;
|
|
use App\Services\DependencyVersionService;
|
|
|
|
class ModObserver
|
|
{
|
|
protected DependencyVersionService $dependencyVersionService;
|
|
|
|
public function __construct(
|
|
DependencyVersionService $dependencyVersionService,
|
|
) {
|
|
$this->dependencyVersionService = $dependencyVersionService;
|
|
}
|
|
|
|
/**
|
|
* Handle the Mod "saved" event.
|
|
*/
|
|
public function saved(Mod $mod): void
|
|
{
|
|
$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
|
|
{
|
|
$mod->load('versions.sptVersions');
|
|
|
|
$this->updateRelatedSptVersions($mod);
|
|
}
|
|
}
|