You are here

function _connector_add_connection in Connector 7

Same name and namespace in other branches
  1. 6 connector.module \_connector_add_connection()
1 call to _connector_add_connection()
_connect_user_after_register in modules/connector_action_default_register_form/connector_action_default_register_form.module
Submit callback to add a connection after user register.
2 string references to '_connector_add_connection'
connector_connector_action in ./connector.module
hook_connector_action in ./connector.api.php
Define custom actions.

File

./connector.module, line 509
Connector module

Code

function _connector_add_connection($connector_name, $cid = NULL, $uid = NULL) {
  global $user;
  $connector = _connector_get_connectors($connector_name);
  if (!$connector) {
    return FALSE;
  }
  $result = FALSE;
  if (empty($uid)) {
    $uid = $user->uid;
  }
  elseif (is_object($uid)) {
    $uid = $uid->uid;
  }

  //Fetch connector ID
  if ($cid === NULL && isset($connector['id callback']) && is_callable($connector['id callback'])) {
    $cid = call_user_func($connector['id callback'], $connector);
  }

  // Check that we have an external id to connect with
  if ($cid !== NULL) {
    $authname = $connector_name . '__' . $cid;
    $account = user_external_load($authname);

    // Check if the external id already connected to someone
    if ($account) {
      db_delete('authmap')
        ->condition('uid', $account->uid)
        ->condition('authname', $authname)
        ->execute();
    }
    $result = (bool) db_insert('authmap')
      ->fields(array(
      'uid' => $uid,
      'authname' => $authname,
      'module' => 'connector',
    ))
      ->execute();
    if (!_connector_get_primary_connection($uid)) {
      _connector_set_primary_connection($uid, $authname);
    }
  }
  return $result;
}