Newer
Older
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/**
* @author Jaap Jansma <jaap.jansma@civicoop.org>
* @license AGPL-3.0
*/
namespace Civi\DataProcessor\DataSpecification;
class Utils {
/**
* Add fields from a DAO class to a data specification object
*
* @param $daoClass
* @param \Civi\DataProcessor\DataSpecification\DataSpecification $dataSpecification
* @param array $fieldsToSkip
* @param string $namePrefix
* @param string $aliasPrefix
* @param string $titlePrefix
*
* @throws \Civi\DataProcessor\DataSpecification\FieldExistsException
*/
public static function addDAOFieldsToDataSpecification($daoClass, DataSpecification $dataSpecification, $fieldsToSkip=array(), $namePrefix='', $aliasPrefix='', $titlePrefix='') {
$fields = $daoClass::fields();
foreach($fields as $field) {
if (in_array($field['name'], $fieldsToSkip)) {
continue;
}
$type = \CRM_Utils_Type::typeToString($field['type']);
$options = $daoClass::buildOptions($field['name']);
$alias = $aliasPrefix.$field['name'];
$name = $namePrefix.$field['name'];
$title = $titlePrefix.$field['title'];
$fieldSpec = new FieldSpecification($name, $type, $title, $options, $alias);
$dataSpecification->addFieldSpecification($fieldSpec->name, $fieldSpec);
}
}
/**
* Add custom fields to a data specification object
*
* @param $entity
* @param DataSpecification $dataSpecification
* @param bool $onlySearchAbleFields
* @param $aliasPrefix
* @param $titlePrefix
* @throws \Civi\DataProcessor\DataSpecification\FieldExistsException
* @throws \Exception
*/
public static function addCustomFieldsToDataSpecification($entity, DataSpecification $dataSpecification, $onlySearchAbleFields, $aliasPrefix = '') {
$customGroupToReturnParam = [
'custom_field' => [
'id',
'name',
'label',
'column_name',
'data_type',
'html_type',
'default_value',
'attributes',
'is_required',
'is_view',
'is_searchable',
'help_pre',
'help_post',
'options_per_line',
'start_date_years',
'end_date_years',
'date_format',
'time_format',
'option_group_id',
'in_selector',
],
'custom_group' => [
'id',
'name',
'table_name',
'title',
'help_pre',
'help_post',
'collapse_display',
'style',
'is_multiple',
'extends',
'extends_entity_column_id',
'extends_entity_column_value',
'max_multiple',
],
];
$customGroups = \CRM_Core_BAO_CustomGroup::getTree($entity, $customGroupToReturnParam, NULL, NULL, NULL, NULL, NULL, NULL, TRUE, FALSE, FALSE);
foreach ($customGroups as $cgId => $customGroup) {
if ($cgId == 'info') {
continue;
}
foreach ($customGroup['fields'] as $field) {
if (!$onlySearchAbleFields || (isset($field['is_searchable']) && $field['is_searchable'])) {
$alias = $aliasPrefix . $customGroup['name'] . '_' . $field['name'];
$customFieldSpec = new CustomFieldSpecification(
$customGroup['name'], $customGroup['table_name'], $customGroup['title'],
$alias
);
$dataSpecification->addFieldSpecification($customFieldSpec->name, $customFieldSpec);
}
}
}
}