Файл: adultscript-2.0.3-pro/files/modules/user/components/confirm.php
Строк: 57
<?php
defined('_VALID') or die('Restricted Access!');
class VComponent_user_confirm extends VModule_user
{
public function __construct()
{
parent::__construct();
}
public function render()
{
$filter = VF::factory('filter');
$errors = array();
$messages = array();
if (isset($_GET['id']) && isset($_GET['code'])) {
$id = (int) trim($_GET['id']);
$code = $filter->get('code', 'STRING', 'GET');
$this->db->query("SELECT status, verified, email
FROM #__user
WHERE user_id = ".$id."
LIMIT 1");
if ($this->db->affected_rows()) {
$user = $this->db->fetch_assoc();
if ($user['status'] == '0') {
$errors[] = __('account-suspended');
} elseif ($user['status'] == '2') {
$errors[] = __('account-approve');
} elseif ($user['verified'] == '1') {
$errors[] = __('account-verified');
} else {
$this->db->query("SELECT expire
FROM #__user_verification
WHERE user_id = ".$id."
AND code = '".$this->db->escape($code)."'
LIMIT 1");
if ($this->db->affected_rows()) {
$expire = strtotime($this->db->fetch_field('expire'));
$delay = ((int) VCfg::get('user.verify_expire') * 24) * 3600;
if (($expire+$delay) < time()) {
$errors[] = __('confirm-expired');
} else {
$this->db->query("UPDATE #__user
SET verified = '1'
WHERE user_id = ".$id."
LIMIT 1");
if (VAuth::loggedin() && ((int)$_SESSION['user_id'] === $id)) {
$_SESSION['verified'] = '1';
}
$messages[] = __('confirm-success');;
}
} else {
$errors[] = __('confirm-invalid');
}
}
} else {
$errors[] = __('user-invalid');
}
}
if (isset($_POST['submit_confirm'])) {
$email = $filter->get('email');
if ($email == '') {
$errors[] = __('email-empty');
} elseif (!VValid::email($email)) {
$errors[] = __('email-invalid');
} else {
$this->db->query("SELECT user_id, username, status
FROM #__user
WHERE email = '".$this->db->escape($email)."'
LIMIT 1");
if ($this->db->affected_rows()) {
$user = $this->db->fetch_assoc();
if ($user['status'] == '0') {
$errors[] = __('account-suspended');
} elseif ($user['status'] == '2') {
$errors[] = __('account-approve');
}
} else {
$errors[] = __('confirm-missing');
}
}
if (!$errors) {
$user_id = (int) $user['user_id'];
$username = $user['username'];
$code = VText::random('alnum', 16);
$this->db->query("DELETE FROM #__user_verification
WHERE user_id = ".$user_id);
$this->db->query("INSERT INTO #__user_verification
SET user_id = ".$user_id.",
code = '".$code."',
expire = '".date('Y-m-d')."'");
$mail = VF::factory('email');
$link = BASE_URL.'/user/confirm/?id='.$user_id.'&code='.$code;
$search = array('[#SITE_NAME#]', '[#BASE_URL#]', '[#USERNAME#]', '[#CONFIRM_URL#]', '[#NOTIFS_URL#]');
$replace = array(VF::cfg_item('site_name'), BASE_URL, $username, $link, BASE_URL.'/user/notifications/');
$mail->predefined('user-verify', $email, $search, $replace, 'noreply');
$messages[] = __('confirm-sent');
}
}
$this->tpl->menu = 'home';
$this->tpl->meta_title = __('confirm-meta-title');
$this->tpl->errors = $errors;
$this->tpl->messages = $messages;
$this->tpl->load(array('header', 'user_confirm', 'footer'));
$this->tpl->display();
}
}