/** * Method to save segment settings * * @param array $formValues */ private function saveSegmentSetting($formValues) { $params = array(); $params['parent_label'] = $formValues['parent_label']; $params['child_label'] = $formValues['child_label']; foreach ($formValues['parent_roles'] as $parentRole) { $roleName = CRM_Contactsegment_Utils::getRoleNameWithLabel($parentRole); if (isset($this->_segmentConfig['parent_roles'][$roleName])) { $params['parent_roles'][$roleName] = $this->_segmentConfig['parent_roles'][$roleName]; } else { $params['parent_roles'][$roleName] = array('label' => $parentRole, 'unique' => 0); } } foreach ($formValues['child_roles'] as $childRole) { $roleName = CRM_Contactsegment_Utils::getRoleNameWithLabel($childRole); if (isset($this->_segmentConfig['child_roles'][$roleName])) { $params['child_roles'][$roleName] = $this->_segmentConfig['child_roles'][$roleName]; } } $this->_segmentConfig = civicrm_api3('SegmentSetting', 'create', $params); }
/** * Method to validate if role is allowed for segment * * @param array $fields * @return array $errors or TRUE * @access public * @static */ static function validateRoleAllowed($fields) { $errors = array(); $segmentSettings = civicrm_api3('SegmentSetting', 'Getsingle', array()); $roleName = CRM_Contactsegment_Utils::getRoleNameWithLabel($fields['contact_segment_role']); if ($fields['contact_segment_role']) { if ($fields['segment_child']) { if (!isset($segmentSettings['child_roles'][$roleName])) { $errors['contact_segment_role'] = ts('Role not allowed for ' . $segmentSettings['child_label']); $errors['segment_child'] = ts('Role not allowed for ' . $segmentSettings['child_label']); return $errors; } } if ($fields['segment_parent']) { if (!isset($segmentSettings['parent_roles'][$roleName])) { $errors['contact_segment_role'] = ts('Role not allowed for ' . $segmentSettings['parent_label']); $errors['segment_parent'] = ts('Role not allowed for ' . $segmentSettings['parent_label']); return $errors; } } } return TRUE; }