JEMBOT MAWOT Bypass Shell
<?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 Academic Free License version 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/AFL-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.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
if (!defined('_PS_VERSION_')) {
exit;
}
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php';
}
use PrestaShop\PrestaShop\Core\Payment\PaymentOption;
class Ps_Cashondelivery extends PaymentModule
{
const HOOKS = [
'displayOrderConfirmation',
'paymentOptions',
];
const CONFIG_OS_CASH_ON_DELIVERY = 'PS_OS_COD_VALIDATION';
/**
* {@inheritdoc}
*/
public function __construct()
{
$this->name = 'ps_cashondelivery';
$this->tab = 'payments_gateways';
$this->author = 'PrestaShop';
$this->version = '2.0.1';
$this->need_instance = 1;
$this->ps_versions_compliancy = ['min' => '1.7.6.0', 'max' => _PS_VERSION_];
$this->controllers = ['validation'];
$this->currencies = false;
parent::__construct();
$this->displayName = $this->trans('Cash on delivery (COD)', [], 'Modules.Cashondelivery.Admin');
$this->description = $this->trans('Accept cash payments on delivery to make it easy for customers to purchase on your store.', [], 'Modules.Cashondelivery.Admin');
}
/**
* {@inheritdoc}
*/
public function install()
{
return parent::install()
&& (bool) $this->registerHook(static::HOOKS)
&& $this->installOrderState();
}
/**
* @param array{cookie: Cookie, cart: Cart, altern: int} $params
*
* @return array|PaymentOption[] Should always returns an array to avoid issue
*/
public function hookPaymentOptions(array $params)
{
if (empty($params['cart'])) {
return [];
}
/** @var Cart $cart */
$cart = $params['cart'];
if ($cart->isVirtualCart()) {
return [];
}
$cashOnDeliveryOption = new PaymentOption();
$cashOnDeliveryOption->setModuleName($this->name);
$cashOnDeliveryOption->setCallToActionText($this->trans('Pay by Cash on Delivery', [], 'Modules.Cashondelivery.Shop'));
$cashOnDeliveryOption->setAction($this->context->link->getModuleLink($this->name, 'validation', [], true));
$cashOnDeliveryOption->setAdditionalInformation($this->fetch('module:ps_cashondelivery/views/templates/hook/paymentOptions-additionalInformation.tpl'));
return [$cashOnDeliveryOption];
}
/**
* @param array{cookie: Cookie, cart: Cart, altern: int, order: Order, objOrder: Order} $params
*
* @return string
*/
public function hookDisplayOrderConfirmation(array $params)
{
/** @var Order $order */
$order = (isset($params['objOrder'])) ? $params['objOrder'] : $params['order'];
if (!Validate::isLoadedObject($order) || $order->module !== $this->name) {
return '';
}
$this->context->smarty->assign([
'shop_name' => $this->context->shop->name,
'total' => $this->context->getCurrentLocale()->formatPrice($params['order']->getOrdersTotalPaid(), (new Currency($params['order']->id_currency))->iso_code),
'reference' => $order->reference,
'contact_url' => $this->context->link->getPageLink('contact', true),
]);
return $this->fetch('module:ps_cashondelivery/views/templates/hook/displayOrderConfirmation.tpl');
}
/**
* @return bool
*/
public function installOrderState()
{
if (Configuration::getGlobalValue(Ps_Cashondelivery::CONFIG_OS_CASH_ON_DELIVERY)) {
$orderState = new OrderState((int) Configuration::getGlobalValue(Ps_Cashondelivery::CONFIG_OS_CASH_ON_DELIVERY));
if (Validate::isLoadedObject($orderState) && $this->name === $orderState->module_name) {
return true;
}
}
return $this->createOrderState(
static::CONFIG_OS_CASH_ON_DELIVERY,
[
'en' => 'Awaiting Cash On Delivery validation',
'bs' => 'Čeka validaciju Plaćanje po dostavi',
'ca' => 'Esperant la validació del pagament contra reemborsament',
'da' => 'Afventer godkendelse af levering pr. efterkrav',
'de' => 'Warten auf Zahlungseingang Nachnahme',
'et' => 'Ootab sularaha kauba kättesaamisel kinnitust',
'es' => 'En espera de validación por contra reembolso.',
'mx' => 'En espera de validación por pago contra entrega',
'fr' => 'En attente de paiement à la livraison',
'qc' => 'En attente de paiement à la livraison',
'gl' => 'Agardando a validación do Pago Contra Reembolso',
'hr' => 'Awaiting cod validation',
'id' => 'Awaiting cod validation',
'it' => 'In attesa verifica contrassegno',
'lv' => 'Gaida skaidrās naudas apmaksas apstiprinājumu',
'hu' => 'Awaiting cod validation',
'nl' => 'Wachten op bevestiging (rembours)',
'no' => 'Awaiting cod validation',
'pl' => 'Oczekiwanie na płatność przy odbiorze',
'br' => 'Aguardando validação de pagamento na entrega',
'pt' => 'Awaiting cod validation',
'ro' => 'In asteptarea confirmarii platii la livrare',
'sq' => 'Në pritje të pagesës gjatë dorëzimit',
'sk' => 'Čaká sa na potvrdenie platby dobierkou',
'sr' => 'Čeka se potvrda keširanja pri isporuci',
'fi' => 'Odottaa maksuvahvistusta',
'sv' => 'Väntar på postförskott validering',
'tr' => 'Kapıda ödeme onayı bekleniyor',
'lt' => 'Awaiting cod validation',
'si' => 'Čaka potrdilo za plačilo po povzetju',
'vn' => 'Chờ xác nhận thanh toán COD',
'cs' => 'Čeká se na potvrzení dobírky',
'el' => 'Αναμονή επικύρωσης Αντικαταβολής',
'ru' => 'Ожидается подтверждение оплаты наличными',
'uk' => 'Очікується платіж післяплатою',
'bg' => 'В очакване на валидиране на плащане при доставка',
'mk' => 'Awaiting cod validation',
'he' => 'Awaiting cod validation',
'fa' => 'Awaiting cod validation',
'hi' => 'Awaiting Cash On Delivery validation',
'bn' => 'Awaiting cod validation',
'ar' => 'بإنتظار المصادقة على الدفع عند الإستلام',
'ja' => '代金引換払い確認待ち',
'zh' => '接受远程付费',
'tw' => '等待貨到付款驗證',
'ko' => '배송시 현금 지불 확인 대기',
],
true === (bool) version_compare(_PS_VERSION_, '1.7.7.0', '>=') ? '#4169E1' : '#34219E'
);
}
/**
* Create custom OrderState used for payment
*
* @param string $configurationKey Configuration key used to store OrderState identifier
* @param array $nameByLangIsoCode An array of name for all languages, default is en
* @param string $color Color of the label
* @param bool $isLogable consider the associated order as validated
* @param bool $isPaid set the order as paid
* @param bool $isInvoice allow a customer to download and view PDF versions of his/her invoices
* @param bool $isShipped set the order as shipped
* @param bool $isDelivery show delivery PDF
* @param bool $isPdfDelivery attach delivery slip PDF to email
* @param bool $isPdfInvoice attach invoice PDF to email
* @param bool $isSendEmail send an email to the customer when his/her order status has changed
* @param string $template Only letters, numbers and underscores are allowed. Email template for both .html and .txt
* @param bool $isHidden hide this status in all customer orders
* @param bool $isUnremovable Disallow delete action for this OrderState
* @param bool $isDeleted Set OrderState deleted
*
* @return bool
*/
private function createOrderState(
$configurationKey,
array $nameByLangIsoCode,
$color,
$isLogable = false,
$isPaid = false,
$isInvoice = false,
$isShipped = false,
$isDelivery = false,
$isPdfDelivery = false,
$isPdfInvoice = false,
$isSendEmail = false,
$template = '',
$isHidden = false,
$isUnremovable = true,
$isDeleted = false
) {
$tabNameByLangId = [];
foreach ($nameByLangIsoCode as $langIsoCode => $name) {
foreach (Language::getLanguages(false) as $language) {
if (Tools::strtolower($language['iso_code']) === $langIsoCode) {
$tabNameByLangId[(int) $language['id_lang']] = $name;
} elseif (isset($nameByLangIsoCode['en'])) {
$tabNameByLangId[(int) $language['id_lang']] = $nameByLangIsoCode['en'];
}
}
}
$orderState = new OrderState();
$orderState->module_name = $this->name;
$orderState->name = $tabNameByLangId;
$orderState->color = $color;
$orderState->logable = $isLogable;
$orderState->paid = $isPaid;
$orderState->invoice = $isInvoice;
$orderState->shipped = $isShipped;
$orderState->delivery = $isDelivery;
$orderState->pdf_delivery = $isPdfDelivery;
$orderState->pdf_invoice = $isPdfInvoice;
$orderState->send_email = $isSendEmail;
$orderState->hidden = $isHidden;
$orderState->unremovable = $isUnremovable;
$orderState->template = $template;
$orderState->deleted = $isDeleted;
$result = (bool) $orderState->add();
if (false === $result) {
$this->_errors[] = sprintf(
'Failed to create OrderState %s',
$configurationKey
);
return false;
}
$result = (bool) Configuration::updateGlobalValue($configurationKey, (int) $orderState->id);
if (false === $result) {
$this->_errors[] = sprintf(
'Failed to save OrderState %s to Configuration',
$configurationKey
);
return false;
}
$orderStateImgPath = $this->getLocalPath() . 'views/img/orderstate/' . $configurationKey . '.gif';
if (false === (bool) Tools::file_exists_cache($orderStateImgPath)) {
$this->_errors[] = sprintf(
'Failed to find icon file of OrderState %s',
$configurationKey
);
return false;
}
if (false === (bool) Tools::copy($orderStateImgPath, _PS_ORDER_STATE_IMG_DIR_ . $orderState->id . '.gif')) {
$this->_errors[] = sprintf(
'Failed to copy icon of OrderState %s',
$configurationKey
);
return false;
}
return true;
}
}
xxxxx1.0, XXX xxxx