-
-
Notifications
You must be signed in to change notification settings - Fork 827
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
Activity import - convert to apiv4 #32234
base: master
Are you sure you want to change the base?
Conversation
🤖 Thank you for contributing to CiviCRM! ❤️ We will need to test and review this PR. 👷 Introduction for new contributors...
Quick links for reviewers...
|
eeac864
to
c3bfd84
Compare
@eileenmcnaughton I just want to check about one thing here... Is there a reason not to do it that way in CiviImport? |
@colemanw no - I can do it that way - so it will be no namespace for |
c3bfd84
to
c3a5cc2
Compare
$fields['target_contact.id'] = $contactFields['id']; | ||
$fields['target_contact.id']['entity'] = 'Contact'; | ||
$fields['target_contact.id']['match_rule'] = '*'; | ||
$fields['source_contact.id'] = $fields['target_contact.id']; | ||
$fields['source_contact.id']['entity_instance'] = 'SourceContact'; | ||
$fields['source_contact.id']['title'] .= ' ' . ts('(match to source contact)'); | ||
$fields['target_contact.id']['title'] .= ' ' . ts('(match to target contact)'); | ||
unset($contactFields['id']); | ||
|
||
$fields += $contactFields; | ||
$fields['target_contact.external_identifier'] = $contactFields['external_identifier']; | ||
$fields['target_contact.external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' (target contact)'; | ||
$fields['source_contact.external_identifier'] = $contactFields['external_identifier']; | ||
$fields['source_contact.external_identifier']['entity_instance'] = 'SourceContact'; | ||
$fields['source_contact.external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' (source contact)'; | ||
unset($fields['external_identifier']); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In Api4 generally the these pseudo-fields end in _id
. Not sure if important to keep that consistent here.
civicrm-core/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php
Lines 52 to 85 in ddcc28a
$field = new FieldSpec('source_contact_id', 'Activity', 'Integer'); | |
$field->setTitle(ts('Source Contact')); | |
$field->setLabel(ts('Added by')); | |
$field->setColumnName('id'); | |
$field->setDescription(ts('Contact who created this activity.')); | |
$field->setRequired($action === 'create'); | |
$field->setFkEntity('Contact'); | |
$field->setInputType('EntityRef'); | |
$field->setSqlRenderer([__CLASS__, 'renderSqlForActivityContactIds']); | |
$spec->addFieldSpec($field); | |
$field = new FieldSpec('target_contact_id', 'Activity', 'Array'); | |
$field->setTitle(ts('Target Contacts')); | |
$field->setLabel(ts('With Contacts')); | |
$field->setColumnName('id'); | |
$field->setDescription(ts('Contacts involved in this activity.')); | |
$field->setFkEntity('Contact'); | |
$field->setInputType('EntityRef'); | |
$field->setInputAttrs(['multiple' => TRUE]); | |
$field->setSerialize(\CRM_Core_DAO::SERIALIZE_COMMA); | |
$field->setSqlRenderer([__CLASS__, 'renderSqlForActivityContactIds']); | |
$spec->addFieldSpec($field); | |
$field = new FieldSpec('assignee_contact_id', 'Activity', 'Array'); | |
$field->setTitle(ts('Assignee Contacts')); | |
$field->setLabel(ts('Assigned to')); | |
$field->setColumnName('id'); | |
$field->setDescription(ts('Contacts assigned to this activity.')); | |
$field->setFkEntity('Contact'); | |
$field->setInputType('EntityRef'); | |
$field->setInputAttrs(['multiple' => TRUE]); | |
$field->setSerialize(\CRM_Core_DAO::SERIALIZE_COMMA); | |
$field->setSqlRenderer([__CLASS__, 'renderSqlForActivityContactIds']); | |
$spec->addFieldSpec($field); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@colemanw no - a feature of the importer is that it handles a mix of things on those fields - ids, names, labels, abbreviations with flexibility around case sensitivity. I know you won't like that :-) but it is not only because of legacy code - it really is the case that users are pretty sloppy with their thinking about the differences between those things
Overview
Activity import - convert to apiv4
Before
Activity import uses apiv3
After
uses apiv4
Technical Details
all mappings are namespaced - ie
activity.id
target_contact.id
- as this is a very flat import this is fairly simple (conceptually _Comments