19declare(strict_types=1);
40 protected ObjectHandler $object_handler,
41 protected StatusRepository $status_repository,
42 protected ExposedRecordRepository $exposed_record_repository,
43 protected CopyrightSearchFactory $copyright_search_factory,
44 protected LOMRepository $lom_repository,
45 protected SimpleDCXMLWriter $xml_writer,
56 $currently_harvested_obj_ids = iterator_to_array($this->status_repository->getAllHarvestedObjIDs());
60 $currently_harvested_obj_ids
62 $messages[] =
'Withdrew ' . $deletion_count .
' deprecated objects.';
65 $messages[] =
'Updated ' . $exposure_count .
' published objects.';
68 if ($this->
settings->isAutomaticPublishingEnabled()) {
71 $currently_harvested_obj_ids
73 $messages[] =
'Published or submitted for review ' . $harvest_count .
' new objects.';
76 if ($deletion_count !== 0 || $harvest_count !== 0 || $exposure_count !== 0) {
81 return $result->withMessage(implode(
'<br>', $messages));
82 }
catch (\Exception
$e) {
84 ->withMessage(
$e->getMessage());
90 $searcher = $this->copyright_search_factory->get()
91 ->withRestrictionToRepositoryObjects(
true);
92 foreach ($this->
settings->getObjectTypesSelectedForPublishing() as $type) {
93 $searcher = $searcher->withAdditionalTypeFilter($type);
96 foreach ($searcher->search(
97 $this->lom_repository,
98 ...$this->settings->getCopyrightEntryIDsSelectedForPublishing()
100 $search_results[] = $ressource_id->objID();
103 $unblocked = $this->status_repository->filterOutBlockedObjects(...$search_results);
105 foreach ($unblocked as $obj_id) {
106 if ($this->object_handler->isObjectDeleted($obj_id)) {
120 array $harvestable_obj_ids,
121 array $currently_harvested_obj_ids
124 foreach ($currently_harvested_obj_ids as $obj_id) {
126 in_array($obj_id, $harvestable_obj_ids) &&
127 $this->object_handler->doesReferenceExist($this->status_repository->getHarvestRefID($obj_id))
132 $this->
logDebug(
'Withdrawing deprecated object with obj: ' . $obj_id);
134 $this->publisher->withdraw($obj_id);
135 }
catch (\Exception
$e) {
137 'Error when withdrawing from publishing object with obj_id ' .
138 $obj_id .
': ' .
$e->getMessage()
153 array $harvestable_obj_ids,
154 array $currently_harvested_obj_ids
158 foreach ($harvestable_obj_ids as $obj_id) {
159 if (in_array($obj_id, $currently_harvested_obj_ids)) {
163 $this->logDebug(
'Publishing object with obj_id: ' . $obj_id);
165 if ($this->
settings->isEditorialStepEnabled()) {
166 $this->publisher->submit($obj_id);
168 $type = $this->object_handler->getTypeOfObject($obj_id);
169 $this->publisher->publish($obj_id, $type);
171 }
catch (\Exception
$e) {
173 'Error when publishing object with obj_id ' .
174 $obj_id .
': ' .
$e->getMessage()
191 foreach ($this->exposed_record_repository->getRecords() as $record) {
192 $obj_id = $record->infos()->objID();
193 $ref_id = $this->status_repository->getHarvestRefID($obj_id);
195 if (!
$ref_id && $record->infos()->isDeleted()) {
199 $simple_dc_xml = $this->xml_writer->writeSimpleDCMetaData(
202 $this->object_handler->getTypeOfObject($obj_id)
206 $record->infos()->isDeleted() ||
207 $simple_dc_xml->saveXML() !== $record->metadata()->saveXML()
210 $this->logDebug(
'Updating exposed record for object with obj_id: ' . $obj_id);
211 $this->exposed_record_repository->updateRecord($obj_id,
false, $simple_dc_xml);
216 $this->cleanUpDeletedRecords();
223 $this->exposed_record_repository->deleteRecordsMarkedAsDeletedOlderThan(
224 new \DateInterval(
'P30D')
230 $this->
logger->debug($message);
235 $this->
logger->error($message);
final const int STATUS_FAIL
final const int STATUS_NO_ACTION
final const int STATUS_OK
Component logger with individual log levels by component id.
A result encapsulates a value or an error and simplifies the handling of those.