2024-07-26 02:19:42 -04:00
|
|
|
<?php
|
|
|
|
|
2025-01-30 00:23:55 -05:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
2024-07-26 02:19:42 -04:00
|
|
|
namespace App\Observers;
|
|
|
|
|
|
|
|
use App\Models\ModVersion;
|
2024-08-22 17:04:07 -04:00
|
|
|
use App\Services\DependencyVersionService;
|
|
|
|
use App\Services\SptVersionService;
|
2024-07-26 02:19:42 -04:00
|
|
|
|
|
|
|
class ModVersionObserver
|
|
|
|
{
|
2025-01-30 00:23:55 -05:00
|
|
|
public function __construct(protected DependencyVersionService $dependencyVersionService, protected SptVersionService $sptVersionService) {}
|
2024-07-26 02:19:42 -04:00
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
/**
|
|
|
|
* Handle the ModVersion "saved" event.
|
|
|
|
*/
|
2024-07-26 02:19:42 -04:00
|
|
|
public function saved(ModVersion $modVersion): void
|
2024-08-22 17:04:07 -04:00
|
|
|
{
|
2024-08-29 15:46:10 -04:00
|
|
|
$this->dependencyVersionService->resolve($modVersion);
|
2024-08-30 23:13:46 -04:00
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
$this->sptVersionService->resolve($modVersion);
|
2024-08-30 23:13:46 -04:00
|
|
|
|
2024-08-31 01:19:22 -04:00
|
|
|
$this->updateRelatedSptVersions($modVersion); // After resolving SPT versions.
|
|
|
|
$this->updateRelatedMod($modVersion);
|
2024-08-30 23:13:46 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update properties on related SptVersions.
|
|
|
|
*/
|
|
|
|
protected function updateRelatedSptVersions(ModVersion $modVersion): void
|
|
|
|
{
|
|
|
|
$sptVersions = $modVersion->sptVersions; // These should already be resolved.
|
|
|
|
|
|
|
|
foreach ($sptVersions as $sptVersion) {
|
|
|
|
$sptVersion->updateModCount();
|
|
|
|
}
|
2024-08-22 17:04:07 -04:00
|
|
|
}
|
|
|
|
|
2024-08-31 01:19:22 -04:00
|
|
|
/**
|
|
|
|
* Update properties on the related Mod.
|
|
|
|
*/
|
|
|
|
protected function updateRelatedMod(ModVersion $modVersion): void
|
|
|
|
{
|
|
|
|
$mod = $modVersion->mod;
|
|
|
|
$mod->calculateDownloads();
|
|
|
|
}
|
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
/**
|
|
|
|
* Handle the ModVersion "deleted" event.
|
|
|
|
*/
|
2024-07-26 02:19:42 -04:00
|
|
|
public function deleted(ModVersion $modVersion): void
|
|
|
|
{
|
2024-08-29 15:46:10 -04:00
|
|
|
$this->dependencyVersionService->resolve($modVersion);
|
2024-08-30 23:13:46 -04:00
|
|
|
|
2024-08-31 01:19:22 -04:00
|
|
|
$this->updateRelatedSptVersions($modVersion); // After resolving SPT versions.
|
|
|
|
$this->updateRelatedMod($modVersion);
|
2024-07-26 02:19:42 -04:00
|
|
|
}
|
|
|
|
}
|