get_row("SELECT * FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id AND wp_messages.id = $msg_id LIMIT 1", OBJECT);
if ($msg === NULL)
die('
Message inconnu
');
$html = "";
$html .= "
Message du consommateur :
";
$html .= "
Nom Prénom : ".$msg->lastname." ".$msg->firstname."
";
$html .= "
E-mail : ".$msg->email."
";
$html .= "
".nl2br($msg->content)."
";
$html .= "
Réponse :
";
$html .= "
".nl2br($msg->response)."
";
$html .= "
";
echo($html);
die();
}
//Ajax pour ouvrir la page de réponse
add_action( 'wp_ajax_getReponseForMsg', 'getReponseForMsg' );
add_action( 'wp_ajax_nopriv_getReponseForMsg', 'getReponseForMsg' );
function getReponseForMsg(){
global $wpdb;
$msg_id = $_POST['id'];
$msg = $wpdb->get_row("SELECT * FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id AND wp_messages.id = $msg_id LIMIT 1", OBJECT);
if ($msg === NULL)
die('Message inconnu
');
$html = "";
$html .= "
Message du consommateur :
";
$html .= "
Nom Prénom : ".$msg->lastname." ".$msg->firstname."
";
$html .= "
E-mail : ".$msg->email."
";
$html .= "
".nl2br($msg->content)."
";
$html .= "
Votre Réponse :
";
$html .= "
";
$html .= "
";
$html .= "
";
$html .= "
";
echo($html);
die();
}
//Ajax d'envoi de la réponse
add_action( 'wp_ajax_sendReponse', 'sendReponse' );
add_action( 'wp_ajax_nopriv_sendReponse', 'sendReponse' );
function sendReponse(){
global $wpdb;
$email = $_POST['email'];
$message = $_POST['message'];
$msg_id = $_POST['id'];
$ref = $_POST['ref'];
$message = "REF: $ref
" . nl2br($message);
wp_mail($email, "Réponse à votre message sur le site LDC", $message);
$wpdb->update(
'wp_messages',
[
'response' => $message,
'response_date' => date('Y-m-d H:i:s'),
'status' => 1,
], ['id' => $msg_id], [
'%s',
'%s',
'%d',
]
);
$html = "Message Envoyé !
";
echo($html);
die();
}
function generateRandomString($length = 10) {
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
add_action( 'wp_ajax_ContactAjx', 'ContactAjx');
add_action( 'wp_ajax_nopriv_ContactAjx', 'ContactAjx');
function ContactAjx() {
global $wpdb;
// TODO : Validation Recaptcha with toekn
// TODO : Test variables required
//check_ajax_referer( 'ajax-security-nonce', 'security' );
$postID = sanitize_text_field($_POST['id']);
$firstname = sanitize_text_field($_POST['firstname']);
$lastname = sanitize_text_field($_POST['lastname']);
$email = sanitize_email($_POST['email']);
$content = "";
foreach ($_POST as $key => $item){
if ($key === 'firstname' || $key === 'lastname' || $key === 'email' || $key === 'action' || $key === 'id' || $key === 'token')
continue;
if (is_array($item)){
$content .= ucfirst($key) . " :\n\r";
foreach ($item as $v){
$content .= "- $v \n\r";
}
}else{
$content .= ucfirst($key) . " : " . $item . "\n\r";
}
}
$ref = date('ymd') . '-' . generateRandomString(4);
$wpdb->insert(
'wp_messages',
[
'ref' => $ref,
'firstname' => $firstname,
'lastname' => $lastname,
'email' => $email,
'content' => $content,
'status' => 0,
'date' => date('Y-m-d H:i:s'),
'type_id' => getMessageType($postID)
], [
'%s',
'%s',
'%s',
'%s',
'%s',
'%d',
'%s',
'%d'
]
);
$email = sendNotification($postID);
wp_mail($email, "Vous avez un message à traiter sur le site LDC", "$ref");
die();
}
// Function to change email address
function wpb_sender_email( $original_email_address ) {
return 'nepasrepondre@ldc.fr';
}
// Function to change sender name
function wpb_sender_name( $original_email_from ) {
return 'Groupe LDC';
}
// Hooking up our functions to WordPress filters
add_filter( 'wp_mail_from', 'wpb_sender_email' );
add_filter( 'wp_mail_from_name', 'wpb_sender_name' );
function getMessages($page, $ref = false)
{
global $wpdb;
$offset = ($page * 8) - 8;
if ($ref !== false){
return $wpdb->get_results("SELECT *, wp_messages.id AS msg_id FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id AND ref = '$ref' ORDER BY status LIMIT $offset, 8", OBJECT);
}
return $wpdb->get_results("SELECT *, wp_messages.id AS msg_id FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id ORDER BY status LIMIT $offset, 8", OBJECT);
}
function getPagination()
{
global $wpdb;
$t = $wpdb->get_row("SELECT COUNT(*) AS count FROM wp_messages", OBJECT);
return ceil($t->count / 8);
}
function init()
{
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$currentPage = 1;
$ref = sanitize_text_field($_POST['ref']);
$messages = getMessages($currentPage, $ref);
}else{
$currentPage = isset($_GET['p']) ? (int)$_GET['p'] : 1;
$messages = getMessages($currentPage);
}
$page = '';
$page .= '
Gestion des messages - LDC
';
$page .= "
";
// Tableau
$page .= "
";
$page .= "";
$page .= "| # | ";
$page .= "Date | ";
$page .= "Statut | ";
$page .= "Nom | ";
$page .= "Prénom | ";
$page .= "Email | ";
$page .= "Type | ";
$page .= "Date de réponse | ";
$page .= " | ";
$page .= "
";
foreach ($messages as $message){
$page .= "";
$page .= "| $message->ref | ";
$page .= "". date('d/m/Y H:i', strtotime($message->date)) ." | ";
if ($message->status === '0'){
$page .= "À traiter | ";
}else{
$page .= "Traité | ";
}
$page .= "$message->lastname | ";
$page .= "$message->firstname | ";
$page .= "$message->email | ";
$page .= "$message->name | ";
if ($message->response_date !== NULL){
$page .= "". date('d/m/Y H:i', strtotime($message->response_date)) ." | ";
}else{
$page .= "- | ";
}
if ($message->status === '0'){
$page .= "Répondre | ";
}else{
$page .= "Afficher | ";
}
$page .= "
";
}
$page .= "
";
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$page .= "";
}
$page .= "
";
$page .= '
';
echo $page;
}