You are here

public function CSVExportForm::exportProducts in Commerce Smart Importer 8

Export whole product to CSV fromatted.

1 call to CSVExportForm::exportProducts()
CSVExportForm::putExportedProductsInCsv in src/Form/CSVExportForm.php
Writes formated product to CSV file.

File

src/Form/CSVExportForm.php, line 357

Class

CSVExportForm
Form for exporting products in CSV format.

Namespace

Drupal\commerce_smart_importer\Form

Code

public function exportProducts($start, $limit, $field_definitions, array $field_value) {
  $product_data = [];
  $config = $this->smartImporterService
    ->getConfig();
  if (empty($field_value)) {
    $query = $this->database
      ->select('commerce_product')
      ->fields('commerce_product', [
      'product_id',
    ])
      ->condition('type', $config['commerce_product_bundle'])
      ->range($start, $limit)
      ->execute()
      ->fetchAll();
  }
  else {
    $query = $this->database
      ->query("SELECT cp.product_id FROM {commerce_product} cp JOIN {commerce_product__" . $field_value[0] . "} tax ON tax.entity_id=cp.product_id WHERE cp.type= '" . $config['commerce_product_bundle'] . "'tax." . $field_value[0] . "_target_id=" . $field_value[1])
      ->fetchAll();
  }
  foreach ($query as $product) {
    $product_temp_data = [];
    $product_temp_data['product'] = $product->product_id;
    $variation_query = $this->database
      ->query('SELECT variation_id FROM {commerce_product_variation_field_data} WHERE product_id=' . $product->product_id)
      ->fetchAll();
    foreach ($variation_query as $variation) {
      $product_temp_data['variation'][] = $variation->variation_id;
    }
    $product_data[] = $product_temp_data;
  }
  $empty_product = array_fill(0, count($field_definitions['product']), '');
  $rows = [];
  foreach ($product_data as $product_datum) {
    $first = TRUE;
    foreach ($product_datum['variation'] as $variation_id) {
      if ($first) {
        $temp_row = $this->smartImporterService
          ->exportMultipleFields('commerce_product', $product_datum['product'], $field_definitions['product']);
        $first = FALSE;
      }
      else {
        $temp_row = $empty_product;
      }
      $temp_row = array_merge($temp_row, $this->smartImporterService
        ->exportMultipleFields('commerce_product_variation', $variation_id, $field_definitions['variation']));
      $rows[] = $temp_row;
    }
  }
  return $rows;
}