Skip to content

Commit b829350

Browse files
committed
refactor(SharingBackend): Insert default values for properties and permissions after creating the share objects
Signed-off-by: provokateurin <kate@provokateurin.de>
1 parent 10fdbee commit b829350

1 file changed

Lines changed: 78 additions & 55 deletions

File tree

apps/sharing/lib/SharingBackend.php

Lines changed: 78 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -813,34 +813,6 @@ private function list(ShareAccessContext $accessContext, ?string $filterShareID,
813813
}
814814
}
815815

816-
foreach (array_keys($shares) as $id) {
817-
foreach ($registryPropertyTypes as $propertyTypeClass => $propertyType) {
818-
if (
819-
!isset($shares[$id]['properties'][$propertyTypeClass])
820-
&& isset($shareSourceTypeClasses[$id], $shareRecipientTypeClasses[$id])
821-
&& array_intersect($registryPropertyTypeCompatibleSourceTypeClasses[$propertyTypeClass], array_keys($shareSourceTypeClasses[$id])) !== []
822-
&& array_intersect($registryPropertyTypeCompatibleRecipientTypeClasses[$propertyTypeClass], array_keys($shareRecipientTypeClasses[$id])) !== []) {
823-
$value = $propertyType->getDefaultValue();
824-
825-
$timestamp = $this->manager->generateTimestamp();
826-
$this->setLastUpdated([(string)$id], $timestamp);
827-
828-
$qb = $this->connection->getQueryBuilder();
829-
$qb
830-
->insert('sharing_share_properties')
831-
->values([
832-
'share_id' => $qb->createNamedParameter($id),
833-
'property_class' => $qb->createNamedParameter($propertyTypeClass),
834-
'property_value' => $qb->createNamedParameter($propertyType instanceof ISharePropertyTypeModifyValue ? $propertyType->modifyValueOnSave(null, $value) : $value),
835-
])
836-
->executeStatement();
837-
838-
$shares[$id]['properties'][$propertyTypeClass] = new ShareProperty($propertyTypeClass, $value);
839-
$shares[$id]['last_updated'] = $timestamp;
840-
}
841-
}
842-
}
843-
844816
$registrySourceTypePermissionTypeClasses = $this->registry->getSourceTypePermissionTypeClasses();
845817
$registryGenericPermissionTypeClasses = $this->registry->getGenericPermissionTypeClasses();
846818

@@ -891,33 +863,6 @@ private function list(ShareAccessContext $accessContext, ?string $filterShareID,
891863
}
892864
}
893865

894-
$permissionTypes = $this->registry->getPermissionTypes();
895-
896-
foreach (array_keys($shares) as $id) {
897-
foreach (array_keys($shareCompatiblePermissionTypeClasses[$id]) as $permissionTypeClass) {
898-
$permissionType = $permissionTypes[$permissionTypeClass];
899-
if (!isset($shares[$id]['permissions'][$permissionTypeClass])) {
900-
$enabled = $permissionType->isEnabledByDefault();
901-
902-
$timestamp = $this->manager->generateTimestamp();
903-
$this->setLastUpdated([(string)$id], $timestamp);
904-
905-
$qb = $this->connection->getQueryBuilder();
906-
$qb
907-
->insert('sharing_share_permissions')
908-
->values([
909-
'share_id' => $qb->createNamedParameter($id),
910-
'permission_class' => $qb->createNamedParameter($permissionTypeClass),
911-
'permission_enabled' => $qb->createNamedParameter($enabled, IQueryBuilder::PARAM_BOOL),
912-
])
913-
->executeStatement();
914-
915-
$shares[$id]['permissions'][$permissionTypeClass] = new SharePermission($permissionTypeClass, $enabled);
916-
$shares[$id]['last_updated'] = $timestamp;
917-
}
918-
}
919-
}
920-
921866
$shares = array_map(static fn (array $share): Share => new Share(
922867
$share['id'],
923868
$share['owner'],
@@ -948,6 +893,84 @@ private function list(ShareAccessContext $accessContext, ?string $filterShareID,
948893
}
949894
}
950895

896+
foreach (array_keys($shares) as $id) {
897+
foreach ($registryPropertyTypes as $propertyTypeClass => $propertyType) {
898+
$share = $shares[$id];
899+
if (
900+
!isset($share->properties[$propertyTypeClass])
901+
&& isset($shareSourceTypeClasses[$id], $shareRecipientTypeClasses[$id])
902+
&& array_intersect($registryPropertyTypeCompatibleSourceTypeClasses[$propertyTypeClass], array_keys($shareSourceTypeClasses[$id])) !== []
903+
&& array_intersect($registryPropertyTypeCompatibleRecipientTypeClasses[$propertyTypeClass], array_keys($shareRecipientTypeClasses[$id])) !== []) {
904+
$value = $propertyType->getDefaultValue();
905+
906+
$timestamp = $this->manager->generateTimestamp();
907+
$this->setLastUpdated([(string)$id], $timestamp);
908+
909+
$qb = $this->connection->getQueryBuilder();
910+
$qb
911+
->insert('sharing_share_properties')
912+
->values([
913+
'share_id' => $qb->createNamedParameter($id),
914+
'property_class' => $qb->createNamedParameter($propertyTypeClass),
915+
'property_value' => $qb->createNamedParameter($propertyType instanceof ISharePropertyTypeModifyValue ? $propertyType->modifyValueOnSave(null, $value) : $value),
916+
])
917+
->executeStatement();
918+
919+
$properties = $share->properties;
920+
$properties[$propertyTypeClass] = new ShareProperty($propertyTypeClass, $value);
921+
922+
$shares[$id] = new Share(
923+
$share->id,
924+
$share->owner,
925+
$timestamp,
926+
$share->state,
927+
$share->sources,
928+
$share->recipients,
929+
$properties,
930+
$share->permissions,
931+
);
932+
}
933+
}
934+
}
935+
936+
$permissionTypes = $this->registry->getPermissionTypes();
937+
foreach (array_keys($shares) as $id) {
938+
foreach (array_keys($shareCompatiblePermissionTypeClasses[$id]) as $permissionTypeClass) {
939+
$share = $shares[$id];
940+
if (!isset($share->permissions[$permissionTypeClass])) {
941+
$permissionType = $permissionTypes[$permissionTypeClass];
942+
$enabled = $permissionType->isEnabledByDefault();
943+
944+
$timestamp = $this->manager->generateTimestamp();
945+
$this->setLastUpdated([(string)$id], $timestamp);
946+
947+
$qb = $this->connection->getQueryBuilder();
948+
$qb
949+
->insert('sharing_share_permissions')
950+
->values([
951+
'share_id' => $qb->createNamedParameter($id),
952+
'permission_class' => $qb->createNamedParameter($permissionTypeClass),
953+
'permission_enabled' => $qb->createNamedParameter($enabled, IQueryBuilder::PARAM_BOOL),
954+
])
955+
->executeStatement();
956+
957+
$permissions = $share->permissions;
958+
$permissions[$permissionTypeClass] = new SharePermission($permissionTypeClass, $enabled);
959+
960+
$shares[$id] = new Share(
961+
$share->id,
962+
$share->owner,
963+
$timestamp,
964+
$share->state,
965+
$share->sources,
966+
$share->recipients,
967+
$share->properties,
968+
$permissions,
969+
);
970+
}
971+
}
972+
}
973+
951974
return array_values($shares);
952975
}
953976
}

0 commit comments

Comments
 (0)