diff options
author | Thomas Steur <tsteur@users.noreply.github.com> | 2020-02-16 22:51:03 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-16 22:51:03 +0300 |
commit | a19d8cf6a4251644c4e9d24c4be23b61a409ed03 (patch) | |
tree | a3311c619ff558fdcb506a6057097f4e2c7194fa /plugins | |
parent | 0fdca6cf4a216cd384529f0ecf2af3089ea6c274 (diff) |
Support tracker js files from custom plugin directories (#15568)
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php | 48 | ||||
-rw-r--r-- | plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php | 87 |
2 files changed, 24 insertions, 111 deletions
diff --git a/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php b/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php index a3987b2004..6e5085f90e 100644 --- a/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php +++ b/plugins/CustomPiwikJs/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/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php b/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php index edd913ae9c..f6eecdab20 100644 --- a/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php +++ b/plugins/CustomPiwikJs/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 = 'CustomPiwikJs', $pluginNameForMinifiedTracker = 'CustomPiwikJs') - { - parent::__construct(); - - $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/CustomPiwikJs/tests/'; - - $this->pluginNamesForFile = array( - 'tracker.js' => $pluginNameForRegularTrackerFile, - 'tracker.min.js' => $pluginNameForMinifiedTracker + protected function getDirectoriesToLook() { + return array( + 'CustomPiwikJs' => PIWIK_DOCUMENT_ROOT . '/plugins/CustomPiwikJs/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['CustomPiwikJs']->getName()); } - public function test_find_ifMultiplePluginsImplementATracker_ShouldReturnEachOfThem() - { - $trackerFiles = new CustomPluginTrackerFiles('CustomPiwikJs', 'Goals'); - $foundFiles = $trackerFiles->find(); - - $this->assertCount(2, $foundFiles); - $this->assertTrue(isset($foundFiles['CustomPiwikJs'])); - $this->assertTrue(isset($foundFiles['Goals'])); - $this->assertEquals('tracker.js', $foundFiles['CustomPiwikJs']->getName()); - $this->assertEquals('tracker.min.js', $foundFiles['Goals']->getName()); - } - public function test_find_EventsCanIgnoreFiles() { - $trackerFiles = new CustomPluginTrackerFiles('CustomPiwikJs', 'Goals'); + $trackerFiles = new CustomPluginTrackerFiles(); $foundFiles = $trackerFiles->find(); - $this->assertCount(2, $foundFiles); + $this->assertCount(1, $foundFiles); Piwik::addAction('CustomPiwikJs.shouldAddTrackerFile', function (&$shouldAdd, $pluginName) { - if ($pluginName === 'Goals') { + if ($pluginName === 'CustomPiwikJs') { $shouldAdd = false; } }); $foundFiles = $trackerFiles->find(); - $this->assertCount(1, $foundFiles); - $this->assertTrue(isset($foundFiles['CustomPiwikJs'])); - $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); } } |