Example #1
0
 /**
  * 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);
 }
Example #2
0
 /**
  * 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();
 }