diff --git a/Civi/API/Request.php b/Civi/API/Request.php
index 8b7a087f2ef2..c26d230a88cf 100644
--- a/Civi/API/Request.php
+++ b/Civi/API/Request.php
@@ -48,12 +48,7 @@ public static function create(string $entity, string $action, array $params) {
$className = CoreUtil::getApiClass($entity);
$callable = [$className, $action];
if (!$className || !is_callable($callable)) {
- throw new \Civi\API\Exception\NotImplementedException("API ($entity, $action) does not exist (join the API team and implement it!)");
- }
- // Check enabled components
- $daoName = \CRM_Core_DAO_AllCoreTables::getFullName($entity);
- if ($daoName && !$daoName::isComponentEnabled()) {
- throw new \Civi\API\Exception\NotImplementedException("$entity API is not available because " . $daoName::COMPONENT . " component is disabled");
+ throw new \Civi\API\Exception\NotImplementedException("API ($entity, $action) does not exist (or the extension it belongs to is not enabled).");
}
// Extra arguments used e.g. by dynamic entities like Multi-Record custom groups & the ECK extension
$args = (array) CoreUtil::getInfoItem($entity, 'class_args');
diff --git a/Civi/Api4/Action/Entity/Get.php b/Civi/Api4/Action/Entity/Get.php
index d6e80485c985..3c799ca8ae63 100644
--- a/Civi/Api4/Action/Entity/Get.php
+++ b/Civi/Api4/Action/Entity/Get.php
@@ -15,7 +15,7 @@
/**
* Get the names & docblocks of all APIv4 entities.
*
- * Scans for api entities in core, enabled components & enabled extensions.
+ * Scans for api entities in core & enabled extensions.
*
* Also includes pseudo-entities from multi-record custom groups.
*/
@@ -28,15 +28,11 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
protected $includeCustom;
/**
- * Returns all APIv4 entities from core, enabled components and enabled extensions.
+ * Returns all APIv4 entities from core & enabled extensions.
*/
protected function getRecords() {
$provider = \Civi::service('action_object_provider');
return array_filter($provider->getEntities(), function($entity) {
- // Only include DAO entities from enabled components
- if (!empty($entity['dao']) && !$entity['dao']::isComponentEnabled()) {
- return FALSE;
- }
// Check custom group permissions
if ($this->checkPermissions && in_array('CustomValue', $entity['type']) && !\CRM_Core_Permission::customGroupAdmin()) {
// Hack to get the id from the "view" url. If that url changes tests should catch it and we'll think of a better way to get that id
diff --git a/Civi/Api4/Action/Campaign/Get.php b/ext/civi_campaign/Civi/Api4/Action/Campaign/Get.php
similarity index 100%
rename from Civi/Api4/Action/Campaign/Get.php
rename to ext/civi_campaign/Civi/Api4/Action/Campaign/Get.php
diff --git a/Civi/Api4/Campaign.php b/ext/civi_campaign/Civi/Api4/Campaign.php
similarity index 100%
rename from Civi/Api4/Campaign.php
rename to ext/civi_campaign/Civi/Api4/Campaign.php
diff --git a/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php b/ext/civi_campaign/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php
rename to ext/civi_campaign/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php
diff --git a/Civi/Api4/Survey.php b/ext/civi_campaign/Civi/Api4/Survey.php
similarity index 100%
rename from Civi/Api4/Survey.php
rename to ext/civi_campaign/Civi/Api4/Survey.php
diff --git a/ext/civi_campaign/info.xml b/ext/civi_campaign/info.xml
index 477b14da4ec0..ff6b21ca2eea 100644
--- a/ext/civi_campaign/info.xml
+++ b/ext/civi_campaign/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Campaign
23.02.1
diff --git a/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php b/ext/civi_case/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php
similarity index 100%
rename from Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php
rename to ext/civi_case/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php
diff --git a/Civi/Api4/Action/CiviCase/Create.php b/ext/civi_case/Civi/Api4/Action/CiviCase/Create.php
similarity index 100%
rename from Civi/Api4/Action/CiviCase/Create.php
rename to ext/civi_case/Civi/Api4/Action/CiviCase/Create.php
diff --git a/Civi/Api4/Action/CiviCase/Save.php b/ext/civi_case/Civi/Api4/Action/CiviCase/Save.php
similarity index 100%
rename from Civi/Api4/Action/CiviCase/Save.php
rename to ext/civi_case/Civi/Api4/Action/CiviCase/Save.php
diff --git a/Civi/Api4/Action/CiviCase/Update.php b/ext/civi_case/Civi/Api4/Action/CiviCase/Update.php
similarity index 100%
rename from Civi/Api4/Action/CiviCase/Update.php
rename to ext/civi_case/Civi/Api4/Action/CiviCase/Update.php
diff --git a/Civi/Api4/CaseActivity.php b/ext/civi_case/Civi/Api4/CaseActivity.php
similarity index 100%
rename from Civi/Api4/CaseActivity.php
rename to ext/civi_case/Civi/Api4/CaseActivity.php
diff --git a/Civi/Api4/CaseContact.php b/ext/civi_case/Civi/Api4/CaseContact.php
similarity index 100%
rename from Civi/Api4/CaseContact.php
rename to ext/civi_case/Civi/Api4/CaseContact.php
diff --git a/Civi/Api4/CaseType.php b/ext/civi_case/Civi/Api4/CaseType.php
similarity index 100%
rename from Civi/Api4/CaseType.php
rename to ext/civi_case/Civi/Api4/CaseType.php
diff --git a/Civi/Api4/CiviCase.php b/ext/civi_case/Civi/Api4/CiviCase.php
similarity index 100%
rename from Civi/Api4/CiviCase.php
rename to ext/civi_case/Civi/Api4/CiviCase.php
diff --git a/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php b/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php
rename to ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php b/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php
rename to ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php
diff --git a/ext/civi_case/info.xml b/ext/civi_case/info.xml
index 794a9842c989..694c9057c079 100644
--- a/ext/civi_case/info.xml
+++ b/ext/civi_case/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Case
23.02.1
diff --git a/Civi/Api4/Action/Contribution/ContributionSaveTrait.php b/ext/civi_contribute/Civi/Api4/Action/Contribution/ContributionSaveTrait.php
similarity index 100%
rename from Civi/Api4/Action/Contribution/ContributionSaveTrait.php
rename to ext/civi_contribute/Civi/Api4/Action/Contribution/ContributionSaveTrait.php
diff --git a/Civi/Api4/Action/Contribution/Create.php b/ext/civi_contribute/Civi/Api4/Action/Contribution/Create.php
similarity index 100%
rename from Civi/Api4/Action/Contribution/Create.php
rename to ext/civi_contribute/Civi/Api4/Action/Contribution/Create.php
diff --git a/Civi/Api4/Action/Contribution/Save.php b/ext/civi_contribute/Civi/Api4/Action/Contribution/Save.php
similarity index 100%
rename from Civi/Api4/Action/Contribution/Save.php
rename to ext/civi_contribute/Civi/Api4/Action/Contribution/Save.php
diff --git a/Civi/Api4/Action/Contribution/Update.php b/ext/civi_contribute/Civi/Api4/Action/Contribution/Update.php
similarity index 100%
rename from Civi/Api4/Action/Contribution/Update.php
rename to ext/civi_contribute/Civi/Api4/Action/Contribution/Update.php
diff --git a/Civi/Api4/Contribution.php b/ext/civi_contribute/Civi/Api4/Contribution.php
similarity index 100%
rename from Civi/Api4/Contribution.php
rename to ext/civi_contribute/Civi/Api4/Contribution.php
diff --git a/Civi/Api4/ContributionPage.php b/ext/civi_contribute/Civi/Api4/ContributionPage.php
similarity index 100%
rename from Civi/Api4/ContributionPage.php
rename to ext/civi_contribute/Civi/Api4/ContributionPage.php
diff --git a/Civi/Api4/ContributionProduct.php b/ext/civi_contribute/Civi/Api4/ContributionProduct.php
similarity index 100%
rename from Civi/Api4/ContributionProduct.php
rename to ext/civi_contribute/Civi/Api4/ContributionProduct.php
diff --git a/Civi/Api4/ContributionRecur.php b/ext/civi_contribute/Civi/Api4/ContributionRecur.php
similarity index 100%
rename from Civi/Api4/ContributionRecur.php
rename to ext/civi_contribute/Civi/Api4/ContributionRecur.php
diff --git a/Civi/Api4/ContributionSoft.php b/ext/civi_contribute/Civi/Api4/ContributionSoft.php
similarity index 100%
rename from Civi/Api4/ContributionSoft.php
rename to ext/civi_contribute/Civi/Api4/ContributionSoft.php
diff --git a/Civi/Api4/EntityFinancialAccount.php b/ext/civi_contribute/Civi/Api4/EntityFinancialAccount.php
similarity index 100%
rename from Civi/Api4/EntityFinancialAccount.php
rename to ext/civi_contribute/Civi/Api4/EntityFinancialAccount.php
diff --git a/Civi/Api4/EntityFinancialTrxn.php b/ext/civi_contribute/Civi/Api4/EntityFinancialTrxn.php
similarity index 100%
rename from Civi/Api4/EntityFinancialTrxn.php
rename to ext/civi_contribute/Civi/Api4/EntityFinancialTrxn.php
diff --git a/Civi/Api4/FinancialAccount.php b/ext/civi_contribute/Civi/Api4/FinancialAccount.php
similarity index 100%
rename from Civi/Api4/FinancialAccount.php
rename to ext/civi_contribute/Civi/Api4/FinancialAccount.php
diff --git a/Civi/Api4/FinancialItem.php b/ext/civi_contribute/Civi/Api4/FinancialItem.php
similarity index 100%
rename from Civi/Api4/FinancialItem.php
rename to ext/civi_contribute/Civi/Api4/FinancialItem.php
diff --git a/Civi/Api4/FinancialTrxn.php b/ext/civi_contribute/Civi/Api4/FinancialTrxn.php
similarity index 100%
rename from Civi/Api4/FinancialTrxn.php
rename to ext/civi_contribute/Civi/Api4/FinancialTrxn.php
diff --git a/Civi/Api4/FinancialType.php b/ext/civi_contribute/Civi/Api4/FinancialType.php
similarity index 100%
rename from Civi/Api4/FinancialType.php
rename to ext/civi_contribute/Civi/Api4/FinancialType.php
diff --git a/Civi/Api4/LineItem.php b/ext/civi_contribute/Civi/Api4/LineItem.php
similarity index 100%
rename from Civi/Api4/LineItem.php
rename to ext/civi_contribute/Civi/Api4/LineItem.php
diff --git a/Civi/Api4/PCP.php b/ext/civi_contribute/Civi/Api4/PCP.php
similarity index 100%
rename from Civi/Api4/PCP.php
rename to ext/civi_contribute/Civi/Api4/PCP.php
diff --git a/Civi/Api4/PCPBlock.php b/ext/civi_contribute/Civi/Api4/PCPBlock.php
similarity index 100%
rename from Civi/Api4/PCPBlock.php
rename to ext/civi_contribute/Civi/Api4/PCPBlock.php
diff --git a/Civi/Api4/PaymentProcessor.php b/ext/civi_contribute/Civi/Api4/PaymentProcessor.php
similarity index 100%
rename from Civi/Api4/PaymentProcessor.php
rename to ext/civi_contribute/Civi/Api4/PaymentProcessor.php
diff --git a/Civi/Api4/PaymentProcessorType.php b/ext/civi_contribute/Civi/Api4/PaymentProcessorType.php
similarity index 100%
rename from Civi/Api4/PaymentProcessorType.php
rename to ext/civi_contribute/Civi/Api4/PaymentProcessorType.php
diff --git a/Civi/Api4/PaymentToken.php b/ext/civi_contribute/Civi/Api4/PaymentToken.php
similarity index 100%
rename from Civi/Api4/PaymentToken.php
rename to ext/civi_contribute/Civi/Api4/PaymentToken.php
diff --git a/Civi/Api4/PriceField.php b/ext/civi_contribute/Civi/Api4/PriceField.php
similarity index 100%
rename from Civi/Api4/PriceField.php
rename to ext/civi_contribute/Civi/Api4/PriceField.php
diff --git a/Civi/Api4/PriceFieldValue.php b/ext/civi_contribute/Civi/Api4/PriceFieldValue.php
similarity index 100%
rename from Civi/Api4/PriceFieldValue.php
rename to ext/civi_contribute/Civi/Api4/PriceFieldValue.php
diff --git a/Civi/Api4/PriceSet.php b/ext/civi_contribute/Civi/Api4/PriceSet.php
similarity index 100%
rename from Civi/Api4/PriceSet.php
rename to ext/civi_contribute/Civi/Api4/PriceSet.php
diff --git a/Civi/Api4/PriceSetEntity.php b/ext/civi_contribute/Civi/Api4/PriceSetEntity.php
similarity index 100%
rename from Civi/Api4/PriceSetEntity.php
rename to ext/civi_contribute/Civi/Api4/PriceSetEntity.php
diff --git a/Civi/Api4/Product.php b/ext/civi_contribute/Civi/Api4/Product.php
similarity index 100%
rename from Civi/Api4/Product.php
rename to ext/civi_contribute/Civi/Api4/Product.php
diff --git a/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php b/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php
rename to ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php
diff --git a/ext/civi_contribute/info.xml b/ext/civi_contribute/info.xml
index a1bf60c36221..094a59d3486f 100644
--- a/ext/civi_contribute/info.xml
+++ b/ext/civi_contribute/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Contribute
23.02.1
diff --git a/Civi/Api4/Action/Event/Get.php b/ext/civi_event/Civi/Api4/Action/Event/Get.php
similarity index 100%
rename from Civi/Api4/Action/Event/Get.php
rename to ext/civi_event/Civi/Api4/Action/Event/Get.php
diff --git a/Civi/Api4/Event.php b/ext/civi_event/Civi/Api4/Event.php
similarity index 100%
rename from Civi/Api4/Event.php
rename to ext/civi_event/Civi/Api4/Event.php
diff --git a/Civi/Api4/Participant.php b/ext/civi_event/Civi/Api4/Participant.php
similarity index 100%
rename from Civi/Api4/Participant.php
rename to ext/civi_event/Civi/Api4/Participant.php
diff --git a/Civi/Api4/ParticipantStatusType.php b/ext/civi_event/Civi/Api4/ParticipantStatusType.php
similarity index 100%
rename from Civi/Api4/ParticipantStatusType.php
rename to ext/civi_event/Civi/Api4/ParticipantStatusType.php
diff --git a/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php
rename to ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php
diff --git a/ext/civi_event/info.xml b/ext/civi_event/info.xml
index 33b0e58c3c14..bfd7f159426e 100644
--- a/ext/civi_event/info.xml
+++ b/ext/civi_event/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Event
23.02.1
diff --git a/Civi/Api4/Action/MailSettings/TestConnection.php b/ext/civi_mail/Civi/Api4/Action/MailSettings/TestConnection.php
similarity index 100%
rename from Civi/Api4/Action/MailSettings/TestConnection.php
rename to ext/civi_mail/Civi/Api4/Action/MailSettings/TestConnection.php
diff --git a/Civi/Api4/MailSettings.php b/ext/civi_mail/Civi/Api4/MailSettings.php
similarity index 100%
rename from Civi/Api4/MailSettings.php
rename to ext/civi_mail/Civi/Api4/MailSettings.php
diff --git a/Civi/Api4/Mailing.php b/ext/civi_mail/Civi/Api4/Mailing.php
similarity index 100%
rename from Civi/Api4/Mailing.php
rename to ext/civi_mail/Civi/Api4/Mailing.php
diff --git a/Civi/Api4/MailingEventBounce.php b/ext/civi_mail/Civi/Api4/MailingEventBounce.php
similarity index 100%
rename from Civi/Api4/MailingEventBounce.php
rename to ext/civi_mail/Civi/Api4/MailingEventBounce.php
diff --git a/Civi/Api4/MailingEventConfirm.php b/ext/civi_mail/Civi/Api4/MailingEventConfirm.php
similarity index 100%
rename from Civi/Api4/MailingEventConfirm.php
rename to ext/civi_mail/Civi/Api4/MailingEventConfirm.php
diff --git a/Civi/Api4/MailingEventOpened.php b/ext/civi_mail/Civi/Api4/MailingEventOpened.php
similarity index 100%
rename from Civi/Api4/MailingEventOpened.php
rename to ext/civi_mail/Civi/Api4/MailingEventOpened.php
diff --git a/Civi/Api4/MailingEventQueue.php b/ext/civi_mail/Civi/Api4/MailingEventQueue.php
similarity index 100%
rename from Civi/Api4/MailingEventQueue.php
rename to ext/civi_mail/Civi/Api4/MailingEventQueue.php
diff --git a/Civi/Api4/MailingEventSubscribe.php b/ext/civi_mail/Civi/Api4/MailingEventSubscribe.php
similarity index 100%
rename from Civi/Api4/MailingEventSubscribe.php
rename to ext/civi_mail/Civi/Api4/MailingEventSubscribe.php
diff --git a/Civi/Api4/MailingEventTrackableURLOpen.php b/ext/civi_mail/Civi/Api4/MailingEventTrackableURLOpen.php
similarity index 100%
rename from Civi/Api4/MailingEventTrackableURLOpen.php
rename to ext/civi_mail/Civi/Api4/MailingEventTrackableURLOpen.php
diff --git a/Civi/Api4/MailingEventUnsubscribe.php b/ext/civi_mail/Civi/Api4/MailingEventUnsubscribe.php
similarity index 100%
rename from Civi/Api4/MailingEventUnsubscribe.php
rename to ext/civi_mail/Civi/Api4/MailingEventUnsubscribe.php
diff --git a/Civi/Api4/MailingGroup.php b/ext/civi_mail/Civi/Api4/MailingGroup.php
similarity index 100%
rename from Civi/Api4/MailingGroup.php
rename to ext/civi_mail/Civi/Api4/MailingGroup.php
diff --git a/Civi/Api4/MailingJob.php b/ext/civi_mail/Civi/Api4/MailingJob.php
similarity index 100%
rename from Civi/Api4/MailingJob.php
rename to ext/civi_mail/Civi/Api4/MailingJob.php
diff --git a/Civi/Api4/MailingTrackableURL.php b/ext/civi_mail/Civi/Api4/MailingTrackableURL.php
similarity index 100%
rename from Civi/Api4/MailingTrackableURL.php
rename to ext/civi_mail/Civi/Api4/MailingTrackableURL.php
diff --git a/ext/civi_mail/info.xml b/ext/civi_mail/info.xml
index 3e4c7bd27390..11d02d4f2664 100644
--- a/ext/civi_mail/info.xml
+++ b/ext/civi_mail/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Mailing
23.02.1
diff --git a/Civi/Api4/Membership.php b/ext/civi_member/Civi/Api4/Membership.php
similarity index 100%
rename from Civi/Api4/Membership.php
rename to ext/civi_member/Civi/Api4/Membership.php
diff --git a/Civi/Api4/MembershipBlock.php b/ext/civi_member/Civi/Api4/MembershipBlock.php
similarity index 100%
rename from Civi/Api4/MembershipBlock.php
rename to ext/civi_member/Civi/Api4/MembershipBlock.php
diff --git a/Civi/Api4/MembershipStatus.php b/ext/civi_member/Civi/Api4/MembershipStatus.php
similarity index 100%
rename from Civi/Api4/MembershipStatus.php
rename to ext/civi_member/Civi/Api4/MembershipStatus.php
diff --git a/Civi/Api4/MembershipType.php b/ext/civi_member/Civi/Api4/MembershipType.php
similarity index 100%
rename from Civi/Api4/MembershipType.php
rename to ext/civi_member/Civi/Api4/MembershipType.php
diff --git a/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php b/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php
rename to ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php
diff --git a/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php b/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php
similarity index 100%
rename from Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php
rename to ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php
diff --git a/ext/civi_member/info.xml b/ext/civi_member/info.xml
index ee02946a0514..8b7b35754209 100644
--- a/ext/civi_member/info.xml
+++ b/ext/civi_member/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Member
23.02.1
diff --git a/Civi/Api4/Pledge.php b/ext/civi_pledge/Civi/Api4/Pledge.php
similarity index 100%
rename from Civi/Api4/Pledge.php
rename to ext/civi_pledge/Civi/Api4/Pledge.php
diff --git a/Civi/Api4/PledgePayment.php b/ext/civi_pledge/Civi/Api4/PledgePayment.php
similarity index 100%
rename from Civi/Api4/PledgePayment.php
rename to ext/civi_pledge/Civi/Api4/PledgePayment.php
diff --git a/ext/civi_pledge/info.xml b/ext/civi_pledge/info.xml
index f60fcd6d18e0..e49c880c3066 100644
--- a/ext/civi_pledge/info.xml
+++ b/ext/civi_pledge/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Pledge
23.02.1
diff --git a/Civi/Api4/ReportInstance.php b/ext/civi_report/Civi/Api4/ReportInstance.php
similarity index 100%
rename from Civi/Api4/ReportInstance.php
rename to ext/civi_report/Civi/Api4/ReportInstance.php
diff --git a/ext/civi_report/info.xml b/ext/civi_report/info.xml
index c2fb39c3c25f..d8179e344608 100644
--- a/ext/civi_report/info.xml
+++ b/ext/civi_report/info.xml
@@ -24,6 +24,9 @@
+
+ scan-classes@1.0.0
+
CRM/Report
23.02.1
diff --git a/tests/phpunit/api/v4/Entity/ConformanceTest.php b/tests/phpunit/api/v4/Entity/ConformanceTest.php
index 38932ace7501..f33baccef562 100644
--- a/tests/phpunit/api/v4/Entity/ConformanceTest.php
+++ b/tests/phpunit/api/v4/Entity/ConformanceTest.php
@@ -85,10 +85,6 @@ public function tearDown(): void {
* @throws \CRM_Core_Exception
*/
public function getEntitiesHitech(): array {
- // Ensure all components are enabled so their entities show up
- foreach (array_keys(\CRM_Core_Component::getComponents()) as $component) {
- \CRM_Core_BAO_ConfigSetting::enableComponent($component);
- }
return $this->toDataProviderArray(Entity::get(FALSE)->execute()->column('name'));
}
@@ -102,20 +98,22 @@ public function getEntitiesHitech(): array {
* @return array
*/
public function getEntitiesLotech(): array {
- // TODO: Auto-scan required core extensions like search_kit
- $manual['add'] = ['SearchDisplay', 'SearchSegment'];
- $manual['remove'] = ['CustomValue'];
+ // Core + required core extensions
+ $directores = ['', 'ext/search_kit/', 'ext/civi_*/'];
+ $manual['remove'] = ['CustomValue', 'SKEntity'];
$manual['transform'] = ['CiviCase' => 'Case'];
$scanned = [];
- $srcDir = dirname(__DIR__, 5);
- foreach ((array) glob("$srcDir/Civi/Api4/*.php") as $name) {
- $fileName = basename($name, '.php');
- $scanned[] = $manual['transform'][$fileName] ?? $fileName;
+ $baseDir = dirname(__DIR__, 5);
+ foreach ($directores as $directory) {
+ foreach ((array) glob("$baseDir/{$directory}Civi/Api4/*.php") as $name) {
+ $fileName = basename($name, '.php');
+ $scanned[] = $manual['transform'][$fileName] ?? $fileName;
+ }
}
$names = array_diff(
- array_unique(array_merge($scanned, $manual['add'])),
+ $scanned,
$manual['remove']
);
diff --git a/tests/phpunit/api/v4/Entity/EntityTest.php b/tests/phpunit/api/v4/Entity/EntityTest.php
index 0d7c437a4e82..271e94cfcaab 100644
--- a/tests/phpunit/api/v4/Entity/EntityTest.php
+++ b/tests/phpunit/api/v4/Entity/EntityTest.php
@@ -19,7 +19,6 @@
namespace api\v4\Entity;
-use Civi\API\Exception\NotImplementedException;
use Civi\Api4\Entity;
use api\v4\Api4TestBase;
@@ -29,14 +28,11 @@
class EntityTest extends Api4TestBase {
public function testEntityGet() {
- \CRM_Core_BAO_ConfigSetting::enableComponent('CiviEvent');
$result = Entity::get(FALSE)
->execute()
->indexBy('name');
$this->assertArrayHasKey('Entity', $result,
"Entity::get missing itself");
- $this->assertArrayHasKey('Participant', $result,
- "Entity::get missing Participant");
$this->assertEquals('CRM_Contact_DAO_Contact', $result['Contact']['dao']);
$this->assertEquals(['DAOEntity'], $result['Contact']['type']);
@@ -63,15 +59,6 @@ public function testEntityComponent() {
$this->assertArrayNotHasKey('Participant', $result,
"Entity::get should not have Participant when CiviEvent disabled");
- // Trying to use a CiviEvent API will fail when component is disabled
- try {
- \Civi\Api4\Participant::get(FALSE)->execute();
- $this->fail();
- }
- catch (NotImplementedException $e) {
- $this->assertStringContainsString('CiviEvent', $e->getMessage());
- }
-
\CRM_Core_BAO_ConfigSetting::enableComponent('CiviEvent');
$result = Entity::get(FALSE)
->execute()