public function onMarketProductBlocksDisplay(&$product, &$html) { if (!$this->init()) { return; } if (!defined('HIKAMARKET_COMPONENT')) { return; } $marketConfig = hikamarket::config(); if (!$marketConfig->get('frontend_edition', 0)) { return; } if (!hikamarket::acl('product_edit_plugin_hikaserial')) { return; } $params = new HikaParameter(''); if (!empty($product->product_id)) { $params->set('product_id', $product->product_id); } else { $params->set('product_id', 0); } $js = ''; $ret = hikaserial::getLayout('productserial', 'market_block', $params, $js); if (!empty($ret)) { $html[] = $ret; } }
public function saveForm(&$product) { if (!isset($product->product_id)) { return; } $product_id = (int) $product->product_id; $app = JFactory::getApplication(); if (!$app->isAdmin()) { if (!hikaserial::initMarket()) { return; } if (!hikamarket::acl('product_edit_plugin_hikaserial')) { return; } } $formData = JRequest::getVar('data', array(), '', 'array'); if (empty($formData) || empty($formData['hikaserial']['form'])) { return; } $serialData = $formData['hikaserial']; if (!$app->isAdmin()) { if (isset($serialData[$product_id])) { $serialData = $serialData[$product_id]; } else { $serialData = array(); } } $packs = array(); if (isset($serialData['pack_qty']) && isset($serialData['pack_id'])) { $packs = array_combine($serialData['pack_id'], $serialData['pack_qty']); } $query = 'DELETE FROM ' . hikaserial::table('product_pack') . ' WHERE product_id = ' . $product_id; $this->db->setQuery($query); $this->db->query(); if (!empty($packs)) { $query = 'INSERT IGNORE INTO ' . hikaserial::table('product_pack') . ' (`product_id`, `pack_id`, `quantity`) VALUES '; $data = array(); foreach ($packs as $id => $qty) { if ((int) $qty > 0) { $data[] = '(' . $product_id . ', ' . (int) $id . ', ' . (int) $qty . ')'; } if (count($data) >= 50) { $this->db->setQuery($query . implode(',', $data)); $this->db->query(); $data = array(); } } if (count($data) > 0) { $this->db->setQuery($query . implode(',', $data)); $this->db->query(); $data = array(); } } $this->refreshQuantity($product); }
public function useselection() { if (!hikaserial::initMarket()) { return false; } if (!hikamarket::loginVendor()) { return false; } $marketConfig = hikamarket::config(); if (!$marketConfig->get('frontend_edition', 0)) { return false; } if (!hikamarket::acl('product_edit_plugin_hikaserial')) { return hikamarket::deny('vendor', JText::sprintf('HIKAM_ACTION_DENY', JText::sprintf('HIKAM_ACT_PLUGIN', HIKASERIAL_NAME))); } JRequest::setVar('layout', 'useselection'); return parent::display(); }
function onAfterProductUpdate(&$product, $create = false) { $app = JFactory::getApplication(); $vendor = null; if (!$app->isAdmin()) { if (!defined('HIKAMARKET_COMPONENT')) { return; } $marketConfig = hikamarket::config(); if (!$marketConfig->get('frontend_edition', 0)) { return; } if (!hikamarket::acl('product_edit_plugin_shippingprices')) { return; } $vendor = hikamarket::loadVendor(false); } $formData = JRequest::getVar('shipping_prices', array(), '', 'array'); if (empty($formData)) { return; } if (!$app->isAdmin()) { if (isset($formData[$product->product_id])) { $formData = $formData[$product->product_id]; } else { if (isset($formData[0]) && $create) { $formData = $formData[0]; } else { $formData = array(); } } } if (empty($product->product_id)) { return; } $extra_filters = ''; if ($vendor !== null && $vendor > 1) { $extra_filters = ' AND a.shipping_vendor_id IN (-1, 0, ' . (int) $vendor . ') '; } $db = JFactory::getDBO(); $query = 'SELECT b.*, a.*, c.currency_symbol FROM ' . hikashop_table('shipping') . ' AS a INNER JOIN ' . hikashop_table('shipping_price') . ' AS b ON a.shipping_id = b.shipping_id INNER JOIN ' . hikashop_table('currency') . ' AS c ON c.currency_id = a.shipping_currency_id ' . 'WHERE a.shipping_params LIKE ' . $db->Quote('%s:20:"shipping_per_product";s:1:"1"%') . ' AND b.shipping_price_ref_id = ' . $product->product_id . ' AND b.shipping_price_ref_type = \'product\' ' . $extra_filters . 'ORDER BY a.shipping_id, b.shipping_price_min_quantity'; $db->setQuery($query); $shippings = $db->loadObjectList('shipping_price_id'); $toRemove = array_keys($shippings); if (!empty($toRemove)) { $toRemove = array_combine($toRemove, $toRemove); } $toInsert = array(); $checks = array(); foreach ($formData as &$data) { if (is_string($data)) { $data = null; } else { if (empty($checks[$data['shipping_id']])) { $checks[$data['shipping_id']] = array(); } if (!isset($checks[$data['shipping_id']][$data['qty']])) { $checks[$data['shipping_id']][$data['qty']] = true; } else { $data = null; } } unset($data); } unset($checks); foreach ($formData as $data) { if ($data == null) { continue; } $shipping = null; if (!empty($data['id']) && isset($shippings[$data['id']])) { if (empty($data['value']) && empty($data['fee'])) { continue; } $shipping = $shippings[$data['id']]; unset($toRemove[$data['id']]); if (empty($data['qty']) || (int) $data['qty'] < 1) { $data['qty'] = 1; } if ((int) $shipping->shipping_price_min_quantity != (int) $data['qty'] || (double) $shipping->shipping_price_value != (double) $data['value'] || (double) $shipping->shipping_fee_value != (double) $data['fee']) { $query = 'UPDATE ' . hikashop_table('shipping_price') . ' SET shipping_price_min_quantity = ' . (int) $data['qty'] . ', shipping_price_value = ' . (double) $data['value'] . ', shipping_fee_value = ' . (double) $data['fee'] . ' WHERE shipping_price_id = ' . $data['id'] . ' AND shipping_price_ref_id = ' . $product->product_id . ' AND shipping_price_ref_type = \'product\''; $db->setQuery($query); $db->query(); } } else { if ((!empty($data['value']) || !empty($data['fee'])) && !empty($data['shipping_id'])) { if (empty($data['qty']) || (int) $data['qty'] < 1) { $data['qty'] = 1; } $toInsert[] = (int) $data['shipping_id'] . ',' . $product->product_id . ',\'product\',' . (int) $data['qty'] . ',' . (double) $data['value'] . ',' . (double) $data['fee']; } } } if (!empty($toRemove)) { $db->setQuery('DELETE FROM ' . hikashop_table('shipping_price') . ' WHERE shipping_price_ref_id = ' . $product->product_id . ' AND shipping_price_ref_type = \'product\' AND shipping_price_id IN (' . implode(',', $toRemove) . ')'); $db->query(); } if (!empty($toInsert)) { $db->setQuery('INSERT IGNORE INTO ' . hikashop_table('shipping_price') . ' (`shipping_id`,`shipping_price_ref_id`,`shipping_price_ref_type`,`shipping_price_min_quantity`,`shipping_price_value`,`shipping_fee_value`) VALUES (' . implode('),(', $toInsert) . ')'); $db->query(); } }