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:
authorsgiehl <stefan@matomo.org>2020-02-24 11:18:50 +0300
committersgiehl <stefan@matomo.org>2020-02-24 11:18:50 +0300
commit31dcb9dbb01460bf9a68dc8b7bc826a05c367f74 (patch)
treee7dbaf14fb8cf8e34f421df53e22fc88b1b7b0c2 /plugins/CustomJsTracker
parent92e1b8bc5b8baa7683e4aa7a6abdd40064cd448b (diff)
parent7c517de3c74b8417230d813ae35e6b5eba06605e (diff)
Merge branch '3.x-dev' into 4.x-dev
Diffstat (limited to 'plugins/CustomJsTracker')
-rw-r--r--plugins/CustomJsTracker/TrackingCode/PluginTrackerFiles.php48
-rw-r--r--plugins/CustomJsTracker/tests/Integration/PluginTrackerFilesTest.php87
2 files changed, 24 insertions, 111 deletions
diff --git a/plugins/CustomJsTracker/TrackingCode/PluginTrackerFiles.php b/plugins/CustomJsTracker/TrackingCode/PluginTrackerFiles.php
index e062a73516..b35f89364b 100644
--- a/plugins/CustomJsTracker/TrackingCode/PluginTrackerFiles.php
+++ b/plugins/CustomJsTracker/TrackingCode/PluginTrackerFiles.php
@@ -17,11 +17,6 @@ class PluginTrackerFiles
const MIN_TRACKER_FILE = 'tracker.min.js';
/**
- * @var string
- */
- protected $dir;
-
- /**
* @var Plugin\Manager
*/
private $pluginManager;
@@ -33,7 +28,6 @@ class PluginTrackerFiles
public function __construct()
{
- $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/';
$this->pluginManager = Plugin\Manager::getInstance();
}
@@ -42,6 +36,18 @@ class PluginTrackerFiles
$this->ignoreMinified = true;
}
+ protected function getDirectoriesToLook()
+ {
+ $dirs = array();
+ $manager = Plugin\Manager::getInstance();
+ foreach ($manager->getPluginsLoadedAndActivated() as $pluginName => $plugin) {
+ if ($plugin->isTrackerPlugin()) {
+ $dirs[$pluginName] = rtrim(Plugin\Manager::getPluginDirectory($pluginName), '/') . '/';
+ }
+ }
+ return $dirs;
+ }
+
/**
* @return File[]
*/
@@ -49,25 +55,11 @@ class PluginTrackerFiles
{
$jsFiles = array();
- if (!$this->ignoreMinified) {
- $trackerFiles = \_glob($this->dir . '*/' . self::MIN_TRACKER_FILE);
-
- foreach ($trackerFiles as $trackerFile) {
- $plugin = $this->getPluginNameFromFile($trackerFile);
- if ($this->isPluginActivated($plugin)) {
- $jsFiles[$plugin] = new File($trackerFile);
- }
- }
- }
-
- $trackerFiles = \_glob($this->dir . '*/' . self::TRACKER_FILE);
-
- foreach ($trackerFiles as $trackerFile) {
- $plugin = $this->getPluginNameFromFile($trackerFile);
- if (!isset($jsFiles[$plugin])) {
- if ($this->isPluginActivated($plugin)) {
- $jsFiles[$plugin] = new File($trackerFile);
- }
+ foreach ($this->getDirectoriesToLook() as $pluginName => $pluginDir) {
+ if (!$this->ignoreMinified && file_exists($pluginDir . self::MIN_TRACKER_FILE)) {
+ $jsFiles[$pluginName] = new File($pluginDir . self::MIN_TRACKER_FILE);
+ } elseif (file_exists($pluginDir . self::TRACKER_FILE)) {
+ $jsFiles[$pluginName] = new File($pluginDir . self::TRACKER_FILE);
}
}
@@ -101,10 +93,4 @@ class PluginTrackerFiles
{
return $this->pluginManager->isPluginActivated($pluginName);
}
-
- protected function getPluginNameFromFile($file)
- {
- $file = str_replace(array($this->dir, self::TRACKER_FILE, self::MIN_TRACKER_FILE), '', $file);
- return trim($file, '/');
- }
}
diff --git a/plugins/CustomJsTracker/tests/Integration/PluginTrackerFilesTest.php b/plugins/CustomJsTracker/tests/Integration/PluginTrackerFilesTest.php
index b063fbab28..7dab1b6032 100644
--- a/plugins/CustomJsTracker/tests/Integration/PluginTrackerFilesTest.php
+++ b/plugins/CustomJsTracker/tests/Integration/PluginTrackerFilesTest.php
@@ -14,33 +14,12 @@ use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
class CustomPluginTrackerFiles extends PluginTrackerFiles {
- private $pluginNamesForFile = array();
- public function __construct($pluginNameForRegularTrackerFile = 'CustomJsTracker', $pluginNameForMinifiedTracker = 'CustomJsTracker')
- {
- parent::__construct();
-
- $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/CustomJsTracker/tests/';
-
- $this->pluginNamesForFile = array(
- 'tracker.js' => $pluginNameForRegularTrackerFile,
- 'tracker.min.js' => $pluginNameForMinifiedTracker
+ protected function getDirectoriesToLook() {
+ return array(
+ 'CustomJsTracker' => PIWIK_DOCUMENT_ROOT . '/plugins/CustomJsTracker/tests/resources/'
);
}
-
- protected function getPluginNameFromFile($file)
- {
- $fileName = basename($file);
- return $this->pluginNamesForFile[$fileName];
- }
-}
-
-class CustomPluginTrackerFiles2 extends PluginTrackerFiles {
-
- public function getPluginNameFromFile($file)
- {
- return parent::getPluginNameFromFile($file);
- }
}
/**
@@ -72,72 +51,20 @@ class PluginTrackerFilesTest extends IntegrationTestCase
$this->assertEquals('tracker.js', $foundFiles['CustomJsTracker']->getName());
}
- public function test_find_ifMultiplePluginsImplementATracker_ShouldReturnEachOfThem()
- {
- $trackerFiles = new CustomPluginTrackerFiles('CustomJsTracker', 'Goals');
- $foundFiles = $trackerFiles->find();
-
- $this->assertCount(2, $foundFiles);
- $this->assertTrue(isset($foundFiles['CustomJsTracker']));
- $this->assertTrue(isset($foundFiles['Goals']));
- $this->assertEquals('tracker.js', $foundFiles['CustomJsTracker']->getName());
- $this->assertEquals('tracker.min.js', $foundFiles['Goals']->getName());
- }
-
public function test_find_EventsCanIgnoreFiles()
{
- $trackerFiles = new CustomPluginTrackerFiles('CustomJsTracker', 'Goals');
+ $trackerFiles = new CustomPluginTrackerFiles();
$foundFiles = $trackerFiles->find();
- $this->assertCount(2, $foundFiles);
+ $this->assertCount(1, $foundFiles);
Piwik::addAction('CustomJsTracker.shouldAddTrackerFile', function (&$shouldAdd, $pluginName) {
- if ($pluginName === 'Goals') {
+ if ($pluginName === 'CustomJsTracker') {
$shouldAdd = false;
}
});
$foundFiles = $trackerFiles->find();
- $this->assertCount(1, $foundFiles);
- $this->assertTrue(isset($foundFiles['CustomJsTracker']));
- $this->assertFalse(isset($foundFiles['Goals']));
- }
-
- public function test_find_shouldNotReturnATrackerFile_IfPluginIsNotActivatedOrLoaded()
- {
- $trackerFiles = new CustomPluginTrackerFiles('MyNotExistingPlugin', 'Goals');
- $foundFiles = $trackerFiles->find();
-
- $this->assertCount(1, $foundFiles);
- $this->assertTrue(isset($foundFiles['Goals']));
- $this->assertEquals('tracker.min.js', $foundFiles['Goals']->getName());
-
- $trackerFiles = new CustomPluginTrackerFiles('Goals', 'MyNotExistingPlugin');
- $foundFiles = $trackerFiles->find();
-
- $this->assertCount(1, $foundFiles);
- $this->assertTrue(isset($foundFiles['Goals']));
- $this->assertEquals('tracker.js', $foundFiles['Goals']->getName());
- }
-
- public function test_find_shouldNotReturnFileIfNoPluginActivated()
- {
- $trackerFiles = new CustomPluginTrackerFiles('MyNotExistingPlugin', 'MyNotExistingPlugin2');
- $foundFiles = $trackerFiles->find();
-
- $this->assertSame(array(), $foundFiles);
- }
-
- public function test_getPluginNameFromFile_shouldDetectPluginName()
- {
- $trackerFiles = new CustomPluginTrackerFiles2();
- $pluginName = $trackerFiles->getPluginNameFromFile(PIWIK_DOCUMENT_ROOT . '/plugins/MyFooBarPlugin/tracker.js');
- $this->assertSame('MyFooBarPlugin', $pluginName);
-
- $pluginName = $trackerFiles->getPluginNameFromFile(PIWIK_DOCUMENT_ROOT . '/plugins//MyFooBarPlugin//tracker.js');
- $this->assertSame('MyFooBarPlugin', $pluginName);
-
- $pluginName = $trackerFiles->getPluginNameFromFile(PIWIK_DOCUMENT_ROOT . '/plugins//MyFooBarPlugin//tracker.min.js');
- $this->assertSame('MyFooBarPlugin', $pluginName);
+ $this->assertCount(0, $foundFiles);
}
}