-
-
Notifications
You must be signed in to change notification settings - Fork 825
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dev/core#1093: Fix Installation of Custom Fields with Option Values From XML #15726
dev/core#1093: Fix Installation of Custom Fields with Option Values From XML #15726
Conversation
(Standard links)
|
0993d71
to
170f25f
Compare
Is there any unit test coverage of this function? |
@seamuslee001 is this the one you already ported #15724 |
@eileenmcnaughton separate issues |
@colemanw - no - which is why this issue has arisen. But I don't think this regression-fix is the point we should insist on it |
I'm going to merge this - it's pretty isolated & if this is working for @MiyaNoctem then I think that is enough in this case as the code is not complex - it just needs to do the thing it's not doing |
Overview -------- This fixes a recent/unreleased regression from civicrm#15726 in which the D7 demo build fails. Before ------ When running `civibuild reinstall ...` on a `drupal-demo` site, it fails at this step: ``` +++ drush -y cvapi extension.install key=org.civicrm.volunteer debug=1 Authorization failed [error] Array ( [error_code] => unauthorized [entity] => Extension [action] => install [trace] => #0 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/Civi/API/Kernel.php(166): Civi\API\Kernel->authorize(Object(Civi\Api4\Provider\ActionObjectProvider), Object(Civi\Api4\Generic\DAOSaveAction)) 1 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/Civi/Api4/Generic/AbstractAction.php(235): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOSaveAction)) 2 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/CRM/Utils/Migrate/Import.php(374): Civi\Api4\Generic\AbstractAction->execute() 3 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/CRM/Utils/Migrate/Import.php(82): CRM_Utils_Migrate_Import->customFields(Object(SimpleXMLElement), Array) 4 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/tools/extensions/civivolunteer/CRM/Volunteer/Upgrader.php(836): CRM_Utils_Migrate_Import->runXmlElement(Object(SimpleXMLElement)) 5 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/tools/extensions/civivolunteer/CRM/Volunteer/Upgrader.php(48): CRM_Volunteer_Upgrader->executeCustomDataTemplateFile('volunteer-custo...') 6 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/tools/extensions/civivolunteer/CRM/Volunteer/Upgrader/Base.php(306): CRM_Volunteer_Upgrader->install() 7 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/tools/extensions/civivolunteer/volunteer.civix.php(131): CRM_Volunteer_Upgrader_Base->onInstall() 8 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/tools/extensions/civivolunteer/volunteer.php(204): _volunteer_civix_civicrm_install() 9 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/CRM/Extension/Manager/Module.php(76): volunteer_civicrm_install() 10 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/CRM/Extension/Manager/Module.php(48): CRM_Extension_Manager_Module->callHook(Object(CRM_Extension_Info), 'install') 11 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/CRM/Extension/Manager.php(264): CRM_Extension_Manager_Module->onPreInstall(Object(CRM_Extension_Info)) 12 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/api/v3/Extension.php(58): CRM_Extension_Manager->install(Array) 13 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(101): civicrm_api3_extension_install(Array) 14 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/Civi/API/Kernel.php(168): Civi\API\Provider\MagicFunctionProvider->invoke(Array) 15 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/Civi/API/Kernel.php(99): Civi\API\Kernel->runRequest(Array) 16 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->runSafe('extension', 'install', Array, NULL) 17 /Users/myuser/bknix/build/dmaster/web/sites/all/modules/civicrm/drupal/drush/civicrm.drush.inc(1557): civicrm_api('extension', 'install', Array) 18 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/includes/command.inc(422): drush_civicrm_api('extension.insta...', 'key=org.civicrm...', 'debug=1') 19 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/includes/command.inc(231): _drush_invoke_hooks(Array, Array) 20 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/includes/command.inc(199): drush_command('extension.insta...', 'key=org.civicrm...', 'debug=1') 21 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/lib/Drush/Boot/BaseBoot.php(67): drush_dispatch(Array) 22 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/includes/preflight.inc(66): Drush\Boot\BaseBoot->bootstrap_and_dispatch() 23 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/includes/startup.inc(465): drush_main() 24 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/includes/startup.inc(369): drush_run_main(false, '/', 'Phar detected. ...') 25 phar:///Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar/drush(114): drush_startup(Array) 26 /Users/myuser/bknix/civicrm-buildkit/extern/drush8.phar(10): require('phar:///Users/t...') 27 {main} [is_error] => 1 [error_message] => Authorization failed ) ``` After ----- It works again.
Overview
we've run into an issue with bulk create of custom fields and direct debit extension. On previous versions of CiviCRM, when we defined option groups for a custom field on an xml file, we were able to use
option_group_name
to define the option group to be used for values of the custom field.Before
The old version of the method to import custom fields used to process these option group names and replace them by their corresponding ID. Check:
https://github.com/civicrm/civicrm-core/blob/5.5/CRM/Utils/Migrate/Import.php#L376-L380
This fails to happen when using bulkSave() to import custom fields.
After
Added logicthat maps option_group names to their ID's, and used API4 call to implement bulk save action to create the fields.