Linux node5458.myfcloud.com 6.10.2-x86_64-linode165 #1 SMP PREEMPT_DYNAMIC Tue Jul 30 15:03:21 EDT 2024 x86_64
Apache
: 45.79.123.194 | : 18.221.81.158
16 Domain
7.4.33
addify5
shells.trxsecurity.org
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
Backdoor Scanner
Backdoor Create
Alfa Webshell
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
addify5 /
.trash /
modules.1 /
ps_bestsellers /
[ HOME SHELL ]
Name
Size
Permission
Action
translations
[ DIR ]
drwxr-xr-x
views
[ DIR ]
drwxr-xr-x
composer.lock
79.07
KB
-rw-r--r--
config.xml
442
B
-rw-r--r--
index.php
1.24
KB
-rw-r--r--
logo.png
6.03
KB
-rw-r--r--
ps_bestsellers.php
9.24
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : ps_bestsellers.php
<?php /* * 2007-2016 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * 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 http://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ use PrestaShop\PrestaShop\Adapter\BestSales\BestSalesProductSearchProvider; use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever; use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter; use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever; use PrestaShop\PrestaShop\Core\Module\WidgetInterface; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchContext; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchQuery; use PrestaShop\PrestaShop\Core\Product\Search\SortOrder; if (!defined('_PS_VERSION_')) { exit; } class Ps_BestSellers extends Module implements WidgetInterface { private $templateFile; public function __construct() { $this->name = 'ps_bestsellers'; $this->tab = 'front_office_features'; $this->author = 'PrestaShop'; $this->version = '1.0.6'; $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '1.7.0.0', 'max' => _PS_VERSION_, ]; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->trans('Top-sellers block', [], 'Modules.Bestsellers.Admin'); $this->description = $this->trans('Show your visitors what are your top-selling products directly on your homepage.', [], 'Modules.Bestsellers.Admin'); $this->templateFile = 'module:ps_bestsellers/views/templates/hook/ps_bestsellers.tpl'; } public function install() { $this->_clearCache('*'); return parent::install() && Configuration::updateValue('PS_BLOCK_BESTSELLERS_TO_DISPLAY', 8) && $this->registerHook('actionOrderStatusPostUpdate') && $this->registerHook('actionProductAdd') && $this->registerHook('actionProductUpdate') && $this->registerHook('actionProductDelete') && $this->registerHook('displayHome') && ProductSale::fillProductSales() ; } public function uninstall() { $this->_clearCache('*'); if (!parent::uninstall() || !Configuration::deleteByName('PS_BLOCK_BESTSELLERS_TO_DISPLAY')) { return false; } return true; } public function hookActionProductAdd($params) { $this->_clearCache('*'); } public function hookActionProductUpdate($params) { $this->_clearCache('*'); } public function hookActionProductDelete($params) { $this->_clearCache('*'); } public function hookActionOrderStatusPostUpdate($params) { $this->_clearCache('*'); } public function _clearCache($template, $cache_id = null, $compile_id = null) { parent::_clearCache($this->templateFile); } public function getContent() { $output = ''; if (Tools::isSubmit('submitBestSellers')) { Configuration::updateValue('PS_BLOCK_BESTSELLERS_TO_DISPLAY', (int) Tools::getValue('PS_BLOCK_BESTSELLERS_TO_DISPLAY')); $this->_clearCache('*'); $output .= $this->displayConfirmation($this->trans('The settings have been updated.', [], 'Admin.Notifications.Success')); } return $output . $this->renderForm(); } public function renderForm() { $fields_form = [ 'form' => [ 'legend' => [ 'title' => $this->trans('Settings', [], 'Admin.Global'), 'icon' => 'icon-cogs', ], 'input' => [ [ 'type' => 'text', 'label' => $this->trans('Products to display', [], 'Modules.Bestsellers.Admin'), 'name' => 'PS_BLOCK_BESTSELLERS_TO_DISPLAY', 'desc' => $this->trans('Determine the number of product to display in this block', [], 'Modules.Bestsellers.Admin'), 'class' => 'fixed-width-xs', ], ], 'submit' => [ 'title' => $this->trans('Save', [], 'Admin.Actions'), ], ], ]; $lang = new Language((int) Configuration::get('PS_LANG_DEFAULT')); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitBestSellers'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = [ 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id, ]; return $helper->generateForm([$fields_form]); } public function getConfigFieldsValues() { return [ 'PS_BLOCK_BESTSELLERS_TO_DISPLAY' => (int) Tools::getValue('PS_BLOCK_BESTSELLERS_TO_DISPLAY', Configuration::get('PS_BLOCK_BESTSELLERS_TO_DISPLAY')), ]; } public function renderWidget($hookName, array $configuration) { if (!$this->isCached($this->templateFile, $this->getCacheId('ps_bestsellers'))) { $variables = $this->getWidgetVariables($hookName, $configuration); if (empty($variables)) { return false; } $this->smarty->assign($variables); } return $this->fetch($this->templateFile, $this->getCacheId('ps_bestsellers')); } public function getWidgetVariables($hookName, array $configuration) { $products = $this->getBestSellers(); if (!empty($products)) { return [ 'products' => $products, 'allBestSellers' => Context::getContext()->link->getPageLink('best-sales'), ]; } return false; } protected function getBestSellers() { if (Configuration::get('PS_CATALOG_MODE')) { return false; } // We will use the default core search provider to get the products $searchProvider = new BestSalesProductSearchProvider( $this->context->getTranslator() ); $context = new ProductSearchContext($this->context); // Build the search query $query = new ProductSearchQuery(); $query ->setResultsPerPage((int) Configuration::get('PS_BLOCK_BESTSELLERS_TO_DISPLAY')) ->setPage(1) ->setSortOrder(new SortOrder('product', 'sales', 'desc')) ; $result = $searchProvider->runQuery( $context, $query ); $assembler = new ProductAssembler($this->context); $presenterFactory = new ProductPresenterFactory($this->context); $presentationSettings = $presenterFactory->getPresentationSettings(); if (version_compare(_PS_VERSION_, '1.7.5', '>=')) { $presenter = new \PrestaShop\PrestaShop\Adapter\Presenter\Product\ProductListingPresenter( new ImageRetriever( $this->context->link ), $this->context->link, new PriceFormatter(), new ProductColorsRetriever(), $this->context->getTranslator() ); } else { $presenter = new \PrestaShop\PrestaShop\Core\Product\ProductListingPresenter( new ImageRetriever( $this->context->link ), $this->context->link, new PriceFormatter(), new ProductColorsRetriever(), $this->context->getTranslator() ); } $products_for_template = []; foreach ($result->getProducts() as $rawProduct) { $products_for_template[] = $presenter->present( $presentationSettings, $assembler->assembleProduct($rawProduct), $this->context->language ); } return $products_for_template; } }
Close