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_js_scope');
37 variable_del('googleanalytics_custom');
38 variable_del('googleanalytics_roles');
39 variable_del('googleanalytics_visibility');
40 variable_del('googleanalytics_pages');
44 * Remove cache directory if module is disabled (or uninstalled).
46 function googleanalytics_disable() {
47 $path = file_directory_path() .
'/googleanalytics';
48 if (file_exists($path)) {
49 file_delete($path .
'/urchin.js');
50 file_delete($path .
'/ga.js');
56 function googleanalytics_update_1() {
59 $result = db_query("SELECT * FROM {role}");
60 while ($role = db_fetch_object($result)) {
61 // can't use empty spaces in varname
62 $role_varname = str_replace(' ', '_', $role->name
);
63 variable_set('googleanalytics_track_'.
$role->rid
, !variable_get("googleanalytics_track_{$role_varname}", FALSE
));
64 variable_del("googleanalytics_track_{$role_varname}");
66 variable_set('googleanalytics_track__user1', FALSE
);
71 function googleanalytics_update_6000() {
74 variable_set('googleanalytics_trackfiles_extensions', variable_get('googleanalytics_trackfiles', GA_TRACKFILES_EXTENSIONS
));
75 $trackfiles = variable_get('googleanalytics_trackfiles', GA_TRACKFILES_EXTENSIONS
) ? TRUE
: FALSE
;
76 variable_set('googleanalytics_trackfiles', $trackfiles);
77 $ret[] = array('success' => TRUE
, 'query' => 'Updated download tracking settings.');
82 function googleanalytics_update_6001() {
85 variable_set('googleanalytics_visibility', 0);
87 // Remove tracking from all administrative pages, see http://drupal.org/node/34970.
94 variable_set('googleanalytics_pages', implode("\n", $pages));
95 $ret[] = array('success' => TRUE
, 'query' => 'Added page tracking to every page except the listed pages: '.
implode(', ', $pages));
101 * Upgrade role settings and per user tracking settings
102 * of "User 1" and remove outdated tracking variables.
104 function googleanalytics_update_6002() {
107 // Upgrade enabled/disabled roles to new logic (correct for upgrades from 5.x-1.4 and 6.x-1.0).
109 foreach (user_roles() as
$rid => $name) {
110 if (variable_get('googleanalytics_track_'.
$rid, FALSE
)) {
111 // Role ID is activated for user tracking.
113 $ret[] = array('success' => TRUE
, 'query' => 'Enabled page tracking for role: '.
$name);
116 $ret[] = array('success' => TRUE
, 'query' => 'Disabled page tracking for role: '.
$name);
119 variable_set('googleanalytics_roles', $roles);
121 // Upgrade disabled tracking of "user 1" to new logic.
122 if (!$track_user1 = variable_get('googleanalytics_track__user1', 1)) {
123 variable_set('googleanalytics_custom', 1);
125 // Load user 1 object, set appropiate value and save new user settings back.
126 $account = user_load(array('uid' => 1));
127 $account = user_save($account, array('googleanalytics' => array('custom' => 0)), 'account');
128 $ret[] = array('success' => TRUE
, 'query' => 'Disabled user specific page tracking for website administrator.');
131 // Delete outdated tracking settings.
132 $ret[] = update_sql("DELETE FROM {variable} WHERE name LIKE 'googleanalytics_track_%'");
138 * #262468: Clear menu cache to solve stale menu data in 5.x-1.5 and 6.x-1.1
140 function googleanalytics_update_6003() {
147 * Change visibility setting for path "user/*".
149 function googleanalytics_update_6004() {
152 // Orginal pages setting.
160 $diff = array_diff($pages, preg_split('/(\r\n?|\n)/', variable_get('googleanalytics_pages', implode("\n", $pages))));
162 // No diff to original settings found. Update with new settings.
169 variable_set('googleanalytics_pages', implode("\n", $pages));
170 $ret[] = array('success' => TRUE
, 'query' => 'Path visibility filter setting changed from "user*" to "user/*/*".');
173 $ret[] = array('success' => TRUE
, 'query' => 'Custom path visibility filter setting found. Update skipped!');
180 * Change visibility setting for path "admin*".
182 function googleanalytics_update_6005() {
185 // Orginal pages setting.
193 $diff = array_diff($pages, preg_split('/(\r\n?|\n)/', variable_get('googleanalytics_pages', implode("\n", $pages))));
195 // No diff to original settings found. Update with new settings.
203 variable_set('googleanalytics_pages', implode("\n", $pages));
204 $ret[] = array('success' => TRUE
, 'query' => 'Path visibility filter setting changed from "admin*" to "admin" and "admin/*".');
207 $ret[] = array('success' => TRUE
, 'query' => 'Custom path visibility filter setting found. Update skipped!');
214 * Upgrade custom javascript settings.
216 function googleanalytics_update_6006() {
219 variable_set('googleanalytics_codesnippet_before', variable_get('googleanalytics_codesnippet', ''));
220 variable_del('googleanalytics_codesnippet');
221 $ret[] = array('success' => TRUE
, 'query' => 'Upgraded custom javascript codesnippet setting.');
227 * Remove "User identifier" and "User name" from segmentation fields.
229 * This is a data protection and privacy law change. For more information see Google Analytics
230 * terms of use section 8.1 (http://www.google.com/analytics/en-GB/tos.html).
232 function googleanalytics_update_6007() {
235 $profile_fields = variable_get('googleanalytics_segmentation', array());
236 unset($profile_fields['uid']);
237 unset($profile_fields['name']);
238 variable_set('googleanalytics_segmentation', $profile_fields);
239 $ret[] = array('success' => TRUE
, 'query' => 'Removed "User identifier" and "User name" from segmentation fields.');