APIv4 - Deprecate and stop using PreSaveSubscriber
authorColeman Watts <coleman@civicrm.org>
Thu, 27 Jan 2022 21:09:08 +0000 (16:09 -0500)
committerColeman Watts <coleman@civicrm.org>
Fri, 28 Jan 2022 00:32:10 +0000 (19:32 -0500)
commited3f5877550c524765812d86c2feff0c4363484e
treef08255935b4723f1642ee69d02bba7c6f180e01d
parentbc8a85dcf4f95a793822679ab71559ece76f28e1
APIv4 - Deprecate and stop using PreSaveSubscriber

The PreSaveSubscriber allowed APIs to tweak inputs before saving a record,
but it was unreliable because:
- It would run for Create and Update but not Save actions
- It would run before pseudoconstant suffixes had been resolved
- It would run before any formatting or internal processing had taken place

Meanwhile, a new pattern of overriding the create/save/update actions and sharing a trait
has become more common and while a bit more cumbersome to implement, it does not share
those limitations.

This removes all uses of PreSaveSubscriber, refactors those bits into Save traits, and
adds a deprecation warning in case any extension in the Universe happens to have implemented it.
37 files changed:
Civi/Api4/Action/Address/AddressSaveTrait.php
Civi/Api4/Action/Contact/ContactSaveTrait.php [new file with mode: 0644]
Civi/Api4/Action/Contact/Create.php [new file with mode: 0644]
Civi/Api4/Action/Contact/Save.php
Civi/Api4/Action/Contact/Update.php
Civi/Api4/Action/Contribution/ContributionSaveTrait.php [moved from Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php with 56% similarity]
Civi/Api4/Action/Contribution/Create.php [new file with mode: 0644]
Civi/Api4/Action/Contribution/Save.php [new file with mode: 0644]
Civi/Api4/Action/Contribution/Update.php [new file with mode: 0644]
Civi/Api4/Action/CustomField/Create.php [new file with mode: 0644]
Civi/Api4/Action/CustomField/CustomFieldSaveTrait.php [moved from Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php with 69% similarity]
Civi/Api4/Action/CustomField/Save.php [new file with mode: 0644]
Civi/Api4/Action/CustomField/Update.php [new file with mode: 0644]
Civi/Api4/Contact.php
Civi/Api4/Contribution.php
Civi/Api4/CustomField.php
Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php [deleted file]
Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php [deleted file]
Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php
Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php [deleted file]
Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php
ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php
tests/phpunit/api/v3/ACLPermissionTest.php
tests/phpunit/api/v4/Action/BasicCustomFieldTest.php
tests/phpunit/api/v4/Action/ChainTest.php
tests/phpunit/api/v4/Action/CreateCustomValueTest.php
tests/phpunit/api/v4/Action/CreateWithOptionGroupTest.php
tests/phpunit/api/v4/Action/CustomContactRefTest.php
tests/phpunit/api/v4/Action/CustomGroupACLTest.php
tests/phpunit/api/v4/Action/CustomValueTest.php
tests/phpunit/api/v4/Action/ExtendFromIndividualTest.php
tests/phpunit/api/v4/Action/PseudoconstantTest.php
tests/phpunit/api/v4/Action/ReplaceTest.php
tests/phpunit/api/v4/Action/UpdateCustomValueTest.php
tests/phpunit/api/v4/DataSets/ConformanceTest.json
tests/phpunit/api/v4/Entity/ContactTypeTest.php
tests/phpunit/api/v4/Spec/SpecGathererTest.php