Hotclutch reacted to
YePix in W3 osCommerce WIP
May 4
I wrote something useful for users of this version. Saving the emails from the file contact_us.php in the database and the possibility to answer them from the admin area.
contact_us.php
find:
require('includes/application_top.php');
require('includes/languages/' . $language . '/contact_us.php');
add after:
$account = array();$name = '';$email = '';$phone = '';
if (isset($_SESSION['customer_id'])) {
$account_query = tep_db_query("select c.customers_id" .
" FROM " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab " .
" WHERE c.customers_id = '" . (int)$customer_id . "'" .
" AND ab.address_book_id = c.customers_default_address_id");
$account = tep_db_fetch_array($account_query);
$customer_id = $account['customers_id'];
}
find:
tep_redirect(tep_href_link('contact_us.php', 'action=success'));
add bevore:
if (!empty($customer_id)){$cus_id = $customer_id;}else{$cus_id = '0';}
tep_db_query("insert into contact_us ( customers_id, name, email, enquiry, date) VALUES ( '" . $cus_id . "', '" . tep_db_input($name) . "', '" . $email_address . "', '" . tep_db_input($enquiry) . "', Now())");
********************
SQL - contact_us
CREATE TABLE `contact_us` (
`email_id` int NOT NULL,
`customers_id` text NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_turkish_ci NOT NULL,
`email` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci NOT NULL,
`enquiry` longtext CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci NOT NULL,
`date` datetime DEFAULT NULL,
`status` int NOT NULL,
`adminenquiry` longtext NOT NULL,
`senddate` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
ALTER TABLE `contact_us`
ADD PRIMARY KEY (`email_id`);
ALTER TABLE `contact_us`
MODIFY `email_id` int NOT NULL AUTO_INCREMENT;
COMMIT;
add to:
catalog/admin/includes/languages/german.php
define('BOX_CUSTOMERS_EMAILS_HEADING', 'Kundenanfragen');
############################
catalog/admin/includes/boxes/customers.php
array(
'code' => 'customers_email.php',
'title' => BOX_CUSTOMERS_EMAILS_HEADING,
'link' => tep_href_link('customers_email.php')
),
############################
New files:
catalog/admin/includes/languages/german/customers_email.php
<?php
define('CUSTOMERS_EMAIL_HEADING_TITLE', 'Kundenemails');
define('CUSTOMERS_EMAIL_CUSTOMER_NAME', 'Kundenname');
define('CUSTOMERS_EMAIL_CUSTOMER_GUEST', 'Gast');
define('CUSTOMERS_EMAIL_CUSTOMER_MAIL_ID', 'E-Mail ID');
define('CUSTOMERS_EMAIL_CUSTOMER_ID', 'Kundennummer');
define('CUSTOMERS_EMAIL_CUSTOMER_EMAIL', 'E-Mail');
define('CUSTOMERS_EMAIL_CUSTOMER_PHONE', 'Telefonnummer');
define('CUSTOMERS_EMAIL_CUSTOMER_SUBJECT', 'Betreff');
define('CUSTOMERS_EMAIL_CUSTOMER_ENQUIRY', 'Kundenanfrage');
define('CUSTOMERS_EMAIL_CUSTOMER_ADMIN_ENQUIRY', 'Gesendete Antwort');
define('CUSTOMERS_EMAIL_CUSTOMER_DATE', 'Anfragedatum');
define('CUSTOMERS_EMAIL_CUSTOMER_STATUS', 'Status');
define('CUSTOMERS_EMAIL_TEXT_DISPLAY_NUMBER_OF_STOCKLABEL', 'Kunden und Besucheremails');
define('CUSTOMERS_EMAIL_SEND_MAIL', 'Kundenanfrage beantworten');
define('CUSTOMERS_EMAIL_SEND_STATUS_EDIT', 'Antwort umwiderruflich senden');
define('CUSTOMERS_EMAIL_SEND_STATUS_SEND', 'Status aktualisieren');
define('CUSTOMERS_EMAIL_SEND_STATUS_SEND_OK', 'Gesendet an');
define('CUSTOMERS_EMAIL_STATUS_ON', 'Aktiv');
define('CUSTOMERS_EMAIL_STATUS_OFF', 'Gelesen');
define('CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER', 'E-Mail gesendet');
define('CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER_OVER', 'E-Mail wurde bereits gesendet');
define('CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER_CLOSE', 'Schliessen');
define('CUSTOMERS_EMAIL_STATUS_BUTTON_SHOW_EDIT', 'Details ansehen');
define('CUSTOMERS_EMAIL_STATUS_TEXT_DELETE_INTRO', 'Löschen');
define('CUSTOMERS_EMAIL_STATUS_TEXT_EDIT_INTRO', 'Bearbeiten');
define('CUSTOMERS_EMAIL_BUTTON_RETURN_TO_CUSTOMER', 'Auf E-Mail antworten');
define('CUSTOMERS_EMAIL_BUTTON_INDEX', 'Weiter zu Startseite');
define('CUSTOMERS_EMAIL_SENT_EMAIL_SUBJECT', 'Antwort auf Ihre Anfrage');
define('CUSTOMERS_EMAIL_SENT_EMAIL_TO_CUSTOMER_HEADING', 'Antwort auf Ihre Anfrage mit dem Betreff');
define('CUSTOMERS_EMAIL_TEXT_EMAIL_SEPARATOR', '<span class="small"><br>---------------------------<br></span>');
define('CUSTOMERS_EMAIL_TEXT_EMAIL_SIGNATURE_CR', '<br><span class="small"><a href="'. tep_href_link('../' . 'index.php') . '">' . STORE_NAME . '</a>' . '<br>' . STORE_ADDRESS . '<br>E-Mail: ' . STORE_OWNER_EMAIL_ADDRESS . '<br></span>');
?>
catalog/admin/customers_email.php
<?php
require('includes/application_top.php');
$action = (isset($_GET['action']) ? $_GET['action'] : '');
$status_array = array(array('id'=>'0', 'text'=>CUSTOMERS_EMAIL_STATUS_ON), array('id'=>'1', 'text'=>CUSTOMERS_EMAIL_STATUS_OFF), array('id'=>'2', 'text'=>CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER));
if (tep_not_null($action)) {
switch ($action) {
case 'insert':
case 'save':
if (isset($_GET['emID'])) $email_id = tep_db_prepare_input($_GET['emID']);
$status = tep_db_prepare_input($_POST['status']);
$adminenquiry = tep_db_prepare_input($_POST['adminenquiry']);
$sql_data_array = array(
'status' => $status,
'adminenquiry' => $adminenquiry
);
if ($action == 'insert') {
$sql_data_array = array_merge($sql_data_array);
tep_db_perform('contact_us', $sql_data_array);
tep_db_query("update contact_us set status = '1' where email_id = '" . (int)$email_id . "'");
$email_id = tep_db_insert_id();
} elseif ($action == 'save') {
$sql_data_array = $sql_data_array;
tep_db_perform('contact_us', $sql_data_array, 'update', "email_id = '" . (int)$email_id . "'");
tep_db_query("update contact_us set status = '1' where email_id = '" . (int)$email_id . "'");
}
if (USE_CACHE == 'true') {
tep_reset_cache_block('email_labels');
}
tep_redirect(tep_href_link('customers_email.php', (isset($_GET['page']) ? 'page=' . $_GET['page'] . '&' : '') . 'emID=' . $email_id));
break;
case 'sendmail':
if (isset($_GET['emID'])) $email_id = tep_db_prepare_input($_GET['emID']);
tep_db_query("update contact_us set senddate = now() where email_id = '" . (int)$email_id . "'");
tep_db_query("update contact_us set status = '2' where email_id = '" . (int)$email_id . "'");
if (USE_CACHE == 'true') {
tep_reset_cache_block('email_labels');
}
tep_redirect(tep_href_link('customers_email.php', (isset($_GET['page']) ? 'page=' . $_GET['page'] . '&' : '') . 'emID=' . $email_id));
break;
case 'deleteconfirm':
$email_id = tep_db_prepare_input($_GET['emID']);
tep_db_query("delete from contact_us where email_id = '" . (int)$email_id . "'");
$auto_increment_query = tep_db_query("select email_id from contact_us where email_id");
if (tep_db_num_rows($auto_increment_query) < '1'){
tep_db_query("ALTER TABLE contact_us AUTO_INCREMENT =1");
}
if (USE_CACHE == 'true') {
tep_reset_cache_block('email_labels');
}
tep_redirect(tep_href_link('customers_email.php', 'page=' . $_GET['page']));
break;
}
}
require('includes/template_top.php');
?>
<div class="w3-padding">
<h1 class="pageHeading"><?php echo CUSTOMERS_EMAIL_HEADING_TITLE; ?></h1>
<div class="d-flex flex-column flex-sm-row mb-3">
<div class="flex-grow-1">
<table class="w3-table w3-border w3-bordered w3-hoverable">
<thead class="w3-hover-none">
<tr class="w3-theme">
<th scope="col"><?php echo CUSTOMERS_EMAIL_CUSTOMER_NAME; ?></th>
<th scope="col" class="w3-center"><?php echo CUSTOMERS_EMAIL_CUSTOMER_MAIL_ID; ?></th>
<th scope="col" class="w3-center"><?php echo CUSTOMERS_EMAIL_CUSTOMER_ID; ?></th>
<th scope="col" class="w3-center"><?php echo CUSTOMERS_EMAIL_CUSTOMER_EMAIL; ?></th>
<th scope="col" class="w3-center"><?php echo CUSTOMERS_EMAIL_CUSTOMER_DATE; ?></th>
<th scope="col" class="w3-center"><?php echo CUSTOMERS_EMAIL_CUSTOMER_STATUS; ?></th>
<th scope="col" class="w3-center"><?php echo ''; ?> </th>
</tr>
</thead>
<tbody>
<?php
$email_query_raw = "select email_id, customers_id, name, email, phone, subject, enquiry, date, status, adminenquiry, senddate from contact_us order by email_id";
$email_split = new splitPageResults($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, $email_query_raw, $email_query_numrows);
$email_query = tep_db_query($email_query_raw);
while ($email = tep_db_fetch_array($email_query)) {
$email_id = $email['email_id'];
if ($email['customers_id'] > '0'){$cus_id = $email['customers_id'];}else{$cus_id = CUSTOMERS_EMAIL_CUSTOMER_GUEST;}
if ((!isset($_GET['emID']) || (isset($_GET['emID']) && ($_GET['emID'] == $email['email_id']))) && !isset($emInfo) && (substr($action, 0, 3) != 'new')) {
$emInfo = new objectInfo($email);
}
if (isset($emInfo) && is_object($emInfo) && ($email['email_id'] == $emInfo->email_id)) {
echo ' <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $email['email_id'] . '&action=edit') . '\'">' . "\n";
} else {
echo ' <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $email['email_id']) . '\'">' . "\n";
}
?>
<td class="dataTableContent"> <?php echo $email['name']; ?></td>
<td class="dataTableContent w3-center"> <?php echo $email['email_id']; ?></td>
<td class="dataTableContent w3-center"> <?php echo $cus_id; ?></td>
<td class="dataTableContent w3-center"><?php echo $email['email']; ?></td>
<td class="dataTableContent w3-center"> <?php echo tep_date_short($email['date']);?></td>
<td class="dataTableContent w3-center"><?php if ($email['status'] == '0'){ echo CUSTOMERS_EMAIL_STATUS_ON;} if ($email['status'] == '1'){ echo CUSTOMERS_EMAIL_STATUS_OFF;} if ($email['status'] == '2'){ echo CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER;}?></td>
<td class="dataTableContent w3-right-align"><?php if (isset($emInfo) && is_object($emInfo) && ($email['email_id'] == $emInfo->email_id)) { echo '<span class="fas fa-angle-right" style="font-size:20px;"></span>'; } else { echo '<a href="' . tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id) . '"><span title="' . IMAGE_ICON_INFO . '" class="fas fa-info-circle" style="font-size:20px;"></span></a>'; } ?> </td>
</tr>
<?php
}
?>
</tbody>
</table>
<div class="d-flex flex-column flex-sm-row justify-content-sm-between mb-3">
<div class="w3-small"><?php echo $email_split->display_count($email_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $_GET['page'], CUSTOMERS_EMAIL_TEXT_DISPLAY_NUMBER_OF_STOCKLABEL); ?></div>
<div class="w3-small"><?php echo $email_split->display_links($email_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $_GET['page']); ?></div>
</div>
<div class="d-flex flex-column flex-sm-row justify-content-sm-end mb-3">
</div>
</div>
<?php
$heading = '';
$contents = '';
switch ($action) {
case 'edit':
$heading = $emInfo->name . ' ' . $emInfo->email;
$contents = tep_draw_form('email_labels', 'customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=save', 'post', 'enctype="multipart/form-data"');
if ($emInfo->status == '2'){
$contents .= '<tr><td><div class="w3-border w3-border-red w3-black w3-padding mb-3">' . CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER_OVER . '</div>';
}else{
if ($emInfo->status == '0'){
$contents .= '<tr><td><div class="mb-3">' . CUSTOMERS_EMAIL_CUSTOMER_STATUS . '<br />' . tep_draw_pull_down_menu('status', $status_array, $emInfo->status, 'class="w3-select w3-border w3-teal"') . '</div>';
}else{
$contents .= '<tr><td><div class="mb-3">' . CUSTOMERS_EMAIL_CUSTOMER_STATUS . '<br />' . tep_draw_pull_down_menu('status', $status_array, $emInfo->status, 'class="w3-select w3-border w3-red"') . '</div>';
}
}
$contents .= '<div class="mb-3">' . CUSTOMERS_EMAIL_CUSTOMER_ENQUIRY . '<br /><div class="w3-border w3-sand w3-padding mb-2">' . CUSTOMERS_EMAIL_CUSTOMER_SUBJECT . ': ' . $emInfo->subject . '<hr class="hr-gr mt-2 mb-2">' . $emInfo->enquiry . '</div></div>';
if ($emInfo->status == '2'){
$contents .= '<div class="mb-3">' . CUSTOMERS_EMAIL_CUSTOMER_ADMIN_ENQUIRY . '<br /><div class="w3-border w3-sand w3-padding mb-2">' . $emInfo->adminenquiry . '</div></div>';
}else{
$contents .= '<div class="mb-3">' . CUSTOMERS_EMAIL_SEND_MAIL . '<br>' . tep_draw_textarea_field('adminenquiry', 'soft', '60', '5', $emInfo->adminenquiry, 'class="w3-input w3-border"') . '</div></div>';
}
if ($emInfo->status == '2'){
$contents .= '<hr class="hr-gr mt-2 mb-2"><div class="mb-3">' . tep_draw_w3_button(CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER_CLOSE, 'fa fa-lock', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id), null, null, 'class="w3-button w3-large w3-block w3-black"') . '</div>';
}else{
if ($emInfo->status == '0'){
$contents .= '<hr class="hr-gr mt-2 mb-2"><div class="mb-3 mt-3">' . tep_draw_w3_button(IMAGE_SAVE, 'fa fa-save', null, 'primary', null, 'class="w3-button w3-large w3-block w3-teal"') . '</div>';
}else{
$contents .= '<hr class="hr-gr mt-2 mb-2"><div class="mb-3 mt-3">' . tep_draw_w3_button(IMAGE_SAVE, 'fa fa-save', null, 'primary', null, 'class="w3-button w3-large w3-block w3-red"') . '</div>';
}
$contents .= '<hr class="hr-gr mt-2 mb-2"><div class="mb-3">' . tep_draw_w3_button(IMAGE_CANCEL, 'fa fa-times', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id), null, null, 'class="w3-button w3-large w3-block w3-theme-light"') . '</div>';
}
$contents .= '</td></tr>';
$contents .= '</form>';
break;
case 'send':
$heading = CUSTOMERS_EMAIL_SEND_STATUS_SEND_OK . ' ' . $emInfo->email;
$contents = '<tr><td>' . tep_draw_form('email_labels', 'customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=sendmail', 'post', 'enctype="multipart/form-data"');
$contents .= '<div class="mb-3">' . CUSTOMERS_EMAIL_CUSTOMER_ENQUIRY . '<br /><div class="w3-border w3-sand w3-padding mb-2">' . CUSTOMERS_EMAIL_CUSTOMER_SUBJECT . ': ' . $emInfo->subject . '<hr class="hr-gr mt-2 mb-2">' . $emInfo->enquiry . '</div></div>';
$contents .= '<div class="mb-3">' . CUSTOMERS_EMAIL_CUSTOMER_ADMIN_ENQUIRY . '<br /><div class="w3-border w3-sand w3-padding mb-2">' . $emInfo->adminenquiry . '</div></div>';
if (!empty($emInfo->adminenquiry)){
tep_mail($emInfo->name, $emInfo->email, CUSTOMERS_EMAIL_SENT_EMAIL_SUBJECT, CUSTOMERS_EMAIL_SENT_EMAIL_TO_CUSTOMER_HEADING . ': ' . $emInfo->subject . CUSTOMERS_EMAIL_TEXT_EMAIL_SEPARATOR . $emInfo->adminenquiry . '<br>' . CUSTOMERS_EMAIL_TEXT_EMAIL_SEPARATOR . CUSTOMERS_EMAIL_CUSTOMER_ENQUIRY . ':<br>' . CUSTOMERS_EMAIL_CUSTOMER_SUBJECT . ': ' . $emInfo->subject . '<br>' . $emInfo->enquiry . CUSTOMERS_EMAIL_TEXT_EMAIL_SEPARATOR . CUSTOMERS_EMAIL_TEXT_EMAIL_SIGNATURE_CR, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}
$contents .= '<div class="mb-3">' . tep_draw_w3_button(CUSTOMERS_EMAIL_SEND_STATUS_SEND, 'fa fa-sync-alt', null, 'primary', null, 'class="w3-button w3-large w3-block w3-teal"') . '</div>';
$contents .= '</td></tr>';
$contents .= '</form>';
break;
case 'delete':
$heading .= CUSTOMERS_EMAIL_CUSTOMER_NAME . ' ' . $emInfo->name . ' ' . CUSTOMERS_EMAIL_STATUS_TEXT_DELETE_INTRO;
$contents = tep_draw_form('email_labels', 'customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=deleteconfirm');
$contents .= '<tr><td>' . CUSTOMERS_EMAIL_STATUS_TEXT_DELETE_INTRO;
$contents .= '<div class="w3-border w3-border-teal w3-pale-green w3-padding-small mb-3"><strong>' . $emInfo->name . '</strong></div>';
$contents .= '<div class="mb-3">' . tep_draw_w3_button(IMAGE_DELETE, 'fa fa-trash-alt', null, 'primary', null, 'class="w3-button w3-large w3-block w3-red"') . '</div>';
$contents .= '<div class="mb-3">' . tep_draw_w3_button(IMAGE_CANCEL, 'fa fa-times', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $_GET['emID']), null, null, 'class="w3-button w3-large w3-block w3-theme-light"') . '</div>';
$contents .= '</td></tr>';
$contents .= '</form>';
break;
default:
if (isset($emInfo) && is_object($emInfo)) {
$heading = $emInfo->name;
if ($emInfo->status == '2'){
$contents .= '<tr><td>' . tep_draw_w3_button(CUSTOMERS_EMAIL_STATUS_BUTTON_SHOW_EDIT, 'fa fa-envelope-square', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=edit'), null, null, 'class="w3-button w3-large w3-block w3-black mb-3"');
}else{
$contents .= '<tr><td>' . tep_draw_w3_button(IMAGE_EDIT, 'fa fa-cog', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=edit'), null, null, 'class="w3-button w3-large w3-block w3-teal mb-3"');
}
if ((!empty($emInfo->adminenquiry) && ($emInfo->status != '2'))){
$contents .= '<tr><td>' . tep_draw_w3_button(CUSTOMERS_EMAIL_SEND_STATUS_EDIT, 'fab fa-telegram-plane', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=send'), null, null, 'class="w3-button w3-large w3-block w3-black mb-3"');
}
$contents .= tep_draw_w3_button(IMAGE_DELETE, 'fa fa-trash-alt', tep_href_link('customers_email.php', 'page=' . $_GET['page'] . '&emID=' . $emInfo->email_id . '&action=delete'), null, null, 'class="w3-button w3-large w3-block w3-red mb-3"');
if ($emInfo->status == '0'){
$statusname = '<div class="w3-leftbar w3-border-top w3-border-green"><div class="w3-padding-small">' . CUSTOMERS_EMAIL_CUSTOMER_STATUS . ' ' . CUSTOMERS_EMAIL_STATUS_ON . '</div></div>';
}if ($emInfo->status == '1'){
$statusname = '<div class="w3-leftbar w3-border-top w3-border-red"><div class="w3-padding-small">' . CUSTOMERS_EMAIL_CUSTOMER_STATUS . ' ' . CUSTOMERS_EMAIL_STATUS_OFF . '</div></div>';
}if ($emInfo->status == '2'){
$statusname = '<div class="w3-leftbar w3-border-top w3-border-black"><div class="w3-padding-small">' . CUSTOMERS_EMAIL_CUSTOMER_STATUS . ' ' . CUSTOMERS_EMAIL_STATUS_SEND_TO_CUSTOMER . '</div></div>';
}
$contents .= '<div class="clearfix"></div>' . $statusname;
$contents .= '</td></tr>';
}
break;
}
if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
echo '<div class="w3-quarter ms-sm-2">' . "\n" .
' <table class="w3-table w3-border w3-border-black w3-light-gray">' .
' <thead>' .
' <tr class="w3-theme">' .
' <th scope="col">'. $heading . '</th>' .
' </tr>' .
' </thead>' .
' <tbody>' . $contents . '</tbody>' .
' </table>' .
'</div>' . "\n";
}
?>
</div>
</div>
<?php
require('includes/template_bottom.php');
require('includes/application_bottom.php');
?>
FINISH
I hope it will be useful to you. Sorry is only in german.