CMXX - Myaccount

This commit is contained in:
“VeLiTi”
2025-02-23 15:25:46 +01:00
parent 0b2ee8c3ce
commit 5dd2973a26
12 changed files with 440 additions and 223 deletions

View File

@@ -1,129 +0,0 @@
<?php
defined('admin') or exit;
// SQL query that will get all orders and sort by the date created
$stmt = $pdo->prepare('SELECT t.*, COUNT(ti.id) AS total_products FROM transactions t JOIN transactions_items ti ON ti.txn_id = t.txn_id WHERE cast(t.created as DATE) = cast(now() as DATE) GROUP BY t.id, t.txn_id, t.payment_amount, t.payment_status, t.created, t.payer_email, t.first_name, t.last_name, t.address_street, t.address_city, t.address_state, t.address_zip, t.address_country, t.account_id, t.payment_method, t.discount_code, t.shipping_method, t.shipping_amount ORDER BY t.created DESC');
$stmt->execute();
$orders = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Get the orders statistics
$stmt = $pdo->prepare('SELECT SUM(payment_amount) AS earnings FROM transactions WHERE payment_status = "Completed" AND cast(created as DATE) = cast(now() as DATE)');
$stmt->execute();
$order_stats = $stmt->fetch(PDO::FETCH_ASSOC);
// Get the total number of accounts
$stmt = $pdo->prepare('SELECT COUNT(*) AS total FROM accounts');
$stmt->execute();
$accounts = $stmt->fetch(PDO::FETCH_ASSOC);
// Get the total number of products
$stmt = $pdo->prepare('SELECT COUNT(*) AS total FROM products');
$stmt->execute();
$products = $stmt->fetch(PDO::FETCH_ASSOC);
?>
<?=template_admin_header('Dashboard', 'dashboard')?>
<div class="content-title">
<div class="title">
<i class="fa-solid fa-gauge-high"></i>
<div class="txt">
<h2>Dashboard</h2>
<p>View statistics, today's transactions, and more.</p>
</div>
</div>
</div>
<div class="dashboard">
<div class="content-block stat">
<div class="data">
<h3>New Orders</h3>
<p><?=number_format(count($orders))?></p>
</div>
<i class="fas fa-shopping-cart"></i>
<div class="footer">
<i class="fa-solid fa-rotate fa-xs"></i>Total orders for today
</div>
</div>
<div class="content-block stat">
<div class="data">
<h3>New Sales</h3>
<p><?=currency_code?><?=number_format($order_stats['earnings'] ?? 0, 2)?></p>
</div>
<i class="fas fa-coins"></i>
<div class="footer">
<i class="fa-solid fa-rotate fa-xs"></i>Total earnings for today
</div>
</div>
<div class="content-block stat">
<div class="data">
<h3>Total Accounts</h3>
<p><?=number_format($accounts['total'])?></p>
</div>
<i class="fas fa-users"></i>
<div class="footer">
<i class="fa-solid fa-rotate fa-xs"></i>Total accounts
</div>
</div>
<div class="content-block stat">
<div class="data">
<h3>Total Products</h3>
<p><?=number_format($products['total'])?></p>
</div>
<i class="fas fa-boxes"></i>
<div class="footer">
<i class="fa-solid fa-rotate fa-xs"></i>Total products
</div>
</div>
</div>
<div class="content-title">
<div class="title">
<i class="fa-regular fa-rectangle-list alt"></i>
<div class="txt">
<h2>Today's Transactions</h2>
<p>List of transactions for today.</p>
</div>
</div>
</div>
<div class="content-block">
<div class="table">
<table>
<thead>
<tr>
<td>#</td>
<td>Customer</td>
<td class="responsive-hidden">Email</td>
<td class="responsive-hidden">Products</td>
<td>Total</td>
<td class="responsive-hidden">Method</td>
<td class="responsive-hidden">Status</td>
<td class="responsive-hidden">Date</td>
<td>Actions</td>
</tr>
</thead>
<tbody>
<?php if (empty($orders)): ?>
<tr>
<td colspan="9" style="text-align:center;">There are no recent orders</td>
</tr>
<?php else: ?>
<?php foreach ($orders as $order): ?>
<tr>
<td><?=$order['id']?></td>
<td><?=htmlspecialchars($order['first_name'], ENT_QUOTES)?> <?=htmlspecialchars($order['last_name'], ENT_QUOTES)?></td>
<td class="responsive-hidden"><?=htmlspecialchars($order['payer_email'], ENT_QUOTES)?></td>
<td class="responsive-hidden"><?=$order['total_products']?></td>
<td><?=currency_code?><?=number_format($order['payment_amount'], 2)?></td>
<td class="responsive-hidden"><?=$order['payment_method']?></td>
<td class="responsive-hidden"><span class="status <?=strtolower($order['payment_status'])?>"><?=$order['payment_status']?></span></td>
<td class="responsive-hidden"><?=date('F j, Y', strtotime($order['created']))?></td>
<td><a href="index.php?page=order&id=<?=$order['id']?>" class="link1">View</a> <a href="index.php?page=order_manage&id=<?=$order['id']?>" class="link1">Edit</a></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<?=template_admin_footer()?>

View File

@@ -3,15 +3,15 @@ defined('admin') or exit;
// Capture post data
if (isset($_POST['emailtemplate'], $_POST['emailtemplate2'])) {
// Save templates
file_put_contents(dirname(__FILE__,-1).'/custom/mail/order-details-template.php', $_POST['emailtemplate']);
file_put_contents(dirname(__FILE__,-1).'/custom/mail/order-notification-template.php', $_POST['emailtemplate2']);
file_put_contents('../custom/email/order-details-template.php', $_POST['emailtemplate']);
file_put_contents('../custom/email/order-notification-template.php', $_POST['emailtemplate2']);
header('Location: index.php?page=emailtemplates&success_msg=1');
exit;
}
// Read the order details template PHP file
$contents = file_get_contents(dirname(__FILE__,-1).'/custom/mail/order-details-template.php');
$contents = file_get_contents('../custom/email/order-details-template.php');
// Read the order notification template PHP file
$contents2 = file_get_contents(dirname(__FILE__,-1).'/custom/mail/order-notification-template.php');
$contents2 = file_get_contents('../custom/email/order-notification-template.php');
// Handle success messages
if (isset($_GET['success_msg'])) {
if ($_GET['success_msg'] == 1) {

View File

@@ -15,6 +15,16 @@ include '../custom/settings/config.php';
include '../functions.php';
// Connect to MySQL database
$pdo = pdo_connect_mysql();
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
//LOGIN TO API
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
$data = json_encode(array("clientID" => clientID, "clientsecret" => clientsecret), JSON_UNESCAPED_UNICODE);
$responses = ioAPIv2('/v2/authorization', $data,'');
//Decode Payload
if (!empty($responses)){$responses = json_decode($responses,true);}else{$responses = '400';}
$clientsecret = $responses['token'];
// If the user is not logged-in redirect them to the login page
if (!isset($_SESSION['account_loggedin'])) {
header('Location: ' . url('../index.php?page=myaccount'));
@@ -29,7 +39,7 @@ if (!$account || $account['role'] != 'Admin') {
exit;
}
// Page is set to home (home.php) by default, so when the visitor visits that will be the page they see.
$page = isset($_GET['page']) && file_exists($_GET['page'] . '.php') ? $_GET['page'] : 'dashboard';
$page = isset($_GET['page']) && file_exists($_GET['page'] . '.php') ? $_GET['page'] : 'settings';
if (isset($_GET['page']) && $_GET['page'] == 'logout') {
session_destroy();
header('Location: ' . url('../index.php'));

View File

@@ -1,66 +1,90 @@
<?php
defined('admin') or exit;
// Capture post data
if (isset($_POST['language_US'], $_POST['language_NL'])) {
// Save templates
file_put_contents(dirname(__FILE__,-1).'/custom/translations/translations_US.php', $_POST['language_US']);
file_put_contents(dirname(__FILE__,-1).'/custom/translations/translations_NL.php', $_POST['language_NL']);
header('Location: index.php?page=language&success_msg=1');
exit;
//------------------------------------------
// Languages supported
//------------------------------------------
$supportedLanguages = ['US', 'NL', 'DE', 'ES','FR', 'IT'];
if(isset($_POST['generatefile'])){
$language_key = (isset($_POST['language'])) ? $_POST['language'] : '';
function generateFile($language_key,$token){
//GET TRANSLATION RECORDS
$api_url = '/v2/translations/generatefile='.$language_key;
$responses = ioAPIv2($api_url,'',$token);
if (!empty($responses)){
//define translation variable
$translation = '<?php'.PHP_EOL;
//decode the API response
$responses = json_decode($responses,true);
//loop through translation records and create variables
foreach ($responses as $response){
$text = str_replace(
['\\', "'", "\r", "\n", "\0", "\t"],
['\\\\', "\\'", '\\r', '\\n', '\\0', '\\t'],
$response['translation']
);
//create variable_name = translation per item
$translation .= '$'.$response['variable'].' = \''.$text.'\';'.PHP_EOL;
}
// Read language_US template PHP file
$contents = file_get_contents(dirname(__FILE__,-1).'/custom/translations/translations_US.php');
// Read language template PHP file
$contents2 = file_get_contents(dirname(__FILE__,-1).'/custom/translations/translations_NL.php');
// Handle success messages
if (isset($_GET['success_msg'])) {
if ($_GET['success_msg'] == 1) {
$success_msg = 'Settings updated successfully!';
//ADD closure tag for PHP
$translation .= '?>';
//Target dir
$target_dir = '../custom/translations/';
//Filename
$input_file = $target_dir.'translations_'.strtoupper($language_key).'.php';
//store translation to the file
file_put_contents($input_file, $translation);
}
}
?>
if ($language_key != ''){
generateFile($language_key,$clientsecret);
} else {
foreach ($supportedLanguages as $language){
generateFile($language,$clientsecret);
}
}
}
template_admin_header('Language', 'language');
<?=template_admin_header('Language', 'language')?>
$view .='
<form action="" method="post">
<div class="content-title responsive-flex-wrap responsive-pad-bot-3">
<h2 class="responsive-width-100">Translations</h2>
<input type="submit" name="submit" value="Save" class="btn">
</div>
<h2 class="responsive-width-100">Maintenance</h2>
</div>';
<?php if (isset($success_msg)): ?>
<div class="msg success">
<i class="fas fa-check-circle"></i>
<p><?=$success_msg?></p>
<i class="fas fa-times"></i>
$view .= '<div class="tabs">
<a href="#" class="active">'.($general_actions ?? 'Actions' ).'</a>
</div>
<?php endif; ?>
<div class="tabs">
<a href="#" class="active">US</a>
<a href="#" class="">NL</a>
</div>
<div class="content-block">
';
$view .= '<div class="content-block tab-content active">
<div class="form responsive-width-100">
<label for="">Language</label>
<select id="language" name="language">';
$view .='<option value=""></option>';
foreach ($supportedLanguages as $language){
$view .='<option value="'.$language.'">'.$language.'</option>';
}
$view .=' </select>
<input type="submit" name="generatefile" style="width: 15%;" value="Generate language" class="btn">
</div>
</div>';
<div class="tab-content active">
<label for="language_US">Language_US:</label>
<textarea name="language_US" id="language_US" style="min-height: 100vh;"><?=$contents?></textarea>
</div>
<div class="tab-content">
<label for="language_NL">Language_NL:</label>
<textarea name="language_NL" id="language_NL" style="min-height: 100vh;"><?=$contents2?></textarea>
</div>
</div>
</div>
$view .= '</form>';
</form>
<script>
document.querySelectorAll("input[type='checkbox']").forEach(checkbox => {
checkbox.onclick = () => checkbox.value = checkbox.checked ? 'true' : 'false';
});
</script>
//Output
echo $view;
<?=template_admin_footer()?>
template_admin_footer();

111
admin/settings.php Normal file
View File

@@ -0,0 +1,111 @@
<?php
defined('admin') or exit;
// Configuration file
$file = '../custom/settings/config.php';
// Open the configuration file for reading
$contents = file_get_contents($file);
// Format key function
function format_key($key) {
$key = str_replace(
['_', 'url', 'db ', ' pass', ' user', 'ipn', 'paypal'],
[' ', 'URL', 'Database ', ' Password', ' Username', 'IPN', 'PayPal'],
strtolower($key)
);
return ucwords($key);
}
// Format HTML output function
function format_var_html($key, $value) {
$html = '';
$type = 'text';
$value = htmlspecialchars(trim($value, '\''), ENT_QUOTES);
$type = strpos($key, 'secret') !== false ? 'password' : $type;
$type = strpos($key, 'pass') !== false ? 'password' : $type;
$type = strpos($key, 'Pw') !== false ? 'password' : $type;
$type = in_array(strtolower($value), ['true', 'false']) ? 'checkbox' : $type;
$checked = strtolower($value) == 'true' ? ' checked' : '';
$html .= '<label for="' . $key . '">' . format_key($key) . '</label>';
if ($type == 'checkbox') {
$html .= '<input type="hidden" name="' . $key . '" value="false">';
}
$html .= '<input type="' . $type . '" name="' . $key . '" id="' . $key . '" value="' . $value . '" placeholder="' . format_key($key) . '"' . $checked . '>';
return $html;
}
// Format tabs
function format_tabs($contents) {
$rows = explode("\n", $contents);
echo '<div class="tabs">';
echo '<a href="#" class="active">General</a>';
for ($i = 0; $i < count($rows); $i++) {
preg_match('/\/\*(.*?)\*\//', $rows[$i], $match);
if ($match) {
echo '<a href="#">' . $match[1] . '</a>';
}
}
echo '</div>';
}
// Format form
function format_form($contents) {
$rows = explode("\n", $contents);
echo '<div class="tab-content active">';
for ($i = 0; $i < count($rows); $i++) {
preg_match('/\/\*(.*?)\*\//', $rows[$i], $match);
if ($match) {
echo '</div><div class="tab-content">';
}
preg_match('/define\(\'(.*?)\', ?(.*?)\)/', $rows[$i], $match);
if ($match) {
echo format_var_html($match[1], $match[2]);
}
}
echo '</div>';
}
if (!empty($_POST)) {
// Update the configuration file with the new keys and values
foreach ($_POST as $k => $v) {
$v = in_array(strtolower($v), ['true', 'false']) ? strtolower($v) : '\'' . $v . '\'';
$contents = preg_replace('/define\(\'' . $k . '\'\, ?(.*?)\)/s', 'define(\'' . $k . '\',' . $v . ')', $contents);
}
file_put_contents('../custom/settings/config.php', $contents);
header('Location: index.php?page=settings&success_msg=1');
exit;
}
// Handle success messages
if (isset($_GET['success_msg'])) {
if ($_GET['success_msg'] == 1) {
$success_msg = 'Settings updated successfully!';
}
}
?>
<?=template_admin_header('Settings', 'settings')?>
<form action="" method="post">
<div class="content-title responsive-flex-wrap responsive-pad-bot-3">
<h2 class="responsive-width-100">Settings</h2>
<input type="submit" name="submit" value="Save" class="btn">
</div>
<?php if (isset($success_msg)): ?>
<div class="msg success">
<i class="fas fa-check-circle"></i>
<p><?=$success_msg?></p>
<i class="fas fa-times"></i>
</div>
<?php endif; ?>
<?=format_tabs($contents)?>
<div class="content-block">
<div class="form responsive-width-100">
<?=format_form($contents)?>
</div>
</div>
</form>
<script>
document.querySelectorAll("input[type='checkbox']").forEach(checkbox => {
checkbox.onclick = () => checkbox.value = checkbox.checked ? 'true' : 'false';
});
</script>
<?=template_admin_footer()?>

View File

@@ -0,0 +1,102 @@
<?php
defined($security_key) or exit;
//------------------------------------------
// Content Reset Email
//------------------------------------------
$newuser_subject = 'CustomerPortal user created';
$newuser_header = 'Dear CustomerPortal user';
$newuser_text = 'Your administrator has provided access to the CustomerPortal.';
$newuser_credential_text_1 = 'Your account has been created with username ';
$newuser_credential_text_2 = 'Please click the button below to complete your registration.';
$newuser_closure = 'For security reasons this link is only active for 10 minutes.';
//------------------------------------------
// Content Reset Email
//------------------------------------------
$subject = $newuser_subject;
$message = '
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>' . $subject . '</title>
<style>
@media screen and (max-width: 600px) {
.content {
width: 100% !important;
display: block !important;
padding: 10px !important;
}
.header, .body, .footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="font-family: Arial, sans-serif">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding: 20px;">
<table class="content" width="600" border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: 1px solid #cccccc;">
<!-- Header -->
<tr>
<td class="header" style="background-color:#005655; padding: 40px; text-align: center; color: white; font-size: 24px;">
CustomerPortal
</td>
</tr>
<!-- Body -->
<tr>
<td class="body" style="padding: 40px; text-align: left; font-size: 16px; line-height: 1.6;">
' . $newuser_header . ',
<br>
<br>
'.$newuser_text.' '.$newuser_credential_text_1.'<b>'.$post_content['username'].'</b>
<br>
<br>
'.$newuser_credential_text_2.'
</td>
</tr>
<!-- Call to action Button -->
<tr>
<td style="padding: 0px 40px 0px 40px; text-align: center;">
<!-- CTA Button -->
<table cellspacing="0" cellpadding="0" style="margin: auto;">
<tr>
<td align="center" style="background-color: #008685; padding: 10px 20px; border-radius: 5px;">
<a href="https://' . base_url . '/page=myaccount?activation_key='.$resetkey.'" target="_blank" style="color: #ffffff; text-decoration: none; font-weight: bold;">Reset Password</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="body" style="padding: 40px; text-align: left; font-size: 16px; line-height: 1.6;">
' . $newuser_closure . '
<br>
<br>
Kind regards,
<br>
<br>
Service team
<br>
<br>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="footer" style="background: url(\'https://'.base_url.emaillogo.'\');background-position: center center;background-repeat:no-repeat;background-size:contain;background-color: #005655; padding: 40px;">
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
';

View File

@@ -0,0 +1,99 @@
<?php
defined($security_key) or exit;
//------------------------------------------
// Content Reset Email
//------------------------------------------
$changeuser_subject = 'CustomerPortal - password reset requested';
$changeuser_header = 'Dear CustomerPortal user';
$changeuser_text = 'A password reset has been requested for your account.';
$changeuser_credential_text_1 = 'Please click the button below to reset the password of your CustomerPortal account.';
$changeuser_closure = 'For security reasons this link is only active for 10 minutes.';
//------------------------------------------
// Content Reset Email
//------------------------------------------
$subject = $changeuser_subject;
$message = '
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>' . $subject . '</title>
<style>
@media screen and (max-width: 600px) {
.content {
width: 100% !important;
display: block !important;
padding: 10px !important;
}
.header, .body, .footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="font-family: Arial, sans-serif">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding: 20px;">
<table class="content" width="600" border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: 1px solid #cccccc;">
<!-- Header -->
<tr>
<td class="header" style="background-color:#005655; padding: 40px; text-align: center; color: white; font-size: 24px;">
CustomerPortal
</td>
</tr>
<!-- Body -->
<tr>
<td class="body" style="padding: 40px; text-align: left; font-size: 16px; line-height: 1.6;">
' . $changeuser_header . ',
<br>
<br>
'.$changeuser_text.'
<br>
<br>
'.$changeuser_credential_text_1 .'
</td>
</tr>
<!-- Call to action Button -->
<tr>
<td style="padding: 0px 40px 0px 40px; text-align: center;">
<!-- CTA Button -->
<table cellspacing="0" cellpadding="0" style="margin: auto;">
<tr>
<td align="center" style="background-color: #008685; padding: 10px 20px; border-radius: 5px;">
<a href="https://' . $portalURL . '/reset.php?resetkey='.$resetkey.'" target="_blank" style="color: #ffffff; text-decoration: none; font-weight: bold;">Reset Password</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="body" style="padding: 40px; text-align: left; font-size: 16px; line-height: 1.6;">
' . $changeuser_closure . '
<br>
<br>
Kind regards,
<br>
<br>
Service team
<br>
<br>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="footer" style="background: url(\'https://'.$portalURL.emaillogo.'\');background-position: center center;background-repeat:no-repeat;background-size:contain;background-color: #005655; padding: 40px;">
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
';

View File

@@ -64,6 +64,8 @@ define('default_product_sort','sort3');
define('invoice_bookkeeping',false);
// Email of bookkeeping software
define('email_bookkeeping','');
// Rewrite URL?
define('rewrite_url',true);
/* Images */
// Featured image URL
@@ -131,8 +133,8 @@ define('mail_enabled',true);
define('email','info@gewoonlekkerspaans.nl');
// Receive email notifications?
define('email_notifications',false);
// Rewrite URL?
define('rewrite_url',true);
//EMAIL LOGO
define('emaillogo','custom/assets/MORVALFavicon.svg');
//Additional phpmailer-settings
define('email_host_name','gewoonlekkerspaans.nl');
define('email_reply_to','info@gewoonlekkerspaans.nl');

View File

@@ -176,7 +176,6 @@ function template_admin_header($title, $selected = 'orders', $selected_child = '
$site_name = site_name;
$icon_image = icon_image;
$admin_links = '
<a href="index.php?page=dashboard"' . ($selected == 'dashboard' ? ' class="selected"' : '') . '><i class="fas fa-tachometer-alt"></i>Dashboard</a>
<a href="index.php?page=settings"' . ($selected == 'settings' ? ' class="selected"' : '') . '><i class="fas fa-tools"></i>Settings</a>
<div class="sub">
<a href="index.php?page=settings"' . ($selected == 'settings' && $selected_child == '' ? ' class="selected"' : '') . '><span>&#9724;</span>Settings</a>

View File

@@ -29,7 +29,7 @@ $view = '
if(show_offer_home_page){
$view .='
<div class="" style="text-align: center;">
<p class="p.paragraph.neutral-paragraph-text-1" style="font-family:\'gerb\';font-size: 15px;">'.show_offer_home_text.'</p>
<p class="p.paragraph.neutral-paragraph-text-1" style="font-family:\'gerb\';font-size: 15px;">'.${show_offer_home_text} ?? show_offer_home_text .'</p>
</div>';
}
$view .='

View File

@@ -3,18 +3,22 @@
defined(security_key) or exit;
// User clicked the "Login" button, proceed with the login process... check POST data and validate email
if (isset($_POST['login'], $_POST['email'], $_POST['password']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
// Check if the account exists
$stmt = $pdo->prepare('SELECT * FROM accounts WHERE email = ?');
$stmt->execute([ $_POST['email'] ]);
$account = $stmt->fetch(PDO::FETCH_ASSOC);
// If account exists verify password
if ($account && password_verify($_POST['password'], $account['password'])) {
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
// LOGIN CONSUMER
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
$payload = json_encode(array("login" => "consumer", "email" => $_POST['email'], "password" => $_POST['password']), JSON_UNESCAPED_UNICODE);
$account = ioAPIv2('/v2/identity/',$payload,$clientsecret);
$account= json_decode($account,true);
if ($account && isset($account['accountID'])) {
// User has logged in, create session data
session_regenerate_id();
$_SESSION['account_loggedin'] = TRUE;
$_SESSION['account_id'] = $account['id'];
$_SESSION['account_role'] = $account['role'];
$_SESSION['account_id'] = $account['accountID'];
$_SESSION['account_role'] = $account['profile'];
$products_in_cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : [];
if ($products_in_cart) {
// user has products in cart, redirect them to the checkout page
header('Location: ' . url('index.php?page=checkout'));
@@ -32,9 +36,10 @@ $register_error = '';
// User clicked the "Register" button, proceed with the registration process... check POST data and validate email
if (isset($_POST['register'], $_POST['email'], $_POST['password'], $_POST['cpassword']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
// Check if the account exists
$stmt = $pdo->prepare('SELECT * FROM accounts WHERE email = ?');
$stmt->execute([ $_POST['email'] ]);
$account = $stmt->fetch(PDO::FETCH_ASSOC);
$account = ioAPIv2('/v2/identity/email='.$_POST['email'],'',$clientsecret);
$account = json_decode($account,true);
if ($account) {
// Account exists!
$register_error = $error_myaccount_exists;
@@ -46,27 +51,21 @@ if (isset($_POST['register'], $_POST['email'], $_POST['password'], $_POST['cpass
$register_error = $error_account_password_rules;
} else {
// Account doesnt exist, create new account
$stmt = $pdo->prepare('INSERT INTO accounts (email, password, first_name, last_name, address_street, address_city, address_state, address_zip, address_country, address_phone) VALUES (?,?,"","","","","","","","")');
// Hash the password
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt->execute([ $_POST['email'], $password ]);
$account_id = $pdo->lastInsertId();
// Automatically login the user
session_regenerate_id();
$_SESSION['account_loggedin'] = TRUE;
$_SESSION['account_id'] = $account_id;
$_SESSION['account_role'] = 'Member';
$products_in_cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : [];
if ($products_in_cart) {
// User has products in cart, redirect them to the checkout page
header('Location: ' . url('index.php?page=checkout'));
} else {
// Redirect the user back to the same page, they can then see their order history
header('Location: ' . url('index.php?page=myaccount'));
}
$payload = json_encode(array("login" => "consumer", "email" => $_POST['email'], "password" => $_POST['password'], "language" => $_SESSION['country_code']), JSON_UNESCAPED_UNICODE);
$account = ioAPIv2('/v2/identity/',$payload,$clientsecret);
$account= json_decode($account,true);
if ($account && isset($account['accountID'])) {
//SEND VERIFICATION EMAIL
ob_start();
include dirname(__FILE__).'/custom/email/email_template_register.php';
$register_mail= ob_get_clean();
send_mail_by_PHPMailer($_POST['email'], $subject, $register_mail,'', '');
exit;
}
}
}
// Determine the current tab page
$tab = isset($_GET['tab']) ? $_GET['tab'] : 'orders';
// If user is logged in

View File

@@ -61,7 +61,7 @@ $view .=' <h2>'.$h1_content_top.'</h2>
if(show_offer_product_page){
$view .= '
<div class="" style="text-align: center;">
<p class="p.paragraph.neutral-paragraph-text-1" style="font-family:\'gerb\';font-size: 15px;">'.show_offer_product_text.'</p>
<p class="p.paragraph.neutral-paragraph-text-1" style="font-family:\'gerb\';font-size: 15px;">'.${show_offer_product_text} ?? show_offer_product_text.'</p>
</div>
';
}