function csna_callback($provider) {

  global $user;
  $data = module_invoke($provider['module'], 'csna_provider_callback', $provider, $_REQUEST);

  // Forcing array format because of Sina weibo will return an Object.
  if (!is_array($data)) {
    $data = (array) $data;
  }

  if (isset($data['access_token'])) {
    $identity = $provider['provider_id'] . '_' . $data['uid'];
    $account = user_external_load($identity);

    if (!isset($account->uid)) {
      $name = $data['name'];
      $ac = user_load_by_name($name);
      if ($ac) {
        $separator = '_';
        $i = 0;
        do {
          $i++;
          $name = $data['name'] . $separator . $i;
        } while (user_load_by_name($name));
      }
      //User avatar
      if (isset($data['avatar_link'])) {
        $avatar_directory = file_default_scheme() . '://' . variable_get('user_picture_path', 'pictures');
        $avatar = system_retrieve_file($data['avatar_link'], $avatar_directory, TRUE, FILE_EXISTS_RENAME);
      }
      $edit = array(
        'name' => $name,
        'status' => 1,
        'picture' =>  isset($avatar->fid) ? $avatar->fid : '',
      );
      $account = user_save(NULL, $edit);
      user_set_authmaps($account, array('authname_csna' => $identity));
    }

    csna_execute_user_login($account);

    if (variable_get('csna_require_email', TRUE) && empty($account->mail)) {
      drupal_goto('csna/' . $account->uid . '/complete-register');
    }
  }
  drupal_goto('user');
}

查看代码的时候发现 '$separator = '_';' 变量的定义没有必要,会引起微小的性能损失。

CommentFileSizeAuthor
#2 unnecessary_variable-2599504-2.patch497 bytesedxxu
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

edxxu created an issue. See original summary.

edxxu’s picture

Here's the patch, please review, thx.

edxxu’s picture

Status: Active » Needs review