Merge pull request #939 from ArthurHoaro/hotfix/firefox-social-title

Firefox Social title: Use document.title instead of RainTPL variable
This commit is contained in:
ArthurHoaro 2017-09-02 13:54:38 +02:00 committed by GitHub
commit 96a1c79456
4 changed files with 69 additions and 4 deletions

View file

@ -401,3 +401,31 @@ function getIpAddressFromProxy($server, $trustedIps)
return array_pop($ips); return array_pop($ips);
} }
/**
* Returns true if Shaarli's currently browsed in HTTPS.
* Supports reverse proxies (if the headers are correctly set).
*
* @param array $server $_SERVER.
*
* @return bool true if HTTPS, false otherwise.
*/
function is_https($server)
{
if (isset($server['HTTP_X_FORWARDED_PORT'])) {
// Keep forwarded port
if (strpos($server['HTTP_X_FORWARDED_PORT'], ',') !== false) {
$ports = explode(',', $server['HTTP_X_FORWARDED_PORT']);
$port = trim($ports[0]);
} else {
$port = $server['HTTP_X_FORWARDED_PORT'];
}
if ($port == '443') {
return true;
}
}
return ! empty($server['HTTPS']);
}

View file

@ -1065,10 +1065,10 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history)
// -------- Display the Tools menu if requested (import/export/bookmarklet...) // -------- Display the Tools menu if requested (import/export/bookmarklet...)
if ($targetPage == Router::$PAGE_TOOLS) if ($targetPage == Router::$PAGE_TOOLS)
{ {
$data = array( $data = [
'pageabsaddr' => index_url($_SERVER), 'pageabsaddr' => index_url($_SERVER),
'sslenabled' => !empty($_SERVER['HTTPS']) 'sslenabled' => is_https($_SERVER),
); ];
$pluginManager->executeHooks('render_tools', $data); $pluginManager->executeHooks('render_tools', $data);
foreach ($data as $key => $value) { foreach ($data as $key => $value) {

View file

@ -0,0 +1,36 @@
<?php
/**
* Class IsHttpsTest
*
* Test class for is_https() function.
*/
class IsHttpsTest extends PHPUnit_Framework_TestCase
{
/**
* Test is_https with HTTPS values.
*/
public function testIsHttpsTrue()
{
$this->assertTrue(is_https(['HTTPS' => true]));
$this->assertTrue(is_https(['HTTPS' => '1']));
$this->assertTrue(is_https(['HTTPS' => false, 'HTTP_X_FORWARDED_PORT' => 443]));
$this->assertTrue(is_https(['HTTPS' => false, 'HTTP_X_FORWARDED_PORT' => '443']));
$this->assertTrue(is_https(['HTTPS' => false, 'HTTP_X_FORWARDED_PORT' => '443,123,456,']));
}
/**
* Test is_https with HTTP values.
*/
public function testIsHttpsFalse()
{
$this->assertFalse(is_https([]));
$this->assertFalse(is_https(['HTTPS' => false]));
$this->assertFalse(is_https(['HTTPS' => '0']));
$this->assertFalse(is_https(['HTTPS' => false, 'HTTP_X_FORWARDED_PORT' => 123]));
$this->assertFalse(is_https(['HTTPS' => false, 'HTTP_X_FORWARDED_PORT' => '123']));
$this->assertFalse(is_https(['HTTPS' => false, 'HTTP_X_FORWARDED_PORT' => ',123,456,']));
}
}

View file

@ -607,10 +607,11 @@ function htmlEntities(str)
function activateFirefoxSocial(node) { function activateFirefoxSocial(node) {
var loc = location.href; var loc = location.href;
var baseURL = loc.substring(0, loc.lastIndexOf("/") + 1); var baseURL = loc.substring(0, loc.lastIndexOf("/") + 1);
var title = document.title;
// Keeping the data separated (ie. not in the DOM) so that it's maintainable and diffable. // Keeping the data separated (ie. not in the DOM) so that it's maintainable and diffable.
var data = { var data = {
name: "{$shaarlititle}", name: title,
description: "The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community.", description: "The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community.",
author: "Shaarli", author: "Shaarli",
version: "1.0.0", version: "1.0.0",