You are here

function _connector_add_connection in Connector 6

Same name and namespace in other branches
  1. 7 connector.module \_connector_add_connection()

File

./connector.module, line 414
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;
  }
  else {
    if (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) {
      $result = (bool) db_query("INSERT INTO {authmap} (uid, authname, module) VALUES (%d, '%s','connector')", $uid, $authname);
      if (!_connector_get_primary_connection($uid)) {
        _connector_set_primary_connection($uid, $authname);
      }
    }
    else {
      $result = TRUE;
    }
  }
  return $result;
}