private function AdminForm::filterCaseSets in Webform CiviCRM Integration 8.5
Adjust case role fields to match creator/manager settings for a given case type
Parameters
int|null $case_type:
Return value
array
1 call to AdminForm::filterCaseSets()
- AdminForm::buildCaseTab in src/
AdminForm.php - Case settings FIXME: This is exactly the same code as buildGrantTab. More utilities and less boilerplate needed.
File
- src/
AdminForm.php, line 733 - Webform CiviCRM module's admin form.
Class
- AdminForm
- @file Webform CiviCRM module's admin form.
Namespace
Drupal\webform_civicrmCode
private function filterCaseSets($case_type) {
$utils = \Drupal::service('webform_civicrm.utils');
$case_sets = [];
foreach ($this->sets as $sid => $set) {
if ($set['entity_type'] == 'case' && (!$case_type || empty($set['sub_types']) || in_array($case_type, $set['sub_types']))) {
if ($sid == 'caseRoles') {
// Lookup case-role names
$creator = $manager = NULL;
$case_types = $utils
->wf_crm_apivalues('case_type', 'get', [
'id' => $case_type,
]);
foreach ($case_types as $type) {
foreach ($type['definition']['caseRoles'] as $role) {
if (!empty($role['creator'])) {
$creator = $creator == $role['name'] || $creator === NULL ? $role['name'] : FALSE;
}
if (!empty($role['manager'])) {
$manager = $manager == $role['name'] || $manager === NULL ? $role['name'] : FALSE;
}
}
}
if ($creator) {
$rel_type = $utils
->wf_civicrm_api('relationshipType', 'getsingle', [
'name_b_a' => $creator,
]);
$label = $creator == $manager ? ts('Case # Creator/Manager') : ts('Case # Creator');
$set['fields']['case_creator_id']['name'] = $rel_type['label_b_a'] . ' (' . $label . ')';
unset($set['fields']['case_role_' . $rel_type['id']]);
}
if ($manager && $manager != $creator) {
$rel_type = $utils
->wf_civicrm_api('relationshipType', 'getsingle', [
'name_b_a' => $manager,
]);
$set['fields']['case_role_' . $rel_type['id']]['name'] .= ' (' . ts('Case # Manager') . ')';
}
}
$case_sets[$sid] = $set;
}
}
return $case_sets;
}