controllers/Products.php
<?php namespace Lovata\Shopaholic\Controllers;
use Arr;
use Lang;
use Flash;
use BackendMenu;
use Backend\Classes\Controller;
use Backend\Classes\BackendController;
use Lovata\Shopaholic\Classes\Item\ProductItem;
use Lovata\Shopaholic\Models\Product;
use Lovata\Shopaholic\Classes\Helper\CurrencyHelper;
use Lovata\Shopaholic\Classes\Import\ImportOfferModelFromXML;
use Lovata\Shopaholic\Classes\Import\ImportOfferPriceFromXML;
use Lovata\Shopaholic\Classes\Import\ImportProductModelFromXML;
/**
* Class Products
* @package Lovata\Shopaholic\Controllers
* @author Andrey Kharanenka, a.khoronenko@lovata.com, LOVATA Group
*/
class Products extends Controller
{
public $implement = [
'Backend.Behaviors.ListController',
'Backend.Behaviors.FormController',
'Backend.Behaviors.RelationController',
'Backend.Behaviors.ImportExportController',
];
public $listConfig = 'config_list.yaml';
public $formConfig = 'config_form.yaml';
public $relationConfig = 'config_relation.yaml';
public $importExportConfig = 'config_import_export.yaml';
/**
* Products constructor.
*/
public function __construct()
{
CurrencyHelper::instance()->disableActiveCurrency();
if (BackendController::$action == 'import') {
Product::extend(function ($obModel) {
$obModel->rules['external_id'] = 'required';
});
}
parent::__construct();
BackendMenu::setContext('Lovata.Shopaholic', 'shopaholic-menu-main', 'shopaholic-menu-products');
}
/**
* Start import from XML
*/
public function onImportFromXML()
{
$obImport = new ImportProductModelFromXML();
$obImport->import();
$arReportData = [
'created' => $obImport->getCreatedCount(),
'updated' => $obImport->getUpdatedCount(),
'skipped' => $obImport->getSkippedCount(),
'processed' => $obImport->getProcessedCount(),
];
Flash::info(Lang::get('lovata.toolbox::lang.message.import_from_xml_report', $arReportData));
return $this->listRefresh();
}
/**
* Start import from XML
*/
public function onImportOffersFromXML()
{
$obImport = new ImportOfferModelFromXML();
$obImport->import();
$arReportData = [
'created' => $obImport->getCreatedCount(),
'updated' => $obImport->getUpdatedCount(),
'skipped' => $obImport->getSkippedCount(),
'processed' => $obImport->getProcessedCount(),
];
Flash::info(Lang::get('lovata.toolbox::lang.message.import_from_xml_report', $arReportData));
return $this->listRefresh();
}
/**
* Start import from XML
*/
public function onImportPricesFromXML()
{
$obImport = new ImportOfferPriceFromXML();
$obImport->import();
$arReportData = [
'created' => $obImport->getCreatedCount(),
'updated' => $obImport->getUpdatedCount(),
'skipped' => $obImport->getSkippedCount(),
'processed' => $obImport->getProcessedCount(),
];
Flash::info(Lang::get('lovata.toolbox::lang.message.import_from_xml_report', $arReportData));
return $this->listRefresh();
}
/**
* @param string $sHandler
* @return boolean Returns true if the handler was found. Returns false otherwise.
*/
protected function runAjaxHandler($sHandler)
{
$bResult = parent::runAjaxHandler($sHandler);
if ($sHandler !== 'relationOfferViewList::onReorder' || !$bResult) {
return $bResult;
}
$iProductID = Arr::get($this->params, '0');
if (!empty($iProductID)) {
ProductItem::clearCache($iProductID);
}
return $bResult;
}
}