public static function BatchSyncProducts::syncProducts in Mailchimp E-Commerce 8        
                          
                  
                        Same name in this branch
- 8 modules/mailchimp_ecommerce_ubercart/src/BatchSyncProducts.php \Drupal\mailchimp_ecommerce_ubercart\BatchSyncProducts::syncProducts()
- 8 modules/mailchimp_ecommerce_commerce/src/BatchSyncProducts.php \Drupal\mailchimp_ecommerce_commerce\BatchSyncProducts::syncProducts()
File
 
   - modules/mailchimp_ecommerce_ubercart/src/BatchSyncProducts.php, line 10
Class
  
  - BatchSyncProducts 
- Batch process handler for syncing product data to Mailchimp.
Namespace
  Drupal\mailchimp_ecommerce_ubercart
Code
public static function syncProducts($product_ids, &$context) {
  if (!isset($context['sandbox']['progress'])) {
    $context['sandbox']['progress'] = 0;
    $context['sandbox']['total'] = count($product_ids);
    $context['results']['product_ids'] = $product_ids;
  }
  $config = \Drupal::config('mailchimp.settings');
  $batch_limit = $config
    ->get('batch_limit');
  $batch = array_slice($context['results']['product_ids'], $context['sandbox']['progress'], $batch_limit);
  foreach ($batch as $product_id) {
    $product = $node = Node::load($product_id);
    $title = !empty($product
      ->get('title')->value) ? $product
      ->get('title')->value : '';
    $description = !empty($product
      ->get('body')->value) ? $product
      ->get('body')->value : '';
    $type = !empty($product
      ->get('type')->value) ? $product
      ->get('type')->value : '';
    
    $product_handler = \Drupal::service('mailchimp_ecommerce.product_handler');
    $variants = $product_handler
      ->buildProductVariants($product);
    
    $product_handler
      ->addProduct($product_id, $title, $description, $type, $variants);
    $context['sandbox']['progress']++;
    $context['message'] = t('Sent @count of @total products to Mailchimp', [
      '@count' => $context['sandbox']['progress'],
      '@total' => $context['sandbox']['total'],
    ]);
    $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['total'];
  }
}