/**
* Prepares parameters to be used for create/update actions
*
- * @param array $params
+ * @param array $values
*
* @return array
*/
- private function preparePostProcessParameters($params) {
- $relationshipTypeParts = explode('_', $params['relationship_type_id']);
+ private function preparePostProcessParameters($values) {
+ $params = $values;
+ list($relationshipTypeId, $relationshipContactA, $relationshipContactB) = explode('_', $params['relationship_type_id']);
- $params['relationship_type_id'] = $relationshipTypeParts[0];
- $params['contact_id_' . $relationshipTypeParts[1]] = $this->_contactId;
+ $params['relationship_type_id'] = $relationshipTypeId;
+ $params['contact_id_' . $relationshipContactA] = $this->_contactId;
if (empty($this->_relationshipId)) {
- $params['contact_id_' . $relationshipTypeParts[2]] = explode(',', $params['related_contact_id']);
+ $params['contact_id_' . $relationshipContactB] = explode(',', $params['related_contact_id']);
}
else {
$params['id'] = $this->_relationshipId;
- $params['contact_id_' . $relationshipTypeParts[2]] = $params['related_contact_id'];
+ $params['contact_id_' . $relationshipContactB] = $params['related_contact_id'];
foreach (array('start_date', 'end_date') as $dateParam) {
if (!empty($params[$dateParam])) {
}
}
- // CRM-14612 - Don't use adv-checkbox as it interferes with the form js
- $params['is_permission_a_b'] = CRM_Utils_Array::value('is_permission_a_b', $params, 0);
- $params['is_permission_b_a'] = CRM_Utils_Array::value('is_permission_b_a', $params, 0);
+ // The javascript on the form will swap these fields if it is a b_a relationship, so we compensate here
+ $relationshipType = "${relationshipContactA}_${relationshipContactB}";
+ $params['is_permission_a_b'] = CRM_Utils_Array::value('is_permission_' . $relationshipType, $values, 0);
+ $params['is_permission_b_a'] = CRM_Utils_Array::value('is_permission_' . strrev($relationshipType), $values, 0);
- return array($params, $relationshipTypeParts[1]);
+ return array($params, $relationshipContactA);
}
/**