diff --git a/README.md b/README.md
index a713b0db52..7181db9be0 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-# NamelessMC - version 1.0.8
+# NamelessMC - version 1.0.9
NamelessMC is a free, easy to use & powerful website software for your Minecraft server, which includes a large range of features.
-Version 1.0.8 features:
+Version 1.0.9 features:
- Template and theme system
- Languages
@@ -21,6 +21,7 @@ Version 1.0.8 features:
- Minecraft status
- reCAPTCHA option
- Voice server viewer
+- Two factor authentication
Included addons:
- Donate
diff --git a/addons/Infractions/settings.php b/addons/Infractions/settings.php
index b14cdd10c2..09ba5a622c 100644
--- a/addons/Infractions/settings.php
+++ b/addons/Infractions/settings.php
@@ -29,7 +29,7 @@
Addon: Infractions
Author: Samerton
-Version: 1.0.0
+Version: 1.0.1
Description: Integrate your server infractions with your website
Infractions Settings
diff --git a/changelog.txt b/changelog.txt
index 7cf321f7c6..fa7f1692b5 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -248,4 +248,26 @@
- Separate user likes on profile pages
- Prevent modifying root user
- Add support for Discord widget
-- Fix infinite loop on profile pages
\ No newline at end of file
+- Fix infinite loop on profile pages
+
+1.0.9
+- Fix $p undefined error when pointing to a specific post
+- Display Infractions config permissions error
+- Fix Infractions usernames not displaying
+- Move page title to header
+- Check if Members addon is enabled before displaying the member list
+- Add XenForo converter
+- Remove PHP short tags from pagination rendering
+- Fix oversized friend avatars
+- Add continuous private message system
+- Fix Infractions pagination issue
+- Automatically mark alerts as read
+- Fix Donate sync issue
+- Update Norsk language
+- Add Portuguese translation
+- Fix Infractions undefined offset error
+- Fix potential directory separator issues
+- Add two factor authentication
+- Add custom infraction database prefixes
+- Fix private messaging date issues
+- Fix QR cURL error
\ No newline at end of file
diff --git a/core/includes/updates/108.php b/core/includes/updates/108.php
new file mode 100644
index 0000000000..d9f96d2a72
--- /dev/null
+++ b/core/includes/updates/108.php
@@ -0,0 +1,35 @@
+ 1.0.9 updater
+
+// Database changes:
+// Private messages
+$pm_update = $queries->tableExists('private_messages_replies');
+if(empty($pm_update)){
+ // Make the changes
+ $data = $queries->createTable("private_messages_replies", " `id` int(11) NOT NULL AUTO_INCREMENT, `pm_id` int(11) NOT NULL, `content` mediumtext NOT NULL, `user_id` int(11) NOT NULL, `created` int(11) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1");
+ echo 'Private Messages Replies table successfully initialised
';
+
+ $queries->alterTable('private_messages', 'updated', "int(11) NOT NULL");
+ echo 'Private Messages table successfully updated
';
+}
+
+// Two Factor Authentication
+$queries->alterTable('users', 'tfa_enabled', "tinyint(1) NOT NULL DEFAULT '0'");
+$queries->alterTable('users', 'tfa_type', "int(11) NOT NULL DEFAULT '0'");
+$queries->alterTable('users', 'tfa_secret', "varchar(256) DEFAULT NULL");
+$queries->alterTable('users', 'tfa_complete', "tinyint(1) NOT NULL DEFAULT '0'");
+
+// Update version number
+$version_number_id = $queries->getWhere('settings', array('name', '=', 'version'));
+$version_number_id = $version_number_id[0]->id;
+
+$queries->update('settings', $version_number_id, array(
+ 'value' => '1.0.9'
+));
+
+$version_update_id = $queries->getWhere('settings', array('name', '=', 'version_update'));
+$version_update_id = $version_update_id[0]->id;
+
+$queries->update('settings', $version_update_id, array(
+ 'value' => 'false'
+));
\ No newline at end of file
diff --git a/pages/install.php b/pages/install.php
index 25c6bb0682..5fd09c0e43 100644
--- a/pages/install.php
+++ b/pages/install.php
@@ -628,7 +628,7 @@
// Version update
$version_id = $queries->getWhere('settings', array('name', '=', 'version'));
$queries->update('settings', $version_id[0]->id, array(
- 'value' => '1.0.8'
+ 'value' => '1.0.9'
));
@@ -997,7 +997,7 @@
),
28 => array(
'name' => 'version',
- 'value' => '1.0.8'
+ 'value' => '1.0.9'
),
29 => array(
'name' => 'version_checked',