本文整理汇总了PHP中CRM_Contact_DAO_Relationship::fetch方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Contact_DAO_Relationship::fetch方法的具体用法?PHP CRM_Contact_DAO_Relationship::fetch怎么用?PHP CRM_Contact_DAO_Relationship::fetch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Contact_DAO_Relationship
的用法示例。
在下文中一共展示了CRM_Contact_DAO_Relationship::fetch方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addCaseRelationships
/**
* Function to add/copy relationships, when new client is added for a case
*
* @param int $caseId case id
* @param int $contactId contact id / new client id
*
* @return void
*/
static function addCaseRelationships($caseId, $contactId)
{
// get the case role / relationships for the case
$caseRelationships = new CRM_Contact_DAO_Relationship();
$caseRelationships->case_id = $caseId;
$caseRelationships->find();
$relationshipTypes = array();
// make sure we don't add duplicate relationships of same relationship type.
while ($caseRelationships->fetch() && !in_array($caseRelationships->relationship_type_id, $relationshipTypes)) {
$values = array();
CRM_Core_DAO::storeValues($caseRelationships, $values);
// add relationship for new client.
$newRelationship = new CRM_Contact_DAO_Relationship();
$newRelationship->copyValues($values);
$newRelationship->id = NULL;
$newRelationship->case_id = $caseId;
$newRelationship->contact_id_a = $contactId;
$newRelationship->end_date = CRM_Utils_Date::isoToMysql($caseRelationships->end_date);
$newRelationship->start_date = CRM_Utils_Date::isoToMysql($caseRelationships->start_date);
// another check to avoid duplicate relationship, in cases where client is removed and re-added again.
if (!$newRelationship->find(TRUE)) {
$newRelationship->save();
}
$newRelationship->free();
// store relationship type of newly created relationship
$relationshipTypes[] = $caseRelationships->relationship_type_id;
}
}
示例2: relationship
public static function relationship()
{
$relType = CRM_Utils_Request::retrieve('rel_type', 'Positive', CRM_Core_DAO::$_nullObject, TRUE);
$relContactID = CRM_Utils_Request::retrieve('rel_contact', 'Positive', CRM_Core_DAO::$_nullObject, TRUE);
$relationshipID = CRM_Utils_Request::retrieve('rel_id', 'Positive', CRM_Core_DAO::$_nullObject);
// this used only to determine add or update mode
$caseID = CRM_Utils_Request::retrieve('case_id', 'Positive', CRM_Core_DAO::$_nullObject, TRUE);
// check if there are multiple clients for this case, if so then we need create
// relationship and also activities for each contacts
// get case client list
$clientList = CRM_Case_BAO_Case::getCaseClients($caseID);
$ret = array('is_error' => 0);
foreach ($clientList as $sourceContactID) {
$relationParams = array('relationship_type_id' => $relType . '_a_b', 'contact_check' => array($relContactID => 1), 'is_active' => 1, 'case_id' => $caseID, 'start_date' => date("Ymd"));
$relationIds = array('contact' => $sourceContactID);
// check if we are editing/updating existing relationship
if ($relationshipID && $relationshipID != 'null') {
// here we need to retrieve appropriate relationshipID based on client id and relationship type id
$caseRelationships = new CRM_Contact_DAO_Relationship();
$caseRelationships->case_id = $caseID;
$caseRelationships->relationship_type_id = $relType;
$caseRelationships->contact_id_a = $sourceContactID;
$caseRelationships->find();
while ($caseRelationships->fetch()) {
$relationIds['relationship'] = $caseRelationships->id;
$relationIds['contactTarget'] = $relContactID;
}
$caseRelationships->free();
}
// create new or update existing relationship
$return = CRM_Contact_BAO_Relationship::legacyCreateMultiple($relationParams, $relationIds);
if (!empty($return[4][0])) {
$relationshipID = $return[4][0];
//create an activity for case role assignment.CRM-4480
CRM_Case_BAO_Case::createCaseRoleActivity($caseID, $relationshipID, $relContactID);
} else {
$ret = array('is_error' => 1, 'error_message' => ts('The relationship type definition for the case role is not valid for the client and / or staff contact types. You can review and edit relationship types at <a href="%1">Administer >> Option Lists >> Relationship Types</a>.', array(1 => CRM_Utils_System::url('civicrm/admin/reltype', 'reset=1'))));
}
}
CRM_Utils_JSON::output($ret);
}
示例3: getRelationship
/**
* Get a list of relationships.
*
* @param int $contactId
* Contact id.
* @param int $status
* 1: Past 2: Disabled 3: Current.
* @param int $numRelationship
* No of relationships to display (limit).
* @param int $count
* Get the no of relationships.
* @param int $relationshipId
* @param array $links
* the list of links to display
* @param int $permissionMask
* the permission mask to be applied for the actions
* @param bool $permissionedContact
* to return only permissioned Contact
* @param array $params
*
* @return array|int
* relationship records
*/
public static function getRelationship($contactId = NULL, $status = 0, $numRelationship = 0, $count = 0, $relationshipId = 0, $links = NULL, $permissionMask = NULL, $permissionedContact = FALSE, $params = array())
{
$values = array();
if (!$contactId && !$relationshipId) {
return $values;
}
list($select1, $from1, $where1) = self::makeURLClause($contactId, $status, $numRelationship, $count, $relationshipId, 'a_b', $params);
list($select2, $from2, $where2) = self::makeURLClause($contactId, $status, $numRelationship, $count, $relationshipId, 'b_a', $params);
$order = $limit = '';
if (!$count) {
if (empty($params['sort'])) {
$order = ' ORDER BY civicrm_relationship_type_id, sort_name ';
} else {
$order = " ORDER BY {$params['sort']} ";
}
$offset = 0;
if (!empty($params['offset']) && $params['offset'] > 0) {
$offset = $params['offset'];
}
if ($numRelationship) {
$limit = " LIMIT {$offset}, {$numRelationship}";
}
}
// building the query string
$queryString = $select1 . $from1 . $where1 . $select2 . $from2 . $where2 . $order . $limit;
$relationship = new CRM_Contact_DAO_Relationship();
$relationship->query($queryString);
$row = array();
if ($count) {
$relationshipCount = 0;
while ($relationship->fetch()) {
$relationshipCount += $relationship->cnt1 + $relationship->cnt2;
}
return $relationshipCount;
} else {
$mask = NULL;
if ($status != self::INACTIVE) {
if ($links) {
$mask = array_sum(array_keys($links));
if ($mask & CRM_Core_Action::DISABLE) {
$mask -= CRM_Core_Action::DISABLE;
}
if ($mask & CRM_Core_Action::ENABLE) {
$mask -= CRM_Core_Action::ENABLE;
}
if ($status == self::CURRENT) {
$mask |= CRM_Core_Action::DISABLE;
} elseif ($status == self::DISABLED) {
$mask |= CRM_Core_Action::ENABLE;
}
$mask = $mask & $permissionMask;
}
}
while ($relationship->fetch()) {
$rid = $relationship->civicrm_relationship_id;
$cid = $relationship->civicrm_contact_id;
if ($permissionedContact && !CRM_Contact_BAO_Contact_Permission::allow($cid)) {
continue;
}
$values[$rid]['id'] = $rid;
$values[$rid]['cid'] = $cid;
$values[$rid]['contact_id_a'] = $relationship->contact_id_a;
$values[$rid]['contact_id_b'] = $relationship->contact_id_b;
$values[$rid]['contact_type'] = $relationship->contact_type;
$values[$rid]['relationship_type_id'] = $relationship->civicrm_relationship_type_id;
$values[$rid]['relation'] = $relationship->relation;
$values[$rid]['name'] = $relationship->sort_name;
$values[$rid]['display_name'] = $relationship->display_name;
$values[$rid]['job_title'] = $relationship->job_title;
$values[$rid]['email'] = $relationship->email;
$values[$rid]['phone'] = $relationship->phone;
$values[$rid]['employer_id'] = $relationship->employer_id;
$values[$rid]['organization_name'] = $relationship->organization_name;
$values[$rid]['country'] = $relationship->country;
$values[$rid]['city'] = $relationship->city;
$values[$rid]['state'] = $relationship->state;
$values[$rid]['start_date'] = $relationship->start_date;
//.........这里部分代码省略.........
示例4: mergeSameHousehold
function mergeSameHousehold(&$rows)
{
# group selected contacts by type
$individuals = array();
$households = array();
foreach ($rows as $contact_id => $row) {
if ($row['contact_type'] == 'Household') {
$households[$contact_id] = $row;
} elseif ($row['contact_type'] == 'Individual') {
$individuals[$contact_id] = $row;
}
}
# exclude individuals belonging to selected households
foreach ($households as $household_id => $row) {
$dao = new CRM_Contact_DAO_Relationship();
$dao->contact_id_b = $household_id;
$dao->find();
while ($dao->fetch()) {
$individual_id = $dao->contact_id_a;
if (array_key_exists($individual_id, $individuals)) {
unset($individuals[$individual_id]);
}
}
}
# merge back individuals and households
$rows = array_merge($individuals, $households);
return $rows;
}
示例5: relationship
static function relationship()
{
$relType = CRM_Utils_Array::value('rel_type', $_REQUEST);
$relContactID = CRM_Utils_Array::value('rel_contact', $_REQUEST);
$sourceContactID = CRM_Utils_Array::value('contact_id', $_REQUEST);
// we no longer need this.
$relationshipID = CRM_Utils_Array::value('rel_id', $_REQUEST);
// this used only to determine add or update mode
$caseID = CRM_Utils_Array::value('case_id', $_REQUEST);
// check if there are multiple clients for this case, if so then we need create
// relationship and also activities for each contacts
// get case client list
$clientList = CRM_Case_BAO_Case::getCaseClients($caseID);
foreach ($clientList as $sourceContactID) {
$relationParams = array('relationship_type_id' => $relType . '_a_b', 'contact_check' => array($relContactID => 1), 'is_active' => 1, 'case_id' => $caseID, 'start_date' => date("Ymd"));
$relationIds = array('contact' => $sourceContactID);
// check if we are editing/updating existing relationship
if ($relationshipID && $relationshipID != 'null') {
// here we need to retrieve appropriate relationshipID based on client id and relationship type id
$caseRelationships = new CRM_Contact_DAO_Relationship();
$caseRelationships->case_id = $caseID;
$caseRelationships->relationship_type_id = $relType;
$caseRelationships->contact_id_a = $sourceContactID;
$caseRelationships->find();
while ($caseRelationships->fetch()) {
$relationIds['relationship'] = $caseRelationships->id;
$relationIds['contactTarget'] = $relContactID;
}
$caseRelationships->free();
}
// create new or update existing relationship
$return = CRM_Contact_BAO_Relationship::create($relationParams, $relationIds);
$status = 'process-relationship-fail';
if (CRM_Utils_Array::value(0, $return[4])) {
$relationshipID = $return[4][0];
$status = 'process-relationship-success';
//create an activity for case role assignment.CRM-4480
CRM_Case_BAO_Case::createCaseRoleActivity($caseID, $relationshipID, $relContactID);
}
}
$relation['status'] = $status;
echo json_encode($relation);
CRM_Utils_System::civiExit();
}
示例6: mergeCases
/**
* Function perform two task.
* 1. Merge two duplicate contacts cases - follow CRM-5758 rules.
* 2. Merge two cases of same contact - follow CRM-5598 rules.
*
* @param int $mainContactId contact id of main contact record.
* @param int $mainCaseId case id of main case record.
* @param int $otherContactId contact id of record which is going to merge.
* @param int $otherCaseId case id of record which is going to merge.
*
* @return void.
* @static
*/
function mergeCases($mainContactId, $mainCaseId = NULL, $otherContactId = NULL, $otherCaseId = NULL, $changeClient = FALSE)
{
$moveToTrash = TRUE;
$duplicateContacts = FALSE;
if ($mainContactId && $otherContactId && $mainContactId != $otherContactId) {
$duplicateContacts = TRUE;
}
$duplicateCases = FALSE;
if ($mainCaseId && $otherCaseId && $mainCaseId != $otherCaseId) {
$duplicateCases = TRUE;
}
$mainCaseIds = array();
if (!$duplicateContacts && !$duplicateCases) {
return $mainCaseIds;
}
$activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name');
$activityStatuses = CRM_Core_PseudoConstant::activityStatus('name');
$processCaseIds = array($otherCaseId);
if ($duplicateContacts && !$duplicateCases) {
if ($changeClient) {
$processCaseIds = array($mainCaseId);
} else {
//get all case ids for other contact.
$processCaseIds = self::retrieveCaseIdsByContactId($otherContactId, TRUE);
}
if (!is_array($processCaseIds)) {
return;
}
}
$session = CRM_Core_Session::singleton();
$currentUserId = $session->get('userID');
// copy all cases and connect to main contact id.
foreach ($processCaseIds as $otherCaseId) {
if ($duplicateContacts) {
$mainCase = CRM_Core_DAO::copyGeneric('CRM_Case_DAO_Case', array('id' => $otherCaseId));
$mainCaseId = $mainCase->id;
if (!$mainCaseId) {
continue;
}
$mainCase->free();
$mainCaseIds[] = $mainCaseId;
//insert record for case contact.
$otherCaseContact = new CRM_Case_DAO_CaseContact();
$otherCaseContact->case_id = $otherCaseId;
$otherCaseContact->find();
while ($otherCaseContact->fetch()) {
$mainCaseContact = new CRM_Case_DAO_CaseContact();
$mainCaseContact->case_id = $mainCaseId;
$mainCaseContact->contact_id = $otherCaseContact->contact_id;
if ($mainCaseContact->contact_id == $otherContactId) {
$mainCaseContact->contact_id = $mainContactId;
}
//avoid duplicate object.
if (!$mainCaseContact->find(TRUE)) {
$mainCaseContact->save();
}
$mainCaseContact->free();
}
$otherCaseContact->free();
} elseif (!$otherContactId) {
$otherContactId = $mainContactId;
}
if (!$mainCaseId || !$otherCaseId || !$mainContactId || !$otherContactId) {
continue;
}
// get all activities for other case.
$otherCaseActivities = array();
CRM_Core_DAO::commonRetrieveAll('CRM_Case_DAO_CaseActivity', 'case_id', $otherCaseId, $otherCaseActivities);
//for duplicate cases do not process singleton activities.
$otherActivityIds = $singletonActivityIds = array();
foreach ($otherCaseActivities as $caseActivityId => $otherIds) {
$otherActId = CRM_Utils_Array::value('activity_id', $otherIds);
if (!$otherActId || in_array($otherActId, $otherActivityIds)) {
continue;
}
$otherActivityIds[] = $otherActId;
}
if ($duplicateCases) {
if ($openCaseType = array_search('Open Case', $activityTypes)) {
$sql = "\nSELECT id\n FROM civicrm_activity \n WHERE activity_type_id = {$openCaseType} \n AND id IN ( " . implode(',', array_values($otherActivityIds)) . ');';
$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
$singletonActivityIds[] = $dao->id;
}
$dao->free();
}
}
//.........这里部分代码省略.........