diff options
author | cflip <36554078+cflip@users.noreply.github.com> | 2021-08-21 13:57:33 -0600 |
---|---|---|
committer | cflip <36554078+cflip@users.noreply.github.com> | 2021-08-21 13:57:33 -0600 |
commit | 4a73aa38ca7eab5c76ee0890f3b6a73b6529780c (patch) | |
tree | 535e6b436d74add44f51d81ba971ef365b5a7da5 | |
parent | 312263219e8c3ae78b241104deccea4a82d767a2 (diff) |
Show who the user was invited by on user page
-rwxr-xr-x | includes/model/User.php | 25 | ||||
-rw-r--r-- | meta/setup.sql | 1 | ||||
-rwxr-xr-x | viewuser.php | 9 |
3 files changed, 28 insertions, 7 deletions
diff --git a/includes/model/User.php b/includes/model/User.php index 8e28239..3515fad 100755 --- a/includes/model/User.php +++ b/includes/model/User.php @@ -24,6 +24,7 @@ class User public $level = 'user';
public $invite_code;
public $generation;
+ public $invited_by;
private $has_value = false;
@@ -31,7 +32,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, user_generation FROM users WHERE user_id = ?;";
+ $sql = "SELECT user_name, user_password, user_date_registered, user_level, user_invite_code, user_generation, user_invited_by FROM users WHERE user_id = ?;";
$result = Database::get()->query($sql, "i", $id);
if (empty($result)) {
@@ -45,6 +46,7 @@ class User $this->level = $result[0]['user_level'];
$this->invite_code = $result[0]['user_invite_code'];
$this->generation = $result[0]['user_generation'];
+ $this->invited_by = $result[0]['user_invited_by'];
$this->has_value = true;
}
@@ -52,7 +54,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, user_generation FROM users WHERE user_name = ?;";
+ $sql = "SELECT user_id, user_password, user_date_registered, user_level, user_invite_code, user_generation, user_invited_by FROM users WHERE user_name = ?;";
$result = Database::get()->query($sql, "s", $name);
if (empty($result)) {
@@ -66,13 +68,14 @@ class User $this->level = $result[0]['user_level'];
$this->invite_code = $result[0]['user_invite_code'];
$this->generation = $result[0]['user_generation'];
+ $this->invited_by = $result[0]['user_invited_by'];
$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, user_generation FROM users WHERE user_invite_code = ?;";
+ $sql = "SELECT user_id, user_name, user_password, user_date_registered, user_level, user_generation, user_invited_by FROM users WHERE user_invite_code = ?;";
$result = Database::get()->query($sql, "s", $invite_code);
if (empty($result)) {
@@ -86,21 +89,31 @@ class User $this->level = $result[0]['user_level'];
$this->invite_code = $invite_code;
$this->generation = $result[0]['user_generation'];
+ $this->invited_by = $result[0]['user_invited_by'];
$this->has_value = true;
}
+ public function get_inviter(): User
+ {
+ $result = new User();
+ $result->get_by_id($this->invited_by);
+ return $result;
+ }
+
public function has_value(): bool
{
return $this->has_value;
}
- public static function register(string $username, string $password, int $generation)
+ public static function register(string $username, string $password, User $invited_by)
{
- $sql = "INSERT INTO users(user_name, user_password, user_date_registered, user_invite_code, user_generation) VALUES(?, ?, NOW(), ?, ?);";
+ $sql = "INSERT INTO users(user_name, user_password, user_date_registered, user_invite_code, user_generation, user_invited_by) VALUES(?, ?, NOW(), ?, ?, ?);";
$pass_hash = password_hash($password, PASSWORD_DEFAULT);
$invite_code = generate_invite_code();
- Database::get()->query($sql, "sssi", $username, $pass_hash, $invite_code, $generation);
+
+ $generation = $invited_by->generation + 1;
+ Database::get()->query($sql, "sssii", $username, $pass_hash, $invite_code, $generation, $invited_by->id);
}
public function update_invite_code()
diff --git a/meta/setup.sql b/meta/setup.sql index dff7769..7f7d48d 100644 --- a/meta/setup.sql +++ b/meta/setup.sql @@ -6,6 +6,7 @@ CREATE TABLE users ( user_date_registered DATETIME NOT NULL, user_invite_code VARCHAR(8) NOT NULL, user_generation INT NOT NULL, + user_invited_by INT, UNIQUE INDEX user_name_unique (user_name), UNIQUE INDEX user_invite_unique (user_invite_code), PRIMARY KEY (user_id) diff --git a/viewuser.php b/viewuser.php index 33d8636..19f034c 100755 --- a/viewuser.php +++ b/viewuser.php @@ -25,7 +25,14 @@ if (!$current->has_value()) { <body> <?php include_once "includes/templates/header.php" ?> <h1><?= $current->name; ?></h1> - <h4>Generation <?= $current->generation; ?></h4> + + <h4> + Generation <?= $current->generation; ?> +<?php if ($current->invited_by > 0): ?> + <br> + invited by <a href="viewuser.php?id=<?= $current->invited_by; ?>"><?= $current->get_inviter()->name; ?></a> +<?php endif ?> + </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> |