function drush_salesforce_push_unmapped in Salesforce Suite 5.0.x
Same name and namespace in other branches
- 8.4 modules/salesforce_push/salesforce_push.drush.inc \drush_salesforce_push_unmapped()
- 8.3 modules/salesforce_push/salesforce_push.drush.inc \drush_salesforce_push_unmapped()
Implements drush_hook_COMMAND().
Search for entities without Salesforce Object mappings and attempt to push them to Salesforce.
File
- modules/
salesforce_push/ salesforce_push.drush.inc, line 78 - Drush tools for the Salesforce Push module.
Code
function drush_salesforce_push_unmapped($name = NULL) {
_drush_salesforce_deprecated();
if (!($mapping = _salesforce_drush_get_mapping($name))) {
return;
}
$entity_type = $mapping
->get('drupal_entity_type');
$etm = \Drupal::entityTypeManager();
$entity_storage = $etm
->getStorage($entity_type);
$entity_keys = $etm
->getDefinition($entity_type)
->getKeys();
$id_key = $entity_keys['id'];
$bundle_key = empty($entity_keys['bundle']) ? FALSE : $entity_keys['bundle'];
$query = \Drupal::database()
->select($entity_storage
->getBaseTable(), 'b');
$query
->leftJoin('salesforce_mapped_object', 'm', "b.{$id_key} = m.drupal_entity__target_id AND m.drupal_entity__target_type = '{$entity_type}'");
if ($bundle_key) {
$query
->condition("b.{$bundle_key}", $mapping
->get('drupal_bundle'));
}
$results = $query
->fields('b', [
$id_key,
])
->isNull('m.drupal_entity__target_id')
->range(0, drush_get_option('count', 50))
->execute()
->fetchAllAssoc($id_key);
$entities = $entity_storage
->loadMultiple(array_keys($results));
$log = [];
foreach ($entities as $entity) {
salesforce_push_entity_crud($entity, 'push_create');
$log[] = $entity
->id();
}
drush_print(count($log) . " unmapped entities found and push to Salesforce attempted. See logs for more details.");
}