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.
$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');
/**
* 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.
*/
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
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
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']);