You are here

function uc_addresses_feeds_after_import in Ubercart Addresses 7

Implements hook_feeds_after_import().

Makes sure all users for which addresses were imported have default addresses.

File

./uc_addresses.feeds.inc, line 14
Feeds integration for Ubercart Addresses module.

Code

function uc_addresses_feeds_after_import(FeedsSource $source) {

  // Check if default addresses are used at all.
  if (!variable_get('uc_addresses_use_default_billing', TRUE) && !variable_get('uc_addresses_use_default_shipping', TRUE)) {

    // Addresses may not be marked as default. No reason to continue here.
    return;
  }

  // Get processor config.
  $importer_config = $source
    ->importer()
    ->getConfig();
  $processor_config = $importer_config['processor']['config'];

  // Continue only if it were addresses that got imported.
  if (empty($processor_config['bundle']) || $processor_config['bundle'] != 'uc_addresses') {
    return;
  }

  // Check if addresses may be set as default addresses as set in the config.
  if (empty($processor_config['mark_as_default_billing']) && empty($processor_config['mark_as_default_shipping'])) {

    // Addresses may not be marked as default. No reason to continue here.
    return;
  }
  $address_books = UcAddressesAddressBook::getAddressBooks();
  foreach ($address_books as $address_book) {
    if ($address_book
      ->isOwned()) {
      foreach (uc_addresses_address_types() as $address_type) {

        // Check for default addresses.
        if (variable_get('uc_addresses_use_default_' . $address_type, TRUE) && $processor_config['mark_as_default_' . $address_type]) {
          $address = $address_book
            ->getDefaultAddress($address_type);
          if (!$address) {

            // Mark one address as the default $address_type.
            $addresses = $address_book
              ->getAddresses();
            $address = reset($addresses);
          }
          $address_book
            ->setAddressAsDefault($address, $address_type);
          $address
            ->save();
        }
      }
    }
  }
}