CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-06-23T17:54:21Zhttps://lab.civicrm.org/dev/core/-/issues/16Select "Enable multiple bulk email address for a contact", "hold_date" can no...2023-06-23T17:54:21ZLiyanaSelect "Enable multiple bulk email address for a contact", "hold_date" can not be updatedI have reported the bug at https://issues.civicrm.org/jira/browse/CRM-20189, and now I'll explain why the error occours only if you assign true to the variable civimail_multiple_bulk_emails.
( $result = civicrm_api3('Setting', 'creat...I have reported the bug at https://issues.civicrm.org/jira/browse/CRM-20189, and now I'll explain why the error occours only if you assign true to the variable civimail_multiple_bulk_emails.
( $result = civicrm_api3('Setting', 'create', array(
'civimail_multiple_bulk_emails' => 1,
));)
If civimail_multiple_bulk_emails is true, you have three options to select for "On Hold?" in your email edit block, see the file ".../CRM/Contact/Form/Edit/Email.php".
If you chose the "- select -", the value is "0", which data type String is, and in the function "holdEmail" (.../CRM/Core/BAO/Email.php) the condition "elseif ($email->on_hold == 'null')..." will not be filled, because a string '0' is not 'null'!
Steps to reproduce:
1. Open the page „Administer CiviCRM“ --> “CiviMail Component Settings”, and select the option “Enable multiple bulk email address for a contact”
2. Open a contact and set “on hold” to the email (i.g. select “On Hold Opt Out”), and check the hold_date with api, ), in my test the “hold_date” is “2017-02-22 09:27:56”, and “on_hold=2
3. On the page of contact, reset the “On Hold” and save it, and check the value with api, and the value of “on_hold” is 0, BUT the “hold_date” IS NOT CHANGED! The “hold_date” should be deleted, and set the current time for “reset_date”!
4. As a following error: the “hold_date” is the old one, not changed, if you set “on hold” to the email again (i.g. select “On Hold Bounce”). In my test the “hold_date” is still “2017-02-22 09:27:56”, and “on_hold=1https://lab.civicrm.org/dev/core/-/issues/15Wrong parameter passing in LineItem.php2023-06-23T17:54:21ZjitendraWrong parameter passing in LineItem.phpFound an incorrect parameter supplied to getFieldValue() function in CRM/Price/BAO/LineItem.php.
Current Code from https://github.com/civicrm/civicrm-core/blob/master/CRM/Price/BAO/LineItem.php#L458-
$membershipId = CRM_Core_DAO::g...Found an incorrect parameter supplied to getFieldValue() function in CRM/Price/BAO/LineItem.php.
Current Code from https://github.com/civicrm/civicrm-core/blob/master/CRM/Price/BAO/LineItem.php#L458-
$membershipId = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipPayment', 'contribution_id', $line['entity_id'], 'membership_id');
`getFieldValue()` accepts the following parameters which is not correctly fed in the above line
> * @param string $daoName
* Name of the DAO (Example: CRM_Contact_DAO_Contact to retrieve value from a contact).
> * @param int $searchValue
* Value of the column you want to search by.
> * @param string $returnColumn
* Name of the column you want to GET the value of.
> * @param string $searchColumn
* Name of the column you want to search by.
> * @param bool $force
* Skip use of the cache.https://lab.civicrm.org/dev/core/-/issues/14Creating a relationship fails for an organization contact which has NULL valu...2023-06-23T17:54:21ZEvanCreating a relationship fails for an organization contact which has NULL values in start/end/join fields of a membershipWhen creating a relationship between an Individual and an Organizational contact, the relationship fails to be created and throws the following error if the Organizational contact record has a membership with NULL values in the start/end...When creating a relationship between an Individual and an Organizational contact, the relationship fails to be created and throws the following error if the Organizational contact record has a membership with NULL values in the start/end/join fields, such as might happen if a payment failed and the membership was created in a "Pending" state:
`unknown relationship create error The membership cannot be saved because the status cannot be calculated for start_date: null end_date null join_date null as at 2018-03-09 16:43:22`
What's odd is that I wouldn't expect the relationships to be dependent on a membership object, but for some reason it is? I did some testing on a client's sandbox site and found that any membership with NULL start/end/join dates will cause a Relationship creation to fail. I found that deleting the membership with NULL dates fixes the issue i.e. allows the relationship to be created, as does simply adding dates to the membership in question.
**Backtrace:**
`Mar 09 16:43:23 [info] $backTrace = #0 /var/www/example.org/htdocs/sites/all/modules/civicrm/CRM/Core/Error.php(456): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/example.org/htdocs/sites/all/modules/civicrm/CRM/Core/Invoke.php(55): CRM_Core_Error::handleUnhandledException(Object(CRM_Core_Exception))
#2 /var/www/example.org/htdocs/sites/all/modules/civicrm/drupal/civicrm.module(345): CRM_Core_Invoke::invoke((Array:4))
#3 [internal function](): civicrm_invoke("contact", "view", "rel")
#4 /var/www/example.org/htdocs/includes/menu.inc(350): call_user_func_array("civicrm_invoke", (Array:3))
#5 /var/www/example.org/htdocs/index.php(17): menu_execute_active_handler()
#6 {main}`
**NB:** I am unable to manually re-create this scenario on the demo site (I tried) as a start date is required when creating a membership.https://lab.civicrm.org/dev/core/-/issues/12Improvement: for crmUiWizard-driven workflows, scroll back to top between steps2023-06-23T17:54:21ZginkgofjgImprovement: for crmUiWizard-driven workflows, scroll back to top between stepsSome "steps" in a wizard are fairly long and require scrolling to reach all the required fields. See the CiviMail wizard (civicrm/a/#/mailing) for example.
Differences in height between the steps can make clicking the buttons that contr...Some "steps" in a wizard are fairly long and require scrolling to reach all the required fields. See the CiviMail wizard (civicrm/a/#/mailing) for example.
Differences in height between the steps can make clicking the buttons that control the workflow (back, forward, etc.) at the bottom of the wizard a jarring experience. Sometimes the next step is significantly shorter than the previous one, and the user is left looking at white space. Sometimes the next step is very similar to the previous step, and it is unclear that anything occurred after the user's click because the user's view hasn't changed.
In any case, a better user experience would be to move the user to the top of the wizard at each transition.5.0.0ginkgofjgginkgofjghttps://lab.civicrm.org/dev/core/-/issues/11Email - send now error screen should display earlier2023-06-23T17:54:21ZJchesterEmail - send now error screen should display earlierIn Advanced Search if you are displaying results as contacts and then:
* select more than 50 of the results
* select **Email - send now (to 50 or less)**
you see the Error message telling you that you can't email more than 50 contac...In Advanced Search if you are displaying results as contacts and then:
* select more than 50 of the results
* select **Email - send now (to 50 or less)**
you see the Error message telling you that you can't email more than 50 contacts this way and the process stops
However, if you display the results as contributions or as memberships then
* select more than 50 of the results
* select **Email - send now (to 50 or less)**
you are taken to the email set up page. It is not until you click on Send Email on that page that you see the Error message telling you that you can't email more than 50 contacts this way and the process is stopped.
It would be a better user experience if the error message always appeared when **Email - send now (to 50 or less)** was selected.5.9https://lab.civicrm.org/dev/core/-/issues/10Enabling plugin in CKEditor Default doesn't enable it in Civimail despite sho...2023-06-23T17:54:21Zluke.stewartEnabling plugin in CKEditor Default doesn't enable it in Civimail despite showing it as enabledWhen enabling a CKEditor plugin at: civicrm/admin/ckeditor if you add it to "Default" and press save.
At this point the plugin shows up on all three tabs, (Default, Civimail, CiviEvent) however the plugin doesn't appear on a new mail des...When enabling a CKEditor plugin at: civicrm/admin/ckeditor if you add it to "Default" and press save.
At this point the plugin shows up on all three tabs, (Default, Civimail, CiviEvent) however the plugin doesn't appear on a new mail despite clearing caches, and force refreshing the browser.
Navigating to the "Civimail" tab and pressing save there as well gives the desired behaviour that the plugin is enabled.![CKEditor](/uploads/5c8b21a886fbf4b0eb27cd0a0ba0d09d/CKEditor.png)
Tested on 4.7.27 and 4.7.31RC
To reproduce:
1. Navigate to civicrm/admin/ckeditor
1. Select a plugin from the plugin dropdown on the default tab
1. Obeserve additional component appears in preview
1. Click Save
1. Clear caches civicrm/admin/setting/updateConfigBackend
1. Create an new email -> civicrm/mailing/send?reset=1
1. Observe additional component that it doesn't show in the toolbar.
1. Return to civicrm/admin/ckeditor
1. Shift to the Civi mail tab. Observe the plugin is listed.
1. Scratch head.
1. Press save.
1. Create a new mail.
1. You now have the required plugin.
I haven't tested behaviour with regards to the event tab.https://lab.civicrm.org/dev/core/-/issues/9Custom include/exclude search is broken2023-06-23T17:54:21ZJchesterCustom include/exclude search is brokenToday (8 March 2018) on http://dmaster.demo.civicrm.org the custom include/exclude search gives a WSOD.
This was using **Include** Newsletter Subscribers and **exclude** Advisory Board.
This works correclty in 4.7.29 on Civihostings...Today (8 March 2018) on http://dmaster.demo.civicrm.org the custom include/exclude search gives a WSOD.
This was using **Include** Newsletter Subscribers and **exclude** Advisory Board.
This works correclty in 4.7.29 on Civihostings demo site. I don't have access to a 4.7.30 site to test on thathttps://lab.civicrm.org/dev/core/-/issues/8Fatal error on Print/Merge Document for Cases2023-06-23T17:54:21Zaydunsaidan.saunders@squiffle.ukFatal error on Print/Merge Document for Cases* Go to Search Cases
* Select cases
* Select Print/merge Document from Actions menu
* Result is fatal error
Possibly related to https://issues.civicrm.org/jira/browse/CRM-21382
Reproduced on dmaster.demo
```
Array
(
[callback] =>...* Go to Search Cases
* Select cases
* Select Print/merge Document from Actions menu
* Result is fatal error
Possibly related to https://issues.civicrm.org/jira/browse/CRM-21382
Reproduced on dmaster.demo
```
Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -19
[message] => DB Error: no such field
[mode] => 16
[debug_info] =>
SELECT contact_id
FROM civicrm_case
WHERE id IN ( 1,4 )
[nativecode=1054 ** Unknown column 'contact_id' in 'field list']
[type] => DB_Error
[user_info] =>
SELECT contact_id
FROM civicrm_case
WHERE id IN ( 1,4 )
[nativecode=1054 ** Unknown column 'contact_id' in 'field list']
[to_string] => [db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::handle prefix="" info="
SELECT contact_id
FROM civicrm_case
WHERE id IN ( 1,4 )
[nativecode=1054 ** Unknown column 'contact_id' in 'field list']"]
)
```5.0.0https://lab.civicrm.org/dev/core/-/issues/7recurring authorize IPN results in contribution with incorrect payment_instru...2023-06-23T17:54:21Zjamierecurring authorize IPN results in contribution with incorrect payment_instrument_idIf you create a recurring contribution in authorize.net, the second time it goes through, it will result in a contribution with payment instrument type set to check, instead of credit card (or perhaps a different value if you have a diff...If you create a recurring contribution in authorize.net, the second time it goes through, it will result in a contribution with payment instrument type set to check, instead of credit card (or perhaps a different value if you have a different default payment instrument id).
This seems related to this issue: https://issues.civicrm.org/jira/browse/CRM-19186 which fixed it for paypal but not for authorize.net.https://lab.civicrm.org/dev/core/-/issues/6Add help text for "is public" setting on form to edit custom field sets2023-06-23T17:54:21ZSean ColsenAdd help text for "is public" setting on form to edit custom field setsThere's a new setting for making custom field sets public/private. I think it needs some help text.
![mockup](https://user-images.githubusercontent.com/42411/36987279-f763aae0-2069-11e8-99c8-b3dd9953a895.png)
How exactly does CiviCRM c...There's a new setting for making custom field sets public/private. I think it needs some help text.
![mockup](https://user-images.githubusercontent.com/42411/36987279-f763aae0-2069-11e8-99c8-b3dd9953a895.png)
How exactly does CiviCRM change its behavior based on this setting?
As far as I can tell, this setting has only two effects:
* Custom fields attached directly to *events* are hidden from the event info page if they are part of a private custom field set
* from https://github.com/civicrm/civicrm-core/pull/10028
* Custom fields attached to some other entities (e.g. participation, contribution, etc... *not sure of comprehensive list*) are displayed in the registration email sent to participants, but only when this email comes from a back-office registration. These fields will be hidden if they're part of a private set.
* from https://github.com/civicrm/civicrm-core/pull/106615.8https://lab.civicrm.org/dev/core/-/issues/2331Ordering events by start date ignores time2023-06-23T05:03:21ZalainbOrdering events by start date ignores timeIn the Manage Events screen, when you click on the "Starts" column to sort events by start date/time, the events are sorted by date but not by time.
You can reproduce the error by creating multiple events with the same start date, but d...In the Manage Events screen, when you click on the "Starts" column to sort events by start date/time, the events are sorted by date but not by time.
You can reproduce the error by creating multiple events with the same start date, but different start times. See screenshot.
![events-not-properly-ordered-by-date-time](/uploads/008ec03f8e16bc81c1e0bec60ca02520/events-not-properly-ordered-by-date-time.png)
(I discovered this in 5.28.4, but you can reproduce it in the demo environment. Currently 5.35.alpha1)https://lab.civicrm.org/dev/core/-/issues/2375Feature request, De-duplicate rules for Organisations would be more useful if...2023-06-23T05:03:20Zjustinfreeman (Agileware)Feature request, De-duplicate rules for Organisations would be more useful if Organisation Nickname was a multi-value fieldDe-duplicate rules for Organisations would be more useful if Organisation Nickname was a multi-value field. Thereby allowing multiple Nicknames (or aliases) for the same organisation to be recorded.
Currently de-duplicate rules for Orga...De-duplicate rules for Organisations would be more useful if Organisation Nickname was a multi-value field. Thereby allowing multiple Nicknames (or aliases) for the same organisation to be recorded.
Currently de-duplicate rules for Organisations are limited by up to 5 fields. So if you have Organisation Name, Nickname and Email then there are only two fields remaining to compare, which could be used for two custom (Organisation) Nickname fields. You could possibly have a multi-valued custom field for Nickname 2 - have not confirmed if that works at all for de-duplication.
However, it is more commonplace for Organisations to have multiple different abbreviations and shortened versions, not by some "official" naming standard, but simply because people refer to the Organisation differently with varying spelling and abbreviations. eg. IBM, I.B.M, IBM Inc. IBM Intl.
This is a feature request. Open for discussion about other solutions or implementation.
Agileware Ref: CIVICRM-1666https://lab.civicrm.org/dev/core/-/issues/1912Weird "null" in mailing recipient group list2023-06-23T03:51:55ZDaveDWeird "null" in mailing recipient group list![null](/uploads/0c8e6691c31580ceb2cc621df015fe93/null.png)
Can reproduce on dmaster.demo. I don't see it in 5.22 but do see it in 5.24 and up. Don't have a 5.23 handy.
1. Create at least 2 groups with the mailing list checkbox checked...![null](/uploads/0c8e6691c31580ceb2cc621df015fe93/null.png)
Can reproduce on dmaster.demo. I don't see it in 5.22 but do see it in 5.24 and up. Don't have a 5.23 handy.
1. Create at least 2 groups with the mailing list checkbox checked.
1. Go to New Mailing.
1. Pick one group.
1. Open the group dropdown again and scroll down.
1. It even lets you select it.
In drupal watchdog there is this:
`Location: http://example.com/civicrm/ajax/rest?entity=Mailing&action=getlist&json=%7B%22input%22%3A%22%22%2C%22page_num%22%3A1%2C%22params%22%3A%7B%22is_hidden%22%3A0%2C%22is_active%22%3A1%2C%22options%22%3A%7B%22sort%22%3A%22is_archived+asc%2C+scheduled_date+desc%22%7D%7D%2C%22api.MailingRecipients.getcount%22%3A%7B%7D%7D`
`Notice: Undefined index: name in _civicrm_api3_generic_getlist_output() (line 191 of .../api/v3/Generic/Getlist.php).`
This might be violating a higher mathematical law here too - it's not possible to exclude the null set, since the null set is a subset of every set. (Source: Math)5.64.0https://lab.civicrm.org/dev/core/-/issues/4319SearchKit + FormBuilder: In place edit using a list view2023-06-22T14:15:45Zsimon.hermannSearchKit + FormBuilder: In place edit using a list viewOverview
----------------------------------------
I was trying to embed a list view of a SearchKit in FormBuilder, where some of the entries have 'in-place edit' activated. When looking at the Afform I am able to click on those entries a...Overview
----------------------------------------
I was trying to embed a list view of a SearchKit in FormBuilder, where some of the entries have 'in-place edit' activated. When looking at the Afform I am able to click on those entries and the the green checkmark as well as the red X appear, however I am not able to edit the content of the entry.
Reproduction steps
----------------------------------------
1. Create a SearchKit with a list view
1. Activate the option 'in-place edit' for some of the entries.
1. Embed the list view in a Afform.
Current behaviour
----------------------------------------
The entries with 'in-place edit' are clickable and the green checkmark as well as the red X are showing. However, the input is shown but cannot be altered.
Expected behaviour
----------------------------------------
The input is shown and I can edit it.
Environment information
----------------------------------------
* __CiviCRM:__ 5.58.1 and 5.60
* __PHP:__ 7.4 and 8.1
* __CMS:__ WordPress 6.1.3https://lab.civicrm.org/dev/core/-/issues/2373Membership Details report, Net Amount returns null value instead of the most ...2023-06-22T05:03:29Zjustinfreeman (Agileware)Membership Details report, Net Amount returns null value instead of the most recent Contribution for the Membership renewalMembership Details report, Net Amount returns null value instead of the most recent Contribution for the Membership renewal
Steps to reproduce
1. Locate an existing Contact with a membership, eg. "Dr. Jacob Terrell-Terry Sr." https://dm...Membership Details report, Net Amount returns null value instead of the most recent Contribution for the Membership renewal
Steps to reproduce
1. Locate an existing Contact with a membership, eg. "Dr. Jacob Terrell-Terry Sr." https://dmaster.demo.civicrm.org/civicrm/contact/view?reset=1&cid=33
2. Renew the membership and enter in a contribution amount, $150
3. Save the contribution
4. Open the Membership Details report, https://dmaster.demo.civicrm.org/civicrm/report/instance/23
5. Display column: Net Amount
6. Set Contact filter to locate the contact, eg. Terrell
7. Report displays null value for Net Amount column
8. Expected result is Net Value shows $150
As verified on CiviCRM 5.36.alpha1 - https://dmaster.demo.civicrm.org
Agileware Ref: CIVICRM-1663
![Screenshot_20210209_150213](/uploads/862ae11ddee4eb3319584e94295c1eba/Screenshot_20210209_150213.png)
![screencapture-dmaster-demo-civicrm-org-civicrm-report-instance-23-2021-02-09-15_05_16](/uploads/04b31b801b212d1777de30036d0cec3e/screencapture-dmaster-demo-civicrm-org-civicrm-report-instance-23-2021-02-09-15_05_16.png)https://lab.civicrm.org/dev/core/-/issues/2374Membership Details report, "Payment Amount (most recent)" returns total amoun...2023-06-22T05:03:29Zjustinfreeman (Agileware)Membership Details report, "Payment Amount (most recent)" returns total amount for all membership contributions instead of the most recent Contribution for the Membership renewalMembership Details report, "Payment Amount (most recent)" returns total amount for all membership contributions instead of the most recent Contribution for the Membership renewal.
Steps to reproduce
1. Locate an existing Contact with a ...Membership Details report, "Payment Amount (most recent)" returns total amount for all membership contributions instead of the most recent Contribution for the Membership renewal.
Steps to reproduce
1. Locate an existing Contact with a membership, eg. "Dr. Jacob Terrell-Terry Sr." https://dmaster.demo.civicrm.org/civicrm/contact/view?reset=1&cid=33
2. Renew the membership and enter in a contribution amount, $150
3. Save the contribution
4. Open the Membership Details report, https://dmaster.demo.civicrm.org/civicrm/report/instance/23
5. Display column: "Payment Amount (most recent)"
6. Set Contact filter to locate the contact, eg. Terrell
7. Report displays $250 value for "Payment Amount (most recent)" column
8. Expected result is "Payment Amount (most recent)" shows $150 (not the combined total)
It is also confusing to label the column "Payment Amount (most recent)" and then in the results show the column as "Amount".
As verified on CiviCRM 5.36.alpha1 - https://dmaster.demo.civicrm.org
Agileware Ref: CIVICRM-1664
![Screenshot_20210209_150213](/uploads/e07371ce892ad94af4a09ab08feacd11/Screenshot_20210209_150213.png)
![screencapture-dmaster-demo-civicrm-org-civicrm-report-instance-23-2021-02-09-15_05_16](/uploads/e6ddeaa2622029cf9cb272acac074a34/screencapture-dmaster-demo-civicrm-org-civicrm-report-instance-23-2021-02-09-15_05_16.png)https://lab.civicrm.org/dev/core/-/issues/2367Possible wp regression on package having git repo2023-06-21T05:03:20ZeileenPossible wp regression on package having git repoI just downloaded , unzipped & commited the wp 5.34.0 release and found that it committed the following as a submodule - implying we are shipping with the .git folder
civicrm/vendor/pear/validate_finance_creditcard
I had deleted the fo...I just downloaded , unzipped & commited the wp 5.34.0 release and found that it committed the following as a submodule - implying we are shipping with the .git folder
civicrm/vendor/pear/validate_finance_creditcard
I had deleted the folder before unzipping so it was not pre-existing.
This could cause issues for people who use git in their deployment workflow
I have not checked other CMS
@totten @seamusleehttps://lab.civicrm.org/dev/core/-/issues/2358Broken Smartgroup status display shows mystery smartgroup2023-06-21T05:03:19Zmagnolia61Broken Smartgroup status display shows mystery smartgroupIn my install this is the second time I delete a custom field and end up with a mystery smart group message in the status display.
![smartgroup-problems](/uploads/cc75cb10c43ed769be25c3585a7ddd31/smartgroup-problems.png)
When I hover t...In my install this is the second time I delete a custom field and end up with a mystery smart group message in the status display.
![smartgroup-problems](/uploads/cc75cb10c43ed769be25c3585a7ddd31/smartgroup-problems.png)
When I hover the pencil is shows: https://www.mydomain.nl/civicrm/contact/search/advanced??reset=1&ssID=1065<br><br>
When I hover the gearbox it links to: https://www.mydomain.nl/civicrm/group??reset=1&action=update&id=
Is this an edge case? Can the display be improved? Is it just that I have a rogue saved search (id 1065) that I can safely delete? Why does this show up in the first place? Questions...https://lab.civicrm.org/dev/core/-/issues/1613updating misleading labels on buttons to confirmation pages2023-06-20T23:09:15Zyosefromanoupdating misleading labels on buttons to confirmation pagesOn contribution forms, the button leading to the confirmation page (if enabled) says 'confirm payment' which in many cases makes the user think that clicking the button submits the contribution.
On event forms, the button leading to th...On contribution forms, the button leading to the confirmation page (if enabled) says 'confirm payment' which in many cases makes the user think that clicking the button submits the contribution.
On event forms, the button leading to the confirmation page (if enabled) says 'continue' which again in many cases is misconstrued to mean 'continue and complete'
I get constant feedback from at least 50 different sites that their constituents are leaving the form before submitting it because they assume it was submitted leading to loss of revenue.
From looking at all shopping websites the industry standard with buttons leading to confirmation pages seems to be to use the word 'review'
The proposed solution in both cases is that the button label should simply say 'Review'.5.25.0https://lab.civicrm.org/dev/core/-/issues/2346V3 Rest API error: Contact endpoint errors on use of BETWEEN for MODIFIED_DATE2023-06-20T05:03:20ZCallum_RobsonV3 Rest API error: Contact endpoint errors on use of BETWEEN for MODIFIED_DATE## Overview
When using the REST v3 API, the contacts endpoint provides a DB Syntax Error when using BETWEEN with the modified_date. The debug statement suggests the BETWEEN isn't being populated in the SQL statement:
`WHERE ( contact_a...## Overview
When using the REST v3 API, the contacts endpoint provides a DB Syntax Error when using BETWEEN with the modified_date. The debug statement suggests the BETWEEN isn't being populated in the SQL statement:
`WHERE ( contact_a.is_deleted = '0' AND contact_a.modified_date BETWEEN '' ) AND ( 1 )`
This can be reproduced with a couple of seperate CiviCRM instances, and the other endpoints which have modified_date work with the same BETWEEN syntax.
Mattermost chat: https://chat.civicrm.org/civicrm/pl/74grk3wrs3f7td3x4k99ni146a
## Reproduction steps
1. In the API Explorer, select Entity 'Contact' and Action 'Get'.
2. In parameters, select 'modified_date', then BETWEEN as the operator, then ['2020-01-01 00:00:00', '2020-12-31 23:59:59'] as the value
## Current behaviour
Screenshot of error on dmaster:
![Capture](/uploads/a434b2025221029ed20d579e650bf29a/Capture.PNG)
Debug statement from Api Explorer:
```
{
"code": -2,
"error_message": "DB Error: syntax error",
"mode": 16,
"debug_info": "SELECT contact_a.id as contact_id, contact_a.contact_type as `contact_type`, contact_a.contact_sub_type as `contact_sub_type`, contact_a.sort_name as `sort_name`, contact_a.display_name as `display_name`, contact_a.do_not_email as `do_not_email`, contact_a.do_not_phone as `do_not_phone`, contact_a.do_not_mail as `do_not_mail`, contact_a.do_not_sms as `do_not_sms`, contact_a.do_not_trade as `do_not_trade`, contact_a.is_opt_out as `is_opt_out`, contact_a.legal_identifier as `legal_identifier`, contact_a.external_identifier as `external_identifier`, contact_a.nick_name as `nick_name`, contact_a.legal_name as `legal_name`, contact_a.image_URL as `image_URL`, contact_a.preferred_communication_method as `preferred_communication_method`, contact_a.preferred_language as `preferred_language`, contact_a.preferred_mail_format as `preferred_mail_format`, contact_a.first_name as `first_name`, contact_a.middle_name as `middle_name`, contact_a.last_name as `last_name`, contact_a.prefix_id as `prefix_id`, contact_a.suffix_id as `suffix_id`, contact_a.formal_title as `formal_title`, contact_a.communication_style_id as `communication_style_id`, contact_a.job_title as `job_title`, contact_a.gender_id as `gender_id`, contact_a.birth_date as `birth_date`, contact_a.is_deceased as `is_deceased`, contact_a.deceased_date as `deceased_date`, contact_a.household_name as `household_name`, IF ( contact_a.contact_type = 'Individual', NULL, contact_a.organization_name ) as organization_name, contact_a.sic_code as `sic_code`, contact_a.is_deleted as `contact_is_deleted`, contact_a.modified_date as `modified_date`, IF ( contact_a.contact_type = 'Individual', contact_a.organization_name, NULL ) as current_employer, civicrm_address.id as address_id, civicrm_address.street_address as `street_address`, civicrm_address.supplemental_address_1 as `supplemental_address_1`, civicrm_address.supplemental_address_2 as `supplemental_address_2`, civicrm_address.supplemental_address_3 as `supplemental_address_3`, civicrm_address.city as `city`, civicrm_address.postal_code_suffix as `postal_code_suffix`, civicrm_address.postal_code as `postal_code`, civicrm_address.geo_code_1 as `geo_code_1`, civicrm_address.geo_code_2 as `geo_code_2`, civicrm_address.state_province_id as state_province_id, civicrm_address.country_id as country_id, civicrm_phone.id as phone_id, civicrm_phone.phone_type_id as phone_type_id, civicrm_phone.phone as `phone`, civicrm_email.id as email_id, civicrm_email.email as `email`, civicrm_email.on_hold as `on_hold`, civicrm_im.id as im_id, civicrm_im.provider_id as provider_id, civicrm_im.name as `im`, civicrm_worldregion.id as worldregion_id, civicrm_worldregion.name as `world_region` FROM civicrm_contact contact_a LEFT JOIN civicrm_address ON ( contact_a.id = civicrm_address.contact_id AND civicrm_address.is_primary = 1 ) LEFT JOIN civicrm_country ON ( civicrm_address.country_id = civicrm_country.id ) LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) LEFT JOIN civicrm_phone ON (contact_a.id = civicrm_phone.contact_id AND civicrm_phone.is_primary = 1) LEFT JOIN civicrm_im ON (contact_a.id = civicrm_im.contact_id AND civicrm_im.is_primary = 1) LEFT JOIN civicrm_worldregion ON civicrm_country.region_id = civicrm_worldregion.id WHERE ( contact_a.is_deleted = '0' AND contact_a.modified_date BETWEEN '' ) AND ( 1 ) AND (contact_a.is_deleted = 0) AND ( 1 ) AND (contact_a.is_deleted = 0) LIMIT 0, 25 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') AND ( 1 ) AND (contact_a.is_deleted = 0) AND ( 1 ) AND (contact_a.is_delet...' at line 1]",
"type": "DB_Error",
"user_info": "SELECT contact_a.id as contact_id, contact_a.contact_type as `contact_type`, contact_a.contact_sub_type as `contact_sub_type`, contact_a.sort_name as `sort_name`, contact_a.display_name as `display_name`, contact_a.do_not_email as `do_not_email`, contact_a.do_not_phone as `do_not_phone`, contact_a.do_not_mail as `do_not_mail`, contact_a.do_not_sms as `do_not_sms`, contact_a.do_not_trade as `do_not_trade`, contact_a.is_opt_out as `is_opt_out`, contact_a.legal_identifier as `legal_identifier`, contact_a.external_identifier as `external_identifier`, contact_a.nick_name as `nick_name`, contact_a.legal_name as `legal_name`, contact_a.image_URL as `image_URL`, contact_a.preferred_communication_method as `preferred_communication_method`, contact_a.preferred_language as `preferred_language`, contact_a.preferred_mail_format as `preferred_mail_format`, contact_a.first_name as `first_name`, contact_a.middle_name as `middle_name`, contact_a.last_name as `last_name`, contact_a.prefix_id as `prefix_id`, contact_a.suffix_id as `suffix_id`, contact_a.formal_title as `formal_title`, contact_a.communication_style_id as `communication_style_id`, contact_a.job_title as `job_title`, contact_a.gender_id as `gender_id`, contact_a.birth_date as `birth_date`, contact_a.is_deceased as `is_deceased`, contact_a.deceased_date as `deceased_date`, contact_a.household_name as `household_name`, IF ( contact_a.contact_type = 'Individual', NULL, contact_a.organization_name ) as organization_name, contact_a.sic_code as `sic_code`, contact_a.is_deleted as `contact_is_deleted`, contact_a.modified_date as `modified_date`, IF ( contact_a.contact_type = 'Individual', contact_a.organization_name, NULL ) as current_employer, civicrm_address.id as address_id, civicrm_address.street_address as `street_address`, civicrm_address.supplemental_address_1 as `supplemental_address_1`, civicrm_address.supplemental_address_2 as `supplemental_address_2`, civicrm_address.supplemental_address_3 as `supplemental_address_3`, civicrm_address.city as `city`, civicrm_address.postal_code_suffix as `postal_code_suffix`, civicrm_address.postal_code as `postal_code`, civicrm_address.geo_code_1 as `geo_code_1`, civicrm_address.geo_code_2 as `geo_code_2`, civicrm_address.state_province_id as state_province_id, civicrm_address.country_id as country_id, civicrm_phone.id as phone_id, civicrm_phone.phone_type_id as phone_type_id, civicrm_phone.phone as `phone`, civicrm_email.id as email_id, civicrm_email.email as `email`, civicrm_email.on_hold as `on_hold`, civicrm_im.id as im_id, civicrm_im.provider_id as provider_id, civicrm_im.name as `im`, civicrm_worldregion.id as worldregion_id, civicrm_worldregion.name as `world_region` FROM civicrm_contact contact_a LEFT JOIN civicrm_address ON ( contact_a.id = civicrm_address.contact_id AND civicrm_address.is_primary = 1 ) LEFT JOIN civicrm_country ON ( civicrm_address.country_id = civicrm_country.id ) LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) LEFT JOIN civicrm_phone ON (contact_a.id = civicrm_phone.contact_id AND civicrm_phone.is_primary = 1) LEFT JOIN civicrm_im ON (contact_a.id = civicrm_im.contact_id AND civicrm_im.is_primary = 1) LEFT JOIN civicrm_worldregion ON civicrm_country.region_id = civicrm_worldregion.id WHERE ( contact_a.is_deleted = '0' AND contact_a.modified_date BETWEEN '' ) AND ( 1 ) AND (contact_a.is_deleted = 0) AND ( 1 ) AND (contact_a.is_deleted = 0) LIMIT 0, 25 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') AND ( 1 ) AND (contact_a.is_deleted = 0) AND ( 1 ) AND (contact_a.is_delet...' at line 1]",
"to_string": "[db_error: message=\"DB Error: syntax error\" code=-2 mode=callback callback=CRM_Utils_REST::fatal prefix=\"\" info=\"SELECT contact_a.id as contact_id, contact_a.contact_type as `contact_type`, contact_a.contact_sub_type as `contact_sub_type`, contact_a.sort_name as `sort_name`, contact_a.display_name as `display_name`, contact_a.do_not_email as `do_not_email`, contact_a.do_not_phone as `do_not_phone`, contact_a.do_not_mail as `do_not_mail`, contact_a.do_not_sms as `do_not_sms`, contact_a.do_not_trade as `do_not_trade`, contact_a.is_opt_out as `is_opt_out`, contact_a.legal_identifier as `legal_identifier`, contact_a.external_identifier as `external_identifier`, contact_a.nick_name as `nick_name`, contact_a.legal_name as `legal_name`, contact_a.image_URL as `image_URL`, contact_a.preferred_communication_method as `preferred_communication_method`, contact_a.preferred_language as `preferred_language`, contact_a.preferred_mail_format as `preferred_mail_format`, contact_a.first_name as `first_name`, contact_a.middle_name as `middle_name`, contact_a.last_name as `last_name`, contact_a.prefix_id as `prefix_id`, contact_a.suffix_id as `suffix_id`, contact_a.formal_title as `formal_title`, contact_a.communication_style_id as `communication_style_id`, contact_a.job_title as `job_title`, contact_a.gender_id as `gender_id`, contact_a.birth_date as `birth_date`, contact_a.is_deceased as `is_deceased`, contact_a.deceased_date as `deceased_date`, contact_a.household_name as `household_name`, IF ( contact_a.contact_type = 'Individual', NULL, contact_a.organization_name ) as organization_name, contact_a.sic_code as `sic_code`, contact_a.is_deleted as `contact_is_deleted`, contact_a.modified_date as `modified_date`, IF ( contact_a.contact_type = 'Individual', contact_a.organization_name, NULL ) as current_employer, civicrm_address.id as address_id, civicrm_address.street_address as `street_address`, civicrm_address.supplemental_address_1 as `supplemental_address_1`, civicrm_address.supplemental_address_2 as `supplemental_address_2`, civicrm_address.supplemental_address_3 as `supplemental_address_3`, civicrm_address.city as `city`, civicrm_address.postal_code_suffix as `postal_code_suffix`, civicrm_address.postal_code as `postal_code`, civicrm_address.geo_code_1 as `geo_code_1`, civicrm_address.geo_code_2 as `geo_code_2`, civicrm_address.state_province_id as state_province_id, civicrm_address.country_id as country_id, civicrm_phone.id as phone_id, civicrm_phone.phone_type_id as phone_type_id, civicrm_phone.phone as `phone`, civicrm_email.id as email_id, civicrm_email.email as `email`, civicrm_email.on_hold as `on_hold`, civicrm_im.id as im_id, civicrm_im.provider_id as provider_id, civicrm_im.name as `im`, civicrm_worldregion.id as worldregion_id, civicrm_worldregion.name as `world_region` FROM civicrm_contact contact_a LEFT JOIN civicrm_address ON ( contact_a.id = civicrm_address.contact_id AND civicrm_address.is_primary = 1 ) LEFT JOIN civicrm_country ON ( civicrm_address.country_id = civicrm_country.id ) LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) LEFT JOIN civicrm_phone ON (contact_a.id = civicrm_phone.contact_id AND civicrm_phone.is_primary = 1) LEFT JOIN civicrm_im ON (contact_a.id = civicrm_im.contact_id AND civicrm_im.is_primary = 1) LEFT JOIN civicrm_worldregion ON civicrm_country.region_id = civicrm_worldregion.id WHERE ( contact_a.is_deleted = '0' AND contact_a.modified_date BETWEEN '' ) AND ( 1 ) AND (contact_a.is_deleted = 0) AND ( 1 ) AND (contact_a.is_deleted = 0) LIMIT 0, 25 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') AND ( 1 ) AND (contact_a.is_deleted = 0) AND ( 1 ) AND (contact_a.is_delet...' at line 1]\"]",
"is_error": 1
}
```
## Environment information
This is reproducible on dmaster.
## Expected behaviour
To return data without an error.