本文整理汇总了PHP中CRM_Event_BAO_Participant::transitionParticipants方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Event_BAO_Participant::transitionParticipants方法的具体用法?PHP CRM_Event_BAO_Participant::transitionParticipants怎么用?PHP CRM_Event_BAO_Participant::transitionParticipants使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Event_BAO_Participant
的用法示例。
在下文中一共展示了CRM_Event_BAO_Participant::transitionParticipants方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: processRegistration
/**
* Process Registration of free event.
*
* @param array $params
* Form values.
* @param int $contactID
*/
public function processRegistration($params, $contactID = NULL)
{
$session = CRM_Core_Session::singleton();
$this->_participantInfo = array();
// CRM-4320, lets build array of cancelled additional participant ids
// those are drop or skip by primary at the time of confirmation.
// get all in and then unset those are confirmed.
$cancelledIds = $this->_additionalParticipantIds;
$participantCount = array();
foreach ($params as $participantNum => $record) {
if ($record == 'skip') {
$participantCount[$participantNum] = 'skip';
} elseif ($participantNum) {
$participantCount[$participantNum] = 'participant';
}
}
$registerByID = NULL;
foreach ($params as $key => $value) {
if ($value != 'skip') {
$fields = NULL;
// setting register by Id and unset contactId.
if (empty($value['is_primary'])) {
$contactID = NULL;
$registerByID = $this->get('registerByID');
if ($registerByID) {
$value['registered_by_id'] = $registerByID;
}
// get an email if one exists for the participant
$participantEmail = '';
foreach (array_keys($value) as $valueName) {
if (substr($valueName, 0, 6) == 'email-') {
$participantEmail = $value[$valueName];
}
}
if ($participantEmail) {
$this->_participantInfo[] = $participantEmail;
} else {
$this->_participantInfo[] = $value['first_name'] . ' ' . $value['last_name'];
}
} elseif (!empty($value['contact_id'])) {
$contactID = $value['contact_id'];
} else {
$contactID = $this->getContactID();
}
CRM_Event_Form_Registration_Confirm::fixLocationFields($value, $fields, $this);
//for free event or additional participant, dont create billing email address.
if (empty($value['is_primary']) || !$this->_values['event']['is_monetary']) {
unset($value["email-{$this->_bltID}"]);
}
$contactID = CRM_Event_Form_Registration_Confirm::updateContactFields($contactID, $value, $fields, $this);
// lets store the contactID in the session
// we dont store in userID in case the user is doing multiple
// transactions etc
// for things like tell a friend
if (!$this->getContactID() && !empty($value['is_primary'])) {
$session->set('transaction.userID', $contactID);
}
//lets get the status if require approval or waiting.
$waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
if ($this->_allowWaitlist && !$this->_allowConfirmation) {
$value['participant_status_id'] = $value['participant_status'] = array_search('On waitlist', $waitingStatuses);
} elseif ($this->_requireApproval && !$this->_allowConfirmation) {
$value['participant_status_id'] = $value['participant_status'] = array_search('Awaiting approval', $waitingStatuses);
}
$this->set('value', $value);
$this->confirmPostProcess($contactID, NULL, NULL);
//lets get additional participant id to cancel.
if ($this->_allowConfirmation && is_array($cancelledIds)) {
$additonalId = CRM_Utils_Array::value('participant_id', $value);
if ($additonalId && ($key = array_search($additonalId, $cancelledIds))) {
unset($cancelledIds[$key]);
}
}
}
}
// update status and send mail to cancelled additional participants, CRM-4320
if ($this->_allowConfirmation && is_array($cancelledIds) && !empty($cancelledIds)) {
$cancelledId = array_search('Cancelled', CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'"));
CRM_Event_BAO_Participant::transitionParticipants($cancelledIds, $cancelledId);
}
//set information about additional participants if exists
if (count($this->_participantInfo)) {
$this->set('participantInfo', $this->_participantInfo);
}
//send mail Confirmation/Receipt
if ($this->_contributeMode != 'checkout' || $this->_contributeMode != 'notify') {
$isTest = FALSE;
if ($this->_action & CRM_Core_Action::PREVIEW) {
$isTest = TRUE;
}
//handle if no additional participant.
if (!$registerByID) {
$registerByID = $this->get('registerByID');
//.........这里部分代码省略.........
示例2: postProcess
/**
* process the form after the input has been submitted and validated
*
* @access public
*
* @return None
*/
public function postProcess()
{
$params = $this->exportValues();
if (isset($params['field'])) {
foreach ($params['field'] as $key => $value) {
//check for custom data
$value['custom'] = CRM_Core_BAO_CustomField::postProcess($value, CRM_Core_DAO::$_nullObject, $key, 'Participant');
$value['id'] = $key;
if (CRM_Utils_Array::value('participant_register_date', $value)) {
$value['register_date'] = CRM_Utils_Date::processDate($value['participant_register_date'], $value['participant_register_date_time']);
}
if (CRM_Utils_Array::value('participant_role', $value)) {
$participantRoles = CRM_Event_PseudoConstant::participantRole();
if (is_array($value['participant_role'])) {
$value['role_id'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, array_keys($value['participant_role']));
} else {
$value['role_id'] = $value['participant_role'];
}
}
//need to send mail when status change
$statusChange = FALSE;
if (CRM_Utils_Array::value('participant_status', $value)) {
$value['status_id'] = $value['participant_status'];
$fromStatusId = CRM_Utils_Array::value($key, $this->_fromStatusIds);
if (!$fromStatusId) {
$fromStatusId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $key, 'status_id');
}
if ($fromStatusId != $value['status_id']) {
$statusChange = TRUE;
}
}
if (CRM_Utils_Array::value('participant_source', $value)) {
$value['source'] = $value['participant_source'];
}
unset($value['participant_register_date']);
unset($value['participant_status']);
unset($value['participant_source']);
CRM_Event_BAO_Participant::create($value);
//need to trigger mails when we change status
if ($statusChange) {
CRM_Event_BAO_Participant::transitionParticipants(array($key), $value['status_id'], $fromStatusId);
//update related contribution status, CRM-4395
self::updatePendingOnlineContribution($key, $value['status_id']);
}
}
CRM_Core_Session::setStatus(ts('The updates have been saved.'));
} else {
CRM_Core_Session::setStatus(ts('No updates have been saved.'));
}
}
示例3: postProcess
/**
* Function to process the form
*
* @access public
*
* @return void
*/
public function postProcess()
{
//get the button.
$buttonName = $this->controller->getButtonName();
$participantId = $this->_participantId;
if ($buttonName == '_qf_ParticipantConfirm_next') {
//lets get contact id in session.
$session = CRM_Core_Session::singleton();
$session->set('userID', $this->_csContactID);
$this->postProcessHook();
//check user registration status is from pending class
$url = CRM_Utils_System::url('civicrm/event/register', "reset=1&id={$this->_eventId}&participantId={$participantId}");
CRM_Utils_System::redirect($url);
} elseif ($buttonName == '_qf_ParticipantConfirm_submit') {
//need to registration status to 'cancelled'.
$cancelledId = array_search('Cancelled', CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'"));
$additionalParticipantIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($participantId);
$participantIds = array_merge(array($participantId), $additionalParticipantIds);
$results = CRM_Event_BAO_Participant::transitionParticipants($participantIds, $cancelledId, NULL, TRUE);
if (count($participantIds) > 1) {
$statusMessage = ts("%1 Event registration(s) have been cancelled.", array(1 => count($participantIds)));
} else {
$statusMessage = ts("Your event registration has been cancelled.");
}
if (!empty($results['mailedParticipants'])) {
foreach ($results['mailedParticipants'] as $key => $displayName) {
$statusMessage .= "<br />" . ts("Email has been sent to : %1", array(1 => $displayName));
}
}
$this->postProcessHook();
CRM_Core_Error::statusBounce($statusMessage, CRM_Utils_System::url('civicrm/event/info', "reset=1&id={$this->_eventId}&noFullMsg=1", FALSE, NULL, FALSE, TRUE));
}
}
示例4: updateParticipantStatus
public function updateParticipantStatus()
{
require_once 'CRM/Event/PseudoConstant.php';
$participantRole = CRM_Event_PseudoConstant::participantRole();
$pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Pending'");
$expiredStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'");
$waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
//build the required status ids.
$statusIds = '(' . implode(',', array_merge(array_keys($pendingStatuses), array_keys($waitingStatuses))) . ')';
$participantDetails = $fullEvents = array();
$expiredParticipantCount = $waitingConfirmCount = $waitingApprovalCount = 0;
//get all participant who's status in class pending and waiting
$query = "SELECT * FROM civicrm_participant WHERE status_id IN {$statusIds} ORDER BY register_date";
$query = "\n SELECT participant.id,\n participant.contact_id,\n participant.status_id,\n participant.register_date,\n participant.registered_by_id,\n participant.event_id,\n event.title as eventTitle,\n event.registration_start_date,\n event.registration_end_date,\n event.end_date,\n event.expiration_time,\n event.requires_approval\n FROM civicrm_participant participant\nLEFT JOIN civicrm_event event ON ( event.id = participant.event_id )\n WHERE participant.status_id IN {$statusIds}\n AND (event.end_date > now() OR event.end_date IS NULL)\n AND event.is_active = 1 \n ORDER BY participant.register_date, participant.id \n";
$dao = CRM_Core_DAO::executeQuery($query);
while ($dao->fetch()) {
$participantDetails[$dao->id] = array('id' => $dao->id, 'event_id' => $dao->event_id, 'status_id' => $dao->status_id, 'contact_id' => $dao->contact_id, 'register_date' => $dao->register_date, 'registered_by_id' => $dao->registered_by_id, 'eventTitle' => $dao->eventTitle, 'registration_start_date' => $dao->registration_start_date, 'registration_end_date' => $dao->registration_end_date, 'end_date' => $dao->end_date, 'expiration_time' => $dao->expiration_time, 'requires_approval' => $dao->requires_approval);
}
if (!empty($participantDetails)) {
//cron 1. move participant from pending to expire if needed
foreach ($participantDetails as $participantId => $values) {
//process the additional participant at the time of
//primary participant, don't process separately.
if (CRM_Utils_Array::value('registered_by_id', $values)) {
continue;
}
$expirationTime = CRM_Utils_Array::value('expiration_time', $values);
if ($expirationTime && array_key_exists($values['status_id'], $pendingStatuses)) {
//get the expiration and registration pending time.
$expirationSeconds = $expirationTime * 3600;
$registrationPendingSeconds = CRM_Utils_Date::unixTime($values['register_date']);
// expired registration since registration cross allow confirmation time.
if ($expirationSeconds + $registrationPendingSeconds < time()) {
//lets get the transaction mechanism.
require_once 'CRM/Core/Transaction.php';
$transaction = new CRM_Core_Transaction();
require_once 'CRM/Event/BAO/Participant.php';
$ids = array($participantId);
$expiredId = array_search('Expired', $expiredStatuses);
$results = CRM_Event_BAO_Participant::transitionParticipants($ids, $expiredId, $values['status_id'], TRUE, TRUE);
$transaction->commit();
if (!empty($results)) {
//diaplay updated participants
if (is_array($results['updatedParticipantIds']) && !empty($results['updatedParticipantIds'])) {
foreach ($results['updatedParticipantIds'] as $processedId) {
$expiredParticipantCount += 1;
echo "<br /><br />- status updated to: Expired";
//mailed participants.
if (is_array($results['mailedParticipants']) && array_key_exists($processedId, $results['mailedParticipants'])) {
echo "<br />Expiration Mail sent to: {$results['mailedParticipants'][$processedId]}";
}
}
}
}
}
}
}
//cron 1 end.
//cron 2. lets move participants from waiting list to pending status
foreach ($participantDetails as $participantId => $values) {
//process the additional participant at the time of
//primary participant, don't process separately.
if (CRM_Utils_Array::value('registered_by_id', $values)) {
continue;
}
if (array_key_exists($values['status_id'], $waitingStatuses) && !array_key_exists($values['event_id'], $fullEvents)) {
if ($waitingStatuses[$values['status_id']] == 'On waitlist' && CRM_Event_BAO_Event::validRegistrationDate($values)) {
//check the target event having space.
require_once 'CRM/Event/BAO/Participant.php';
$eventOpenSpaces = CRM_Event_BAO_Participant::eventFull($values['event_id'], TRUE, FALSE);
if ($eventOpenSpaces && is_numeric($eventOpenSpaces) || $eventOpenSpaces === NULL) {
//get the additional participant if any.
$additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($participantId);
$allIds = array($participantId);
if (!empty($additionalIds)) {
$allIds = array_merge($allIds, $additionalIds);
}
$pClause = ' participant.id IN ( ' . implode(' , ', $allIds) . ' )';
$requiredSpaces = CRM_Event_BAO_Event::eventTotalSeats($values['event_id'], $pClause);
//need to check as to see if event has enough speces
if ($requiredSpaces <= $eventOpenSpaces || $eventOpenSpaces === NULL) {
require_once 'CRM/Core/Transaction.php';
$transaction = new CRM_Core_Transaction();
require_once 'CRM/Event/BAO/Participant.php';
$ids = array($participantId);
$updateStatusId = array_search('Pending from waitlist', $pendingStatuses);
//lets take a call to make pending or need approval
if ($values['requires_approval']) {
$updateStatusId = array_search('Awaiting approval', $waitingStatuses);
}
$results = CRM_Event_BAO_Participant::transitionParticipants($ids, $updateStatusId, $values['status_id'], TRUE, TRUE);
//commit the transaction.
$transaction->commit();
if (!empty($results)) {
//diaplay updated participants
if (is_array($results['updatedParticipantIds']) && !empty($results['updatedParticipantIds'])) {
foreach ($results['updatedParticipantIds'] as $processedId) {
if ($values['requires_approval']) {
$waitingApprovalCount += 1;
echo "<br /><br />- status updated to: Awaiting approval";
//.........这里部分代码省略.........
示例5: postProcess
//.........这里部分代码省略.........
foreach ($this->_lineItem as $key => $value) {
if ($value == 'skip') {
continue;
}
if ($entityId = CRM_Utils_Array::value($key, $allParticipantIds)) {
// do cleanup line items if participant re-walking wizard.
if ($this->_allowConfirmation) {
CRM_Price_BAO_LineItem::deleteLineItems($entityId, $entityTable);
}
$lineItem[$this->_priceSetId] = $value;
CRM_Price_BAO_LineItem::processPriceSet($entityId, $lineItem, $contribution, $entityTable);
}
if ($invoicing) {
foreach ($value as $line) {
if (isset($line['tax_amount']) && isset($line['tax_rate'])) {
$totalTaxAmount = $line['tax_amount'] + $totalTaxAmount;
if (isset($dataArray[$line['tax_rate']])) {
$dataArray[$line['tax_rate']] = $dataArray[$line['tax_rate']] + CRM_Utils_Array::value('tax_amount', $line);
} else {
$dataArray[$line['tax_rate']] = CRM_Utils_Array::value('tax_amount', $line);
}
}
}
}
}
if ($invoicing) {
$this->assign('dataArray', $dataArray);
$this->assign('totalTaxAmount', $totalTaxAmount);
}
}
//update status and send mail to cancelled additional participants, CRM-4320
if ($this->_allowConfirmation && is_array($cancelledIds) && !empty($cancelledIds)) {
$cancelledId = array_search('Cancelled', CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'"));
CRM_Event_BAO_Participant::transitionParticipants($cancelledIds, $cancelledId);
}
$isTest = FALSE;
if ($this->_action & CRM_Core_Action::PREVIEW) {
$isTest = TRUE;
}
// for Transfer checkout.
// The concept of contributeMode is deprecated.
if (($this->_contributeMode == 'checkout' || $this->_contributeMode == 'notify') && empty($params[0]['is_pay_later']) && !$this->_allowWaitlist && !$this->_requireApproval && $this->_totalAmount > 0) {
$primaryParticipant = $this->get('primaryParticipant');
if (empty($primaryParticipant['participantID'])) {
$primaryParticipant['participantID'] = $registerByID;
}
//build an array of custom profile and assigning it to template
$customProfile = CRM_Event_BAO_Event::buildCustomProfile($registerByID, $this->_values, NULL, $isTest);
if (count($customProfile)) {
$this->assign('customProfile', $customProfile);
$this->set('customProfile', $customProfile);
}
// do a transfer only if a monetary payment greater than 0
if ($this->_values['event']['is_monetary'] && $primaryParticipant) {
if ($payment && is_object($payment)) {
//CRM 14512 provide line items of all participants to payment gateway
$primaryContactId = $this->get('primaryContactId');
//build an array of cId/pId of participants
$additionalIDs = CRM_Event_BAO_Event::buildCustomProfile($registerByID, NULL, $primaryContactId, $isTest, TRUE);
//need to copy, since we are unsetting on the way.
$copyParticipantCountLines = $participantCount;
//lets carry all participant params w/ values.
foreach ($additionalIDs as $participantID => $contactId) {
$participantNum = NULL;
$participantNum = $participantID;
if ($participantID == $registerByID) {
示例6: postProcess
//.........这里部分代码省略.........
if (!$registerByID) {
$registerByID = $this->get('registerByID');
}
// create line items, CRM-5313
if ($this->_priceSetId && !empty($this->_lineItem)) {
require_once 'CRM/Price/BAO/LineItem.php';
// take all processed participant ids.
$allParticipantIds = $this->_participantIDS;
// when participant re-walk wizard.
if ($this->_allowConfirmation && !empty($this->_additionalParticipantIds)) {
$allParticipantIds = array_merge(array($registerByID), $this->_additionalParticipantIds);
}
$entityTable = 'civicrm_participant';
foreach ($this->_lineItem as $key => $value) {
if ($value != 'skip' && ($entityId = CRM_Utils_Array::value($key, $allParticipantIds))) {
// do cleanup line items if participant re-walking wizard.
if ($this->_allowConfirmation) {
CRM_Price_BAO_LineItem::deleteLineItems($entityId, $entityTable);
}
// create line.
foreach ($value as $line) {
$line['entity_id'] = $entityId;
$line['entity_table'] = $entityTable;
CRM_Price_BAO_LineItem::create($line);
}
}
}
}
//update status and send mail to cancelled additonal participants, CRM-4320
if ($this->_allowConfirmation && is_array($cancelledIds) && !empty($cancelledIds)) {
require_once 'CRM/Event/BAO/Participant.php';
require_once 'CRM/Event/PseudoConstant.php';
$cancelledId = array_search('Cancelled', CRM_Event_PseudoConstant::participantStatus(null, "class = 'Negative'"));
CRM_Event_BAO_Participant::transitionParticipants($cancelledIds, $cancelledId);
}
$isTest = false;
if ($this->_action & CRM_Core_Action::PREVIEW) {
$isTest = true;
}
// for Transfer checkout.
require_once "CRM/Event/BAO/Event.php";
if (($this->_contributeMode == 'checkout' || $this->_contributeMode == 'notify') && !CRM_Utils_Array::value('is_pay_later', $params[0]) && !$this->_allowWaitlist && !$this->_requireApproval && $this->_totalAmount > 0) {
$primaryParticipant = $this->get('primaryParticipant');
if (!CRM_Utils_Array::value('participantID', $primaryParticipant)) {
$primaryParticipant['participantID'] = $registerByID;
}
//build an array of custom profile and assigning it to template
$customProfile = CRM_Event_BAO_Event::buildCustomProfile($registerByID, $this->_values, null, $isTest);
if (count($customProfile)) {
$this->assign('customProfile', $customProfile);
$this->set('customProfile', $customProfile);
}
// do a transfer only if a monetary payment greater than 0
if ($this->_values['event']['is_monetary'] && $primaryParticipant && $payment) {
$payment->doTransferCheckout($primaryParticipant);
}
} else {
//otherwise send mail Confirmation/Receipt
$primaryContactId = $this->get('primaryContactId');
//build an array of cId/pId of participants
require_once "CRM/Event/BAO/Event.php";
$additionalIDs = CRM_Event_BAO_Event::buildCustomProfile($registerByID, null, $primaryContactId, $isTest, true);
//lets send mails to all with meaningful text, CRM-4320.
$this->assign('isOnWaitlist', $this->_allowWaitlist);
$this->assign('isRequireApproval', $this->_requireApproval);
foreach ($additionalIDs as $participantID => $contactId) {
示例7: processRegistration
public function processRegistration($params, $contactID = null)
{
$session =& CRM_Core_Session::singleton();
$contactID = $session->get('userID');
$this->_participantInfo = array();
// CRM-4320, lets build array of cancelled additional participant ids
// those are drop or skip by primary at the time of confirmation.
// get all in and then unset those are confirmed.
$cancelledIds = $this->_additionalParticipantIds;
foreach ($params as $key => $value) {
if ($value != 'skip') {
$fields = null;
// setting register by Id and unset contactId.
if (!CRM_Utils_Array::value('is_primary', $value)) {
$contactID = null;
$registerByID = $this->get('registerByID');
if ($registerByID) {
$value['registered_by_id'] = $registerByID;
}
if (CRM_Utils_Array::value("email-{$this->_bltID}", $value)) {
$this->_participantInfo[] = $value["email-{$this->_bltID}"];
} else {
$this->_participantInfo[] = $value['first_name'] . ' ' . $value['last_name'];
}
}
require_once 'CRM/Event/Form/Registration/Confirm.php';
CRM_Event_Form_Registration_Confirm::fixLocationFields($value, $fields);
//for free event or additional participant, dont create billing email address.
if (!CRM_Utils_Array::value('is_primary', $value) || !$this->_values['event']['is_monetary']) {
unset($value["email-{$this->_bltID}"]);
}
$contactID =& CRM_Event_Form_Registration_Confirm::updateContactFields($contactID, $value, $fields);
// lets store the contactID in the session
// we dont store in userID in case the user is doing multiple
// transactions etc
// for things like tell a friend
if (!$session->get('userID') && CRM_Utils_Array::value('is_primary', $value)) {
$session->set('transaction.userID', $contactID);
}
//lets get the status if require approval or waiting.
require_once 'CRM/Event/PseudoConstant.php';
$waitingStatuses = CRM_Event_PseudoConstant::participantStatus(null, "class = 'Waiting'");
if ($this->_allowWaitlist && !$this->_allowConfirmation) {
$value['participant_status_id'] = array_search('On waitlist', $waitingStatuses);
} else {
if ($this->_requireApproval && !$this->_allowConfirmation) {
$value['participant_status_id'] = array_search('Awaiting approval', $waitingStatuses);
}
}
$this->set('value', $value);
$this->confirmPostProcess($contactID, null, null);
//lets get additional participant id to cancel.
if ($this->_allowConfirmation && is_array($cancelledIds)) {
$additonalId = CRM_Utils_Array::value('participant_id', $value);
if ($additonalId && ($key = array_search($additonalId, $cancelledIds))) {
unset($cancelledIds[$key]);
}
}
}
}
// update status and send mail to cancelled additonal participants, CRM-4320
if ($this->_allowConfirmation && is_array($cancelledIds) && !empty($cancelledIds)) {
require_once 'CRM/Event/BAO/Participant.php';
require_once 'CRM/Event/PseudoConstant.php';
$cancelledId = array_search('Cancelled', CRM_Event_PseudoConstant::participantStatus(null, "class = 'Negative'"));
CRM_Event_BAO_Participant::transitionParticipants($cancelledIds, $cancelledId);
}
//set information about additional participants if exists
if (count($this->_participantInfo)) {
$this->set('participantInfo', $this->_participantInfo);
}
//send mail Confirmation/Receipt
require_once "CRM/Event/BAO/Event.php";
if ($this->_contributeMode != 'checkout' || $this->_contributeMode != 'notify') {
$isTest = false;
if ($this->_action & CRM_Core_Action::PREVIEW) {
$isTest = true;
}
//handle if no additional participant.
if (!$registerByID) {
$registerByID = $this->get('registerByID');
}
$primaryContactId = $this->get('primaryContactId');
//build an array of custom profile and assigning it to template.
$additionalIDs = CRM_Event_BAO_Event::buildCustomProfile($registerByID, null, $primaryContactId, $isTest, true);
//lets send mails to all with meanigful text, CRM-4320.
$this->assign('isOnWaitlist', $this->_allowWaitlist);
$this->assign('isRequireApproval', $this->_requireApproval);
foreach ($additionalIDs as $participantID => $contactId) {
if ($participantID == $registerByID) {
//set as Primary Participant
$this->assign('isPrimary', 1);
$customProfile = CRM_Event_BAO_Event::buildCustomProfile($participantID, $this->_values, null, $isTest);
if (count($customProfile)) {
$this->assign('customProfile', $customProfile);
$this->set('customProfile', $customProfile);
}
} else {
$this->assign('isPrimary', 0);
$this->assign('customProfile', null);
//.........这里部分代码省略.........
示例8: postProcess
/**
* process the form after the input has been submitted and validated
*
* @access public
* @return None
*/
public function postProcess()
{
$params = $this->exportValues();
$dates = array('participant_register_date');
if (isset($params['field'])) {
foreach ($params['field'] as $key => $value) {
foreach ($dates as $d) {
if (!CRM_Utils_System::isNull($value[$d])) {
$value[$d]['H'] = '00';
$value[$d]['i'] = '00';
$value[$d]['s'] = '00';
$value[$d] = CRM_Utils_Date::format($value[$d]);
}
}
//check for custom data
$value['custom'] = CRM_Core_BAO_CustomField::postProcess($value, CRM_Core_DAO::$_nullObject, $key, 'Participant');
$value['id'] = $key;
if ($value['participant_register_date']) {
$value['register_date'] = $value['participant_register_date'];
}
if ($value['participant_role_id']) {
$value['role_id'] = $value['participant_role_id'];
}
//need to send mail when status change
$statusChange = false;
if ($value['participant_status_id']) {
$value['status_id'] = $value['participant_status_id'];
$fromStatusId = CRM_Utils_Array::value($key, $this->_fromStatusIds);
if (!$fromStatusId) {
$fromStatusId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $key, 'status_id');
}
if ($fromStatusId != $value['status_id']) {
$statusChange = true;
}
}
if ($value['participant_source']) {
$value['source'] = $value['participant_source'];
}
unset($value['participant_register_date']);
unset($value['participant_status_id']);
unset($value['participant_source']);
CRM_Event_BAO_Participant::create($value);
//need to trigger mails when we change status
if ($statusChange) {
CRM_Event_BAO_Participant::transitionParticipants(array($key), $value['status_id'], $fromStatusId);
//update related contribution status, CRM-4395
self::updatePendingOnlineContribution($key, $value['status_id']);
}
}
CRM_Core_Session::setStatus(ts('The updates have been saved.'));
} else {
CRM_Core_Session::setStatus(ts('No updates have been saved.'));
}
}