Commit c69191d2 authored by Steven Ayers's avatar Steven Ayers
Browse files

Issue #1936276: IPv6 in database

parent 5aa2efd9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ function visitors_hit_details($visitors_id) {
        'title' => t('Whois lookup'),
      ),
    );
    $ip = long2ip($hit_details->visitors_ip);
    $ip = inet_ntop($hit_details->visitors_ip);
    $array = array(
      'URL'            => l($url, $url),
      'Title'          => check_plain($hit_details->visitors_title),
+3 −3
Original line number Diff line number Diff line
@@ -48,14 +48,14 @@ function visitors_host_hits($ip) {
    )
  );
  $query->fields('u', array('name', 'uid'));
  $query->condition('v.visitors_ip', sprintf('%u', ip2long($ip)), '=');
  $query->condition('v.visitors_ip', inet_pton($ip), '=');
  visitors_date_filter_sql_condition($query);
  $query->orderByHeader($header);
  $query->limit($items_per_page);

  $count_query = db_select('visitors', 'v');
  $count_query->addExpression('COUNT(*)');
  $count_query->condition('visitors_ip', sprintf('%u', ip2long($ip)));
  $count_query->condition('visitors_ip', inet_pton($ip));
  visitors_date_filter_sql_condition($count_query);
  $query->setCountQuery($count_query);
  $results = $query->execute();
@@ -145,7 +145,7 @@ function visitors_hosts() {
  );

  foreach ($results as $data) {
    $ip = long2ip($data->visitors_ip);
    $ip = inet_ntop($data->visitors_ip);
    $i += 1;

    $rows[] = array(
+2 −2
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
 *   TRUE if the ip is in a valid format, FALSE on failure.
 */
function visitors_is_ip_valid($ip) {
  return is_string(inet_pton($ip));
  return (inet_pton($ip) != FALSE);
}

/**
@@ -28,7 +28,7 @@ function visitors_is_ip_valid($ip) {
 *   string
 */
function visitors_get_ip_str() {
  return sprintf("%u", ip2long(ip_address()));
  return inet_pton(ip_address());
}

/**
+41 −0
Original line number Diff line number Diff line
@@ -121,3 +121,44 @@ function visitors_update_7110() {
  }
  variable_del('visitors_exclude_administer_users');
}

/**
 * Support IPv6.
 */
function visitors_update_7120(&$sandbox) {
  if (!isset($sandbox['progress'])) {
    $sandbox['progress'] = 0;
    $sandbox['last_id'] = 0;
    $sandbox['max'] = db_query('SELECT COUNT(visitors_id) FROM {visitors}')
      ->fetchField();
  }

  $logs = db_select('visitors', 'v')
    ->fields('v', array(
      'visitors_id',
      'visitors_ip',
    ))
    ->condition('visitors_id', $sandbox['last_id'], '>')
    ->range(0, 75)
    ->orderBy('visitors_id', 'ASC')
    ->execute();

  foreach ($logs as $log) {
    $ip_address = long2ip($log->visitors_ip);
    $packed = inet_pton($ip_address);

    if ($packed != FALSE) {
      db_update('visitors')
        ->fields(array(
          'visitors_ip' => $packed,
        ))
        ->condition('visitors_id', $log->visitors_id)
        ->execute();
    }

    $sandbox['progress'] += 1;
    $sandbox['last_id'] = $log->visitors_id;
  }
  $sandbox['#finished'] = empty($sandbox['max']) ? 1 : $sandbox['progress'] / $sandbox['max'];

}