5 use Drupal\Core\Config\ConfigFactoryInterface;
6 use Drupal\Core\Queue\QueueFactory;
26 $this->setConfigService($configService);
45 if (!is_object($data)) {
46 throw new \Exception(
"data must be an object.");
49 foreach ($this->getPropertyList() as $property_id) {
50 if (isset($data->{$property_id})) {
51 $this->processReferencesInDeletedProperty($property_id, $data->{$property_id});
65 $this->objectsCheck([$old_dataset, $new_dataset]);
67 foreach ($this->getPropertyList() as $property_id) {
68 if (!isset($old_dataset->{$property_id})) {
73 $oldProperty = $old_dataset->{$property_id};
74 $newProperty = (!isset($new_dataset->{$property_id})) ?
75 $this->emptyPropertyOfSameType($oldProperty) :
76 $new_dataset->{$property_id};
78 $this->processReferencesInUpdatedProperty($property_id, $oldProperty, $newProperty);
90 private function processReferencesInDeletedProperty($property_id, $uuids) {
92 if (!is_array($uuids)) {
95 foreach ($uuids as $uuid) {
96 $this->queueReferenceForRemoval($property_id, $uuid);
110 private function queueReferenceForRemoval($property_id, $uuid) {
111 $this->queueService->get(
'orphan_reference_processor')
128 private function processReferencesInUpdatedProperty($property_id, $old_value, $new_value) {
129 if (!is_array($old_value)) {
130 $old_value = [$old_value];
131 $new_value = [$new_value];
134 foreach (array_diff($old_value, $new_value) as $removed_reference) {
135 $this->queueReferenceForRemoval($property_id, $removed_reference);
142 private function objectsCheck($objects) {
143 foreach ($objects as $object) {
144 if (!is_object($object)) {
145 throw new \Exception(
"data given must be an object.");