CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2024-02-08T21:01:05Zhttps://lab.civicrm.org/dev/core/-/issues/4847Activity-based SearchKit results for 'restricted' users (via the Related Perm...2024-02-08T21:01:05ZpetednzActivity-based SearchKit results for 'restricted' users (via the Related Permissions Module) are no longer restricting results to only Activities of Contacts the user has access tohttps://chat.civicrm.org/civicrm/pl/wj4t3rrh7ir5uyz7t88c7fuj8o
We are using the "Related Permissions Module" https://civicrm.org/extensions/relationship-permissions-acls
Beyond that all we are doing is
- use relationship A to join X (...https://chat.civicrm.org/civicrm/pl/wj4t3rrh7ir5uyz7t88c7fuj8o
We are using the "Related Permissions Module" https://civicrm.org/extensions/relationship-permissions-acls
Beyond that all we are doing is
- use relationship A to join X (teacher) to Y (school)
- use relationship B to join Y (school) to Z (student)
- give X necessary permissions to see All Activities but not see All Contacts.
This means that in pure civicrm when X logs in they only see their Students and the relevant Activities.
- Add an SK to show My Contacts and confirm that X only sees their Students - PASS
- Add an SK to show My Activities (I can export but it is super simple) and confirm that X only sees Activities where their Students are the Target - FAIL - they now see all Students with specified Activity
This was the query from the above which worked up till last week when we ran a civi upgrade.
```
SELECT a.id AS id, a.subject AS subject, a.activity_type_id AS activity_type_id:label, Activity_ActivityContact_Contact_01.sort_name AS Activity_ActivityContact_Contact_01.sort_name, Activity_ActivityContact_Contact_01.id AS Activity_ActivityContact_Contact_01.id
FROM civicrm_activity a
INNER JOIN (civicrm_activity_contact Activity_ActivityContact_Contact_01_via_activitycontact INNER JOIN civicrm_contact Activity_ActivityContact_Contact_01 ON (Activity_ActivityContact_Contact_01_via_activitycontact.contact_id = Activity_ActivityContact_Contact_01.id)) ON Activity_ActivityContact_Contact_01_via_activitycontact.record_type_id = "3" AND Activity_ActivityContact_Contact_01_via_activitycontact.activity_id = a.id
LEFT JOIN civicrm_value_attendance_record_15 Attendance_record_1 ON a.id = Attendance_record_1.entity_id
WHERE (a.activity_type_id = "51")
AND (Attendance_record_1.week_commencing_124 BETWEEN "20231203" AND "20231209")
AND (a.is_test = "0")
AND (a.is_deleted = "0")
```colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/4845CiviEvent with approvals: Registration form not pre-filled with (custom) part...2023-12-20T19:21:06ZTobias Voigttobias.voigt@civiservice.deCiviEvent with approvals: Registration form not pre-filled with (custom) participant dataI'm not sure wether this is a proposal or an issue. I'm using the approval workflow for CiviEvent where participants get a confirmation link after they've been approved by admins.
While this works great for simple registration use cases...I'm not sure wether this is a proposal or an issue. I'm using the approval workflow for CiviEvent where participants get a confirmation link after they've been approved by admins.
While this works great for simple registration use cases, where only contact information is gathered in the initial registration form, this feature regrettably can't be used for more comlex use cases, where the initial form also contains additional (custom) participant data (e.g. "Do you want the vegetarian option for dinner?").
So, if there's any fields for custom participant data in the initial registration form, users would fill out the form and send it. Afterwards, admins approve the registration and a confirmation link is sent out to the approved user. If he/she clicks on the confirmation link and chooses to confirm, all contact data gets pre-filled into the form - BUT: the participant data - which is already stored in the database from the initial form - is not pre-filled and has to be filled out again.
This drastically limits the scope of use cases this feature could work for, since in almost all our client's projects we work with additional / custom participant data.
So my question is: Is this a bug and the participant data should actually be loaded during the confirmation process? Or was this feature never intended? Or maybe the feature was intended but never realized? In any case: What might be the scope of development work necessary to not only pre-fill the confirmation form with contact data but also with participant data?https://lab.civicrm.org/dev/core/-/issues/4844Text field in FormBuilder breaks when inserting links2023-12-06T12:04:20Zjoshjosh@civicrm.orgText field in FormBuilder breaks when inserting linksAdding text with links in a FormBuilder text field functions as expected when adding for the first time. However, subsequent changes or attempts at making changes fail and the text appears to be truncated in the admin UI at the start of ...Adding text with links in a FormBuilder text field functions as expected when adding for the first time. However, subsequent changes or attempts at making changes fail and the text appears to be truncated in the admin UI at the start of the first link. The text on the frontend display remains as the original text and is neither truncated nor incorporates any changes despite successful "saves" in the admin interface.
![form-builder-text-issue](/uploads/493a188730553f1631d9613c50dce4da/form-builder-text-issue.png)
I've tested on the d9 sandbox and can reproduce that the text in the text box in the admin UI is truncated at the first link, however changes to text prior to the first link to appear to function as expected, so that bit may be specific to an issue on our site (civicrm.org).https://lab.civicrm.org/dev/core/-/issues/4842Allow bulk-enabling extensions through UI2023-12-08T13:17:56ZnoahAllow bulk-enabling extensions through UICurrent behaviour
----------------------------------------
On Administer > System Settings > Extensions, only one extension can be acted on at a time.
Proposed behaviour
----------------------------------------
It should be possible to...Current behaviour
----------------------------------------
On Administer > System Settings > Extensions, only one extension can be acted on at a time.
Proposed behaviour
----------------------------------------
It should be possible to select multiple extensions and perform the same action (Install, Disable, Uninstall) on all of them.https://lab.civicrm.org/dev/core/-/issues/4840Searchkit In Place Edit might load slow.2023-12-05T22:29:38ZjaapjansmaSearchkit In Place Edit might load slow.When creating the search kit for the permissions screen of the Standalone CiviCRM.
It turned out that the data loads very slow, because all permissions are shown for every role. And the in-place-edit makes this screen loading very slow. ...When creating the search kit for the permissions screen of the Standalone CiviCRM.
It turned out that the data loads very slow, because all permissions are shown for every role. And the in-place-edit makes this screen loading very slow.
@colemanw thought the permission check within in the in-place-edit was causing this.
See this PR which adds the permissions screen to standalone CiviCRM: https://github.com/civicrm/civicrm-core/pull/28523https://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/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/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/core/-/issues/4846API Deprecation2023-12-20T19:19:58ZtreseroAPI 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/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/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/4819Export contacts action: Merge Households option can produce export of househo...2023-12-06T23:20:03ZAndreasandreas.howiller@civiservice.deExport contacts action: Merge Households option can produce export of households that should be excluded by privacy settingOverview
----------------------------------------
The good old "export contacts" action offers the nice features 1. to merge household members into their households and 2. to exclude "do not mail" / no address / deceased contacts. Howeve...Overview
----------------------------------------
The good old "export contacts" action offers the nice features 1. to merge household members into their households and 2. to exclude "do not mail" / no address / deceased contacts. However, mixing the two can lead to probably unwanted exports.
![grafik](/uploads/a7d7f6c48e7bc23ecd5ad2613fb1d5da/grafik.png)
Reproduction steps
----------------------------------------
1. Create a household No-Mail-Household with individual Mail-Me-Person and individual Deceased-Person as household members, make sure all contacts do have an address.
2. Set privacy setting "do not mail" for No-Mail-Household.
3. Set "deceased" for contact Deceased-Person.
4. Apply "export contacts" action to a search result with all three contacts and look at some possible combinations...
Current behaviour / Expected Behaviour?
----------------------------------------
| Contacts selected for export | Merge option | Exclude "do not mail" etc. | Current behaviour | Expected behaviour
| ------ | ------ | ------ | ------ | ------ |
| No-Mail-Household | Do not merge | checked | no contact in export | no contact in export |
| Deceased-Person | Do not merge | checked | no contact in export | no contact in export |
| Mail-Me-Person | Do not merge | checked | only Mail-Me-Person in export | only Mail-Me-Person in export |
| No-Mail-Household, Deceased-Person, Mail-Me-Person | Do not merge | checked | only Mail-Me-Person in export | only Mail-Me-Person in export |
| No-Mail-Household, Deceased-Person, Mail-Me-Person | Do not merge | not checked | all three in export | all three in export |
| **No-Mail-Household**, Deceased-Person, **Mail-Me-Person** | Merge Household Members | checked | **No-Mail-Household in export** | **?** |
| No-Mail-Household, Deceased-Person, Mail-Me-Person | Merge Household Members | not checked | No-Mail-Household in export | No-Mail-Household in export |
| No-Mail-Household, Deceased-Person | Merge Household Members | not checked | No-Mail-Household in export | No-Mail-Household in export |
| No-Mail-Household, Deceased-Person | Merge Household Members | checked | no contact in export | no contact in export |
| No-Mail-Household, Mail-Me-Person | Merge Household Members | not checked | No-Mail-Household in export | No-Mail-Household in export |
| **No-Mail-Household**, **Mail-Me-Person** | Merge Household Members | checked | **No-Mail-Household in export** | **?** |
Summary
----------------------------------------
I can create an export with a household that should explicitly not appear in an export according to the export setting - this is obviously not a good idea.
But what would be a better behaviour? No contact at all or Mail-Me-Person as an individual? Perhaps the latter makes more sense?
Environment information
----------------------------------------
* CiviCRM 5.69.alpha1 on D10 and CiviCRM 5.64.4 on WP6.4.1https://lab.civicrm.org/dev/core/-/issues/4818Line Items: different behaviour between order API and backend when registerin...2023-12-06T23:18:04ZmasettoLine Items: different behaviour between order API and backend when registering price options not related to a membership typeWhen I create a membership with price sets, for the price options that not are related to a membership type, the entity table in line items is `civicrm_contribution`.
But if I create a membership with Order API the entity table for all ...When I create a membership with price sets, for the price options that not are related to a membership type, the entity table in line items is `civicrm_contribution`.
But if I create a membership with Order API the entity table for all line items have to be `civicrm_membership` otherwise the membership is not created.
For example, if I use `civicrm_contribution` for "price_field_id = 16" in the following example, the membership is not created. If I replace to `civicrm_membership` the membership is created correctly.
But I add the same membership in the backend, the entity_table for "price_field_id = 16" is `civicrm_contribution`.
```
[return] => membership_id
[contact_id] => 178918
[financial_type_id] => 2
[contribution_status] => Pending
[total_amount] => 36
[receive_date] => 20231129084211
[payment_instrument_id] => 7
[invoice_id] => CH-a1dafa484b7dbbf1ea4aae1b
[trxn_id] =>
[payment_processor_id] => 2
[is_email_receipt] =>
[line_items] => Array
(
[0] => Array
(
[line_item] => Array
(
[0] => Array
(
[entity_table] => civicrm_membership
[price_field_id] => 15
[price_field_value_id] => 22
[qty] => 1
[unit_price] => 30
[line_total] => 30
)
[1] => Array
(
[entity_table] => civicrm_contribution
[price_field_id] => 16
[price_field_value_id] => 25
[qty] => 1
[unit_price] => 6
[line_total] => 6
)
)
[params] => Array
(
[id] =>
[membership_type_id] => 1
[contact_id] => 178918
[end_date] => 2024-12-31
[is_override] => 0
[status_id] => Pending
[max_related] => 0
[join_date] => 20231129084211
[start_date] => 2024-01-01
)
)
)
[debug] => 1
[is_test] => 0
```
It is important that the data is recorded in the same way. Also because if I have to make queries becomes very complicated (I have not yet found a way to do this with SearchKit).https://lab.civicrm.org/dev/core/-/issues/4817$imageURL is not available on membership contribution confirmation and thank ...2023-12-06T22:25:06Zfreeform.steph$imageURL is not available on membership contribution confirmation and thank you pagesThis was originally posted here: https://issues.civicrm.org/jira/browse/CRM-19983 in 2017 but I am not finding any indication that it was ever resolved, or this is a regression, not sure.
If you include the contact photo field (image_ur...This was originally posted here: https://issues.civicrm.org/jira/browse/CRM-19983 in 2017 but I am not finding any indication that it was ever resolved, or this is a regression, not sure.
If you include the contact photo field (image_url) in a profile on a membership contribution form and a user uses the field, the image is uploaded, however the image preview (thumbnail with option to delete) fails to display on the confirmation and thank you pages. This causes the users confusion because the field to upload an image appears in its place which leads the individuals to re-try uploading their image (which will cause their image to not be saved). It also fails to appear on the thank you page if you do not enable the confirmation page option.
If you include the smarty debug tag in templates/CRM/UF/Form/Fields.tpl where you'd expect the image to be output, you'll see that $imageURL is not defined.
If you use the same field on a standalone profile form, the preview does display on the last page (there is no confirmation page in this case), so it does appear to be limited to when the profile is included on a contribution form.
What we should see: (1) no upload field on confirmation or thank you pages, (2) include a preview of an image if one was uploaded.https://lab.civicrm.org/dev/core/-/issues/4813CRM_Report_Form_Activity: Add Employer field, and "contact"-based custom fields2023-12-18T23:06:40ZAllenShawCRM_Report_Form_Activity: Add Employer field, and "contact"-based custom fieldsThis improvement is requested and sponsored by Stuart at Korlon.
We aim to implement the following changes to the CiviCRM core "Activity Detail" report (CRM_Report_Form_Activity):
- add "Current Employer" as an available column (not fi...This improvement is requested and sponsored by Stuart at Korlon.
We aim to implement the following changes to the CiviCRM core "Activity Detail" report (CRM_Report_Form_Activity):
- add "Current Employer" as an available column (not filter), to display with its Display Name, as a link to the employer contact
- auto-include "contact"-based custom fields (currently only "individual"-based custom fields get this treatment)
A PR is forthcoming. If it seems this is not a desirable improvement, please let me know in comments!
(Joinery reference: F#1317)https://lab.civicrm.org/dev/core/-/issues/4810Class name must be a valid object or a string2023-12-06T23:12:00ZPaulButlerClass name must be a valid object or a stringI am seeing a strange issue that "seemed" to create itself. When trying to access a member record I get this error:
Class name must be a valid object or a string
in httpdocs/administrator/components/com_civicrm/civicrm/CRM/Utils/SQL.ph...I am seeing a strange issue that "seemed" to create itself. When trying to access a member record I get this error:
Class name must be a valid object or a string
in httpdocs/administrator/components/com_civicrm/civicrm/CRM/Utils/SQL.php (line 61)
* @param string $joinColumn * @return array */ public static function mergeSubquery($entityName, $joinColumn = 'id') {
* $baoName = CRM_Core_DAO_AllCoreTables::getBAOClassName(CRM_Core_DAO_AllCoreTables::getFullName($entityName));
* $bao = new $baoName();
* $fields = $bao::getSupportedFields();
* $mergeClauses = $subClauses = [];
* foreach ((array) $bao->addSelectWhereClause($entityName) as $fieldName => $fieldClauses) { if ($fieldClauses) { foreach ((array) $fieldClauses as $fieldClause) {
The command that is failing is $bao = new $baoName
This error seemed to manifest itself (I know it won't have!). I restored a dump of the database from a previous day and can access the member record just fine , when I restore the database it then throws this error.
What more can I do to try and trace the source of it. My gut feel is that it's a DB corruption of sorts but I am unable to identify what. I set SQL trace on in CiviCRM but that doesn't display any errors that I can see.
Suggestions please?
My site is running Joomla 4.4 , PHP 8.0.30 and CiviCRM 5.67.1