Development issueshttps://lab.civicrm.org/groups/dev/-/issues2020-08-06T23:07:08Zhttps://lab.civicrm.org/dev/core/-/issues/1895Advanced Search (search by complete or partial name) returns all contacts2020-08-06T23:07:08ZspalmstromAdvanced Search (search by complete or partial name) returns all contactsOverview
----------------------------------------
_Please describe your problem or bug in detail._
_If you have already posted on https://civicrm.stackexchange.com or https://chat.civicrm.org, please include the link to that conversatio...Overview
----------------------------------------
_Please describe your problem or bug in detail._
_If you have already posted on https://civicrm.stackexchange.com or https://chat.civicrm.org, please include the link to that conversation._
Reproduction steps
----------------------------------------
1. Click on **Advanced Search**.
1. Click on **(search by complete or partial name)**.
1. Two boxes appear.
![image](/uploads/926f85f696d68ceea30dda0da05b4747/image.png)
1. Enter something in one of the boxes and click **Search**
![image](/uploads/ba3cd0bf8fc66fac7ba4882d22106b8c/image.png)
Current behaviour
----------------------------------------
_What happens currently. Please provide error messages, screenshots or gifs ([LICEcap](http://www.cockos.com/licecap/), [SilentCast](https://github.com/colinkeenan/silentcast)) where appropriate._
All contacts appear. Note *Accounts* are actually in trash in my test data set.
![image](/uploads/44f942bee2816908afb8be7ecec0a94d/image.png)
Expected behaviour
----------------------------------------
_What should happen._
Only contacts meeting the criteria should appear.
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 necessary. -->
* __Browser:__ _Edge, but probably irrelevant_
* __CiviCRM:__ _5.29 alpha1, but also seen in 5.27.2_ <!-- If this problem relates to an upgrade, then specify both old and new versions -->
* __PHP:__ _7.4, but probably irrelevant.__
* __CMS:__ _Joomla 3.9.5 but probably irrelevant_
* __Database:__ _MySQL 5.7.30 but probably irrelevant._
* __Web Server:__ _IIS, but also seen under Apache. Probably irrelevant.._
Comments
----------------------------------------
_Anything else you would like the reviewer to note._
1. If **Search in Trash** is ticked, all Trash entries are returned.
1. When you click on **Edit Search Criteria** and repeat the above process, the boxes are blank.5.29.0https://lab.civicrm.org/dev/core/-/issues/1675Adding a timeline to a case doesn't get the last activity in the timeline right2020-08-07T03:09:34ZDaveDAdding a timeline to a case doesn't get the last activity in the timeline rightI can see it working in 5.20 and 5.22, not working in 5.23/5.24/master, so stopped working in 5.23. Not sure why yet.
1. Edit a case type and click add at the far right and from the dropdown choose timeline.
1. Add some activity to the ...I can see it working in 5.20 and 5.22, not working in 5.23/5.24/master, so stopped working in 5.23. Not sure why yet.
1. Edit a case type and click add at the far right and from the dropdown choose timeline.
1. Add some activity to the timeline config. Doesn't really matter what, let's say a meeting at 7 days offset from case start.
1. Save.
1. Create a case of that type.
1. Click add timeline, in the middle of the manage case screen. Choose the timeline you added earlier. If you forgot to give it a title it will just be called "Timeline". The title doesn't make a difference here.
1. It appears to succeed but it also appears as if no activities are added to the case. The activity has been added, but it's on the non-case side and you can see it on the client's regular activity tab.
1. If you have multiple activities in the timeline then it will add all except the last one to the case, and the last one will be on the non-case side.5.24.0https://lab.civicrm.org/dev/core/-/issues/1695Upgrading to 5.24.1 custom field not saved for Case when submitted from webform2020-08-07T03:09:34ZPradeep Nayakpradpnayak@gmail.comUpgrading to 5.24.1 custom field not saved for Case when submitted from webformTo Replicate:
Create a webform and enable civicase with custom field. After submitting the webform a new case is created but the custom fields are blank.
This was working until 5.22.x and than update to DB/ packages in 5.23 broke this f...To Replicate:
Create a webform and enable civicase with custom field. After submitting the webform a new case is created but the custom fields are blank.
This was working until 5.22.x and than update to DB/ packages in 5.23 broke this functionality. This cannot be replicated when case is created from UI but can be replicated by writing code eg
```
$result = civicrm_api3('Case', 'create', [
'contact_id' => 202,
'case_type_id' => "housing_support",
'subject' => "test",
])['id'];
$cust = array(
'19' => array(
'-1' => array(
'id' => '',
'value' => '344',
'type' => 'Money',
'custom_field_id' => '19',
'custom_group_id' => '13',
'table_name' => 'civicrm_value_reportable_co_13',
'column_name' => 'reportable_cost_19',
'file_id' => '',
'is_multiple' => '0',
)
)
);
CRM_Core_BAO_CustomValueTable::store($cust, 'civicrm_case', $result);
```
Digging into the code found that the entry civicrm_value_reportable_co_13 table does get created but isn't shown. I guess this is because the transaction is started but not committed. Below patch fixes my problem (which removes Transaction code) but I guess its not ideal solution.
```
diff --git a/Civi/CCase/Events.php b/Civi/CCase/Events.php
index 114875f17e..f76c92c267 100644
--- a/Civi/CCase/Events.php
+++ b/Civi/CCase/Events.php
@@ -78,12 +78,10 @@ class Events {
public static function fireCaseChangeForRealz($caseIds) {
foreach ((array) $caseIds as $caseId) {
if (!isset(self::$isActive[$caseId])) {
- $tx = new \CRM_Core_Transaction();
self::$isActive[$caseId] = 1;
$analyzer = new \Civi\CCase\Analyzer($caseId);
\CRM_Utils_Hook::caseChange($analyzer);
unset(self::$isActive[$caseId]);
- unset($tx);
}
}
}
```5.24.2https://lab.civicrm.org/dev/drupal/-/issues/91Drupal8: Buggy behavior if user account is created without email address2020-08-07T03:28:13ZJonGoldDrupal8: Buggy behavior if user account is created without email addressIn Drupal 8, the email address isn't a required field. However, if an email address isn't specified, then the `civicrm_uf_match` record isn't created, the corresponding CiviCRM contact isn't created, and this leads to some very buggy be...In Drupal 8, the email address isn't a required field. However, if an email address isn't specified, then the `civicrm_uf_match` record isn't created, the corresponding CiviCRM contact isn't created, and this leads to some very buggy behavior, such as the dashboard showing multiple dashboards (see https://lab.civicrm.org/dev/drupal/issues/54#note_23706), which I imagine is because `civicrm_dashboard_contact` is being queried by contact ID, and finding none, simply loads all dashlets for all users.
I think the correct way to handle this is to use a Drupal hook to make the email address required.5.29.0https://lab.civicrm.org/dev/drupal/-/issues/39Drupal8: remove Views code from core2020-08-07T03:28:13ZbgmDrupal8: remove Views code from coreAs per #28, we should remove the Views code from `civicrm-drupal-8` and instead recommend [civicrm_entity](https://www.drupal.org/project/civicrm_entity/) / [on github](https://github.com/eileenmcnaughton/civicrm_entity).As per #28, we should remove the Views code from `civicrm-drupal-8` and instead recommend [civicrm_entity](https://www.drupal.org/project/civicrm_entity/) / [on github](https://github.com/eileenmcnaughton/civicrm_entity).5.23.0https://lab.civicrm.org/dev/drupal/-/issues/4Use `civicrm-setup` to handle installation2020-08-07T03:28:13ZtottenUse `civicrm-setup` to handle installation**Background**: During installation, one must check system-requirements, populate database, etc. To do this, the Drupal 8 integration currently calls some functions from `install/`.
However, the functions in the `install/` folder are t...**Background**: During installation, one must check system-requirements, populate database, etc. To do this, the Drupal 8 integration currently calls some functions from `install/`.
However, the functions in the `install/` folder are too narrowly crafted -- we don't have much ability to add/change/rearrange/remove installer steps. [civicrm-setup](https://civicrm.org/blog/totten/developers-revising-the-civicrm-installer-library-cli-wordpress) aims to redress that limitation and make it easier to iterate on the installer. For any new distribution channels (like D8), we should call `civicrm-setup`.
__Tasks__:
* __(a)__ `civicrm.drush.inc`: The function `drush_civicrm_install()` must use the `civicrm-setup` API (eg `installFiles()`, `installDatabase()`).
* __(b)__ `civicrm.install`: The function `civicrm_install()` must use setup API (eg `installFiles()`, `installDatabase()`).
* __(c)__ `civicrm.install`: The function `civicrm_requirements()` should use the setup API (eg `checkRequirements`, `checkAuthorized`).D8 General Availabilityhttps://lab.civicrm.org/dev/drupal/-/issues/107Drupal8: Cannot use CiviCRM after installation. Must logout/login.2020-08-07T03:28:13ZtottenDrupal8: Cannot use CiviCRM after installation. Must logout/login.Overview
----------------------------------------
After performing the installation of Civi-D8, all potential Civi users need to logout/login - otherwise they will get weird error messages.
This issue was previously reported by Mark Ha...Overview
----------------------------------------
After performing the installation of Civi-D8, all potential Civi users need to logout/login - otherwise they will get weird error messages.
This issue was previously reported by Mark Hanna in JIRA as https://issues.civicrm.org/jira/browse/CRM-19878 and it seems to have gotten dropped in the JIRA/Gitlab transition.
Reproduction steps
----------------------------------------
1. Setup a D8 site - include the CiviCRM code but *do not* activate it yet
* I used `civibuild`'s `d8prj-re` type but hacked the `app/config/d8prj-re/install.sh` to skip CiviCRM installation
2. Login to the web UI
3. Activate the `civicrm` module
4. Navigate to `/civicrm/dashboard`
Current behaviour
----------------------------------------
The screen displays an error:
> Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing
> DB Constraint Violation - contact_id should possibly be marked as mandatory for DashboardContact,create API. If so, please raise a bug report.
This is because the currently logged-in user does not have a synchronized contact record (i.e. nothing in `civicrm_uf_match`).
The current work-around is to use out-of-band docs (ex: [roundearth/drupal-civicrm-project README](https://gitlab.com/roundearth/drupal-civicrm-project#installing-civicrm)) and tell the admin to logout/login.
Expected behaviour
----------------------------------------
The record in `civicrm_uf_match` should be auto-created.
In D7, it does so. It's implemented by way of `civicrm_invoke()` which makes a call to `CRM_Core_BAO_UFMatch::synchronize(...)`. To wit: if you try to access any CiviCRM-based pages, then it will first check that *your user account* is synchronized.
Comments
----------------------------------------
The D8 module does do some user/contact synchronization, but only in a narrower range of cases (e.g. on-login). This is why the logout/login work-around helps.
Hypothetically, one could add a patch to the installer to trigger the sync for the current-user, but I think D7's approach is generally more robust. The former case would still be tempermental if (a) there are concurrent Drupal sessions for people who will have access to Civi or (b) you're loading DB snapshots (for dev/test or backup-restoration) in which the user/contact have not yet been sync'd.
5.24.0https://lab.civicrm.org/dev/wordpress/-/issues/66[civicrm.files] token doesn't work in some cases since 5.272020-08-08T00:27:09Zseamuslee[civicrm.files] token doesn't work in some cases since 5.27Broadly there have been 2 reports 1 from gharris in mattermost and also @justinfreeman has reported issues on a site where the usage of `[civicrm.files]` token in the urls broke the site (likely extension related)
I proposed this https:...Broadly there have been 2 reports 1 from gharris in mattermost and also @justinfreeman has reported issues on a site where the usage of `[civicrm.files]` token in the urls broke the site (likely extension related)
I proposed this https://github.com/civicrm/civicrm-core/pull/17868 as a fix but not likely to get merged
@haystack @kcristiano
@totten suggested that sites affected run the following script locally https://gist.github.com/totten/5997ff53088b159e7275f761e52f9516 and reporting the findings back
Edit by kcristiano steps to reproduce:
- Have a WP CiviCRM on a version <= 5.26.2
- use the 'legacy' files location `/wp-content/plugins/files/civicrm`
- use `[civicrm.files]` in Resource URL and directory UI screens (as these will be saved in `civicrm_settings`)
- Upgrade to 5.27.x
After upgrade `[civicrm.files]` resolves to `/wp-content/uploads/civicrm`
Work around is to set the Resource URLs and Directories to the legacy locations in the UI screens or in overrides in `civicrm.settings.php`5.27.4https://lab.civicrm.org/dev/core/-/issues/1935Contribution Pages with On Behalf of Organization profile enabled stop workin...2020-08-08T16:09:03ZKarinGContribution Pages with On Behalf of Organization profile enabled stop working in ESR 5.27.4 [Regression]Upgrading from 5.21.3 (previous ESR) to 5.27.4 (current ESR).
**To reproduce:**
Enable the checkbox "Allow individuals to contribute and / or signup for membership on behalf of an organization" in the Contribution Page settings:
![image...Upgrading from 5.21.3 (previous ESR) to 5.27.4 (current ESR).
**To reproduce:**
Enable the checkbox "Allow individuals to contribute and / or signup for membership on behalf of an organization" in the Contribution Page settings:
![image](/uploads/6583b87856bc1ea6f1d22446686b7fb6/image.png)
**Problem:**
Visit Contribution Page + do NOT select to make an On Behalf of Contribution - pick your amounts, fill in card details and then click Review Contribution button at the bottom of the form:
Nothing happens; no error message. Just a non-responsive button.
**Digging in:** opening up the On Behalf of Contribution (after clicking Review Contribution button and nothng happening):
![image](/uploads/56551687401cae077e82ec64fdf837d6/image.png)
**Conclusion** -> Province/State is required even if this On Behalf of section is hidden.
**Quick Workaround:** in Localization -> set a default Province.
Solution @seamuslee -> see https://chat.civicrm.org/civicrm/pl/ehfq919d4jb6mk4yfmmy13mtgr
This fix was not backported to 5.27.x yethttps://lab.civicrm.org/dev/core/-/issues/1939$crazy_null assignment in DB_DataObject has a typo that makes it crazier2020-08-10T13:39:22ZDaveD$crazy_null assignment in DB_DataObject has a typo that makes it crazierhttps://github.com/civicrm/civicrm-packages/blob/02e7eaa0a2aa072a032afff8179f6c26c1ad87b3/DB/DataObject.php#L4936
`strtolower($options['disable_null_strings'] === 'full')`
It should be
`strtolower($options['disable_null_strings']) ===...https://github.com/civicrm/civicrm-packages/blob/02e7eaa0a2aa072a032afff8179f6c26c1ad87b3/DB/DataObject.php#L4936
`strtolower($options['disable_null_strings'] === 'full')`
It should be
`strtolower($options['disable_null_strings']) === 'full'`
Is DB_DataObject still being updated upstream? I can't find a recent repo. Although I don't think this bug ever comes up in practice how it's used in civi.https://lab.civicrm.org/dev/core/-/issues/1943Fix : Enable Drupal Watchdog Logging for Drupal 82020-08-10T21:07:07ZsunilFix : Enable Drupal Watchdog Logging for Drupal 8Overview
----------------------------------------
Currently We have Setting to log CiviCRM Error Log to Drupal Access Log, but functionality in code is not present.
Current behaviour
----------------------------------------
Code not pre...Overview
----------------------------------------
Currently We have Setting to log CiviCRM Error Log to Drupal Access Log, but functionality in code is not present.
Current behaviour
----------------------------------------
Code not present of Functionality present at /civicrm/admin/setting/debug?reset=1, `Enable Drupal Watchdog Logging`
Proposed behaviour
----------------------------------------
After changes, it will start logging into Drupal log if `Enable Drupal Watchdog Logging` is enabled.
https://github.com/civicrm/civicrm-core/pull/181155.30.0https://lab.civicrm.org/dev/core/-/issues/560Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception2020-08-11T09:02:23ZeileenReplace all instances of CRM_Core_Fatal with throw new CRM_Core_ExceptionWe moved to an exception framework around 4.2 ish and have been removing instances of CRM_Core_Fatal in favour of throwing exceptions slowly ever since. Exceptions are better for testing, drush commands and code predictability.
So far w...We moved to an exception framework around 4.2 ish and have been removing instances of CRM_Core_Fatal in favour of throwing exceptions slowly ever since. Exceptions are better for testing, drush commands and code predictability.
So far we have had no regressions over probably hundreds of changes on this - perhaps we should get a bit more aggressive / pro-active on thishttps://lab.civicrm.org/dev/core/-/issues/1137Feature Request: Ability to enable SSL for database connection.2020-08-11T09:02:23ZtodddFeature Request: Ability to enable SSL for database connection.As far as I can tell, there is no way within civicrm core to enable SSL connections to a remote database. This would be a major concern for anyone running CiviCRM with separate web and database servers. I've 'solved' this issue for mys...As far as I can tell, there is no way within civicrm core to enable SSL connections to a remote database. This would be a major concern for anyone running CiviCRM with separate web and database servers. I've 'solved' this issue for myself by making the changes to civicrm/civicrm/packages/DB/common.php and civicrm/civicrm/packages/DB/mysqli.php detailed [here](https://civicrm.stackexchange.com/questions/31422/ssl-encypted-database-connection-for-civicrm), but it's rather sloppy and may need to be re-done after an update. Would be very useful to be able to set a flag within civicrm.settings.php (or even the initial install page) to enable SSL.5.29.0https://lab.civicrm.org/dev/core/-/issues/571Can't self-service cancel a recurring contribution made while you're logged in2020-08-12T12:19:57ZJonGoldCan't self-service cancel a recurring contribution made while you're logged inThe self-service recurring payment page is accessible either a) with a checksum, b) if you have "Edit contributions" permission ([code here](https://github.com/civicrm/civicrm-core/blob/master/CRM/Contribute/Form/CancelSubscription.php#L...The self-service recurring payment page is accessible either a) with a checksum, b) if you have "Edit contributions" permission ([code here](https://github.com/civicrm/civicrm-core/blob/master/CRM/Contribute/Form/CancelSubscription.php#L108-L115)).
However, if you're logged in when you create a recurring contribution, the email you receive doesn't contain a checksum ([code here](https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/Payment.php#L1516)). So users without "Edit contributions" permission can't cancel their subscriptions.
I think the implication of allowing a user to cancel their payment via checksum is that we should also allow a user to cancel if the logged-in contact ID matches the contact ID of the recurring contribution. This would also mean on systems where users are logged in, you would have the added benefit of not worrying about expired checksums.
Is there any scenario in which we shouldn't allow a user to cancel a recurring subscription they "own"? If not I'll submit a PR.5.13.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/1077Make report listing actions links hookable2020-08-12T14:56:34ZyashodhaMake report listing actions links hookableMake report listing actions hookable. All the other action links in CRM are exposed to links hook.
![report_action](/uploads/0163d968e46b47ae3fbe41bdf96e7875/report_action.png)Make report listing actions hookable. All the other action links in CRM are exposed to links hook.
![report_action](/uploads/0163d968e46b47ae3fbe41bdf96e7875/report_action.png)yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/1944Add new columns to mailing summary report2020-08-12T18:22:51ZyashodhaAdd new columns to mailing summary reportAdd new columns to mailing summary report
- Sender name
- Sender emailAdd new columns to mailing summary report
- Sender name
- Sender email5.30.0yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/1804Dev digest2020-08-13T00:02:13ZeileenDev digestI've been thinking there are a few updates that I should email the dev list about. I decided to add an issue here for my evolving draft / notes rather than in my email so others might add things too.
So far I have
- the update on fata...I've been thinking there are a few updates that I should email the dev list about. I decided to add an issue here for my evolving draft / notes rather than in my email so others might add things too.
So far I have
- the update on fatal -https://lab.civicrm.org/dev/core/-/issues/560
- the processor work
- end of mysql reminder
- tag search
(links to come)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/core/-/issues/1913Add in hook to allow for altering of Profile Schemas2020-08-13T00:10:00ZseamusleeAdd in hook to allow for altering of Profile SchemasOverview
----------------------------------------
in 5.24.0 a new hook was added in that allowed for extensions to modify which fields can be added to Profiles https://github.com/civicrm/civicrm-core/pull/16655 However that didn't extend...Overview
----------------------------------------
in 5.24.0 a new hook was added in that allowed for extensions to modify which fields can be added to Profiles https://github.com/civicrm/civicrm-core/pull/16655 However that didn't extend to what fields can be available within the profile editing modal / schemas.
I propose a new hook profileSchemas which would allow extensions to modify the profileSchemas used in the backbone.marionette modal5.30.0https://lab.civicrm.org/dev/civicrm-asset-plugin/-/issues/10Deprecation notice2020-08-13T00:12:17ZKarinGDeprecation noticeDeprecation Notice: Array and string offset access syntax with curly braces is deprecated in /var/www/drupal/vendor/civicrm/civicrm-asset-plugin/src/AbstractAssetRule.php:225
Complaining about:
```php
$isAbsolute = ($len > 0 && $pa...Deprecation Notice: Array and string offset access syntax with curly braces is deprecated in /var/www/drupal/vendor/civicrm/civicrm-asset-plugin/src/AbstractAssetRule.php:225
Complaining about:
```php
$isAbsolute = ($len > 0 && $path{0} === '/') || ($len > 1 && $path{1} === ':');
```KarinGKarinG