Development issueshttps://lab.civicrm.org/groups/dev/-/issues2023-12-06T01:46:11Zhttps://lab.civicrm.org/dev/core/-/issues/4839Message templates not always sent2023-12-06T01:46:11ZtottenMessage templates not always sentOverview
----------------------------------------
There appears to be some subtle breakage in how message-templates are sent. I believe this is why the "Password Reset" emails aren't being sent (cc @pfigel @artfulrobot).
Reproduction s...Overview
----------------------------------------
There appears to be some subtle breakage in how message-templates are sent. I believe this is why the "Password Reset" emails aren't being sent (cc @pfigel @artfulrobot).
Reproduction steps
----------------------------------------
Setup a fake email service (eg MailHog)
Run this script:
```php
function do_wfmsg_a() {
$msg = \Civi\WorkflowMessage\WorkflowMessage::create('petition_sign', [
'from' => '"Foo" <foo@bar.com>',
'contactId' => 204,
]);
$msg->setTo('demo@example.com');
return $msg->sendTemplate([
'messageTemplate' => [
'msg_subject' => 'My Subject ' . __FUNCTION__,
'msg_text' => 'Hello',
'msg_html' => '<p>Hello</p>',
]
]);
}
```
Observe whether the email is received
Current behaviour
----------------------------------------
The email is not actually delivered (circa 5.64.0).
Expected behaviour
----------------------------------------
The email is actually delivered (circa 5.63.3).
Comments
----------------------------------------
I did a `git bisect`, and I believe it originates from:
https://github.com/civicrm/civicrm-core/commit/ba4b246234e4dd58e23050138455aec6497ac988
Probably related: When I watched this in the debugger, I noticed that `CRM_Core_BAO_MessageTemplate::renderTemplateRaw()` calls `WorkflowMessage::importAll()`. At this point, it wipes out the `$model->to` property.5.68.0https://lab.civicrm.org/dev/core/-/issues/4838APIv3 call to GroupContact doesn't complete when using IN2023-12-07T14:24:57ZbrienneAPIv3 call to GroupContact doesn't complete when using INOverview
----------------------------------------
There is a bug within APIv3 when making a 'GET' call to 'GroupContact', where the Contact ID is set and the Group ID uses 'IN'.
Reproduction steps
--------------------------------------...Overview
----------------------------------------
There is a bug within APIv3 when making a 'GET' call to 'GroupContact', where the Contact ID is set and the Group ID uses 'IN'.
Reproduction steps
----------------------------------------
1. Click on **Support -> Developer -> API Explorer v3**.
1. Set *Entity* to **GroupContact** and *Action* to **get**
1. Add two parameters:
* Group ID IN (select at least one group)
* Contact ID = (select a contact)
1. Click **Execute**
1. Note that nothing is returned, only a spinning/loading wheel
Current behaviour
----------------------------------------
A call to APIv3 where the Contact ID is set and the Group ID uses IN does not finish executing. This seems to be happening because the validation doesn't support an array and fails in php 8.1.
```php
$result = civicrm_api3('GroupContact', 'get', [
'sequential' => 1,
'group_id' => ['IN' => ["Administrators"]],
'contact_id' => 203,
]);
```
Expected behaviour
----------------------------------------
The API call should be able to handle an arry and finish execution.
Environment information
----------------------------------------
* __CiviCRM:__ 5.67.0, 5.69.alpha1https://lab.civicrm.org/dev/core/-/issues/4837Saving a system workflow message template without making any changes still ma...2023-12-07T09:11:16ZDaveDSaving a system workflow message template without making any changes still makes civi think you changed itIt seems like it trims it so a trailing newline gets cut off, which technically is a change but not intentional.
I'm thinking the templates themselves shouldn't have trailing newlines. Or the comparison could take trimming into account.It seems like it trims it so a trailing newline gets cut off, which technically is a change but not intentional.
I'm thinking the templates themselves shouldn't have trailing newlines. Or the comparison could take trimming into account.https://lab.civicrm.org/dev/core/-/issues/4836Importing Custom Data: Import of multiselect-fields for fieldgroup with multi...2024-02-08T10:40:26ZTobias Voigttobias.voigt@civiservice.deImporting Custom Data: Import of multiselect-fields for fieldgroup with multiple records not possibleI'm trying to import custom data to a custom field group **with multiple records** for a client.
In this field group I have a checkbox (multiselect) field.
In my import CSV I use the format "1,2,3" as a value for this multiselect field...I'm trying to import custom data to a custom field group **with multiple records** for a client.
In this field group I have a checkbox (multiselect) field.
In my import CSV I use the format "1,2,3" as a value for this multiselect field. Yet this value - even though it is possible when entering data manually - simply won't be accepted when importing via CSV.
Just to examine this behaviour further, I tried the same thing with a field group **that doesn't allow mutliple records**. Here the format "1,2,3" works as expected for my checkbox / multiselect field and gets imported without problems.
It should be possible to import multiselect fields for custom data with multiple records - so this seems like a bug at first glance. Or maybe I'm overseeing something here?5.71.0https://lab.civicrm.org/dev/core/-/issues/4835Standalone - Iterate on Roles2024-02-05T11:05:00ZkcristianoStandalone - Iterate on RolesFollow up to https://lab.civicrm.org/dev/core/-/issues/4466
At the Ashbourne Sprint, discussion was had on roles and Standalone now has 3 roles:
- Everyone, including anonymous users
- Staff
- Administrator
One possible concern is th...Follow up to https://lab.civicrm.org/dev/core/-/issues/4466
At the Ashbourne Sprint, discussion was had on roles and Standalone now has 3 roles:
- Everyone, including anonymous users
- Staff
- Administrator
One possible concern is that the `Administrator` role can be changed. Recent PRs have made it that the role cannot be removed, but the capabilities are editable. If the capabilities were changed by an existing admin, the system will become unusable/
Steps to reproduce
- Login as an admin
- remove all permissions for the administrator role except AuthX.
- Log out
- Log in
- Error - with too many redirects as the admin account cannopt access CiviCRM
We should protect against this by
- not having any permissions show for the administrator account
- make the internal name unchangeable
- The label can be changed by the site admin
- programmatically granting all permissions to the `administrator` role
In addition, there is a potential UX issue with assigning permissions.
The Search kit multi-select is useful if we only want a few permissions, but difficult if a role needs many permissions.
Rather than revert to the existing laundry list of permission that are used by Drupal and WP, we should consider using a cjheckbox approach by 'category'
@andyburns sugested an interface that is similar to the following:
![image](/uploads/d047d54bae7dcd3cf7caa0a02f2369db/image.png)
This interface is from the User Role Editor plugin from WordPress.
It categorizes permissions by type, allows filtering and has a checkbox interface. I think this would be a nice improvement to be considered.jaapjansmajaapjansmahttps://lab.civicrm.org/dev/core/-/issues/4834Afform conditionnal fields based on checkboxes2023-12-06T23:59:18ZbgmAfform conditionnal fields based on checkboxes- Create a custom field of type checkbox, add a few options
- Create an Afform using that conditional field
- Add a field condition on another field (ex: lastname) that depends on a specific checkbox being checked
Result: field is not d...- Create a custom field of type checkbox, add a few options
- Create an Afform using that conditional field
- Add a field condition on another field (ex: lastname) that depends on a specific checkbox being checked
Result: field is not displayedhttps://lab.civicrm.org/dev/core/-/issues/4833Authorize.net webhooks fail, because processor expects Integer for x_invoice_...2024-01-05T03:42:40ZAllenShawAuthorize.net webhooks fail, because processor expects Integer for x_invoice_num, while some have 20-character alphanumericI have a situation in which some Authorize.net ARB webhook notifications are not being processed successfully.
This appears to be because:
- CiviCRM expects an integer for the webhook value of x_invoice_num
- These webhooks have a 20-ch...I have a situation in which some Authorize.net ARB webhook notifications are not being processed successfully.
This appears to be because:
- CiviCRM expects an integer for the webhook value of x_invoice_num
- These webhooks have a 20-character alphanumeric string (e.g. "512def29489e1bcc8856") for this value.
More details:
- Affected recurring contributions were all created before Nov 2021
- This x_invoice_num string (e.g. "512def29489e1bcc8856") does appear in the database, only in these places:
- `civicrm_contribution` for the first contribution in the recurring series:
- civicrm_contribution.invoice_id contains a 32-character alphanumeric string, the first 20 characters of which are this x_invoice_num value
- civicrm_contribution.trxn_id contains two strings, joined by a comma; the first is this x_invoice_num value; the second is an integer which appears to be an FK to civicrm_financial_trxn.order_reference.
Technical assessment:
1. I'm guessing that older civicrm versions used to handle things this way (passing 20-character alphanumeric to Authorize.net, so that it gets returned in webhook's x_invoice_num value), and that way of things has changed at some point since Nov 2021.
I can work on a PR, but first I thought someone might know of a previous issue/commit that removed some code relevant to this process.
I'm at the sprint now and aim to work on a fix either way.
(Joinery reference: F#1270)5.70.0https://lab.civicrm.org/dev/core/-/issues/4832CiviReport 'Available for Dashboard' checkbox lost functionality2023-12-20T19:20:26ZbrienneCiviReport 'Available for Dashboard' checkbox lost functionalityOverview
----------------------------------------
The ‘Available for Dashboard?’ checkbox on CiviReports has lost its functionality.
Reproduction steps
----------------------------------------
1. On an existing or new CiviReport, click ...Overview
----------------------------------------
The ‘Available for Dashboard?’ checkbox on CiviReports has lost its functionality.
Reproduction steps
----------------------------------------
1. On an existing or new CiviReport, click on the **Access** tab
* If it is a new report, add a title on the **Title and Format** tab to make sure the report can be easily found.
1. Check the box next to the *Available for Dashboard?* label
1. Save the report from the *Actions* menu.
1. Go to the CiviCRM home page and do a hard reload (or even a cache clear)
1. Note that the report is either still present as an available dashlet ~~or not listed at all.~~
Current behaviour
----------------------------------------
Unchecking the *Available for Dashboard?* box on an existing CiviReport that is already available as a dashlet does not remove the report from the list of available dashlets on the CiviCRM home page
~~Checking the *Available for Dashboard?* on a new or existing CiviReport does not add it to the list of available dashlets on the CiviCRM page.~~
Deleting a report also does not remove the dashlet from the available options, however, the user will encounter a non-fatal error message that ‘You have tried to access a report that does not exist.’
Expected behaviour
----------------------------------------
The *Available for Dashboard?* checkbox should accurately control whether the report is or is not available as a dashlet.
Environment information
----------------------------------------
* __CiviCRM:__ 5.67.0https://lab.civicrm.org/dev/joomla/-/issues/54Joomla 5 compatibility2024-02-12T17:51:40Zchrisgaraffachris@aghstrategies.comJoomla 5 compatibilityWe started a small discussion about J5 compatibility on Mattermost recently in the context of people still doing J4 upgrades: https://chat.civicrm.org/civicrm/pl/t9sywefr1jrainqbww9x7etb7y
With a fresh installation of J5 in a supported ...We started a small discussion about J5 compatibility on Mattermost recently in the context of people still doing J4 upgrades: https://chat.civicrm.org/civicrm/pl/t9sywefr1jrainqbww9x7etb7y
With a fresh installation of J5 in a supported environment (PHP 8.1.2, Ubuntu 22.04, MariaDB 10.6), CiviCRM requires one patch to properly finish installation in com_civicrm/admin/civicrm/vendor/psr/log/Psr/Log/NullLogger.php, changing the method signature of log to specify a void return type and the type for $message:
``` diff
diff --git a/NullLogger.php b/NullLogger.php
index c8f7293..39c3969 100644
--- a/NullLogger.php
+++ b/NullLogger.php
@@ -23,7 +23,7 @@ class NullLogger extends AbstractLogger
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, $message, array $context = array())
+ public function log($level, \Stringable|string $message, array $context = array()) : void
{
// noop
}
```
This is from the [psr/log library](https://packagist.org/packages/psr/log). Joomla 5 is using version 3, Civi seems to be on 1.x.
After that update and manually repackaging the nightly installer for Joomla, the installation finishes and basic functionality seems to work.
However, union types (`\Stringable|string`) are [not supported before PHP 8.0](https://www.php.net/manual/en/language.types.declarations.php). We're supporting PHP 7.3 for just a little while longer and I imagine 7.4 for quite some time after that. [Joomla 5 requires PHP 8.1](https://docs.joomla.org/Portal:Joomla_5) so this puts Civi in a difficult position for J5 compatibility as we can't just upgrade psr/log.Joomla 5 integrationseamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/4831Standalone: select2 seems to have too much margin, making it look a bit uggly2024-01-25T08:58:17ZjaapjansmaStandalone: select2 seems to have too much margin, making it look a bit ugglyThe select2 seems in standalone CiviCRM seems to have too much margin.
See screenshot:
![2023-12-04_13-30](/uploads/64d896e96a4f64311029bf1df1dc01e6/2023-12-04_13-30.png)The select2 seems in standalone CiviCRM seems to have too much margin.
See screenshot:
![2023-12-04_13-30](/uploads/64d896e96a4f64311029bf1df1dc01e6/2023-12-04_13-30.png)RichRichhttps://lab.civicrm.org/dev/core/-/issues/4830PHP 7.4 Don't Drop2023-12-03T07:01:29ZtreseroPHP 7.4 Don't DropPlease don't. I have tried multiple times to upgrade to PHP 8.1+ and there are still major issues.
Many issues with the intl php libraries and extensions. And other things. I've reverted multiple times back to php 7.4 to keep my site fu...Please don't. I have tried multiple times to upgrade to PHP 8.1+ and there are still major issues.
Many issues with the intl php libraries and extensions. And other things. I've reverted multiple times back to php 7.4 to keep my site functioning.https://lab.civicrm.org/dev/wordpress/-/issues/146API Deprecation2023-12-06T13:22:19ZtreseroAPI DeprecationLots of these in the log for mailings
[warning] Deprecated function CRM_Mailing_BAO_MailingComponent::retrieve, use API.
CRM_Core_Error::deprecatedFunctionWarning
CRM_Mailing_BAO_MailingComponent::retrieve
CRM_Mailing_Form_Component::se...Lots of these in the log for mailings
[warning] Deprecated function CRM_Mailing_BAO_MailingComponent::retrieve, use API.
CRM_Core_Error::deprecatedFunctionWarning
CRM_Mailing_BAO_MailingComponent::retrieve
CRM_Mailing_Form_Component::setDefaultValues
CRM_Core_Form::buildForm
Array
(
[civi.tag] => deprecated
)
Trying to make an email template, and I get this.
Wish I could help more.https://lab.civicrm.org/dev/core/-/issues/4829Standalone: Authx jwt should not generate a cookie2024-03-09T18:36:02ZbgmStandalone: Authx jwt should not generate a cookieRelated to this PR: https://github.com/civicrm/civicrm-core/pull/28407
We silenced the test for Standalone for now, but if I understand correctly, when doing a request with jwt for authx, it should not generate a cookie.
(This is very ...Related to this PR: https://github.com/civicrm/civicrm-core/pull/28407
We silenced the test for Standalone for now, but if I understand correctly, when doing a request with jwt for authx, it should not generate a cookie.
(This is very low priority, very low impact)https://lab.civicrm.org/dev/core/-/issues/4828Can't view/edit grants2023-12-03T18:47:17ZJonGoldCan't view/edit grantsOverview
----------------------------------------
Can't view/edit grants.
This is a 5.67 regression, from https://github.com/civicrm/civicrm-core/pull/27411.
Reproduction steps
----------------------------------------
1. Enable CiviGra...Overview
----------------------------------------
Can't view/edit grants.
This is a 5.67 regression, from https://github.com/civicrm/civicrm-core/pull/27411.
Reproduction steps
----------------------------------------
1. Enable CiviGrant.
1. Create a grant.
1. Go to **Grants » Find Grant**. Search for your grant.
1. Click **View**.
This is also true if you click **View** from a contact's *Grants* tab.
Additionally, while **Edit** works, the **Edit** and **Delete** buttons you see when viewing a grant do not.
Current behaviour
----------------------------------------
Empty grant view template.
Expected behaviour
----------------------------------------
Data should display.
Comments
----------------------------------------
There are two issues here. I have a partial fix but I can't work on this further.
* The View template contains tokens that aren't being passed to it. It's getting loaded from an `include` in `templates/CRM/Grant/Form/Grant.tpl` now, which it previously wasn't. We can use most of the values passed in `{$form}` for an Edit page, but we don't have a good way to display selects in View mode.
* When viewing the page, the grant ID and contact ID aren't being calculated correctly for the "Edit" and "Delete" button URLs.
To be honest, I'm not sure how this passed review. I can't find a single way to get a grant to display.colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/4827FormBuilder - refreshing page after saving a new or cloned one lose current c...2023-12-06T22:49:59ZsamuelsovFormBuilder - refreshing page after saving a new or cloned one lose current contextCase 1:
- use clone button of a FormBuilder
- change the title and set a page route
- save
- press F5 to refresh the page
- a new clone is created instead of refreshing the current one
Case 2:
- create a new submission form
- set a titl...Case 1:
- use clone button of a FormBuilder
- change the title and set a page route
- save
- press F5 to refresh the page
- a new clone is created instead of refreshing the current one
Case 2:
- create a new submission form
- set a title and a page route
- save
- press F5 to refresh the page
- a new submission form is created instead of refreshing the current one
A way to solve this would be to redirect to the edit page `civicrm/admin/afform#/edit/afformMyNewForm` after we press the Save button instead of keeping the route `civicrm/admin/afform#/create/form/Individual` or `civicrm/admin/afform#/clone/afformMyForm`https://lab.civicrm.org/dev/core/-/issues/4826Add is_new as a field on membership api or possibly via membership_status2024-01-05T03:42:40ZeileenAdd is_new as a field on membership api or possibly via membership_statusI've been thinking about https://github.com/civicrm/civicrm-core/pull/28185 & have concluded that the way to determine if it is a new membership or renewal is to check for the new membership status.
However, that is not actually straig...I've been thinking about https://github.com/civicrm/civicrm-core/pull/28185 & have concluded that the way to determine if it is a new membership or renewal is to check for the new membership status.
However, that is not actually straight forward since we can't use {membership.membership_status_id.name} in case they have modified the statuses.
I'm thinking maybe an api calculated field (exposed as a token)
Then in the template it would be something like
```
{if {membership.membership_status_id.is_new|boolean}}
Signup
{else}
Renewal
{/if}
```
One concern with the above is that if you re-sent it after the status had changed from new (3 months by default) if would show 'renewal'. Obviously people can customise the templates, as they do the membership types, so we don't have to catch every possibility. We might consider doing instead
```
{if {membership.membership_status_id.is_new|boolean}}
Signup
{elseif !{contribution.receive_date|boolean}}
-- hasn't been sent already so we can be somewhat confident
Renewal
{else}
-- some mealy mouthed generic alternative
{/if}
```5.69.0https://lab.civicrm.org/dev/core/-/issues/4825Issues with CiviCRM Tables During MySQL 8.0 Upgrade2023-12-06T23:29:47ZfatihatesIssues with CiviCRM Tables During MySQL 8.0 UpgradeDuring the upgrade to MySQL 8.0, I encountered one different warnings related to CiviCRM tables and I want to take the correct steps in this regard. These warnings are listed below:
Usage of db objects with names conflicting with new re...During the upgrade to MySQL 8.0, I encountered one different warnings related to CiviCRM tables and I want to take the correct steps in this regard. These warnings are listed below:
Usage of db objects with names conflicting with new reserved keywords Warning: The following objects have names that conflict with new reserved keywords. Ensure queries sent by your applications use quotes when referring to them or they will result in errors.
Do I need to fix the mentioned 4 tables (sample tables listed below)? Are the commands I provided for fixing these tables correct and valid?
Sample Tables
----------------------------------------
`xxx_xx.civicrm_mapping_field.grouping - Column name`
`xxx_xx.civicrm_option_value.grouping - Column name`
`xxx_xx.log_civicrm_mapping_field.grouping - Column name`
`xxx_xx.log_civicrm_option_value.grouping - Column name`
Images
----------------------------------------
![2023-12-01_01_59_19](/uploads/934aa70e46592189d1c748892224c31e/2023-12-01_01_59_19.png)
Proposed Solution:
----------------------------------------
`SELECT "grouping" FROM xxx_cagri.civicrm_mapping_field;`
Similar Issues
----------------------------------------
https://civicrm.stackexchange.com/questions/45993/issues-with-civicrm-tables-during-mysql-8-0-upgrade
Environment information
----------------------------------------
* __CiviCRM: 5.67.0
* __PHP: 8.1.25
* __CMS: Joomla 4.4.1
* __Database: 5.7.44https://lab.civicrm.org/dev/core/-/issues/4824Ship Cors with Core2023-12-06T23:25:46ZeileenShip Cors with CoreIssue for tracking this proposal https://github.com/civicrm/civicrm-core/pull/24767Issue for tracking this proposal https://github.com/civicrm/civicrm-core/pull/24767https://lab.civicrm.org/dev/core/-/issues/4823Prevent more api calls from being added to the upgrader2023-12-06T23:23:32ZeileenPrevent more api calls from being added to the upgraderTicket created for tracking this initiative https://github.com/civicrm/civicrm-core/pull/24364Ticket created for tracking this initiative https://github.com/civicrm/civicrm-core/pull/24364https://lab.civicrm.org/dev/core/-/issues/4822Case activity filter causes performance headache for non-superusers2024-01-04T20:46:10ZJonGoldCase activity filter causes performance headache for non-superusersI received a report that contacts were taking over 60 seconds to load. This db has ~175,000 contacts and ~272,000 activities. It does not use CiviCase.
I traced the problem to the calculation of the activity count to display on the ac...I received a report that contacts were taking over 60 seconds to load. This db has ~175,000 contacts and ~272,000 activities. It does not use CiviCase.
I traced the problem to the calculation of the activity count to display on the activity tab. This is the query that's taking ~71 seconds:
```sql
SELECT count(*) as c
FROM civicrm_activity a
LEFT JOIN civicrm_case_activity actjoin_case_id ON (actjoin_case_id.activity_id = a.id)
WHERE (((`a`.`activity_type_id` IN (1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 19, 22, 34, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 73, 74))))
AND (((`a`.`id` IN (SELECT activity_id FROM civicrm_activity_contact WHERE contact_id IN (SELECT contact_id FROM civicrm_acl_contact_cache WHERE user_id = 148762)))))
AND (a.id IN (SELECT activity_id FROM civicrm_activity_contact WHERE contact_id = "136672"))
AND (actjoin_case_id.case_id IS NULL)
AND (a.is_current_revision = "1")
AND (a.activity_type_id IN ("1", "58", "59", "60", "61", "62", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31",
"32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "63", "64", "67", "68", "69", "70", "71", "72", "73", "74", "75"))
AND (a.is_test = "0")
AND (a.is_deleted = "0")
```
I removed the references to CiviCase and it went down to .25 seconds:
```sql
SELECT count(*) as c
FROM civicrm_activity a
WHERE (((`a`.`activity_type_id` IN (1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 19, 22, 34, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 73, 74))))
AND (((`a`.`id` IN (SELECT activity_id FROM civicrm_activity_contact WHERE contact_id IN (SELECT contact_id FROM civicrm_acl_contact_cache WHERE user_id = 148762)))))
AND (a.id IN (SELECT activity_id FROM civicrm_activity_contact WHERE contact_id = "136672"))
AND (a.is_current_revision = "1")
AND (a.activity_type_id IN ("1", "58", "59", "60", "61", "62", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31",
"32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "63", "64", "67", "68", "69", "70", "71", "72", "73", "74", "75"))
AND (a.is_test = "0")
AND (a.is_deleted = "0")
```
This site went from 5.65 to 5.67 a day ago, and was updated to PHP 8.1.26 from some pre-8.1.25 version.
I don't know if anyone has insight into this, but I don't think I can move the CiviCase-specific code to an extension because a) this is API3 and b) there's no hook. I can at least make this not try to filter by CiviCase when CiviCase is disabled.5.69.0JonGoldJonGold