You are here

function commerce_registration_load_product_registrations in Commerce Registration 7.2

Action callback.

Loads all registrations associated with a commerce line item's product.

Parameters

CommerceLineItem $line_item: The Commerce Line Item for which to return all associated registrations.

Return value

array A list of registrations.

Related topics

1 string reference to 'commerce_registration_load_product_registrations'
commerce_registration_default_rules_configuration in ./commerce_registration.rules_defaults.inc
Implements hook_default_rules_configuration().

File

./commerce_registration.rules.inc, line 273
Commerce Registration rules file.

Code

function commerce_registration_load_product_registrations($line_item) {
  $entities = array();
  $line_item_wrapper = entity_metadata_wrapper('commerce_line_item', $line_item);
  if (in_array($line_item_wrapper->type
    ->value(), commerce_product_line_item_types())) {
    $product_id = $line_item_wrapper->commerce_product->product_id
      ->value();
    $query = new EntityFieldQuery();
    $result = $query
      ->entityCondition('entity_type', 'registration')
      ->propertyCondition('entity_type', 'commerce_product')
      ->propertyCondition('entity_id', $product_id)
      ->propertyCondition('order_id', $line_item->order_id)
      ->propertyOrderBy('registration_id', 'asc')
      ->execute();
    if (!empty($result['registration'])) {
      $entities = entity_load('registration', array_keys($result['registration']));
      if (!$entities) {
        throw new RulesEvaluationException('Unable to load registrations associated with line item "@id" on order "@oid"', array(
          '@id' => $line_item->line_item_id,
          '@oid' => $line_item->order_id,
        ));
      }
    }
  }
  return array(
    'line_item_registrations' => $entities ? array_values($entities) : array(),
  );
}