⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.45
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
olasjoys
/
controllers
/
front
/
View File Name :
OrderDetailController.php
<?php /** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ use PrestaShop\PrestaShop\Adapter\Presenter\Order\OrderPresenter; class OrderDetailControllerCore extends FrontController { public $php_self = 'order-detail'; public $auth = true; public $authRedirection = 'history'; public $ssl = true; protected $order_to_display; protected $reference; /** * Start forms process. * * @see FrontController::postProcess() */ public function postProcess() { if (Tools::isSubmit('submitMessage')) { $idOrder = (int) Tools::getValue('id_order'); $msgText = Tools::getValue('msgText'); if (!$idOrder || !Validate::isUnsignedId($idOrder)) { $this->errors[] = $this->trans('The order is no longer valid.', [], 'Shop.Notifications.Error'); } elseif (empty($msgText)) { $this->errors[] = $this->trans('The message cannot be blank.', [], 'Shop.Notifications.Error'); } elseif (!Validate::isMessage($msgText)) { $this->errors[] = $this->trans('This message is invalid (HTML is not allowed).', [], 'Shop.Notifications.Error'); } if (!count($this->errors)) { $order = new Order($idOrder); if (Validate::isLoadedObject($order) && $order->id_customer == $this->context->customer->id) { //check if a thread already exist $id_customer_thread = CustomerThread::getIdCustomerThreadByEmailAndIdOrder($this->context->customer->email, $order->id); $id_product = (int) Tools::getValue('id_product'); $cm = new CustomerMessage(); if (!$id_customer_thread) { $ct = new CustomerThread(); $ct->id_contact = 0; $ct->id_customer = (int) $order->id_customer; $ct->id_shop = (int) $this->context->shop->id; if ($id_product && $order->orderContainProduct($id_product)) { $ct->id_product = $id_product; } $ct->id_order = (int) $order->id; $ct->id_lang = (int) $this->context->language->id; $ct->email = $this->context->customer->email; $ct->status = 'open'; $ct->token = Tools::passwdGen(12); $ct->add(); } else { $ct = new CustomerThread((int) $id_customer_thread); $ct->status = 'open'; $ct->update(); } $cm->id_customer_thread = $ct->id; $cm->message = $msgText; $client_ip_address = Tools::getRemoteAddr(); $cm->ip_address = (int) ip2long($client_ip_address); $cm->add(); if (!Configuration::get('PS_MAIL_EMAIL_MESSAGE')) { $to = (string) Configuration::get('PS_SHOP_EMAIL'); } else { $to = new Contact((int) Configuration::get('PS_MAIL_EMAIL_MESSAGE')); $to = (string) $to->email; } $toName = (string) Configuration::get('PS_SHOP_NAME'); $customer = $this->context->customer; $product = new Product($id_product); $product_name = ''; if (Validate::isLoadedObject($product) && isset($product->name[(int) $this->context->language->id])) { $product_name = $product->name[(int) $this->context->language->id]; } if (Validate::isLoadedObject($customer)) { Mail::Send( $this->context->language->id, 'order_customer_comment', $this->trans( 'Message from a customer', [], 'Emails.Subject' ), [ '{lastname}' => $customer->lastname, '{firstname}' => $customer->firstname, '{email}' => $customer->email, '{id_order}' => (int) $order->id, '{order_name}' => $order->getUniqReference(), '{message}' => Tools::nl2br(Tools::htmlentitiesUTF8($msgText)), '{product_name}' => $product_name, ], $to, $toName, (string) Configuration::get('PS_SHOP_EMAIL'), $customer->firstname . ' ' . $customer->lastname, null, null, _PS_MAIL_DIR_, false, null, null, $customer->email ); } Tools::redirect('index.php?controller=order-detail&id_order=' . $idOrder . '&messagesent'); } else { $this->redirect_after = '404'; $this->redirect(); } } } } /** * Assign template vars related to page content. * * @see FrontController::initContent() */ public function initContent() { if (Configuration::isCatalogMode()) { Tools::redirect('index.php'); } $id_order = (int) Tools::getValue('id_order'); $id_order = $id_order && Validate::isUnsignedId($id_order) ? $id_order : false; if (!$id_order) { $reference = Tools::getValue('reference'); $reference = $reference && Validate::isReference($reference) ? $reference : false; $order = $reference ? Order::getByReference($reference)->getFirst() : false; $id_order = $order ? $order->id : false; } if (!$id_order) { $this->redirect_after = '404'; $this->redirect(); } else { if (Tools::getIsset('errorQuantity')) { $this->errors[] = $this->trans('You do not have enough products to request an additional merchandise return.', [], 'Shop.Notifications.Error'); } elseif (Tools::getIsset('errorMsg')) { $this->errors[] = $this->trans('Please provide an explanation for your RMA.', [], 'Shop.Notifications.Error'); } elseif (Tools::getIsset('errorDetail1')) { $this->errors[] = $this->trans('Please check at least one product you would like to return.', [], 'Shop.Notifications.Error'); } elseif (Tools::getIsset('errorDetail2')) { $this->errors[] = $this->trans('For each product you wish to add, please specify the desired quantity.', [], 'Shop.Notifications.Error'); } elseif (Tools::getIsset('errorNotReturnable')) { $this->errors[] = $this->trans('This order cannot be returned', [], 'Shop.Notifications.Error'); } elseif (Tools::getIsset('messagesent')) { $this->success[] = $this->trans('Message successfully sent', [], 'Shop.Notifications.Success'); } $order = new Order($id_order); if (Validate::isLoadedObject($order) && $order->id_customer == $this->context->customer->id) { $this->order_to_display = (new OrderPresenter())->present($order); $this->reference = $order->reference; $this->context->smarty->assign([ 'order' => $this->order_to_display, 'HOOK_DISPLAYORDERDETAIL' => Hook::exec('displayOrderDetail', ['order' => $order]), ]); } else { $this->redirect_after = '404'; $this->redirect(); } unset($order); } parent::initContent(); $this->setTemplate('customer/order-detail'); } public function getBreadcrumbLinks() { $breadcrumb = parent::getBreadcrumbLinks(); $breadcrumb['links'][] = $this->addMyAccountToBreadcrumb(); $breadcrumb['links'][] = [ 'title' => $this->trans('Order history', [], 'Shop.Theme.Customeraccount'), 'url' => $this->context->link->getPageLink('history'), ]; if (!empty($this->reference)) { $breadcrumb['links'][] = [ 'title' => $this->reference, 'url' => '#', ]; } return $breadcrumb; } }