You are here

function hybridauth_update_7006 in HybridAuth Social Login 7.2

Remove users passwords stored in plaintext from hybridauth_identity DB table.

File

./hybridauth.install, line 300
Install, update and uninstall functions for the HybridAuth module.

Code

function hybridauth_update_7006(&$sandbox) {

  // Calculate the total number of HybridAuth identities.
  if (!isset($sandbox['total'])) {
    $sandbox['total'] = db_select('hybridauth_identity', 'ha_id')
      ->condition('data', '%' . db_like('pass') . '%', 'LIKE')
      ->countQuery()
      ->execute()
      ->fetchField();
    if (!$sandbox['total']) {
      return t('There are no HybridAuth identities to process.');
    }
    $sandbox['current'] = 0;
  }

  // Process this number of HybridAuth identities per pass.
  $identities_per_pass = 10;

  // Get HybridAuth identities ids for one pass.
  $result = db_select('hybridauth_identity', 'ha_id')
    ->fields('ha_id', array(
    'id',
  ))
    ->condition('data', '%' . db_like('pass') . '%', 'LIKE')
    ->orderBy('ha_id.id')
    ->range($sandbox['current'], $identities_per_pass)
    ->execute();

  // Remove user passwords from HybridAuth identities.
  foreach ($result as $row) {
    $identity = _hybridauth_identity_load_by_id($row->id);
    $data = unserialize($identity['data']);
    if (isset($data['pass'])) {
      unset($data['pass']);
      _hybridauth_identity_save($data, $identity['uid']);
    }
    $sandbox['current']++;
  }
  $sandbox['#finished'] = $sandbox['current'] / $sandbox['total'];
  if ($sandbox['#finished'] === 1) {
    return t('@total HybridAuth identities were processed.', array(
      '@total' => $sandbox['total'],
    ));
  }
}