/** * Log import notice * * @param string $message Message * @param integer $position Row position OPTIONAL * @param string $column Column name OPTIONAL * @param string $value Cell value OPTIONAL * @param \XLite\Model\Product $product Product OPTIONAL * * @return void */ protected function logImportWarning($message, $position = null, $column = null, $value = null, \XLite\Model\Product $product = null) { $message = trim($message); $this->importCell['warning_count']++; if (isset($position)) { $message .= PHP_EOL . 'Row number: ' . ($position + 2); } if (isset($column)) { $message .= PHP_EOL . 'Column: ' . $column; } if (isset($value)) { $message .= PHP_EOL . 'Cell value: ' . var_export($value, true); } if (isset($product)) { if ($product->getProductId()) { $message .= PHP_EOL . 'Product id: ' . $product->getProductId(); } elseif ($product->getSku()) { $message .= PHP_EOL . 'Product SKU: ' . $product->getSku(); } } \XLite\Logger::getInstance()->logCustom('import', $message); }
/** * Import 'relatedProducts' value * * @param \XLite\Model\Product $model Product * @param array $value Value (array of related products SKUs) * @param array $column Column info * * @return void */ protected function importRelatedProductsColumn(\XLite\Model\Product $model, array $value, array $column) { $currentRelations = \XLite\Core\Database::getRepo('XLite\\Module\\XC\\Upselling\\Model\\UpsellingProduct')->getUpsellingProducts($model->getProductId()); $relSku = array(); if ($currentRelations) { // Get SKU cache of currently assigned related products // and remove related products which are not in new values list $toDelete = array(); foreach ($currentRelations as $rel) { $relSku[] = $rel->getProduct()->getSku(); if ($rel->getProduct() && !in_array($rel->getProduct()->getSku(), $value)) { $toDelete[] = $rel; } } if ($toDelete) { \XLite\Core\Database::getRepo('XLite\\Module\\XC\\Upselling\\Model\\UpsellingProduct')->deleteInBatch($toDelete); } } if ($value) { // Add current product SKU to avoid creations of the related product with the same SKU $relSku[] = $model->getSku(); foreach ($value as $relProductSku) { if (!in_array($relProductSku, $relSku)) { // Create new relation $relProduct = \XLite\Core\Database::getRepo('XLite\\Model\\Product')->findOneBySku($relProductSku); if ($relProduct) { $up = new \XLite\Module\XC\Upselling\Model\UpsellingProduct(); $up->setProduct($relProduct); $up->setParentProduct($model); \XLite\Core\Database::getEM()->persist($up); } } } } }
/** * {@inheritDoc} */ public function getSku() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSku', array()); return parent::getSku(); }