本文整理汇总了PHP中CRM_Core_BAO_Address::mergeSameAddress方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_BAO_Address::mergeSameAddress方法的具体用法?PHP CRM_Core_BAO_Address::mergeSameAddress怎么用?PHP CRM_Core_BAO_Address::mergeSameAddress使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_BAO_Address
的用法示例。
在下文中一共展示了CRM_Core_BAO_Address::mergeSameAddress方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: postProcess
//.........这里部分代码省略.........
foreach ($tokens as $category => $catTokens) {
foreach ($catTokens as $token => $tokenName) {
$tokenFields[] = $token;
}
}
foreach ($this->_contactIds as $value) {
foreach ($custom as $cfID) {
if (isset($details[0][$value]["custom_{$cfID}"])) {
$details[0][$value]["custom_{$cfID}"] = CRM_Core_BAO_CustomField::displayValue($details[0][$value]["custom_{$cfID}"], $cfID);
}
}
$contact = CRM_Utils_Array::value($value, $details['0']);
if (is_a($contact, 'CRM_Core_Error')) {
return NULL;
}
// we need to remove all the "_id"
unset($contact['contact_id']);
if ($locName && !empty($contact[$locName])) {
// If location type is not primary, $contact contains
// one more array as "$contact[$locName] = array( values... )"
if (!self::tokenIsFound($contact, $mailingFormatProperties, $tokenFields)) {
continue;
}
$contact = array_merge($contact, $contact[$locName]);
unset($contact[$locName]);
if (!empty($contact['county_id'])) {
unset($contact['county_id']);
}
foreach ($contact as $field => $fieldValue) {
$rows[$value][$field] = $fieldValue;
}
$valuesothers = array();
$paramsothers = array('contact_id' => $value);
$valuesothers = CRM_Core_BAO_Location::getValues($paramsothers, $valuesothers);
if (!empty($fv['location_type_id'])) {
foreach ($valuesothers as $vals) {
if (CRM_Utils_Array::value('location_type_id', $vals) == CRM_Utils_Array::value('location_type_id', $fv)) {
foreach ($vals as $k => $v) {
if (in_array($k, array('email', 'phone', 'im', 'openid'))) {
if ($k == 'im') {
$rows[$value][$k] = $v['1']['name'];
} else {
$rows[$value][$k] = $v['1'][$k];
}
$rows[$value][$k . '_id'] = $v['1']['id'];
}
}
}
}
}
} else {
if (!self::tokenIsFound($contact, $mailingFormatProperties, $tokenFields)) {
continue;
}
if (!empty($contact['addressee_display'])) {
$contact['addressee_display'] = trim($contact['addressee_display']);
}
if (!empty($contact['addressee'])) {
$contact['addressee'] = $contact['addressee_display'];
}
// now create the rows for generating mailing labels
foreach ($contact as $field => $fieldValue) {
$rows[$value][$field] = $fieldValue;
}
}
}
if (isset($fv['merge_same_address'])) {
CRM_Core_BAO_Address::mergeSameAddress($rows);
$individualFormat = TRUE;
}
// format the addresses according to CIVICRM_ADDRESS_FORMAT (CRM-1327)
foreach ($rows as $id => $row) {
if ($commMethods = CRM_Utils_Array::value('preferred_communication_method', $row)) {
$val = array_filter(explode(CRM_Core_DAO::VALUE_SEPARATOR, $commMethods));
$comm = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'preferred_communication_method');
$temp = array();
foreach ($val as $vals) {
$temp[] = $comm[$vals];
}
$row['preferred_communication_method'] = implode(', ', $temp);
}
$row['id'] = $id;
$formatted = CRM_Utils_Address::format($row, 'mailing_format', FALSE, TRUE, $individualFormat, $tokenFields);
// CRM-2211: UFPDF doesn't have bidi support; use the PECL fribidi package to fix it.
// On Ubuntu (possibly Debian?) be aware of http://pecl.php.net/bugs/bug.php?id=12366
// Due to FriBidi peculiarities, this can't be called on
// a multi-line string, hence the explode+implode approach.
if (function_exists('fribidi_log2vis')) {
$lines = explode("\n", $formatted);
foreach ($lines as $i => $line) {
$lines[$i] = fribidi_log2vis($line, FRIBIDI_AUTO, FRIBIDI_CHARSET_UTF8);
}
$formatted = implode("\n", $lines);
}
$rows[$id] = array($formatted);
}
//call function to create labels
self::createLabel($rows, $fv['label_name']);
CRM_Utils_System::civiExit(1);
}
示例2: postProcess
/**
* Process the form after the input has been submitted and validated.
*
*
* @return void
*/
public function postProcess()
{
$formValues = $this->controller->exportValues($this->_name);
$locationTypeID = $formValues['location_type_id'];
$respectDoNotMail = CRM_Utils_Array::value('do_not_mail', $formValues);
$labelName = $formValues['label_name'];
$mergeSameAddress = CRM_Utils_Array::value('merge_same_address', $formValues);
$mergeSameHousehold = CRM_Utils_Array::value('merge_same_household', $formValues);
$isPerMembership = CRM_Utils_Array::value('per_membership', $formValues);
if ($isPerMembership && ($mergeSameAddress || $mergeSameHousehold)) {
// this shouldn't happen - perhaps is could if JS is disabled
CRM_Core_Session::setStatus(ts('As you are printing one label per membership your merge settings are being ignored'));
$mergeSameAddress = $mergeSameHousehold = FALSE;
}
// so no-one is tempted to refer to this again after relevant values are extracted
unset($formValues);
list($rows, $tokenFields) = CRM_Contact_Form_Task_LabelCommon::getRows($this->_contactIds, $locationTypeID, $respectDoNotMail, $mergeSameAddress, $mergeSameHousehold);
$individualFormat = FALSE;
if ($mergeSameAddress) {
CRM_Core_BAO_Address::mergeSameAddress($rows);
$individualFormat = TRUE;
}
if ($mergeSameHousehold) {
$rows = CRM_Contact_Form_Task_LabelCommon::mergeSameHousehold($rows);
$individualFormat = TRUE;
}
// format the addresses according to CIVICRM_ADDRESS_FORMAT (CRM-1327)
foreach ((array) $rows as $id => $row) {
if ($commMethods = CRM_Utils_Array::value('preferred_communication_method', $row)) {
$val = array_filter(explode(CRM_Core_DAO::VALUE_SEPARATOR, $commMethods));
$comm = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'preferred_communication_method');
$temp = array();
foreach ($val as $vals) {
$temp[] = $comm[$vals];
}
$row['preferred_communication_method'] = implode(', ', $temp);
}
$row['id'] = $id;
$formatted = CRM_Utils_Address::format($row, 'mailing_format', FALSE, TRUE, $individualFormat, $tokenFields);
$rows[$id] = array($formatted);
}
if ($isPerMembership) {
$labelRows = array();
$memberships = civicrm_api3('membership', 'get', array('id' => array('IN' => $this->_memberIds), 'return' => 'contact_id'));
foreach ($memberships['values'] as $id => $membership) {
if (isset($rows[$membership['contact_id']])) {
$labelRows[$id] = $rows[$membership['contact_id']];
}
}
} else {
$labelRows = $rows;
}
//call function to create labels
CRM_Contact_Form_Task_LabelCommon::createLabel($labelRows, $labelName);
CRM_Utils_System::civiExit(1);
}
示例3: postProcess
function postProcess()
{
$values = $this->_contactIds;
$config = CRM_Core_Config::singleton();
$msg_id = $this->_submitValues['message_template'];
if (!empty($msg_id)) {
$mysql = " SELECT * FROM veda_civicrm_wordmailmerge WHERE msg_template_id = %1";
$params = array(1 => array($msg_id, 'Integer'));
$dao = CRM_Core_DAO::executeQuery($mysql, $params);
//$dao = CRM_Core_DAO::executeQuery($mysql);
while ($dao->fetch()) {
$fileId = $dao->file_id;
}
$sql = "SELECT * FROM civicrm_file WHERE id = %1";
$params = array(1 => array($fileId, 'Integer'));
$dao = CRM_Core_DAO::executeQuery($sql, $params);
//$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
$default['fileID'] = $dao->id;
$default['mime_type'] = $dao->mime_type;
$default['fileName'] = $dao->uri;
$default['cleanName'] = CRM_Utils_File::cleanFileName($dao->uri);
$default['fullPath'] = $config->customFileUploadDir . DIRECTORY_SEPARATOR . $dao->uri;
$default['deleteURLArgs'] = CRM_Core_BAO_File::deleteURLArgs('civicrm_file', $msg_id, $dao->id);
}
$defaults[$dao->id] = $default;
$this->assign('defaults', $defaults);
$noofContact = count($this->_contactIds);
require_once $config->extensionsDir . '/uk.co.vedaconsulting.module.wordmailmerge/tinybutstrong/tbs_class.php';
require_once $config->extensionsDir . '/uk.co.vedaconsulting.module.wordmailmerge/tinybutstrong-opentbs/tbs_plugin_opentbs.php';
$TBS = new clsTinyButStrong();
// new instance of TBS
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
// load the OpenTBS plugin
$template = $default['fullPath'];
// contactrows to check for duplicate address
$contactrows = array();
foreach ($values as $key => $value) {
$SelectedcontactID = $values[$key];
// get the details for all selected contacts
list($contactDetails) = CRM_Utils_Token::getTokenDetails(array($SelectedcontactID), $this->_returnProperties, NULL, NULL, FALSE, $this->_allTokens);
// populate contactrows array to check dupliacte address
$contactrows[$SelectedcontactID] = $contactDetails[$SelectedcontactID];
}
// if merge_letter_for_same_address selected check for duplicate address
if (isset($this->_submitValues['merge_letter_for_same_address']) && $this->_submitValues['merge_letter_for_same_address']) {
CRM_Core_BAO_Address::mergeSameAddress($contactrows);
}
foreach ($values as $key => $value) {
if ($key < $noofContact) {
$selectedCID = $values[$key];
$contactFormatted = array();
// if contact_id found in filtered contactrows array get contact details from contactrows
if (array_key_exists($selectedCID, $contactrows)) {
$contactFormatted[$selectedCID] = $contactrows[$selectedCID];
$membershipFormatted = array();
if ($this->_searchFrom == 'member' && isset($contactFormatted[$selectedCID]['membership_id'])) {
$membershipFormatted = CRM_Utils_Token::getMembershipTokenDetails($contactFormatted[$selectedCID]['membership_id']);
}
foreach ($this->_tokenMerge as $atKey => $atValue) {
// Replace hook tokens
$explodedTokenName = explode('.', $atValue['token_name']);
// this is fixed by assigning 'address_block' token into 'contact' token array // gopi@vedaconsulting.co.uk
//need to do proper fix seems token named as contact.address_block
// $atValue['token_name'] = ($atValue['token_name'] == 'address_block') ? 'contact.'.$atValue['token_name'] : $atValue['token_name'];
if (array_key_exists($atValue['token_name'], $contactFormatted[$selectedCID])) {
if (!empty($explodedTokenName[1]) && $explodedTokenName[0] != 'contact') {
$vars[$key][$explodedTokenName[0]][$explodedTokenName[1]] = $contactFormatted[$selectedCID][$atValue['token_name']];
} else {
$vars[$key][$atValue['token_name']] = $contactFormatted[$selectedCID][$atValue['token_name']];
}
} else {
if ($explodedTokenName[0] == 'membership') {
$explodedTokenName[1] = $explodedTokenName[1] == 'membership_id' ? 'id' : $explodedTokenName[1];
$vars[$key][$explodedTokenName[0]][$explodedTokenName[1]] = CRM_Utils_Token::getMembershipTokenReplacement($explodedTokenName[1], $membershipFormatted[$contactFormatted[$selectedCID]['membership_id']]);
} else {
$vars[$key][$atValue['token_name']] = CRM_Utils_Token::getContactTokenReplacement($atValue['token_name'], $contactFormatted[$selectedCID], FALSE, FALSE);
}
}
//need to do proper fix, token_name.date seems not returning null value if not found
if ($explodedTokenName[0] == 'token_name' && !is_array($vars[$key]['token_name'])) {
$vars[$key][$atValue['token_name']] = '';
}
}
//to skip error, if by chance using membership token in 'find contact' search
if ($this->_searchFrom != 'member') {
foreach (CRM_Core_SelectValues::membershipTokens() as $token => $label) {
$token = str_replace(array('{', '}'), "", $token);
$tokenNames = explode('.', $token);
$vars[$key]['membership'][$tokenNames[1]] = $label;
}
}
foreach ($vars[$key] as $varKey => $varValue) {
$explodeValues = explode('.', $varKey);
if (isset($explodeValues[1]) && !empty($explodeValues[1])) {
$vars[$key][$explodeValues[0]][$explodeValues[1]] = $vars[$key][$varKey];
unset($vars[$key][$varKey]);
}
}
// blank lines removed while creating the address_block - gopi@vedaconsulting.co.uk
//.........这里部分代码省略.........