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);
}
}
}