From 86bbba81cfb5ad8529dc06b01be0cd19e14f0a12 Mon Sep 17 00:00:00 2001 From: Lars SG Date: Sat, 8 Aug 2026 11:39:10 -0600 Subject: [PATCH] Make relationship created & modified dates, description FormBuilder filters --- .../Spec/Provider/RelationshipCacheSpecProvider.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php b/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php index a7468f2c7372..e51070c1ac36 100644 --- a/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php @@ -25,21 +25,23 @@ class RelationshipCacheSpecProvider extends \Civi\Core\Service\AutoService imple * @param \Civi\Api4\Service\Spec\RequestSpec $spec */ public function modifySpec(RequestSpec $spec) { + // These need an input type to be filters in FormBuilder $mirrorFields = [ - 'description' => 'description', + 'description' => ['name' => 'description', 'input_type' => 'Text'], // Alias these two to avoid name conflict with fields in civicrm_contact table during bridge joins - 'created_date' => 'relationship_created_date', - 'modified_date' => 'relationship_modified_date', + 'created_date' => ['name' => 'relationship_created_date', 'input_type' => 'Date'], + 'modified_date' => ['name' => 'relationship_modified_date', 'input_type' => 'Date'], ]; $relationshipFields = \CRM_Contact_DAO_Relationship::getSupportedFields(); foreach (array_intersect_key($relationshipFields, $mirrorFields) as $origName => $origField) { - $field = new FieldSpec($mirrorFields[$origName], $spec->getEntity(), \CRM_Utils_Type::typeToString($origField['type'])); + $field = new FieldSpec($mirrorFields[$origName]['name'], $spec->getEntity(), \CRM_Utils_Type::typeToString($origField['type'])); $field ->setTitle($origField['title']) ->setLabel($origField['html']['label'] ?? NULL) // Fetches the value from the relationship ->setColumnName('relationship_id') ->setDescription($origField['description']) + ->setInputType($mirrorFields[$origName]['input_type'] ?? NULL) ->setSqlRenderer([__CLASS__, 'mirrorRelationshipField']); $spec->addFieldSpec($field); }