You are here

public function FeedsUserProcessor::rolesListSetTarget in Feeds 7.2

Sets role target on the user entity.

1 call to FeedsUserProcessor::rolesListSetTarget()
FeedsUserProcessor::setTargetElement in plugins/FeedsUserProcessor.inc
Overrides setTargetElement() to operate on a target item that is an user.

File

plugins/FeedsUserProcessor.inc, line 577
Contains FeedsUserProcessor.

Class

FeedsUserProcessor
Feeds processor plugin. Create users from feed items.

Code

public function rolesListSetTarget(FeedsSource $source, $entity, $target, array $values, array $mapping) {

  // Add in defaults.
  $defaults = $this
    ->rolesListDefaults();
  $mapping += $defaults;
  $mapping['allowed_roles'] += $defaults['allowed_roles'];

  // Eventually revoke roles. Do not touch roles that are not allowed to set
  // by the source.
  if ($mapping['revoke_roles']) {
    foreach ($mapping['allowed_roles'] as $rid) {
      unset($entity->roles[$rid]);
    }
  }
  foreach ($values as $value) {
    $role = NULL;
    $value = trim($value);
    if (strlen($value) < 1) {

      // No role provided. Continue to the next role.
      continue;
    }
    switch ($mapping['role_search']) {
      case self::ROLE_SEARCH_NAME:
        $role = user_role_load_by_name($value);
        if (!$role && !empty($mapping['autocreate'])) {

          // Create new role if role doesn't exist.
          $role = new stdClass();
          $role->name = $value;
          user_role_save($role);
          $role = user_role_load_by_name($role->name);
        }
        break;
      case self::ROLE_SEARCH_RID:
        $role = user_role_load($value);
        break;
    }
    if ($role) {

      // Check if the role may be assigned.
      if (isset($mapping['allowed_roles'][$role->rid]) && !$mapping['allowed_roles'][$role->rid]) {

        // This role may *not* be assiged.
        continue;
      }
      $entity->roles[$role->rid] = $role->name;
    }
  }
}