You are here

function hybridauth_user_identity_delete in HybridAuth Social Login 7.2

Same name and namespace in other branches
  1. 6.2 hybridauth.pages.inc \hybridauth_user_identity_delete()
1 string reference to 'hybridauth_user_identity_delete'
hybridauth_menu in ./hybridauth.module
Implements hook_menu().

File

./hybridauth.pages.inc, line 738
HybridAuth module pages.

Code

function hybridauth_user_identity_delete($form, &$form_state, $account, $id) {
  $del_identity = _hybridauth_identity_load_by_id($id);
  if (!$del_identity || $account->uid != $del_identity['uid']) {
    drupal_set_message(t('You are trying to delete non-existing identity.'), 'error');
    drupal_access_denied();

    // See https://drupal.org/node/2020351 and
    // https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_access_denied/7
    drupal_exit();
  }
  $del_identity_data = unserialize($del_identity['data']);
  $username = format_username($account);
  $question = t('Are you sure you want to detach the HybridAuth identity !identity from %user?', array(
    '!identity' => l($del_identity_data['profileURL'], $del_identity_data['profileURL'], array(
      'attributes' => array(
        'target' => '_blank',
      ),
      'external' => TRUE,
    )),
    '%user' => $username,
  ));
  $form = array();
  $form['#user'] = $account;
  $form['#del_identity'] = $del_identity;
  $form['#del_identity_data'] = $del_identity_data;
  $form['question'] = array(
    '#markup' => $question,
    '#prefix' => '<div>',
    '#suffix' => '</div>',
  );
  if (!empty($account->data['hybridauth']) && $account->data['hybridauth']['provider'] == $del_identity_data['provider'] && $account->data['hybridauth']['identifier'] == $del_identity_data['identifier']) {
    $identities = _hybridauth_identity_load_by_uid($account->uid);
    $providers = hybridauth_providers_list();
    $options = array();
    foreach ($identities as $key => $identity) {
      $data = unserialize($identity['data']);
      if ($key != $id) {
        $options[$key] = $providers[$identity['provider']] . ' - ' . l($data['profileURL'], $data['profileURL'], array(
          'attributes' => array(
            'target' => '_blank',
          ),
          'external' => TRUE,
        ));
      }
    }
    if (!empty($options)) {
      $form['explanation'] = array(
        '#markup' => t('This identity was used to create your account. Please choose another identity to replace it.'),
        '#prefix' => '<div>',
        '#suffix' => '</div>',
      );
      $form['identity_choice'] = array(
        '#type' => 'radios',
        // '#title' => t('Identities'),
        '#options' => $options,
        '#default_value' => count($options) == 1 ? $key : NULL,
      );
    }
    else {
      $form['explanation'] = array(
        '#markup' => t('This identity was used to create your account. To delete it you should first add another identity to your account.'),
        '#prefix' => '<div>',
        '#suffix' => '</div>',
      );

      // Add more identities.
      if (user_access('use hybridauth')) {
        $form['hybridauth_widget'] = array(
          '#type' => 'hybridauth_widget',
          '#title' => t('Add more identities'),
          '#weight' => 10,
          '#hybridauth_widget_type' => 'list',
          '#hybridauth_destination' => '',
          '#hybridauth_destination_error' => '',
        );
      }
      return $form;
    }
  }
  $form = confirm_form($form, '', 'user/' . $account->uid . '/hybridauth');
  drupal_set_title($username);
  return $form;
}