From 32c3b33f2460e1aef692964c1cfbcf06097d7d20 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Sat, 13 Jun 2020 17:20:59 +1000 Subject: [PATCH] [REF] Fix issue with using array access tools on NULL values --- CRM/Contact/BAO/Query.php | 4 ++-- CRM/Contact/Page/AJAX.php | 2 +- CRM/Contribute/Form/Contribution/Confirm.php | 2 +- CRM/Contribute/Form/Contribution/Main.php | 2 +- CRM/Group/Form/Edit.php | 2 +- CRM/Mailing/ActionTokens.php | 6 +++--- CRM/Profile/Page/MultipleRecordFieldsListing.php | 2 +- CRM/Report/Form.php | 4 ++-- tests/phpunit/api/v4/Entity/ParticipantTest.php | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index 790dc07167..122c1ac3f8 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -3288,7 +3288,7 @@ WHERE $smartGroupClause $etTable = "`civicrm_entity_tag-" . uniqid() . "`"; - if ($useAllTagTypes[2]) { + if (!empty($useAllTagTypes[2])) { $this->_tables[$etTable] = $this->_whereTables[$etTable] = " LEFT JOIN civicrm_entity_tag {$etTable} ON ( {$etTable}.entity_id = contact_a.id AND {$etTable}.entity_table = 'civicrm_contact') "; @@ -4237,7 +4237,7 @@ WHERE $smartGroupClause // Note we do not currently set mySql to handle timezones, so doing this the old-fashioned way $today = date('Ymd'); //check for active, inactive and all relation status - if ($relStatus[2] == 0) { + if (empty($relStatus[2])) { $where[$grouping][] = "( civicrm_relationship.is_active = 1 AND ( civicrm_relationship.end_date IS NULL OR civicrm_relationship.end_date >= {$today} ) AND diff --git a/CRM/Contact/Page/AJAX.php b/CRM/Contact/Page/AJAX.php index 069aff30d9..4b91252858 100644 --- a/CRM/Contact/Page/AJAX.php +++ b/CRM/Contact/Page/AJAX.php @@ -770,7 +770,7 @@ LIMIT {$offset}, {$rowCount} public static function getSearchOptionsFromRequest() { $searchParams = []; $searchData = $_REQUEST['search'] ?? NULL; - $searchData['value'] = CRM_Utils_Type::escape($searchData['value'], 'String'); + $searchData['value'] = CRM_Utils_Type::escape($searchData['value'] ?? NULL, 'String'); $selectorElements = [ 'is_selected', 'is_selected_input', diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 873c0f76f7..f478e80e70 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1886,7 +1886,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // contribution amount to be null, so that it will not show // contribution amount same as membership amount. //@todo - merge with section above - if ($this->_membershipBlock['is_separate_payment'] + if (!empty($this->_membershipBlock['is_separate_payment']) && !empty($this->_values['fee'][$priceField->id]) && CRM_Utils_Array::value('name', $this->_values['fee'][$priceField->id]) == 'contribution_amount' && CRM_Utils_Array::value("price_{$priceField->id}", $this->_params) == '-1' diff --git a/CRM/Contribute/Form/Contribution/Main.php b/CRM/Contribute/Form/Contribution/Main.php index e894fa1495..c8e0ccfddc 100644 --- a/CRM/Contribute/Form/Contribution/Main.php +++ b/CRM/Contribute/Form/Contribution/Main.php @@ -703,7 +703,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } // CRM-12233 - if ($membershipIsActive && !$self->_membershipBlock['is_required'] + if ($membershipIsActive && empty($self->_membershipBlock['is_required']) && $self->_values['amount_block_is_active'] ) { $membershipFieldId = $contributionFieldId = $errorKey = $otherFieldId = NULL; diff --git a/CRM/Group/Form/Edit.php b/CRM/Group/Form/Edit.php index d0e6ac595d..d9be20cdfb 100644 --- a/CRM/Group/Form/Edit.php +++ b/CRM/Group/Form/Edit.php @@ -127,7 +127,7 @@ class CRM_Group_Form_Edit extends CRM_Core_Form { } } else { - if ($this->_groupValues['is_reserved'] == 1 && !CRM_Core_Permission::check('administer reserved groups')) { + if ($this->_id && $this->_groupValues['is_reserved'] == 1 && !CRM_Core_Permission::check('administer reserved groups')) { CRM_Core_Error::statusBounce(ts("You do not have sufficient permission to change settings for this reserved group.")); } if (isset($this->_id)) { diff --git a/CRM/Mailing/ActionTokens.php b/CRM/Mailing/ActionTokens.php index c30ea60c46..b50dd766cc 100644 --- a/CRM/Mailing/ActionTokens.php +++ b/CRM/Mailing/ActionTokens.php @@ -82,10 +82,10 @@ class CRM_Mailing_ActionTokens extends \Civi\Token\AbstractTokenSubscriber { list($verp, $urls) = CRM_Mailing_BAO_Mailing::getVerpAndUrls( $row->context['mailingJobId'], - $row->context['mailingActionTarget']['id'], - $row->context['mailingActionTarget']['hash'], + $row->context['mailingActionTarget']['id'] ?? 0, + $row->context['mailingActionTarget']['hash'] ?? '', // Note: Behavior is already undefined for SMS/'phone' mailings... - $row->context['mailingActionTarget']['email'] + $row->context['mailingActionTarget']['email'] ?? '' ); $row->format('text/plain')->tokens($entity, $field, diff --git a/CRM/Profile/Page/MultipleRecordFieldsListing.php b/CRM/Profile/Page/MultipleRecordFieldsListing.php index 18cba944bf..e9c5e56995 100644 --- a/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -53,7 +53,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { * (reference) of action links */ public function &links() { - if (!(self::$_links[$this->_pageViewType])) { + if (!isset(self::$_links[$this->_pageViewType])) { // helper variable for nicer formatting $links = []; diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index 7ea3a22179..2aa9b17f9a 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -681,7 +681,7 @@ class CRM_Report_Form extends CRM_Core_Form { // Do not display Report Settings section if administer Reports permission is absent OR // if report instance is reserved and administer reserved reports absent if (!CRM_Core_Permission::check('administer Reports') || - ($this->_instanceValues['is_reserved'] && + (!empty($this->_instanceValues['is_reserved']) && !CRM_Core_Permission::check('administer reserved reports')) ) { $this->_instanceForm = FALSE; @@ -692,7 +692,7 @@ class CRM_Report_Form extends CRM_Core_Form { if (CRM_Core_Permission::check('administer Reports') || CRM_Core_Permission::check('access Report Criteria') ) { - if (!$this->_instanceValues['is_reserved'] || + if (empty($this->_instanceValues['is_reserved']) || CRM_Core_Permission::check('administer reserved reports') ) { $this->assign('criteriaForm', TRUE); diff --git a/tests/phpunit/api/v4/Entity/ParticipantTest.php b/tests/phpunit/api/v4/Entity/ParticipantTest.php index 6f243c4fae..31208f8aca 100644 --- a/tests/phpunit/api/v4/Entity/ParticipantTest.php +++ b/tests/phpunit/api/v4/Entity/ParticipantTest.php @@ -129,7 +129,7 @@ class ParticipantTest extends UnitTestCase { ->addWhere('event_id', 'IN', [$firstEventId, $secondEventId]) ->execute(); - $firstResult = $result->first(); + $firstResult = $firstTwo->first(); // verify counts // count should either twice the first event count or one less -- 2.25.1