summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcflip <36554078+cflip@users.noreply.github.com>2021-08-21 09:54:36 -0600
committercflip <36554078+cflip@users.noreply.github.com>2021-08-21 09:54:36 -0600
commit312263219e8c3ae78b241104deccea4a82d767a2 (patch)
tree5ba5b2ff5146d60637790fb2bd65dcbabdff36e1
parent946fd6a6c2f402bc8e663c2c9d41bbac25b49971 (diff)
Add user generation numbers
-rwxr-xr-xincludes/model/User.php16
-rw-r--r--meta/setup.sql1
-rwxr-xr-xregister.php5
-rwxr-xr-xviewuser.php1
4 files changed, 15 insertions, 8 deletions
diff --git a/includes/model/User.php b/includes/model/User.php
index e497fc6..8e28239 100755
--- a/includes/model/User.php
+++ b/includes/model/User.php
@@ -23,6 +23,7 @@ class User
public $date_registered;
public $level = 'user';
public $invite_code;
+ public $generation;
private $has_value = false;
@@ -30,7 +31,7 @@ class User
// and PHP does not allow function overloading.
public function get_by_id($id)
{
- $sql = "SELECT user_name, user_password, user_date_registered, user_level, user_invite_code FROM users WHERE user_id = ?;";
+ $sql = "SELECT user_name, user_password, user_date_registered, user_level, user_invite_code, user_generation FROM users WHERE user_id = ?;";
$result = Database::get()->query($sql, "i", $id);
if (empty($result)) {
@@ -43,6 +44,7 @@ class User
$this->date_registered = $result[0]['user_date_registered'];
$this->level = $result[0]['user_level'];
$this->invite_code = $result[0]['user_invite_code'];
+ $this->generation = $result[0]['user_generation'];
$this->has_value = true;
}
@@ -50,7 +52,7 @@ class User
// TODO: Duplicated code, there should be a common database read function for all models
public function get_by_name($name)
{
- $sql = "SELECT user_id, user_password, user_date_registered, user_level, user_invite_code FROM users WHERE user_name = ?;";
+ $sql = "SELECT user_id, user_password, user_date_registered, user_level, user_invite_code, user_generation FROM users WHERE user_name = ?;";
$result = Database::get()->query($sql, "s", $name);
if (empty($result)) {
@@ -63,13 +65,14 @@ class User
$this->date_registered = $result[0]['user_date_registered'];
$this->level = $result[0]['user_level'];
$this->invite_code = $result[0]['user_invite_code'];
+ $this->generation = $result[0]['user_generation'];
$this->has_value = true;
}
public function get_by_invite_code($invite_code)
{
- $sql = "SELECT user_id, user_name, user_password, user_date_registered, user_level FROM users WHERE user_invite_code = ?;";
+ $sql = "SELECT user_id, user_name, user_password, user_date_registered, user_level, user_generation FROM users WHERE user_invite_code = ?;";
$result = Database::get()->query($sql, "s", $invite_code);
if (empty($result)) {
@@ -82,6 +85,7 @@ class User
$this->date_registered = $result[0]['user_date_registered'];
$this->level = $result[0]['user_level'];
$this->invite_code = $invite_code;
+ $this->generation = $result[0]['user_generation'];
$this->has_value = true;
}
@@ -91,12 +95,12 @@ class User
return $this->has_value;
}
- public static function register(string $username, string $password)
+ public static function register(string $username, string $password, int $generation)
{
- $sql = "INSERT INTO users(user_name, user_password, user_date_registered, user_invite_code) VALUES(?, ?, NOW(), ?);";
+ $sql = "INSERT INTO users(user_name, user_password, user_date_registered, user_invite_code, user_generation) VALUES(?, ?, NOW(), ?, ?);";
$pass_hash = password_hash($password, PASSWORD_DEFAULT);
$invite_code = generate_invite_code();
- Database::get()->query($sql, "sss", $username, $pass_hash, $invite_code);
+ Database::get()->query($sql, "sssi", $username, $pass_hash, $invite_code, $generation);
}
public function update_invite_code()
diff --git a/meta/setup.sql b/meta/setup.sql
index 5d63ff7..dff7769 100644
--- a/meta/setup.sql
+++ b/meta/setup.sql
@@ -5,6 +5,7 @@ CREATE TABLE users (
user_level ENUM('user', 'moderator', 'administrator') NOT NULL DEFAULT 'user',
user_date_registered DATETIME NOT NULL,
user_invite_code VARCHAR(8) NOT NULL,
+ user_generation INT NOT NULL,
UNIQUE INDEX user_name_unique (user_name),
UNIQUE INDEX user_invite_unique (user_invite_code),
PRIMARY KEY (user_id)
diff --git a/register.php b/register.php
index 44ab879..e286f01 100755
--- a/register.php
+++ b/register.php
@@ -32,12 +32,13 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$invite_code = $form->validate_invite_code($_POST['invite_code']);
$form->on_success(function () use ($username, $password, $invite_code) {
- User::register($username, $password);
-
$inviter = new User();
$inviter->get_by_invite_code($invite_code);
$inviter->update_invite_code();
+ $generation = $inviter->generation + 1;
+ User::register($username, $password, $generation);
+
echo '<p class="success">Account successfully registered! You can now <a href="signin.php">sign in</a></p>';
});
}
diff --git a/viewuser.php b/viewuser.php
index 9a42467..33d8636 100755
--- a/viewuser.php
+++ b/viewuser.php
@@ -25,6 +25,7 @@ if (!$current->has_value()) {
<body>
<?php include_once "includes/templates/header.php" ?>
<h1><?= $current->name; ?></h1>
+ <h4>Generation <?= $current->generation; ?></h4>
member since <?= date('M d, Y', strtotime($current->date_registered)); ?>
<?php if (Session::get()->is_signed_in() && Session::get()->get_current_user()->id == $current->id): ?>
<p>Your invite code is <em><?= $current->invite_code ?></em></p>