1 <?php
2
3 4 5 6 7 8 9 10 11
12
13 14 15 16 17 18 19
20 class ProductSettingsRepositoryWriter implements ProductSettingsRepositoryWriterInterface
21 {
22
23 24 25 26 27
28 protected $db;
29
30 31 32 33 34
35 protected $table = 'products';
36
37 38 39 40 41
42 protected $customerStatusProvider;
43
44
45 46 47 48 49 50
51 public function __construct(CI_DB_query_builder $db,
52 CustomerStatusProviderInterface $customerStatusProvider)
53 {
54 $this->db = $db;
55 $this->customerStatusProvider = $customerStatusProvider;
56 }
57
58
59 60 61 62 63 64 65 66
67 public function update(IdType $productId, ProductSettingsInterface $settings)
68 {
69 $setArray = array(
70 'product_template' => $settings->getDetailsTemplate(),
71 'options_template' => $settings->getOptionsDetailsTemplate(),
72 'gm_options_template' => $settings->getOptionsListingTemplate(),
73 'products_startpage' => $settings->showOnStartpage(),
74 'products_startpage_sort' => $settings->getStartpageSortOrder(),
75 'gm_show_date_added' => $settings->showAddedDateTime(),
76 'gm_show_qty_info' => $settings->showQuantityInfo(),
77 'gm_show_weight' => $settings->showWeight(),
78 'gm_show_price_offer' => $settings->showPriceOffer(),
79 'gm_price_status' => $settings->getPriceStatus(),
80 'gm_min_order' => $settings->getMinOrder(),
81 'gm_graduated_qty' => $settings->getGraduatedQuantity(),
82 'gm_sitemap_entry' => $settings->isSitemapEntry(),
83 'gm_priority' => $settings->getSitemapPriority(),
84 'gm_changefreq' => $settings->getSitemapChangeFreq(),
85 'properties_show_price' => $settings->showPropertiesPrice(),
86 'properties_dropdown_mode' => $settings->getPropertiesDropdownMode(),
87 'use_properties_combis_weight' => $settings->usePropertiesCombisWeight(),
88 'use_properties_combis_quantity' => $settings->getPropertiesCombisQuantityCheckMode(),
89 'use_properties_combis_shipping_time' => $settings->usePropertiesCombisShippingTime()
90 );
91
92 $customerStatusIds = $this->customerStatusProvider->getCustomerStatusIds();
93
94 foreach($customerStatusIds as $customerStatusId)
95 {
96 $setArray['group_permission_'
97 . $customerStatusId] = (int)$settings->isPermittedCustomerStatus(new IdType($customerStatusId));
98 }
99
100 $whereArray = array(
101 'products_id' => $productId->asInt()
102 );
103
104 $this->db->update($this->table, $setArray, $whereArray);
105
106 return $this;
107 }
108 }