Skip to content
Snippets Groups Projects
Commit 0c920af1 authored by Alexander Rhodes's avatar Alexander Rhodes
Browse files

Merge branch '8.x-3.x' into mads-9

parents 57c1adc5 1edb31e7
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,7 @@ class SalesforceExampleSubscriber implements EventSubscriberInterface {
public function pushAllowed(SalesforcePushOpEvent $event) {
/** @var Entity $entity */
$entity = $event->getEntity();
if ($entity->getEntityTypeId() == 'unpushable_entity') {
if ($entity && $entity->getEntityTypeId() == 'unpushable_entity') {
throw new Exception('Prevent push of Unpushable Entity');
}
}
......
......@@ -16,5 +16,11 @@ function salesforce_pull_install() {
* Implements hook_uninstall().
*/
function salesforce_pull_uninstall() {
\Drupal::state()->delete('salesforce.pull_max_queue_size');
$delete = ['salesforce.pull_max_queue_size'];
$objects = \Drupal::service('salesforce.client')->objects();
foreach ($objects as $type) {
$delete[] = 'salesforce_pull_last_delete_' . $type['name'];
$delete[] = 'salesforce_pull_last_sync_' . $type['name'];
}
\Drupal::state()->deleteMultiple($delete);
}
......@@ -65,7 +65,7 @@ class DeleteHandler {
public function processDeletedRecords() {
// @TODO Add back in SOAP, and use autoloading techniques
foreach (array_reverse($this->mapping_storage->getMappedSobjectTypes()) as $type) {
$last_delete_sync = $this->state->get('salesforce_pull_last_delete_' . $type, $this->request->server->get('REQUEST_TIME'));
$last_delete_sync = $this->state->get('salesforce_pull_last_delete_' . $type, strtotime('-29 days'));
$now = time();
// getDeleted() restraint: startDate must be at least one minute
// greater than endDate.
......@@ -74,7 +74,7 @@ class DeleteHandler {
$now_sf = gmdate('Y-m-d\TH:i:s\Z', $now);
$deleted = $this->sfapi->getDeleted($type, $last_delete_sync_sf, $now_sf);
$this->handleDeletedRecords($deleted, $type);
$this->state->set('salesforce_pull_last_delete_' . $type, $this->request->server->get('REQUEST_TIME'));
$this->state->set('salesforce_pull_last_delete_' . $type, $now);
}
return true;
}
......@@ -139,6 +139,9 @@ class DeleteHandler {
}
try {
// Flag this entity to avoid duplicate processing.
$entity->salesforce_pull = TRUE;
$entity->delete();
$this->logger->log(
LogLevel::NOTICE,
......@@ -146,7 +149,7 @@ class DeleteHandler {
[
'%label' => $entity->label(),
'%id' => $mapped_object->entity_id,
'%sfid' => $record->id,
'%sfid' => $record['id'],
]
);
}
......
......@@ -15,9 +15,12 @@ function salesforce_push_install() {
* Implements hook_uninstall().
*/
function salesforce_push_uninstall() {
\Drupal::state()->delete('salesforce.push_limit');
\Drupal::state()->delete('salesforce.push_queue_processor');
\Drupal::state()->delete('salesforce.push_queue_max_fails');
$delete = [
'salesforce.push_limit',
'salesforce.push_queue_processor',
'salesforce.push_queue_max_fails',
];
\Drupal::state()->deleteMultiple($delete);
\Drupal::service('queue.salesforce_push')->deleteTable();
}
......
......@@ -55,7 +55,8 @@ function salesforce_push_entity_delete(EntityInterface $entity) {
*/
function salesforce_push_entity_crud(EntityInterface $entity, $op) {
// Don't allow mapped objects or mappings to be pushed!
if ($entity instanceof MappedObjectInterface
if (!empty($entity->salesforce_pull)
|| $entity instanceof MappedObjectInterface
|| $entity instanceof SalesforceMappingInterface) {
return;
}
......
......@@ -11,11 +11,8 @@ use Drupal\salesforce\EntityNotFoundException;
use Drupal\salesforce\Rest\RestClient;
use Drupal\salesforce\SalesforceEvents;
use Drupal\salesforce_mapping\Entity\MappedObject;
use Drupal\salesforce_mapping\MappedObjectStorage;
use Drupal\salesforce_mapping\MappingConstants;
use Drupal\salesforce_mapping\SalesforceMappingStorage;
use Drupal\salesforce_mapping\SalesforcePushEvent;
use Drupal\salesforce_mapping\SalesforcePushParamsEvent;
use Drupal\salesforce_mapping\SalesforcePushOpEvent;
use Drupal\salesforce_push\PushQueue;
use Drupal\salesforce_push\PushQueueProcessorInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
......@@ -108,7 +105,7 @@ class Rest extends PluginBase implements PushQueueProcessorInterface {
try {
$this->event_dispatcher->dispatch(
SalesforceEvents::PUSH_MAPPING_OBJECT,
new SalesforcePushParamsEvent($mapped_object, $op)
new SalesforcePushOpEvent($mapped_object, $item->op)
);
// If this is a delete, destroy the SF object and we're done.
......@@ -133,7 +130,7 @@ class Rest extends PluginBase implements PushQueueProcessorInterface {
catch (\Exception $e) {
$this->event_dispatcher->dispatch(
SalesforceEvents::PUSH_FAIL,
new SalesforcePushParamsEvent($mapped_object, $item->op)
new SalesforcePushOpEvent($mapped_object, $item->op)
);
// Log errors and throw exception to cause this item to be re-queued.
......
<?php
/**
* Purge Salesforce module state variables
*/
function salesforce_uninstall() {
$delete = [
'salesforce.consumer_key',
'salesforce.consumer_secret',
'salesforce.login_url',
'salesforce.instance_url',
'salesforce.access_token',
'salesforce.refresh_token',
'salesforce.identity',
];
\Drupal::state()->deleteMultiple($delete);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment