/** * Duplicates gallery db values * * @param IcebergCommerce_VideoGallery_Model_Backend_Video $object * @param array $newFiles * @param int $originalProductId * @param int $newProductId * @return IcebergCommerce_VideoGallery_Model_Resource_Mysql4_Backend_Video */ public function duplicate($object, $newFiles, $originalProductId, $newProductId) { $select = $this->_getReadAdapter()->select()->from($this->getMainTable(), array('value_id', 'value', 'provider', 'thumbnail'))->where('attribute_id = ?', $object->getAttribute()->getId())->where('entity_id = ?', $originalProductId); $valueIdMap = array(); // Duplicate main entries of gallery foreach ($this->_getReadAdapter()->fetchAll($select) as $row) { $data = array('attribute_id' => $object->getAttribute()->getId(), 'entity_id' => $newProductId, 'provider' => isset($newFiles[$row['provider']]) ? $newFiles[$row['provider']] : $row['provider'], 'thumbnail' => isset($newFiles[$row['thumbnail']]) ? $newFiles[$row['thumbnail']] : $row['thumbnail'], 'value' => isset($newFiles[$row['value']]) ? $newFiles[$row['value']] : $row['value']); $valueIdMap[$row['value_id']] = $this->insertGallery($data); } if (count($valueIdMap) == 0) { return $this; } // Duplicate per store gallery values $select = $this->_getReadAdapter()->select()->from($this->getTable(self::GALLERY_VALUE_TABLE))->where('value_id IN(?)', array_keys($valueIdMap)); foreach ($this->_getReadAdapter()->fetchAll($select) as $row) { $row['value_id'] = $valueIdMap[$row['value_id']]; $this->insertGalleryValueInStore($row); } return $this; }
/** * Duplicate object data. * * @param IcebergCommerce_VideoGallery_Model_Backend_Video $object * @return IcebergCommerce_VideoGallery_Model_Backend_Video */ public function duplicate($object) { $attrCode = $this->getAttribute()->getAttributeCode(); $mediaGalleryData = $object->getData($attrCode); if (!isset($mediaGalleryData['videos']) || !is_array($mediaGalleryData['videos'])) { return $this; } $this->_getResource()->duplicate($this, isset($mediaGalleryData['duplicate']) ? $mediaGalleryData['duplicate'] : array(), $object->getOriginalId(), $object->getId()); return $this; }