// Include the common auth system files (including the OAuth2 Server object).
require_once(__DIR__.'/authsystem.inc.php');
-// Start HTML document as a DOM object.
-extract(ExtendedDocument::initHTML5()); // sets $document, $html, $head, $title, $body
-$document->formatOutput = true; // we want a nice output
-$style = $head->appendElement('link');
-$style->setAttribute('rel', 'stylesheet');
-$style->setAttribute('href', 'authsystem.css');
-$head->appendJSFile('authsystem.js');
-$title->appendText('Authorization Request | KaiRo.at');
-$h1 = $body->appendElement('h1', 'KaiRo.at Authentication Server');
-
$errors = $utils->checkForSecureConnection();
$utils->sendSecurityHeaders();
-$para = $body->appendElement('p', _('This login system does not work without JavaScript. Please activate JavaScript for this site to log in.'));
-$para->setAttribute('id', 'jswarning');
-$para->setAttribute('class', 'warn');
+// Initialize the HTML document with our basic elements.
+extract($utils->initHTMLDocument('Authorization Request | KaiRo.at', 'KaiRo.at Authentication Server')); // sets $document, $html, $head, $title, $body
if (!count($errors)) {
$session = $utils->initSession(); // Read session or create new session and set cookie.
bind_textdomain_codeset($textdomain, 'utf-8');
textdomain($textdomain);
+// Sanitize settings.
+$settings['piwik_enabled'] = (@$settings['piwik_enabled']) ? true : false;
+$settings['piwik_site_id'] = intval(@$settings['piwik_site_id']);
+$settings['piwik_url'] = strlen($settings['piwik_url']) ? $settings['piwik_url'] : '/piwik/';
+
/* Creating the DB tables:
CREATE TABLE `auth_sessions` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
-window.onload = function() {
+// Call initElements at the earliest possible stage after parsing the document.
+if (window.addEventListener) { window.addEventListener("DOMContentLoaded", initElements, false); }
+else { window.onload = initElements(); }
+
+function initElements() {
var jsWarning = document.getElementById("jswarning");
if (jsWarning) {
if (jsWarning.classList) {
// function getGroupedEmails($group_id, [$exclude_email])
// Return all emails grouped in the specified group ID, optionally exclude a specific email (e.g. because you only want non-current entries)
//
+ // function initHTMLDocument($titletext, [$headlinetext]) {
+ // initialize the HTML document for the auth system, with some elements we always use, esp. all the scripts and stylesheet.
+ // Sets the title of the document to the given title, the main headline will be the same as the title if not set explicitly.
+ // Returns an associative array with the following elements: 'document', 'html', 'head', 'title', 'body'.
+ //
// function appendLoginForm($dom_element, $session, $user, [$addfields])
// Append a login form for the given session to the given DOM element, possibly prefilling the email from the given user info array.
// The optional $addfields parameter is an array of name=>value pairs of hidden fields to add to the form.
return $emails;
}
+ function initHTMLDocument($titletext, $headlinetext = null) {
+ global $settings;
+ if (is_null($headlinetext)) { $headlinetext = $titletext; }
+ // Start HTML document as a DOM object.
+ extract(ExtendedDocument::initHTML5()); // sets $document, $html, $head, $title, $body
+ $document->formatOutput = true; // we want a nice output
+
+ $style = $head->appendElement('link');
+ $style->setAttribute('rel', 'stylesheet');
+ $style->setAttribute('href', 'authsystem.css');
+ $head->appendJSFile('authsystem.js');
+ if ($settings['piwik_enabled']) {
+ $head->setAttribute('data-piwiksite', $settings['piwik_site_id']);
+ $head->setAttribute('data-piwikurl', $settings['piwik_url']);
+ $head->appendJSFile('piwik.js', true, true);
+ }
+ $title->appendText($titletext);
+ $h1 = $body->appendElement('h1', $headlinetext);
+
+ if ($settings['piwik_enabled']) {
+ // Piwik noscript element
+ $noscript = $body->appendElement('noscript');
+ $para = $noscript->appendElement('p');
+ $img = $para->appendImage($settings['piwik_url'].'piwik.php?idsite='.$settings['piwik_site_id']);
+ $img->setAttribute('style', 'border:0;');
+ }
+
+ // Make the document not be scaled on mobile devices.
+ $vpmeta = $head->appendElement('meta');
+ $vpmeta->setAttribute('name', 'viewport');
+ $vpmeta->setAttribute('content', 'width=device-width, height=device-height');
+
+ $para = $body->appendElement('p', _('This login system does not work without JavaScript. Please activate JavaScript for this site to log in.'));
+ $para->setAttribute('id', 'jswarning');
+ $para->setAttribute('class', 'warn');
+
+ return array('document' => $document,
+ 'html' => $html,
+ 'head' => $head,
+ 'title' => $title,
+ 'body' => $body);
+ }
+
function appendLoginForm($dom_element, $session, $user, $addfields = array()) {
$form = $dom_element->appendForm('./', 'POST', 'loginform');
$form->setAttribute('id', 'loginform');
// Include the common auth system files (including the OAuth2 Server object).
require_once(__DIR__.'/authsystem.inc.php');
-// Start HTML document as a DOM object.
-extract(ExtendedDocument::initHTML5()); // sets $document, $html, $head, $title, $body
-$document->formatOutput = true; // we want a nice output
-
-$style = $head->appendElement('link');
-$style->setAttribute('rel', 'stylesheet');
-$style->setAttribute('href', 'authsystem.css');
-$head->appendJSFile('authsystem.js');
-$title->appendText('KaiRo.at Authentication Server');
-$h1 = $body->appendElement('h1', 'KaiRo.at Authentication Server');
-
-// Make the document not be scaled on mobile devices.
-$vpmeta = $head->appendElement('meta');
-$vpmeta->setAttribute('name', 'viewport');
-$vpmeta->setAttribute('content', 'width=device-width, height=device-height');
-
$errors = $utils->checkForSecureConnection();
$utils->sendSecurityHeaders();
-$para = $body->appendElement('p', _('This login system does not work without JavaScript. Please activate JavaScript for this site to log in.'));
-$para->setAttribute('id', 'jswarning');
-$para->setAttribute('class', 'warn');
+// Initialize the HTML document with our basic elements.
+extract($utils->initHTMLDocument('KaiRo.at Authentication Server')); // sets $document, $html, $head, $title, $body
if (!count($errors)) {
$session = $utils->initSession(); // Read session or create new session and set cookie.
--- /dev/null
+// Piwik code - licensed under Public Domain.
+ var _paq = _paq || [];
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ var u=s.parentNode.dataset.piwikurl;
+ _paq.push(['setTrackerUrl', u+'piwik.php']);
+ _paq.push(['setSiteId', s.parentNode.dataset.piwiksite]);
+ g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
+ })();
+// End Piwik code