diff --git a/globals/Dependencies/Users/ReferralProgram.php b/globals/Dependencies/Users/ReferralProgram.php index 2d8e0ba..69ee4b9 100644 --- a/globals/Dependencies/Users/ReferralProgram.php +++ b/globals/Dependencies/Users/ReferralProgram.php @@ -54,6 +54,13 @@ namespace Alphaland\Users { return $userkey->rowCount() > 0; } + public static function DeleteAllKeys(int $user) + { + $keys = $GLOBALS['pdo']->prepare("DELETE FROM user_signup_keys WHERE userGen = :u"); + $keys->bindParam(":u", $user, PDO::PARAM_INT); + $keys->execute(); + } + public static function UserKeysCount(int $user) { $keys = $GLOBALS['pdo']->prepare("SELECT COUNT(*) FROM user_signup_keys WHERE userGen = :u"); @@ -62,35 +69,52 @@ namespace Alphaland\Users { return $keys->fetchColumn(); } - public static function UserKeysLimit(int $user) + public static function NextRenewal(int $user) { - return userInfo($user)->referralCooldown + 604800 >= time(); + return userInfo($user)->referralNextRenewal; } - public static function UpdateCooldown(int $user) + public static function IsRenewable(int $user) { - $updateuser = $GLOBALS['pdo']->prepare('UPDATE users SET referralCooldown = (UNIX_TIMESTAMP() + 604800) WHERE id = :userid'); + return time() >= ReferralProgram::NextRenewal($user); //returns true if the current timestamp is greater or equal than the scheduled renewal + } + + public static function UpdateNextRenewal(int $user) + { + $updateuser = $GLOBALS['pdo']->prepare('UPDATE users SET referralNextRenewal = (UNIX_TIMESTAMP() + 604800) WHERE id = :userid'); $updateuser->bindParam(":userid", $user, PDO::PARAM_INT); $updateuser->execute(); } - public static function GenerateUserKey(int $user) + public static function CreateKey(int $user) + { + $newkey = ReferralProgram::GenerateKey(32); + $n = $GLOBALS['pdo']->prepare("INSERT INTO user_signup_keys(userGen,signupkey,whenGenerated) VALUES(:user,:key,UNIX_TIMESTAMP())"); + $n->bindParam(":user", $user, PDO::PARAM_INT); + $n->bindParam(":key", $newkey, PDO::PARAM_STR); + $n->execute(); + return $newkey; + } + + public static function CheckUserKeys(int $user) { if (ReferralProgram::IsMember($user)) { - if (!ReferralProgram::UserKeysLimit($user)) { - if (ReferralProgram::UserKeysCount($user) >= 1) { - ReferralProgram::UpdateCooldown($user); - } - $newkey = ReferralProgram::GenerateKey(32); - $n = $GLOBALS['pdo']->prepare("INSERT INTO user_signup_keys(userGen,signupkey,whenGenerated) VALUES(:user,:key,UNIX_TIMESTAMP())"); - $n->bindParam(":user", $user, PDO::PARAM_INT); - $n->bindParam(":key", $newkey, PDO::PARAM_STR); - $n->execute(); - return $newkey; + if (ReferralProgram::IsRenewable($user)) + { + //step 1, update the next renewal time + ReferralProgram::UpdateNextRenewal($user); + + //step 2, delete all the current keys + ReferralProgram::DeleteAllKeys($user); + + //step 3, generate two keys + ReferralProgram::CreateKey($user); + ReferralProgram::CreateKey($user); + + return true; } - return "Maximum keys generated, check back in a week."; } - return "Error occurred"; + return false; } public static function ConfirmSignup(int $newuser, string $key) diff --git a/html/settings/index.php b/html/settings/index.php index 7778e2f..a3ea9c4 100644 --- a/html/settings/index.php +++ b/html/settings/index.php @@ -171,28 +171,16 @@ $body = <<
Referral Program
-
Maximum of two referral codes every 2 weeks.
+

-
-
-
- -
- -
-
-
-
-

- +

- @@ -316,6 +304,7 @@ function initializeSettings() $("#settings_username").html(object.username); $("#settings_email").html(object.email); $("#settings_blurb").html(object.blurb); + $("#next_ref_regen").html("New keys available starting: " + object.referralkeyrefresh + ""); $('#settings_theme').val(object.theme); $('#settings_joinpref').val(object.joinpref); @@ -366,8 +355,8 @@ function generateKey() } function activeKeys() { + initializeSettings(); var html = ''; - html += ''; html += ''; html += ''; diff --git a/html_api/referrals/activeUserKeys.php b/html_api/referrals/activeUserKeys.php index ccaa58d..520e836 100644 --- a/html_api/referrals/activeUserKeys.php +++ b/html_api/referrals/activeUserKeys.php @@ -6,6 +6,9 @@ Alphaland 2021 */ //headers + +use Alphaland\Users\ReferralProgram; + header("Access-Control-Allow-Origin: https://www.alphaland.cc"); header("access-control-allow-credentials: true"); header("Cache-Control: no-cache"); @@ -14,6 +17,8 @@ header("Expires: -1"); header("Last-Modified: " . gmdate("D, d M Y H:i:s T") . " GMT"); header('Content-Type: application/json'); +ReferralProgram::CheckUserKeys($GLOBALS['user']->id); + $b = $pdo->prepare("SELECT * FROM user_signup_keys WHERE userGen = :userid"); $b->bindParam(":userid", $GLOBALS['user']->id, PDO::PARAM_INT); $b->execute(); diff --git a/html_api/referrals/generateSignupKey.php b/html_api/referrals/generateSignupKey.php deleted file mode 100644 index f312638..0000000 --- a/html_api/referrals/generateSignupKey.php +++ /dev/null @@ -1,33 +0,0 @@ -id); -$alert = ""; -if ($key == "Error occurred" || $key == "Maximum keys generated, check back in a week." || $key == "Maximum of two active keys.") //ghetto as well -{ - $alert = $key; - $key = ""; -} - -$generatedKey = array( - "alert" => $alert, - "key" => $key -); - -die(json_encode($generatedKey)); \ No newline at end of file diff --git a/html_api/settings/index.php b/html_api/settings/index.php index fddd1ff..064b893 100644 --- a/html_api/settings/index.php +++ b/html_api/settings/index.php @@ -14,7 +14,7 @@ header("Access-Control-Allow-Origin: https://www.alphaland.cc"); header("access-control-allow-credentials: true"); header('Content-Type: application/json'); -$userid = $user->id; +$userid = $GLOBALS['user']->id; //user info $userquery = $pdo->prepare('SELECT * FROM `users` WHERE id = :uid'); @@ -32,6 +32,7 @@ $theme = $userquery->theme; //initialize 2FA in the database if it hasnt been already TwoFactor::Initialize2FA($userid); +ReferralProgram::CheckUserKeys($userid); $userInfo = array ( "userid" => $userid, @@ -41,6 +42,7 @@ $userInfo = array ( "blurb" => $blurb, "twofactorenabled" => TwoFactor::Is2FAInitialized($userid), "referralprogram" => ReferralProgram::IsMember($userid), + "referralkeyrefresh" => date("m/d/Y", ReferralProgram::NextRenewal($userid)), "joinpref" => $joinpref, "tradepref" => $tradepref, "theme" => $theme
Date Generated Signup Key
{whenGenerated}{key}