You are here

function domain_rules_action_set_entity_domain in Domain Rules 7

File

./domain_rules.module, line 216
domain_rules.module @description Port of 'Domain rules' by shushu for Drupal7

Code

function domain_rules_action_set_entity_domain($subdomain, $entity) {
  $domain = domain_lookup(NULL, $subdomain, TRUE);
  $dwrapper = entity_metadata_wrapper('domain_entity', $domain);
  if (isset($domain['domain_id'])) {
    $domain_id = $domain['domain_id'];

    // Based on #893450 - use -1 in case of 0
    if ($domain_id == 0) {
      $domain_id = -1;
    }

    // Check if it's an allowed entity types:
    $allowed_entity_types = domain_entity_allowed_entity_types();
    if (in_array($entity
      ->type(), array_keys($allowed_entity_types))) {

      // Get domain_entity field type instances:
      if ($field_instance = domain_entity_entity_field_instance($entity
        ->type())) {
        $field_instance_name = $field_instance['name'];
      }
      $values = $entity->{$field_instance_name}
        ->value();
      $values[] = array(
        'domain_id' => $domain_id,
      );
      $entity->{$field_instance_name}
        ->set($values);
      $entity
        ->save();
    }
    else {
      drupal_set_message(t('Entity of type %type can\'t get domain.', array(
        '%type' => $entity
          ->type(),
      )), 'error');
    }
  }
  else {
    drupal_set_message(t('The domain %domain does not exist.', array(
      '%domain' => $subdomain,
    )), 'error');
  }
  return array(
    'entity' => $entity,
  );
}