本文整理汇总了PHP中CRM_Utils_Address::format方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Utils_Address::format方法的具体用法?PHP CRM_Utils_Address::format怎么用?PHP CRM_Utils_Address::format使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Utils_Address
的用法示例。
在下文中一共展示了CRM_Utils_Address::format方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: evaluateToken
/**
* Evaluate the content of a single token.
*
* @param \Civi\Token\TokenRow $row
* The record for which we want token values.
* @param string $field
* The name of the token field.
* @param mixed $prefetch
* Any data that was returned by the prefetch().
* @return mixed
*/
public function evaluateToken(\Civi\Token\TokenRow $row, $entity, $field, $prefetch = NULL)
{
$actionSearchResult = $row->context['actionSearchResult'];
if ($field == 'location') {
$loc = array();
$stateProvince = \CRM_Core_PseudoConstant::stateProvince();
$loc['street_address'] = $actionSearchResult->street_address;
$loc['city'] = $actionSearchResult->city;
$loc['state_province'] = \CRM_Utils_Array::value($actionSearchResult->state_province_id, $stateProvince);
$loc['postal_code'] = $actionSearchResult->postal_code;
//$entityTokenParams[$tokenEntity][$field] = \CRM_Utils_Address::format($loc);
$row->tokens($entity, $field, \CRM_Utils_Address::format($loc));
} elseif ($field == 'info_url') {
$row->tokens($entity, $field, \CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $actionSearchResult->event_id, TRUE, NULL, FALSE));
} elseif ($field == 'registration_url') {
$row->tokens($entity, $field, \CRM_Utils_System::url('civicrm/event/register', 'reset=1&id=' . $actionSearchResult->event_id, TRUE, NULL, FALSE));
} elseif (in_array($field, array('start_date', 'end_date'))) {
$row->tokens($entity, $field, \CRM_Utils_Date::customFormat($actionSearchResult->{$field}));
} elseif ($field == 'balance') {
if ($actionSearchResult->entityTable == 'civicrm_contact') {
$balancePay = 'N/A';
} elseif (!empty($actionSearchResult->entityID)) {
$info = \CRM_Contribute_BAO_Contribution::getPaymentInfo($actionSearchResult->entityID, 'event');
$balancePay = \CRM_Utils_Array::value('balance', $info);
$balancePay = \CRM_Utils_Money::format($balancePay);
}
$row->tokens($entity, $field, $balancePay);
} elseif ($field == 'fee_amount') {
$row->tokens($entity, $field, \CRM_Utils_Money::format($actionSearchResult->{$field}));
} elseif (isset($actionSearchResult->{$field})) {
$row->tokens($entity, $field, $actionSearchResult->{$field});
} else {
$row->tokens($entity, $field, '');
}
}
示例2: format
/**
* function that takes an address object and gets the latitude / longitude for this
* address. Note that at a later stage, we could make this function also clean up
* the address into a more valid format
*
* @param object $address
*
* @return boolean true if we modified the address, false otherwise
* @static
*/
function format(&$values)
{
require_once 'CRM/Utils/Address.php';
// we need a valid zipcode, state and country, else we ignore
if (!CRM_Utils_Array::value('postal_code', $values) && !CRM_Utils_Array::value('state_province', $values) && !CRM_Utils_Array::value('country', $values)) {
return false;
}
if ($values['country'] != 'United States') {
return false;
}
$string = CRM_Utils_Address::format($values);
$string = str_replace("\n", ', ', $string);
if (!$string) {
return false;
}
$params = array(new XML_RPC_Value($string, 'string'));
$message = new XML_RPC_Message('geocode', $params);
$client = new XML_RPC_Client($GLOBALS['_CRM_UTILS_GEOCODE_RPC']['_uri'], $GLOBALS['_CRM_UTILS_GEOCODE_RPC']['_server']);
$response = $client->send($message);
if (!$response && !$response->faultCode()) {
return false;
}
$data = XML_RPC_decode($response->value());
if (!CRM_Utils_Array::value(0, $data)) {
return false;
}
$data = $data[0];
$values['geo_code_1'] = $data['lat'];
$values['geo_code_2'] = $data['long'];
return true;
}
示例3: testAddressFormat
public function testAddressFormat()
{
$contact = $this->callAPISuccess('contact', 'create', array('first_name' => 'Micky', 'last_name' => 'mouse', 'contact_type' => 'Individual'));
$address = $this->callAPISuccess('address', 'create', array('street_address' => '1 Happy Place', 'city' => 'Miami', 'state_province' => 'Flordia', 'country' => 'United States', 'postal_code' => 33101, 'contact_id' => $contact['id'], 'location_type_id' => 5, 'is_primary' => 1));
$addressDetails = $address['values'][$address['id']];
$countries = CRM_Core_PseudoConstant::country();
$addressDetails['country'] = $countries[$addressDetails['country_id']];
$formatted_address = CRM_Utils_Address::format($addressDetails, 'mailing_format', FALSE, TRUE);
$this->assertTrue((bool) strstr($formatted_address, 'UNITED STATES'));
}
示例4: submit
//.........这里部分代码省略.........
// These variable sets prior to renewMembership may not be required for this form. They were in
// a function this form shared with other forms.
$membershipSource = NULL;
if (!empty($this->_params['membership_source'])) {
$membershipSource = $this->_params['membership_source'];
}
$isPending = $this->_params['contribution_status_id'] == 2 ? TRUE : FALSE;
list($renewMembership) = CRM_Member_BAO_Membership::renewMembership($this->_contactID, $this->_params['membership_type_id'][1], $isTestMembership, $renewalDate, NULL, $customFieldsFormatted, $numRenewTerms, $this->_membershipId, $isPending, $contributionRecurID, $membershipSource, $this->_params['is_pay_later'], CRM_Utils_Array::value('campaign_id', $this->_params));
$this->endDate = CRM_Utils_Date::processDate($renewMembership->end_date);
$this->membershipTypeName = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $renewMembership->membership_type_id, 'name');
if (!empty($this->_params['record_contribution']) || $this->_mode) {
// set the source
$this->_params['contribution_source'] = "{$this->membershipTypeName} Membership: Offline membership renewal (by {$userName})";
//create line items
$lineItem = array();
$this->_params = $this->setPriceSetParameters($this->_params);
CRM_Price_BAO_PriceSet::processAmount($this->_priceSet['fields'], $this->_params, $lineItem[$this->_priceSetId]);
//CRM-11529 for quick config backoffice transactions
//when financial_type_id is passed in form, update the
//line items with the financial type selected in form
if ($submittedFinancialType = CRM_Utils_Array::value('financial_type_id', $this->_params)) {
foreach ($lineItem[$this->_priceSetId] as &$li) {
$li['financial_type_id'] = $submittedFinancialType;
}
}
if (!empty($lineItem)) {
$this->_params['lineItems'] = $lineItem;
$this->_params['processPriceSet'] = TRUE;
}
//assign contribution contact id to the field expected by recordMembershipContribution
if ($this->_contributorContactID != $this->_contactID) {
$this->_params['contribution_contact_id'] = $this->_contributorContactID;
if (!empty($this->_params['soft_credit_type_id'])) {
$this->_params['soft_credit'] = array('soft_credit_type_id' => $this->_params['soft_credit_type_id'], 'contact_id' => $this->_contactID);
}
}
$this->_params['contact_id'] = $this->_contactID;
//recordMembershipContribution receives params as a reference & adds one variable. This is
// not a great pattern & ideally it would not receive as a reference. We assign our params as a
// temporary variable to avoid e-notice & to make it clear to future refactorer that
// this function is NOT reliant on that var being set
$temporaryParams = array_merge($this->_params, array('membership_id' => $renewMembership->id));
CRM_Member_BAO_Membership::recordMembershipContribution($temporaryParams);
}
if (!empty($this->_params['send_receipt'])) {
$receiptFrom = $this->_params['from_email_address'];
if (!empty($this->_params['payment_instrument_id'])) {
$paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument();
$this->_params['paidBy'] = $paymentInstrument[$this->_params['payment_instrument_id']];
}
//get the group Tree
$this->_groupTree = CRM_Core_BAO_CustomGroup::getTree('Membership', $this, $this->_id, FALSE, $this->_memType);
// retrieve custom data
$customFields = $customValues = $fo = array();
foreach ($this->_groupTree as $groupID => $group) {
if ($groupID == 'info') {
continue;
}
foreach ($group['fields'] as $k => $field) {
$field['title'] = $field['label'];
$customFields["custom_{$k}"] = $field;
}
}
$members = array(array('member_id', '=', $this->_membershipId, 0, 0));
// check whether its a test drive
if ($this->_mode == 'test') {
$members[] = array('member_test', '=', 1, 0, 0);
}
CRM_Core_BAO_UFGroup::getValues($this->_contactID, $customFields, $customValues, FALSE, $members);
$this->assign_by_ref('formValues', $this->_params);
if (!empty($this->_params['contribution_id'])) {
$this->assign('contributionID', $this->_params['contribution_id']);
}
$this->assign('membership_name', CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $renewMembership->membership_type_id));
$this->assign('customValues', $customValues);
$this->assign('mem_start_date', CRM_Utils_Date::customFormat($renewMembership->start_date));
$this->assign('mem_end_date', CRM_Utils_Date::customFormat($renewMembership->end_date));
if ($this->_mode) {
// assign the address formatted up for display
$addressParts = array("street_address-{$this->_bltID}", "city-{$this->_bltID}", "postal_code-{$this->_bltID}", "state_province-{$this->_bltID}", "country-{$this->_bltID}");
$addressFields = array();
foreach ($addressParts as $part) {
list($n) = explode('-', $part);
if (isset($this->_params['billing_' . $part])) {
$addressFields[$n] = $this->_params['billing_' . $part];
}
}
$this->assign('address', CRM_Utils_Address::format($addressFields));
$this->assign('contributeMode', 'direct');
$this->assign('isAmountzero', 0);
$this->assign('is_pay_later', 0);
$this->assign('isPrimary', 1);
$this->assign('receipt_text_renewal', $this->_params['receipt_text']);
if ($this->_mode == 'test') {
$this->assign('action', '1024');
}
}
list($this->isMailSent) = CRM_Core_BAO_MessageTemplate::sendTemplate(array('groupName' => 'msg_tpl_workflow_membership', 'valueName' => 'membership_offline_receipt', 'contactId' => $this->_receiptContactId, 'from' => $receiptFrom, 'toName' => $this->_contributorDisplayName, 'toEmail' => $this->_contributorEmail, 'isTest' => $this->_mode == 'test'));
}
}
示例5: postProcess
//.........这里部分代码省略.........
$this->assign('location', $location);
}
$status = CRM_Event_PseudoConstant::participantStatus();
if ($this->_isPaidEvent) {
$paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument();
if (!$this->_mode) {
$this->assign('paidBy', CRM_Utils_Array::value($params['payment_instrument_id'], $paymentInstrument));
}
$this->assign('totalAmount', $contributionParams['total_amount']);
$this->assign('isPrimary', 1);
$this->assign('checkNumber', CRM_Utils_Array::value('check_number', $params));
}
if ($this->_mode) {
if (CRM_Utils_Array::value('billing_first_name', $params)) {
$name = $params['billing_first_name'];
}
if (CRM_Utils_Array::value('billing_middle_name', $params)) {
$name .= " {$params['billing_middle_name']}";
}
if (CRM_Utils_Array::value('billing_last_name', $params)) {
$name .= " {$params['billing_last_name']}";
}
$this->assign('billingName', $name);
// assign the address formatted up for display
$addressParts = array("street_address-{$this->_bltID}", "city-{$this->_bltID}", "postal_code-{$this->_bltID}", "state_province-{$this->_bltID}", "country-{$this->_bltID}");
$addressFields = array();
foreach ($addressParts as $part) {
list($n, $id) = explode('-', $part);
if (isset($this->_params['billing_' . $part])) {
$addressFields[$n] = $this->_params['billing_' . $part];
}
}
require_once 'CRM/Utils/Address.php';
$this->assign('address', CRM_Utils_Address::format($addressFields));
$date = CRM_Utils_Date::format($params['credit_card_exp_date']);
$date = CRM_Utils_Date::mysqlToIso($date);
$this->assign('credit_card_exp_date', $date);
$this->assign('credit_card_number', CRM_Utils_System::mungeCreditCard($params['credit_card_number']));
$this->assign('credit_card_type', $params['credit_card_type']);
$this->assign('contributeMode', 'direct');
$this->assign('isAmountzero', 0);
$this->assign('is_pay_later', 0);
$this->assign('isPrimary', 1);
}
$this->assign('register_date', $params['register_date']);
if ($params['receive_date']) {
$this->assign('receive_date', $params['receive_date']);
}
$participant = array(array('participant_id', '=', $participants[0]->id, 0, 0));
// check whether its a test drive ref CRM-3075
if (CRM_Utils_Array::value('is_test', $this->_defaultValues)) {
$participant[] = array('participant_test', '=', 1, 0, 0);
}
$template =& CRM_Core_Smarty::singleton();
$customGroup = array();
//format submitted data
foreach ($params['custom'] as $fieldID => $values) {
foreach ($values as $fieldValue) {
$customValue = array('data' => $fieldValue['value']);
$customFields[$fieldID]['id'] = $fieldID;
$formattedValue = CRM_Core_BAO_CustomGroup::formatCustomValues($customValue, $customFields[$fieldID]);
$customGroup[$customFields[$fieldID]['groupTitle']][$customFields[$fieldID]['label']] = str_replace(' ', '', $formattedValue);
}
}
foreach ($this->_contactIds as $num => $contactID) {
// Retrieve the name and email of the contact - this will be the TO for receipt email
示例6: emailReceipt
/**
* Send email receipt.
*
* @param CRM_Core_Form $form
* Form object.
* @param array $formValues
* @param object $membership
* Object.
*
* @return bool
* true if mail was sent successfully
*/
public static function emailReceipt(&$form, &$formValues, &$membership)
{
// retrieve 'from email id' for acknowledgement
$receiptFrom = $formValues['from_email_address'];
if (!empty($formValues['payment_instrument_id'])) {
$paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument();
$formValues['paidBy'] = $paymentInstrument[$formValues['payment_instrument_id']];
}
// retrieve custom data
$customFields = $customValues = array();
if (property_exists($form, '_groupTree') && !empty($form->_groupTree)) {
foreach ($form->_groupTree as $groupID => $group) {
if ($groupID == 'info') {
continue;
}
foreach ($group['fields'] as $k => $field) {
$field['title'] = $field['label'];
$customFields["custom_{$k}"] = $field;
}
}
}
$members = array(array('member_id', '=', $membership->id, 0, 0));
// check whether its a test drive
if ($form->_mode == 'test') {
$members[] = array('member_test', '=', 1, 0, 0);
}
CRM_Core_BAO_UFGroup::getValues($formValues['contact_id'], $customFields, $customValues, FALSE, $members);
if ($form->_mode) {
if (!empty($form->_params['billing_first_name'])) {
$name = $form->_params['billing_first_name'];
}
if (!empty($form->_params['billing_middle_name'])) {
$name .= " {$form->_params['billing_middle_name']}";
}
if (!empty($form->_params['billing_last_name'])) {
$name .= " {$form->_params['billing_last_name']}";
}
$form->assign('billingName', $name);
// assign the address formatted up for display
$addressParts = array("street_address-{$form->_bltID}", "city-{$form->_bltID}", "postal_code-{$form->_bltID}", "state_province-{$form->_bltID}", "country-{$form->_bltID}");
$addressFields = array();
foreach ($addressParts as $part) {
list($n, $id) = explode('-', $part);
if (isset($form->_params['billing_' . $part])) {
$addressFields[$n] = $form->_params['billing_' . $part];
}
}
$form->assign('address', CRM_Utils_Address::format($addressFields));
$date = CRM_Utils_Date::format($form->_params['credit_card_exp_date']);
$date = CRM_Utils_Date::mysqlToIso($date);
$form->assign('credit_card_exp_date', $date);
$form->assign('credit_card_number', CRM_Utils_System::mungeCreditCard($form->_params['credit_card_number']));
$form->assign('credit_card_type', $form->_params['credit_card_type']);
$form->assign('contributeMode', 'direct');
$form->assign('isAmountzero', 0);
$form->assign('is_pay_later', 0);
$form->assign('isPrimary', 1);
}
$form->assign('module', 'Membership');
$form->assign('contactID', $formValues['contact_id']);
$form->assign('membershipID', CRM_Utils_Array::value('membership_id', $form->_params, CRM_Utils_Array::value('membership_id', $form->_defaultValues)));
if (!empty($formValues['contribution_id'])) {
$form->assign('contributionID', $formValues['contribution_id']);
} elseif (isset($form->_onlinePendingContributionId)) {
$form->assign('contributionID', $form->_onlinePendingContributionId);
}
if (!empty($formValues['contribution_status_id'])) {
$form->assign('contributionStatusID', $formValues['contribution_status_id']);
$form->assign('contributionStatus', CRM_Contribute_PseudoConstant::contributionStatus($formValues['contribution_status_id'], 'name'));
}
if (!empty($formValues['is_renew'])) {
$form->assign('receiptType', 'membership renewal');
} else {
$form->assign('receiptType', 'membership signup');
}
$form->assign('receive_date', CRM_Utils_Date::processDate(CRM_Utils_Array::value('receive_date', $formValues)));
$form->assign('formValues', $formValues);
if (empty($lineItem)) {
$form->assign('mem_start_date', CRM_Utils_Date::customFormat($membership->start_date, '%B %E%f, %Y'));
if (!CRM_Utils_System::isNull($membership->end_date)) {
$form->assign('mem_end_date', CRM_Utils_Date::customFormat($membership->end_date, '%B %E%f, %Y'));
}
$form->assign('membership_name', CRM_Member_PseudoConstant::membershipType($membership->membership_type_id));
}
$form->assign('customValues', $customValues);
$isBatchProcess = is_a($form, 'CRM_Batch_Form_Entry');
if (empty($form->_contributorDisplayName) || empty($form->_contributorEmail) || $isBatchProcess) {
// in this case the form is being called statically from the batch editing screen
//.........这里部分代码省略.........
示例7: postProcess
//.........这里部分代码省略.........
$recordContribution = array('total_amount', 'contribution_type_id', 'payment_instrument_id', 'trxn_id', 'contribution_status_id', 'invoice_id', 'check_number', 'is_test');
foreach ($recordContribution as $f) {
$contributionParams[$f] = CRM_Utils_Array::value($f, $formValues);
}
require_once 'CRM/Contribute/BAO/Contribution.php';
$contribution =& CRM_Contribute_BAO_Contribution::create($contributionParams, $ids);
require_once 'CRM/Member/DAO/MembershipPayment.php';
$mpDAO =& new CRM_Member_DAO_MembershipPayment();
$mpDAO->membership_id = $renewMembership->id;
$mpDAO->contribution_id = $contribution->id;
$mpDAO->save();
if ($this->_mode) {
$trxnParams = array('contribution_id' => $contribution->id, 'trxn_date' => $now, 'trxn_type' => 'Debit', 'total_amount' => $formValues['total_amount'], 'fee_amount' => CRM_Utils_Array::value('fee_amount', $result), 'net_amount' => CRM_Utils_Array::value('net_amount', $result, $formValues['total_amount']), 'currency' => $config->defaultCurrency, 'payment_processor' => $this->_paymentProcessor['payment_processor_type'], 'trxn_id' => $result['trxn_id']);
require_once 'CRM/Contribute/BAO/FinancialTrxn.php';
$trxn =& CRM_Contribute_BAO_FinancialTrxn::create($trxnParams);
}
}
if (CRM_Utils_Array::value('send_receipt', $formValues)) {
require_once 'CRM/Core/DAO.php';
CRM_Core_DAO::setFieldValue('CRM_Member_DAO_MembershipType', CRM_Utils_Array::value('membership_type_id', $params), 'receipt_text_renewal', $formValues['receipt_text_renewal']);
}
$receiptSend = false;
if (CRM_Utils_Array::value('send_receipt', $formValues)) {
$receiptSend = true;
// Retrieve the name and email of the contact - this will be the TO for receipt email
list($this->_contributorDisplayName, $this->_contributorEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
$receiptFrom = '"' . $userName . '" <' . $userEmail . '>';
$paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument();
$formValues['paidBy'] = $paymentInstrument[$formValues['payment_instrument_id']];
//get the group Tree
$this->_groupTree =& CRM_Core_BAO_CustomGroup::getTree('Membership', $this, $this->_id, false, $this->_memType);
// retrieve custom data
require_once "CRM/Core/BAO/UFGroup.php";
$customFields = $customValues = $fo = array();
foreach ($this->_groupTree as $groupID => $group) {
if ($groupID == 'info') {
continue;
}
foreach ($group['fields'] as $k => $field) {
$field['title'] = $field['label'];
$customFields["custom_{$k}"] = $field;
}
}
CRM_Core_BAO_UFGroup::getValues($this->_contactID, $customFields, $customValues, false, array(array('member_id', '=', $renewMembership->id, 0, 0)));
$this->assign_by_ref('formValues', $formValues);
$this->assign('receive_date', $renewalDate);
$this->assign('module', 'Membership');
$this->assign('receiptType', 'membership renewal');
$this->assign('mem_start_date', CRM_Utils_Date::customFormat($renewMembership->start_date));
$this->assign('mem_end_date', CRM_Utils_Date::customFormat($renewMembership->end_date));
$this->assign('membership_name', CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $renewMembership->membership_type_id));
$this->assign('customValues', $customValues);
if ($this->_mode) {
if (CRM_Utils_Array::value('billing_first_name', $this->_params)) {
$name = $this->_params['billing_first_name'];
}
if (CRM_Utils_Array::value('billing_middle_name', $this->_params)) {
$name .= " {$this->_params['billing_middle_name']}";
}
if (CRM_Utils_Array::value('billing_last_name', $this->_params)) {
$name .= " {$this->_params['billing_last_name']}";
}
$this->assign('billingName', $name);
// assign the address formatted up for display
$addressParts = array("street_address-{$this->_bltID}", "city-{$this->_bltID}", "postal_code-{$this->_bltID}", "state_province-{$this->_bltID}", "country-{$this->_bltID}");
$addressFields = array();
foreach ($addressParts as $part) {
list($n, $id) = explode('-', $part);
if (isset($this->_params['billing_' . $part])) {
$addressFields[$n] = $this->_params['billing_' . $part];
}
}
require_once 'CRM/Utils/Address.php';
$this->assign('address', CRM_Utils_Address::format($addressFields));
$date = CRM_Utils_Date::format($this->_params['credit_card_exp_date']);
$date = CRM_Utils_Date::mysqlToIso($date);
$this->assign('credit_card_exp_date', $date);
$this->assign('credit_card_number', CRM_Utils_System::mungeCreditCard($this->_params['credit_card_number']));
$this->assign('credit_card_type', $this->_params['credit_card_type']);
$this->assign('contributeMode', 'direct');
$this->assign('isAmountzero', 0);
$this->assign('is_pay_later', 0);
$this->assign('isPrimary', 1);
if ($this->_mode == 'test') {
$this->assign('action', '1024');
}
}
require_once 'CRM/Core/BAO/MessageTemplates.php';
list($mailSend, $subject, $message, $html) = CRM_Core_BAO_MessageTemplates::sendTemplate(array('groupName' => 'msg_tpl_workflow_membership', 'valueName' => 'membership_offline_receipt', 'contactId' => $this->_contactID, 'from' => $receiptFrom, 'toName' => $this->_contributorDisplayName, 'toEmail' => $this->_contributorEmail, 'isTest' => $this->_mode == 'test'));
}
$statusMsg = ts('%1 membership for %2 has been renewed.', array(1 => $memType, 2 => $this->_contributorDisplayName));
$endDate = CRM_Utils_Date::customFormat(CRM_Core_DAO::getFieldValue("CRM_Member_DAO_Membership", $this->_id, "end_date"));
if ($endDate) {
$statusMsg .= ' ' . ts('The new membership End Date is %1.', array(1 => $endDate));
}
if ($receiptSend && $mailSend) {
$statusMsg .= ' ' . ts('A renewal confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail));
}
CRM_Core_Session::setStatus($statusMsg);
}
示例8: postProcess
/**
* process the form after the input has been submitted and validated
*
* @access public
*
* @return void
*/
public function postProcess()
{
$fv = $this->controller->exportValues($this->_name);
$config = CRM_Core_Config::singleton();
$locName = NULL;
//get the address format sequence from the config file
$mailingFormat = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'mailing_format');
$sequence = CRM_Utils_Address::sequence($mailingFormat);
foreach ($sequence as $v) {
$address[$v] = 1;
}
if (array_key_exists('postal_code', $address)) {
$address['postal_code_suffix'] = 1;
}
//build the returnproperties
$returnProperties = array('display_name' => 1, 'contact_type' => 1);
$mailingFormat = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'mailing_format');
$mailingFormatProperties = array();
if ($mailingFormat) {
$mailingFormatProperties = self::getReturnProperties($mailingFormat);
$returnProperties = array_merge($returnProperties, $mailingFormatProperties);
}
//we should not consider addressee for data exists, CRM-6025
if (array_key_exists('addressee', $mailingFormatProperties)) {
unset($mailingFormatProperties['addressee']);
}
$customFormatProperties = array();
if (stristr($mailingFormat, 'custom_')) {
foreach ($mailingFormatProperties as $token => $true) {
if (substr($token, 0, 7) == 'custom_') {
if (empty($customFormatProperties[$token])) {
$customFormatProperties[$token] = $mailingFormatProperties[$token];
}
}
}
}
if (!empty($customFormatProperties)) {
$returnProperties = array_merge($returnProperties, $customFormatProperties);
}
if (isset($fv['merge_same_address'])) {
// we need first name/last name for summarising to avoid spillage
$returnProperties['first_name'] = 1;
$returnProperties['last_name'] = 1;
}
$individualFormat = FALSE;
/*
* CRM-8338: replace ids of household members with the id of their household
* so we can merge labels by household.
*/
if (isset($fv['merge_same_household'])) {
$this->mergeContactIdsByHousehold();
$individualFormat = TRUE;
}
//get the contacts information
$params = array();
if (!empty($fv['location_type_id'])) {
$locType = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id');
$locName = $locType[$fv['location_type_id']];
$location = array('location' => array("{$locName}" => $address));
$returnProperties = array_merge($returnProperties, $location);
$params[] = array('location_type', '=', array($fv['location_type_id'] => 1), 0, 0);
} else {
$returnProperties = array_merge($returnProperties, $address);
}
$rows = array();
foreach ($this->_contactIds as $key => $contactID) {
$params[] = array(CRM_Core_Form::CB_PREFIX . $contactID, '=', 1, 0, 0);
}
// fix for CRM-2651
if (!empty($fv['do_not_mail'])) {
$params[] = array('do_not_mail', '=', 0, 0, 0);
}
// fix for CRM-2613
$params[] = array('is_deceased', '=', 0, 0, 0);
$custom = array();
foreach ($returnProperties as $name => $dontCare) {
$cfID = CRM_Core_BAO_CustomField::getKeyID($name);
if ($cfID) {
$custom[] = $cfID;
}
}
//get the total number of contacts to fetch from database.
$numberofContacts = count($this->_contactIds);
$query = new CRM_Contact_BAO_Query($params, $returnProperties);
$details = $query->apiQuery($params, $returnProperties, NULL, NULL, 0, $numberofContacts);
$messageToken = CRM_Utils_Token::getTokens($mailingFormat);
// also get all token values
CRM_Utils_Hook::tokenValues($details[0], $this->_contactIds, NULL, $messageToken, 'CRM_Contact_Form_Task_Label');
$tokens = array();
CRM_Utils_Hook::tokens($tokens);
$tokenFields = array();
foreach ($tokens as $category => $catTokens) {
foreach ($catTokens as $token => $tokenName) {
//.........这里部分代码省略.........
示例9: assignToTemplate
/**
* Assign the minimal set of variables to the template.
*/
public function assignToTemplate()
{
$name = CRM_Utils_Array::value('billing_first_name', $this->_params);
if (!empty($this->_params['billing_middle_name'])) {
$name .= " {$this->_params['billing_middle_name']}";
}
$name .= ' ' . CRM_Utils_Array::value('billing_last_name', $this->_params);
$name = trim($name);
$this->assign('billingName', $name);
$this->set('name', $name);
$this->assign('paymentProcessor', $this->_paymentProcessor);
$vars = array('amount', 'currencyID', 'credit_card_type', 'trxn_id', 'amount_level');
$config = CRM_Core_Config::singleton();
if (isset($this->_values['is_recur']) && !empty($this->_paymentProcessor['is_recur'])) {
$this->assign('is_recur_enabled', 1);
$vars = array_merge($vars, array('is_recur', 'frequency_interval', 'frequency_unit', 'installments'));
}
if (in_array('CiviPledge', $config->enableComponents) && CRM_Utils_Array::value('is_pledge', $this->_params) == 1) {
$this->assign('pledge_enabled', 1);
$vars = array_merge($vars, array('is_pledge', 'pledge_frequency_interval', 'pledge_frequency_unit', 'pledge_installments'));
}
// @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
// function to get correct amount level consistently. Remove setting of the amount level in
// CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
// to cover all variants.
if (isset($this->_params['amount_other']) || isset($this->_params['selectMembership'])) {
$this->_params['amount_level'] = '';
}
foreach ($vars as $v) {
if (isset($this->_params[$v])) {
if ($v == "amount" && $this->_params[$v] === 0) {
$this->_params[$v] = CRM_Utils_Money::format($this->_params[$v], NULL, NULL, TRUE);
}
$this->assign($v, $this->_params[$v]);
}
}
// assign the address formatted up for display
$addressParts = array("street_address-{$this->_bltID}", "city-{$this->_bltID}", "postal_code-{$this->_bltID}", "state_province-{$this->_bltID}", "country-{$this->_bltID}");
$addressFields = array();
foreach ($addressParts as $part) {
list($n, $id) = explode('-', $part);
$addressFields[$n] = CRM_Utils_Array::value('billing_' . $part, $this->_params);
}
$this->assign('address', CRM_Utils_Address::format($addressFields));
if (!empty($this->_params['onbehalf_profile_id']) && !empty($this->_params['onbehalf'])) {
$this->assign('onBehalfName', $this->_params['organization_name']);
$locTypeId = array_keys($this->_params['onbehalf_location']['email']);
$this->assign('onBehalfEmail', $this->_params['onbehalf_location']['email'][$locTypeId[0]]['email']);
}
//fix for CRM-3767
$assignCCInfo = FALSE;
if ($this->_amount > 0.0) {
$assignCCInfo = TRUE;
} elseif (!empty($this->_params['selectMembership'])) {
$memFee = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $this->_params['selectMembership'], 'minimum_fee');
if ($memFee > 0.0) {
$assignCCInfo = TRUE;
}
}
// The concept of contributeMode is deprecated.
// The payment processor object can provide info about the fields it shows.
if ($this->_contributeMode == 'direct' && $assignCCInfo) {
if ($this->_paymentProcessor && $this->_paymentProcessor['payment_type'] & CRM_Core_Payment::PAYMENT_TYPE_DIRECT_DEBIT) {
$this->assign('account_holder', $this->_params['account_holder']);
$this->assign('bank_identification_number', $this->_params['bank_identification_number']);
$this->assign('bank_name', $this->_params['bank_name']);
$this->assign('bank_account_number', $this->_params['bank_account_number']);
} else {
$date = CRM_Utils_Date::format(CRM_Utils_array::value('credit_card_exp_date', $this->_params));
$date = CRM_Utils_Date::mysqlToIso($date);
$this->assign('credit_card_exp_date', $date);
$this->assign('credit_card_number', CRM_Utils_System::mungeCreditCard(CRM_Utils_array::value('credit_card_number', $this->_params)));
}
}
$this->assign('email', $this->controller->exportValue('Main', "email-{$this->_bltID}"));
// also assign the receipt_text
if (isset($this->_values['receipt_text'])) {
$this->assign('receipt_text', $this->_values['receipt_text']);
}
}
示例10: 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);
}
示例11: sendMailings
/**
* @param $mappingID
* @param $now
*
* @throws CRM_Core_Exception
*/
static function sendMailings($mappingID, $now)
{
$domainValues = CRM_Core_BAO_Domain::getNameAndEmail();
$fromEmailAddress = "{$domainValues['0']} <{$domainValues['1']}>";
$mapping = new CRM_Core_DAO_ActionMapping();
$mapping->id = $mappingID;
$mapping->find(TRUE);
$actionSchedule = new CRM_Core_DAO_ActionSchedule();
$actionSchedule->mapping_id = $mappingID;
$actionSchedule->is_active = 1;
$actionSchedule->find(FALSE);
$tokenFields = array();
$session = CRM_Core_Session::singleton();
while ($actionSchedule->fetch()) {
$extraSelect = $extraJoin = $extraWhere = $extraOn = '';
if ($actionSchedule->from_email) {
$fromEmailAddress = "{$actionSchedule->from_name} <{$actionSchedule->from_email}>";
}
if ($actionSchedule->record_activity) {
if ($mapping->entity == 'civicrm_membership') {
$activityTypeID = CRM_Core_OptionGroup::getValue('activity_type', 'Membership Renewal Reminder', 'name');
} else {
$activityTypeID = CRM_Core_OptionGroup::getValue('activity_type', 'Reminder Sent', 'name');
}
$activityStatusID = CRM_Core_OptionGroup::getValue('activity_status', 'Completed', 'name');
}
if ($mapping->entity == 'civicrm_activity') {
$tokenEntity = 'activity';
$tokenFields = array('activity_id', 'activity_type', 'subject', 'details', 'activity_date_time');
$extraSelect = ', ov.label as activity_type, e.id as activity_id';
$extraJoin = "\nINNER JOIN civicrm_option_group og ON og.name = 'activity_type'\nINNER JOIN civicrm_option_value ov ON e.activity_type_id = ov.value AND ov.option_group_id = og.id";
$extraOn = ' AND e.is_current_revision = 1 AND e.is_deleted = 0 ';
if ($actionSchedule->limit_to == 0) {
$extraJoin = "\nLEFT JOIN civicrm_option_group og ON og.name = 'activity_type'\nLEFT JOIN civicrm_option_value ov ON e.activity_type_id = ov.value AND ov.option_group_id = og.id";
}
}
if ($mapping->entity == 'civicrm_participant') {
$tokenEntity = 'event';
$tokenFields = array('event_type', 'title', 'event_id', 'start_date', 'end_date', 'summary', 'description', 'location', 'info_url', 'registration_url', 'fee_amount', 'contact_email', 'contact_phone', 'balance');
$extraSelect = ', ov.label as event_type, ev.title, ev.id as event_id, ev.start_date, ev.end_date, ev.summary, ev.description, address.street_address, address.city, address.state_province_id, address.postal_code, email.email as contact_email, phone.phone as contact_phone ';
$extraJoin = "\nINNER JOIN civicrm_event ev ON e.event_id = ev.id\nINNER JOIN civicrm_option_group og ON og.name = 'event_type'\nINNER JOIN civicrm_option_value ov ON ev.event_type_id = ov.value AND ov.option_group_id = og.id\nLEFT JOIN civicrm_loc_block lb ON lb.id = ev.loc_block_id\nLEFT JOIN civicrm_address address ON address.id = lb.address_id\nLEFT JOIN civicrm_email email ON email.id = lb.email_id\nLEFT JOIN civicrm_phone phone ON phone.id = lb.phone_id\n";
if ($actionSchedule->limit_to == 0) {
$extraJoin = "\nLEFT JOIN civicrm_event ev ON e.event_id = ev.id\nLEFT JOIN civicrm_option_group og ON og.name = 'event_type'\nLEFT JOIN civicrm_option_value ov ON ev.event_type_id = ov.value AND ov.option_group_id = og.id\nLEFT JOIN civicrm_loc_block lb ON lb.id = ev.loc_block_id\nLEFT JOIN civicrm_address address ON address.id = lb.address_id\nLEFT JOIN civicrm_email email ON email.id = lb.email_id\nLEFT JOIN civicrm_phone phone ON phone.id = lb.phone_id\n";
}
}
if ($mapping->entity == 'civicrm_membership') {
$tokenEntity = 'membership';
$tokenFields = array('fee', 'id', 'join_date', 'start_date', 'end_date', 'status', 'type');
$extraSelect = ', mt.minimum_fee as fee, e.id as id , e.join_date, e.start_date, e.end_date, ms.name as status, mt.name as type';
$extraJoin = '
INNER JOIN civicrm_membership_type mt ON e.membership_type_id = mt.id
INNER JOIN civicrm_membership_status ms ON e.status_id = ms.id';
if ($actionSchedule->limit_to == 0) {
$extraJoin = '
LEFT JOIN civicrm_membership_type mt ON e.membership_type_id = mt.id
LEFT JOIN civicrm_membership_status ms ON e.status_id = ms.id';
}
}
if ($mapping->entity == 'civicrm_contact') {
$tokenEntity = 'contact';
//TODO: get full list somewhere!
$tokenFields = array('birth_date', 'last_name');
//TODO: is there anything to add here?
}
$entityJoinClause = "INNER JOIN {$mapping->entity} e ON e.id = reminder.entity_id";
if ($actionSchedule->limit_to == 0) {
$entityJoinClause = "LEFT JOIN {$mapping->entity} e ON e.id = reminder.entity_id";
$extraWhere .= " AND (e.id = reminder.entity_id OR reminder.entity_table = 'civicrm_contact')";
}
$entityJoinClause .= $extraOn;
$query = "\nSELECT reminder.id as reminderID, reminder.contact_id as contactID, reminder.*, e.id as entityID, e.* {$extraSelect}\nFROM civicrm_action_log reminder\n{$entityJoinClause}\n{$extraJoin}\nWHERE reminder.action_schedule_id = %1 AND reminder.action_date_time IS NULL\n{$extraWhere}";
$dao = CRM_Core_DAO::executeQuery($query, array(1 => array($actionSchedule->id, 'Integer')));
while ($dao->fetch()) {
$entityTokenParams = array();
foreach ($tokenFields as $field) {
if ($field == 'location') {
$loc = array();
$stateProvince = CRM_Core_PseudoConstant::stateProvince();
$loc['street_address'] = $dao->street_address;
$loc['city'] = $dao->city;
$loc['state_province'] = CRM_Utils_Array::value($dao->state_province_id, $stateProvince);
$loc['postal_code'] = $dao->postal_code;
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_Address::format($loc);
} elseif ($field == 'info_url') {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $dao->event_id, TRUE, NULL, FALSE);
} elseif ($field == 'registration_url') {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_System::url('civicrm/event/register', 'reset=1&id=' . $dao->event_id, TRUE, NULL, FALSE);
} elseif (in_array($field, array('start_date', 'end_date', 'join_date', 'activity_date_time'))) {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_Date::customFormat($dao->{$field});
} elseif ($field == 'balance') {
$info = CRM_Contribute_BAO_Contribution::getPaymentInfo($dao->entityID, 'event');
$balancePay = CRM_Utils_Array::value('balance', $info);
$balancePay = CRM_Utils_Money::format($balancePay);
$entityTokenParams["{$tokenEntity}." . $field] = $balancePay;
//.........这里部分代码省略.........
示例12: array_merge
/**
* Replace all the org-level tokens in $str
*
* @param string $str The string with tokens to be replaced
* @param object $org Associative array of org properties
* @param boolean $html Replace tokens with HTML or plain text
* @return string The processed string
* @access public
* @static
*/
public static function &replaceOrgTokens($str, &$org, $html = false)
{
self::$_tokens['org'] = array_merge(array_keys(CRM_Contact_BAO_Contact::importableFields('Organization')), array('address', 'display_name', 'checksum', 'contact_id'));
/*
print "org tokens: <pre>";
print_r( $_tokens['org'] );
print "</pre>";
*/
$cv = null;
foreach (self::$_tokens['org'] as $token) {
// print "Getting token value for $token<br/><br/>";
if ($token == '') {
continue;
}
/* If the string doesn't contain this token, skip it. */
if (!self::token_match('org', $token, $str)) {
continue;
}
/* Construct value from $token and $contact */
$value = null;
if ($cfID = CRM_Core_BAO_CustomField::getKeyID($token)) {
// only generate cv if we need it
if ($cv === null) {
$cv =& CRM_Core_BAO_CustomValue::getContactValues($org['contact_id']);
}
foreach ($cv as $cvFieldID => $value) {
if ($cvFieldID == $cfID) {
$value = CRM_Core_BAO_CustomOption::getOptionLabel($cfID, $value);
break;
}
}
} else {
if ($token == 'checksum') {
require_once 'CRM/Contact/BAO/Contact/Utils.php';
$cs = CRM_Contact_BAO_Contact_Utils::generateChecksum($org['contact_id']);
$value = "cs={$cs}";
} else {
if ($token == 'address') {
/* Build the location values array */
$loc = array();
$loc['display_name'] = CRM_Utils_Array::retrieveValueRecursive($org, 'display_name');
$loc['street_address'] = CRM_Utils_Array::retrieveValueRecursive($org, 'street_address');
$loc['city'] = CRM_Utils_Array::retrieveValueRecursive($org, 'city');
$loc['state_province'] = CRM_Utils_Array::retrieveValueRecursive($org, 'state_province');
$loc['postal_code'] = CRM_Utils_Array::retrieveValueRecursive($org, 'postal_code');
/* Construct the address token */
$value = CRM_Utils_Address::format($loc);
if ($html) {
$value = str_replace("\n", '<br />', $value);
}
} else {
/*
print "\$org: <pre>";
print_r( $org );
print "</pre>";
*/
$value = CRM_Utils_Array::retrieveValueRecursive($org, $token);
/*
print "\$value: <pre>";
print_r( $value );
print "</pre>";
*/
}
}
}
self::token_replace('org', $token, $value, $str);
}
return $str;
}
示例13: emailReceipt
/**
* Send email receipt.
*
* @param CRM_Core_Form $form
* instance of Contribution form.
* @param array $params
* (reference ) an assoc array of name/value pairs.
* @param bool $ccContribution
* is it credit card contribution.
*
* @return array
*/
public static function emailReceipt(&$form, &$params, $ccContribution = FALSE)
{
$form->assign('receiptType', 'contribution');
// Retrieve Financial Type Name from financial_type_id
$params['contributionType_name'] = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $params['financial_type_id']);
if (!empty($params['payment_instrument_id'])) {
$paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument();
$params['paidBy'] = $paymentInstrument[$params['payment_instrument_id']];
if ($params['paidBy'] != 'Check' && isset($params['check_number'])) {
unset($params['check_number']);
}
}
// retrieve individual prefix value for honoree
if (isset($params['soft_credit'])) {
$softCreditTypes = $softCredits = array();
foreach ($params['soft_credit'] as $key => $softCredit) {
$softCredits[$key] = array('Name' => $softCredit['contact_name'], 'Amount' => CRM_Utils_Money::format($softCredit['amount'], $softCredit['currency']));
$softCreditTypes[$key] = $softCredit['soft_credit_type_label'];
}
$form->assign('softCreditTypes', $softCreditTypes);
$form->assign('softCredits', $softCredits);
}
// retrieve premium product name and assigned fulfilled
// date to template
if (!empty($params['hidden_Premium'])) {
if (isset($params['product_name']) && is_array($params['product_name']) && !empty($params['product_name'])) {
$productDAO = new CRM_Contribute_DAO_Product();
$productDAO->id = $params['product_name'][0];
$productOptionID = $params['product_name'][1];
$productDAO->find(TRUE);
$params['product_name'] = $productDAO->name;
$params['product_sku'] = $productDAO->sku;
if (empty($params['product_option']) && !empty($form->_options[$productDAO->id])) {
$params['product_option'] = $form->_options[$productDAO->id][$productOptionID];
}
}
if (!empty($params['fulfilled_date'])) {
$form->assign('fulfilled_date', CRM_Utils_Date::processDate($params['fulfilled_date']));
}
}
$form->assign('ccContribution', $ccContribution);
if ($ccContribution) {
//build the name.
$name = CRM_Utils_Array::value('billing_first_name', $params);
if (!empty($params['billing_middle_name'])) {
$name .= " {$params['billing_middle_name']}";
}
$name .= ' ' . CRM_Utils_Array::value('billing_last_name', $params);
$name = trim($name);
$form->assign('billingName', $name);
//assign the address formatted up for display
$addressParts = array("street_address" => "billing_street_address-{$form->_bltID}", "city" => "billing_city-{$form->_bltID}", "postal_code" => "billing_postal_code-{$form->_bltID}", "state_province" => "state_province-{$form->_bltID}", "country" => "country-{$form->_bltID}");
$addressFields = array();
foreach ($addressParts as $name => $field) {
$addressFields[$name] = CRM_Utils_Array::value($field, $params);
}
$form->assign('address', CRM_Utils_Address::format($addressFields));
$date = CRM_Utils_Date::format($params['credit_card_exp_date']);
$date = CRM_Utils_Date::mysqlToIso($date);
$form->assign('credit_card_type', CRM_Utils_Array::value('credit_card_type', $params));
$form->assign('credit_card_exp_date', $date);
$form->assign('credit_card_number', CRM_Utils_System::mungeCreditCard($params['credit_card_number']));
} else {
//offline contribution
// assigned various dates to the templates
$form->assign('receipt_date', CRM_Utils_Date::processDate($params['receipt_date']));
if (!empty($params['cancel_date'])) {
$form->assign('cancel_date', CRM_Utils_Date::processDate($params['cancel_date']));
}
if (!empty($params['thankyou_date'])) {
$form->assign('thankyou_date', CRM_Utils_Date::processDate($params['thankyou_date']));
}
if ($form->_action & CRM_Core_Action::UPDATE) {
$form->assign('lineItem', empty($form->_lineItems) ? FALSE : $form->_lineItems);
}
}
//handle custom data
if (!empty($params['hidden_custom'])) {
$contribParams = array(array('contribution_id', '=', $params['contribution_id'], 0, 0));
if ($form->_mode == 'test') {
$contribParams[] = array('contribution_test', '=', 1, 0, 0);
}
//retrieve custom data
$customGroup = array();
foreach ($form->_groupTree as $groupID => $group) {
$customFields = $customValues = array();
if ($groupID == 'info') {
continue;
//.........这里部分代码省略.........
示例14: format
/**
* Function is used to format the individual contact values.
*
* @param array $params
* (reference ) an assoc array of name/value pairs.
* @param CRM $contact
* Contact object.
*
* @return CRM_Contact_BAO_Contact
*/
public static function format(&$params, &$contact)
{
if (!self::dataExists($params)) {
return NULL;
}
// "null" value for example is passed by dedupe merge in order to empty.
// Display name computation shouldn't consider such values.
foreach (array('first_name', 'middle_name', 'last_name', 'nick_name', 'formal_title') as $displayField) {
if (CRM_Utils_Array::value($displayField, $params) == "null") {
$params[$displayField] = '';
}
}
$sortName = $displayName = '';
$firstName = CRM_Utils_Array::value('first_name', $params, '');
$middleName = CRM_Utils_Array::value('middle_name', $params, '');
$lastName = CRM_Utils_Array::value('last_name', $params, '');
$nickName = CRM_Utils_Array::value('nick_name', $params, '');
$prefix_id = CRM_Utils_Array::value('prefix_id', $params, '');
$suffix_id = CRM_Utils_Array::value('suffix_id', $params, '');
$formalTitle = CRM_Utils_Array::value('formal_title', $params, '');
// get prefix and suffix names
$prefix = $suffix = NULL;
if ($prefix_id) {
$params['individual_prefix'] = $prefix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'prefix_id', $prefix_id);
}
if ($suffix_id) {
$params['individual_suffix'] = $suffix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'suffix_id', $suffix_id);
}
$params['is_deceased'] = CRM_Utils_Array::value('is_deceased', $params, FALSE);
$individual = NULL;
if ($contact->id) {
$individual = new CRM_Contact_BAO_Contact();
$individual->id = $contact->id;
if ($individual->find(TRUE)) {
//lets allow to update single name field though preserveDBName
//but if db having null value and params contain value, CRM-4330.
$useDBNames = array();
foreach (array('last', 'middle', 'first', 'nick') as $name) {
$dbName = "{$name}_name";
$value = $individual->{$dbName};
// the db has name values
if ($value && !empty($params['preserveDBName'])) {
$useDBNames[] = $name;
}
}
foreach (array('prefix', 'suffix') as $name) {
$dbName = "{$name}_id";
$value = $individual->{$dbName};
if ($value && !empty($params['preserveDBName'])) {
$useDBNames[] = $name;
}
}
if ($individual->formal_title && !empty($params['preserveDBName'])) {
$useDBNames[] = 'formal_title';
}
// CRM-4430
//1. preserve db name if want
//2. lets get value from param if exists.
//3. if not in params, lets get from db.
foreach (array('last', 'middle', 'first', 'nick') as $name) {
$phpName = "{$name}Name";
$dbName = "{$name}_name";
$value = $individual->{$dbName};
if (in_array($name, $useDBNames)) {
$params[$dbName] = $value;
$contact->{$dbName} = $value;
${$phpName} = $value;
} elseif (array_key_exists($dbName, $params)) {
${$phpName} = $params[$dbName];
} elseif ($value) {
${$phpName} = $value;
}
}
foreach (array('prefix', 'suffix') as $name) {
$dbName = "{$name}_id";
$value = $individual->{$dbName};
if (in_array($name, $useDBNames)) {
$params[$dbName] = $value;
$contact->{$dbName} = $value;
if ($value) {
${$name} = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', $dbName, $value);
} else {
${$name} = NULL;
}
} elseif (array_key_exists($dbName, $params)) {
// CRM-5278
if (!empty($params[$dbName])) {
${$name} = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', $dbName, $params[$dbName]);
}
} elseif ($value) {
//.........这里部分代码省略.........
示例15: processCreditCard
/**
* @param $submittedValues
*/
public function processCreditCard($submittedValues)
{
$config = CRM_Core_Config::singleton();
$session = CRM_Core_Session::singleton();
$unsetParams = array('trxn_id', 'payment_instrument_id', 'contribution_status_id');
foreach ($unsetParams as $key) {
if (isset($submittedValues[$key])) {
unset($submittedValues[$key]);
}
}
// Get the required fields value only.
$params = $this->_params = $submittedValues;
//get the payment processor id as per mode.
//@todo unclear relevance of mode - seems like a lot of duplicated params here!
$this->_params['payment_processor'] = $params['payment_processor_id'] = $this->_params['payment_processor_id'] = $submittedValues['payment_processor_id'] = $this->_paymentProcessor['id'];
$now = date('YmdHis');
$fields = array();
// we need to retrieve email address
if ($this->_context == 'standalone' && !empty($submittedValues['is_email_receipt'])) {
list($this->userDisplayName, $this->userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId);
$this->assign('displayName', $this->userDisplayName);
}
//set email for primary location.
$fields['email-Primary'] = 1;
$params['email-Primary'] = $this->_contributorEmail;
// now set the values for the billing location.
foreach ($this->_fields as $name => $dontCare) {
$fields[$name] = 1;
}
// also add location name to the array
$params["address_name-{$this->_bltID}"] = CRM_Utils_Array::value('billing_first_name', $params) . ' ' . CRM_Utils_Array::value('billing_middle_name', $params) . ' ' . CRM_Utils_Array::value('billing_last_name', $params);
$params["address_name-{$this->_bltID}"] = trim($params["address_name-{$this->_bltID}"]);
$fields["address_name-{$this->_bltID}"] = 1;
$ctype = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_contactId, 'contact_type');
$nameFields = array('first_name', 'middle_name', 'last_name');
foreach ($nameFields as $name) {
$fields[$name] = 1;
if (array_key_exists("billing_{$name}", $params)) {
$params[$name] = $params["billing_{$name}"];
$params['preserveDBName'] = TRUE;
}
}
if (!empty($params['source'])) {
unset($params['source']);
}
$contactID = CRM_Contact_BAO_Contact::createProfileContact($params, $fields, $this->_contactId, NULL, NULL, $ctype);
// Add all the additional payment params we need.
$this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($this->_params["billing_state_province_id-{$this->_bltID}"]);
$this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($this->_params["billing_country_id-{$this->_bltID}"]);
if ($this->_paymentProcessor['payment_type'] & CRM_Core_Payment::PAYMENT_TYPE_CREDIT_CARD) {
$this->_params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($this->_params);
$this->_params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($this->_params);
}
$this->_params['ip_address'] = CRM_Utils_System::ipAddress();
$this->_params['amount'] = $this->_params['total_amount'];
// @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
// function to get correct amount level consistently. Remove setting of the amount level in
// CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
// to cover all variants.
$this->_params['amount_level'] = 0;
$this->_params['currencyID'] = CRM_Utils_Array::value('currency', $this->_params, $config->defaultCurrency);
if (!empty($this->_params['trxn_date'])) {
$this->_params['receive_date'] = CRM_Utils_Date::processDate($this->_params['trxn_date'], $this->_params['trxn_date_time']);
}
if (empty($this->_params['invoice_id'])) {
$this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
} else {
$this->_params['invoiceID'] = $this->_params['invoice_id'];
}
// billing name and Address
$name = CRM_Utils_Array::value('billing_first_name', $params);
if (!empty($params['billing_middle_name'])) {
$name .= " {$params['billing_middle_name']}";
}
$name .= ' ' . CRM_Utils_Array::value('billing_last_name', $params);
$name = trim($name);
$this->assign('billingName', $name);
//assign the address formatted up for display
$addressParts = array("street_address" => "billing_street_address-{$this->_bltID}", "city" => "billing_city-{$this->_bltID}", "postal_code" => "billing_postal_code-{$this->_bltID}", "state_province" => "state_province-{$this->_bltID}", "country" => "country-{$this->_bltID}");
$addressFields = array();
foreach ($addressParts as $name => $field) {
$addressFields[$name] = CRM_Utils_Array::value($field, $params);
}
$this->assign('address', CRM_Utils_Address::format($addressFields));
$date = CRM_Utils_Date::format($params['credit_card_exp_date']);
$date = CRM_Utils_Date::mysqlToIso($date);
$this->assign('credit_card_type', CRM_Utils_Array::value('credit_card_type', $params));
$this->assign('credit_card_exp_date', $date);
$this->assign('credit_card_number', CRM_Utils_System::mungeCreditCard($params['credit_card_number']));
//Add common data to formatted params
CRM_Contribute_Form_AdditionalInfo::postProcessCommon($params, $this->_params, $this);
// at this point we've created a contact and stored its address etc
// all the payment processors expect the name and address to be in the
// so we copy stuff over to first_name etc.
$paymentParams = $this->_params;
$paymentParams['contactID'] = $this->_contactId;
CRM_Core_Payment_Form::mapParams($this->_bltID, $this->_params, $paymentParams, TRUE);
//.........这里部分代码省略.........