Skip to content

Commit

Permalink
fix: use correct Algolia index for multi-lang setups
Browse files Browse the repository at this point in the history
  • Loading branch information
johannschopplich committed Mar 15, 2024
1 parent 7605550 commit 7d49f5d
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 66 deletions.
2 changes: 1 addition & 1 deletion AlgoliaDocSearch.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ public static function instance(): self
*/
public function getAlgoliaIndex(string|null $languageCode = null): \Algolia\AlgoliaSearch\SearchIndex
{
$indexName = $this->options['index'] . (!empty($languageCode) ? "-{$languageCode}" : '');
$indexName = $this->options['index'] . (!empty($languageCode) ? '-' . $languageCode : '');
return $this->algolia->initIndex($indexName);
}

Expand Down
93 changes: 47 additions & 46 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 10 additions & 19 deletions extensions/hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,6 @@
use Kirby\Exception\Exception;

return [
'page.changeSlug:before' => function (Page $page, string $slug, string|null $languageCode = null) {
/** @var \Kirby\Cms\App $this */
if (
$this->option('johannschopplich.algolia-docsearch.hooks', false) !== true ||
$this->option('debug')
) {
return;
}

$docSearch = DocSearch::instance();
$index = $docSearch->getAlgoliaIndex();
$index->deleteObject($page->uri($languageCode));
},
'page.delete:after' => function (bool $status, Page $page) {
/** @var \Kirby\Cms\App $this */
if (
Expand All @@ -28,11 +15,12 @@
return;
}

$languageCode = $this->languageCode();
$docSearch = DocSearch::instance();
$index = $docSearch->getAlgoliaIndex();
$index->deleteObject($page->uri($this->languageCode()));
$index = $docSearch->getAlgoliaIndex($languageCode);
$index->deleteObject($page->uri($languageCode));
},
'page.*:after' => function (Event $event, Page|null $newPage) {
'page.*:after' => function (Event $event, Page|null $newPage, Page|null $oldPage) {
/** @var \Kirby\Cms\App $this */
if (
$this->option('johannschopplich.algolia-docsearch.hooks', false) !== true ||
Expand All @@ -46,17 +34,20 @@
return;
}

if (!$newPage) {
if (!$newPage || !$oldPage) {
return;
}

$languageCode = $this->languageCode();
$docSearch = DocSearch::instance();
$index = $docSearch->getAlgoliaIndex();
$index = $docSearch->getAlgoliaIndex($languageCode);
$allowedTemplates = $docSearch->options['templates'] ?? [];

if ($event->action() === 'changeSlug') {
$index->deleteObject($oldPage->uri($languageCode));
}

if (
$event->action() === 'delete' ||
($event->action() === 'changeStatus' && !$newPage->isListed()) ||
($event->action() === 'changeTemplate' && !in_array($newPage->intendedTemplate()->name(), $allowedTemplates, true))
) {
Expand Down

0 comments on commit 7d49f5d

Please sign in to comment.