Files
zurawik.pl/Admin/controller/ProductSpecController.php
2026-05-15 18:33:51 +02:00

340 lines
11 KiB
PHP

<?php
/**
* Produkty
*
*
*/
class ProductSpecController extends MainController implements ControllerInterface {
const AVATAR_DEST_DIR = '/upload/Product';
const AVATAR_TEMP_DIR = '/upload/temp';
const NO_PHOTO_IMG_BIG = "image/Admin/cropperNoPhotoBig.gif";
const NO_PHOTO_IMG_SMALL = "image/Admin/przekatne.gif";
const MAX_AVATAR_FILE_SIZE = 5; //Rozmiar w mb
const CROPPER_BIG_PHOTO_MAX_WIDTH = 800;
const CROPPER_BIG_PHOTO_MAX_HEIGHT = 800;
const PHOTO_WIDTH = 800;
const PHOTO_HEIGHT = 600;
const IMAGE_MINI_WIDTH = 240;
const IMAGE_MINI_HEIGHT = 180;
const IMAGE_NORMAL_WIDTH = 800;
const IMAGE_NORMAL_HEIGHT = 600;
public function IndexAction($param) {
//Utils::ArrayDisplay($param);
$dalData = MfProductSpecificationDAL::GetDalDataObj();
$dalData->setCondition(array('lang' => $param['lang']));
$dalData->setCondition(array('typ' => isset($param['type']) ? $param['type'] : 1));
$arrayObjProductSpec = MfProductSpecificationDAL::GetResult($dalData);
$this->smarty->assign('arrayObj', $arrayObjProductSpec);
//Utils::ArrayDisplay($arrayObjProductSpec);
}
public function AddAction($param) {
// Pobiernie rodziców kategorii
$dalData = MfProductSpecDAL::GetDalDataObj();
$dalData->setJoin(array('MfProductSpecDescription' => ' LEFT JOIN mf_product_category_description ON mf_product_category.id_mf_product_category=mf_product_category_description.id_mf_product_category '));
$dalData->setCondition(array('lang' => $param['lang'], 'mf_product_category.id_parent' => 0));
$arrayObjProductSpec = MfProductSpecDAL::GetResult($dalData);
//$param['runSharedVariable'] = 'linkedAttribute';
//$this->RunModuleController( 'ProductSpecController', 'LinkedAttribute', $param, true);
//
// $param['runSharedVariable'] = 'unlinkedAttribute';
// $this->RunModuleController( 'ProductSpecController', 'UnlinkedAttribute', $param, true);
//Utils::ArrayDisplay($arrayObjProductSpec);
$this->smarty->assign('arrayObjProductSpec', $arrayObjProductSpec);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$dalData = MfProductAttributeDAL::GetDalDataObj();
$dalData->setCondition(array('lang' => $param['lang']));
// $dalData->addCondition(' ', 'mf_product_attribute.id_mf_product_attribute IN ('.$idsAttribute.') ', ' ');
$dalData->setJoin(array('MfProductAttributeDescription' => ' LEFT JOIN mf_product_attribute_description ON mf_product_attribute.id_mf_product_attribute=mf_product_attribute_description.id_mf_product_attribute '));
//Utils::ArrayDisplay($dalData);
$arrayObjAttribute = MfProductAttributeDAL::GetResult($dalData);
//$objProductAttribute = MfProductAttributeDAL::GetResultByLink('mf_product_category', $idCategory, 'mf_product_attribute');
//Utils::ArrayDisplay($arrayObjAttribue);
$this->smarty->assign('arrayObjAttribute', $arrayObjAttribute);
$this->smarty->assign('arrayObjAttributeLinked', array());
$objCategoryProduct = MfProductSpecDAL::GetEmptyObj();
if (Request::GetPost('doCategoryAdd')) {
//Utils::ArrayDisplay(Request::GetAllPost());
$out = array();
$validator = new Validator(Request::GetAllPost());
$data = Request::GetAllPost();
$validator->IsEmpty('name', 'Pole nazwa musi zostać wypełnione.');
$out = $validator->GetErrorList();
$publication = Request::Get('publication');
$publication ? $publication = 1 : $publication = '0';
//$objProduct = new MfProduct();
//$objCategoryProduct->setDate($data['datepublication']." ".$data['timepublication'].":00:00");
$objCategoryProduct->setPublication($publication);
$objCategoryProduct->setIdParent($data['idParent']);
$objCategoryProduct->setWeight($data['weight']);
$objCategoryProductDesc = new MfProductSpecDescription();
$objCategoryProductDesc->setDatePublication("0000-00-00 00:00:00");
$objCategoryProductDesc->setLang('pl');
$objCategoryProductDesc->setName($data['name']);
$objCategoryProductDesc->setPublication($publication);
//$arrayObjAttributeWithValue = array();
//Utils::ArrayDisplay($arrayObjAttribute);
if(empty($out)) {
$idCategoryProduct = MfProductSpecDAL::Save($objCategoryProduct);
$objCategoryProductDesc->setIdMfProductSpec($idCategoryProduct);
$objCategoryProductDescEn = $objCategoryProductDesc;
//$objCategoryProductDescEn->setLang('en');
$objCategoryProductDescRu = $objCategoryProductDesc;
//$objCategoryProductDescRu->setLang('ru');
MfProductSpecDescriptionDAL::Save($objCategoryProductDesc);
///Utils::ArrayDisplay($objCategoryProductDesc);
$objCategoryProductDescEn->setLang('en');
$objCategoryProductDescEn->setId(-1);
MfProductSpecDescriptionDAL::Save($objCategoryProductDescEn);
//Utils::ArrayDisplay($objCategoryProductDesc);
$objCategoryProductDescRu->setLang('ru');
$objCategoryProductDescRu->setId(-1);
MfProductSpecDescriptionDAL::Save($objCategoryProductDescRu);
//Utils::ArrayDisplay($objCategoryProductDesc);
if (isset($data['attr'])) {
foreach ($data['attr'] as $attrKey => $attrId ) {
$objMfProductLink = new MfProductLink();
$objMfProductLink->setDestinationType('mf_product_attribute');
$objMfProductLink->setSourceType('mf_product_category');
$objMfProductLink->setIdDestination($attrId);
$objMfProductLink->setIdSource($idCategoryProduct);
$objMfProductLink->setLang('pl');
$objMfProductLink->setPublication(1);
MfProductLinkDAL::Save($objMfProductLink);
}
}
$this->AddRedirectInfo('Zapisano', 'ok', Router::GenerateUrl('editCategory', array('ProductSpec' => 'index')));
} else {
if (isset($data['attr'])) {
$idAttrLinked = implode(', ',$data['attr']);
} else {
$idAttrLinked = '-1';
}
$dalData = MfProductAttributeDAL::GetDalDataObj();
$dalData->setCondition(array('lang' => $param['lang']));
$dalData->addCondition(' ', 'mf_product_attribute.id_mf_product_attribute IN ('.$idAttrLinked.') ', ' ');
$dalData->setJoin(array('MfProductAttributeDescription' => ' LEFT JOIN mf_product_attribute_description ON mf_product_attribute.id_mf_product_attribute=mf_product_attribute_description.id_mf_product_attribute '));
//Utils::ArrayDisplay($dalData);
$arrayObjAttributeLinked = MfProductAttributeDAL::GetResult($dalData);
//$objProductAttribute = MfProductAttributeDAL::GetResultByLink('mf_product_category', $idCategory, 'mf_product_attribute');
//Utils::ArrayDisplay($arrayObjAttributeLinked);
$dalData = MfProductAttributeDAL::GetDalDataObj();
$dalData->setCondition(array('lang' => $param['lang']));
$dalData->addCondition(' ', 'mf_product_attribute.id_mf_product_attribute NOT IN ('.$idAttrLinked.') ', ' ');
$dalData->setJoin(array('MfProductAttributeDescription' => ' LEFT JOIN mf_product_attribute_description ON mf_product_attribute.id_mf_product_attribute=mf_product_attribute_description.id_mf_product_attribute '));
//Utils::ArrayDisplay($dalData);
$arrayObjAttribute = MfProductAttributeDAL::GetResult($dalData);
$this->smarty->assign('arrayObjAttribute', $arrayObjAttribute);
$this->smarty->assign('arrayObjAttributeLinked', $arrayObjAttributeLinked);
$objCategoryProduct->SetDescriptionObj($objCategoryProductDesc);
$this->smarty->assign('objCategoryProduct',$objCategoryProduct);
$this->smarty->assign('arrayObjAttribute', $arrayObjAttribute);
$this->smarty->assign('info','Pola obowiązkowe muszą zostać wypełnione.');
$this->smarty->assign('type','error');
foreach ($out as $item) {
$error[$item['field']] = $item['msg'];
}
$this->smarty->assign('error',$error);
}
}
}
public function EditAction($param) {
// Pobiernie rodziców kategorii
$dalData = MfProductSpecificationDAL::GetDalDataObj();
$objSpec = MfProductSpecificationDAL::GetById($param['id'], $param['lang']);
$this->smarty->assign('obj', $objSpec);
if (Request::GetPost('doSpecEdit')) {
//Utils::ArrayDisplay(Request::GetAllPost());
$out = array();
$validator = new Validator(Request::GetAllPost());
$data = Request::GetAllPost();
$validator->IsEmpty('name', 'Pole nazwa musi zostać wypełnione.');
$out = $validator->GetErrorList();
$publication = Request::Get('publication');
$publication ? $publication = 1 : $publication = '0';
//$objProduct = new MfProduct();
//$objCategoryProduct->setDate($data['datepublication']." ".$data['timepublication'].":00:00");
$objSpec->setPublication($publication);
//$objSpec->setWeight($data['weight']);
$objSpec->setLang($param['lang']);
$objSpec->setValue($data['name']);
//$arrayObjAttributeWithValue = array();
//Utils::ArrayDisplay($arrayObjAttribute);
if(empty($out)) {
//Utils::ArrayDisplay($data);
$idSpec = MfProductSpecificationDAL::Save($objSpec);
$this->AddRedirectInfo('Zapisano', 'ok', Router::GenerateUrl('editSpec', array('ProductSpec' => 'Index', 'type' => $objSpec->GetTyp())));
} else {
$this->smarty->assign('arrayObjAttribute', $arrayObjAttribute);
$this->smarty->assign('info','Pola obowiązkowe muszą zostać wypełnione.');
$this->smarty->assign('type','error');
foreach ($out as $item) {
$error[$item['field']] = $item['msg'];
}
$this->smarty->assign('error',$error);
}
}
}
public function AjaxAddLinkAttrAction($param) {
//$array
}
public function DeleteAction($param) {
$isLinked = MfProductLinkDAL::IsLinked($param['id'], 'mf_product_specyfication', null, 'mf_product');
$delete = true;
$error = '';
if ($isLinked > 0 ) {
$delete = false;
}
$objSpec = MfProductSpecificationDAL::GetById($param['id']);
if ($delete) {
$dalData = MfProductSpecificationDAL::GetDalDataObj();
$dalData->setObj($objSpec);
MfProductSpecificationDAL::Delete($dalData);
$this->AddRedirectInfo('Element został usunięty', 'ok', Router::GenerateUrl('editSpec', array('ProductSpec' => 'Index', 'type' => $objSpec->GetTyp())));
} else {
if ($isLinked) {
$error .= 'Parametr jest powiązana z produktem.';
}
$this->AddRedirectInfo($error, 'error', Router::GenerateUrl('editSpec', array('ProductSpec' => 'Index', 'type' => $objSpec->GetTyp())));
}
}
/**
* Wspolna metoda
*
*/
public function preDispatch($param) {
$this->RunShared('Auth', $param);
$this->Run($param);
$this->AddScript('structure.js');
$admin = AuthDAL::GetAdmin();
$this->user = $admin;
$this->smarty->assign('titleAdmin', 'Administracja');
$struct = array(
//'User' => array('User' => 'Index'),
'Słowniki' => array('Dictionary' => 'Index'),
'Zmienne serwisu' => array('Setup' => 'Index'),
'Kategorie produktów' => array('ProductCategory' => 'Index'),
'Serie produktów' => array('ProductSeries' => 'Index'),
'Materiał produktów' => array('ProductSpec' => 'Index', 'type' => 2),
'Kolor produktów' => array('ProductSpec' => 'Index', 'type' => 1),
'Żarówki produktów' => array('ProductSpec' => 'Index', 'type' => 3),
//'Parametry produktów' => array('ProductAttribute' => 'Index')
);
$this->smarty->assign('structure',$this->renderStruct($struct));
}
private function renderStruct($struct){
$return = '';
foreach($struct AS $k => $row){
$return .= '<li><a href="' . Router::GenerateUrl('dictpig',$row).'">'.$k.'</a></li>';
}
$html = '<ul>';
$html .= $return;
$html .= '</ul>';
return $html;
}
public function PostDispatch($param) {
}
}
?>