From fc4d40d39eee0b4b8e70140b1a03849851a0c97e Mon Sep 17 00:00:00 2001
From: Paul Pound <ppound@upei.ca>
Date: Mon, 24 Feb 2025 15:00:16 -0400
Subject: [PATCH] first commit

---
 roblib_alter_solr.info.yml                |  7 ++++
 services.yml                              |  5 +++
 src/Event/SolrDocumentAlterSubscriber.php | 41 +++++++++++++++++++++++
 3 files changed, 53 insertions(+)
 create mode 100644 roblib_alter_solr.info.yml
 create mode 100644 services.yml
 create mode 100644 src/Event/SolrDocumentAlterSubscriber.php

diff --git a/roblib_alter_solr.info.yml b/roblib_alter_solr.info.yml
new file mode 100644
index 0000000..ee1c6d7
--- /dev/null
+++ b/roblib_alter_solr.info.yml
@@ -0,0 +1,7 @@
+name: Roblib Alter Solr
+type: module
+description: Handles Solr document events.
+core_version_requirement:  ^10
+dependencies:
+  - search_api
+  - search_api_solr
diff --git a/services.yml b/services.yml
new file mode 100644
index 0000000..29fa2d1
--- /dev/null
+++ b/services.yml
@@ -0,0 +1,5 @@
+services:
+  roblib_alter_solr.event_subscriber:
+    class: Drupal\roblib_alter_solr\EventSubscriber\SolrDocumentAlterSubscriber
+    tags:
+      - { name: alterSolrDocument }
diff --git a/src/Event/SolrDocumentAlterSubscriber.php b/src/Event/SolrDocumentAlterSubscriber.php
new file mode 100644
index 0000000..e3468b3
--- /dev/null
+++ b/src/Event/SolrDocumentAlterSubscriber.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Drupal\my_module;
+
+use Drupal\search_api\IndexInterface;
+use Drupal\search_api\Item\ItemInterface;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Drupal\search_api_solr\Event\SolrDocumentAlterEvent;
+
+/**
+ * Provides a Solr document alter event subscriber.
+ */
+class SolrDocumentAlterSubscriber implements EventSubscriberInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    $events[SolrDocumentAlterEvent::class][] = ['alterSolrDocument', 800]; // Priority 800 (adjust as needed)
+    return $events;
+  }
+
+  /**
+   * Alters the Solr document before it is sent to Solr.
+   *
+   * @param \Drupal\search_api_solr\Event\SolrDocumentAlterEvent $event
+   *   The Solr document alter event.
+   */
+  public function alterSolrDocument(SolrDocumentAlterEvent $event) {
+    $solrDocument = $event->getSolrDocument();
+    $item = $event->getItem();
+    $index = $event->getIndex();
+    
+    if ($item->hasField('field_geo_area_name')) {
+      $value = $item->getField('field_geo_area_name')->getValue();
+      $solrDocument->addField('dc.coverage', $value);
+    }
+
+   }
+
+}