You are here

function _connector_create_account in Connector 7

2 string references to '_connector_create_account'
connector_connector_action in ./connector.module
hook_connector_action in ./connector.api.php
Define custom actions.

File

./connector.module, line 456
Connector module

Code

function _connector_create_account($connector_name, $cid = NULL, $consumer = NULL, $access_token = NULL, $request_token = NULL) {
  $connector = _connector_get_connectors($connector_name);
  if (!$connector) {
    return FALSE;
  }
  $authname = $connector_name . '__' . $cid;
  if (variable_get('user_register', 1)) {
    $userinfo = array(
      'name' => $authname,
      'pass' => user_password(),
      'init' => $authname,
      'status' => variable_get('user_register', 1) == 1,
      'access' => REQUEST_TIME,
    );

    // Try to assign values from connection.
    $info = array();
    if (!empty($connector['information callback']) && is_callable($connector['information callback'])) {
      $info = $connector['information callback']($connector, $cid, array(), $access_token);
    }
    $allowed_fields = array(
      'name',
      'mail',
    );
    foreach ($info as $field) {
      if (isset($field['sync']) && $field['sync'] && in_array($field['sync'], $allowed_fields)) {
        $exists = db_select('users', 'u')
          ->fields('u')
          ->condition($field['sync'], $field['value'])
          ->execute()
          ->rowCount();
        if ($exists < 1) {
          $userinfo[$field['sync']] = $field['value'];
        }
      }
    }
    $new_account = user_save('', $userinfo);

    // Terminate if an error occured during user_save().
    if (!$new_account) {
      drupal_set_message(t("Error saving user account."), 'error');
    }
    else {
      watchdog('user', 'New external user: %name using module %module.', array(
        '%name' => $authname,
        '%module' => 'connector',
      ), WATCHDOG_NOTICE, l(t('edit'), 'user/' . $new_account->uid . '/edit'));
      return $new_account;
    }
  }
  else {
    drupal_set_message(t('Only site administrators can create new user accounts.'), 'error');
    if (isset($connector['logout callback']) && is_callable($connector['logout callback'])) {
      call_user_func($connector['logout callback'], $connector, $connection->cid);
    }
  }
}