Development issueshttps://lab.civicrm.org/groups/dev/-/issues2022-05-09T20:31:53Zhttps://lab.civicrm.org/dev/core/-/issues/3117FormBuilder - support relationships between contacts2022-05-09T20:31:53ZsamuelsovFormBuilder - support relationships between contactsAdd the possibility to add/edit multiple contacts specifying the relationship between them in FormBuilder.
Example of use case that we want to be able to do on one form :
- create/edit an organization with a primary contact and a list o...Add the possibility to add/edit multiple contacts specifying the relationship between them in FormBuilder.
Example of use case that we want to be able to do on one form :
- create/edit an organization with a primary contact and a list of employees
- create/edit a household contact with parents and children contacts
Example of custom form that we currently use that we would like to replace with FormBuilder :
![screenshot](/uploads/61d27d13f044748b7d273f513628829d/screenshot.png)colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3447Import no longer giving errors properly2022-05-09T20:07:49ZDaveDImport no longer giving errors properlyI think the minimal file needed to reproduce this is just a one line csv file with
`a,b,c`
Then go Contacts - Import, don't check the header row box, and map it to First Name, Last Name, and Birth Date.
On the preview page there's no ...I think the minimal file needed to reproduce this is just a one line csv file with
`a,b,c`
Then go Contacts - Import, don't check the header row box, and map it to First Name, Last Name, and Birth Date.
On the preview page there's no errors and it says it will import one contact. On the next results page it says it imported 0 but there's no errors. The contact did not get imported.
@eileen5.51.0https://lab.civicrm.org/dev/core/-/issues/1492changed get_object_vars() behaviour in PHP 7.42022-05-09T18:09:48ZJoeMurraychanged get_object_vars() behaviour in PHP 7.4Investigate and fix any issues resulting from changed behaviour of get_object_vars() in PHP 7.4.
https://www.php.net/manual/en/migration74.incompatible.php states that:
Standard PHP Library (SPL): Calling get_object_vars() on an ArrayOb...Investigate and fix any issues resulting from changed behaviour of get_object_vars() in PHP 7.4.
https://www.php.net/manual/en/migration74.incompatible.php states that:
Standard PHP Library (SPL): Calling get_object_vars() on an ArrayObject instance will now always return the properties of the ArrayObject itself (or a subclass). Previously it returned the values of the wrapped array/object
CiviCRM uses this function in the following places:
```
$ grep -R get_object_vars ./*
./CRM/Contact/Import/Parser/Contact.php: $contact = get_object_vars($contactObj);
./CRM/Core/Permission/Joomla.php: foreach (array_keys(get_object_vars($associations)) as $permName) {
./CRM/Financial/BAO/ExportFormat/CSV.php: $queryResults[] = get_object_vars($dao);
./CRM/Admin/Page/Job.php: $rows[] = get_object_vars($job);
./CRM/Utils/XML.php: $obj = get_object_vars($obj);
./CRM/Event/Cart/BAO/Conference.php: $smarty_sessions[] = get_object_vars($dao);
./Civi/Api4/Service/Spec/FieldSpec.php: foreach (get_object_vars($this) as $key => $val) {
./Civi/Api4/Service/Schema/Joinable/Joinable.php: return get_object_vars($this);
```
Check if the changed behaviour is relevant and refactor code as necessary. May be possible to just close after deeper review.
The same page mentions that this change will affect uses of reset() and current(), and recommends replacement by Iterator methods. There are quite a few uses of both reset() and current() in our codebase.https://lab.civicrm.org/dev/core/-/issues/3412Event registration by an administrator sends confirmation email regardless of...2022-05-06T09:58:16ZUpperholmeEvent registration by an administrator sends confirmation email regardless of confirmation settingWhen recording an event registration through the back-end (i.e. as an administrator) it is possible to untick the checkbox against the setting labelled as "Send Confirmation" or for a paid event "Send Confirmation and Receipt".
The expec...When recording an event registration through the back-end (i.e. as an administrator) it is possible to untick the checkbox against the setting labelled as "Send Confirmation" or for a paid event "Send Confirmation and Receipt".
The expected behaviour is that when this checkbox is unchecked then no email will be sent.
In practice this setting appears to be ignored and the email notification is sent regardless.
Using CivicRM 5.13.5 with Drupal 7.https://lab.civicrm.org/dev/core/-/issues/3003Preserve previous tab when navigating to and from contact page2022-05-05T14:57:50ZBradley TaylorPreserve previous tab when navigating to and from contact pageThe contact page is structured around a series of tabs: Summary, Contributions, Membership etc. There are often times when you click through from a contact to a related entity (say a related contact from the relationships tab). It would ...The contact page is structured around a series of tabs: Summary, Contributions, Membership etc. There are often times when you click through from a contact to a related entity (say a related contact from the relationships tab). It would be nice if using the browser's back button returned you to the tab you were previously looking at rather than returning to the summary tab each time.
This is a bigger issue for users with the "Enable Popup Forms" option unticked, but all users are affected by this.
This shouldn't be a massive technical change, but I do think this is one of those little annoyances, where fixing should improve the overall usability of the CRM for those who need to use it on a daily basis.
**Implementation details**
It is already possible to link to a specific tab with the `selectedChild` query parameter. I propose that whenever the active tab is changed, the [replaceState](https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState) API is used to amend the `selectedChild` parameter in the URL.5.49.0https://lab.civicrm.org/dev/core/-/issues/3445Error messages under ui-dialog2022-05-05T14:20:10ZsamuelsovError messages under ui-dialogWhen filling a form in a ui-dialog popup, if any error, it will display the message in a popup under the ui-dialog like so :
![ksnip_20220505-094119](/uploads/c7413e162ada8f9b2597f224aa9a6833/ksnip_20220505-094119.png)
Most of the time...When filling a form in a ui-dialog popup, if any error, it will display the message in a popup under the ui-dialog like so :
![ksnip_20220505-094119](/uploads/c7413e162ada8f9b2597f224aa9a6833/ksnip_20220505-094119.png)
Most of the time, there is a message in the form itself so it's not so bad but I noticed that it's not always the case (for example on a required custom fields with checkboxes, there is no highligh).
Manipuling z-index is not enough because ui-dialog and crm-notification-container is not at the same level in the html. I was able to solve the problem by moving crm-notification-container at the same level as ui-dialog (just under body) like so :
```js
(function($) {
$(document).ajaxComplete(function( event, xhr, settings ) {
// move to body so that it goes on top of the ui-dialog
$('#crm-notification-container').appendTo('body');
});
})(CRM.$);
```
With the fix, it works although the css (shoreditch) is lost :
![Screenshot_2022-05-05_at_09-46-31_Liste_des_rencontres_individuelles___Maison_Plein_Coeur___WordPress](/uploads/eb85b592fae0c612a5e4b41cad9bbc9f/Screenshot_2022-05-05_at_09-46-31_Liste_des_rencontres_individuelles___Maison_Plein_Coeur___WordPress.png)
There might be a better way than doing this through javascript...https://lab.civicrm.org/dev/core/-/issues/860Incorrect line item created for back-end membership sign-up using price set a...2022-05-05T06:27:07ZdavejIncorrect line item created for back-end membership sign-up using price set and CiviDiscountWhen doing a back-end membership sign-up using a price set, with an additional item e.g. donation and with a CiviDiscount code applying to the membership, the line item created for the membership does not reflect the discount but the con...When doing a back-end membership sign-up using a price set, with an additional item e.g. donation and with a CiviDiscount code applying to the membership, the line item created for the membership does not reflect the discount but the contribution total does. The problem does not occur without the additional item.
**Steps to replicate**
1. Create a CiviDiscount code for e.g. 25% off General membership.
2. Create a membership price set with 2 fields: Membership with options General & Student; Donation text field.
3. Create a contribution page using the price set (we don't use this here but in my testing, the discount did not work on back-end sign-ups until I did this step.)
4. Go to a contact's summary -> Memberships tab and click Add Membership.
5. Enter the discount code & Apply.
6. Choose price set -> select the above price set.
7. You may need to click Apply again to get the discount to show for General membership.
8. Select "General (Includes applied discount: 25% Test for General membership) - $ 75.00".
9. Enter a donation amount, e.g. $5.
10. Leave "Record Membership Payment?" ticked, leave other fields as default.
11. Click Save.
**Expected result**
Contribution created with total amount $80 and 2 line items:
* entity_table: civicrm_membership, line total $75.00
* entity_table: civicrm_contribution, line total $5.00
**Actual result**
Contribution created with total amount $80 and 2 line items:
* entity_table: civicrm_membership, line total $100.00
* entity_table: civicrm_contribution, line total $5.00
Note that the membership line item has the wrong amount and the sum of the line items is not equal to the contribution amount.
Replicated on 5.10.3 and current local civibuild dmaster.https://lab.civicrm.org/dev/core/-/issues/3084Backend membership with a price set will ignore the price field financial typ...2022-05-05T06:27:07ZherbdoolBackend membership with a price set will ignore the price field financial type, uses price set insteadOverview
----------------------------------------
Backend membership with a price set will ignore the price field financial type, uses price set instead. (This is a different problem from https://lab.civicrm.org/dev/core/-/issues/3083 t...Overview
----------------------------------------
Backend membership with a price set will ignore the price field financial type, uses price set instead. (This is a different problem from https://lab.civicrm.org/dev/core/-/issues/3083 though they should be consistent).
Related to https://lab.civicrm.org/dev/core/-/issues/3084, https://lab.civicrm.org/dev/core/-/issues/2414
Reproduction steps
----------------------------------------
1. Set up a price set to include memberships.
2. One price field should be membership of financial type Member Dues. The other Donation.
![2022-02-25_14.17.49_dev-cycleto.pantheonsite.io_edb775bf4afb](/uploads/baab97de74fc3910e4a016138db06c98/2022-02-25_14.17.49_dev-cycleto.pantheonsite.io_edb775bf4afb.png)
3. Make a backend membership purchase.
Current behaviour
----------------------------------------
The contribution will show that each line item gets the financial type from the price set and not from the price set field:
![2022-02-25_14.16.03_dev-cycleto.pantheonsite.io_372ee7ffbad1](/uploads/1f8a227ce02fb8c0d1b28a707ada8af0/2022-02-25_14.16.03_dev-cycleto.pantheonsite.io_372ee7ffbad1.png)
And it doesn't set the non-deductible amount properly. In fact, I don't think it's set either way. If I change the price set financial type to be Merchandise then it still doesn't set the non-deductible.
![2022-02-25_14.25.54_dev-cycleto.pantheonsite.io_ad7e30a61562](/uploads/4b22eafeeca74ee89f60918102bed234/2022-02-25_14.25.54_dev-cycleto.pantheonsite.io_ad7e30a61562.png)
Expected behaviour
----------------------------------------
Should use the financial type of the price set *field/option*. And it should set the non-deductible based on that. This is how it's working for a non-member price set: it will use the price field financial type and non-deductible amount regardless of what the price set is using.5.49.0https://lab.civicrm.org/dev/core/-/issues/3413setAmount requires a numeric amount value2022-05-05T06:27:07Zmagnolia61setAmount requires a numeric amount valueOverview
----------------------------------------
Since https://github.com/civicrm/civicrm-core/pull/21583 our installation has a problem with making contribution payments through the contribution checksum link fails if the Thousands Sep...Overview
----------------------------------------
Since https://github.com/civicrm/civicrm-core/pull/21583 our installation has a problem with making contribution payments through the contribution checksum link fails if the Thousands Separator and Decimal Delimiter are different than default.
Reproduction steps
----------------------------------------
1. create a pending contribution
2. set locale to the following:<br>
![Screenshot_2022-04-23_112132](/uploads/890f07b518c9102b2eb551b5de5311c3/Screenshot_2022-04-23_112132.png)<br>
(common in the Netherlands)
3. pay through a contribution link with checksum<br> (example: https://www.example.nl/civicrm/contribute/transact?reset=1&id=7&ccid=123&cid=456&cs=9982c0a392534059a7ae6b4f970f394c_1650623762_5648)
4. payment fails with:
setAmount requires a numeric amount value (reproduced on the sandbox)
![Screenshot_2022-04-23_112051](/uploads/db41c7e3c5c6544f4c91883dbcf43347/Screenshot_2022-04-23_112051.png)
Current behaviour
----------------------------------------
With Thousands Separator set to . and Decimal Delimiter set to , (as we do in the Netherlands) contribution checksum link payments fail
Expected behaviour
----------------------------------------
The payments should succeed :-)
Environment information
----------------------------------------
- CiviCRM: 5.48
- CMS: Drupal 7.89
- PHP: 7.4.29 (fpm-fcgi)
- Database: 10.5.15-MariaDB-0+deb11u1 engine: InnoDB 10 row format: Dynamic
- Webserver: Apache/2.4.53 (Debian)
- OS: Linux
Comments
----------------------------------------
First I thought this had to do with omnipaymultiprocessor but this morning I tested with some more different payment methods
We found https://github.com/civicrm/civicrm-core/pull/21583 to be the change that caused our problem.
Specifically in Civi/Payment/PropertyBag.php the line about 'total_amount'
```
protected static $propMap = [
'amount' => TRUE,
'total_amount' => 'amount',
```
When we remove the 'total_amount' line payments work fine, even with our decimal separator settings.
I am not sure if that would be the solution or only helps to find a real solution.
NOTE: integral payments with event registrations work fine. It is the payment links that are affected.
@mattwire would you be able to look into this?5.49.0https://lab.civicrm.org/dev/core/-/issues/3424Search kit: Where clause for contact.created_date doesn't seem to recognize i...2022-05-04T12:19:02ZDaveDSearch kit: Where clause for contact.created_date doesn't seem to recognize it as a date1. Make a search on contacts.
2. In the where clause, try to add a filter to created date.
3. It doesn't seem to recognize that it's a date field, where you normally get a set of date-related options to choose from. Compare to e.g. birth...1. Make a search on contacts.
2. In the where clause, try to add a filter to created date.
3. It doesn't seem to recognize that it's a date field, where you normally get a set of date-related options to choose from. Compare to e.g. birth date.5.50.0colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3155Save button on API4 explorer is misleading2022-05-03T14:09:45ZBradley TaylorSave button on API4 explorer is misleadingWhen doing a `get` search with the API4 explorer a "Save..." button is shown. This is designed to "save" the result(s) as a smart group.
When I first started using the API4 explorer it took me several months to realise that this was the...When doing a `get` search with the API4 explorer a "Save..." button is shown. This is designed to "save" the result(s) as a smart group.
When I first started using the API4 explorer it took me several months to realise that this was the use of this button. I assumed that the use case was to search the form configuration in order to quickly get back to an API call in future. Exlanation of the button is shown in the sidebar on hover, but I didn't read this, assuming that it wasn't relavant.
I would like to suggest that the button text is changed to "Save smart group" or "Create smart group" to make the use case much clearer for new users.
This could have layout implications, however the buttons already wrap poorly on a default d7 instalation, so re-thinking the button positions might not be such a bad thing.5.50.0https://lab.civicrm.org/dev/core/-/issues/3430Afform - Add "reset" button for search forms2022-05-03T07:27:04ZcolemanwAfform - Add "reset" button for search formsInstead of a "submit" button, search forms need a "reset" button.Instead of a "submit" button, search forms need a "reset" button.5.50.0colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3431Case Resources cuts off at 25 contacts when creating case activity2022-05-01T22:33:07ZDaveDCase Resources cuts off at 25 contacts when creating case activityBut it's not the usual api3 limit, it's just a default of 25 that it has and there's no ability to set it.
1. Add more than 25 contacts to the Case Resources group.
1. Visit Manage Case and create a Followup.
1. In the send copy section...But it's not the usual api3 limit, it's just a default of 25 that it has and there's no ability to set it.
1. Add more than 25 contacts to the Case Resources group.
1. Visit Manage Case and create a Followup.
1. In the send copy section there's only 25 from the group.
Also on Manage Case, in the Other Relationships section, there's a pager for it but it's a bit broken. It cuts off at 10 by default, but doesn't indicate there's more pages, but if you use the dropdown to show 50 it will show all, but there's no indication there's more than 10 available.
This is not a regression. It goes back forever. It's probably unusual to have so many in the group, and this only came up on a test site where older entries had never been removed like they are in real life.5.50.0https://lab.civicrm.org/dev/core/-/issues/3214Query scheduling & delivered results2022-04-30T09:08:20Zjoshjosh@civicrm.orgQuery scheduling & delivered resultsThis project will allow APIv4 queries to run in the background and notify or deliver results when complete. It supplements the Search-Builder UI project, making complex searches more manageable.
Tasks:
- Add background options to Search...This project will allow APIv4 queries to run in the background and notify or deliver results when complete. It supplements the Search-Builder UI project, making complex searches more manageable.
Tasks:
- Add background options to Search-Builder UI
- Implement queue runner service
- Implement delivery servicecolemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3167Upgrade to 5.48.0 fails with DB Error: constraint violation2022-04-28T16:06:00Zrd-sUpgrade to 5.48.0 fails with DB Error: constraint violationOverview
----------------------------------------
Error message during upgrade stage: [Error: Finish core DB updates 5.48.0]
Exception: "API error: DB Error: constraint violation on ReportTemplate.create"
Reproduction steps
-----------...Overview
----------------------------------------
Error message during upgrade stage: [Error: Finish core DB updates 5.48.0]
Exception: "API error: DB Error: constraint violation on ReportTemplate.create"
Reproduction steps
----------------------------------------
1. Run upgrade, receive error during database upgrade for 5.48.0.
Current behaviour
----------------------------------------
Backtrace displayed below
```
Apr 10 12:30:50 [debug] $backTrace = #0 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\Error.php(941): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(922): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\db\DB.php(997): PEAR_Error->__construct("DB Error: constraint violation", -3, 16, (Array:2), "UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...")
#3 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(575): DB_Error->__construct(-3, 16, (Array:2), "UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...")
#4 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(223): PEAR::_raiseError(Object(DB_mysqli), NULL, -3, 16, (Array:2), "UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...", "DB_Error", TRUE)
#5 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\db\DB\common.php(1928): PEAR->__call("raiseError", (Array:7))
#6 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\db\DB\mysqli.php(936): DB_common->raiseError(-3, NULL, NULL, "UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...", "1452 ** Cannot add or update a child row: a foreign key constraint fails (`in...")
#7 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\db\DB\mysqli.php(406): DB_mysqli->mysqliRaiseError()
#8 D:\httproot\wp-content\plugins\civicrm\civicrm\vendor\pear\db\DB\common.php(1234): DB_mysqli->simpleQuery("UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...")
#9 D:\httproot\wp-content\plugins\civicrm\civicrm\packages\DB\DataObject.php(2696): DB_common->query("UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...")
#10 D:\httproot\wp-content\plugins\civicrm\civicrm\packages\DB\DataObject.php(1539): DB_DataObject->_query("UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Exten...")
#11 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\DAO.php(640): DB_DataObject->update()
#12 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\BAO\OptionValue.php(218): CRM_Core_DAO->save()
#13 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\BAO\OptionValue.php(34): CRM_Core_BAO_OptionValue::add((Array:9))
#14 D:\httproot\wp-content\plugins\civicrm\civicrm\api\v3\utils.php(1315): CRM_Core_BAO_OptionValue::create((Array:9))
#15 D:\httproot\wp-content\plugins\civicrm\civicrm\api\v3\OptionValue.php(54): _civicrm_api3_basic_create("CRM_Core_BAO_OptionValue", (Array:9), "OptionValue")
#16 D:\httproot\wp-content\plugins\civicrm\civicrm\api\v3\ReportTemplate.php(55): civicrm_api3_option_value_create((Array:9))
#17 D:\httproot\wp-content\plugins\civicrm\civicrm\Civi\API\Provider\MagicFunctionProvider.php(89): civicrm_api3_report_template_create((Array:9))
#18 D:\httproot\wp-content\plugins\civicrm\civicrm\Civi\API\Kernel.php(149): Civi\API\Provider\MagicFunctionProvider->invoke((Array:8))
#19 D:\httproot\wp-content\plugins\civicrm\civicrm\Civi\API\Kernel.php(81): Civi\API\Kernel->runRequest((Array:8))
#20 D:\httproot\wp-content\plugins\civicrm\civicrm\api\api.php(22): Civi\API\Kernel->runSafe("ReportTemplate", "create", (Array:8))
#21 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\ManagedEntities.php(381): civicrm_api("ReportTemplate", "create", (Array:8))
#22 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\ManagedEntities.php(187): CRM_Core_ManagedEntities->updateExistingEntity(Object(CRM_Core_DAO_Managed), (Array:10))
#23 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\ManagedEntities.php(167): CRM_Core_ManagedEntities->reconcileEnabledModule("nz.co.fuzion.extendedreport")
#24 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\ManagedEntities.php(128): CRM_Core_ManagedEntities->reconcileEnabledModules()
#25 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\Invoke.php(413): CRM_Core_ManagedEntities->reconcile()
#26 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Upgrade\Form.php(818): CRM_Core_Invoke::rebuildMenuAndCaches(FALSE, FALSE)
#27 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Queue\Task.php(73): CRM_Upgrade_Form::doCoreFinish(Object(CRM_Queue_TaskContext), "5.48.beta2", "5.48.0", "5.48.0", "C:\Windows\Temp\civB84B.tmp")
#28 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Queue\Runner.php(215): CRM_Queue_Task->run(Object(CRM_Queue_TaskContext))
#29 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Queue\Page\AJAX.php(36): CRM_Queue_Runner->runNext(TRUE)
#30 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Queue\ErrorPolicy.php(89): CRM_Queue_Page_AJAX::{closure}()
#31 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Queue\Page\AJAX.php(38): CRM_Queue_ErrorPolicy->call(Object(Closure))
#32 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\Invoke.php(285): CRM_Queue_Page_AJAX::runNext()
#33 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\Invoke.php(69): CRM_Core_Invoke::runItem((Array:13))
#34 D:\httproot\wp-content\plugins\civicrm\civicrm\CRM\Core\Invoke.php(36): CRM_Core_Invoke::_invoke((Array:5))
#35 D:\httproot\wp-content\plugins\civicrm\civicrm.php(1199): CRM_Core_Invoke::invoke((Array:5))
#36 D:\httproot\wp-includes\class-wp-hook.php(307): CiviCRM_For_WordPress->invoke("")
#37 D:\httproot\wp-includes\class-wp-hook.php(331): WP_Hook->apply_filters("", (Array:1))
#38 D:\httproot\wp-includes\plugin.php(474): WP_Hook->do_action((Array:1))
#39 D:\httproot\wp-admin\admin.php(259): do_action("toplevel_page_CiviCRM")
#40 {main}
Apr 10 12:30:50 [info] $ManagedEntities_failed = Array
(
[entity] => ReportTemplate
[action] => create
[params] => Array
(
[id] => 1043
[is_active] => 1
[version] => 3
[label] => Extended Report - Grant Detail
[description] => Extended Report - Grant Detail
[class_name] => CRM_Extendedreport_Form_Report_Grant_Detail
[report_url] => grant/detailextended
[component] => CiviGrant
)
[result] => Array
(
[error_code] => constraint violation
[sql] => UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Extended Report - Grant Detail' , `value` = 'grant/detailextended' , `name` = 'CRM_Extendedreport_Form_Report_Grant_Detail' , `description` = 'Extended Report - Grant Detail' , `is_active` = 1 , `component_id` = 0 WHERE ( `civicrm_option_value`.`id` = 1043 ) [nativecode=1452 ** Cannot add or update a child row: a foreign key constraint fails (`client_crm`.`civicrm_option_value`, CONSTRAINT `FK_civicrm_option_value_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component` (`id`))]
[tip] => add debug=1 to your API call to have more info about the error
[is_error] => 1
[error_message] => DB Error: constraint violation
[debug_information] => UPDATE `civicrm_option_value` SET `option_group_id` = 40 , `label` = 'Extended Report - Grant Detail' , `value` = 'grant/detailextended' , `name` = 'CRM_Extendedreport_Form_Report_Grant_Detail' , `description` = 'Extended Report - Grant Detail' , `is_active` = 1 , `component_id` = 0 WHERE ( `civicrm_option_value`.`id` = 1043 ) [nativecode=1452 ** Cannot add or update a child row: a foreign key constraint fails (`client_crm`.`civicrm_option_value`, CONSTRAINT `FK_civicrm_option_value_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component` (`id`))]
)
)
```
Expected behaviour
----------------------------------------
No fatal error during upgrade
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __Browser:__ _Firefox 99.0_
* __CiviCRM:__ _5.48.0, upgrading from 5.42.0_
* __PHP:__ _7.4__
* __CMS:__ _WordPress 5.9.3_
* __Database:__ _MySQL 5.7 (Amazon Aurora)_
* __Web Server:__ _IIS_
Comments
----------------------------------------
The installation seems to be usable, but is in some sort of limbo:
- The version displayed at the bottom of every page is now 5.48.0: "Powered by CiviCRM 5.48.0."
- When I try to re-run the upgrade, I get the same failure message every time.
- The System Status page shows the 5.48.0 upgrade (and a number of other versions) being available.https://lab.civicrm.org/dev/core/-/issues/3415CiviContribute: Thank you page does not appear after donation has been submit...2022-04-28T13:14:00Zben_fairlessCiviContribute: Thank you page does not appear after donation has been submitted.Overview
----------------------------------------
When a donation or membership renewal has been submitted, the user is not redirected to a thank you page. The user is redirected back to a blank page.
A receipt is generated and emailed ...Overview
----------------------------------------
When a donation or membership renewal has been submitted, the user is not redirected to a thank you page. The user is redirected back to a blank page.
A receipt is generated and emailed to the user, and their contribution is recorded (if successful), however the user is unaware that their payment has been successful.
Reproduction steps
----------------------------------------
1. Navigate to Contribution page: https://www.example.com/civicrm/?civiwp=CiviCRM&q=civicrm%2Fcontribute%2Ftransact&reset=1&id=5
2. Enter required information including credit card details via Stripe
3. Click Continue
Current behaviour
----------------------------------------
The user is redirected back to a blank version of https://www.example.com/civicrm/?civiwp=CiviCRM&q=civicrm%2Fcontribute%2Ftransact&reset=1&id=5
Expected behaviour
----------------------------------------
The user should be redirected to a "Thank you" page.
Environment information
----------------------------------------
* __Browser:__ _Chrome Version 100.0.4896.127_
* __CiviCRM:__ _5.48.1_
* __PHP:__ _7.4.28 (Supports 64bit values)_
* __CMS:__ _WordPress 5.9.3_
* __Database:__ _10.2.43-MariaDB_
* __Web Server:__ _Apache_
Comments
----------------------------------------
This can be replicated while signed in and while browsing without being signed in. The issue happens both to the test contribution page and the live page.https://lab.civicrm.org/dev/core/-/issues/3220SearchKit: Unable to take any actions on results after searching2022-04-27T09:07:58Zben_fairlessSearchKit: Unable to take any actions on results after searchingOverview
----------------------------------------
I can create searches and run them (and see the results) however context buttons don't work (such as the 3 lines next to each contact, or the 3 lines next to the edit button on the search...Overview
----------------------------------------
I can create searches and run them (and see the results) however context buttons don't work (such as the 3 lines next to each contact, or the 3 lines next to the edit button on the search, or the "Actions" button after ticking a number of contacts).
There are no errors present in the Browser console (was asked to check there in chat). I'm not sure where else I could check for errors.
https://chat.civicrm.org/civicrm/pl/wis4messf7rdtbo91mpabozw6w
Reproduction steps
----------------------------------------
1. Navigate to Search > Search Kit
2. Click New Search
3. Search for "Contacts"
4. Set 1st Criteria to "Postcode is one of [number of postcodes]
5. Set 2nd Criteria to "With (required) Contact Groups, if Group Contact Status = Added and Group Title is one of [Group Name]
6. Run Search
7. Attempt to click 3 lines in the right most column OR attempt to tick a box and select "Actions"
Current behaviour
----------------------------------------
Nothing happens. There is nothing recorded in the Developer Console in the Browser. There are no 500 errors or 403 errors.
Expected behaviour
----------------------------------------
Contextual options should appear to perform actions on the relevant contact.
Environment information
----------------------------------------
* __Browser:__ _Chrome Version 100.0.4896.127_
* __CiviCRM:__ _5.48.1_
* __PHP:__ _7.4.28 (Supports 64bit values)_
* __CMS:__ _WordPress 5.9.3_
* __Database:__ _10.2.43-MariaDB_
* __Web Server:__ _Apache_
Comments
----------------------------------------
No Contextual options work at all, including options not related to search (EG, attempting to add Tags after Step 1 on the Custom Search view).https://lab.civicrm.org/dev/core/-/issues/3420Schedule Reminders in event configuration pages display every site scheduled ...2022-04-26T21:14:00ZLKuttnerSchedule Reminders in event configuration pages display every site scheduled reminderAfter updating to CiviCRM 5.39.4, when configuring or viewing a new or existing event and switching to the Schedule Reminders tab, you see all existing scheduled reminders for all events. It appears that something has changed so that th...After updating to CiviCRM 5.39.4, when configuring or viewing a new or existing event and switching to the Schedule Reminders tab, you see all existing scheduled reminders for all events. It appears that something has changed so that the scheduled reminder list is not filtered by the event ID of the event you are editing. If you disable a reminder for an event while viewing it from a different event, the reminder title will be changed to the title of the event that you were viewing.
An example URL for the tab is:
/civicrm/event/manage/reminder?reset=1&action=browse&id=412&component=event&qfKey=CRMEventFormManageEventScheduleReminders3tup6ya78p0k84s0sk0ksk84sg404sc08gwgcso4gsssg8g8co_3012
I have not seen this reported previously. We are on Drupal 7.89 with MySQL 5.7.36. Thanks for any help you can offer.https://lab.civicrm.org/dev/core/-/issues/3182Employee-Employer relationship breaks when modified in 5.47+2022-04-26T20:12:00ZJonGoldEmployee-Employer relationship breaks when modified in 5.47+Previously, it was possible to modify the Employee/Employer relationship, changing the relevant contact types from "Individual"/"Organization" to "Individual"/"All Contacts", in recognition of the fact that sometimes it's an individual t...Previously, it was possible to modify the Employee/Employer relationship, changing the relevant contact types from "Individual"/"Organization" to "Individual"/"All Contacts", in recognition of the fact that sometimes it's an individual that employs someone, not an organization.
This has regressed in 5.47, which enforces that contact B must be an organization.
I've run an installation for several years without any trouble related to the change I describe, so I'm wondering if there's a reason why we need to define the employee/employer relationship as having an employer as the organization?5.49.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3184financialacls core extension uses a global callback in hook_civicrm_container...2022-04-25T16:27:08ZDaveDfinancialacls core extension uses a global callback in hook_civicrm_container, which might be iffyThis is a bit tricky. Here's what I think is happening at https://github.com/civicrm/civicrm-core/blob/f5041803b6af3a9122e844179be3ab72860fd61a/ext/financialacls/financialacls.php#L25:
```php
function financialacls_civicrm_container($co...This is a bit tricky. Here's what I think is happening at https://github.com/civicrm/civicrm-core/blob/f5041803b6af3a9122e844179be3ab72860fd61a/ext/financialacls/financialacls.php#L25:
```php
function financialacls_civicrm_container($container) {
$dispatcherDefn = $container->getDefinition('dispatcher');
$container->addResource(new \Symfony\Component\Config\Resource\FileResource(__FILE__));
$dispatcherDefn->addMethodCall('addListener', ['civi.api4.authorizeRecord::Contribution', '_financialacls_civi_api4_authorizeContribution']);
}
```
Callables in php can be strings, e.g. global functions, such as in this case.
But if the function isn't "known to php" at the moment you pass it, then the data type assigned to it is string, not callable.
In symfony < 6, addListener() doesn't care about the type of the callback parameter. In symfony 6+, it wants `callable|array` (not string).
When the cached container is built, it compiles these hooks into its own php code, e.g. `$instance->addListener('civi.api4.authorizeRecord::Contribution', '_financialacls_civi_api4_authorizeContribution');`
The cached container can be loaded earlier than the extension is "loaded", or whatever the word is. In symfony < 6, I think this works out ok because it doesn't actually get used until later, until after the extension is loaded, and there's no type checking so it doesn't error when loading the cached container.
In symfony 6+, when the parameter is an array like in a class member callback, it's fine because it doesn't trigger a parameter type fail. But when it's a string, loading the cached container fails because it can't resolve it to a callable, so it gets passed as a string, which then fails the type checking.
I can sort of prove this by changing the callback in addMethod() above to `ts`. It's fine with that at the time the cached container is loaded because it can resolve it to a callable.
FYI @totten you might find this interesting.5.50.0