Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CustomJsTracker/TrackingCode/PiwikJsManipulator.php')
-rw-r--r--plugins/CustomJsTracker/TrackingCode/PiwikJsManipulator.php77
1 files changed, 77 insertions, 0 deletions
diff --git a/plugins/CustomJsTracker/TrackingCode/PiwikJsManipulator.php b/plugins/CustomJsTracker/TrackingCode/PiwikJsManipulator.php
new file mode 100644
index 0000000000..0fe821c4e6
--- /dev/null
+++ b/plugins/CustomJsTracker/TrackingCode/PiwikJsManipulator.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomJsTracker\TrackingCode;
+
+use Piwik\Piwik;
+
+class PiwikJsManipulator
+{
+ const HOOK = '/*!!! pluginTrackerHook */';
+ /**
+ * @var string
+ */
+ private $content;
+
+ /** @var PluginTrackerFiles */
+ private $pluginTrackerFiles;
+
+ public function __construct($content, PluginTrackerFiles $pluginTrackerFiles)
+ {
+ $this->content = $content;
+ $this->pluginTrackerFiles = $pluginTrackerFiles;
+ }
+
+ public function manipulateContent()
+ {
+ $files = $this->pluginTrackerFiles->find();
+
+ foreach ($files as $file) {
+ $trackerExtension = $this->getSignatureWithContent($file->getName(), $file->getContent());
+
+ // for some reasons it is /*!!! in piwik.js minified and /*!! in js/piwik.js unminified
+ $this->content = str_replace(array(self::HOOK, '/*!! pluginTrackerHook */'), self::HOOK . $trackerExtension, $this->content);
+ }
+
+ $content = $this->content;
+
+ /**
+ * Triggered after the Matomo JavaScript tracker has been generated and shortly before the tracker file
+ * is written to disk. You can listen to this event to for example automatically append some code to the JS
+ * tracker file.
+ *
+ * **Example**
+ *
+ * function onManipulateJsTracker (&$content) {
+ * $content .= "\nPiwik.DOM.onLoad(function () { console.log('loaded'); });";
+ * }
+ *
+ * @param string $content the generated JavaScript tracker code
+ */
+ Piwik::postEvent('CustomMatomoJs.manipulateJsTracker', array(&$content));
+ $this->content = $content;
+
+ return $this->content;
+ }
+
+ /**
+ * @param string $name
+ * @param string $content
+ * @return string
+ */
+ private function getSignatureWithContent($name, $content)
+ {
+ return sprintf(
+ "\n\n/* GENERATED: %s */\n%s\n/* END GENERATED: %s */\n",
+ $name,
+ $content,
+ $name
+ );
+ }
+
+}