本文整理汇总了PHP中CRM_Contact_BAO_Relationship::getRelationship方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Contact_BAO_Relationship::getRelationship方法的具体用法?PHP CRM_Contact_BAO_Relationship::getRelationship怎么用?PHP CRM_Contact_BAO_Relationship::getRelationship使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Contact_BAO_Relationship
的用法示例。
在下文中一共展示了CRM_Contact_BAO_Relationship::getRelationship方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: browse
/**
* This function is called when action is browse
*
* return null
* @access public
*/
function browse()
{
$links =& CRM_Contact_Page_View_Relationship::links();
$mask = CRM_Core_Action::mask($this->_permission);
$currentRelationships = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, CRM_CONTACT_BAO_RELATIONSHIP_CURRENT, 0, 0, 0, $links, $mask);
$pastRelationships = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, CRM_CONTACT_BAO_RELATIONSHIP_PAST, 0, 0, 0, $links, $mask);
$disableRelationships = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, CRM_CONTACT_BAO_RELATIONSHIP_DISABLED, 0, 0, 0, $links, $mask);
$this->assign('currentRelationships', $currentRelationships);
$this->assign('pastRelationships', $pastRelationships);
$this->assign('disableRelationships', $disableRelationships);
}
示例2: isUserTeamAdmin
static function isUserTeamAdmin($userId)
{
if (empty($userId)) {
return NULL;
}
require_once 'CRM/Contact/BAO/Relationship.php';
$getUserRelationships = CRM_Contact_BAO_Relationship::getRelationship($userId, CRM_Contact_BAO_Relationship::CURRENT);
// Team Admin Relationship
$relTypeAdmin = CRM_Pcpteams_Constant::C_TEAM_ADMIN_REL_TYPE;
$adminRelTypeId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_RelationshipType', $relTypeAdmin, 'id', 'name_a_b');
foreach ($getUserRelationships as $value) {
//check the user is admin of team. return team id if found one
if ($value['relationship_type_id'] == $adminRelTypeId) {
return array('id' => $value['contact_id_b'], 'state' => 'Team');
}
}
return null;
}
示例3: view
/**
* View details of a relationship.
*/
public function view()
{
$viewRelationship = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, NULL, NULL, NULL, $this->_id);
//To check whether selected contact is a contact_id_a in
//relationship type 'a_b' in relationship table, if yes then
//revert the permissionship text in template
$relationship = new CRM_Contact_DAO_Relationship();
$relationship->id = $viewRelationship[$this->_id]['id'];
if ($relationship->find(TRUE)) {
if ($viewRelationship[$this->_id]['rtype'] == 'a_b' && $this->_contactId == $relationship->contact_id_a) {
$this->assign("is_contact_id_a", TRUE);
}
}
$relType = $viewRelationship[$this->_id]['civicrm_relationship_type_id'];
$this->assign('viewRelationship', $viewRelationship);
$employerId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_contactId, 'employer_id');
$this->assign('isCurrentEmployer', FALSE);
$relTypes = CRM_Utils_Array::index(array('name_a_b'), CRM_Core_PseudoConstant::relationshipType('name'));
if ($viewRelationship[$this->_id]['employer_id'] == $this->_contactId) {
$this->assign('isCurrentEmployer', TRUE);
} elseif ($relType == $relTypes['Employee of']['id'] && $viewRelationship[$this->_id]['cid'] == $employerId) {
// make sure we are viewing employee of relationship
$this->assign('isCurrentEmployer', TRUE);
}
$viewNote = CRM_Core_BAO_Note::getNote($this->_id);
$this->assign('viewNote', $viewNote);
$groupTree = CRM_Core_BAO_CustomGroup::getTree('Relationship', $this, $this->_id, 0, $relType);
CRM_Core_BAO_CustomGroup::buildCustomDataView($this, $groupTree, FALSE, NULL, NULL, NULL, $this->_id);
$rType = CRM_Utils_Array::value('rtype', $viewRelationship[$this->_id]);
// add viewed contribution to recent items list
$url = CRM_Utils_System::url('civicrm/contact/view/rel', "action=view&reset=1&id={$viewRelationship[$this->_id]['id']}&cid={$this->_contactId}&context=home");
$session = CRM_Core_Session::singleton();
$recentOther = array();
if ($session->get('userID') == $this->_contactId || CRM_Contact_BAO_Contact_Permission::allow($this->_contactId, CRM_Core_Permission::EDIT)) {
$recentOther = array('editUrl' => CRM_Utils_System::url('civicrm/contact/view/rel', "action=update&reset=1&id={$viewRelationship[$this->_id]['id']}&cid={$this->_contactId}&rtype={$rType}&context=home"), 'deleteUrl' => CRM_Utils_System::url('civicrm/contact/view/rel', "action=delete&reset=1&id={$viewRelationship[$this->_id]['id']}&cid={$this->_contactId}&rtype={$rType}&context=home"));
}
$displayName = CRM_Contact_BAO_Contact::displayName($this->_contactId);
$this->assign('displayName', $displayName);
CRM_Utils_System::setTitle(ts('View Relationship for') . ' ' . $displayName);
$title = $displayName . ' (' . $viewRelationship[$this->_id]['relation'] . ' ' . CRM_Contact_BAO_Contact::displayName($viewRelationship[$this->_id]['cid']) . ')';
// add the recently viewed Relationship
CRM_Utils_Recent::add($title, $url, $viewRelationship[$this->_id]['id'], 'Relationship', $this->_contactId, NULL, $recentOther);
}
示例4: getCaseClientRelationships
public static function getCaseClientRelationships()
{
$caseID = CRM_Utils_Type::escape($_GET['caseID'], 'Integer');
$contactID = CRM_Utils_Type::escape($_GET['cid'], 'Integer');
$params = CRM_Core_Page_AJAX::defaultSortAndPagerParams();
// Retrieve ALL client relationships
$relClient = CRM_Contact_BAO_Relationship::getRelationship($contactID, CRM_Contact_BAO_Relationship::CURRENT, 0, 0, 0, NULL, NULL, FALSE);
$caseRelationships = CRM_Case_BAO_Case::getCaseRoles($contactID, $caseID);
// Now build 'Other Relationships' array by removing relationships that are already listed under Case Roles
// so they don't show up twice.
$clientRelationships = array();
foreach ($relClient as $r) {
if (!array_key_exists($r['id'], $caseRelationships)) {
$clientRelationships[] = $r;
}
}
// sort clientRelationships array using jquery call params
foreach ($clientRelationships as $key => $row) {
$sortArray[$key] = $row[$params['_raw_values']['sort'][0]];
}
$sort_type = "SORT_" . strtoupper($params['_raw_values']['order'][0]);
array_multisort($sortArray, constant($sort_type), $clientRelationships);
$relationships = array();
// after sort we can update username fields to be a url
foreach ($clientRelationships as $key => $value) {
$relationship = array();
$relationship['relation'] = $value['relation'];
$relationship['name'] = '<a href=' . CRM_Utils_System::url('civicrm/contact/view', 'action=view&reset=1&cid=' . $clientRelationships[$key]['cid']) . '>' . $clientRelationships[$key]['name'] . '</a>';
$relationship['phone'] = $value['phone'];
$relationship['email'] = $value['email'];
array_push($relationships, $relationship);
}
$clientRelationshipsDT = array();
$clientRelationshipsDT['data'] = $relationships;
$clientRelationshipsDT['recordsTotal'] = count($relationships);
$clientRelationshipsDT['recordsFiltered'] = count($relationships);
CRM_Utils_JSON::output($clientRelationshipsDT);
}
示例5: array
/**
* Given the list of params in the params array, fetch the object
* and store the values in the values array
*
* @param array $params input parameters to find object
* @param array $values output values of the object
* @param array $ids the array that holds all the db ids
*
* @return array (reference) the values that could be potentially assigned to smarty
* @access public
* @static
*/
static function &getValues(&$params, &$values)
{
if (empty($params)) {
return NULL;
}
$v = array();
// get the specific number of relationship or all relationships.
if (CRM_Utils_Array::value('numRelationship', $params)) {
$v['data'] =& CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], NULL, $params['numRelationship']);
} else {
$v['data'] = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id']);
}
// get the total count of relationships
$v['totalCount'] = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], NULL, NULL, TRUE);
$values['relationship']['data'] =& $v['data'];
$values['relationship']['totalCount'] =& $v['totalCount'];
return $v;
}
示例6: buildQuickForm
/**
* Function to build the form
*
* @return void
* @access public
*/
public function buildQuickForm()
{
//this call is for show related cases.
if ($this->_showRelatedCases) {
return;
}
CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'js/crm.livePage.js')->addScriptFile('civicrm', 'templates/CRM/Case/Form/CaseView.js');
$xmlProcessor = new CRM_Case_XMLProcessor_Process();
$caseRoles = $xmlProcessor->get($this->_caseType, 'CaseRoles');
$reports = $xmlProcessor->get($this->_caseType, 'ActivitySets');
//adding case manager.CRM-4510.
$managerRoleId = $xmlProcessor->getCaseManagerRoleId($this->_caseType);
if (!empty($managerRoleId)) {
$caseRoles[$managerRoleId] = $caseRoles[$managerRoleId] . '<br />' . '(' . ts('Case Manager') . ')';
}
$aTypes = $xmlProcessor->get($this->_caseType, 'ActivityTypes', TRUE);
$allActTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name');
$emailActivityType = array_search('Email', $allActTypes);
$pdfActivityType = array_search('Print PDF Letter', $allActTypes);
// remove Open Case activity type since we're inside an existing case
if ($openActTypeId = array_search('Open Case', $allActTypes)) {
unset($aTypes[$openActTypeId]);
}
//check for link cases.
$unclosedCases = CRM_Case_BAO_Case::getUnclosedCases(NULL, array($this->_caseID));
if (empty($unclosedCases) && ($linkActTypeId = array_search('Link Cases', $allActTypes))) {
unset($aTypes[$linkActTypeId]);
}
if (!$xmlProcessor->getNaturalActivityTypeSort()) {
asort($aTypes);
}
$activityLinks = array('' => ts('Add Activity'));
foreach ($aTypes as $type => $label) {
if ($type == $emailActivityType) {
$url = CRM_Utils_System::url('civicrm/activity/email/add', "action=add&context=standalone&reset=1&caseid={$this->_caseID}&atype={$type}", FALSE, NULL, FALSE);
} else {
if ($type == $pdfActivityType) {
$url = CRM_Utils_System::url('civicrm/activity/pdf/add', "action=add&context=standalone&reset=1&cid={$this->_contactID}&caseid={$this->_caseID}&atype={$type}", FALSE, NULL, FALSE);
} else {
$url = CRM_Utils_System::url('civicrm/case/activity', "action=add&reset=1&cid={$this->_contactID}&caseid={$this->_caseID}&atype={$type}", FALSE, NULL, FALSE);
}
}
$activityLinks[$url] = $label;
}
$this->add('select', 'add_activity_type_id', '', $activityLinks, FALSE, array('class' => 'crm-select2 crm-action-menu action-icon-plus twenty'));
if ($this->_hasAccessToAllCases) {
$this->add('select', 'report_id', '', array('' => ts('Activity Audit')) + $reports, FALSE, array('class' => 'crm-select2 crm-action-menu action-icon-clipboard'));
$this->add('select', 'timeline_id', '', array('' => ts('Add Timeline')) + $reports, FALSE, array('class' => 'crm-select2 crm-action-menu action-icon-play'));
}
$this->addElement('submit', $this->getButtonName('next'), ' ', array('class' => 'hiddenElement'));
if ($this->_mergeCases) {
$allCases = CRM_Case_BAO_Case::getContactCases($this->_contactID);
$otherCases = array();
foreach ($allCases as $caseId => $details) {
//filter current and own cases.
if ($caseId == $this->_caseID || !$this->_hasAccessToAllCases && !array_key_exists($caseId, $this->_userCases)) {
continue;
}
$otherCases[$caseId] = 'Case ID: ' . $caseId . ' Type: ' . $details['case_type'] . ' Start: ' . $details['case_start_date'];
}
if (empty($otherCases)) {
$this->_mergeCases = FALSE;
$this->assign('mergeCases', $this->_mergeCases);
} else {
$this->add('select', 'merge_case_id', ts('Select Case for Merge'), array('' => ts('- select case -')) + $otherCases, FALSE, array('class' => 'crm-select2 huge'));
$this->addElement('submit', $this->getButtonName('next', 'merge_case'), ts('Merge'), array('class' => 'crm-form-submit-inline hiddenElement'));
}
}
//call activity form
self::activityForm($this);
//get case related relationships (Case Role)
$caseRelationships = CRM_Case_BAO_Case::getCaseRoles($this->_contactID, $this->_caseID);
//save special label because we unset it in the loop
$managerLabel = empty($managerRoleId) ? '' : $caseRoles[$managerRoleId];
foreach ($caseRelationships as $key => &$value) {
if (!empty($managerRoleId)) {
if ($managerRoleId == $value['relation_type']) {
$value['relation'] = $managerLabel;
}
}
//calculate roles that don't have relationships
if (!empty($caseRoles[$value['relation_type']])) {
unset($caseRoles[$value['relation_type']]);
}
}
$this->assign('caseRelationships', $caseRelationships);
//also add client as role. CRM-4438
$caseRoles['client'] = CRM_Case_BAO_Case::getContactNames($this->_caseID);
$this->assign('caseRoles', $caseRoles);
// Retrieve ALL client relationships
$relClient = CRM_Contact_BAO_Relationship::getRelationship($this->_contactID, CRM_Contact_BAO_Relationship::CURRENT, 0, 0, 0, NULL, NULL, FALSE);
// Now build 'Other Relationships' array by removing relationships that are already listed under Case Roles
// so they don't show up twice.
$clientRelationships = array();
//.........这里部分代码省略.........
示例7: checkMembershipRelationship
/**
* Function to check the membership extended through relationship
*
* @param int $membershipId membership id
* @param int $contactId contact id
*
* @return Array array of contact_id of all related contacts.
* @static
*/
static function checkMembershipRelationship($membershipId, $contactId, $action = CRM_Core_Action::ADD)
{
$contacts = array();
$membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $membershipId, 'membership_type_id');
require_once 'CRM/Member/BAO/MembershipType.php';
$membershipType = CRM_Member_BAO_MembershipType::getMembershipTypeDetails($membershipTypeID);
require_once 'CRM/Contact/BAO/Relationship.php';
$relationships = array();
if (isset($membershipType['relationship_type_id'])) {
$relationships = CRM_Contact_BAO_Relationship::getRelationship($contactId, CRM_Contact_BAO_Relationship::CURRENT);
if ($action & CRM_Core_Action::UPDATE) {
$pastRelationships = CRM_Contact_BAO_Relationship::getRelationship($contactId, CRM_Contact_BAO_Relationship::PAST);
$relationships = array_merge($relationships, $pastRelationships);
}
}
if (!empty($relationships)) {
require_once "CRM/Contact/BAO/RelationshipType.php";
// check for each contact relationships
foreach ($relationships as $values) {
//get details of the relationship type
$relType = array('id' => $values['civicrm_relationship_type_id']);
$relValues = array();
CRM_Contact_BAO_RelationshipType::retrieve($relType, $relValues);
// 1. Check if contact and membership type relationship type are same
// 2. Check if relationship direction is same or name_a_b = name_b_a
if ($values['civicrm_relationship_type_id'] == $membershipType['relationship_type_id'] && ($values['rtype'] == $membershipType['relationship_direction'] || $relValues['name_a_b'] == $relValues['name_b_a'])) {
// $values['status'] is going to have value for
// current or past relationships.
$contacts[$values['cid']] = $values['status'];
}
}
}
return $contacts;
}
示例8: buildUserDashBoard
/**
* Function to build user dashboard
*
* @return none
* @access public
*/
function buildUserDashBoard()
{
//build component selectors
$dashboardElements = array();
$config =& CRM_Core_Config::singleton();
require_once 'CRM/Core/BAO/Preferences.php';
$this->_userOptions = CRM_Core_BAO_Preferences::valueOptions('user_dashboard_options');
$components = CRM_Core_Component::getEnabledComponents();
foreach ($components as $name => $component) {
$elem = $component->getUserDashboardElement();
if (!$elem) {
continue;
}
if (CRM_Utils_Array::value($name, $this->_userOptions) && (CRM_Core_Permission::access($component->name) || CRM_Core_Permission::check($elem['perm'][0]))) {
$userDashboard = $component->getUserDashboardObject();
$dashboardElements[] = array('templatePath' => $userDashboard->getTemplateFileName(), 'sectionTitle' => $elem['title'], 'weight' => $elem['weight']);
$userDashboard->run();
}
}
$sectionName = 'Permissioned Orgs';
if ($this->_userOptions[$sectionName]) {
$dashboardElements[] = array('templatePath' => 'CRM/Contact/Page/View/Relationship.tpl', 'sectionTitle' => ts('Your Contacts / Organizations'), 'weight' => 40);
$links =& self::links();
$currentRelationships = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, CRM_Contact_BAO_Relationship::CURRENT, 0, 0, 0, $links, null, true);
$this->assign('currentRelationships', $currentRelationships);
}
if ($this->_userOptions['PCP']) {
require_once 'CRM/Contribute/BAO/PCP.php';
$dashboardElements[] = array('templatePath' => 'CRM/Contribute/Page/PcpUserDashboard.tpl', 'sectionTitle' => ts('Personal Campaign Pages'), 'weight' => 40);
list($pcpBlock, $pcpInfo) = CRM_Contribute_BAO_PCP::getPcpDashboardInfo($this->_contactId);
$this->assign('pcpBlock', $pcpBlock);
$this->assign('pcpInfo', $pcpInfo);
}
require_once 'CRM/Utils/Sort.php';
usort($dashboardElements, array('CRM_Utils_Sort', 'cmpFunc'));
$this->assign('dashboardElements', $dashboardElements);
if ($this->_userOptions['Groups']) {
$this->assign('showGroup', true);
//build group selector
require_once "CRM/Contact/Page/View/UserDashBoard/GroupContact.php";
$gContact = new CRM_Contact_Page_View_UserDashBoard_GroupContact();
$gContact->run();
} else {
$this->assign('showGroup', false);
}
}
示例9: allowEditSubtype
/**
* Function to check whether allow to edit any contact's subtype
* on the basis of custom data and relationship of specific subtype
*
* @param int $contactId contact id.
* @param string $subType subtype.
*
* @return boolean true/false.
* @static
*/
static function allowEditSubtype($contactId, $subType, $groupTree = null)
{
if (!$contactId || empty($subType)) {
return true;
}
require_once 'CRM/Contact/BAO/ContactType.php';
$contactType = CRM_Contact_BAO_ContactType::getBasicType($subType);
$subTypeGroupTree = array();
if (!array_key_exists($contactType . '_' . $subType, $subTypeGroupTree) && empty($groupTree)) {
$form = null;
require_once 'CRM/Core/BAO/CustomGroup.php';
$subTypeGroupTree[$contactType . '_' . $subType] = CRM_Core_BAO_CustomGroup::getTree($contactType, $form, $contactId, null, $subType, null);
} else {
$subTypeGroupTree[$contactType . '_' . $subType] = $groupTree;
}
if (!empty($subTypeGroupTree[$contactType . '_' . $subType])) {
foreach ($subTypeGroupTree[$contactType . '_' . $subType] as $groupId => $groupDetails) {
if (CRM_Utils_Array::value('extends_entity_column_value', $groupDetails)) {
$customValue = CRM_Utils_Array::retrieveValueRecursive($groupDetails['fields'], 'element_value');
if (!empty($customValue)) {
return false;
} else {
continue;
}
}
}
}
if (!array_key_exists('rel_' . $contactType . '_' . $subType, $subTypeGroupTree)) {
require_once 'CRM/Contact/BAO/Relationship.php';
$relationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType(null, null, null, $contactType, false, 'label', true, $subType, true);
$subTypeGroupTree['rel_' . $contactType . '_' . $subType] = $relationshipTypes;
}
$relationships = CRM_Contact_BAO_Relationship::getRelationship($contactId);
if (!empty($relationships)) {
foreach ($relationships as $relId => $details) {
if (in_array($details['relation'], $subTypeGroupTree['rel_' . $contactType . '_' . $subType])) {
return false;
} else {
continue;
}
}
}
return true;
}
示例10: getContactRelationshipSelector
/**
* Wrapper for contact relationship selector.
*
* @param array $params
* Associated array for params record id.
*
* @return array
* associated array of contact relationships
*/
public static function getContactRelationshipSelector(&$params)
{
// format the params
$params['offset'] = ($params['page'] - 1) * $params['rp'];
$params['sort'] = CRM_Utils_Array::value('sortBy', $params);
if ($params['context'] == 'past') {
$relationshipStatus = CRM_Contact_BAO_Relationship::INACTIVE;
} elseif ($params['context'] == 'all') {
$relationshipStatus = CRM_Contact_BAO_Relationship::ALL;
} else {
$relationshipStatus = CRM_Contact_BAO_Relationship::CURRENT;
}
// check logged in user for permission
$page = new CRM_Core_Page();
CRM_Contact_Page_View::checkUserPermission($page, $params['contact_id']);
$permissions = array($page->_permission);
if ($page->_permission == CRM_Core_Permission::EDIT) {
$permissions[] = CRM_Core_Permission::DELETE;
}
$mask = CRM_Core_Action::mask($permissions);
$permissionedContacts = TRUE;
if ($params['context'] != 'user') {
$links = CRM_Contact_Page_View_Relationship::links();
} else {
$links = CRM_Contact_Page_View_UserDashBoard::links();
$mask = NULL;
}
// get contact relationships
$relationships = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], $relationshipStatus, $params['rp'], 0, 0, $links, $mask, $permissionedContacts, $params);
$contactRelationships = array();
$params['total'] = 0;
if (!empty($relationships)) {
// FIXME: we cannot directly determine total permissioned relationship, hence re-fire query
$permissionedRelationships = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], $relationshipStatus, 0, 0, 0, NULL, NULL, $permissionedContacts);
$params['total'] = count($permissionedRelationships);
// format params
foreach ($relationships as $relationshipId => $values) {
$relationship = array();
$relationship['DT_RowId'] = $values['id'];
$relationship['DT_RowClass'] = 'crm-entity';
if ($values['is_active'] == 0) {
$relationship['DT_RowClass'] .= ' disabled';
}
$relationship['DT_RowAttr'] = array();
$relationship['DT_RowAttr']['data-entity'] = 'relationship';
$relationship['DT_RowAttr']['data-id'] = $values['id'];
//Add image icon for related contacts: CRM-14919
$icon = CRM_Contact_BAO_Contact_Utils::getImage($values['contact_type'], FALSE, $values['cid']);
$relationship['sort_name'] = $icon . ' ' . CRM_Utils_System::href($values['name'], 'civicrm/contact/view', "reset=1&cid={$values['cid']}");
$relationship['relation'] = CRM_Utils_System::href($values['relation'], 'civicrm/contact/view/rel', "action=view&reset=1&cid={$values['cid']}&id={$values['id']}&rtype={$values['rtype']}");
if ($params['context'] == 'current') {
if ($params['contact_id'] == $values['contact_id_a'] and $values['is_permission_a_b'] == 1 or $params['contact_id'] == $values['contact_id_b'] and $values['is_permission_b_a'] == 1) {
$relationship['sort_name'] .= '<span id="permission-a-b" class="crm-marker permission-relationship"> *</span>';
}
if ($values['cid'] == $values['contact_id_a'] and $values['is_permission_a_b'] == 1 or $values['cid'] == $values['contact_id_b'] and $values['is_permission_b_a'] == 1) {
$relationship['relation'] .= '<span id="permission-b-a" class="crm-marker permission-relationship"> *</span>';
}
}
if (!empty($values['description'])) {
$relationship['relation'] .= "<p class='description'>{$values['description']}</p>";
}
$relationship['start_date'] = CRM_Utils_Date::customFormat($values['start_date']);
$relationship['end_date'] = CRM_Utils_Date::customFormat($values['end_date']);
$relationship['city'] = $values['city'];
$relationship['state'] = $values['state'];
$relationship['email'] = $values['email'];
$relationship['phone'] = $values['phone'];
$relationship['links'] = $values['action'];
array_push($contactRelationships, $relationship);
}
}
$relationshipsDT = array();
$relationshipsDT['data'] = $contactRelationships;
$relationshipsDT['recordsTotal'] = $params['total'];
$relationshipsDT['recordsFiltered'] = $params['total'];
return $relationshipsDT;
}
示例11: getCountComponent
/**
* Given the component name and returns the count of participation of contact.
*
* @param string $component
* Input component name.
* @param int $contactId
* Input contact id.
* @param string $tableName
* Optional tableName if component is custom group.
*
* @return int
* total number in database
*/
public static function getCountComponent($component, $contactId, $tableName = NULL)
{
$object = NULL;
switch ($component) {
case 'tag':
return CRM_Core_BAO_EntityTag::getContactTags($contactId, TRUE);
case 'rel':
$result = CRM_Contact_BAO_Relationship::getRelationship($contactId, CRM_Contact_BAO_Relationship::CURRENT, 0, 1);
return $result;
case 'group':
return CRM_Contact_BAO_GroupContact::getContactGroup($contactId, "Added", NULL, TRUE);
case 'log':
if (CRM_Core_BAO_Log::useLoggingReport()) {
return FALSE;
}
return CRM_Core_BAO_Log::getContactLogCount($contactId);
case 'note':
return CRM_Core_BAO_Note::getContactNoteCount($contactId);
case 'contribution':
return CRM_Contribute_BAO_Contribution::contributionCount($contactId);
case 'membership':
return CRM_Member_BAO_Membership::getContactMembershipCount($contactId, TRUE);
case 'participant':
return CRM_Event_BAO_Participant::getContactParticipantCount($contactId);
case 'pledge':
return CRM_Pledge_BAO_Pledge::getContactPledgeCount($contactId);
case 'case':
return CRM_Case_BAO_Case::caseCount($contactId);
case 'grant':
return CRM_Grant_BAO_Grant::getContactGrantCount($contactId);
case 'activity':
$input = array('contact_id' => $contactId, 'admin' => FALSE, 'caseId' => NULL, 'context' => 'activity');
return CRM_Activity_BAO_Activity::getActivitiesCount($input);
case 'mailing':
$params = array('contact_id' => $contactId);
return CRM_Mailing_BAO_Mailing::getContactMailingsCount($params);
default:
$custom = explode('_', $component);
if ($custom['0'] = 'custom') {
if (!$tableName) {
$tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $custom['1'], 'table_name');
}
$queryString = "SELECT count(id) FROM {$tableName} WHERE entity_id = {$contactId}";
return CRM_Core_DAO::singleValueQuery($queryString);
}
}
}
示例12: browse
/**
* This function is called when action is browse
*
* return null
* @access public
*/
function browse()
{
$links =& self::links();
//CRM-4418, handling edit and delete separately.
$permissions = array($this->_permission);
if ($this->_permission == CRM_Core_Permission::EDIT) {
//previously delete was subset of edit
//so for consistency lets grant delete also.
$permissions[] = CRM_Core_Permission::DELETE;
}
$mask = CRM_Core_Action::mask($permissions);
$currentRelationships = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, CRM_Contact_BAO_Relationship::CURRENT, 0, 0, 0, $links, $mask);
$inactiveRelationships = CRM_Contact_BAO_Relationship::getRelationship($this->_contactId, CRM_Contact_BAO_Relationship::INACTIVE, 0, 0, 0, $links, $mask);
$this->assign('currentRelationships', $currentRelationships);
// to show the 'Current Relationships' title and links only when viewed
// from relationship tab, not from dashboard
$this->assign('relationshipTabContext', true);
$this->assign('inactiveRelationships', $inactiveRelationships);
}
示例13: civicrm_api3_relationship_get
/**
* Function to get the relationship
*
* @param array $params input parameters.
* @todo Result is inconsistent depending on whether contact_id is passed in :
* - if you pass in contact_id - it just returns all relationships for 'contact_id'
* - if you don't pass in contact_id then it does a filter on the relationship table (DAO based search)
*
* @return Array API Result Array
* {@getfields relationship_get}
* @example RelationshipGet.php
* @access public
*/
function civicrm_api3_relationship_get($params)
{
if (!CRM_Utils_Array::value('contact_id', $params)) {
$relationships = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, FALSE);
} else {
$relationships = array();
$relationships = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], CRM_Utils_Array::value('status_id', $params), 0, 0, CRM_Utils_Array::value('id', $params), NULL);
}
foreach ($relationships as $relationshipId => $values) {
_civicrm_api3_custom_data_get($relationships[$relationshipId], 'Relationship', $relationshipId, NULL, CRM_Utils_Array::value('relationship_type_id', $values));
}
return civicrm_api3_create_success($relationships, $params);
}
示例14: getCaseClientRelationships
public static function getCaseClientRelationships()
{
$caseID = CRM_Utils_Type::escape($_GET['caseID'], 'Integer');
$contactID = CRM_Utils_Type::escape($_GET['cid'], 'Integer');
$sortMapper = array(0 => 'relation', 1 => 'name', 2 => 'phone', 3 => 'email');
$sEcho = CRM_Utils_Type::escape($_REQUEST['sEcho'], 'Integer');
$offset = isset($_REQUEST['iDisplayStart']) ? CRM_Utils_Type::escape($_REQUEST['iDisplayStart'], 'Integer') : 0;
$rowCount = isset($_REQUEST['iDisplayLength']) ? CRM_Utils_Type::escape($_REQUEST['iDisplayLength'], 'Integer') : 25;
$sort = isset($_REQUEST['iSortCol_0']) ? CRM_Utils_Array::value(CRM_Utils_Type::escape($_REQUEST['iSortCol_0'], 'Integer'), $sortMapper) : 'relation';
$sortOrder = isset($_REQUEST['sSortDir_0']) ? CRM_Utils_Type::escape($_REQUEST['sSortDir_0'], 'String') : 'asc';
$params = $_POST;
if ($sort && $sortOrder) {
$sortSQL = $sort . ' ' . $sortOrder;
}
// Retrieve ALL client relationships
$relClient = CRM_Contact_BAO_Relationship::getRelationship($contactID, CRM_Contact_BAO_Relationship::CURRENT, 0, 0, 0, NULL, NULL, FALSE);
$caseRelationships = CRM_Case_BAO_Case::getCaseRoles($contactID, $caseID);
// Now build 'Other Relationships' array by removing relationships that are already listed under Case Roles
// so they don't show up twice.
$clientRelationships = array();
foreach ($relClient as $r) {
if (!array_key_exists($r['id'], $caseRelationships)) {
$clientRelationships[] = $r;
}
}
// sort clientRelationships array using jquery call params
foreach ($clientRelationships as $key => $row) {
$sortArray[$key] = $row[$sort];
}
$sort_type = "SORT_" . strtoupper($sortOrder);
array_multisort($sortArray, constant($sort_type), $clientRelationships);
//limit the rows
$allClientRelationships = $clientRelationships;
$clientRelationships = array_slice($allClientRelationships, $offset, $rowCount, TRUE);
// after sort we can update username fields to be a url
foreach ($clientRelationships as $key => $value) {
$clientRelationships[$key]['name'] = '<a href=' . CRM_Utils_System::url('civicrm/contact/view', 'action=view&reset=1&cid=' . $clientRelationships[$key]['cid']) . '>' . $clientRelationships[$key]['name'] . '</a>';
}
$iFilteredTotal = $iTotal = $params['total'] = count($allClientRelationships);
$selectorElements = array('relation', 'name', 'phone', 'email');
header('Content-Type: application/json');
echo CRM_Utils_JSON::encodeDataTableSelector($clientRelationships, $sEcho, $iTotal, $iFilteredTotal, $selectorElements);
CRM_Utils_System::civiExit();
}
示例15: buildQuickForm
/**
* Function to build the form
*
* @return None
* @access public
*/
public function buildQuickForm()
{
//this call is for show related cases.
if ($this->_showRelatedCases) {
return;
}
$xmlProcessor = new CRM_Case_XMLProcessor_Process();
$caseRoles = $xmlProcessor->get($this->_caseType, 'CaseRoles');
$reports = $xmlProcessor->get($this->_caseType, 'ActivitySets');
//adding case manager.CRM-4510.
$managerRoleId = $xmlProcessor->getCaseManagerRoleId($this->_caseType);
if (!empty($managerRoleId)) {
$caseRoles[$managerRoleId] = $caseRoles[$managerRoleId] . '<br />' . '(' . ts('Case Manager') . ')';
}
$aTypes = $xmlProcessor->get($this->_caseType, 'ActivityTypes', true);
require_once 'CRM/Core/PseudoConstant.php';
$allActTypes = CRM_Core_PseudoConstant::activityType(true, true, false, 'name');
// remove Open Case activity type since we're inside an existing case
if (($openActTypeId = array_search('Open Case', $allActTypes)) && array_key_exists($openActTypeId, $aTypes)) {
unset($aTypes[$openActTypeId]);
}
//check for link cases.
$unclosedCases = CRM_Case_BAO_Case::getUnclosedCases(null, array($this->_caseID));
if (empty($unclosedCases) && ($linkActTypeId = array_search('Link Cases', $allActTypes)) && array_key_exists($linkActTypeId, $aTypes)) {
unset($aTypes[$linkActTypeId]);
}
asort($aTypes);
$this->add('select', 'activity_type_id', ts('New Activity'), array('' => ts('- select activity type -')) + $aTypes);
if ($this->_hasAccessToAllCases) {
$this->add('select', 'report_id', ts('Run QA Audit / Redact'), array('' => ts('- select activity set -')) + $reports);
$this->add('select', 'timeline_id', ts('Add Timeline'), array('' => ts('- select activity set -')) + $reports);
}
$this->addElement('submit', $this->getButtonName('next'), ts('Go'), array('class' => 'form-submit-inline', 'onclick' => "return checkSelection( this );"));
if ($this->_mergeCases) {
$allCases = CRM_Case_BAO_Case::getContactCases($this->_contactID);
$otherCases = array();
foreach ($allCases as $caseId => $details) {
//filter current and own cases.
if ($caseId == $this->_caseID || !$this->_hasAccessToAllCases && !array_key_exists($caseId, $this->_userCases)) {
continue;
}
$otherCases[$caseId] = 'Case ID: ' . $caseId . ' Type: ' . $details['case_type'] . ' Start: ' . $details['case_start_date'];
}
if (empty($otherCases)) {
$this->_mergeCases = false;
$this->assign('mergeCases', $this->_mergeCases);
} else {
$this->add('select', 'merge_case_id', ts('Select Case for Merge'), array('' => ts('- select case -')) + $otherCases);
$this->addElement('submit', $this->getButtonName('next', 'merge_case'), ts('Merge'), array('class' => 'form-submit-inline', 'onclick' => "return checkSelection( this );"));
}
}
$this->add('text', 'change_client_id', ts('Assign to another Client'));
$this->add('hidden', 'contact_id', '', array('id' => 'contact_id'));
$this->addElement('submit', $this->getButtonName('next', 'edit_client'), ts('Reassign Case'), array('class' => 'form-submit-inline', 'onclick' => "return checkSelection( this );"));
$activityStatus = CRM_Core_PseudoConstant::activityStatus();
$this->add('select', 'status_id', ts('Status'), array("" => ts(' - any status - ')) + $activityStatus);
// activity dates
$this->addDate('activity_date_low', ts('Activity Dates - From'), false, array('formatType' => 'searchDate'));
$this->addDate('activity_date_high', ts('To'), false, array('formatType' => 'searchDate'));
require_once "CRM/Core/Permission.php";
if (CRM_Core_Permission::check('administer CiviCRM')) {
$this->add('checkbox', 'activity_deleted', ts('Deleted Activities'));
}
//get case related relationships (Case Role)
$caseRelationships = CRM_Case_BAO_Case::getCaseRoles($this->_contactID, $this->_caseID);
//build reporter select
$reporters = array("" => ts(' - any reporter - '));
foreach ($caseRelationships as $key => &$value) {
$reporters[$value['cid']] = $value['name'] . " ( {$value['relation']} )";
if ($managerRoleId == $value['relation_type']) {
$value['relation'] = $caseRoles[$managerRoleId];
}
//calculate roles that don't have relationships
if (CRM_Utils_Array::value($value['relation_type'], $caseRoles)) {
unset($caseRoles[$value['relation_type']]);
}
}
// take all case activity types for search filter, CRM-7187
$aTypesFilter = array();
$allCaseActTypes = CRM_Case_PseudoConstant::activityType();
foreach ($allCaseActTypes as $typeDetails) {
if (!in_array($typeDetails['name'], array('Open Case'))) {
$aTypesFilter[$typeDetails['id']] = CRM_Utils_Array::value('label', $typeDetails);
}
}
asort($aTypesFilter);
$this->add('select', 'activity_type_filter_id', ts('Activity Type'), array('' => ts('- select activity type -')) + $aTypesFilter);
$this->assign('caseRelationships', $caseRelationships);
//also add client as role. CRM-4438
$caseRoles['client'] = CRM_Case_BAO_Case::getContactNames($this->_caseID);
$this->assign('caseRoles', $caseRoles);
$this->add('select', 'reporter_id', ts('Reporter/Role'), $reporters);
// Retrieve ALL client relationships
$relClient = CRM_Contact_BAO_Relationship::getRelationship($this->_contactID, CRM_Contact_BAO_Relationship::CURRENT, 0, 0, 0, null, null, false);
//.........这里部分代码省略.........