You are here

function domain_vbo_modify_user_domains in Domain VBO 7

domain_vbo_modify_user_domains: Action callback.

File

./domain_vbo.user.inc, line 54
Contains functions for Domain VBO User action.

Code

function domain_vbo_modify_user_domains(&$user, $context) {

  // Prevent action on user 0 (anonymous) user if it's passed in.
  if (!$user->uid) {
    return;
  }
  $action = $context['action'];
  $submitted_domains = $context['domains'];

  // This function is called for each entity (user).
  switch ($action) {
    case 'replace':
      $edit['domain_user'] = $submitted_domains;
      break;
    case 'add':

      // Get current user's domains and merge with submitted.
      $current_domains = domain_get_user_domains($user);

      // Just add the arrays with domains together.
      $combined_domains = $current_domains + $submitted_domains;
      $edit['domain_user'] = array_unique($combined_domains);
      break;
    case 'remove':

      // Get current user's domains and substract submitted.
      $current_domains = domain_get_user_domains($user);

      // Remove submitted domains from the current domains array.
      $subtracted_domains = array_diff_assoc($current_domains, $submitted_domains);
      $edit['domain_user'] = array_unique($subtracted_domains);
      break;
  }

  // Save new settings.
  // Function domain_user_save expects a third argument ($catalog), but it is
  // not used. Set it to a zero value here to prevent notices.
  domain_user_save($edit, $user, 0);
}