diff --git a/src/SiteDefaults/LocalizedSiteDefaults.php b/src/SiteDefaults/LocalizedSiteDefaults.php index 494a65c8..c0b6f66d 100644 --- a/src/SiteDefaults/LocalizedSiteDefaults.php +++ b/src/SiteDefaults/LocalizedSiteDefaults.php @@ -4,6 +4,7 @@ use Illuminate\Support\Collection; use Statamic\Data\HasOrigin; +use Statamic\Facades\Blink; use Statamic\Facades\Blueprint; use Statamic\Facades\Site; use Statamic\SeoPro\Events\SiteDefaultsSaved; @@ -98,23 +99,25 @@ public function blueprint(): \Statamic\Fields\Blueprint public function augmented(): array { - $contentValues = Blueprint::make() - ->setContents(['tabs' => ['main' => ['sections' => Fields::new()->getConfig()]]]) - ->fields() - ->addValues($this->values()->all()) - ->augment() - ->values(); - - $siteDefaultValues = $this->blueprint() - ->fields() - ->addValues($this->values()->all()) - ->augment() - ->values(); - - return $siteDefaultValues - ->merge($contentValues) - ->only($this->keys()->all()) - ->all(); + return Blink::once("seo-pro::site-defaults.augmented.{$this->locale}", function () { + $contentValues = Blueprint::make() + ->setContents(['tabs' => ['main' => ['sections' => Fields::new()->getConfig()]]]) + ->fields() + ->addValues($this->values()->all()) + ->augment() + ->values(); + + $siteDefaultValues = $this->blueprint() + ->fields() + ->addValues($this->values()->all()) + ->augment() + ->values(); + + return $siteDefaultValues + ->merge($contentValues) + ->only($this->keys()->all()) + ->all(); + }); } public function editUrl(): string diff --git a/src/SiteDefaults/SiteDefaults.php b/src/SiteDefaults/SiteDefaults.php index edb0894b..b64a1d2c 100644 --- a/src/SiteDefaults/SiteDefaults.php +++ b/src/SiteDefaults/SiteDefaults.php @@ -32,15 +32,18 @@ public static function get(): Collection public static function origins($origins = null): Collection|bool { if (func_num_args() === 0) { - return Site::all() - ->mapWithKeys(fn ($site) => [$site->handle() => null]) - ->merge(Addon::get('statamic/seo-pro')->settings()->get('site_defaults_sites', [])) - ->map(fn ($origin) => empty($origin) ? null : $origin); + return Blink::once('seo-pro::site-defaults-origins', function () { + return Site::all() + ->mapWithKeys(fn ($site) => [$site->handle() => null]) + ->merge(Addon::get('statamic/seo-pro')->settings()->get('site_defaults_sites', [])) + ->map(fn ($origin) => empty($origin) ? null : $origin); + }); } Addon::get('statamic/seo-pro')->settings()->set('site_defaults_sites', $origins)->save(); Blink::forget('seo-pro::site-defaults'); + Blink::forget('seo-pro::site-defaults-origins'); return true; } @@ -67,6 +70,7 @@ public static function save(LocalizedSiteDefaults $localized): bool Addon::get('statamic/seo-pro')->settings()->set('site_defaults', $data)->save(); Blink::forget('seo-pro::site-defaults'); + Blink::forget("seo-pro::site-defaults.augmented.{$localized->locale()}"); return true; }