You are here

salesforce_pull.install in Salesforce Suite 8.3

Install/uninstall tasks for the Salesforce Pull module.

File

modules/salesforce_pull/salesforce_pull.install
View source
<?php

/**
 * @file
 * Install/uninstall tasks for the Salesforce Pull module.
 */

/**
 * Implements hook_uninstall().
 */
function salesforce_pull_uninstall() {
  $delete = [
    'salesforce.mapping_pull_info',
  ];
  \Drupal::state()
    ->deleteMultiple($delete);
}

/**
 * Convert per-object pull timestamp key-values into one big array.
 */
function salesforce_pull_update_8002() {
  $pull_info = [];
  $delete = [];
  $objects = \Drupal::service('salesforce.client')
    ->objects();
  foreach ($objects as $type) {
    $last_del = \Drupal::state()
      ->get('salesforce_pull_last_delete_' . $type);
    $last_pull = \Drupal::state()
      ->get('salesforce_pull_last_sync_' . $type);
    $delete[] = 'salesforce_pull_last_delete_' . $type;
    $delete[] = 'salesforce_pull_last_sync_' . $type;
    if (!empty($last_del)) {
      $pull_info[$type]['last_delete_timestamp'] = $last_del;
    }
    if (!empty($last_pull)) {
      $pull_info[$type]['last_pull_timestamp'] = $last_pull;
    }
  }
  \Drupal::state()
    ->set('salesforce.sobject_pull_info', $pull_info);
  \Drupal::state()
    ->deleteMultiple($delete);
}

/**
 * Convert salesforce_pull_last* timestamps key-values into arrays.
 */
function salesforce_pull_update_8001() {
  $kv = db_query("SELECT name, value FROM key_value WHERE name like 'salesforce_pull_last%'")
    ->fetchAllKeyed();
  $sync = [];
  $delete = [];
  foreach ($kv as $key => $value) {
    $value = unserialize($value);
    if (strpos($key, 'delete')) {
      $salesforce_type = str_replace('salesforce_pull_last_delete_', '', $key);
      $delete[$salesforce_type] = $value;
    }
    elseif (strpos($key, 'sync')) {
      $salesforce_type = str_replace('salesforce_pull_last_sync_', '', $key);
      $sync[$salesforce_type] = $value;
    }
  }
  \Drupal::state()
    ->set('salesforce_pull_last_delete', $delete);
  \Drupal::state()
    ->set('salesforce_pull_last_sync', $sync);
  \Drupal::state()
    ->deleteMultiple(array_keys($kv));
}

/**
 * Moves global pull limit out of state into config.
 */
function salesforce_pull_update_8003() {
  $config = \Drupal::configFactory()
    ->getEditable('salesforce.settings');
  $config
    ->set('pull_max_queue_size', \Drupal::state()
    ->get('salesforce.pull_max_queue_size'))
    ->save();
  \Drupal::state()
    ->delete('salesforce.pull_max_queue_size');
}

/**
 * Refactor pull timestamps, again, into per-mapping timestamps.
 */
function salesforce_pull_update_8004() {
  $mapping_pull_info = [];
  $pull_info = \Drupal::state()
    ->get('salesforce.sobject_pull_info', []);
  $mappings = \Drupal::entityTypeManager()
    ->getStorage('salesforce_mapping')
    ->loadMultiple();
  $new_pull_info = [];
  foreach ($mappings as $mapping) {
    $sobject_type = $mapping
      ->getSalesforceObjectType();
    if (empty($pull_info[$sobject_type])) {
      continue;
    }
    $mapping_pull_info = $pull_info[$sobject_type];
    $new_pull_info[$mapping
      ->id()] = $mapping_pull_info;
  }
  \Drupal::state()
    ->set('salesforce.mapping_pull_info', $mapping_pull_info);
  \Drupal::state()
    ->delete('salesforce.sobject_pull_info');
}

/**
 * Update mappings with "pull standalone" property.
 */
function salesforce_pull_update_8005() {
  $mappings = \Drupal::entityTypeManager()
    ->getStorage('salesforce_mapping')
    ->loadPullMappings();
  foreach ($mappings as $mapping) {
    if (empty($mapping
      ->get('pull_standalone'))) {
      $mapping
        ->set('pull_standalone', FALSE)
        ->save();
    }
  }
}

Functions

Namesort descending Description
salesforce_pull_uninstall Implements hook_uninstall().
salesforce_pull_update_8001 Convert salesforce_pull_last* timestamps key-values into arrays.
salesforce_pull_update_8002 Convert per-object pull timestamp key-values into one big array.
salesforce_pull_update_8003 Moves global pull limit out of state into config.
salesforce_pull_update_8004 Refactor pull timestamps, again, into per-mapping timestamps.
salesforce_pull_update_8005 Update mappings with "pull standalone" property.