blob: ee274bf90be6737de5e163ea57c4667b29333aea (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php
namespace Civi\Api4\Action\Entity;
use \CRM_Core_DAO_AllCoreTables as AllCoreTables;
/**
* Get a list of FK links between entities
*/
class GetLinks extends \Civi\Api4\Generic\BasicGetAction {
public function getRecords() {
$result = [];
/** @var \Civi\Api4\Service\Schema\SchemaMap $schema */
$schema = \Civi::container()->get('schema_map');
foreach ($schema->getTables() as $table) {
$entity = AllCoreTables::getBriefName(AllCoreTables::getClassForTable($table->getName()));
// Since this is an api function, exclude tables that don't have an api
if (class_exists('\Civi\Api4\\' . $entity)) {
$item = [
'entity' => $entity,
'table' => $table->getName(),
'links' => [],
];
foreach ($table->getTableLinks() as $link) {
$link = $link->toArray();
$link['entity'] = AllCoreTables::getBriefName(AllCoreTables::getClassForTable($link['targetTable']));
$item['links'][] = $link;
}
$result[] = $item;
}
}
return $result;
}
public function fields() {
return [
[
'name' => 'entity',
],
[
'name' => 'table',
],
[
'name' => 'links',
'data_type' => 'Array',
],
];
}
}
|