Fix #773: set Piwik URL protocol
This commit is contained in:
parent
844021ab4c
commit
fe83d45c46
4 changed files with 80 additions and 16 deletions
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
use Shaarli\Config\ConfigJson;
|
use Shaarli\Config\ConfigJson;
|
||||||
use Shaarli\Config\ConfigPhp;
|
use Shaarli\Config\ConfigPhp;
|
||||||
|
use Shaarli\Config\ConfigManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Updater.
|
* Class Updater.
|
||||||
|
@ -363,6 +364,22 @@ public function updateMethodEscapeMarkdown()
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add 'http://' to Piwik URL the setting is set.
|
||||||
|
*
|
||||||
|
* @return bool true if the update is successful, false otherwise.
|
||||||
|
*/
|
||||||
|
public function updateMethodPiwikUrl()
|
||||||
|
{
|
||||||
|
if (! $this->conf->exists('plugins.PIWIK_URL') || startsWith($this->conf->get('plugins.PIWIK_URL'), 'http')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->conf->set('plugins.PIWIK_URL', 'http://'. $this->conf->get('plugins.PIWIK_URL'));
|
||||||
|
$this->conf->write($this->isLoggedIn);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
15
plugins/piwik/piwik.html
Normal file
15
plugins/piwik/piwik.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<!-- Piwik -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
var _paq = _paq || [];
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u="%s/";
|
||||||
|
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
||||||
|
_paq.push(['setSiteId', '%s']);
|
||||||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<noscript><p><img src="%s/piwik.php?idsite=%s" style="border:0;" alt="" /></p></noscript>
|
||||||
|
<!-- End Piwik Code -->
|
|
@ -50,22 +50,13 @@ function hook_piwik_render_footer($data, $conf)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Free elements at the end of the page.
|
// Free elements at the end of the page.
|
||||||
$data['endofpage'][] = '<!-- Piwik -->' .
|
$data['endofpage'][] = sprintf(
|
||||||
'<script type="text/javascript">' .
|
file_get_contents(PluginManager::$PLUGINS_PATH . '/piwik/piwik.html'),
|
||||||
' var _paq = _paq || [];' .
|
$piwikUrl,
|
||||||
' _paq.push([\'trackPageView\']);' .
|
$piwikSiteid,
|
||||||
' _paq.push([\'enableLinkTracking\']);' .
|
$piwikUrl,
|
||||||
' (function() {' .
|
$piwikSiteid
|
||||||
' var u="//' . $piwikUrl . '/";' .
|
);
|
||||||
' _paq.push([\'setTrackerUrl\', u+\'piwik.php\']);' .
|
|
||||||
' _paq.push([\'setSiteId\', \'' . $piwikSiteid . '\']);' .
|
|
||||||
' var d=document, g=d.createElement(\'script\'), s=d.getElementsByTagName(\'script\')[0];' .
|
|
||||||
' g.type=\'text/javascript\'; g.async=true; g.defer=true; g.src=u+\'piwik.js\'; s.parentNode.insertBefore(g,s);' .
|
|
||||||
' })();' .
|
|
||||||
'</script>' .
|
|
||||||
'<noscript><p><img src="//' . $piwikUrl . '/piwik.php?idsite=' . $piwikSiteid . '" style="border:0;" alt="" /></p></noscript>' .
|
|
||||||
'<!-- End Piwik Code -->';
|
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -574,4 +574,45 @@ public function testEscapeMarkdownSettingNothingToDoDisabled()
|
||||||
$this->assertTrue($updater->updateMethodEscapeMarkdown());
|
$this->assertTrue($updater->updateMethodEscapeMarkdown());
|
||||||
$this->assertFalse($this->conf->get('security.markdown_escape'));
|
$this->assertFalse($this->conf->get('security.markdown_escape'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test updateMethodPiwikUrl with valid data
|
||||||
|
*/
|
||||||
|
public function testUpdatePiwikUrlValid()
|
||||||
|
{
|
||||||
|
$sandboxConf = 'sandbox/config';
|
||||||
|
copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
|
||||||
|
$this->conf = new ConfigManager($sandboxConf);
|
||||||
|
$url = 'mypiwik.tld';
|
||||||
|
$this->conf->set('plugins.PIWIK_URL', $url);
|
||||||
|
$updater = new Updater([], [], $this->conf, true);
|
||||||
|
$this->assertTrue($updater->updateMethodPiwikUrl());
|
||||||
|
$this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL'));
|
||||||
|
|
||||||
|
// reload from file
|
||||||
|
$this->conf = new ConfigManager($sandboxConf);
|
||||||
|
$this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test updateMethodPiwikUrl without setting
|
||||||
|
*/
|
||||||
|
public function testUpdatePiwikUrlEmpty()
|
||||||
|
{
|
||||||
|
$updater = new Updater([], [], $this->conf, true);
|
||||||
|
$this->assertTrue($updater->updateMethodPiwikUrl());
|
||||||
|
$this->assertEmpty($this->conf->get('plugins.PIWIK_URL'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test updateMethodPiwikUrl: valid URL, nothing to do
|
||||||
|
*/
|
||||||
|
public function testUpdatePiwikUrlNothingToDo()
|
||||||
|
{
|
||||||
|
$url = 'https://mypiwik.tld';
|
||||||
|
$this->conf->set('plugins.PIWIK_URL', $url);
|
||||||
|
$updater = new Updater([], [], $this->conf, true);
|
||||||
|
$this->assertTrue($updater->updateMethodPiwikUrl());
|
||||||
|
$this->assertEquals($url, $this->conf->get('plugins.PIWIK_URL'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue