Code Duplication    Length = 45-55 lines in 2 locations

src/Observers/BundleOptionUpdateObserver.php 1 location

@@ 36-90 (lines=55) @@
33
 * @link      https://github.com/techdivision/import-product-bundle
34
 * @link      http://www.techdivision.com
35
 */
36
class BundleOptionUpdateObserver extends BundleOptionObserver
37
{
38
39
    /**
40
     * Initialize the bundle option with the passed attributes and returns an instance.
41
     *
42
     * @param array $attr The bundle option attributes
43
     *
44
     * @return array The initialized bundle option
45
     */
46
    protected function initializeBundleOption(array $attr)
47
    {
48
49
        // load the parent ID, the name and the store ID
50
        $parentId = $attr[MemberNames::PARENT_ID];
51
        $name = $this->getValue(ColumnKeys::BUNDLE_VALUE_NAME);
52
        $storeId = $this->getRowStoreId(StoreViewCodes::ADMIN);
53
54
        // try to load the bundle option with the passed name/store/parent ID
55
        if ($entity = $this->loadBundleOption($name, $storeId, $parentId)) {
56
            return $this->mergeEntity($entity, $attr);
57
        }
58
59
        // simply return the attributes
60
        return $attr;
61
    }
62
63
    /**
64
     * Load's the bundle option with the passed name, store + parent ID.
65
     *
66
     * @param string  $title    The title of the bundle option to be returned
67
     * @param integer $storeId  The store ID of the bundle option to be returned
68
     * @param integer $parentId The entity of the product the bundle option is related with
69
     *
70
     * @return array The bundle option
71
     */
72
    protected function loadBundleOption($title, $storeId, $parentId)
73
    {
74
        return $this->getSubject()->loadBundleOption($title, $storeId, $parentId);
75
    }
76
77
    /**
78
     * Return's the store ID of the actual row, or of the default store
79
     * if no store view code is set in the CSV file.
80
     *
81
     * @param string|null $default The default store view code to use, if no store view code is set in the CSV file
82
     *
83
     * @return integer The ID of the actual store
84
     * @throws \Exception Is thrown, if the store with the actual code is not available
85
     */
86
    protected function getRowStoreId($default = null)
87
    {
88
        return $this->getSubject()->getRowStoreId($default);
89
    }
90
}
91

src/Observers/BundleSelectionPriceUpdateObserver.php 1 location

@@ 36-80 (lines=45) @@
33
 * @link      https://github.com/techdivision/import-product-bundle
34
 * @link      http://www.techdivision.com
35
 */
36
class BundleSelectionPriceUpdateObserver extends BundleSelectionPriceObserver
37
{
38
39
    /**
40
     * Initialize the bundle selection price with the passed attributes and returns an instance.
41
     *
42
     * @param array $attr The bundle selection price attributes
43
     *
44
     * @return array The initialized bundle selection price
45
     */
46
    protected function initializeBundleSelectionPrice(array $attr)
47
    {
48
49
        // load the store view code
50
        $storeViewCode = $this->getStoreViewCode(StoreViewCodes::ADMIN);
51
52
        // load the store/website ID
53
        $store = $this->getStoreByStoreCode($storeViewCode);
54
        $websiteId = $store[MemberNames::WEBSITE_ID];
55
56
        // load the selection ID for the child SKU
57
        $selectionId = $this->getChildSkuSelectionMapping($this->getValue(ColumnKeys::BUNDLE_VALUE_SKU));
58
59
        // try to load the bundle selection price with the passed selection/website ID
60
        if ($entity = $this->loadBundleSelectionPrice($selectionId, $websiteId)) {
61
            return $this->mergeEntity($entity, $attr);
62
        }
63
64
        // simply return the attributes
65
        return $attr;
66
    }
67
68
    /**
69
     * Load's the bundle selection price with the passed selection/website ID.
70
     *
71
     * @param integer $selectionId The selection ID of the bundle selection price to be returned
72
     * @param integer $websiteId   The website ID of the bundle selection price to be returned
73
     *
74
     * @return array The bundle selection price
75
     */
76
    protected function loadBundleSelectionPrice($selectionId, $websiteId)
77
    {
78
        return $this->getSubject()->loadBundleSelectionPrice($selectionId, $websiteId);
79
    }
80
}
81