tethys/app/Listeners/DatasetUpdated.php
Arno Kaimbacher 390b2396eb - solr.xslt autor and author_sort are now sorted by @SortOrder
- composer updates
- new artisan command 'update:dataset {dataset : The ID of the dataset}' for updating solr index for specific datasets
- DatasetExtension.php: alaso svae 'sort_order' for authors and contributors
- twice solr.xslt: sort authors also in solr index
2020-10-01 18:38:31 +02:00

69 lines
1.9 KiB
PHP

<?php
namespace App\Listeners;
// use Illuminate\Queue\InteractsWithQueue;
// use Illuminate\Contracts\Queue\ShouldQueue;
use App\Events\Dataset\DatasetUpdated as DatasetUpdatedEvent;
use App\Models\Dataset;
use Illuminate\Support\Facades\Log;
use App\Library\Search\SolariumAdapter;
class DatasetUpdated
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param DatasetUpdatedEvent $event
* @return void
*/
public function handle(DatasetUpdatedEvent $event)
{
$dataset = $event->dataset;
// only index Opus_Document instances
if (false === ($dataset instanceof Dataset)) {
return;
}
if ($dataset->server_state !== 'published') {
// if ($dataset->getServerState() !== 'temporary') {
// $this->removeDocumentFromIndexById($model->getId());
// }
return;
}
$this->addDatasetToIndex($dataset);
}
/**
* Helper method to add dataset to index.
*
* @param Opus_Document $document
* @return void
*/
private function addDatasetToIndex(Dataset $dataset)
{
$datasetId = $dataset->id;
Log::debug(__METHOD__ . ': ' . 'Adding index job for dataset ' . $datasetId . '.');
try {
// Opus_Search_Service::selectIndexingService('onDocumentChange')
$service = new SolariumAdapter("solr", config('solarium'));
$service->addDatasetsToIndex($dataset);
} catch (Opus_Search_Exception $e) {
Log::debug(__METHOD__ . ': ' . 'Indexing document ' . $dataset->id . ' failed: ' . $e->getMessage());
} catch (InvalidArgumentException $e) {
Log::warning(__METHOD__ . ': ' . $e->getMessage());
}
}
}