Development issueshttps://lab.civicrm.org/groups/dev/-/issues2022-02-24T00:33:56Zhttps://lab.civicrm.org/dev/drupal/-/issues/113hook_civicrm_buildProfile not working on Drupal 82022-02-24T00:33:56ZAlanDixonhook_civicrm_buildProfile not working on Drupal 8The buildProfile hook as documented here:
https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_buildProfile/
doesn't work in Drupal 8, at least not on the user's corresponding profile tab.
Specifically, the ability to add css/js to...The buildProfile hook as documented here:
https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_buildProfile/
doesn't work in Drupal 8, at least not on the user's corresponding profile tab.
Specifically, the ability to add css/js to a profile form fails, e.g. like the example in the documentation:
CRM_Core_Resources::singleton()->addScriptFile('org.example.myext', 'some/fancy.js', 100);
The hook fires with the correct profile name, but adding any resources does not result in those resources showing up on the Drupal users's profile page.
I believe the error is in src/Form/UserProfile.php where the form html is generated and returned without checking for any associated resources.
One way of fixing it is to only support the 'form-bottom' region, and add the resources in the buildForm function, e.g.
`$html .= \CRM_Core_Region::instance('form-bottom')->render('', FALSE);`
after line 86 of that file.
There are lots of other civicrm resources that are not included, and maybe that's a good thing on purpose.5.40.0https://lab.civicrm.org/dev/drupal/-/issues/112Installer requires anonymous users to have Administer site config permission ...2020-04-01T07:24:21ZherbdoolInstaller requires anonymous users to have Administer site config permission in order to installI'm installing CiviCRM 5.23.2 on Drupal 7 by going to `sites/all/modules/civicrm/install/`. It's a fresh Drupal 7 install on Lando. I get this message "The installer can only be run by a user with the permission to administer site config...I'm installing CiviCRM 5.23.2 on Drupal 7 by going to `sites/all/modules/civicrm/install/`. It's a fresh Drupal 7 install on Lando. I get this message "The installer can only be run by a user with the permission to administer site configuration." and it only allows me to install when I give anon users this permission. I am logged in as admin with all permissions enabled. So somehow the session is no longer active at the URL.https://lab.civicrm.org/dev/joomla/-/issues/26CiviCRM menu disappears and upgrade to 5.23.x fails if Joomla is in a folder ...2020-05-16T03:15:37ZspalmstromCiviCRM menu disappears and upgrade to 5.23.x fails if Joomla is in a folder below the website.This issue may also apply to Drupal, but I haven't tried it.
If the Joomla site is a subfolder of the main site, e.g.
https://www.example.com/joomla, the CiviCRM menu disappears after upgrading to 5.23.x and the database upgrade gets stu...This issue may also apply to Drupal, but I haven't tried it.
If the Joomla site is a subfolder of the main site, e.g.
https://www.example.com/joomla, the CiviCRM menu disappears after upgrading to 5.23.x and the database upgrade gets stuck. If Joomla is immediately under the site, both issues disappear. Examining the code shows errors in loading scripts, where the browser attempts to load files in:
https://www.example.com/joomla/joomla
In other words, it seems to be duplicating the subfolder.5.23.4https://lab.civicrm.org/dev/core/-/issues/1666Multisite ACL functionality breaks after upgrade from 5.20.0 to 5.23.32020-03-22T21:10:01ZandyburnsMultisite ACL functionality breaks after upgrade from 5.20.0 to 5.23.3We upgraded from 5.20.0 to 5.23.3 and found that users relying on the [multisite extension](https://github.com/eileenmcnaughton/org.civicrm.multisite) cannot query any records and receive the error below:
> Network Error
> Unable to rea...We upgraded from 5.20.0 to 5.23.3 and found that users relying on the [multisite extension](https://github.com/eileenmcnaughton/org.civicrm.multisite) cannot query any records and receive the error below:
> Network Error
> Unable to reach the server. Please refresh this page in your browser and try again.
``` PHP Fatal error: Uncaught Error: Call to protected method CRM_ACL_BAO_ACL::matchType() from context '' in ...wp-content/uploads/civicrm/ext/org.civicrm.multisite/multisite.php:533\nStack trace:\n#0 ...wp-content/uploads/civicrm/ext/org.civicrm.multisite/multisite.php(277): _multisite_add_permissions(1)\n#1 ...wp-content/plugins/civicrm/civicrm/CRM/Utils/Hook.php(302): multisite_civicrm_aclWhereClause(1, Array, Array, 114985, NULL)\n#2 ...wp-content/plugins/civicrm/civicrm/CRM/Utils/Hook/WordPress.php(139): CRM_Utils_Hook->runHooks(Array, 'civicrm_aclWher...', 5, 1, Array, Array, 114985, NULL, NULL)\n#3 ...wp-content/plugins/civicrm/civicrm/Civi/Core/CiviEventDispatcher.php(102): CRM_Utils_Hook_WordPress->invokeViaUF(5, 1, Array, Array, 114985, NULL, NULL, 'civicrm_aclWher...')\n#4 ...wp-content/plugins/civicrm/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(184): Civi\\Core\\CiviEventDispatcher::delegateToUF(Object(Civi\\Core\\Event\\GenericHookEvent), ' in .../wp-content/uploads/civicrm/ext/org.civicrm.multisite/multisite.php on line 533, referer: https://example.org/wp-admin/admin.php?page=CiviCRM ```
After investigation, we found that the function **matchType()** on line 637 in wp-content/plugins/civicrm/civicrm/CRM/ACL/BAO/ACL.php was changed from **public** to **protected**. Changing it back to **public** fixed the problem ([similar to this issue](https://civicrm.stackexchange.com/questions/18850/error-during-registration-for-multiple-participants)).
We are looking for a long-term fix in future releases.
@seamuslee @eileen https://lab.civicrm.org/dev/core/-/issues/1665MySQL uses filesort index when building the query which can cause performance...2020-08-13T00:03:03Zjustinfreeman (Agileware)MySQL uses filesort index when building the query which can cause performance issuesMySQL uses filesort index when building the query which can cause performance issues. This can be solved by simply removing the GROUP BY and ORDER BY options from query in **function alphabetQuery**, **CRM/Contact/BAO/Query.php** see htt...MySQL uses filesort index when building the query which can cause performance issues. This can be solved by simply removing the GROUP BY and ORDER BY options from query in **function alphabetQuery**, **CRM/Contact/BAO/Query.php** see https://github.com/civicrm/civicrm-core/blob/master/CRM/Contact/BAO/Query.php#L5012
Original query:
~~~
$query = "SELECT DISTINCT LEFT(contact_a.sort_name, 1) as sort_name
{$sqlParts['from']}
{$sqlParts['where']}
{$sqlParts['having']}
GROUP BY sort_name
ORDER BY sort_name asc";
~~~
Change query to:
~~~
$query = "SELECT DISTINCT LEFT(contact_a.sort_name, 1) as sort_name
{$sqlParts['from']}
{$sqlParts['where']}
{$sqlParts['having']}";
~~~
This change has no visible impact on the search results pager or listing.
The query was generated by CiviCRM when doing an Advanced Search and selecting 6 CiviCRM Groups (not Smart Groups) - displaying results as contacts.
Before this change, note the "Using filesort" on 24754 rows. Query takes longer than 90 seconds to complete - can trigger a PHP timeout.
~~~
MariaDB [ajpulmse_crm]> explain SELECT DISTINCT LEFT(contact_a.sort_name, 1) as sort_name FROM civicrm_contact contact_a LEFT JOIN civicrm_group_contact `civicrm_group_contact-5e742600a44d
7` ON (contact_a.id = `civicrm_group_contact-5e742600a44d7`.contact_id AND `civicrm_group_contact-5e742600a44d7`.status IN ('Added')) LEFT JOIN civicrm_group_contact `civicrm_group_contact-
5e742600a47a7` ON (contact_a.id = `civicrm_group_contact-5e742600a47a7`.contact_id AND `civicrm_group_contact-5e742600a47a7`.status IN ('Added')) LEFT JOIN civicrm_group_contact `civicrm_gr
oup_contact-5e742600a4a78` ON (contact_a.id = `civicrm_group_contact-5e742600a4a78`.contact_id AND `civicrm_group_contact-5e742600a4a78`.status IN ('Added')) LEFT JOIN civicrm_group_contact
`civicrm_group_contact-5e742600a4d39` ON (contact_a.id = `civicrm_group_contact-5e742600a4d39`.contact_id AND `civicrm_group_contact-5e742600a4d39`.status IN ('Added')) LEFT JOIN civicrm_g
roup_contact `civicrm_group_contact-5e742600a4fde` ON (contact_a.id = `civicrm_group_contact-5e742600a4fde`.contact_id AND `civicrm_group_contact-5e742600a4fde`.status IN ('Added')) LEFT JO
IN civicrm_group_contact `civicrm_group_contact-5e742600a529d` ON (contact_a.id = `civicrm_group_contact-5e742600a529d`.contact_id AND `civicrm_group_contact-5e742600a529d`.status IN ('Adde
d')) WHERE ( ( ( ( `civicrm_group_contact-5e742600a44d7`.group_id IN ("498") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a47a7`.group_id IN ("499") ) ) ) OR ( ( ( `civicrm_group_contact-5
e742600a4a78`.group_id IN ("505") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a4d39`.group_id IN ("504") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a4fde`.group_id IN ("503") ) ) ) OR
( ( ( `civicrm_group_contact-5e742600a529d`.group_id IN ("502") ) ) ) ) AND (contact_a.is_deleted = 0) GROUP BY sort_name;
+------+-------------+-------------------------------------+------+----------------------------+----------------------------+---------+---------------------------+-------+------------------
-----------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
|
+------+-------------+-------------------------------------+------+----------------------------+----------------------------+---------+---------------------------+-------+-----------------------------------------------------------+
| 1 | SIMPLE | contact_a | ref | index_is_deleted_sort_name | index_is_deleted_sort_name | 1 | const | 24754 | Using where; Using index; Using temporary; Using filesort |
| 1 | SIMPLE | civicrm_group_contact-5e742600a44d7 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Distinct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a47a7 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Distinct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a4a78 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Distinct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a4d39 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Distinct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a4fde | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Distinct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a529d | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Distinct |
+------+-------------+-------------------------------------+------+----------------------------+----------------------------+---------+---------------------------+-------+-----------------------------------------------------------+
7 rows in set, 1 warning (0.00 sec)
~~~
After this change, note absence of the "Using filesort". Query completes in 5 seconds or less.
~~~
MariaDB [ajpulmse_crm]> explain
-> SELECT DISTINCT LEFT(contact_a.sort_name, 1) as sort_name FROM civicrm_contact contact_a LEFT JOIN civicrm_group_contact `civicrm_group_contact-5e742600a44d7` ON (contact_a.id = `civ
icrm_group_contact-5e742600a44d7`.contact_id AND `civicrm_group_contact-5e742600a44d7`.status IN ('Added')) LEFT JOIN civicrm_group_contact `civicrm_group_contact-5e742600a47a7` ON (contact
_a.id = `civicrm_group_contact-5e742600a47a7`.contact_id AND `civicrm_group_contact-5e742600a47a7`.status IN ('Added')) LEFT JOIN civicrm_group_contact `civicrm_group_contact-5e742600a4a78`
ON (contact_a.id = `civicrm_group_contact-5e742600a4a78`.contact_id AND `civicrm_group_contact-5e742600a4a78`.status IN ('Added')) LEFT JOIN civicrm_group_contact `civicrm_group_contact-5e
742600a4d39` ON (contact_a.id = `civicrm_group_contact-5e742600a4d39`.contact_id AND `civicrm_group_contact-5e742600a4d39`.status IN ('Added')) LEFT JOIN civicrm_group_contact `civicrm_grou
p_contact-5e742600a4fde` ON (contact_a.id = `civicrm_group_contact-5e742600a4fde`.contact_id AND `civicrm_group_contact-5e742600a4fde`.status IN ('Added')) LEFT JOIN civicrm_group_contact `
civicrm_group_contact-5e742600a529d` ON (contact_a.id = `civicrm_group_contact-5e742600a529d`.contact_id AND `civicrm_group_contact-5e742600a529d`.status IN ('Added')) WHERE ( ( ( ( `civicr
m_group_contact-5e742600a44d7`.group_id IN ("498") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a47a7`.group_id IN ("499") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a4a78`.group_id IN
("505") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a4d39`.group_id IN ("504") ) ) ) OR ( ( ( `civicrm_group_contact-5e742600a4fde`.group_id IN ("503") ) ) ) OR ( ( ( `civicrm_group_conta
ct-5e742600a529d`.group_id IN ("502") ) ) ) ) AND (contact_a.is_deleted = 0);
+------+-------------+-------------------------------------+------+----------------------------+----------------------------+---------+---------------------------+-------+------------------
------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
|
+------+-------------+-------------------------------------+------+----------------------------+----------------------------+---------+---------------------------+-------+------------------
------------+
| 1 | SIMPLE | contact_a | ref | index_is_deleted_sort_name | index_is_deleted_sort_name | 1 | const | 24754 | Using index; Usin
g temporary |
| 1 | SIMPLE | civicrm_group_contact-5e742600a44d7 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Dist
inct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a47a7 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Dist
inct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a4a78 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Dist
inct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a4d39 | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Dist
inct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a4fde | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Dist
inct |
| 1 | SIMPLE | civicrm_group_contact-5e742600a529d | ref | UI_contact_group | UI_contact_group | 4 | ajpulmse_crm.contact_a.id | 1 | Using where; Dist
inct |
+------+-------------+-------------------------------------+------+----------------------------+----------------------------+---------+---------------------------+-------+------------------
------------+
7 rows in set (0.00 sec)
~~~
Agileware ref: CIVICRM-14575.30.0https://lab.civicrm.org/dev/drupal/-/issues/111Multiple jquery errors after upgrading to Drupal 8.8.42020-03-22T15:24:38ZRob_SMultiple jquery errors after upgrading to Drupal 8.8.4I've applied the latest security patch to upgrade to Drupal 8.8.4 and it seems to have broken Civi. At /civicrm I am seeing no menu, the dashboards aren't loading and cannot be edited / updated. There are numerous js errors on the page w...I've applied the latest security patch to upgrade to Drupal 8.8.4 and it seems to have broken Civi. At /civicrm I am seeing no menu, the dashboards aren't loading and cannot be edited / updated. There are numerous js errors on the page which seem to stem from jquery being missing. THe first error is:
ReferenceError: jQuery is not defined /libraries/civicrm/js/Common.js:4:10
Any advice would be appreciated here people pleasehttps://lab.civicrm.org/dev/core/-/issues/1664Various errors recorded in log message on Manage Case screen -> relationship ...2020-03-20T15:44:05ZjitendraVarious errors recorded in log message on Manage Case screen -> relationship tab.Manage case screen logs different error messages in logs. To replicate
- Create a case and load the manage case screen.
- open relationship tab.
- Open drupal log messages and notice the error message recorded.
![image](/uploads/81e388...Manage case screen logs different error messages in logs. To replicate
- Create a case and load the manage case screen.
- open relationship tab.
- Open drupal log messages and notice the error message recorded.
![image](/uploads/81e38817d3895c15bf875ebb5ad2c5f8/image.png)
Some of them are -
>Warning: array_multisort(): Argument #2 is expected to be an array or a sort flag in CRM_Activity_Page_AJAX::getCaseRoles() (line 188 of /Users/jitendra/src/civicrm/CRM/Activity/Page/AJAX.php).
>Warning: constant(): Couldn't find constant SORT_ in CRM_Activity_Page_AJAX::getCaseRoles() (line 188 of /Users/jitendra/src/civicrm/CRM/Activity/Page/AJAX.php).
>Notice: Undefined index: order in CRM_Activity_Page_AJAX::getCaseRoles() (line 187 of /Users/jitendra/src/civicrm/CRM/Activity/Page/AJAX.php).
>Notice: Undefined index: in CRM_Activity_Page_AJAX::getCaseRoles() (line 185 of /Users/jitendra/src/civicrm/CRM/Activity/Page/AJAX.php).
>Notice: Undefined index: sort in CRM_Activity_Page_AJAX::getCaseRoles() (line 185 of /Users/jitendra/src/civicrm/CRM/Activity/Page/AJAX.php).
>Notice: Undefined index: sortBy in CRM_Activity_Page_AJAX::getCaseGlobalRelationships() (line 59 of /Users/jitendra/src/civicrm/CRM/Activity/Page/AJAX.php).5.25.0jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/1663PHP warning on Add relationship form2020-04-05T00:59:27ZjitendraPHP warning on Add relationship formTo replicate - simply open a relationship form on a new window.
![image](/uploads/7ec093404a3d1f14892583b8a001aca6/image.png)
This seems to be related to the addition of option_context in https://github.com/civicrm/civicrm-core/pull/11...To replicate - simply open a relationship form on a new window.
![image](/uploads/7ec093404a3d1f14892583b8a001aca6/image.png)
This seems to be related to the addition of option_context in https://github.com/civicrm/civicrm-core/pull/11853/files#diff-f9397c2b103c68ffb588679b5d4784a25.25.0jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/1662Saved mappings doesn't work for all use cases.2020-03-20T06:31:05ZPradeep Nayakpradpnayak@gmail.comSaved mappings doesn't work for all use cases.When you have saved mapping field with Organization Name (match to contact) or Email (match to contact) fields set and you try to import contact using the mapping id, the Organization Name or Email is not pre-populated unless we have co...When you have saved mapping field with Organization Name (match to contact) or Email (match to contact) fields set and you try to import contact using the mapping id, the Organization Name or Email is not pre-populated unless we have column first row set to Organization Name or Email. Checking civicrm_mapping_field table found out that it stores the label in civicrm_mapping_field.name field (i.e saved as Organization Name (match to contact) or Email (match to contact)) and is [matched](https://github.com/civicrm/civicrm-core/blob/master/CRM/Import/ImportProcessor.php#L437) against the [metadata](https://github.com/civicrm/civicrm-core/blob/master/CRM/Import/ImportProcessor.php#L491) from DAO class which has '(match to contact)' missing in title.
Organization Name (match to contact) or Email (match to contact) fields are one of the mandatory field for contact import process. This was working in 5.13 but recent upgrade to 5.19 failed to populate the field.https://lab.civicrm.org/dev/translation/-/issues/40Can't install 5.23 in another language2020-03-25T04:34:05ZDaveDCan't install 5.23 in another language5.23.3 drupal 7
Also affects 5.24
Also reported on Stackexchange for wordpress by two separate people (but it's a bit buried inside another question https://civicrm.stackexchange.com/questions/35014/local-flywheel-wordpress-install-with...5.23.3 drupal 7
Also affects 5.24
Also reported on Stackexchange for wordpress by two separate people (but it's a bit buried inside another question https://civicrm.stackexchange.com/questions/35014/local-flywheel-wordpress-install-with-civicrm)
You get a white screen and the apache error log has a truncated stack trace:
```
PHP Fatal error: Uncaught RuntimeException: Undefined constant: CIVICRM_TEMPLATE_COMPILEDIR in http://example.org/sites/all/modules/civicrm/CRM/Utils/File.php:583
Stack trace:
0 http://example.org/sites/all/modules/civicrm/Civi/Core/Paths.php(65): CRM_Utils_File::baseFilePath()
1 [internal function]: Civi/Core/Paths->Civi/Core/{closure}()
2 http://example.org/sites/all/modules/civicrm/Civi/Core/Paths.php(145): call_user_func(Object(Closure))
3 http://example.org/sites/all/modules/civicrm/Civi/Core/Paths.php(228): Civi/Core/Paths->getVariable('civicrm.private', 'path')
4 http://example.org/sites/all/modules/civicrm/Civi/Core/Paths.php(82): Civi/Core/Paths->getPath('l10n')
5 [internal function]: Civi/Core/Paths->Civi/Core/{closure}()
6 http://example.org/sites/all/modules/civicrm/Civi/Core/Paths.php(145): call_user_func(Object(Closure))
7 [useless since it's truncated] in http://example.org/sites/all/modules/civicrm/CRM/Utils/File.php on line 583, referer: http://example.org/sites/all/modules/civicrm/install/index.php
```5.24.0https://lab.civicrm.org/dev/core/-/issues/1661Increase size of mysql field in export table for column with CRM_Utils_Type::...2020-09-16T01:29:42ZscardiniusIncrease size of mysql field in export table for column with CRM_Utils_Type::T_INT typeOverview
----------------------------------------
Increase size of mysql field in export table for column with CRM_Utils_Type::T_INT type.
Example use-case
----------------------------------------
1. Change label of phone type "Mobile" ...Overview
----------------------------------------
Increase size of mysql field in export table for column with CRM_Utils_Type::T_INT type.
Example use-case
----------------------------------------
1. Change label of phone type "Mobile" to "Telefon komórkowy" (which is Polish translation with 18 length)
1. Search for contacts with this phone type
1. Make an action "Export contacts"
Current behaviour
----------------------------------------
Current size is VARCHAR(16). The db error occurs:
`[nativecode=1406 ** Data too long for column 'phone_type_id' at row 1]`
Proposed behaviour
----------------------------------------
Increasing size to VARCHAR(64) allows exporting works fine with option labels longer than 16 chars. Not only built-in dictionaries like phone types but also for custom options/custom fields.
Comments
----------------------------------------
To be more precise I should increase the length to VARCHAR(512) because of civicrm_option_value.label definition.https://lab.civicrm.org/dev/core/-/issues/1660Suggest to remove the line from the header of release notes that says "fix bu...2020-03-17T21:19:57ZDaveDSuggest to remove the line from the header of release notes that says "fix bugs?"It's always "Yes". I'm not being sarcastic, it just is always yes.
`grep -r "\*\*Fix bugs?\*\*" release-notes`
```
release-notes/4.7.23.md:| **Fix bugs?** | **yes** |
release-notes/4.7....It's always "Yes". I'm not being sarcastic, it just is always yes.
`grep -r "\*\*Fix bugs?\*\*" release-notes`
```
release-notes/4.7.23.md:| **Fix bugs?** | **yes** |
release-notes/4.7.24.md:| **Fix bugs?** | **Yes** |
release-notes/4.7.25.md:| **Fix bugs?** | **yes** |
release-notes/4.7.27.md:| **Fix bugs?** | **yes** |
release-notes/4.7.28.md:| **Fix bugs?** | **yes** |
release-notes/4.7.29.md:| **Fix bugs?** | **yes** |
release-notes/4.7.30.md:| **Fix bugs?** | **yes** |
release-notes/4.7.31.md:| **Fix bugs?** | **yes** |
release-notes/5.0.0.md:| **Fix bugs?** | **yes** |
release-notes/5.0.1.md:| **Fix bugs?** | **yes** |
release-notes/5.0.2.md:| **Fix bugs?** | **yes** |
release-notes/5.1.0.md:| **Fix bugs?** | **yes** |
release-notes/5.1.1.md:| **Fix bugs?** | **yes** |
release-notes/5.1.2.md:| **Fix bugs?** | **yes** |
release-notes/5.10.0.md:| **Fix bugs?** | **yes** |
release-notes/5.10.1.md:| **Fix bugs?** | **yes** |
release-notes/5.10.2.md:| **Fix bugs?** | **yes** |
release-notes/5.10.3.md:| **Fix bugs?** | **yes** |
release-notes/5.10.4.md:| **Fix bugs?** | **yes** |
release-notes/5.12.0.md:| **Fix bugs?** | **yes** |
release-notes/5.12.1.md:| **Fix bugs?** | **yes** |
release-notes/5.12.2.md:| **Fix bugs?** | **yes** |
release-notes/5.12.3.md:| **Fix bugs?** | **yes** |
release-notes/5.12.4.md:| **Fix bugs?** | **yes** |
release-notes/5.13.0.md:| **Fix bugs?** | **yes** |
release-notes/5.13.1.md:| **Fix bugs?** | **yes** |
release-notes/5.13.2.md:| **Fix bugs?** | **yes** |
release-notes/5.13.3.md:| **Fix bugs?** | **yes** |
release-notes/5.13.5.md:| **Fix bugs?** | **yes** |
release-notes/5.14.1.md:| **Fix bugs?** | **yes** |
release-notes/5.15.1.md:| **Fix bugs?** | **yes** |
release-notes/5.15.2.md:| **Fix bugs?** | **yes** |
release-notes/5.16.1.md:| **Fix bugs?** | **yes** |
release-notes/5.16.2.md:| **Fix bugs?** | **yes** |
release-notes/5.16.3.md:| **Fix bugs?** | **yes** |
release-notes/5.16.4.md:| **Fix bugs?** | **yes** |
release-notes/5.17.0.md:| **Fix bugs?** | **yes** |
release-notes/5.17.1.md:| **Fix bugs?** | **yes** |
release-notes/5.17.2.md:| **Fix bugs?** | **yes** |
release-notes/5.17.3.md:| **Fix bugs?** | **yes** |
release-notes/5.17.4.md:| **Fix bugs?** | **yes** |
release-notes/5.17.5.md:| **Fix bugs?** | **yes** |
release-notes/5.18.0.md:| **Fix bugs?** | **yes** |
release-notes/5.18.1.md:| **Fix bugs?** | **yes** |
release-notes/5.18.2.md:| **Fix bugs?** | **yes** |
release-notes/5.18.3.md:| **Fix bugs?** | **yes** |
release-notes/5.18.4.md:| **Fix bugs?** | **yes** |
release-notes/5.19.0.md:| **Fix bugs?** | **yes** |
release-notes/5.19.1.md:| **Fix bugs?** | **yes** |
release-notes/5.19.2.md:| **Fix bugs?** | **yes** |
release-notes/5.19.3.md:| **Fix bugs?** | **yes** |
release-notes/5.19.4.md:| **Fix bugs?** | **yes** |
release-notes/5.2.1.md:| **Fix bugs?** | **yes** |
release-notes/5.2.2.md:| **Fix bugs?** | **yes** |
release-notes/5.20.0.md:| **Fix bugs?** | **yes** |
release-notes/5.20.1.md:| **Fix bugs?** | **yes** |
release-notes/5.20.2.md:| **Fix bugs?** | **yes** |
release-notes/5.20.3.md:| **Fix bugs?** | **yes** |
release-notes/5.21.0.md:| **Fix bugs?** | **yes** |
release-notes/5.21.1.md:| **Fix bugs?** | **yes** |
release-notes/5.21.2.md:| **Fix bugs?** | **yes** |
release-notes/5.22.0.md:| **Fix bugs?** | **yes** |
release-notes/5.22.1.md:| **Fix bugs?** | **yes** |
release-notes/5.23.0.md:| **Fix bugs?** | **yes** |
release-notes/5.23.1.md:| **Fix bugs?** | **yes** |
release-notes/5.23.2.md:| **Fix bugs?** | **yes** |
release-notes/5.23.3.md:| **Fix bugs?** | **yes** |
release-notes/5.3.0.md:| **Fix bugs?** | **yes** |
release-notes/5.3.2.md:| **Fix bugs?** | **yes** |
release-notes/5.4.0.md:| **Fix bugs?** | **yes** |
release-notes/5.4.1.md:| **Fix bugs?** | **yes** |
release-notes/5.5.0.md:| **Fix bugs?** | **yes** |
release-notes/5.5.1.md:| **Fix bugs?** | **yes** |
release-notes/5.5.2.md:| **Fix bugs?** | **yes** |
release-notes/5.5.3.md:| **Fix bugs?** | **yes** |
release-notes/5.6.1.md:| **Fix bugs?** | **yes** |
release-notes/5.7.1.md:| **Fix bugs?** | **yes** |
release-notes/5.7.2.md:| **Fix bugs?** | **yes** |
release-notes/5.8.0.md:| **Fix bugs?** | **yes** |
release-notes/5.8.1.md:| **Fix bugs?** | **yes** |
release-notes/5.8.2.md:| **Fix bugs?** | **yes** |
release-notes/5.9.0.md:| **Fix bugs?** | **yes** |
release-notes/5.9.1.md:| **Fix bugs?** | **yes** |
```
@alicefrumin @andrewhunthttps://lab.civicrm.org/dev/core/-/issues/1659Case.get API returning Case Clients As Part of Related Contacts2020-04-09T16:09:42Ztunbola@compucorp.co.ukCase.get API returning Case Clients As Part of Related ContactsOverview
----------------------------------------
The Case.get API returns case clients as part of related contacts. The case clients are not supposed to be returned as part of the related contacts. The condition here: https://github.com...Overview
----------------------------------------
The Case.get API returns case clients as part of related contacts. The case clients are not supposed to be returned as part of the related contacts. The condition here: https://github.com/civicrm/civicrm-core/blob/master/CRM/Case/BAO/Case.php#L1160 is meant to exclude case clients but when the clients are more than one for a case, the parameter here is treated as a String rather than CommaSeparatedIntegers, so the SQL end up having conditions like `NOT IN ('2,3')` rather than `NOT IN (2,3)`.
Reproduction steps
----------------------------------------
- Create a Case Type or use one of the default Case Types with a setting similar to the one below:
![Adult_Day_Care_Referral__CiviAwards_2020-03-17_14-39-53](/uploads/2ddb9fc2d7c988e78b84346372fe5994/Adult_Day_Care_Referral__CiviAwards_2020-03-17_14-39-53.png)
- Create a new case using the add new case form and select two or more clients.
- Fetch the Case details with the Case.get API, you will notice that one of the case clients appears twice in the contact field for the returned results. i.e the client is returned as a client and also as a related contact. The logic for excluding the related contacts doesn't work in the `NOT IN` condition because it is treated as a string rather than a comma separated integers.
Expected behaviour
----------------------------------------
- When the Case details is fetched with the Case.get API, none of the case clients should be returned twice. i.e the case client contact should not be returned as part of the related contacts here: https://github.com/civicrm/civicrm-core/blob/master/CRM/Case/BAO/Case.php#L1130
Proposed Solution
----------------------------------------
The proposed solution is to treat the parameter as Comma separated integer values here: https://github.com/civicrm/civicrm-core/blob/master/CRM/Case/BAO/Case.php#L1181
```php
$clientIdType = !empty($caseInfo['client_id']) ? 'CommaSeparatedIntegers' : 'String';
$params = [
1 => [$caseID, 'Integer'],
2 => [implode(',', $caseInfo['client_id']), $clientIdType],
];
```
The `$caseInfo['client_id']` could be empty sometimes and that is the reason for the check above. A good example is the civirules extension here: https://lab.civicrm.org/extensions/civirules/-/blob/master/civirules.php#L312 && https://lab.civicrm.org/extensions/civirules/-/blob/master/CRM/CivirulesPostTrigger/CaseCustomDataChanged.php#L56, if a new case is created, at the point of invoking the `hook_civicrm_custom` the case clients are not yet created so the `$caseInfo['client_id']` will be empty, hence the reason for checking if the clients data is empty or not before setting the parameter type.5.26.0https://lab.civicrm.org/dev/core/-/issues/1658DB Error on Search Builder2023-02-27T05:03:35ZEdselopezDB Error on Search BuilderOverview
----------------------------------------
DB Error encountered when searching for contributions with a certain soft credit type using the search builder
Reproduction steps
----------------------------------------
1. Click on **S...Overview
----------------------------------------
DB Error encountered when searching for contributions with a certain soft credit type using the search builder
Reproduction steps
----------------------------------------
1. Click on **Search -> Search Builder**.
2. Selected **Contribution**, then **Soft Credit Type** and searched for a particular ID.
1. Got an error "**Fatal error: DB error**".
Current behaviour
----------------------------------------
![Screenshot_2020-03-17_at_3.47.42_PM](/uploads/54dadfae6d555d215c5a33fb5ba46246/Screenshot_2020-03-17_at_3.47.42_PM.png)
DB Error here:
https://gist.github.com/Edzelopez/2306b9c797c2ea24af0ef1202ffb2fa8seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/1657Intermittent bug on processing membeships2023-02-26T05:03:39ZeileenIntermittent bug on processing membeshipsI'm opening this to track https://github.com/civicrm/civicrm-core/pull/16811 - as the test demonstrates there is a logic bug in the static for that code. However, we don't know how to replicate this in the wild & it's off my priority lis...I'm opening this to track https://github.com/civicrm/civicrm-core/pull/16811 - as the test demonstrates there is a logic bug in the static for that code. However, we don't know how to replicate this in the wild & it's off my priority list so let's track in gitlab
https://github.com/civicrm/civicrm-core/pull/16811https://lab.civicrm.org/dev/core/-/issues/1656Advanced Search missing 'Mailing Name' field2020-04-03T10:16:55ZwmortadaAdvanced Search missing 'Mailing Name' fieldOverview
----------------------------------------
The Advanced Search form appears to be missing the 'Mailing Name' field.
Also there is a duplicate label for 'Mailing Date'.
Reproduction steps
----------------------------------------...Overview
----------------------------------------
The Advanced Search form appears to be missing the 'Mailing Name' field.
Also there is a duplicate label for 'Mailing Date'.
Reproduction steps
----------------------------------------
1. Visit **Advanced Search**
1. Expand the **Mailings** section
1. The **Mailing Name** field is missing
Current behaviour
----------------------------------------
On CiviCRM 5.23 (and later) the **Mailing Name** field is missing:
![image](/uploads/01a1e4a4e6dfae95e9836ad86566c862/image.png)
Expected behaviour
----------------------------------------
On CiviCRM 5.13 you can select **Mailing Name** as a criteria:
![image](/uploads/eef135ccff37baa5925183251b2664f1/image.png)
Environment information
----------------------------------------
* __Browser:__ _Firefox 74.0_
* __CiviCRM:__ _Master/5.23_
* __PHP:__ _N/A_
* __CMS:__ _Drupal 7.68/WordPress 5.3_
* __Database:__ _N/A_
* __Web Server:__ _N/A_
Comments
----------------------------------------
None.5.24.0https://lab.civicrm.org/dev/core/-/issues/1655Bogus error message: "Could not identify any recipients. Perhaps the group is...2020-09-17T09:45:17Zjustinfreeman (Agileware)Bogus error message: "Could not identify any recipients. Perhaps the group is empty?" is shown when civicrm.settings.php has declared the mailing backend preferencesBogus error message: "Could not identify any recipients. Perhaps the group is empty?" is shown when civicrm.settings.php has declared the mailing backend preferences.
When mailing_backend is defined in civicrm.settings.php as follows.
...Bogus error message: "Could not identify any recipients. Perhaps the group is empty?" is shown when civicrm.settings.php has declared the mailing backend preferences.
When mailing_backend is defined in civicrm.settings.php as follows.
```
global $civicrm_setting;
$civicrm_setting['Mailing Preferences']['mailing_backend']['outBound_option'] = 'SMTP';
$civicrm_setting['Mailing Preferences']['mailing_backend']['smtpServer'] = 'ssl://association.asn.au';
$civicrm_setting['Mailing Preferences']['mailing_backend']['smtpPort'] = '465';
$civicrm_setting['Mailing Preferences']['mailing_backend']['smtpAuth'] = '1';
$civicrm_setting['Mailing Preferences']['mailing_backend']['smtpUsername'] = 'membership@association.asn.au';
```
Removing these settings and changing the mailing preferences in the UI works.
Agileware ref: CIVICRM-1452https://lab.civicrm.org/dev/core/-/issues/1654CiviCRM Event, Registration of multiple participants fails when recaptcha is ...2022-09-14T15:06:04Zjustinfreeman (Agileware)CiviCRM Event, Registration of multiple participants fails when recaptcha is enabled and successfully submitted on the initial Event registration screen.CiviCRM Event, Registration of multiple participants fails when recaptcha is enabled and successfully submitted on the initial Event registration screen.
**Steps to reproduce**
1. Create Profile "A" to be used for Event registrations
1...CiviCRM Event, Registration of multiple participants fails when recaptcha is enabled and successfully submitted on the initial Event registration screen.
**Steps to reproduce**
1. Create Profile "A" to be used for Event registrations
1. Enable Recaptcha on the Profile
1. Ensure that the Recaptcha API keys have been set
1. Set up an Event to allow multiple participants to register
1. Set Profile "A" as the Profile for both the First Registration and Additional Participants.
1. Complete the other usual Event fields and then save the Event
1. Create a test registration for the Event.
1. Set the number of additional registrations to be 2.
1. Complete the recaptcha for the first registration
1. Proceed to the additional participant screen.
1. Complete the details for the additional participant.
1. Note that there is no recaptcha shown on this screen.
1. Click the continue button.
1. CiviCRM returns the following error message:
1. "Please correct the following errors in the form fields below:
1. Please go back and complete the CAPTCHA at the bottom of this form."
1. This error is wrong. The initial recaptcha was completed, there was no recaptcha shown on the additional participant and as a result, the registration for additional participants cannot continue.
This problem has been reproduced on wpmaster.demo.civicrm.org, **CiviCRM 5.25.alpha1** and initially identified on **CiviCRM 5.21.1**
**Known workaround**
1. Use a separate Profile for the Additional Participants.
1. On this Profile, disable the Recaptcha option.
1. Additional Participants can then be registered without displaying the error message.
![Screenshot_2020-03-16_Register_Participant_2_of_4_CiviCRM_Sandbox_on_WordPress](/uploads/fe687e2561b80040c46b8e558aa26b3e/Screenshot_2020-03-16_Register_Participant_2_of_4_CiviCRM_Sandbox_on_WordPress.png)
![Screenshot_2020-03-16_Rain-forest_Cup_Youth_Soccer_Tournament_CiviCRM_Sandbox_on_WordPress_1_](/uploads/52d074c08d0ce8b070b05eaa073ea77b/Screenshot_2020-03-16_Rain-forest_Cup_Youth_Soccer_Tournament_CiviCRM_Sandbox_on_WordPress_1_.png)
Agileware Ref: CIVICRM-1451https://lab.civicrm.org/dev/core/-/issues/1653Civi::paths() - Allow bare variable lookup via getUrl/getPath2023-02-24T05:03:58ZtottenCivi::paths() - Allow bare variable lookup via getUrl/getPathOverview
----------------------------------------
The `Civi::paths()->getUrl(...)` and `Civi::paths()->getPath(...)` have a quirky interpretation of bare variable expressions (eg `getPath('[civicrm.packages]')`).
Example use-case
------...Overview
----------------------------------------
The `Civi::paths()->getUrl(...)` and `Civi::paths()->getPath(...)` have a quirky interpretation of bare variable expressions (eg `getPath('[civicrm.packages]')`).
Example use-case
----------------------------------------
```
# (A) With a file/folder/subpath
cv ev "echo Civi::paths()->getUrl('[civicrm.packages]/foo/bar');"
# (B) No slash, no dot
cv ev "echo Civi::paths()->getUrl('[civicrm.packages]');"
# (C) With a slash
cv ev "echo Civi::paths()->getUrl('[civicrm.packages]/');"
# (D) With a slash and dot
cv ev "echo Civi::paths()->getUrl('[civicrm.packages]/.');"
```
Current behavior
----------------------------------------
In scenarios (A), (C), and (D), the value of `[civicrm.packages]` is substituted. But in situation (B), it is treated as a literal file-name and given the default prefix.
```
$ cv ev "echo Civi::paths()->getUrl('[civicrm.packages]');"
http://site/[civicrm.packages]
```
Proposed behavior
----------------------------------------
All examples -- including (B) -- should do substitution.
The `Civi\Core\PathsTest` should be expanded to check scenario (B).
Comments
----------------------------------------
[Historically](https://lab.civicrm.org/dev/wordpress/issues/47#note_33046), when `getPath()`/`getUrl()` were first drafted to support expressions like `[civicrm.files]/persist/contribute`, the primary concerns were (1) backward compatibility for older absolute+relative expressions (without any `[foo]` expressions) and (2) new use-cases like (A). The `[foo]` notation was conceived as an *optional prefix* (with an *implied default*) - and not as a straight-up *variable*. And if you *just* wanted a raw variable, I'd've imagined it'd be faster to call `getVariable()` (bypass the string-munging with `getPath()` etc).
OTOH, if you learned of this API by skimming docblocks or examples (without that historical context), then it'd be natural to assume that (B) would work, and it really is a more approachable interface that way.
Strictly speaking, it is a change in the contract for an obscure edge-case: if you had a file named `/var/www/sites/default/files/civicrm/[foo]`, and if you requested `getPath('[foo]')`, then it currently resolves to the file. With this change, it would interpret `[foo]` as a variable - the variable is probably undefined, which leads to an exception. You'd have to rewrite the call as `getPath('[civicrm.files]/[foo]')`. That's an exceedingly marginal edge-case, and I don't really think it's worth preserving.https://lab.civicrm.org/dev/core/-/issues/1652Check for Change Case Type in case activity form doesn't do anything2020-03-23T20:31:56ZDaveDCheck for Change Case Type in case activity form doesn't do anythingThis isn't the thing I was looking to fix but it came up and visually/review-wise it might be easier to deal with this first.
There's a couple things wrong in this block https://github.com/civicrm/civicrm-core/blob/5.23.2/CRM/Case/Form/...This isn't the thing I was looking to fix but it came up and visually/review-wise it might be easier to deal with this first.
There's a couple things wrong in this block https://github.com/civicrm/civicrm-core/blob/5.23.2/CRM/Case/Form/Activity.php#L150-L157:
```php
if (empty($caseTypes) && ($this->_activityTypeName == 'Change Case Type') && !$this->_caseId) {
$url = CRM_Utils_System::url('civicrm/contact/view/case',
"reset=1&action=view&cid={$this->_currentlyViewedContactId}&id={$caseIds}&show=1"
);
$session = CRM_Core_Session::singleton();
$session->pushUserContext($url);
CRM_Core_Error::statusBounce(ts("You do not have any active Case Types"));
}
```
1. It's really unlikely to ever trigger. In fact I'm not sure how to make it because of the `!$this->_caseId` part. I looked back and it was added [here](https://github.com/civicrm/civicrm-svn/commit/4e7239ca9c86fba4c17725c51603a7c22eb85833#diff-cc4b397e356398c727ed7b3be9492674) but I think they meant `!empty($this->_caseId)` because `$this->_caseId` is used in the very next line (since replaced by $caseIds but it's ultimately the same thing if you look at line 130).
* So a corollary to that is that the url in the next line will have the `id=` have a blank value.
1. Even if it were to trigger, it's comparing against label (activityTypeName is really label). While "Change Case Type" is something you're unlikely to change, it would never match for non-english.
1. And while the overall intent of the check is not wrong and is better than a fatal error, I'm curious about the use-case where you've disabled all your case types but are still managing cases and wanting to change the type on a case. It obviously hasn't come up much in almost 10 years. But that's more of a sidenote.5.25.0