This repository has been archived by the owner on May 8, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathresend-activation.php
112 lines (101 loc) · 2.91 KB
/
resend-activation.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
require_once("models/config.php");
if (!securePage($_SERVER['PHP_SELF'])){die();}
//Forms posted
if(!empty($_POST) && $emailActivation)
{
$email = $_POST["email"];
$username = $_POST["username"];
//Perform some validation
//Feel free to edit / change as required
if(trim($email) == "")
{
$errors[] = lang("ACCOUNT_SPECIFY_EMAIL");
}
//Check to ensure email is in the correct format / in the db
else if(!isValidEmail($email) || !emailExists($email))
{
$errors[] = lang("ACCOUNT_INVALID_EMAIL");
}
if(trim($username) == "")
{
$errors[] = lang("ACCOUNT_SPECIFY_USERNAME");
}
else if(!usernameExists($username))
{
$errors[] = lang("ACCOUNT_INVALID_USERNAME");
}
if(count($errors) == 0)
{
//Check that the username / email are associated to the same account
if(!emailUsernameLinked($email,$username))
{
$errors[] = lang("ACCOUNT_USER_OR_EMAIL_INVALID");
}
else
{
$userdetails = fetchUserDetails($username);
//See if the user's account is activation
if($userdetails["active"]==1)
{
$errors[] = lang("ACCOUNT_ALREADY_ACTIVE");
}
else
{
if ($resend_activation_threshold == 0) {
$hours_diff = 0;
}
else {
$last_request = $userdetails["last_activation_request"];
$hours_diff = round((time()-$last_request) / (3600*$resend_activation_threshold),0);
}
if($resend_activation_threshold!=0 && $hours_diff <= $resend_activation_threshold)
{
$errors[] = lang("ACCOUNT_LINK_ALREADY_SENT",array($resend_activation_threshold));
}
else
{
//For security create a new activation url;
$new_activation_token = generateActivationToken();
if(!updateLastActivationRequest($new_activation_token,$username,$email))
{
$errors[] = lang("SQL_ERROR");
}
else
{
$mail = new userCakeMail();
$activation_url = $websiteUrl."activate-account.php?token=".$new_activation_token;
//Setup our custom hooks
$hooks = array(
"searchStrs" => array("#ACTIVATION-URL","#USERNAME#"),
"subjectStrs" => array($activation_url,$userdetails["display_name"])
);
if(!$mail->newTemplateMsg("resend-activation.txt",$hooks))
{
$errors[] = lang("MAIL_TEMPLATE_BUILD_ERROR");
}
else
{
if(!$mail->sendMail($userdetails["email"],"Activate your ".$websiteName." Account"))
{
$errors[] = lang("MAIL_ERROR");
}
else
{
//Success, user details have been updated in the db now mail this information out.
$successes[] = lang("ACCOUNT_NEW_ACTIVATION_SENT");
}
}
}
}
}
}
}
}
//Prevent the user visiting the logged in page if he/she is already logged in
if(isUserLoggedIn()) { header("Location: account.php"); die(); }
require_once("models/header.php");
include("models/menu.php");
include("include/html-templates/resend-activation.php")
include("models/plugins.php");
?>