* @param int $caseID
* Case id.
* @param int $relationshipID
+ * @param bool $activeOnly
*
* @return array
* case role / relationships
*
*/
- public static function getCaseRoles($contactID, $caseID, $relationshipID = NULL) {
+ public static function getCaseRoles($contactID, $caseID, $relationshipID = NULL, $activeOnly = TRUE) {
$query = '
SELECT rel.id as civicrm_relationship_id,
con.sort_name as sort_name,
LEFT JOIN civicrm_phone ON (civicrm_phone.contact_id = con.id AND civicrm_phone.is_primary = 1)
LEFT JOIN civicrm_email ON (civicrm_email.contact_id = con.id AND civicrm_email.is_primary = 1)
WHERE (rel.contact_id_a = %1 OR rel.contact_id_b = %1) AND rel.case_id = %2
- AND rel.is_active = 1 AND con.is_deleted = 0 AND (rel.end_date IS NULL OR rel.end_date > NOW())';
+ AND con.is_deleted = 0';
+
+ if ($activeOnly) {
+ $query .= ' AND rel.is_active = 1 AND (rel.end_date IS NULL OR rel.end_date > NOW())';
+ }
$params = array(
1 => array($contactID, 'Positive'),
// Reopen case-specific relationships (roles)
foreach ($params['target_contact_id'] as $cid) {
- $rels = CRM_Case_BAO_Case::getCaseRoles($cid, $params['case_id']);
+ $rels = CRM_Case_BAO_Case::getCaseRoles($cid, $params['case_id'], NULL, FALSE);
// FIXME: Is there an existing function?
$query = 'UPDATE civicrm_relationship SET end_date=NULL WHERE id=%1';
foreach ($rels as $relId => $relData) {
foreach ($relationships['values'] as $key => $values) {
$this->assertEquals($values['end_date'], date('Y-m-d'));
}
+
+ //Verify there are no active relationships.
+ $activeCaseRelationships = CRM_Case_BAO_Case::getCaseRoles($result['values'][$id]['client_id'][1], $id);
+ $this->assertEquals(count($activeCaseRelationships), 0, "Checking for empty array");
+
+ //Check if getCaseRoles() is able to return inactive relationships.
+ $caseRelationships = CRM_Case_BAO_Case::getCaseRoles($result['values'][$id]['client_id'][1], $id, NULL, FALSE);
+ $this->assertEquals(count($caseRelationships), 1);
}
/**