commerce-8.x-2.8/modules/payment/commerce_payment.post_update.php

modules/payment/commerce_payment.post_update.php
<?php

/**
 * @file
 * Post update functions for the commerce_payment module.
 */

/**
 * Re-save payment methods to populate the payment_gateway_mode field.
 */
function commerce_payment_post_update_1(&$sandbox = NULL) {
  $payment_method_storage = \Drupal::entityTypeManager()->getStorage('commerce_payment_method');
  if (!isset($sandbox['current_count'])) {
    $query = $payment_method_storage->getQuery();
    $sandbox['total_count'] = $query->count()->execute();
    $sandbox['current_count'] = 0;

    if (empty($sandbox['total_count'])) {
      $sandbox['#finished'] = 1;
      return;
    }
  }

  $query = $payment_method_storage->getQuery();
  $query->range($sandbox['current_count'], 25);
  $result = $query->execute();
  if (empty($result)) {
    $sandbox['#finished'] = 1;
    return;
  }

  /** @var \Drupal\commerce_payment\Entity\PaymentMethodInterface[] $promotions */
  $payment_methods = $payment_method_storage->loadMultiple($result);
  foreach ($payment_methods as $payment_method) {
    $payment_method->save();
  }

  $sandbox['current_count'] += 25;
  if ($sandbox['current_count'] >= $sandbox['total_count']) {
    $sandbox['#finished'] = 1;
  }
  else {
    $sandbox['#finished'] = ($sandbox['total_count'] - $sandbox['current_count']) / $sandbox['total_count'];
  }
}

/**
 * Re-save payments to populate the payment_gateway_mode and completed fields.
 */
function commerce_payment_post_update_2(&$sandbox = NULL) {
  $payment_storage = \Drupal::entityTypeManager()->getStorage('commerce_payment');
  if (!isset($sandbox['current_count'])) {
    $query = $payment_storage->getQuery();
    $sandbox['total_count'] = $query->count()->execute();
    $sandbox['current_count'] = 0;

    if (empty($sandbox['total_count'])) {
      $sandbox['#finished'] = 1;
      return;
    }
  }

  $query = $payment_storage->getQuery();
  $query->range($sandbox['current_count'], 25);
  $result = $query->execute();
  if (empty($result)) {
    $sandbox['#finished'] = 1;
    return;
  }

  // Renamed states.
  $state_map = [
    'capture_completed' => 'completed',
    'capture_partially_refunded' => 'partially_refunded',
    'capture_refunded' => 'refunded',
    'received' => 'completed',
  ];

  /** @var \Drupal\commerce_payment\Entity\PaymentInterface[] $payments */
  $payments = $payment_storage->loadMultiple($result);
  foreach ($payments as $payment) {
    // Update the state.
    $state = $payment->get('state')->value;
    if (isset($state_map[$state])) {
      $payment->set('state', $state_map[$state]);
    }
    // Migrate the 'test' field to 'payment_gateway_mode'.
    $payment_gateway = $payment->getPaymentGateway();
    if ($payment_gateway) {
      $supported_modes = $payment_gateway->getPlugin()->getSupportedModes();
      $mode = $payment->get('test')->value ? 'test' : 'live';
      $mode = in_array($mode, $supported_modes) ? $mode : $payment_gateway->getPlugin()->getMode();
      $payment->set('payment_gateway_mode', $mode);
    }
    // Migrate the 'captured' field to 'completed'.
    $payment->set('completed', $payment->get('captured')->value);
    $payment->save();
  }

  $sandbox['current_count'] += 25;
  if ($sandbox['current_count'] >= $sandbox['total_count']) {
    $sandbox['#finished'] = 1;
  }
  else {
    $sandbox['#finished'] = ($sandbox['total_count'] - $sandbox['current_count']) / $sandbox['total_count'];
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc