diff --git a/modules/statistics/statistics.module b/modules/statistics/statistics.module index 0ba9d7f..8f639b0 100644 --- a/modules/statistics/statistics.module +++ b/modules/statistics/statistics.module @@ -79,7 +79,7 @@ function statistics_exit() { db_insert('accesslog') ->fields(array( 'title' => strip_tags(drupal_get_title()), - 'path' => $_GET['q'], + 'path' => substr($_GET['q'], 0, 255), 'url' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', 'hostname' => ip_address(), 'uid' => $user->uid, diff --git a/modules/statistics/statistics.test b/modules/statistics/statistics.test index 126828f..cd70588 100644 --- a/modules/statistics/statistics.test +++ b/modules/statistics/statistics.test @@ -116,6 +116,15 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase { $this->assertEqual(array_intersect_key($log[5], $expected), $expected); $node_counter = statistics_get($this->node->nid); $this->assertIdentical($node_counter['totalcount'], '3'); + + // Create an alias longer than 255 + $big_path = $this->randomString(256); + + // Test logging the big path truncated + $this->drupalGet($big_path); + $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC); + $this->assertTrue(is_array($log) && count($log) == 7, t('Page request was logged.')); + $this->assertEqual($log[6]['path'], substr($big_path, 0, 255)); } }