6 * Installation file for Google Analytics module.
9 function googleanalytics_install() {
10 variable_set('googleanalytics_visibility', 0);
12 // Remove tracking from all administrative pages, see http://drupal.org/node/34970.
20 variable_set('googleanalytics_pages', implode("\n", $pages));
23 function googleanalytics_uninstall() {
24 variable_del('googleanalytics_account');
25 variable_del('googleanalytics_legacy_version');
26 variable_del('googleanalytics_codesnippet_before');
27 variable_del('googleanalytics_codesnippet_after');
28 variable_del('googleanalytics_segmentation');
29 variable_del('googleanalytics_trackoutgoing');
30 variable_del('googleanalytics_trackmailto');
31 variable_del('googleanalytics_trackfiles');
32 variable_del('googleanalytics_trackfiles_extensions');
33 variable_del('googleanalytics_cache');
34 variable_del('googleanalytics_last_cache');
35 variable_del('googleanalytics_site_search');
36 variable_del('googleanalytics_trackadsense');
37 variable_del('googleanalytics_js_scope');
38 variable_del('googleanalytics_custom');
39 variable_del('googleanalytics_roles');
40 variable_del('googleanalytics_visibility');
41 variable_del('googleanalytics_pages');
45 * Remove cache directory if module is disabled (or uninstalled).
47 function googleanalytics_disable() {
48 $path = file_directory_path() .
'/googleanalytics';
49 if (file_exists($path)) {
50 file_delete($path .
'/urchin.js');
51 file_delete($path .
'/ga.js');
57 function googleanalytics_update_1() {
60 $result = db_query("SELECT * FROM {role}");
61 while ($role = db_fetch_object($result)) {
62 // can't use empty spaces in varname
63 $role_varname = str_replace(' ', '_', $role->name
);
64 variable_set('googleanalytics_track_'.
$role->rid
, !variable_get("googleanalytics_track_{$role_varname}", FALSE
));
65 variable_del("googleanalytics_track_{$role_varname}");
67 variable_set('googleanalytics_track__user1', FALSE
);
73 * Upgrade old extension variable to new and use old name as enabled/disabled flag.
75 function googleanalytics_update_6000() {
78 variable_set('googleanalytics_trackfiles_extensions', variable_get('googleanalytics_trackfiles', '7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip'));
79 $trackfiles = variable_get('googleanalytics_trackfiles', '7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip') ? TRUE
: FALSE
;
80 variable_set('googleanalytics_trackfiles', $trackfiles);
81 $ret[] = array('success' => TRUE
, 'query' => 'Updated download tracking settings.');
86 function googleanalytics_update_6001() {
89 variable_set('googleanalytics_visibility', 0);
91 // Remove tracking from all administrative pages, see http://drupal.org/node/34970.
98 variable_set('googleanalytics_pages', implode("\n", $pages));
99 $ret[] = array('success' => TRUE
, 'query' => 'Added page tracking to every page except the listed pages: '.
implode(', ', $pages));
105 * Upgrade role settings and per user tracking settings
106 * of "User 1" and remove outdated tracking variables.
108 function googleanalytics_update_6002() {
111 // Upgrade enabled/disabled roles to new logic (correct for upgrades from 5.x-1.4 and 6.x-1.0).
113 foreach (user_roles() as
$rid => $name) {
114 if (variable_get('googleanalytics_track_'.
$rid, FALSE
)) {
115 // Role ID is activated for user tracking.
117 $ret[] = array('success' => TRUE
, 'query' => 'Enabled page tracking for role: '.
$name);
120 $ret[] = array('success' => TRUE
, 'query' => 'Disabled page tracking for role: '.
$name);
123 variable_set('googleanalytics_roles', $roles);
125 // Upgrade disabled tracking of "user 1" to new logic.
126 if (!$track_user1 = variable_get('googleanalytics_track__user1', 1)) {
127 variable_set('googleanalytics_custom', 1);
129 // Load user 1 object, set appropiate value and save new user settings back.
130 $account = user_load(array('uid' => 1));
131 $account = user_save($account, array('googleanalytics' => array('custom' => 0)), 'account');
132 $ret[] = array('success' => TRUE
, 'query' => 'Disabled user specific page tracking for website administrator.');
135 // Delete outdated tracking settings.
136 $ret[] = update_sql("DELETE FROM {variable} WHERE name LIKE 'googleanalytics_track_%'");
142 * #262468: Clear menu cache to solve stale menu data in 5.x-1.5 and 6.x-1.1
144 function googleanalytics_update_6003() {
151 * Change visibility setting for path "user/*".
153 function googleanalytics_update_6004() {
156 // Orginal pages setting.
164 $diff = array_diff($pages, preg_split('/(\r\n?|\n)/', variable_get('googleanalytics_pages', implode("\n", $pages))));
166 // No diff to original settings found. Update with new settings.
173 variable_set('googleanalytics_pages', implode("\n", $pages));
174 $ret[] = array('success' => TRUE
, 'query' => 'Path visibility filter setting changed from "user*" to "user/*/*".');
177 $ret[] = array('success' => TRUE
, 'query' => 'Custom path visibility filter setting found. Update skipped!');
184 * Change visibility setting for path "admin*".
186 function googleanalytics_update_6005() {
189 // Orginal pages setting.
197 $diff = array_diff($pages, preg_split('/(\r\n?|\n)/', variable_get('googleanalytics_pages', implode("\n", $pages))));
199 // No diff to original settings found. Update with new settings.
207 variable_set('googleanalytics_pages', implode("\n", $pages));
208 $ret[] = array('success' => TRUE
, 'query' => 'Path visibility filter setting changed from "admin*" to "admin" and "admin/*".');
211 $ret[] = array('success' => TRUE
, 'query' => 'Custom path visibility filter setting found. Update skipped!');
218 * Upgrade custom javascript settings.
220 function googleanalytics_update_6006() {
223 variable_set('googleanalytics_codesnippet_before', variable_get('googleanalytics_codesnippet', ''));
224 variable_del('googleanalytics_codesnippet');
225 $ret[] = array('success' => TRUE
, 'query' => 'Upgraded custom javascript codesnippet setting.');
231 * Remove "User identifier" and "User name" from segmentation fields.
233 * This is a data protection and privacy law change. For more information see Google Analytics
234 * terms of use section 8.1 (http://www.google.com/analytics/en-GB/tos.html).
236 function googleanalytics_update_6007() {
239 $profile_fields = variable_get('googleanalytics_segmentation', array());
240 unset($profile_fields['uid']);
241 unset($profile_fields['name']);
242 variable_set('googleanalytics_segmentation', $profile_fields);
243 $ret[] = array('success' => TRUE
, 'query' => 'Removed "User identifier" and "User name" from segmentation fields.');
249 * Update list of default file extensions.
251 function googleanalytics_update_6008() {
254 if (variable_get('googleanalytics_trackfiles_extensions', '') == '7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip') {
255 variable_set('googleanalytics_trackfiles_extensions', '7z|aac|arc|arj|asf|asx|avi|bin|csv|doc|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|msi|msp|pdf|phps|png|ppt|qtm?|ra(m|r)?|sea|sit|tar|tgz|torrent|txt|wav|wma|wmv|wpd|xls|xml|z|zip');
257 $ret[] = array('success' => TRUE
, 'query' => 'The default extensions for download tracking have been updated.');