admin/model/localisation/order_status.php
<?php
/**
* @package Arastta eCommerce
* @copyright 2015-2017 Arastta Association. All rights reserved.
* @copyright See CREDITS.txt for credits and other copyright notices.
* @license GNU GPL version 3; see LICENSE.txt
* @link https://arastta.org
*/
class ModelLocalisationOrderStatus extends Model {
public function addOrderStatus($data) {
foreach ($data['order_status'] as $language_id => $value) {
if (isset($order_status_id)) {
$this->db->query("INSERT INTO " . DB_PREFIX . "order_status SET order_status_id = '" . (int)$order_status_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', message = '" . $this->db->escape($value['message']) . "'");
} else {
$this->db->query("INSERT INTO " . DB_PREFIX . "order_status SET language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', message = '" . $this->db->escape($value['message']) . "'");
$order_status_id = $this->db->getLastId();
$sql = 'INSERT INTO `' . DB_PREFIX . 'email` (`text`, `text_id`, `context`, `type`, `status`) VALUES ';
$sql .= "('" . $this->db->escape($value['name']) . "', '" . $order_status_id . "', 'status." . strtolower($this->db->escape($value['name'])) ."', 'order', 1);";
$this->db->query($sql);
$email_id = $this->db->getLastId();
}
if (empty($value['email_template'])) {
$value['email_template'] = "<div style="width:695px;"><p></p><p></p><p><a href="{site_url}" target="_blank"><img src="{logo}"></a></p><p style="margin-top:0px;margin-bottom:20px">Thank you for your interest in {store_name} products. But your order canceld,</p> <p style="margin-top:0px;margin-bottom:20px">To view your order click on the link below:</p> <p style="margin-top:0px;margin-bottom:20px"><a href="{order_href}" target="_blank">{order_href}</a></p> <table style="border-collapse:collapse; width: 690px;border-top:1px solid #dddddd;border-left:1px solid #dddddd;margin-bottom:20px"> <thead> <tr> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:left;padding:7px;color:#222222" colspan="2">Order Datails</td> </tr> </thead> <tbody> <tr> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"><b>Order ID:&nbsp;</b><span style="font-size: 13px; line-height: 18px; text-align: right;">{order_id}</span><br> <b>Date Added:</b>&nbsp;<span style="font-size: 13px; line-height: 18px; text-align: right;">{date}</span><br><b style="color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;">Payment Method</b><b>:</b>&nbsp;<span style="font-size: 13px; line-height: 18px; text-align: right;">{payment}</span><br><b style="color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;">Shipping Method</b><b>:</b>&nbsp;<span style="font-size: 13px; line-height: 18px; text-align: right;">{shipment}</span></td> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"><b style="color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;">E-mail</b><b>:</b>&nbsp;<span style="font-size: 13px; line-height: 18px; text-align: right;">{email}</span><br><b>Telephone:</b>&nbsp;<span style="font-size: 13px; line-height: 18px; text-align: right;">{telephone}</span><br><b style="color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;">IP Address</b><b>:</b> {ip}<br><b>Order Status:</b> " . $this->db->escape($value['name']) . "<br></td> </tr> </tbody> </table><table style="border-collapse:collapse; width: 690px;border-top:1px solid #dddddd;border-left:1px solid #dddddd;margin-bottom:20px"> <thead> <tr> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:left;padding:7px;color:#222222">Payment Address</td> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:left;padding:7px;color:#222222">Shipping Address</td> </tr> </thead> <tbody> <tr> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"><span style="font-size: 13px; line-height: 18px; text-align: right;">{payment_address}</span><br></td> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"><span style="font-size: 13px; line-height: 18px; text-align: right;">{shipping_address}</span></td></tr></tbody></table><p></p><p></p>{comment:start}<table style="border-collapse:collapse; width: 690px;border-top:1px solid #dddddd;border-left:1px solid #dddddd;margin-bottom:20px"> <tbody> <tr> <td style="font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"><span style="font-size: 13px; line-height: 18px; text-align: right;">{comment}</span></td> </tr> </tbody></table>{comment:stop}<p></p><p></p><p></p><div style="border-collapse:collapse; width: 690px;border-top:1px solid #dddddd;border-left:1px solid #dddddd;margin-bottom:20px"> <div id="product_head"> <div id="product_image" style="float:left;width: 100px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:left;padding:7px;color:#222222">Product Image</div> <div id="product" style="float:left;width: 100px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:left;padding:7px;color:#222222">Product</div> <div id="product_model" style="float:left;width: 100px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:left;padding:7px;color:#222222">Model</div> <div id="product_quantity" style="float:left;width: 100px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:right;padding:7px;color:#222222">Quantity</div> <div id="product_price" style="float:left;width: 100px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:right;padding:7px;color:#222222">Price</div> <div id="product_total" style="float:left;width: 100px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;background-color:#efefef;font-weight:bold;text-align:right;padding:7px;color:#222222">Total</div> </div> <div style="clear:both;"></div> {product:start} <div> <div style="float:left;width: 100px;height:60px;font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"> <img src="{product_image}" style="width: 50px;height: 50px;padding: auto;"> </div> <div style="float:left;width: 100px;height:60px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"> <span style="font-size: 13px; line-height: 60px; text-align: right;">{product_name}</span> </div> <div style="float:left;width: 100px;height:60px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:left;padding:7px"> <span style="font-size: 13px; line-height: 60px; text-align: right;">{product_model}</span> </div> <div style="float:left;width: 100px;height:60px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:right;padding:7px"> <span style="font-size: 13px; line-height: 60px;">{product_quantity}</span> </div> <div style="float:left;width: 100px;height:60px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:right;padding:7px"> <span style="font-size: 13px; line-height: 60px;">{product_price}</span> </div> <div style="float:left;width: 100px;height:60px; font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:right;padding:7px"> <span style="font-size: 13px; line-height: 60px;">{product_total}</span> </div> </div> <div style="clear:both;"></div> {product:stop} <div style="clear:both;"></div> {total:start} <div> <div style="float:left;width: 560px;font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:right;padding:7px">{total_title}</div> <div style="float:left;width: 100px;font-size:12px;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;text-align:right;padding:7px">{total_value}</div> </div> {total:stop} <div style="clear:both;"></div></div> <div style="clear:both;"></div><p> </p><p style="margin-top:0px;margin-bottom:20px">Please reply to this e-mail if you have any questions.</p></div>";
}
$sql = "INSERT INTO " . DB_PREFIX . "email_description SET";
$sql .= " email_id = '" . (int)$email_id . "', name = '". $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['email_template']) . "',";
$sql .= " status = '1', language_id = '". (int)$language_id . "'";
$this->db->query($sql);
}
$this->cache->delete('order_status');
return $order_status_id;
}
public function editOrderStatus($order_status_id, $data) {
$this->db->query("DELETE FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "'");
foreach ($data['order_status'] as $language_id => $value) {
if($value['message'] == '<p><br></p>') {
$value['message'] = Null;
}
$this->db->query("INSERT INTO " . DB_PREFIX . "order_status SET order_status_id = '" . (int)$order_status_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', message = '" . $this->db->escape($value['message']) . "'");
$email_template = $this->db->query("SELECT id FROM " . DB_PREFIX . "email WHERE type = 'order' AND text_id = '". $order_status_id . "'");
$this->db->query("UPDATE " . DB_PREFIX . "email_description SET description = '" . $this->db->escape($value['email_template']) . "' WHERE language_id = '" . (int)$language_id . "' AND email_id = '" . $email_template->row['id'] . "'");
}
$this->cache->delete('order_status');
}
public function deleteOrderStatus($order_status_id) {
$this->db->query("DELETE FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "'");
$result = $this->db->query("SELECT * FROM " . DB_PREFIX . "email WHERE text_id = '" . (int)$order_status_id . "'");
if(!empty($result->num_rows)) {
$this->db->query("DELETE FROM " . DB_PREFIX . "email WHERE text_id = '" . (int)$order_status_id . "'");
$this->db->query("DELETE FROM " . DB_PREFIX . "email_description WHERE email_id = '" . (int)$result->row['id'] . "'");
}
$this->cache->delete('order_status');
}
public function getOrderStatus($order_status_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");
return $query->row;
}
public function getOrderStatuses($data = array()) {
if ($data) {
$sql = "SELECT * FROM " . DB_PREFIX . "order_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'";
$sql .= " ORDER BY name";
if (isset($data['order']) && ($data['order'] == 'DESC')) {
$sql .= " DESC";
} else {
$sql .= " ASC";
}
if (isset($data['start']) || isset($data['limit'])) {
if ($data['start'] < 0) {
$data['start'] = 0;
}
if ($data['limit'] < 1) {
$data['limit'] = 20;
}
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
}
$query = $this->db->query($sql);
return $query->rows;
} else {
$order_status_data = $this->cache->get('order_status.' . (int)$this->config->get('config_language_id'));
if (!$order_status_data) {
$query = $this->db->query("SELECT order_status_id, name FROM " . DB_PREFIX . "order_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY name");
$order_status_data = $query->rows;
$this->cache->set('order_status.' . (int)$this->config->get('config_language_id'), $order_status_data);
}
return $order_status_data;
}
}
public function getOrderStatusDescriptions($order_status_id) {
$order_status_data = array();
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "'");
foreach ($query->rows as $result) {
$order_status_data[$result['language_id']] = array('name' => $result['name'], 'message' => $result['message']);
}
return $order_status_data;
}
public function getTotalOrderStatuses() {
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "order_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'");
return $query->row['total'];
}
}