Corrected handling of anonymizeIp to use global gat object, resolves #39038
authorfrancois <francois@735d13b6-9817-0410-8766-e36946ffe9aa>
Wed, 28 Nov 2012 13:32:46 +0000 (13:32 +0000)
committerfrancois <francois@735d13b6-9817-0410-8766-e36946ffe9aa>
Wed, 28 Nov 2012 13:32:46 +0000 (13:32 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Extensions/rsgoogleanalytics/trunk@68062 735d13b6-9817-0410-8766-e36946ffe9aa

ChangeLog
class.tx_rsgoogleanalytics.php

index 6617ccd..53b0d19 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 \r
        * Removed usage of deprecated method setAllowHash, resolves #43390\r
        * Changed usage of setAllowLinker to use boolean value, resolves #43391\r
+       * Corrected handling of anonymizeIp to use global gat object, resolves #39038\r
 \r
 2012-05-09 Francois Suter  <typo3@cobweb.ch>\r
 \r
index a312ab3..afe8c72 100644 (file)
@@ -257,13 +257,15 @@ class tx_rsgoogleanalytics implements t3lib_singleton {
                        $this->commands[502] = $this->buildCommand('setDetectTitle', array(FALSE));
                }
                if ($this->modConfig['disableDataTracking.']['anonymizeIp']) {
-                       $this->commands[503] = $this->buildCommand('anonymizeIp', array());
+                       $this->commands[503] = $this->buildGatCommand('anonymizeIp', array());
                }
        }
 
        /**
         * Assembles a single tracker command
         *
+        * If the command needs to be applied to the global gat object, use the buildGatCommand() method instead.
+        *
         * @param string $command The name of the command
         * @param array $parameter The list of call parameters
         * @return string The assembled JavaScript command
@@ -285,6 +287,32 @@ class tx_rsgoogleanalytics implements t3lib_singleton {
        }
 
        /**
+        * Assembles a single command for the gat object
+        *
+        * A few commands (mostly anonymizeIp) refer to the global gat object, rather than the page tracker.
+        * This method handles these special needs.
+        *
+        * @param string $command The name of the command
+        * @param array $parameter The list of call parameters
+        * @return string The assembled JavaScript command
+        */
+       protected function buildGatCommand($command, array $parameter) {
+                       // Generate traditional code
+               if (empty($this->modConfig['asynchronous'])) {
+                       $command = "\t" . '_gat._' . $command . '(' . implode(', ', $this->wrapJSParams($parameter)) . ');';
+
+                       // Generate asynchronous code
+               } else {
+                       $command = "\t_gaq.push(['_gat._" . $command . "'";
+                       if (count($parameter) > 0) {
+                               $command .= ', ' . implode(', ', $this->wrapJSParams($parameter));
+                       }
+                       $command .= ']);';
+               }
+               return $command;
+       }
+
+       /**
         * Wraps and escapes a list of parameters for proper usage in JavaScript
         *
         * @param array $parameter List of parameters to handle