protected function saveVariationsData(\Ess\M2ePro\Model\Listing\Product $listingProduct, $variationsData) { $additionalData = $listingProduct->getData('additional_data'); $additionalData = is_null($additionalData) ? array() : (array) json_decode($additionalData, true); if (isset($variationsData['set'])) { $additionalData['variations_sets'] = $variationsData['set']; } if (isset($variationsData['additional']['attributes'])) { $additionalData['configurable_attributes'] = $variationsData['additional']['attributes']; } $listingProduct->setData('additional_data', json_encode($additionalData))->save(); }
protected function isChangeInitiatorOnlyInspector(\Ess\M2ePro\Model\Listing\Product $listingProduct) { $changeInitiators = $listingProduct->getData('change_initiators'); if (empty($changeInitiators)) { return false; } $changeInitiators = (array) explode(',', $changeInitiators); $changeInitiators = array_unique($changeInitiators); if (count($changeInitiators) != 1) { return false; } if ((int) reset($changeInitiators) != \Ess\M2ePro\Model\ProductChange::INITIATOR_INSPECTOR) { return false; } return true; }
private function logListingProductMessage(\Ess\M2ePro\Model\Listing\Product $listingProduct, $action, $oldValue, $newValue, $messagePostfix = '') { // M2ePro\TRANSLATIONS // From [%from%] to [%to%]. $log = $this->activeRecordFactory->getObject(ucfirst($listingProduct->getComponentMode()) . '\\Listing\\Log'); $oldValue = strlen($oldValue) > 150 ? substr($oldValue, 0, 150) . ' ...' : $oldValue; $newValue = strlen($newValue) > 150 ? substr($newValue, 0, 150) . ' ...' : $newValue; $messagePostfix = trim(trim($messagePostfix), '.'); if (!empty($messagePostfix)) { $messagePostfix = ' ' . $messagePostfix; } if ($listingProduct->isComponentModeEbay() && is_array($listingProduct->getData('found_options_ids'))) { $collection = $this->activeRecordFactory->getObject('Listing\\Product\\Variation\\Option')->getCollection()->addFieldToFilter('main_table.id', array('in' => $listingProduct->getData('found_options_ids'))); $additionalData = array(); foreach ($collection as $listingProductVariationOption) { /** @var \Ess\M2ePro\Model\Listing\Product\Variation\Option $listingProductVariationOption */ $additionalData['variation_options'][$listingProductVariationOption->getAttribute()] = $listingProductVariationOption->getOption(); } if (!empty($additionalData['variation_options']) && $collection->getFirstItem()->getProductType() == \Ess\M2ePro\Model\Magento\Product::TYPE_BUNDLE) { foreach ($additionalData['variation_options'] as $attribute => $option) { $log->addProductMessage($listingProduct->getListingId(), $listingProduct->getProductId(), $listingProduct->getId(), \Ess\M2ePro\Helper\Data::INITIATOR_EXTENSION, NULL, $action, $log->encodeDescription('From [%from%] to [%to%]' . $messagePostfix . '.', array('!from' => $oldValue, '!to' => $newValue)), \Ess\M2ePro\Model\Log\AbstractLog::TYPE_NOTICE, \Ess\M2ePro\Model\Log\AbstractLog::PRIORITY_LOW, array('variation_options' => array($attribute => $option))); } return; } $log->addProductMessage($listingProduct->getListingId(), $listingProduct->getProductId(), $listingProduct->getId(), \Ess\M2ePro\Helper\Data::INITIATOR_EXTENSION, NULL, $action, $log->encodeDescription('From [%from%] to [%to%]' . $messagePostfix . '.', array('!from' => $oldValue, '!to' => $newValue)), \Ess\M2ePro\Model\Log\AbstractLog::TYPE_NOTICE, \Ess\M2ePro\Model\Log\AbstractLog::PRIORITY_LOW, $additionalData); return; } $log->addProductMessage($listingProduct->getListingId(), $listingProduct->getProductId(), $listingProduct->getId(), \Ess\M2ePro\Helper\Data::INITIATOR_EXTENSION, NULL, $action, $log->encodeDescription('From [%from%] to [%to%]' . $messagePostfix . '.', array('!from' => $oldValue, '!to' => $newValue)), \Ess\M2ePro\Model\Log\AbstractLog::TYPE_NOTICE, \Ess\M2ePro\Model\Log\AbstractLog::PRIORITY_LOW); }
private function modifyAndLogListingProduct(\Ess\M2ePro\Model\Listing\Product $listingProduct, $status, $duplicateItemId = null) { /** @var \Ess\M2ePro\Model\Listing\Log $logModel */ $logModel = $this->activeRecordFactory->getObject('Listing\\Log'); $logModel->setComponentMode(\Ess\M2ePro\Helper\Component\Ebay::NICK); $logsActionId = $logModel->getNextActionId(); $statusLogMessage = $this->getStatusLogMessage($listingProduct->getStatus(), $status); $logModel->addProductMessage($listingProduct->getData('listing_id'), $listingProduct->getData('product_id'), $listingProduct->getId(), \Ess\M2ePro\Helper\Data::INITIATOR_EXTENSION, $logsActionId, \Ess\M2ePro\Model\Listing\Log::ACTION_CHANNEL_CHANGE, $statusLogMessage, \Ess\M2ePro\Model\Log\AbstractLog::TYPE_SUCCESS, \Ess\M2ePro\Model\Log\AbstractLog::PRIORITY_LOW); $additionalData = $listingProduct->getAdditionalData(); unset($additionalData['last_failed_action_data']); $listingProduct->addData(array('status' => $status, 'additional_data' => json_encode($additionalData)))->save(); $listingProduct->getChildObject()->updateVariationsStatus(); if (is_null($duplicateItemId)) { return; } // M2ePro\TRANSLATIONS // Duplicated Item %item_id% was found and Stopped on eBay. $textToTranslate = 'Duplicated Item %item_id% was found and stopped on eBay.'; $duplicateDeletedMessage = $this->getHelper('Module\\Translation')->__($textToTranslate, $duplicateItemId); $logModel->addProductMessage($listingProduct->getData('listing_id'), $listingProduct->getData('product_id'), $listingProduct->getId(), \Ess\M2ePro\Helper\Data::INITIATOR_EXTENSION, $logsActionId, \Ess\M2ePro\Model\Listing\Log::ACTION_CHANNEL_CHANGE, $duplicateDeletedMessage, \Ess\M2ePro\Model\Log\AbstractLog::TYPE_WARNING, \Ess\M2ePro\Model\Log\AbstractLog::PRIORITY_LOW); }