diff --git a/header.php b/header.php
index eb0bc7f..f7691ac 100644
--- a/header.php
+++ b/header.php
@@ -1,8 +1,8 @@
diff --git a/index.php b/index.php
index 1ed1817..3ba4edd 100644
--- a/index.php
+++ b/index.php
@@ -8,13 +8,17 @@
* make sure you update the language strings in both
* - language/nl.php
* - language/en.php
+ * The $lang->get("KEY") function will automatically select the preferred
+ * display language, based on the Accept-Language client header.
*
* Thank you for keeping the website accessible for people that
* are not fluent in either English or Dutch!
*
*/
-require_once("header.php"); ?>
+require_once("header.php");
+
+?>
@@ -32,15 +36,24 @@ require_once("header.php"); ?>
-
+
+
+
diff --git a/language/en.php b/language/en.php
index 6e7e6c5..7a2a5f6 100644
--- a/language/en.php
+++ b/language/en.php
@@ -7,7 +7,16 @@ class English extends Language {
$this->keys = array(
"SHORT_DESCRIPTION_HEAD" => "TechInc is a hackerspace in Amsterdam.",
"SHORT_DESCRIPTION_BODY" => 'TechInc is a hackerspace in Amsterdam.',
- "LOGO_ALT_TEXT" => "Stylized boat's wheel. The handles and spokes have different colors, as if it is decorated with RGB LEDs. At the axle of the wheel is an abstract electronic circuit board."
+ "LOGO_ALT_TEXT" => "Stylized boat's wheel. The handles and spokes have different colors, as if it is decorated with RGB LEDs. At the axle of the wheel is an abstract electronic circuit board.",
+ "OPEN_SINCE" => "Open since",
+ "AGO" => "ago",
+ "SECOND" => "second",
+ "SECONDS" => "seconds",
+ "MINUTE" => "minute",
+ "MINUTES" => "minutes",
+ "HOUR" => "hour",
+ "HOURS" => "hours",
+ "CLOSED" => "Closed"
);
}
}
diff --git a/language/language.php b/language/language.php
index a615901..2a85cb4 100644
--- a/language/language.php
+++ b/language/language.php
@@ -1,11 +1,11 @@
languageCode = $languageCode;
}
@@ -14,6 +14,10 @@ class Language {
}
public static function getPreferredLanguage() {
+ if(isset(self::$obj)) {
+ return self::$obj;
+ }
+
if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$language = "en";
} else {
@@ -29,14 +33,18 @@ class Language {
switch ($preferredLanguage) {
case "nl":
- return require_once("nl.php");
+ self::$obj = require_once("nl.php");
+ break;
case "en":
default:
- return require_once("en.php");
+ self::$obj = require_once("en.php");
break;
}
+
+ return self::$obj;
}
}
+$lang = Language::getPreferredLanguage();
?>
diff --git a/language/nl.php b/language/nl.php
index 2648fad..42ba7fb 100644
--- a/language/nl.php
+++ b/language/nl.php
@@ -7,7 +7,16 @@ class Dutch extends Language {
$this->keys = array(
"SHORT_DESCRIPTION_HEAD" => "TechInc is een hackerspace in Amsterdam.",
"SHORT_DESCRIPTION_BODY" => 'TechInc is een hackerspace in Amsterdam.',
- "LOGO_ALT_TEXT" => "Gestileerd stuurwiel van een boot. De handgrepen en spaken hebben verschillende kleuren, alsof het is versierd met RGB LED's. Op de as van het wiel zit een abstracte elektronische printplaat."
+ "LOGO_ALT_TEXT" => "Gestileerd stuurwiel van een boot. De handgrepen en spaken hebben verschillende kleuren, alsof het is versierd met RGB LED's. Op de as van het wiel zit een abstracte elektronische printplaat.",
+ "OPEN_SINCE" => "Open sinds",
+ "AGO" => "geleden",
+ "SECOND" => "seconde",
+ "SECONDS" => "seconden",
+ "MINUTE" => "minuut",
+ "MINUTES" => "minuten",
+ "HOUR" => "uur",
+ "HOURS" => "uur",
+ "CLOSED" => "Gesloten"
);
}
}
diff --git a/space/spacestate.php b/space/spacestate.php
new file mode 100644
index 0000000..cda4598
--- /dev/null
+++ b/space/spacestate.php
@@ -0,0 +1,71 @@
+requestJson();
+ }
+
+ public static function get() {
+ if(!isset(self::$obj)) {
+ self::$obj = new SpaceState();
+ }
+ return self::$obj;
+ }
+
+ public function formattedLastChange() {
+ global $lang;
+ $now = time();
+ $diff = $now - $this->lastchange;
+ // One second ago
+ if ($diff == 1) {
+ return $diff." ".$lang->get("SECOND");
+ // Less than a minute ago
+ } else if ($diff < 60) {
+ return $diff." ".$lang->get("SECONDS");
+ // One minute ago
+ } else if ($diff < 120) {
+ return floor($diff / 60)." ".$lang->get("MINUTE");
+ // Less than an hour ago
+ } else if ($diff < 3600) {
+ return floor($diff / 60)." ".$lang->get("MINUTES");
+ // One hour ago
+ } else if ($diff < 7200) {
+ return floor($diff / 3600)." ".$lang->get("HOUR");
+ // More than one hour ago
+ } else {
+ return floor($diff / 3600)." ".$lang->get("HOURS");
+ }
+ }
+
+ private function requestJson() {
+ $ch = curl_init();
+ curl_setopt_array($ch, array(
+ CURLOPT_URL => "https://techinc.nl/space/spacestate.json",
+ CURLOPT_TIMEOUT => 1,
+ CURLOPT_FORBID_REUSE => true,
+ CURLOPT_RETURNTRANSFER => true
+ ));
+ $request = curl_exec($ch);
+
+ if ($request === false) {
+ return;
+ }
+
+ $json = json_decode($request);
+ if (is_null($json)) {
+ return;
+ }
+
+ $this->open = $json?->open ?? false;
+ $this->lastchange = $json?->lastchange ?? time();
+ }
+}
+
+$spacestate = SpaceState::get();
+
+?>