Development issueshttps://lab.civicrm.org/groups/dev/-/issues2022-07-05T20:39:56Zhttps://lab.civicrm.org/dev/core/-/issues/3660When upgrading an extension to use mixins, existing managed entities get deleted2022-07-05T20:39:56ZcolemanwWhen upgrading an extension to use mixins, existing managed entities get deletedI noticed while working on https://github.com/systopia/de.systopia.eck/pull/53/commits/66e1be252f3743aad35c3d028b628f3ea721948d that when switching from the master branch (without mixins) to the working branch (with mixins) that upon cle...I noticed while working on https://github.com/systopia/de.systopia.eck/pull/53/commits/66e1be252f3743aad35c3d028b628f3ea721948d that when switching from the master branch (without mixins) to the working branch (with mixins) that upon clearing caches all managed entities would be deleted and recreated.
In some cases that's not a big deal, but in this case it's quite a problem because of cascading deletes. The option group is a managed entity, so all user-created option values get destroyed in the process!
It must be an order-of-operations thing, where the managed entities get reconciled *before* the `info.xml` file gets scanned for mixins.tottentottenhttps://lab.civicrm.org/dev/core/-/issues/3659APIv4 Contact.get - include email, phone, address?2023-01-04T23:44:25Zaydunsaidan.saunders@squiffle.ukAPIv4 Contact.get - include email, phone, address?# Suggestion/Discussion
Many times when creating a SearchKit search, I want a contact's email and phone. That requires joining on the email and phone entities.
1. that's dull and repetitive for such a common requirement
1. for end-user...# Suggestion/Discussion
Many times when creating a SearchKit search, I want a contact's email and phone. That requires joining on the email and phone entities.
1. that's dull and repetitive for such a common requirement
1. for end-users or newcomers to SK, they either don't find how to do it, or they do and it looks excessively complicated and off-putting for something so basic
In APIv3, `Contact.get` includes the primary email, phone and address.
Without polluting APIv4 with lots of special cases, I wonder whether it is worth making an exception for email and phone and returning those fields in APIv4 `Contact.get` Maybe also the address fields, but for me, that comes up less frequently.https://lab.civicrm.org/dev/core/-/issues/3658Custom data type grouping mismatch2022-07-08T04:55:03ZPradeep Nayakpradpnayak@gmail.comCustom data type grouping mismatchHi @colemanw
Have two instance, after running below api from the explorer get different output
$result = civicrm_api3('OptionValue', 'get', [
'sequential' => 1,
'return' => ["grouping", "label"],
'option_group_id' => "custom_dat...Hi @colemanw
Have two instance, after running below api from the explorer get different output
$result = civicrm_api3('OptionValue', 'get', [
'sequential' => 1,
'return' => ["grouping", "label"],
'option_group_id' => "custom_data_type",
]);
1. Fresh Install 5.50.2
![Screenshot_2022-06-16_at_13.21.01](/uploads/3c8bb4654229b36072759f1f31e11f25/Screenshot_2022-06-16_at_13.21.01.png)
2. Upgraded CiviCRM to 5.46 to 5.50.2
![Screenshot_2022-06-16_at_13.21.08](/uploads/deb4268e0f87d547d7eba38c2ce9d216/Screenshot_2022-06-16_at_13.21.08.png)
The grouping is missing on fresh install (can replicate on dmaster as well)
PR: https://github.com/civicrm/civicrm-core/pull/23336
The PR does have upgrade code but not generated mysql file for install.5.51.0colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3657Crash importing contacts using 5.51 beta2022-06-17T02:37:42ZAndy ClarkCrash importing contacts using 5.51 betaUsing a simple test file on nightly 5.51 build of 16/6 contact import crashes when hitting 'Continue' on first screen. Screen shot attached. Same thing happened on previous nightly build. Test system was on 5.49.5 prior to that and went...Using a simple test file on nightly 5.51 build of 16/6 contact import crashes when hitting 'Continue' on first screen. Screen shot attached. Same thing happened on previous nightly build. Test system was on 5.49.5 prior to that and went through upgrade to 5.51 beta OK. System is Drupal 7 based. ![screenshot_20220616_094041](/uploads/6d06bb10cbb1a2827829e15fe96cc8a8/screenshot_20220616_094041.png)https://lab.civicrm.org/dev/core/-/issues/3656Unhide message admin UI core extension2024-03-02T05:03:27ZeileenUnhide message admin UI core extensionThe message admin UI core extension is intended as a replacement for the core Message templates screens - as part of our process of deprecating the core screens through extensions. Currently it ships hidden
I'm creating this to get the ...The message admin UI core extension is intended as a replacement for the core Message templates screens - as part of our process of deprecating the core screens through extensions. Currently it ships hidden
I'm creating this to get the steps to unhide the core message template admin UI.
The key reason it is still hidden is that it provides the opportunity to create translated versions of core workflow message templates - but core still does not send them out.
So we need to clarify what needs to be done to fill that gap - checklist first, then discussion
- [ ] Add a new `formatLocale` allowing this to be toggled separately to `tsLocale` - we already do this via a setting
- [ ] Add Subscriber for Translate to load a translation on `get` calls &, if available, change `formatLocale` and probably `tsLocale` (current use cases do not require the `tsLocale` change but that 'feels right')
- [ ] Language variant translations should load if available
- [ ] Add `setLanguage` to the `GenericTrait`
- [ ] Within `MessageTemplate.render` load the contact's preferred language & use `setLanguage` if not null.
- [ ] Within the message template UI ensure the `formattingLocale` is set when rendering
- [ ] Allow WorkflowMessageTemplates to be found from outside core - this is just a case of expanding the file search for them which we left tight to start with
- [ ] Message admin UI doesn't show the tokens available to it (even though they should be able to be determined.) It DOES show mailing ones - odd
**Rendering**
This is the key issue - when the `render` function is called in `sendMessageTemplate` (which is used to send out workflow emails within core) it needs to load the contact's language and call `setLanguage`. The responsibility for handling `setLanguage` is then on the `Translation` entity - which should ONLY take action if it can find a usable translation (this means we are not faffing with format localisation if we are not doing anything else) and it should change `formatLocale` (new) at that point and probably `tsLocale`.
Note that this means
- We are retrieving translations under `get` circumstances but they are not used in `where` or other clauses - the usage is for when the calling class does not know if a translation is in place
***Interaction with existing api code***
Currently the ` DAOActionTrait` implements `setLanguage`. When used the `I18nSubscriber` kicks in and calls `setLocale` which then
- if the site is NOT mutli-language it does NOTHING
- if the site IS multi-language then it either throws an exception if the language is not valid OR changes the `dbLocale` and the `tsLocale` if it is valid.
The only change that needs to be made here is to DO NOTHING rather than throw an exception if the language is not valid. There is otherwise no conflict with allowing the `I18nSubscriber` to make a decision based on the multilingual setting at the translation code from making a decision based on whether there is a translation for that entity availlable.
*** language variants***
We have some WMF code for this but basically if you speak Canadian French and only a French French translation exists you should get that, rather than the US English
***Format locale***
Format locale is a bit tricksy since what makes sense varies - eg. US site sends an email to NZ user would ideally
- format dates to `en_NZ`
- format currency to `en_US`
Why? well the US dates can be confusing to an NZ user so NZ dates are much better. However, if you choose `en_NZ` for the currency the refence to it being in NZD will be dropped - which is something an NZ user is likely to be looking for to make sure. By always using the `en_US` you can also predict in smarty if it is likely to be there and (eg. add `{if $currencyCode === 'USD'}$currencyCode{/if}
Since our date formatting is currently only marginally localised I think we can ignore it for now & understand that for 'language variants' then only load the translated one.https://lab.civicrm.org/dev/core/-/issues/3655Add pre/post hook for mailing trackable url2024-03-04T05:03:26ZyashodhaAdd pre/post hook for mailing trackable urlAdd pre/post hook support for mailing trackable urlAdd pre/post hook support for mailing trackable urlyashodhayashodhahttps://lab.civicrm.org/dev/financial/-/issues/199Additional Details section on Recurring Contribution template edit screen doe...2022-06-15T00:25:33ZDaveDAdditional Details section on Recurring Contribution template edit screen doesn't load anymoreSomewhat related to https://lab.civicrm.org/dev/financial/-/issues/197
If you look at screenshot 5 there, in the Additional Details section, note the spinning icon and "Loading...". This is coming from https://github.com/civicrm/civicrm...Somewhat related to https://lab.civicrm.org/dev/financial/-/issues/197
If you look at screenshot 5 there, in the Additional Details section, note the spinning icon and "Loading...". This is coming from https://github.com/civicrm/civicrm-core/pull/21471/files#diff-74e8144a14bfd4d8bf9cf4279c90cded28c43351c70a338d4502612d6e0f1c36R448 where it's trying to freeze the status field but there is no status field on the Additional Details section.5.51.0https://lab.civicrm.org/dev/core/-/issues/3654Feature request - import allow dedupe rule to be selected for contribution et...2023-01-31T04:30:02ZeileenFeature request - import allow dedupe rule to be selected for contribution etc importsPer last comment on https://lab.civicrm.org/dev/core/-/issues/3652Per last comment on https://lab.civicrm.org/dev/core/-/issues/3652https://lab.civicrm.org/dev/core/-/issues/3653Upgrading to 5.51 RC fails through the web interface, but works with `cv` and...2022-07-21T00:54:20ZjhungerfordUpgrading to 5.51 RC fails through the web interface, but works with `cv` and `drush`.Overview
----------------------------------------
I commented on this issue in the Town Square:
https://chat.civicrm.org/civicrm/pl/kpcoyh7hx3nzunx34ejbe8h8aw
Running the database upgrade to 5.51 RC by visiting `/civicrm/upgrade?reset=1...Overview
----------------------------------------
I commented on this issue in the Town Square:
https://chat.civicrm.org/civicrm/pl/kpcoyh7hx3nzunx34ejbe8h8aw
Running the database upgrade to 5.51 RC by visiting `/civicrm/upgrade?reset=1` fails with this message:
"DB Error: no such field"
`UPDATE civicrm_queue SET status = NULL WHERE name = 'CRM_Upgrade' [nativecode=1054 ** Unknown column 'status' in 'field list'`
Running the same upgrade with `cv` or `drush` works.
Reproduction steps
----------------------------------------
1. Install an older version of Civi (e.g. 5.49.5) on Drupal 7.88
2. Replace the Civi module with 5.51 RC (civicrm-RC-drupal.tar.gz ( 5.51.beta1-202206120040 ))
3. Visit /civicrm/upgrade?reset=1 in the web interface, and run the upgrade
4. Observe that it crashes with "DB Error: no such field"
5. Try again, to confirm that it consistently fails in the web interface
6. Run the upgrade with `cv upgrade:db` or drush, and observe that it works
Current behaviour
----------------------------------------
After the failure in the web interface, the Drupal log of our production clone contained a message with this string:
`UPDATE civicrm_queue SET status = NULL WHERE name = 'CRM_Upgrade' [nativecode=1054 ** Unknown column 'status' in 'field list'`
I didn't find any upgrade messages in the Drupal log of the clean install, I'm not sure why.
Expected behaviour
----------------------------------------
The web interface upgrade normally works the same as the command line process.
Environment information
----------------------------------------
* __Browser:__ Firefox 91.9.1esr (64-bit)
* __CiviCRM:__ from 5.49.5 to 5.51.beta1 (5.51.beta1-202206120040)
* __PHP:__ 7.3.33-1+0~20211119.91+debian10~1.gbp618351
* __CMS:__ Drupal 7.88
* __Database:__ mariadb Ver 15.1 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
* __Web Server:__ apache2 2.4.38-3+deb10u75.51.0https://lab.civicrm.org/dev/core/-/issues/3652I've just tested 5.51 (5.51.alpha1-202206100340), and "First Name" and "Last ...2023-01-31T04:29:42ZeileenI've just tested 5.51 (5.51.alpha1-202206100340), and "First Name" and "Last Name" seem to have disappeared from the import mapping options.Tracking for https://lab.civicrm.org/dev/core/-/issues/2858#note_75339
I've just tested 5.51 (5.51.alpha1-202206100340), and "First Name" and "Last Name" seem to have disappeared from the import mapping options. I note that in the code ...Tracking for https://lab.civicrm.org/dev/core/-/issues/2858#note_75339
I've just tested 5.51 (5.51.alpha1-202206100340), and "First Name" and "Last Name" seem to have disappeared from the import mapping options. I note that in the code (e.g. the mapFieldDataProvider function) they're now referred to as "first_name" and "last_name", but I can't find them in the field mapping dropdown (see screenshot).
![firstname_lastname_missing](/uploads/209a7788029206c0c7842bc5631aa854/firstname_lastname_missing.jpg)
The saved field mapping has reverted these fields to "- do not import -".
This prevents the import from running. I see the following error message when I try to click Continue to go past the Match Fields screen (step 2 of 4):
"Missing required contact matching fields. email(weight 15) first_name(weight 5) last_name(weight 10) (Sum of all weights should be greater than or equal to threshold: 30)."
I notice that "Organisation Name" is in the list, but Contact Type is definitely set to Individual in the first screen of the import process.5.51.0https://lab.civicrm.org/dev/core/-/issues/3651Activity import error output missing the column the error is about2022-06-14T03:15:51ZDaveDActivity import error output missing the column the error is aboute.g. Create an import file with an invalid date, something like this for Activities
```csv
Type,Subject,Contact,Date
2,something,13,2021-02-03 16
```
The error output will correctly flag the date column as invalid, but does not include...e.g. Create an import file with an invalid date, something like this for Activities
```csv
Type,Subject,Contact,Date
2,something,13,2021-02-03 16
```
The error output will correctly flag the date column as invalid, but does not include it in the output:
```csv
"Line Number",Reason,Type,Subject,Contact,Date
1,"Invalid value for field(s) : Activity Date",2,something,13
```5.51.0https://lab.civicrm.org/dev/core/-/issues/3520Proposal: Splitting up delete contacts permission / new permission "CiviCRM s...2024-03-03T05:03:25ZAndreasandreas.howiller@civiservice.deProposal: Splitting up delete contacts permission / new permission "CiviCRM soft delete contacts"?Overview
----------------------------------------
Currently CiviCRM already has a distinction between soft deletion and permanent deletion of contacts: With the permission _CiviCRM: delete contacts_ you're able to put a contact into the ...Overview
----------------------------------------
Currently CiviCRM already has a distinction between soft deletion and permanent deletion of contacts: With the permission _CiviCRM: delete contacts_ you're able to put a contact into the trash bin. Users with the additional permission _CiviCRM: access deleted contacts_ can then permanently delete these contacts. In many usecases this is fine – e.g. when you might just want to prevent temporary volunteer workers from accidently deleting contacts permanentely. However there are very common use cases where an explicit distinction between a soft and a hard delete permission would be needed:
Example use-case 1: Allow restoring but _not_ (hard) deleting contacts
----------------------------------------
Your're glad your temporary volunteers help taking care of your contacts. And you feel safe allowing them (soft) deletion, too, as you're happy with the fact that only a few of your colleagues have the permission to delete these contacts permanently. What you would also like, however, is for them to be able to view and restore the deleted contacts to fix mistakes.
Current behaviour
----------------------------------------
When you allow users to soft delete contacts and to view the bin to restore contacts, this combination also allows permanently deleting contacts.
Proposed behaviour
----------------------------------------
In combination with a new permission _CiviCRM: soft delete contacts_ the permission _CiviCRM: access deleted contacts_ would allow this use case.
It seems like there had been a workaround for that around the permission _CiviCRM: edit all contacts View, Edit and Delete ANY CONTACT in the CiviCRM database_ which is not working anymore ([see this discussion on StackExchange](https://civicrm.stackexchange.com/questions/42008/allow-deletion-of-contacts-but-not-in-trash)).
Example use-case 2: Allow deduplication but _not_ (hard) deleting contacts
----------------------------------------
You deal a lot with event submissions and imports, so deduplication is very important for you. That is why you want your team to be able to deduplicate and also to fix mistakes by looking in the trash. But you don't want everybody to delete contacts in trash.
Current behaviour
----------------------------------------
Same like in use-case 1 except that even the broken workaround mentioned there would not work here as _CiviCRM: merge duplicate contacts_ requires the delete contacts permission.
Proposed behaviour
----------------------------------------
In combination with a new permission _CiviCRM: soft delete contacts_ the permissions _CiviCRM: merge duplicate contacts_ plus _CiviCRM: access deleted contacts_ would allow this use case.
Comment
----------------------------------------
Since this would mean touching a basic thing and might have some unexpected consequences in practice or in code (I'm not a developer) a broader discussion would be great :-)https://lab.civicrm.org/dev/core/-/issues/3519UI for tracking user jobs2023-03-20T10:07:38ZeileenUI for tracking user jobsThis is a place holder for the user being able to access a UI to see their user jobs and for sysadmins to be able to see all jobs.
I expect the UI would be a packaged search kit display & that should be a pretty easy add.
Wish list fea...This is a place holder for the user being able to access a UI to see their user jobs and for sysadmins to be able to see all jobs.
I expect the UI would be a packaged search kit display & that should be a pretty easy add.
Wish list features
- information from the queue (x jobs out of y completed)
- ability to see the related import table
- ability to update rows in the related import table & re-queue those rowshttps://lab.civicrm.org/dev/core/-/issues/3518Ajax error in import queue runner if too slow2022-09-05T22:47:42ZeileenAjax error in import queue runner if too slowI've been hitting this when it is slow because of debugging - in theory could be other reasons
![image](/uploads/9f8e318d8819d3b0a08cb6d8d510e17c/image.png)I've been hitting this when it is slow because of debugging - in theory could be other reasons
![image](/uploads/9f8e318d8819d3b0a08cb6d8d510e17c/image.png)https://lab.civicrm.org/dev/core/-/issues/3517Re-add a confirm step to Imports2023-01-31T04:41:48ZeileenRe-add a confirm step to ImportsThe really really ugly confirm warning got lost - but we probably need to re-add a `crmConfirm`The really really ugly confirm warning got lost - but we probably need to re-add a `crmConfirm`https://lab.civicrm.org/dev/core/-/issues/3516User Job & User import table cleanup strategy2023-03-20T10:08:27ZeileenUser Job & User import table cleanup strategyIdeally the user job and import would be dropped at the same time - either through a manual process or a cleanup job. As of writing, all import tables are dropped on upgrade or, if they are more than two days old, they are dropped on ca...Ideally the user job and import would be dropped at the same time - either through a manual process or a cleanup job. As of writing, all import tables are dropped on upgrade or, if they are more than two days old, they are dropped on cache clearing.https://lab.civicrm.org/dev/core/-/issues/3515Import feature request Ability to specify default for fields2023-01-31T04:42:36ZeileenImport feature request Ability to specify default for fieldsIdeally it would be possible to add a widget to `MapField` page on imports to store defaults - this gets us away from saying 'add a another column to your spreadsheet for (e.g) Financial Type and here is a video to watch to learn how to ...Ideally it would be possible to add a widget to `MapField` page on imports to store defaults - this gets us away from saying 'add a another column to your spreadsheet for (e.g) Financial Type and here is a video to watch to learn how to fill-down'
This is primarily a UI issue -injecting the widget - which could be angular - once saved to the user Job it would be easy to handlehttps://lab.civicrm.org/dev/core/-/issues/3513After completing an activity import, it takes you to the contact import screen2022-06-18T23:13:12ZDaveDAfter completing an activity import, it takes you to the contact import screenIt's maybe more likely to come up during testing than during real life, but if you were importing a series of files it's a bit confusing.
I don't remember if it did this before. I don't think so, but I'm not sure where I'd rank this for...It's maybe more likely to come up during testing than during real life, but if you were importing a series of files it's a bit confusing.
I don't remember if it did this before. I don't think so, but I'm not sure where I'd rank this for priority. It's not high.5.51.0https://lab.civicrm.org/dev/core/-/issues/35125.51beta1: TypeError on CRM_Contact_Import_Parser_Contact::checkStatesForCoun...2022-06-11T20:27:42ZJonGold5.51beta1: TypeError on CRM_Contact_Import_Parser_Contact::checkStatesForCountry()Another TypeError, this time on `CRM_Contact_Import_Parser_Contact::checkStatesForCountry()`
Sidenote - I'm hoping standalone CiviCRM comes to fruition because it would greatly simplify the process of using static analysis (e.g. PhpStan...Another TypeError, this time on `CRM_Contact_Import_Parser_Contact::checkStatesForCountry()`
Sidenote - I'm hoping standalone CiviCRM comes to fruition because it would greatly simplify the process of using static analysis (e.g. PhpStan) on Civi, which would catch type errors.
```
811744 10/Jun 11:23 php Error TypeError: Argument 2 passed to CRM_Contact_Import_Parser_Contact::checkStatesForCountry() must be of the type array, null given, called in
/home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Parser/Contact.php on line 1794 in CRM_Contact_Import_Parser_Contact->checkStatesForCountry() (line 1854 of
/home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Parser/Contact.php) #0
/home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Parser/Contact.php(1794): CRM_Contact_Import_Parser_Contact->checkStatesForCountry(1228, NULL)
#1 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Parser/Contact.php(1828): CRM_Contact_Import_Parser_Contact->tryToResolveStateProvince('invalid_import_...', '')
#2 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Parser/Contact.php(1449): CRM_Contact_Import_Parser_Contact->fillStateProvince(Array)
#3 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/Parser.php(1665): CRM_Contact_Import_Parser_Contact->getMappedRow(Array)
#4 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/Parser.php(1645): CRM_Import_Parser->validateValues(Array)
#5 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Form/MapField.php(450): CRM_Import_Parser->validate()
#6 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Form/MapField.php(372): CRM_Contact_Import_Form_MapField->submit(Array)
#7 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Form.php(573): CRM_Contact_Import_Form_MapField->postProcess()
#8 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/StateMachine.php(144): CRM_Core_Form->mainProcess()
#9 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/QuickForm/Action/Next.php(43): CRM_Core_StateMachine->perform(Object(CRM_Contact_Import_Form_MapField), 'next', 'Next')
#10 /home/jon/local/mysite/web/vendor/civicrm/civicrm-packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contact_Import_Form_MapField), 'next')
#11 /home/jon/local/mysite/web/vendor/civicrm/civicrm-packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Import_Form_MapField), 'next')
#12 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle('next')
#13 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(319): CRM_Core_Controller->run(Array, NULL)
#14 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem(Array)
#15 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke(Array)
#16 /home/jon/local/mysite/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke(Array)
#17 /home/jon/local/mysite/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(80): Drupal\civicrm\Civicrm->invoke(Array)
#18 [internal function]: Drupal\civicrm\Controller\CivicrmController->main(Array, '')
#19 /home/jon/local/mysite/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)
#20 /home/jon/local/mysite/web/core/lib/Drupal/Core/Render/Renderer.php(564): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#21 /home/jon/local/mysite/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124):
Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#22 /home/jon/local/mysite/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97):
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
#23 /home/jon/local/mysite/web/vendor/symfony/http-kernel/HttpKernel.php(158): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#24 /home/jon/local/mysite/web/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#25 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1,
true)
#26 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1,
true)
#27 /home/jon/local/mysite/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106):
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#28 /home/jon/local/mysite/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85):
Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#29 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48):
Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#30 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51):
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#31 /home/jon/local/mysite/web/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23):
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#32 /home/jon/local/mysite/web/core/lib/Drupal/Core/DrupalKernel.php(708): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#33 /home/jon/local/mysite/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#34 {main}.
```5.51.0https://lab.civicrm.org/dev/core/-/issues/35115.51beta1: TypeError on import with saved mapping2023-11-16T02:18:19ZJonGold5.51beta1: TypeError on import with saved mappingI wanted to test 5.51's import. I started an import, got to page 3 before I realized I was on a 5.49.5 branch - but after I'd saved my mapping.
I switched to 5.51, and on pressing **Next** on page 1 of the import, I got the following e...I wanted to test 5.51's import. I started an import, got to page 3 before I realized I was on a 5.49.5 branch - but after I'd saved my mapping.
I switched to 5.51, and on pressing **Next** on page 1 of the import, I got the following error, which seems to be related to having a `- do not import -` value in one of my mapping fields:
```
811742 10/Jun 11:18 php Error TypeError: Return value of CRM_Import_ImportProcessor::getFieldMetadata() must be of the type array, null returned in CRM_Import_ImportProcessor->getFieldMetadata() (line 460 of
/home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/ImportProcessor.php) #0 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/ImportProcessor.php(443):
CRM_Import_ImportProcessor->getFieldMetadata('- do not import...')
#1 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/ImportProcessor.php(235): CRM_Import_ImportProcessor->loadSavedMapping()
#2 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/ImportProcessor.php(271): CRM_Import_ImportProcessor->getMappingFields()
#3 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Import/ImportProcessor.php(283): CRM_Import_ImportProcessor->getFieldNames()
#4 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Contact/Import/Form/MapField.php(293): CRM_Import_ImportProcessor->getFieldName(0)
#5 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Form.php(689): CRM_Contact_Import_Form_MapField->buildQuickForm()
#6 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/QuickForm/Action/Display.php(76): CRM_Core_Form->buildForm()
#7 /home/jon/local/mysite/web/vendor/civicrm/civicrm-packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Display->perform(Object(CRM_Contact_Import_Form_MapField),
'display')
#8 /home/jon/local/mysite/web/vendor/civicrm/civicrm-packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Import_Form_MapField), 'display')
#9 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle('display')
#10 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(319): CRM_Core_Controller->run(Array, NULL)
#11 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem(Array)
#12 /home/jon/local/mysite/web/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke(Array)
#13 /home/jon/local/mysite/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke(Array)
#14 /home/jon/local/mysite/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(80): Drupal\civicrm\Civicrm->invoke(Array)
#15 [internal function]: Drupal\civicrm\Controller\CivicrmController->main(Array, '')
#16 /home/jon/local/mysite/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)
#17 /home/jon/local/mysite/web/core/lib/Drupal/Core/Render/Renderer.php(564): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#18 /home/jon/local/mysite/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124):
Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#19 /home/jon/local/mysite/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97):
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
#20 /home/jon/local/mysite/web/vendor/symfony/http-kernel/HttpKernel.php(158): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#21 /home/jon/local/mysite/web/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#22 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1,
true)
#23 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1,
true)
#24 /home/jon/local/mysite/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106):
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#25 /home/jon/local/mysite/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85):
Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#26 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48):
Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#27 /home/jon/local/mysite/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51):
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#28 /home/jon/local/mysite/web/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23):
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#29 /home/jon/local/mysite/web/core/lib/Drupal/Core/DrupalKernel.php(708): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#30 /home/jon/local/mysite/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#31 {main}.
```5.51.0