diff options
author | sgiehl <stefan@matomo.org> | 2020-02-24 11:18:50 +0300 |
---|---|---|
committer | sgiehl <stefan@matomo.org> | 2020-02-24 11:18:50 +0300 |
commit | 31dcb9dbb01460bf9a68dc8b7bc826a05c367f74 (patch) | |
tree | e7dbaf14fb8cf8e34f421df53e22fc88b1b7b0c2 /plugins/CustomJsTracker | |
parent | 92e1b8bc5b8baa7683e4aa7a6abdd40064cd448b (diff) | |
parent | 7c517de3c74b8417230d813ae35e6b5eba06605e (diff) |
Merge branch '3.x-dev' into 4.x-dev
Diffstat (limited to 'plugins/CustomJsTracker')
-rw-r--r-- | plugins/CustomJsTracker/TrackingCode/PluginTrackerFiles.php | 48 | ||||
-rw-r--r-- | plugins/CustomJsTracker/tests/Integration/PluginTrackerFilesTest.php | 87 |
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); } } |