CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2022-06-11T14:54:48Zhttps://lab.civicrm.org/dev/core/-/issues/3581Email to activity processing: New feature to skip emails which do not have a ...2022-06-11T14:54:48ZJamie Novick - CompucoEmail to activity processing: New feature to skip emails which do not have a Case ID or Case token- As a CiviCRM administrator
- I would like to configure whether CiviCRM will process emails without a case ID (or case “token”) in the subject line
- so that I can ensure that emails which do not have a case ID are not filed on the con...- As a CiviCRM administrator
- I would like to configure whether CiviCRM will process emails without a case ID (or case “token”) in the subject line
- so that I can ensure that emails which do not have a case ID are not filed on the contact record outside the case by accident.
**How it works currently**
For those a little less familiar with email to activity processing:
CiviCRM will connect to a users MS exchange mailbox and create the following folder structure:
- Inbox
- /CiviCRM
- //CiviMail
- ///ignored
- ///processed
Notes:
- Users simply copy or move emails into the /civicrm folder in their inbox. CiviCRM has a scheduled job that can be configured to run periodically (say every hour) and poll the mailbox folder (Civimail) by IMAP in order to read and process the emails.
- By default CiviCRM will match any email from, to, cc fields to contacts in the CRM and file the email as an activity against those contacts (including recording any attachments as files).
- If however there is a case ID in the subject line (or a case ID "token"*) then CiviCRM will instead file the email straight onto the case itself. The format is: [case #1234] (see: https://issues.civicrm.org/jira/browse/CRM-21446)
- If the email is processed successfully it will be moved to the processed folder.
- If for any reason CiviCRM cannot file the email it will be moved to the ignored folder. This normally happens if the email address is invalid for some reason (please note: emails that are sent internally between staff on exchange server can sometimes have this problem as exchange doesn't always use the external email address but instead uses some local username/domain combination - this maybe something to test and see if it maybe a problem for NEU).
- Note: *When sending out emails from CiviCRM from CiviCase it appends a case ID token - which is a string of characters and not the exact Case ID. This is done to obscure the case ID number in the email. In effect you can have either this token or the case id in the subject line and CiviCRM will file the email correctly.
- More background: https://docs.civicrm.org/sysadmin/en/latest/setup/civimail/inbound/#autofiling-email-activities-via-emailprocessor
**Problem**
For multiple clients they want to use email to activity processing for their casework teams. However sometimes they forget to add the case ID to the subject line of the email and the system incorrectly files the email outside the case - which is a "security" risk as the emails can be sensitive.
As such they would like to be able to specify that the emails being filed from the casework team inbox will only be filed if there is a valid Case ID in the subject line and are skipped if not, and hence there is no risk of the email being filed outside of the case.
**Proposed improvement**
Approach:
When "Used For?" = Email to activity processing
Show an additional option:
- Skip emails which do not have a Case ID or Case token:
- Checkbox
- Help text:
- CiviCRM has functionality to file emails which contain the Case ID or Case Hash in the subject line in the format [case #1234] against a case record.
- Where the Case ID or Case Hash is not included CiviCRM will file the email against the contact record, by matching the email addresses on the email with any email addresses of Contact records in CiviCRM.
- Enabling this option will have CiviCRM skip any emails that do not have the Case ID or Case Hash so that the system will only process emails that can be placed on case records.
- Any emails that are not processed will be moved the ignored folder.
- Default null
- If checked:
- Emails which do not have a valid case ID or case token should be moved into the “ignored” folder. (See folders above) after processing and no Activity should be created.
Would be great to know if we can get the magical "concept approved" flag.
We need to work on this quite urgently so if there are no great concerns that would be much appreciated...5.31.0https://lab.civicrm.org/dev/core/-/issues/3550Email to activity processing: New feature to make the creation of new contact...2022-06-11T14:50:44ZJamie Novick - CompucoEmail to activity processing: New feature to make the creation of new contacts "optional"**User story:**
- As an administrator
- When filing inbound emails
- I would like to configure whether CiviCRM will create a new contact where a contact does not already exist within the system
- So that I can ensure that new contacts a...**User story:**
- As an administrator
- When filing inbound emails
- I would like to configure whether CiviCRM will create a new contact where a contact does not already exist within the system
- So that I can ensure that new contacts are not created in the system when filing an email.
- In the situation of a case email where the email has a valid Case ID or Case token in the subject line the email should still be filed to a case, even if no contacts are matched.
**How it works currently:**
Currently, when CiviCRM performs email to activity processing, Civi will search CiviCRM for a contact with the relevant email address in the From / To / CC fields and then assign the created activity accordingly.
When CiviCRM cannot find a contact with a relevant email address, it simply creates a new "stub" contact with the email address.
**The problem**
For multiple reasons this is might not be desirable behaviour:
This is a security risk, as in most cases CiviCRM email-activity processing works off a mailbox, that might need to be public. As such it is possible that an unscrupulous third party may chose to spam your mailbox and thus spam your CRM with unwanted emails and content. Whilst this can be mitigated by having your automated filing on a separate mailbox, it might be preferable to simply only file the emails for contacts who already exist in your system, and to selectively add the rest.
Also, from a GDPR perspective it may not be desirable to hold the details of the persons who sent an email, whilst the contents of the email might be important (i.e. the attachments) especially in a casework context.
**Proposed solution:**
Add an additional option to the email to activity processing configurations (civicrm/admin/mailSettings?action=add&reset=1)
- When "Used For?" = Email to activity processing
- Show an additional option:
- "Do not create new contacts when filing emails"
- Checkbox
- Default null
- Help:
- If this option is enabled, CiviCRM will not create new contacts when filing emails.
- The email should also always be filed as an activity.
If checked:
- When CiviCRM checks for a matching contact, if no matching contact is found it will not create one and the email is skipped
- unless the email has a valid Case ID or Case token in the subject line, in which it will still be filed against the case, but no contacts will be linked to the email.5.31.0https://lab.civicrm.org/dev/core/-/issues/3336Membership status does not get updated during membership import when status o...2022-04-22T16:17:36ZandrewcormickdockeryMembership status does not get updated during membership import when status override is setMembership statuses are not updated during import to a non-rule based status even when status override is set.
To reproduce:
1. Use Memberships/Import Memberships to import a CSV file (example below)
2. Choose Contact Type individual, ...Membership statuses are not updated during import to a non-rule based status even when status override is set.
To reproduce:
1. Use Memberships/Import Memberships to import a CSV file (example below)
2. Choose Contact Type individual, Update existing memberships
3. When choosing a field mapping, make sure to match on Membership ID, Membership Type and Membership Start Date
4. Import file should contain columns for Membership Status and Membership Status Override (in the example below, I chose a non-rule based status "Deceased" plus Membership Status Override of 1)
5. Start import. Import indicates success on the screen.
6. Check records. Note that Membership Status Override is set correctly, however the Membership Status remains at the rule-based status and is not changed to the indicated non-rule status.
Example CSV:
```
Membership ID,Member Since,Membership Start Date,Membership Type,Membership Status,Status Override,First Name,Last Name
1,2016-09-11,2016-09-11,General,Deceased,1,Iris,Lee
3,2016-09-09,2016-09-09,General,Deceased,1,Lincoln,Zope
7,2016-09-05,2016-09-05,General,Deceased,1,Ray,Jones
9,2016-09-03,2016-09-03,General,Deceased,1,Nicole,Ivanov
```
We have noticed this regression in the following Civi versions 5.28.3, 5.29.1 and 5.31.beta1. It was working as expected in Civi version 5.24.3.5.31.0https://lab.civicrm.org/dev/core/-/issues/3335Proposal on Membership Renewal form re 'fixMembershipBeforeRenew'2022-04-22T16:17:33ZeileenProposal on Membership Renewal form re 'fixMembershipBeforeRenew'When a membership is renewed via the backoffice form one step in the process is to call
CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew
This does a couple of things
1) it checks what the correct status is as of the current d...When a membership is renewed via the backoffice form one step in the process is to call
CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew
This does a couple of things
1) it checks what the correct status is as of the current date
2) if it is not 'correct' it
- changes the status
- adds a membership log
- adds an activity
- updates a parameter which tells the calling function if the membership is now current.
My belief is that this last parameter is useful to the calling function and the other steps are byproducts of shared code that may not be that relevant.
I propose we either
1) say that it is not necessary/ helpful to change the status & add the various entries in this flow OR
2) if it is useful (probably because the scheduled job didn't run) then we do it in the preProcess function rather than the post process
@andrewhunt @justinfreeman @mattwire @KarinG any opinions on ^^
(note there are some related issues that might come up - please try to add separate issues if you want to raise points outside this specific proposal)5.31.0https://lab.civicrm.org/dev/core/-/issues/3329Inherited memberships not created correctly when contact count changes.2022-04-22T16:17:19Zsamknelson@gmail.comInherited memberships not created correctly when contact count changes.(Migrating this issue from https://issues.civicrm.org/jira/browse/CRM-21463, since it's been idle there for over a year.)
Suppose you have an organization membership. Suppose the organization has 4 related contacts, each of whom inheri...(Migrating this issue from https://issues.civicrm.org/jira/browse/CRM-21463, since it's been idle there for over a year.)
Suppose you have an organization membership. Suppose the organization has 4 related contacts, each of whom inherits the membership.
Suppose you then add a related contact.
Suppose you then renew the membership.
The newly related contact does not receive the inherited membership. In fact, each time you save / update the membership, an apparently random set of 4 related contacts receives the inherited membership.
============
This turns out to be a bug in Member/BAO/Membership.php. At line 1445, we see
if ($relMembership->find(TRUE)) {
$params['id'] = $relMemIds['membership'] = $relMembership->id;
}
However, params['id'] is never initialized, so if some related memberships are not found, they are assigned the ID from the last iteration through the loop – meaning the previous contact loses their membership.
The solution is to add $params['id'] = NULL right before. (It would probably be better to set $params = NULL at the beginning of the loop, but I haven't tested that.)
I haven't submitted a patch, but it should be straightforward.5.31.0https://lab.civicrm.org/dev/core/-/issues/3252View Payment owned by Different contact on Membership and Participant View.2022-04-22T15:52:43ZsunilView Payment owned by Different contact on Membership and Participant View.Overview
----------------------------------------
Using Webform, we can set that, contribution assigned to contact A and Membership record will be assigned to Contact B and C (based on number Contact selected in webform). IF we visit the...Overview
----------------------------------------
Using Webform, we can set that, contribution assigned to contact A and Membership record will be assigned to Contact B and C (based on number Contact selected in webform). IF we visit the Membership Record of B and C, we can not see the linked Payment, because its owned by another contact. and there is NO way to check who own the payment record.
Current behaviour
----------------------------------------
Currently it does not show linked payment record if payment is not present on same contact.
Expected behaviour
----------------------------------------
Linked Payment record should show, irrespective of who own the payment record as long as payment is belong the respective Membership.
In this case, webform create membership payment link between each contact membership and contribution id in `civicrm_membership_payment` table.
As long as we have linking between membership and contribution id, then it shows linked payment on Membership View. Same apply to participant.
----------------------------------------
https://github.com/civicrm/civicrm-core/pull/182815.31.0https://lab.civicrm.org/dev/core/-/issues/3250Add custom field groups to Membership Contribution Detail report2022-04-22T15:52:41ZJonGoldAdd custom field groups to Membership Contribution Detail reportEvery other report template that has `Contact` in the `$_customGroupExtends` array also includes individual contact types - "Individual" almost always, "Organization" and "Household" where relevant.
This PR adds the contact types to the...Every other report template that has `Contact` in the `$_customGroupExtends` array also includes individual contact types - "Individual" almost always, "Organization" and "Household" where relevant.
This PR adds the contact types to the `$_customGroupExtends` array.5.31.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/2167Fulltext search drupal block has Go button on the wrong side2020-11-05T22:15:39ZDaveDFulltext search drupal block has Go button on the wrong sideThis is technically a regression from the button changes in 5.31, but everything still works.
Civi makes a drupal block available that you can place in any block region to access the fulltext search no matter what screen you're on. It h...This is technically a regression from the button changes in 5.31, but everything still works.
Civi makes a drupal block available that you can place in any block region to access the fulltext search no matter what screen you're on. It has a "Go" button that is now floating left.
I debated whether to try to fix the float or just move it to the bottom into its own buttons row. I'm leaning to moving because I believe the word "Go" was chosen to save space to fit it all on one line, but this doesn't work in all languages anyway.5.31.0https://lab.civicrm.org/dev/core/-/issues/2154Fulltext search warning about deprecated attributes to CRM_Core_Form::add()2020-10-31T01:11:48ZDaveDFulltext search warning about deprecated attributes to CRM_Core_Form::add()Search - Custom Searches - Full Text Search
The deprecated part is from the CRM_Core_Form::add() change in 5.31, but is also surfacing a bug where the intention seems to have been to make the field required but was passing it in the wro...Search - Custom Searches - Full Text Search
The deprecated part is from the CRM_Core_Form::add() change in 5.31, but is also surfacing a bug where the intention seems to have been to make the field required but was passing it in the wrong parameter.
Also the styling on the form is weird. I think it's probably from something in 5.31.5.31.0https://lab.civicrm.org/dev/core/-/issues/2149For countries without a province N/A is not accepted as a state in a profile2020-11-01T21:07:07ZStoobFor countries without a province N/A is not accepted as a state in a profileTake for example Singapore or Monaco.
A form can be submitted for the Billing Block with these Countries without a State (N/A is selected) but the same is not true for a Profile.
The attachment will illustrate.
[singapore-profile.pdf]...Take for example Singapore or Monaco.
A form can be submitted for the Billing Block with these Countries without a State (N/A is selected) but the same is not true for a Profile.
The attachment will illustrate.
[singapore-profile.pdf](/uploads/5c0f195c42c2df4329ff9a05f9559728/singapore-profile.pdf)
![singapore](/uploads/5c06891671559b82319a663823794802/singapore.png)5.31.0https://lab.civicrm.org/dev/core/-/issues/2147IN operator not working in Search2020-11-02T05:46:11ZedvanleeuwenIN operator not working in SearchOverview
----------------------------------------
When selecting multiple groups in contact search, I should get all the contacts of the groups combined. Now, only the contacts of the first group are displayed.
_If you have already post...Overview
----------------------------------------
When selecting multiple groups in contact search, I should get all the contacts of the groups combined. Now, only the contacts of the first group are displayed.
_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 **Contacts -> Search**.
1. Select **in** and choose more than one group.
1. Only the contacts of the first group chosen are displayed.
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._
When selecting multiple groups in contact search, I get only the contacts of the first group.
Expected behaviour
----------------------------------------
When selecting multiple groups in contact search, I should get all the contacts of the groups combined.
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __Browser:__ _Edge_
* __CiviCRM:__ _5.30_ <!-- If this problem relates to an upgrade, then specify both old and new versions -->
* __PHP:__ _7.4__
* __CMS:__ _Drupal 7_
* __Database:__ _MariaDB 10.4_
* __Web Server:__ _Apache 2.4_
Comments
----------------------------------------
I have verified and recreated the problem on the demo site.5.31.0https://lab.civicrm.org/dev/core/-/issues/2143Custom Searches in events fail after 5.30.x upgrade2020-10-27T02:46:00ZspalmstromCustom Searches in events fail after 5.30.x upgradeOverview
----------------------------------------
_Please describe your problem or bug in detail._
After upgrading to CiviCRM 5.30 under Joomla, event based custom searches fail with: *DB Error: value count on row* and a stack trace. I...Overview
----------------------------------------
_Please describe your problem or bug in detail._
After upgrading to CiviCRM 5.30 under Joomla, event based custom searches fail with: *DB Error: value count on row* and a stack trace. I have a development Drupal instance, but that failed to run CiviCRM after the update and I haven't managed to resolve that issue.
It is running under IIS, but we also see it under Linux.
Reproduction steps
----------------------------------------
1. Click on **Search** and select **Custom Searches**
1. Click on **Event Aggregate**
1. Select an event
1. Click **Search**
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._
Stack trace:
```
#0 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Error.php(148): CRM_Core_Error::backtrace()
#1 <Joomla directory>\administrator\components\com_civicrm\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(922): CRM_Core_Error::handle(Object(DB_Error))
#2 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB.php(997): PEAR_Error->__construct("DB Error: value count on row", -22, 16, (Array:2), "\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...")
#3 <Joomla directory>\administrator\components\com_civicrm\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(575): DB_Error->__construct(-22, 16, (Array:2), "\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...")
#4 <Joomla directory>\administrator\components\com_civicrm\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(223): PEAR::_raiseError(Object(DB_mysqli), NULL, -22, 16, (Array:2), "\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...", "DB_Error", TRUE)
#5 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB\common.php(1920): PEAR->__call("raiseError", (Array:7))
#6 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB\mysqli.php(936): DB_common->raiseError(-22, NULL, NULL, "\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...", "1136 ** Column count doesn't match value count at row 1")
#7 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB\mysqli.php(406): DB_mysqli->mysqliRaiseError()
#8 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB\common.php(1229): DB_mysqli->simpleQuery("\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...")
#9 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB\DataObject.php(2696): DB_common->query("\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...")
#10 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\DB\DataObject.php(1829): DB_DataObject->_query("\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...")
#11 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\DAO.php(445): DB_DataObject->query("\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...")
#12 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\DAO.php(1551): CRM_Core_DAO->query("\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...", TRUE)
#13 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\PrevNextCache\Sql.php(43): CRM_Core_DAO::executeQuery("\nINSERT INTO civicrm_prevnext_cache (cachekey, entity_id1, data)\n\n ...", (Array:0), FALSE)
#14 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Contact\Selector.php(1047): CRM_Core_PrevNextCache_Sql->fillWithSql("civicrm search f34df2377021b9d0d51da884d5a36bf1372d6d1cf25a00d692664ad719aadc...", "\n SELECT civicrm_participant.event_id as event_id,\n COUNT(civ...")
#15 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Contact\Selector.php(909): CRM_Contact_Selector->fillupPrevNextCache(Object(CRM_Utils_Sort), "civicrm search f34df2377021b9d0d51da884d5a36bf1372d6d1cf25a00d692664ad719aadc...", 0, 500)
#16 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Contact\Selector\Custom.php(358): CRM_Contact_Selector->buildPrevNextCache(Object(CRM_Utils_Sort))
#17 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Selector\Controller.php(402): CRM_Contact_Selector_Custom->getRows(4, 0, 50, Object(CRM_Utils_Sort), 1, NULL)
#18 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Selector\Controller.php(324): CRM_Core_Selector_Controller->getRows(Object(CRM_Contact_Selector_Controller))
#19 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Contact\Form\Search.php(867): CRM_Core_Selector_Controller->run()
#20 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Contact\Form\Search\Custom.php(157): CRM_Contact_Form_Search->postProcess()
#21 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Form.php(507): CRM_Contact_Form_Search_Custom->postProcess()
#22 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\QuickForm\Action\Refresh.php(57): CRM_Core_Form->mainProcess()
#23 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\HTML\QuickForm\Controller.php(203): CRM_Core_QuickForm_Action_Refresh->perform(Object(CRM_Contact_Form_Search_Custom), "refresh")
#24 <Joomla directory>\administrator\components\com_civicrm\civicrm\packages\HTML\QuickForm\Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Search_Custom), "refresh")
#25 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Controller.php(347): HTML_QuickForm_Page->handle("refresh")
#26 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Invoke.php(312): CRM_Core_Controller->run((Array:4), (Array:0))
#27 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Invoke.php(68): CRM_Core_Invoke::runItem((Array:12))
#28 <Joomla directory>\administrator\components\com_civicrm\civicrm\CRM\Core\Invoke.php(36): CRM_Core_Invoke::_invoke((Array:4))
#29 <Joomla directory>\administrator\components\com_civicrm\civicrm.php(121): CRM_Core_Invoke::invoke((Array:4))
#30 <Joomla directory>\administrator\components\com_civicrm\civicrm.php(40): civicrm_invoke()
#31 <Joomla directory>\libraries\src\Component\ComponentHelper.php(402): require_once("<Joomla directory>\administrator\components\com_civicrm\civicrm.php")
#32 <Joomla directory>\libraries\src\Component\ComponentHelper.php(377): Joomla\CMS\Component\ComponentHelper::executeComponent("<Joomla directory>\administrator/components/com_civicrm/civicrm.php")
#33 <Joomla directory>\libraries\src\Application\AdministratorApplication.php(101): Joomla\CMS\Component\ComponentHelper::renderComponent("com_civicrm")
#34 <Joomla directory>\libraries\src\Application\AdministratorApplication.php(159): Joomla\CMS\Application\AdministratorApplication->dispatch()
#35 <Joomla directory>\libraries\src\Application\CMSApplication.php(196): Joomla\CMS\Application\AdministratorApplication->doExecute()
#36 <Joomla directory>\administrator\index.php(51): Joomla\CMS\Application\CMSApplication->execute()
#37 {main}
```
![image](/uploads/9ddf7a4a28592eaa4e0a986960497142/image.png)
Expected behaviour
----------------------------------------
_What should happen._
Something like:
![image](/uploads/e9361b8bcdcc782ac1398f32cb7adb50/image.png)
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.30.x..._ Upgrading from _5.29.1_ <!-- If this problem relates to an upgrade, then specify both old and new versions -->
* __PHP:__ _7.3.23/7.4.11_ but probably irrelevant
* __CMS:__ _Joomla 3.9.22_ but may be irrelevant
* __Database:__ _MySQL 5.6.40-84.0-log/MySQL 5.7.31-log..._ but probably irrelevant
* __Web Server:__ _Apache/IIS_ but probably irrelevant.
Comments
----------------------------------------
_Anything else you would like the reviewer to note._
I have been attempting to research this, and it appears to be related to how CiviCRM is trying to populate civicrm_prevnext_cache where for the event based searches it is trying to add the wrong number of values. I am reporting it in case someone has a quick fix for the issue.5.31.0https://lab.civicrm.org/dev/core/-/issues/2136Drupal 7 + 9 Groups dont show in edit with version 5.30.12020-10-22T23:29:16ZRar9Drupal 7 + 9 Groups dont show in edit with version 5.30.1![Screenshot_10](/uploads/891ee92f4baa04a58639b60eddc4a7f4/Screenshot_10.jpg)
On from 5.29. to 5.30.0 groups where showing with extra SPAN https://lab.civicrm.org/dev/core/-/issues/2105
Now with last 5.30.1 version the Group keep load...![Screenshot_10](/uploads/891ee92f4baa04a58639b60eddc4a7f4/Screenshot_10.jpg)
On from 5.29. to 5.30.0 groups where showing with extra SPAN https://lab.civicrm.org/dev/core/-/issues/2105
Now with last 5.30.1 version the Group keep loading and dont display at all anymore.
This is valid for druapl 7 php 7.3x and drupal 9 php 7.4x5.31.0https://lab.civicrm.org/dev/core/-/issues/2118All my newly created contacts are from Afghanistan2020-10-15T19:10:45ZDaveDAll my newly created contacts are from AfghanistanSeems unlikely to be a coincidence.
Must be something recent in 5.31/master with the country dropdown. Can confirm it does not happen in 5.30.
It only happens if you have no default country set at civicrm/admin/setting/localization?res...Seems unlikely to be a coincidence.
Must be something recent in 5.31/master with the country dropdown. Can confirm it does not happen in 5.30.
It only happens if you have no default country set at civicrm/admin/setting/localization?reset=1
Simply go to create a contact and expand the address section. Afghanistan is now selected and the country field is required.5.31.0https://lab.civicrm.org/dev/core/-/issues/2108Deprecation warnings when making thank-you letters2020-10-13T23:10:13ZDaveDDeprecation warnings when making thank-you lettersIn 5.31 and master only:
In a [recent commit](https://github.com/civicrm/civicrm-core/pull/17675/files#diff-f9397c2b103c68ffb588679b5d4784a2R377) you can no longer pass attributes to CRM_Core_Form::add() as a string. The PDF letters sti...In 5.31 and master only:
In a [recent commit](https://github.com/civicrm/civicrm-core/pull/17675/files#diff-f9397c2b103c68ffb588679b5d4784a2R377) you can no longer pass attributes to CRM_Core_Form::add() as a string. The PDF letters still do this though, so you get warnings like `User deprecated function: Attributes passed to CRM_Core_Form::add() are not an array. Array ( [civi.tag] => deprecated ) in CRM_Core_Error_Log->log() (line 58 of .../sites/all/modules/civicrm/CRM/Core/Error/Log.php)`.
These lines:
* CRM\Core\Form\Task\PDFLetterCommon.php(55)
* CRM\Core\Form\Task\PDFLetterCommon.php(71)
* CRM\Contribute\Form\Task\PDFLetter.php(100)
Also, I understand why it's a warning, just since it swallows the backtrace you then need to edit [the line in CRM_Core_Form](https://github.com/civicrm/civicrm-core/blob/8e499926de4a31182f3e8007789c325647417a16/CRM/Core/Form.php#L377) to log a backtrace instead to find the actual problem (in case others are also seeing similar warnings now and trying to track it down).5.31.0https://lab.civicrm.org/dev/core/-/issues/2096Creating new event without email fails2020-10-08T19:41:38Zaydunsaidan.saunders@squiffle.ukCreating new event without email failsOverview
----------------------------------------
Creating a new event without an email produces `Mandatory values missing from Api4 Email::save: email` failure
Reproduction steps
----------------------------------------
1. Click on **E...Overview
----------------------------------------
Creating a new event without an email produces `Mandatory values missing from Api4 Email::save: email` failure
Reproduction steps
----------------------------------------
1. Click on **Events -> New Event**.
1. Enter mandatory fields **Event Type**, **Default Role**, **Event Title** and **Start** and click **Continue**.
1. Observe Email is not required
1. Click **Save and Done**
Current behaviour
----------------------------------------
Error: `Mandatory values missing from Api4 Email::save: email`
Expected behaviour
----------------------------------------
No error!
Environment information
----------------------------------------
* __CiviCRM:__ _Master_
Comments
----------------------------------------
Verified on dmaster5.31.0https://lab.civicrm.org/dev/core/-/issues/2093Undefined index 'class' on new individual form2020-10-06T23:51:30ZDaveDUndefined index 'class' on new individual formIt's probably not limited to new individual, but [this recent commit](https://github.com/civicrm/civicrm-core/commit/4367e9641356b13764aceb289c46b6023c6c6bb8#diff-bdea9a3ec62827e6c90a70202ea9f7ccR797) added a line that generates the noti...It's probably not limited to new individual, but [this recent commit](https://github.com/civicrm/civicrm-core/commit/4367e9641356b13764aceb289c46b6023c6c6bb8#diff-bdea9a3ec62827e6c90a70202ea9f7ccR797) added a line that generates the notice:
`$fieldAttributes['class'] .= ltrim($fieldAttributes['class'] ?? '' . ' crm-select2');`
You can't use `.=` if the variable isn't set yet, so this gives a red error box on the form. I thought I had written a test to catch generic red boxes on New Individual but maybe it's not a complete test.
Also while it ends up not mattering here, on the right-hand-side personally I think it's best to use brackets to be clear when using `??` and `.` at the same time, since the `.` ends up winning and can sometimes be a sneaky bug.5.31.0https://lab.civicrm.org/dev/core/-/issues/2090Undefined index on contact's activity tab when there's an activity that has n...2020-10-03T23:07:08ZDaveDUndefined index on contact's activity tab when there's an activity that has no With ContactYou can't see the error because ajax swallows it, but you can:
1. Install the [loudnotices](https://lab.civicrm.org/extensions/loudnotices) extension.
2. Create an activity and leave the With Contact blank.
3. Visit the contact's activi...You can't see the error because ajax swallows it, but you can:
1. Install the [loudnotices](https://lab.civicrm.org/extensions/loudnotices) extension.
2. Create an activity and leave the With Contact blank.
3. Visit the contact's activity tab. It will hang.
4. Look in ConfigAndLog and you'll see the error/backtrace.
PR coming.5.31.0https://lab.civicrm.org/dev/core/-/issues/2087Remove extraneous UF match queries2020-10-07T19:48:51ZeileenRemove extraneous UF match queries
When calling contact.create the sequence is
1) create/ edit the contact
2) do any email adds / deletes requested - this requires
- if a primary email is added/ altered update the uf_name
3) update the the uf name
Within update the ...
When calling contact.create the sequence is
1) create/ edit the contact
2) do any email adds / deletes requested - this requires
- if a primary email is added/ altered update the uf_name
3) update the the uf name
Within update the uf name there are 2 queries to see if the update is needed
1) check if they have a primary address
2) check if they have a uf match
**Proposal**
1) Remove the update from Contact.create since it is done in Email.create
2) Add the update into Email.delete when promoting another email
3) check for uf_match before has primary when doing uf match
Sub-pr of #20335.31.0https://lab.civicrm.org/dev/core/-/issues/2084Address extraneous UF Match queries2020-10-07T19:48:34ZeileenAddress extraneous UF Match queriesI a typical contact create UFMatch::updateUFName is called once in contact create & once in Email.create. This former call is unnecessary as the email creation passes through the second.
Also we could check if UF match exists before che...I a typical contact create UFMatch::updateUFName is called once in contact create & once in Email.create. This former call is unnecessary as the email creation passes through the second.
Also we could check if UF match exists before checking if the email is primary and potentially reduce that query too - this could eliminate 3 queries per contact create (if no uf_match is found, or 2 if it is) fairly easily.
It would also be possible but more complex / less likely to reduce queries to see if the primary email is actually changing at the php layer before altering.5.31.0