diff --git a/composer.json b/composer.json index 4aa7cf4..61c1fa2 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "require": { "erusev/parsedown": "^1.7", "vlucas/phpdotenv": "^5.6", - "phpmailer/phpmailer": "^6.9" + "wildbit/postmark-php": "^6.0" }, "authors": [ { diff --git a/functions/account_functions.php b/functions/account_functions.php index 29400ea..6ac5e7e 100644 --- a/functions/account_functions.php +++ b/functions/account_functions.php @@ -2,6 +2,8 @@ require_once 'db_functions.php'; require_once 'article_functions.php'; +use Postmark\PostmarkClient; + function user_id_exists($user_id) { $conn = get_connection(); @@ -361,7 +363,7 @@ function request_role_change_form() while ($row = $result->fetch_assoc()) { $roles .= ' '; @@ -374,7 +376,7 @@ function request_role_change_form()
Request Role
×
- + ' . $roles . ' @@ -387,7 +389,35 @@ function request_role_change_form() function request_role_change($user_id, $new_role_id) { - // TODO: Need to implement email handler first. + $conn = get_connection(); + $stmt = $conn->prepare('SELECT user_id, username, email, roles.role, created_at FROM user INNER JOIN roles WHERE user.role_id = roles.role_id AND user_id = ?'); + $stmt->bind_param('i', $user_id); + $stmt->execute(); + + $user = $stmt->get_result()->fetch_assoc(); + $stmt = $conn->prepare('SELECT role FROM roles WHERE role_id = ?'); + $stmt->bind_param('i', $new_role_id); + $stmt->execute(); + $new_role = $stmt->get_result()->fetch_array(); + + $email_html = ' +

User Role Change Request

+

The following user has requested their role on vintagecoding.net to be changed:

+

User ID: ' . $user['user_id'] . '

+

Username: ' . $user['username'] . '

+

Email: ' . $user['email'] . '

+

Current Role: ' . $user['role'] . ' -> ' . $new_role[0] . '

+

Created At: ' . $user['created_at'] . '

+ '; + + $client = new PostmarkClient($_ENV['POSTMARK_API_TOKEN']); + + $send_result = $client->sendEmail( + 'mailer@joshashton.dev', + 'me@joshashton.dev', + 'User Role Change Request - ' . $user['user_id'], + $email_html + ); } function delete_account_form() @@ -524,6 +554,7 @@ function user_view($user_id) + @@ -535,6 +566,7 @@ function user_view($user_id) + diff --git a/js/user_actions_modal.js b/js/user_actions_modal.js index d0b2055..a65a474 100644 --- a/js/user_actions_modal.js +++ b/js/user_actions_modal.js @@ -15,12 +15,12 @@ document.addEventListener('DOMContentLoaded', function() { case 'update_username_form_button': openModal('update_username_form'); break; + case 'request_role_form_button': + openModal("request_role_change_form"); + break; case 'delete_account_form_button': openModal('delete_account_form'); break; - // case 3: - // openModal("request_role_form"); - // break; default: break; } diff --git a/test.php b/test.php new file mode 100644 index 0000000..a0e8ca3 --- /dev/null +++ b/test.php @@ -0,0 +1,17 @@ +safeLoad(); + +use Postmark\PostmarkClient; + +$client = new PostmarkClient($_ENV['POSTMARK_API_TOKEN']); + +$send_result = $client->sendEmail( + "mailer@joshashton.dev", + "me@joshashton.dev", + "Postmark PHP Test", + "This is a test. Do not be alarmed." +); diff --git a/user.php b/user.php index fa07a95..4cfec19 100644 --- a/user.php +++ b/user.php @@ -59,6 +59,12 @@ if (isset($_POST['form_id'])) { $_POST['verify_new_username'] ); break; + case 'request_role_change_form': + request_role_change( + $_COOKIE['user_id'], + $_POST['requested_role'] + ); + break; case 'delete_account_form': $msg = delete_account( ($_COOKIE['role_id'] <= 2 && $_COOKIE['user_id'] != $_POST['user_id'] ? $_POST['user_id'] : $_COOKIE['user_id']),