$params['campaign_id'] = $activity->campaign_id;
}
- $date = CRM_Utils_Date::isoToMysql($activity->receive_date);
+ $date = $activity->receive_date;
}
$activityParams = [
$contributionParams['payment_processor'] = $paymentProcessorId;
if (empty($contributionParams['payment_instrument_id']) && isset($contribution->_relatedObjects['paymentProcessor']['payment_instrument_id'])) {
- $contributionParams['payment_instrument_id'] = PaymentProcessor::get()->addWhere('id', '=', $paymentProcessorId)->addSelect('payment_instrument_id')->execute()->first()['payment_instrument_id'];
+ $contributionParams['payment_instrument_id'] = PaymentProcessor::get(FALSE)->addWhere('id', '=', $paymentProcessorId)->addSelect('payment_instrument_id')->execute()->first()['payment_instrument_id'];
}
if ($recurringContributionID) {
// create an activity record
if ($contribution) {
- CRM_Activity_BAO_Activity::addActivity($contribution, NULL, $targetContactID, $actParams);
+ CRM_Activity_BAO_Activity::addActivity($contribution, 'Contribution', $targetContactID, $actParams);
}
$transaction->commit();
$form->_expressButtonName = $form->getButtonName('upload', 'express');
}
$form->assign('expressButtonName', $form->_expressButtonName);
- $form->add(
- 'image',
- $form->_expressButtonName,
- $this->_paymentProcessor['url_button'],
- ['class' => 'crm-form-submit']
- );
+ $form->add('xbutton', $form->_expressButtonName, ts('Pay using PayPal'), [
+ 'type' => 'submit',
+ 'formnovalidate' => 'formnovalidate',
+ 'class' => 'crm-form-submit',
+ ]);
+ CRM_Core_Resources::singleton()->addStyle('
+ button#' . $form->_expressButtonName . '{
+ background-image: url(' . $this->_paymentProcessor['url_button'] . ');
+ color: transparent;
+ background-repeat: no-repeat;
+ background-color: transparent;
+ background-position: center;
+ min-width: 150px;
+ min-height: 50px;
+ border: none;
+ ');
}
}
if ($this->isPayPalType($this::PAYPAL_EXPRESS)) {
return TRUE;
}
-
// This would occur postProcess.
if (!empty($params['token'])) {
return TRUE;
$possibleExpressFields = [
'_qf_Register_upload_express_x',
'_qf_Payment_upload_express_x',
+ '_qf_Main_upload_express',
];
if (array_intersect_key($params, array_fill_keys($possibleExpressFields, 1))) {
return TRUE;
) {
// Default status if not specified
$participant->status_id = $participant->status_id ?: self::fields()['participant_status_id']['default'];
- CRM_Activity_BAO_Activity::addActivity($participant);
+ CRM_Activity_BAO_Activity::addActivity($participant, 'Event Registration');
}
//CRM-5403
$itemStatus = array_search('Partially paid', $financialItemStatus);
}
$params = [
- 'transaction_date' => CRM_Utils_Date::isoToMysql($contribution->receive_date),
+ 'transaction_date' => $contribution->receive_date,
'contact_id' => $contribution->contact_id,
'amount' => $lineItem->line_total,
'currency' => $contribution->currency,
$swapLang = CRM_Utils_AutoClean::swap('global://dbLocale?getter', 'call://i18n/setLocale', $mailing->language);
}
- $job_date = CRM_Utils_Date::isoToMysql($this->scheduled_date);
+ $job_date = $this->scheduled_date;
$fields = [];
if (!empty($testParams)) {
while ($dao2->fetch()) {
$processCount++;
- // Put common parameters into array for easy access
- $memberParams = [
- 'id' => $dao2->membership_id,
- 'status_id' => $dao2->status_id,
- 'contact_id' => $dao2->contact_id,
- 'membership_type_id' => $dao2->membership_type_id,
- 'membership_type' => $allMembershipTypes[$dao2->membership_type_id]['name'],
- 'join_date' => $dao2->join_date,
- 'start_date' => $dao2->start_date,
- 'end_date' => $dao2->end_date,
- 'source' => $dao2->source,
- 'skipStatusCal' => TRUE,
- 'skipRecentView' => TRUE,
- ];
-
// CRM-7248: added excludeIsAdmin param to the following fn call to prevent moving to admin statuses
//get the membership status as per id.
$newStatus = civicrm_api3('membership_status', 'calc',
if ($statusId &&
$statusId != $dao2->status_id
) {
- //take all params that need to save.
- $memParams = $memberParams;
- $memParams['status_id'] = $statusId;
- $memParams['createActivity'] = TRUE;
-
- // Unset columns which should remain unchanged from their current saved
- // values. This avoids race condition in which these values may have
- // been changed by other processes.
- unset(
- $memParams['contact_id'],
- $memParams['membership_type_id'],
- $memParams['membership_type'],
- $memParams['join_date'],
- $memParams['start_date'],
- $memParams['end_date'],
- $memParams['source']
- );
- //since there is change in status.
+ $memberParams = [
+ 'id' => $dao2->membership_id,
+ 'skipStatusCal' => TRUE,
+ 'skipRecentView' => TRUE,
+ 'status_id' => $statusId,
+ 'createActivity' => TRUE,
+ ];
//process member record.
- civicrm_api3('membership', 'create', $memParams);
+ civicrm_api3('membership', 'create', $memberParams);
$updateCount++;
}
}
* Takes an associative array and creates a membership Status object.
*
* @param array $params
- * (reference ) an assoc array of name/value pairs.
+ * Array of name/value pairs.
*
- * @throws Exception
- * @return CRM_Member_BAO_MembershipStatus
+ * @throws CRM_Core_Exception
+ * @return CRM_Member_DAO_MembershipStatus
*/
public static function create($params) {
- $ids = [];
- if (!empty($params['id'])) {
- $ids['membershipStatus'] = $params['id'];
- }
- else {
+ if (empty($params['id'])) {
//don't allow duplicate names - if id not set
$status = new CRM_Member_DAO_MembershipStatus();
$status->name = $params['name'];
if ($status->find(TRUE)) {
- throw new Exception('A membership status with this name already exists.');
+ throw new CRM_Core_Exception('A membership status with this name already exists.');
}
}
- $membershipStatusBAO = CRM_Member_BAO_MembershipStatus::add($params, $ids);
- return $membershipStatusBAO;
+ return self::add($params);
}
/**
* @param array $ids
* Array contains the id - this param is deprecated.
*
- *
- * @return object
+ * @return CRM_Member_DAO_MembershipStatus
*/
public static function add(&$params, $ids = []) {
+ if (!empty($ids)) {
+ CRM_Core_Error::deprecatedFunctionWarning('ids is a deprecated parameter');
+ }
$id = $params['id'] ?? $ids['membershipStatus'] ?? NULL;
if (!$id) {
CRM_Core_DAO::setCreateDefaults($params, self::getDefaults());
$now = CRM_Utils_Date::getToday(NULL, 'YmdHis');
$this->assign('receive_date', CRM_Utils_Array::value('receive_date', $this->_params, date('Y-m-d H:i:s')));
$this->processBillingAddress();
- list($userName) = CRM_Contact_BAO_Contact_Location::getEmailDetails(CRM_Core_Session::singleton()->get('userID'));
+
$this->_params['total_amount'] = CRM_Utils_Array::value('total_amount', $this->_params,
CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $this->_memType, 'minimum_fee')
);
if (!empty($this->_params['record_contribution']) || $this->_mode) {
// set the source
+ list($userName) = CRM_Contact_BAO_Contact_Location::getEmailDetails(CRM_Core_Session::singleton()->get('userID'));
$this->_params['contribution_source'] = "{$this->membershipTypeName} Membership: Offline membership renewal (by {$userName})";
//create line items
- $lineItem = [];
$this->_params = $this->setPriceSetParameters($this->_params);
$order = new CRM_Financial_BAO_Order();
/**
* CRM-21200: Test that making online payment for pending contribution doesn't overwite the contribution details
*/
- public function testPaynowPayment() {
+ public function testPayNowPayment() {
$contactID = $this->individualCreate();
$paymentProcessorID = $this->paymentProcessorCreate(['payment_processor_type_id' => 'Dummy']);
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = [];
// create a contribution page which is later used to make pay-later contribution
$result = $this->callAPISuccess('ContributionPage', 'create', [
'payment_instrument_id' => CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'payment_instrument_id', 'Credit card'),
];
$form->_params = [
- 'qfKey' => 'donotcare',
+ 'qfKey' => 'do not care',
'contribution_id' => $contribution['id'],
'credit_card_number' => 4111111111111111,
'cvv2' => 234,
'relationship_type_id' => 5,
'is_current_employer' => 1,
]);
- $processConfirmResult = CRM_Contribute_BAO_Contribution_Utils::processConfirm($form,
+ CRM_Contribute_BAO_Contribution_Utils::processConfirm($form,
$form->_params,
$form->_params['onbehalf_contact_id'],
$form->_values['financial_type_id'],
'sequential' => 1,
'source_record_id' => $contribution['id'],
'contact_id' => $form->_params['onbehalf_contact_id'],
- 'activity_type_id' => "Contribution",
+ 'activity_type_id' => 'Contribution',
]);
$this->assertEquals(1, $activity['count']);
}
],
],
]);
+
$participant = $this->callAPISuccessGetSingle('Participant', []);
$mut->checkMailLog([
'Dear Logged In, Thank you for your registration. This is a confirmation that your registration has been received and your status has been updated to Registered.',
/**
* Submit event registration with a note field
*
- * @param array $event
+ * @param array $event
* @param int $contact_id
*
+ * @return array
* @throws \Exception
*/
private function submitWithNote($event, $contact_id) {
* @param string $field_name
* @param string $field_type
* @param string $field_label
+ *
* @return array
* API result array
+ * @throws \CRM_Core_Exception
*/
private function uf_field_add($uf_group_id, $field_name, $field_type, $field_label) {
$params = [
'is_active' => 1,
'uf_group_id' => $uf_group_id,
];
- $result = civicrm_api3('UFField', 'create', $params);
- return $result;
+ return $this->callAPISuccess('UFField', 'create', $params);
}
/**
//create an event with an attached profile containing a note
$event = $this->creatEventWithProfile(NULL);
$event['custom_pre_id'] = $this->ids["UFGroup"]["our profile"];
- $event['note'] = "This is note 1";
+ $event['note'] = 'This is note 1';
list($contact_id, $participant_id) = $this->submitWithNote($event, NULL);
civicrm_api3('Participant', 'delete', ['id' => $participant_id]);
//and confirm that the note shown in the email is the current one
$event = $this->creatEventWithProfile($event);
$event['custom_pre_id'] = $this->ids["UFGroup"]["our profile"];
- $event['note'] = "This is note 2";
+ $event['note'] = 'This is note 2';
list($contact_id, $participant_id) = $this->submitWithNote($event, $contact_id);
civicrm_api3('Participant', 'delete', ['id' => $participant_id]);
//finally, submit a blank note and confirm that the note shown in the email is blank
$event = $this->creatEventWithProfile($event);
$event['custom_pre_id'] = $this->ids["UFGroup"]["our profile"];
- $event['note'] = "";
- list($contact_id, $participant_id) = $this->submitWithNote($event, $contact_id);
+ $event['note'] = '';
+ $this->submitWithNote($event, $contact_id);
}
}
*/
class CRM_Member_BAO_MembershipStatusTest extends CiviUnitTestCase {
- public function setUp() {
- parent::setUp();
+ protected function tearDown() {
+ foreach ($this->ids as $entity => $ids) {
+ foreach ($ids as $id) {
+ $this->callAPISuccess($entity, 'Delete', ['id' => $id]);
+ }
+ }
+ parent::tearDown();
}
/**
*/
public function testAdd() {
$params = [
- 'name' => 'pending',
+ 'name' => 'added',
'is_active' => 1,
];
- $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
+ $this->ids['MembershipStatus'][0] = $this->callAPISuccess('MembershipStatus', 'create', $params)['id'];
- $result = $this->assertDBNotNull('CRM_Member_BAO_MembershipStatus', $membershipStatus->id,
+ $result = $this->assertDBNotNull('CRM_Member_BAO_MembershipStatus', $this->ids['MembershipStatus'][0],
'name', 'id',
'Database check on updated membership status record.'
);
- $this->assertEquals($result, 'pending', 'Verify membership status is_active.');
-
- $this->callAPISuccess('MembershipStatus', 'Delete', ['id' => $membershipStatus->id]);
+ $this->assertEquals($result, 'added', 'Verify membership status is_active.');
}
public function testRetrieve() {
- $params = [
- 'name' => 'testStatus',
- 'is_active' => 1,
- ];
+ $params = ['name' => 'testStatus', 'is_active' => 1];
- $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
+ $this->ids['MembershipStatus'][0] = $this->callAPISuccess('MembershipStatus', 'create', $params)['id'];
$defaults = [];
$result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
$this->assertEquals($result->name, 'testStatus', 'Verify membership status name.');
- CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
}
public function testPseudoConstantflush() {
'name' => 'testStatus',
'is_active' => 1,
];
- $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
+ $this->ids['MembershipStatus'][0] = $this->callAPISuccess('MembershipStatus', 'create', $params)['id'];
$defaults = [];
$result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
$this->assertEquals($result->name, 'testStatus', 'Verify membership status name.');
$updateParams = [
- 'id' => $membershipStatus->id,
+ 'id' => $this->ids['MembershipStatus'][0],
'name' => 'testStatus',
'label' => 'Changed Status',
'is_active' => 1,
];
- $membershipStatus2 = CRM_Member_BAO_MembershipStatus::add($updateParams);
- $result = CRM_Member_PseudoConstant::membershipStatus($membershipStatus->id, NULL, 'label', FALSE, FALSE);
+ $this->callAPISuccess('MembershipStatus', 'create', $updateParams)['id'];
+ $result = CRM_Member_PseudoConstant::membershipStatus($this->ids['MembershipStatus'][0], NULL, 'label', FALSE, FALSE);
$this->assertEquals($result, 'Changed Status', 'Verify updated membership status label From PseudoConstant.');
- CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
}
public function testSetIsActive() {
$params = [
- 'name' => 'pending',
+ 'name' => 'added',
'is_active' => 1,
];
- $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
- $result = CRM_Member_BAO_MembershipStatus::setIsActive($membershipStatus->id, 0);
- $this->assertEquals($result, TRUE, 'Verify membership status record updation.');
+ $this->ids['MembershipStatus'][0] = $this->callAPISuccess('MembershipStatus', 'create', $params)['id'];
+ $result = CRM_Member_BAO_MembershipStatus::setIsActive($this->ids['MembershipStatus'][0], 0);
+ $this->assertEquals($result, TRUE, 'Verify membership status record updated.');
- $isActive = $this->assertDBNotNull('CRM_Member_BAO_MembershipStatus', $membershipStatus->id,
+ $isActive = $this->assertDBNotNull('CRM_Member_BAO_MembershipStatus', $this->ids['MembershipStatus'][0],
'is_active', 'id',
'Database check on updated membership status record.'
);
$this->assertEquals($isActive, 0, 'Verify membership status is_active.');
-
- $this->callAPISuccess('MembershipStatus', 'Delete', ['id' => $membershipStatus->id]);
}
public function testGetMembershipStatus() {
$params = [
- 'name' => 'pending',
+ 'name' => 'added',
'is_active' => 1,
];
- $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
- $result = CRM_Member_BAO_MembershipStatus::getMembershipStatus($membershipStatus->id);
- $this->assertEquals($result['name'], 'pending', 'Verify membership status name.');
-
- $this->callAPISuccess('MembershipStatus', 'Delete', ['id' => $membershipStatus->id]);
+ $this->ids['MembershipStatus'][0] = $this->callAPISuccess('MembershipStatus', 'create', $params)['id'];
+ $result = CRM_Member_BAO_MembershipStatus::getMembershipStatus($this->ids['MembershipStatus'][0]);
+ $this->assertEquals($result['name'], 'added', 'Verify membership status name.');
}
public function testDel() {
- $params = [
- 'name' => 'testStatus',
- 'is_active' => 1,
- ];
+ $params = ['name' => 'testStatus', 'is_active' => 1];
- $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
- CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
+ $membershipID = $this->callAPISuccess('MembershipStatus', 'create', $params)['id'];
+ CRM_Member_BAO_MembershipStatus::del($membershipID);
$defaults = [];
$result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
- $this->assertEquals(empty($result), TRUE, 'Verify membership status record deletion.');
+ $this->assertEquals($result === NULL, TRUE, 'Verify membership status record deletion.');
}
/**
+--------------------------------------------------------------------+
*/
+use Civi\Api4\Contact;
+
/**
* Test CRM_Member_Form_Membership functions.
*
*/
public function testSubmit() {
$form = $this->getForm();
- $this->createLoggedInUser();
+ $loggedInUserID = $this->createLoggedInUser();
+ $loggedInUserDisplayName = Contact::get()->addWhere('id', '=', $loggedInUserID)->addSelect('display_name')->execute()->first()['display_name'];
$params = $this->getBaseSubmitParams();
$form->_contactID = $this->_individualId;
$form->setRenewalMessage();
$membership = $this->callAPISuccessGetSingle('Membership', ['contact_id' => $this->_individualId]);
$this->callAPISuccessGetCount('ContributionRecur', ['contact_id' => $this->_individualId], 0);
- $contribution = $this->callAPISuccess('Contribution', 'get', [
+ $contribution = $this->callAPISuccessGetSingle('Contribution', [
'contact_id' => $this->_individualId,
'is_test' => TRUE,
]);
+ $expectedContributionSource = 'AnnualFixed Membership: Offline membership renewal (by ' . $loggedInUserDisplayName . ')';
+ $this->assertEquals($expectedContributionSource, $contribution['contribution_source']);
$this->callAPISuccessGetCount('LineItem', [
'entity_id' => $membership['id'],
$params = [
'cid' => $this->_individualId,
'price_set_id' => 0,
- 'join_date' => date('m/d/Y', time()),
+ 'join_date' => date('m/d/Y'),
'start_date' => '',
'end_date' => '',
'campaign_id' => '',
$originalMembership = $this->callAPISuccessGetSingle('membership', []);
$params = [
'cid' => $this->_individualId,
- 'join_date' => date('m/d/Y', time()),
+ 'join_date' => date('m/d/Y'),
'start_date' => '',
'end_date' => '',
// This format reflects the 23 being the organisation & the 25 being the type.
$originalMembership = $this->callAPISuccessGetSingle('membership', []);
$params = [
'cid' => $this->_individualId,
- 'join_date' => date('m/d/Y', time()),
+ 'join_date' => date('m/d/Y'),
'start_date' => '',
'end_date' => '',
// This format reflects the 23 being the organisation & the 25 being the type.
//Create and send test mail first and change the mail job to live,
//because stats api only works on live mail
- $mail = $this->callAPISuccess('mailing', 'create', $this->_params);
+ $mail = $this->callAPISuccess('Mailing', 'create', $this->_params);
$params = ['mailing_id' => $mail['id'], 'test_email' => NULL, 'test_group' => $this->_groupID];
$deliveredInfo = $this->callAPISuccess($this->_entity, 'send_test', $params);
$deliveredIds = implode(',', array_keys($deliveredInfo['values']));
ORDER BY RAND() LIMIT 0,20");
$temporaryTableName = $temporaryTable->getName();
- if ($type == 'unsubscribe') {
+ if ($type === 'unsubscribe') {
$sql = "INSERT INTO civicrm_mailing_event_{$type} (event_queue_id, time_stamp, org_unsubscribe)
SELECT event_queue_id, time_stamp, 1 FROM {$temporaryTableName}";
}
* Test Mailing.gettokens.
*/
public function testMailGetTokens() {
- $description = "Demonstrates fetching tokens for one or more entities (in this case \"Contact\" and \"Mailing\").
- Optionally pass sequential=1 to have output ready-formatted for the select2 widget.";
+ $description = 'Demonstrates fetching tokens for one or more entities (in this case "Contact" and "Mailing").
+ Optionally pass sequential=1 to have output ready-formatted for the select2 widget.';
$result = $this->callAPIAndDocument($this->_entity, 'gettokens', ['entity' => ['Contact', 'Mailing']], __FUNCTION__, __FILE__, $description);
$this->assertContains('Contact Type', $result['values']);
// END SAMPLE DATA
$create = $this->callAPISuccess('Mailing', 'create', $params);
- $created = $this->callAPISuccess('Mailing', 'get', []);
+ $this->callAPISuccess('Mailing', 'get');
$createId = $create['id'];
$this->createLoggedInUser();
$clone = $this->callAPIAndDocument('Mailing', 'clone', ['id' => $create['id']], __FUNCTION__, __FILE__);
$cloneId = $clone['id'];
$this->assertNotEquals($createId, $cloneId, 'Create and clone should return different records');
- $this->assertTrue(is_numeric($cloneId));
+ $this->assertInternalType('numeric', $cloneId);
$this->assertNotEmpty($clone['values'][$cloneId]['subject']);
$this->assertEquals($params['subject'], $clone['values'][$cloneId]['subject'], "Cloned subject should match");
/**
* @param array $params
* Extra parameters for the draft mailing.
+ *
* @return array|int
+ * @throws \CRM_Core_Exception
*/
public function createDraftMailing($params = []) {
$createParams = array_merge($this->_params, $params);
$createResult = $this->callAPISuccess('mailing', 'create', $createParams, __FUNCTION__, __FILE__);
- $this->assertTrue(is_numeric($createResult['id']));
+ $this->assertInternalType('numeric', $createResult['id']);
$this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_mailing_job WHERE mailing_id = %1', [
1 => [$createResult['id'], 'Integer'],
]);