CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2024-03-07T22:30:13Zhttps://lab.civicrm.org/dev/core/-/issues/4995Standalone - JWT for password resets2024-03-07T22:30:13ZufundoStandalone - JWT for password resetsSwitch Standaloneusers password reset mechanism to use JWT, instead of custom format.
PR from @pfigel is here: https://github.com/civicrm/civicrm-core/pull/28505Switch Standaloneusers password reset mechanism to use JWT, instead of custom format.
PR from @pfigel is here: https://github.com/civicrm/civicrm-core/pull/28505Patrick Figelpfigel@greenpeace.orgPatrick Figelpfigel@greenpeace.orghttps://lab.civicrm.org/dev/core/-/issues/4993Standalone - disable CMS user sync on Standalone2024-03-07T20:40:09ZufundoStandalone - disable CMS user sync on StandaloneThe CMS user sync doesn't make sense when using standaloneusers so should be disabledThe CMS user sync doesn't make sense when using standaloneusers so should be disabledufundoufundohttps://lab.civicrm.org/dev/core/-/issues/49895.69.4>5 regression - Multiple currency issues in contribution page workflow2024-02-13T19:58:40ZJKingsnorth5.69.4>5 regression - Multiple currency issues in contribution page workflowTesting latest master we have multiple issues when setting a contribution page to a non-default currency.
In all the following examples I changed the currency of the contribution page to JPY.
---
1 - 'Confirm' and 'Thank You' pages sh...Testing latest master we have multiple issues when setting a contribution page to a non-default currency.
In all the following examples I changed the currency of the contribution page to JPY.
---
1 - 'Confirm' and 'Thank You' pages show default instead of contribution page set currency
![image](/uploads/cfd5a92065599d8c937b806e1289e508/image.png)
---
2 - 'currency' variable is not being set correctly in ContributionBase, which could be affecting client side payment processors?
![image](/uploads/bb16b6e00884f747dbf18f0f6aaa22eb/image.png)
'currencyID' uses the form _values, 'currency' is using the default site currency.5.70.1https://lab.civicrm.org/dev/core/-/issues/4988Standalone: doesn't install because of missing session class2024-03-07T21:23:58ZRichStandalone: doesn't install because of missing session classStandalone installer (web based) fails because it tries to start session before it's found the standaloneusers/ session class; presumably, before it's booted extensions(possibly?).
Note it is possible to install from civibuild, but the ...Standalone installer (web based) fails because it tries to start session before it's found the standaloneusers/ session class; presumably, before it's booted extensions(possibly?).
Note it is possible to install from civibuild, but the [other methods](https://docs.civicrm.org/installation/en/latest/standalone/) don't work.
See @clarkac https://chat.civicrm.org/civicrm/pl/neac84z6ztrymendzimmtqa18a
> Fatal error: Uncaught Error:
> Class "Civi\Standalone\SessionHandler" not found in
> .../web/core/CRM/Utils/System/Standalone.php
>
> followed by a stack trace followed by:
> thrown in .../web/core/CRM/Utils/System/Standalone.php on line 556ufundoufundohttps://lab.civicrm.org/dev/core/-/issues/4987standalone: agree distribution format(s)2024-03-08T23:55:45ZRichstandalone: agree distribution format(s)Options:
**OPTION 1** Encourage composer-template
**OPTION 2** Encourage tar-ball (with current structure)
**OPTION 3** Encourage tar-ball (with composer-like structure)
(And is it one of those options -- or two of those options)
Mo...Options:
**OPTION 1** Encourage composer-template
**OPTION 2** Encourage tar-ball (with current structure)
**OPTION 3** Encourage tar-ball (with composer-like structure)
(And is it one of those options -- or two of those options)
Moved from [chat](https://chat.civicrm.org/civicrm/pl/4pwoodpzufd4z8x5wqguwhprbw) to save an unwieldy thread therein.
@totten
> i guess in theory # 1+# 3 sounds better than # 1+ # 2. but
>
> 1. even drupal.org appears to be following a structure like # 1+# 2
> 2. the workflow of "download+extract full tarball for composer-project" is a little weird for upgrades. (you need to delete+reset some folders -- but not other folders)
> 3. i'm not entirely sure how to reconcile # 3 with the regular RC workflow. i'm sure it can be sorted; but it's more of a conversation
>
@demerit (sorry, don't know your handle here)
> tarball tarball tarball
...
@wmortada
> For initial installation, having a tarball that a user can just download and install is preferable because it is easier and lowers the barrier to entry. But is this going to make upgrades more tricky for them? What could we do to make upgrades easier in this scenario?
@artfulrobot
> composer rules out hosting where you dont have shell access. Personally I'm cool with that, because you kinda need shell access to do things properly. Ftp for fun, shell for serious. (What a t shirt slogan!).
>
> I dont like messy things like unpack this tarball, replace directories a, b, c swap out file d.
>
> But I also don't love composer esp when it requires scripts to run. I tend to have my php as not owned by www-data, so the scripts won't run as www-data. Also in staging, where the httpd is in a container, I like to be able to manage the codebase from outside the container, but this will probably use a different php version. I'm happy to change my ways, though
>
> Other projects I work with:
>
> Nextcloud: provides a fairly solid upgrade script, even a web ui for upgrades, though they encourage CLI invocation to avoid timeouts. Files owned by www-data so the code writes the code. The CLI call to upgrade handles everything: checks, downloads, checksum checks, backups, moving files, running db migrations. It's solid and reliable, and there's a 'repair' command, in case something goes wrong (eg you tried your luck on the web ui method...)
>
> Roundcube mail: provides an upgrade script as part of the new release. So you download tar, extract to tmp/ run a script from there like install-to.php /path/to/installation/dir/
>
> I sometimes deploy by git too. I guess I could composer offline, commit, push, pull. I sometimes find composer flaky. There's one package that won't download or such. And it's slow (a zillion http requests) and can't be run offline.
>
> But it let's you add bits to your site, e.g. if you have civi as part of a bigger project. Which is nice.
>
> Tarballs are nice. Can be signed. Single download. Works offline.
>
> Barrier to entry: hmmm. Idk tbh. You need CLI access at mo, and as long as there's a reliable few commands to run that can be copy pasted it makes no difference?
>
> I'd quite like to be able to upgrade by git pull! Is that any more realistic in standalone? Probably red herring :blowfish:
>
> Let's not do this though...
> curl https://civicrn.org/gimmestandalone | sudo bash
@clarkac
> Please don't do anything that rules out hosting without shell access. That would discourage people from getting started with Civi, as I did and I've helped around 15 charities to get Civi - all hosted without shell access. I'm sure there are many in amongst the 4,000 D7 sites that don't have shell access.
>
> # 2 on the list is similar to what I do with upgrades with D7 - after backing up, delete the CiviCRM code folder and unpack the tarballs into it. That's so easy, and adding some more to that would be no problemhttps://lab.civicrm.org/dev/core/-/issues/4980Crash on thankyou page when no paymentProcessorObject is set2024-02-08T09:56:27ZBastien HoCrash on thankyou page when no paymentProcessorObject is setSince v5.69, I get this error on contribution pages, on "thank you".
```
PHP Fatal error: Uncaught Error: Call to a member function getText() on null in CRM/Contribute/Form/ContributionBase.php:995
```
In fact, the diff shows that a p...Since v5.69, I get this error on contribution pages, on "thank you".
```
PHP Fatal error: Uncaught Error: Call to a member function getText() on null in CRM/Contribute/Form/ContributionBase.php:995
```
In fact, the diff shows that a previous check has been removed
[-if ($isMonetary && $this->_paymentProcessor['object'] instanceof \CRM_Core_Payment) { -]
[- $paymentProcessorObject = $this->_paymentProcessor['object'];-]
[+if ($isMonetary) {+]
[+ $paymentProcessorObject = $this->getPaymentProcessorObject();+]
I suggest to implement a new check `if($paymentProcessorObject)`
In addition, a checkup should be implemented in _PaymentProcessorFormTrait.php_.5.69.5https://lab.civicrm.org/dev/core/-/issues/4977FormBuilder with relationship and custom field fields to encode correctly (5.70)2024-02-18T13:45:49ZbgmFormBuilder with relationship and custom field fields to encode correctly (5.70)Odd bug on 5.70/RC where it's generating afform markup that looks like:
```
<af-entity security="FBAC" type="Relationship"
name="Relationship2" label="Relation 2"
actions="{create: true, update: true}"
data="{contact_id_a: ['Indiv...Odd bug on 5.70/RC where it's generating afform markup that looks like:
```
<af-entity security="FBAC" type="Relationship"
name="Relationship2" label="Relation 2"
actions="{create: true, update: true}"
data="{contact_id_a: ['Individual1'], relationship_type_id: '13', "MyCustom.MyField": '1'}" />
```
This is a custom field on a relationship, that is used in the form. Because of the double-quotes around the MyCustom field, it's causing an AngualrJS syntax error.
To reproduce:
- Create a custom-group/field for Relationships
- Create a form that adds a relationship, and pre-selects a value for the custom field
![image](/uploads/04aa00dfd4def6189fe404ed6689ce91/image.png)
Save the form, then do a full page reload (sometimes it's not obvious at first). It will fail to load correctly, and JS errors in the console.
I can fix the syntax by manually editing the file, but then it creeps back when we do changes to the form.
For what it's worth, my test site is on PHP 8.0, and dmaster is on PHP 8.2.5.71.0colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/4974Event with no fees shows the fees section with just the word "Total" on the r...2024-02-07T22:37:29ZDaveDEvent with no fees shows the fees section with just the word "Total" on the register pageAnd says Undefined array key "quickConfig".
It doesn't affect registration, but is obviously wrong. In 5.71 caused by https://github.com/civicrm/civicrm-core/pull/29197 (yes the one I just merged 2 minutes ago - I figured it was better ...And says Undefined array key "quickConfig".
It doesn't affect registration, but is obviously wrong. In 5.71 caused by https://github.com/civicrm/civicrm-core/pull/29197 (yes the one I just merged 2 minutes ago - I figured it was better to get the waitlist fix in).5.71.0https://lab.civicrm.org/dev/core/-/issues/4973Credit card info not appearing on event confirm/thankyou page2024-02-08T09:56:27ZDaveDCredit card info not appearing on event confirm/thankyou pageAnd there's undefined array key errors about it.
I'm not sure when this started - it's not working in 5.69. Labelling as regression for now.And there's undefined array key errors about it.
I'm not sure when this started - it's not working in 5.69. Labelling as regression for now.5.69.5https://lab.civicrm.org/dev/core/-/issues/4972IOS 17 params encoding issue Activity, Contacts, Relationships, Events entity2024-02-09T11:18:51ZBohdanDmytryshynIOS 17 params encoding issue Activity, Contacts, Relationships, Events entityOverview
----------------------------------------
For apps linked on or after iOS 17 and aligned OS versions, URL parsing has updated from the obsolete RFC 1738/1808 parsing to the same RFC 3986 parsing as URLComponents. This unifies the...Overview
----------------------------------------
For apps linked on or after iOS 17 and aligned OS versions, URL parsing has updated from the obsolete RFC 1738/1808 parsing to the same RFC 3986 parsing as URLComponents. This unifies the parsing behaviors of the URL and URLComponents APIs. Now, URL automatically percent- and IDNA-encodes invalid characters to help create a valid URL. You can read about it more https://developer.apple.com/documentation/foundation/url/3126806-init.
How URL looks like in normal form:
/sites/all/modules/civicrm/extern/rest.php?key=KEY&civimobile =1 &api_key =APIKEY &entity =Activity &action =get &json =%7B%22sequential%22:1,%22is_deleted%22:0,%22is_current_revision%22:1,%22is_test%22:0,%22contact_id%22:%222%22,%22status_id%22:%7B%22NOT+IN%22:[%222%22,%223%22]%7D,%22return%22:%22subject,activity_date_time,activity_type_id,status_id.name,status_id,status,priority_id,priority_id.label,priority_id.name,details,duration,source_contact_id,assignee_contact_id,target_contact_id,activity_type_id.label,status_id.label,short_description,location,case_type_is_active,can_edit,can_delete%22,%22options%22:%7B%22limit%22:20,%22sort%22:%22activity_date_time+DESC%22%7D%7D
How URL looks like in IOS 17:
/sites/all/modules/civicrm/extern/rest.php?key=KEY&civimobile=1&api_key=APIKEY&entity=Activity&action=get&json=%257B%2522sequential%2522:1,%2522is_deleted%2522:0,%2522is_current_revision%2522:1,%2522is_test%2522:0,%2522contact_id%2522:%25222%2522,%2522status_id%2522:%257B%2522NOT+IN%2522:%5B%25222%2522,%25223%2522%5D%257D,%2522return%2522:%2522subject,activity_date_time,activity_type_id,status_id.name,status_id,status,priority_id,priority_id.label,priority_id.name,details,duration,source_contact_id,assignee_contact_id,target_contact_id,activity_type_id.label,status_id.label,short_description,location,case_type_is_active,can_edit,can_delete%2522,%2522options%2522:%257B%2522limit%2522:20,%2522sort%2522:%2522activity_date_time+DESC%2522%257D%257D\
So API doesn’t accept query params in IOS 17. Lower IOS versions and Android work as expected
Environment information
----------------------------------------
* __CiviCRM:__ _Master/5.67.3/5.69.4
* __PHP:__ 7.3/8.0+https://lab.civicrm.org/dev/core/-/issues/4971Error when attempting to edit CiviEvent scheduled reminders2024-02-20T23:15:44ZrichardsplaygroundError when attempting to edit CiviEvent scheduled remindersOverview
----------------------------------------
A user with tries to edit a scheduled reminder on an event and sees only a blank screen. Logs show errors.
Strangely, they can create new scheduled reminders on events no problem. Bu...Overview
----------------------------------------
A user with tries to edit a scheduled reminder on an event and sees only a blank screen. Logs show errors.
Strangely, they can create new scheduled reminders on events no problem. But they then cannot edit the event scheduled reminder, not even for reminders they themselves created.
This occurs on CiviCRM 5.68 on Drupal 7 as well as on Civi 5.70.alpha1 generated today with buildkit drupal-demo.
** This worked on CiviCRM 5.52. There have been no changes to the user, roles, or permissions between it working on 5.52 and not working on 5.68. **
[Posted on StackExchange](https://civicrm.stackexchange.com/questions/46242/error-when-editing-but-not-creating-event-scheduled-reminder) but did not generate any discussion.
Role & Permissions
----------------------------------------
A user with "administrator" permissions can edit scheduled reminders on an event with no errors or issues.
A user with the following permissions receives an error when attempting to edit scheduled reminders on an event:
* CiviCRM: skip IDS check
* CiviCRM: access CiviCRM backend and API
* CiviEvent: access CiviEvent
* CiviEvent: edit event participants
* CiviEvent: edit all events
* CiviEvent: register for events
* CiviEvent: view event info
Error
----------------------------------------
When a user with the above permissions attempts to edit a scheduled reminder, what they see in the web UI is this:
![view_when_eventhelper_user_tries_to_edit_scheduled_reminder](/uploads/a0bec6e86da1d7bbba18334b5f64cc55/view_when_eventhelper_user_tries_to_edit_scheduled_reminder.png)
What the Javascript Console shows is this:
![console_error_when_eventhelper_tries_to_see_a_scheduled_event](/uploads/cfccaea9fe9336a7ad5bcb26545473a0/console_error_when_eventhelper_tries_to_see_a_scheduled_event.png)
What the logviewer shows is this on Civi 5.70.alpha1 (buildkit drupal-demo):
```
[error]
$Fatal Error Details = array:3 [
"message" => "Authorization failed"
"code" => null
"exception" => Civi\API\Exception\UnauthorizedException {#706
#message: "Authorization failed"
#code: 0
#file: "/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/Civi/API/Kernel.php"
#line: 230
#cause: null
-_trace: null
-errorData: array:1 [
"error_code" => "unauthorized"
]
trace: {
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/Civi/API/Kernel.php:230 {
Civi\API\Kernel->authorize($apiProvider, $apiRequest)
› if (!$event->isAuthorized()) {
› throw new \Civi\API\Exception\UnauthorizedException("Authorization failed");
› }
}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/Civi/API/Kernel.php:147 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/Civi/Api4/Generic/AbstractAction.php:256 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/api/api.php:91 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Admin/Form.php:169 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Admin/Form.php:79 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Admin/Form/ScheduleReminders.php:50 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Form.php:731 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Display.php:76 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php:203 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php:103 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Controller.php:355 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Utils/Wrapper.php:98 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Invoke.php:295 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Invoke.php:69 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Invoke.php:36 { …}
/buildkit/build/drupal-demo/web/sites/all/modules/civicrm/drupal/civicrm.module:472 { …}
/buildkit/build/drupal-demo/web/includes/menu.inc:527 { …}
/buildkit/build/drupal-demo/web/index.php:21 { …}
}
}
]
2024-02-06 05:12:58+0000 [debug] $backTrace = #0 /buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Error.php(443): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /buildkit/build/drupal-demo/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(39): CRM_Core_Error::handleUnhandledException(Object(Civi\API\Exception\UnauthorizedException))
#2 /buildkit/build/drupal-demo/web/sites/all/modules/civicrm/drupal/civicrm.module(472): CRM_Core_Invoke::invoke((Array:4))
#3 /buildkit/build/drupal-demo/web/includes/menu.inc(527): civicrm_invoke("admin", "scheduleReminders", "edit")
#4 /buildkit/build/drupal-demo/web/index.php(21): menu_execute_active_handler()
#5 {main}
```
and what the logs show on a different system running CiviCRM 5.68 is this:
```
2024-01-15 15:30:56-0800 [debug] $API Request Authorization failed = #0 /var/www/html/sites/all/modules/civicrm/Civi/API/Kernel.php(151): CRM_Core_Error::backtrace("API Request Authorization failed", TRUE)
#1 /var/www/html/sites/all/modules/civicrm/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
#2 /var/www/html/sites/all/modules/civicrm/api/api.php(91): Civi\Api4\Generic\AbstractAction->execute()
#3 /var/www/html/sites/all/modules/civicrm/CRM/Admin/Form.php(161): civicrm_api4("ActionSchedule", "get", (Array:1))
#4 /var/www/html/sites/all/modules/civicrm/CRM/Admin/Form.php(77): CRM_Admin_Form->retrieveValues()
#5 /var/www/html/sites/all/modules/civicrm/CRM/Admin/Form/ScheduleReminders.php(50): CRM_Admin_Form->preProcess()
#6 /var/www/html/sites/all/modules/civicrm/CRM/Core/Form.php(717): CRM_Admin_Form_ScheduleReminders->preProcess()
#7 /var/www/html/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Display.php(76): CRM_Core_Form->buildForm()
#8 /var/www/html/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Display->perform(Object(CRM_Admin_Form_ScheduleReminders), "display")
#9 /var/www/html/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Admin_Form_ScheduleReminders), "display")
#10 /var/www/html/sites/all/modules/civicrm/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle("display")
#11 /var/www/html/sites/all/modules/civicrm/CRM/Utils/Wrapper.php(98): CRM_Core_Controller->run()
#12 /var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php(295): CRM_Utils_Wrapper->run("CRM_Admin_Form_ScheduleReminders", "Schedule Reminders", (Array:0))
#13 /var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:17))
#14 /var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:4))
#15 /var/www/html/sites/all/modules/civicrm/drupal/civicrm.module(472): CRM_Core_Invoke::invoke((Array:4))
#16 /var/www/html/includes/menu.inc(527): civicrm_invoke("admin", "scheduleReminders", "edit")
#17 /var/www/html/index.php(21): menu_execute_active_handler()
#18 {main}
2024-01-15 15:30:56-0800 [error]
$Fatal Error Details = array:3 [
"message" => "Authorization failed"
"code" => null
"exception" => Civi\API\Exception\UnauthorizedException {#2401
-errorData: array:1 [
"error_code" => "unauthorized"
]
#cause: null
-_trace: null
#message: "Authorization failed"
#code: 0
#file: "/var/www/html/sites/all/modules/civicrm/Civi/API/Kernel.php"
#line: 230
trace: {
/var/www/html/sites/all/modules/civicrm/Civi/API/Kernel.php:230 {
Civi\API\Kernel->authorize($apiProvider, $apiRequest)
› if (!$event->isAuthorized()) {
› throw new \Civi\API\Exception\UnauthorizedException("Authorization failed");
› }
}
/var/www/html/sites/all/modules/civicrm/Civi/API/Kernel.php:147 { …}
/var/www/html/sites/all/modules/civicrm/Civi/Api4/Generic/AbstractAction.php:256 { …}
/var/www/html/sites/all/modules/civicrm/api/api.php:91 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Admin/Form.php:161 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Admin/Form.php:77 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Admin/Form/ScheduleReminders.php:50 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Core/Form.php:717 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Display.php:76 { …}
/var/www/html/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php:203 { …}
/var/www/html/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php:103 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Core/Controller.php:355 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Utils/Wrapper.php:98 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php:295 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php:69 { …}
/var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php:36 { …}
/var/www/html/sites/all/modules/civicrm/drupal/civicrm.module:472 { …}
/var/www/html/includes/menu.inc:527 { …}
/var/www/html/index.php:21 { …}
}
}
]
2024-01-15 15:30:56-0800 [debug] $backTrace = #0 /var/www/html/sites/all/modules/civicrm/CRM/Core/Error.php(443): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/html/sites/all/modules/civicrm/CRM/Core/Invoke.php(39): CRM_Core_Error::handleUnhandledException(Object(Civi\API\Exception\UnauthorizedException))
#2 /var/www/html/sites/all/modules/civicrm/drupal/civicrm.module(472): CRM_Core_Invoke::invoke((Array:4))
#3 /var/www/html/includes/menu.inc(527): civicrm_invoke("admin", "scheduleReminders", "edit")
#4 /var/www/html/index.php(21): menu_execute_active_handler()
#5 {main}
```
Reproduction steps
----------------------------------------
1. Build a buildkit drupal-demo
2. Log in as administrator, create a new role and give it the permissions noted above.
3. Create a new user ("eventhelper"), assign user this role.
4. (Still as administrator, or any other user) Create an event and create a scheduled reminder for the event.
5. Log out. Log in as eventhelper.
6. Go to the event, edit, go to the scheduled reminders tab, click edit next to the reminder.
Current behaviour
----------------------------------------
As above.
Expected behaviour
----------------------------------------
The user should be able to edit and save the scheduled reminder.
Comments
----------------------------------------
There are no permissions related to scheduled reminders. So although the log output says this is an authorization error, I don't see what authorization to give.
I'd also emphasize this worked in 5.52 with no changes to the user, role, or permissions.
Last, the user can create scheduled reminders on events, just not edit schedule reminders on events, even editing schedule reminders they themselves created. This is inconsistent so suggests a bug.colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/4970(regression) Extra receipt is sent when marking a contribution complete.2024-02-08T10:01:04ZJonGold(regression) Extra receipt is sent when marking a contribution complete.Overview
----------------------------------------
Starting in 5.69, changing a Pending contribution to Completed sends a receipt even if you choose not to.
Reproduction steps
----------------------------------------
1. Create a new pend...Overview
----------------------------------------
Starting in 5.69, changing a Pending contribution to Completed sends a receipt even if you choose not to.
Reproduction steps
----------------------------------------
1. Create a new pending contribution on the backend.
1. Click **Edit**.
1. Change the contribution to complete.
Current behaviour
----------------------------------------
If you don't select "Send Receipt", a receipt is sent.
If you *do* select "Send Receipt", 2 receipts are sent.
Expected behaviour
----------------------------------------
current situation minus 1.
Comments
----------------------------------------
The conversion from `transitionComponents()` to `Payment.create` is what occasioned this.5.69.5JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/4969Angular manager module caching issue (TypeError in_array)2024-03-18T21:46:01ZJKingsnorthAngular manager module caching issue (TypeError in_array)Related question was raised here: https://civicrm.stackexchange.com/questions/46379/typeerror-in-array-angular-managerresolvedefaultmodules-civicrm-version-5
I think this is a recent change which might have caused the issues (or highlig...Related question was raised here: https://civicrm.stackexchange.com/questions/46379/typeerror-in-array-angular-managerresolvedefaultmodules-civicrm-version-5
I think this is a recent change which might have caused the issues (or highlighted them): https://github.com/civicrm/civicrm-core/commit/604cca726c6a238e0530b5f660ab0e11596da090#diff-b26b657986ef8b8163e79bcaf85afe628f6d5457193253bc6ff4c009cca44bf5
---
We're seeing an intermittent issue where pages fail to load with a fatal error. The only path we've detected it on is /civicrm/transact .
It's caused by `\Civi\Angular\Manager::resolveDefaultModules` looking for the 'basePages' array for a module definition, but it's not there. After some checking, it looks like the value is just null (ie, there's no definition set).
Digging back through \Civi\Angular\Manager::getModules we can see that this checks to see if `$this->cache->get('moduleNames');` is null. If it is, it rebuilds the list of modules and saves it to the cache, and then goes through each module and saves the definition to the cache - using separate cache key entries (I guess because otherwise the cache entry would be too big?)
```
$angularModules = $this->resolvePatterns($angularModules);
$this->cache->set('moduleNames', array_keys($angularModules));
foreach ($angularModules as $moduleName => $moduleInfo) {
$this->cache->set("module $moduleName", $moduleInfo);
}
```
If `moduleNames` is already set, then it rehydrates the data from the cache:
```
// Rehydrate modules from cache
else {
foreach ($moduleNames as $moduleName) {
$angularModules[$moduleName] = $this->cache->get("module $moduleName");
}
```
The problem I think we're seeing intermittently is that `$this->cache->get('moduleNames');` is set but the individual module definitions (or some of them at least) are not set `$this->cache->get("module $moduleName");` . This means the value is set as 'NULL', which is causing the original error.
I'm struggling to find the exact steps to recreate this issue, but I think the related code could do with tightening up in either case?
It doesn't look like we can rely on the 'module ...' cache entries being set if the 'moduleNames' entry is set?
Ping @colemanwhttps://lab.civicrm.org/dev/core/-/issues/4968Can no longer edit status for a participant2024-02-07T18:56:07ZDaveDCan no longer edit status for a participant1. Register a participant. It doesn't happen with demo participants. Make a new participant.
2. Edit the participant and change status to e.g. Attended.
3. `ValueError: mysqli_query(): Argument 2 ($query) cannot be empty in mysqli_query(...1. Register a participant. It doesn't happen with demo participants. Make a new participant.
2. Edit the participant and change status to e.g. Attended.
3. `ValueError: mysqli_query(): Argument 2 ($query) cannot be empty in mysqli_query() (line 411 of /srv/buildkit/build/dmaster/web/sites/all/modules/civicrm/vendor/pear/db/DB/mysqli.php).`5.71.0https://lab.civicrm.org/dev/core/-/issues/4967Can no longer register someone for an event in the backend as pay-later2024-02-04T19:26:18ZDaveDCan no longer register someone for an event in the backend as pay-later1. Register someone in the backend for an event with status Pay-later.
2. Error: Please select at least one option from price set.1. Register someone in the backend for an event with status Pay-later.
2. Error: Please select at least one option from price set.https://lab.civicrm.org/dev/core/-/issues/4966Packaged SearchKit cannot be multilingual2024-02-03T18:48:06ZbgmPackaged SearchKit cannot be multilingualPackaged SearchKits, such as CiviCampaign, support translation into a single language, but not into multiple languages.
For example:
- Go to Admin > Localization > Languages
- Enable a second language (such as French), no need to enabl...Packaged SearchKits, such as CiviCampaign, support translation into a single language, but not into multiple languages.
For example:
- Go to Admin > Localization > Languages
- Enable a second language (such as French), no need to enable multi-lingual
- Enable the "language switcher" extension
- Leave the default site language to English
Then go to the Campaign Dashboard, and switch the language to French. The UI will still be mostly in English.
While still being in French, go to Administer > System Settings > Cleanup Cache: flush the cache.
Then reload the Campaign Dashboard, and it will be in French, but only in French.
CiviCRM stores the evaluated strings in the civicrm_search_display` table.https://lab.civicrm.org/dev/core/-/issues/4965Afform dies for contacts if no ID or contact_type2024-02-05T02:42:57ZufundoAfform dies for contacts if no ID or contact_typeA second slightly weird Afform edge case I hit today.
Example afform:
```A
<af-form ctrl="afform">
<af-entity data="{source: 'Enquiry form'}" type="Contact" name="Contact1" label="Contact email" actions="{create: true, update: true}"...A second slightly weird Afform edge case I hit today.
Example afform:
```A
<af-form ctrl="afform">
<af-entity data="{source: 'Enquiry form'}" type="Contact" name="Contact1" label="Contact email" actions="{create: true, update: true}" security="RBAC" />
<fieldset af-fieldset="Contact1" class="af-container" af-title="Contact">
<p class="af-text">Follow up contact email</p>
<div af-join="Email" data="{is_primary: true}">
<af-field name="email" />
</div>
</fieldset>
<button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()" ng-if="afform.showSubmitButton">Submit</button>
</af-form>
```
The form gives on submit "No contact_type given to CRM_Contact_BAO_Contact::hasName".
It looks like the Afform api Submit action is trying to check whether a submitted contact entity has a name OR email (so is creatable) - but the name check throws an exception if no contact_type is provided - even if there was a viable email.
Potentially having a Contact entity without a specified contact_type is _a bad idea_ ... but I can see a use case like the above where you want people to be able to submit an email, that might then be deduped against contacts of any type? (Testing now I realise this doesn't work out-of-the-box because deduping is within contact types... but you might have some later hooks onto the submit event to deal with this maybe...?)
Potential patch incoming at any rate.https://lab.civicrm.org/dev/core/-/issues/4963(5.69 regression) Can't pay later on a membership price set2024-02-08T19:14:42ZJonGold(5.69 regression) Can't pay later on a membership price setIn 5.69, you can't select "Pay Later" for a membership price set. You get the warning "You cannot have auto-renewal on if you are paying later.", even when selecting a non-renewal option.
#### Steps to replicate
* On a demo site, chang...In 5.69, you can't select "Pay Later" for a membership price set. You get the warning "You cannot have auto-renewal on if you are paying later.", even when selecting a non-renewal option.
#### Steps to replicate
* On a demo site, change the "General" membership type to Auto-Renew required (reduce its membership term to 1 year also).
* Create a new price set with a single price field of type "Select".
* Provide both the General and Student options.
* Enable the price set on the membership contribution page, and enable "Pay Later".
* Select Student (which is *not* auto-renew), select "Pay Later", and attempt to submit.
I'm going to try to work on a fix, but I suspect #28871 or #28872 (or both) are the proximate cause. @eileen if something jumps out at you, let me know.5.70.0https://lab.civicrm.org/dev/core/-/issues/4962Resource URLs page doesn't load with Smarty32024-02-08T09:56:27ZJonGoldResource URLs page doesn't load with Smarty3Replicable on dmaster (and 5.69) by going to **Administer » System Settings » Resource URLs**.
Screen comes up mostly blank. This shows up in the PHP log.
```
PHP Warning: Undefined property: CRM_Admin_Form_Setting_Url::$_id in /home...Replicable on dmaster (and 5.69) by going to **Administer » System Settings » Resource URLs**.
Screen comes up mostly blank. This shows up in the PHP log.
```
PHP Warning: Undefined property: CRM_Admin_Form_Setting_Url::$_id in /home/jon/local/mysite/web/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php on line 2087"
PHP message: PHP Fatal error: Type of SmartyCompilerException::$line must be int (as in class Exception) in /home/jon/local/mysite/web/wp-content/plugins/civicrm/civicrm/packages/smarty3/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php on line 8"
```5.69.5https://lab.civicrm.org/dev/core/-/issues/4961SearchKit/API4: 'getFieldValue failed' error for group contacts2024-02-02T22:16:09Zaydunsaidan.saunders@squiffle.ukSearchKit/API4: 'getFieldValue failed' error for group contactsOverview
----------------------------------------
SearchKit/API4 fails with 'getFieldValue failed'
Reproduction steps
----------------------------------------
1. Create a new SearchKit search
1. Set 'Search for' to 'Groups'
1. Search a...Overview
----------------------------------------
SearchKit/API4 fails with 'getFieldValue failed'
Reproduction steps
----------------------------------------
1. Create a new SearchKit search
1. Set 'Search for' to 'Groups'
1. Search and confirm groups are shown
2. Add 'With (optional)' 'Group Contacts'
3. Search and observe no results
4. Open browser tools, search again, note '500':
Request is:
{"run":["SearchDisplay","run",{"return":"page:1","savedSearch":{"api_entity":"Group","displays":[],"groups":[],"tag_id":[],"api_params":{"version":4,"select":["id","title","description","is_active","Group_GroupContact_Contact_01.sort_name"],"orderBy":{},"where":[],"groupBy":[],"join":[["Contact+AS+Group_GroupContact_Contact_01","LEFT","GroupContact",["id","=","Group_GroupContact_Contact_01.group_id"]]],"having":[]},"label":"Group+Search+by+demo@example.com"},"sort":[],"limit":50,"seed":1706887602244,"filters":{},"afform":null,"debug":true}]}
Response is:
{
"run": {
"error_code": 0,
"error_message": "getFieldValue failed",
"status": 500
}
}
Environment information
----------------------------------------
* __CiviCRM:__ _Master_
Comments
----------------------------------------
This is currently failing on dmaster but works correctly on 5.65.0
Might be wider issue, but noted on groups.