public function modificationsAction() { $id = $this->_request->getParam('id'); $select = $this->_subproductsModelMapper->getDbTable()->select()->where('deleted != ?', 1)->order('order ASC'); $jsonData = array('parentId' => $id, 'columns' => array(), 'rows' => array()); $modifications = $this->_modelMapper->findSubproductsRel($id, $select, true); if (!empty($modifications)) { $selectSubproductParams = $this->_subproductsParamsMapper->getDbTable()->select()->order('order ASC'); $subproductProperty = $this->_modelMapper->findSubproductParams($id, $selectSubproductParams, true); $jsonData['columns'] = $subproductProperty; $modificationsTableValues = array(); foreach ($modifications as $modification) { $modificationPropertyValues = $this->_subproductsModelMapper->findSubProductParamValue($modification['id']); $values['item'] = $modification; $values['values'] = array(); foreach ($modificationPropertyValues as $modificationPropertyValue) { $values['values'][] = $modificationPropertyValue->getOptions(); } $modificationsTableValues[] = $values; } $jsonData['rows'] = $modificationsTableValues; //Zend_Debug::dump($jsonData); } $this->_helper->json->sendJson($jsonData); }
/** * @param $subproductProperty * @return Catalog_Model_SubproductParams */ public function newSubproductProperty(&$subproductProperty) { $subproductParams = new Catalog_Model_SubproductParams(); $subproductParamsOrder = $subproductProperty['order'] && $subproductProperty['order'] != '' ? $subproductProperty['order'] : 0; $subproductParams->setProductId($subproductProperty['productId'])->setName($subproductProperty['name'])->setOrder($subproductParamsOrder); $this->_subproductsParamsMapper->save($subproductParams); $id = $this->_subproductsParamsMapper->getDbTable()->getAdapter()->lastInsertId(); $subproductParams->setId($id); $modifications = $this->_subproductsModelMapper->fetchAll($this->_subproductsModelMapper->getDbTable()->select()->where('parent_id = ?', $subproductProperty['productId'])); if (!empty($modifications)) { foreach ($modifications as $modification) { $subproductParamsValue = new Catalog_Model_SubproductParamsValues(); $subproductParamsValue->setParamId($id)->setSubproductId($modification->getId())->setValue('-'); $this->_subproductParamsValuesMapper->save($subproductParamsValue); } } return $subproductParams; }
/** * @param SimpleXMLElement $element * @param Catalog_Model_Products $product */ public function addModificationTableXml(SimpleXMLElement $element, Catalog_Model_Products $product) { $selectModification = $this->_subproductsModelMapper->getDbTable()->select()->order('order ASC'); $cache = Zend_Cache::factory('Core', 'File', array('lifetime' => 3600 * 24 * 2, 'automatic_serialization' => true), array('cache_dir' => '../cache/modifications/')); if (!($modifications = $cache->load('modifications' . $product->getId()))) { $modifications = $this->_productsModelMapper->findSubproductsRel($product->getId(), $selectModification); $cache->save($modifications, 'modifications' . $product->getId(), array('modificationsTable')); } if ($modifications && !empty($modifications)) { $selectSubproductParams = $this->_subproductsParamsMapper->getDbTable()->select()->order('order ASC'); $subproductProperty = $this->_productsModelMapper->findSubproductParams($product->getId(), $selectSubproductParams); foreach ($modifications as $modification) { /* @var $modification Catalog_Model_Subproducts */ $row = $element->addChild('tr'); $row->addAttribute('id', $modification->getId()); $row->addChild('td', $modification->getSku())->addAttribute('title', 'Наименование'); foreach ($subproductProperty as $property) { /* @var $property Catalog_Model_SubproductParams */ $row->addChild('td', $this->_getModificationParamValue($modification->getId(), $property->getId()))->addAttribute('title', $property->getName()); } } } }
/** * @param Catalog_Model_Products $product * @param bool $toWin * @return array */ public function productModificationTableValues(Catalog_Model_Products $product, $toWin = false) { $productMapper = new Catalog_Model_Mapper_Products(); $subproducts = new Catalog_Model_Mapper_Subproducts(); $select = $subproducts->getDbTable()->select()->order('order ASC'); $modifications = $productMapper->findSubproductsRel($product->getId(), $select); $modificationsTableValues = array(); if (!empty($modifications)) { $modificationsTableValues['headTable'] = $this->productModificationTableTitle($product, $toWin); foreach ($modifications as $modification) { $modificationPropertyValues = $subproducts->findSubProductParamValue($modification->getId()); $values = array(); $values[] = $modification->getSku(); foreach ($modificationPropertyValues as $modificationPropertyValue) { $values[] = !$toWin ? $modificationPropertyValue->getValue() : $this->_toWindow($modificationPropertyValue->getValue()); } $modificationsTableValues[] = $values; } } return $modificationsTableValues; }
/** * @param $id * @param Zend_Db_Table_Select|null $select * @return Catalog_Model_Subproducts[]|null * @throws Zend_Db_Table_Exception * @throws Zend_Db_Table_Row_Exception */ public function findSubproductsRel($id, Zend_Db_Table_Select $select = null, $isArray = false) { $result = $this->getDbTable()->find($id); if (0 == count($result)) { return null; } $product = $result->current(); $resultSet = $product->findDependentRowset('Catalog_Model_DbTable_Subproducts', 'SubproductsRel', $select); $entries = array(); $modelMapper = new Catalog_Model_Mapper_Subproducts(); foreach ($resultSet as $row) { $entry = new Catalog_Model_Subproducts(); $entry = $modelMapper->_setDbData($row, $entry); $entries[] = !$isArray ? $entry : $entry->getOptions(); } return $entries; }
/** * @param array $modifications * @return array */ public function modificationsTableValues($modifications) { $subproducts = new Catalog_Model_Mapper_Subproducts(); $modificationsTableValues = array(); if (!empty($modifications)) { foreach ($modifications as $modification) { $modificationPropertyValues = $subproducts->findSubProductParamValue($modification->getId()); $values = array(); $values[] = $this->transformSku($modification->getSku()); foreach ($modificationPropertyValues as $modificationPropertyValue) { $values[] = $modificationPropertyValue->getValue(); } $modificationsTableValues[] = $values; } } return $modificationsTableValues; }