copyValues($params); $assignment->record_type_id = $assigneeID; if (isset($assignment->assignee_contact_id)) { $assignment->contact_id = $assignment->assignee_contact_id; } return $assignment->save(); } /** * Retrieve assignee_id by activity_id * * @param int $id ID of the activity * * @return void * * @access public * */ static function retrieveAssigneeIdsByActivityId($activity_id) { $assigneeArray = array(); if (!CRM_Utils_Rule::positiveInteger($activity_id)) { return $assigneeArray; } $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $sql = " SELECT contact_id FROM civicrm_activity_contact INNER JOIN civicrm_contact ON contact_id = civicrm_contact.id WHERE activity_id = %1 AND record_type_id = $assigneeID AND civicrm_contact.is_deleted = 0 "; $assignment = CRM_Core_DAO::executeQuery($sql, array(1 => array($activity_id, 'Integer'))); while ($assignment->fetch()) { $assigneeArray[] = $assignment->contact_id; } return $assigneeArray; } /** * Retrieve assignee names by activity_id * * @param int $id ID of the activity * @param boolean $isDisplayName if set returns display names of assignees * @param boolean $skipDetails if false returns all details of assignee contact. * * @return array * * @access public * */ static function getAssigneeNames($activityID, $isDisplayName = FALSE, $skipDetails = TRUE) { $assigneeNames = array(); if (empty($activityID)) { return $assigneeNames; } $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $whereClause = ""; if (!$skipDetails) { $whereClause = " AND ce.is_primary= 1"; } $query = " SELECT contact_a.id, contact_a.sort_name, contact_a.display_name, ce.email FROM civicrm_contact contact_a INNER JOIN civicrm_activity_contact ON civicrm_activity_contact.contact_id = contact_a.id LEFT JOIN civicrm_email ce ON ce.contact_id = contact_a.id WHERE civicrm_activity_contact.activity_id = %1 AND contact_a.is_deleted = 0 AND civicrm_activity_contact.record_type_id = $assigneeID {$whereClause} "; $queryParam = array(1 => array($activityID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $queryParam); while ($dao->fetch()) { if (!$isDisplayName) { $assigneeNames[$dao->id] = $dao->sort_name; } else { if ($skipDetails) { $assigneeNames[$dao->id] = $dao->display_name; } else { $assigneeNames[$dao->id]['contact_id'] = $dao->id; $assigneeNames[$dao->id]['display_name'] = $dao->display_name; $assigneeNames[$dao->id]['sort_name'] = $dao->sort_name; $assigneeNames[$dao->id]['email'] = $dao->email; $assigneeNames[$dao->id]['role'] = ts('Activity Assignee'); } } } return $assigneeNames; } }