Apiv4 - Move component api files to component extensions
authorcolemanw <coleman@civicrm.org>
Fri, 12 May 2023 19:28:41 +0000 (15:28 -0400)
committercolemanw <coleman@civicrm.org>
Wed, 7 Jun 2023 22:53:06 +0000 (18:53 -0400)
This moves the code belonging to components into their extension directories. As before, these apis will only be available if the component is enabled, but now there is no extra code needed to make that happen.

86 files changed:
Civi/API/Request.php
Civi/Api4/Action/Entity/Get.php
ext/civi_campaign/Civi/Api4/Action/Campaign/Get.php [moved from Civi/Api4/Action/Campaign/Get.php with 100% similarity]
ext/civi_campaign/Civi/Api4/Campaign.php [moved from Civi/Api4/Campaign.php with 100% similarity]
ext/civi_campaign/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php with 100% similarity]
ext/civi_campaign/Civi/Api4/Survey.php [moved from Civi/Api4/Survey.php with 100% similarity]
ext/civi_campaign/info.xml
ext/civi_case/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php [moved from Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php with 100% similarity]
ext/civi_case/Civi/Api4/Action/CiviCase/Create.php [moved from Civi/Api4/Action/CiviCase/Create.php with 100% similarity]
ext/civi_case/Civi/Api4/Action/CiviCase/Save.php [moved from Civi/Api4/Action/CiviCase/Save.php with 100% similarity]
ext/civi_case/Civi/Api4/Action/CiviCase/Update.php [moved from Civi/Api4/Action/CiviCase/Update.php with 100% similarity]
ext/civi_case/Civi/Api4/CaseActivity.php [moved from Civi/Api4/CaseActivity.php with 100% similarity]
ext/civi_case/Civi/Api4/CaseContact.php [moved from Civi/Api4/CaseContact.php with 100% similarity]
ext/civi_case/Civi/Api4/CaseType.php [moved from Civi/Api4/CaseType.php with 100% similarity]
ext/civi_case/Civi/Api4/CiviCase.php [moved from Civi/Api4/CiviCase.php with 100% similarity]
ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php with 100% similarity]
ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php with 100% similarity]
ext/civi_case/info.xml
ext/civi_contribute/Civi/Api4/Action/Contribution/ContributionSaveTrait.php [moved from Civi/Api4/Action/Contribution/ContributionSaveTrait.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Action/Contribution/Create.php [moved from Civi/Api4/Action/Contribution/Create.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Action/Contribution/Save.php [moved from Civi/Api4/Action/Contribution/Save.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Action/Contribution/Update.php [moved from Civi/Api4/Action/Contribution/Update.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Contribution.php [moved from Civi/Api4/Contribution.php with 100% similarity]
ext/civi_contribute/Civi/Api4/ContributionPage.php [moved from Civi/Api4/ContributionPage.php with 100% similarity]
ext/civi_contribute/Civi/Api4/ContributionProduct.php [moved from Civi/Api4/ContributionProduct.php with 100% similarity]
ext/civi_contribute/Civi/Api4/ContributionRecur.php [moved from Civi/Api4/ContributionRecur.php with 100% similarity]
ext/civi_contribute/Civi/Api4/ContributionSoft.php [moved from Civi/Api4/ContributionSoft.php with 100% similarity]
ext/civi_contribute/Civi/Api4/EntityFinancialAccount.php [moved from Civi/Api4/EntityFinancialAccount.php with 100% similarity]
ext/civi_contribute/Civi/Api4/EntityFinancialTrxn.php [moved from Civi/Api4/EntityFinancialTrxn.php with 100% similarity]
ext/civi_contribute/Civi/Api4/FinancialAccount.php [moved from Civi/Api4/FinancialAccount.php with 100% similarity]
ext/civi_contribute/Civi/Api4/FinancialItem.php [moved from Civi/Api4/FinancialItem.php with 100% similarity]
ext/civi_contribute/Civi/Api4/FinancialTrxn.php [moved from Civi/Api4/FinancialTrxn.php with 100% similarity]
ext/civi_contribute/Civi/Api4/FinancialType.php [moved from Civi/Api4/FinancialType.php with 100% similarity]
ext/civi_contribute/Civi/Api4/LineItem.php [moved from Civi/Api4/LineItem.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PCP.php [moved from Civi/Api4/PCP.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PCPBlock.php [moved from Civi/Api4/PCPBlock.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PaymentProcessor.php [moved from Civi/Api4/PaymentProcessor.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PaymentProcessorType.php [moved from Civi/Api4/PaymentProcessorType.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PaymentToken.php [moved from Civi/Api4/PaymentToken.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PriceField.php [moved from Civi/Api4/PriceField.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PriceFieldValue.php [moved from Civi/Api4/PriceFieldValue.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PriceSet.php [moved from Civi/Api4/PriceSet.php with 100% similarity]
ext/civi_contribute/Civi/Api4/PriceSetEntity.php [moved from Civi/Api4/PriceSetEntity.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Product.php [moved from Civi/Api4/Product.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php with 100% similarity]
ext/civi_contribute/info.xml
ext/civi_event/Civi/Api4/Action/Event/Get.php [moved from Civi/Api4/Action/Event/Get.php with 100% similarity]
ext/civi_event/Civi/Api4/Event.php [moved from Civi/Api4/Event.php with 100% similarity]
ext/civi_event/Civi/Api4/Participant.php [moved from Civi/Api4/Participant.php with 100% similarity]
ext/civi_event/Civi/Api4/ParticipantStatusType.php [moved from Civi/Api4/ParticipantStatusType.php with 100% similarity]
ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php with 100% similarity]
ext/civi_event/info.xml
ext/civi_mail/Civi/Api4/Action/MailSettings/TestConnection.php [moved from Civi/Api4/Action/MailSettings/TestConnection.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailSettings.php [moved from Civi/Api4/MailSettings.php with 100% similarity]
ext/civi_mail/Civi/Api4/Mailing.php [moved from Civi/Api4/Mailing.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventBounce.php [moved from Civi/Api4/MailingEventBounce.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventConfirm.php [moved from Civi/Api4/MailingEventConfirm.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventOpened.php [moved from Civi/Api4/MailingEventOpened.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventQueue.php [moved from Civi/Api4/MailingEventQueue.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventSubscribe.php [moved from Civi/Api4/MailingEventSubscribe.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventTrackableURLOpen.php [moved from Civi/Api4/MailingEventTrackableURLOpen.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingEventUnsubscribe.php [moved from Civi/Api4/MailingEventUnsubscribe.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingGroup.php [moved from Civi/Api4/MailingGroup.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingJob.php [moved from Civi/Api4/MailingJob.php with 100% similarity]
ext/civi_mail/Civi/Api4/MailingTrackableURL.php [moved from Civi/Api4/MailingTrackableURL.php with 100% similarity]
ext/civi_mail/info.xml
ext/civi_member/Civi/Api4/Membership.php [moved from Civi/Api4/Membership.php with 100% similarity]
ext/civi_member/Civi/Api4/MembershipBlock.php [moved from Civi/Api4/MembershipBlock.php with 100% similarity]
ext/civi_member/Civi/Api4/MembershipStatus.php [moved from Civi/Api4/MembershipStatus.php with 100% similarity]
ext/civi_member/Civi/Api4/MembershipType.php [moved from Civi/Api4/MembershipType.php with 100% similarity]
ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php with 100% similarity]
ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php [moved from Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php with 100% similarity]
ext/civi_member/info.xml
ext/civi_pledge/Civi/Api4/Pledge.php [moved from Civi/Api4/Pledge.php with 100% similarity]
ext/civi_pledge/Civi/Api4/PledgePayment.php [moved from Civi/Api4/PledgePayment.php with 100% similarity]
ext/civi_pledge/info.xml
ext/civi_report/Civi/Api4/ReportInstance.php [moved from Civi/Api4/ReportInstance.php with 100% similarity]
ext/civi_report/info.xml
tests/phpunit/api/v4/Entity/EntityTest.php

index 8b7a087f2ef21b3fe96ba455a029ab129447894b..c26d230a88cf7adb00a73976dd9f9e7e3c40f29a 100644 (file)
@@ -48,12 +48,7 @@ class Request {
         $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');
index d6e80485c9854b4d60d49c2a7ace214b1031da73..3c799ca8ae636c0df84d84c7e55216757da54651 100644 (file)
@@ -15,7 +15,7 @@ namespace Civi\Api4\Action\Entity;
 /**
  * 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
index 477b14da4ec0430f1dfd3b1bf21df68f14669496..ff6b21ca2eea2aa32860aa3aa423f4cbf21f26a2 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Campaign</namespace>
     <format>23.02.1</format>
index 794a9842c989ebfb18e95c01d741eb0ab96712f3..694c9057c079c065bbae8172f4a0a8e76bb78975 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Case</namespace>
     <format>23.02.1</format>
index a1bf60c36221c13c38deef934953bc94dc9a50e7..094a59d3486f19bd4bdee3fe46984aadd1676407 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Contribute</namespace>
     <format>23.02.1</format>
index 33b0e58c3c1441b2cd0eff4e87d7bd891df385eb..bfd7f159426e5aea7004ceba55833fc87de0f867 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Event</namespace>
     <format>23.02.1</format>
index 3e4c7bd27390221a053f630b4e3cc2fff2aae376..11d02d4f2664fc85d692a8e235f19930f27af091 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Mailing</namespace>
     <format>23.02.1</format>
index ee02946a05146159e5ff3cec3611cbbde5b5b15e..8b7b35754209be51402d94c779f965f61b91edf0 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Member</namespace>
     <format>23.02.1</format>
index f60fcd6d18e0047d376e8cc59f6eced7ce89ffe3..e49c880c3066bd34882df506ed92d684e0072335 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Pledge</namespace>
     <format>23.02.1</format>
index c2fb39c3c25f2b7303dd73047aef47c3c25f450f..d8179e3446080badbc5eb2bf5b724d5df9c31663 100644 (file)
@@ -24,6 +24,9 @@
     <psr0 prefix="CRM_" path="."/>
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
+  <mixins>
+    <mixin>scan-classes@1.0.0</mixin>
+  </mixins>
   <civix>
     <namespace>CRM/Report</namespace>
     <format>23.02.1</format>
index 0d7c437a4e8218e7d9728aa586748b2bdf35eb1e..904a1454e8cb4fd773fc6fe816f836de829c627f 100644 (file)
@@ -29,14 +29,11 @@ use api\v4\Api4TestBase;
 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']);