Example #1
0
File: tax.php Project: rodhoff/MNW
 function save(&$element)
 {
     $old = $this->get($element->tax_namekey);
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if (!empty($old)) {
         $element->old =& $old;
         $dispatcher->trigger('onBeforeTaxUpdate', array(&$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeTaxCreate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     if (!empty($old)) {
         $result = parent::save($element);
     } else {
         $this->database->setQuery($this->_getInsert($this->getTable(), $element));
         $result = $this->database->query();
     }
     if (!empty($old)) {
         $dispatcher->trigger('onAfterTaxUpdate', array(&$element));
     } else {
         $dispatcher->trigger('onAfterTaxCreate', array(&$element));
     }
     return $result;
 }
Example #2
0
 function save(&$element)
 {
     if (empty($element->waitlist_id) && empty($element->date)) {
         $element->date = time();
     }
     $status = parent::save($element);
     return $status;
 }
Example #3
0
 function save(&$element)
 {
     $class = hikashop_get('helper.translation');
     $class->getTranslations($element);
     $status = parent::save($element);
     if ($status) {
         $class->handleTranslations('characteristic', $status, $element);
     }
     return $status;
 }
Example #4
0
 function save(&$limit)
 {
     if (empty($limit->limit_type) || $limit->limit_type != 'weight') {
         $limit->limit_unit = '';
     }
     if (!empty($limit->limit_status) && is_array($limit->limit_status)) {
         $limit->limit_status = implode(',', $limit->limit_status);
     }
     $status = parent::save($limit);
     return $status;
 }
Example #5
0
 function save(&$element)
 {
     $status = parent::save($element);
     if (!$status) {
         return false;
     }
     if (empty($element->banner_id)) {
         $element->banner_id = $status;
         $orderClass = hikashop_get('helper.order');
         $orderClass->pkey = 'banner_id';
         $orderClass->table = 'banner';
         $orderClass->orderingMap = 'banner_ordering';
         $orderClass->reOrder();
     }
     return $status;
 }
Example #6
0
 function save(&$element)
 {
     if (!empty($element->widget_params) && !is_string($element->widget_params)) {
         if ($element->widget_params->display == 'listing' && !isset($element->widget_params->region)) {
             $element->widget_params->region = 'world';
         }
         if (!isset($element->widget_params->status)) {
             $element->widget_params->status = '';
         }
         if (is_array($element->widget_params->status)) {
             $element->widget_params->status = implode(',', $element->widget_params->status);
         }
         $element->widget_params = serialize($element->widget_params);
     }
     return parent::save($element);
 }
Example #7
0
 function save(&$element, $reorder = true)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if (empty($element->payment_id)) {
         $dispatcher->trigger('onBeforeHikaPluginCreate', array('plugin', &$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeHikaPluginUpdate', array('plugin', &$element, &$do));
     }
     if (!$do) {
         return false;
     }
     if (isset($element->plugin_params) && !is_string($element->plugin_params)) {
         $element->plugin_params = serialize($element->plugin_params);
     }
     if (empty($element->plugin_id)) {
         unset($element->plugin_id);
     }
     $status = parent::save($element);
     if ($status && empty($element->plugin_id)) {
         $element->plugin_id = $status;
         if ($reorder) {
             $orderClass = hikashop_get('helper.order');
             $orderClass->pkey = 'plugin_id';
             $orderClass->table = 'plugin';
             $orderClass->groupVal = $element->plugin_type;
             $orderClass->orderingMap = 'plugin_ordering';
             $orderClass->reOrder();
         }
     }
     if ($status && !empty($element->plugin_published) && !empty($element->plugin_id)) {
         $db = JFactory::getDBO();
         $query = 'SELECT plugin_type FROM ' . hikashop_table('plugin') . ' WHERE plugin_id = ' . (int) $element->plugin_id;
         $db->setQuery($query);
         $name = $db->loadResult();
         if (!HIKASHOP_J16) {
             $query = 'UPDATE ' . hikashop_table('plugins', false) . ' SET published = 1 WHERE published = 0 AND element = ' . $db->Quote($name) . ' AND folder = ' . $db->Quote('hikashop');
         } else {
             $query = 'UPDATE ' . hikashop_table('extensions', false) . ' SET enabled = 1 WHERE enabled = 0 AND type = ' . $db->Quote('plugin') . ' AND element = ' . $db->Quote($name) . ' AND folder = ' . $db->Quote('hikashop');
         }
         $db->setQuery($query);
         $db->query();
     }
     return $status;
 }
Example #8
0
 function save(&$element)
 {
     if (empty($element->click_id)) {
         if (empty($element->click_created)) {
             $element->click_created = time();
         }
         if (empty($element->click_ip)) {
             $element->click_ip = hikashop_getIP();
         }
         if (empty($element->click_referer)) {
             if (!empty($_SERVER['HTTP_REFERER']) && preg_match('#^https?://.*#i', $_SERVER['HTTP_REFERER'])) {
                 $element->click_referer = str_replace(array('"', '<', '>', "'"), '', @$_SERVER['HTTP_REFERER']);
             }
         }
     }
     return parent::save($element);
 }
Example #9
0
 function save(&$element)
 {
     $isNew = empty($element->warehouse_id);
     $element->warehouse_modified = time();
     if ($isNew) {
         $element->warehouse_created = $element->warehouse_modified;
         $orderClass = hikashop_get('helper.order');
         $orderClass->pkey = 'warehouse_id';
         $orderClass->table = 'warehouse';
         $orderClass->orderingMap = 'warehouse_ordering';
         $orderClass->reOrder();
     }
     $status = parent::save($element);
     if (!$status) {
         return false;
     }
     return $status;
 }
Example #10
0
 function save(&$element)
 {
     if (empty($element->geolocation_id) || !empty($element->geolocation_ip)) {
         if (empty($element->geolocation_ip)) {
             return false;
         }
         $location = $this->getIPLocation($element->geolocation_ip);
         if (empty($location)) {
             return false;
         }
         $element->geolocation_latitude = @$location->latitude;
         $element->geolocation_longitude = @$location->longitude;
         $element->geolocation_postal_code = @$location->zipPostalCode;
         $element->geolocation_country = @$location->countryName;
         $element->geolocation_country_code = @$location->countryCode;
         $element->geolocation_state = @$location->regionName;
         $element->geolocation_state_code = @$location->RegionCode;
         $element->geolocation_city = @$location->city;
         $element->geolocation_created = time();
     }
     return parent::save($element);
 }
Example #11
0
 function save(&$element)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $new = true;
     if (!empty($element->taxation_id)) {
         $dispatcher->trigger('onBeforeTaxUpdate', array(&$element, &$do));
         $new = false;
     } else {
         $dispatcher->trigger('onBeforeTaxCreate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     $result = parent::save($element);
     if (!$new) {
         $dispatcher->trigger('onAfterTaxUpdate', array(&$element));
     } else {
         $dispatcher->trigger('onAfterTaxCreate', array(&$element));
     }
     return $result;
 }
Example #12
0
 function save(&$filter)
 {
     if (isset($filter->filter_options) && is_array($filter->filter_options)) {
         $filter->filter_options = serialize($filter->filter_options);
     }
     $return = parent::save($filter);
     return $return;
 }
Example #13
0
 function save(&$element)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $id = reset($this->pkeys);
     $do = true;
     if (empty($element->{$id})) {
         $dispatcher->trigger('onBeforeHikaPluginCreate', array('joomla.plugin', &$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeHikaPluginUpdate', array('joomla.plugin', &$element, &$do));
     }
     if (!$do) {
         return false;
     }
     if (isset($element->plugin_params) && !is_string($element->plugin_params)) {
         $element->plugin_params = serialize($element->plugin_params);
     }
     if (!empty($element->params)) {
         if (!HIKASHOP_J16) {
             $params = '';
             foreach ($element->params as $key => $val) {
                 $params .= $key . '=' . $val . "\n";
             }
             $element->params = rtrim($params);
         } else {
             $handler = JRegistryFormat::getInstance('JSON');
             $element->params = $handler->objectToString($element->params);
         }
     }
     return parent::save($element);
 }
Example #14
0
 function get($id, $default = '')
 {
     static $cachedElements = array();
     if ($id == 'reset_cache') {
         $cachedElements = array();
     }
     if (!isset($cachedElements[$id])) {
         $result = parent::get($id, $default);
         if (!empty($result->payment_params)) {
             $result->payment_params = unserialize($result->payment_params);
         }
         $cachedElements[$id] = $result;
     }
     return $cachedElements[$id];
 }
Example #15
0
 function delete(&$elements)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $dispatcher->trigger('onBeforeDiscountDelete', array(&$elements, &$do));
     if (!$do) {
         return false;
     }
     $status = parent::delete($elements);
     if ($status) {
         $dispatcher->trigger('onAfterDiscountDelete', array(&$elements));
     }
     return $status;
 }
Example #16
0
 function delete(&$elements, $order = false)
 {
     $elements = (int) $elements;
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $dispatcher->trigger('onBeforeAddressDelete', array(&$elements, &$do));
     if (!$do) {
         return false;
     }
     $orderClass = hikashop_get('class.order');
     $status = true;
     if ($orderClass->addressUsed($elements)) {
         if (!$order) {
             $address = new stdClass();
             $address->address_id = $elements;
             $address->address_published = 0;
             $status = parent::save($address);
             $app = JFactory::getApplication();
             if ($app->isAdmin()) {
                 $app->enqueueMessage(JText::_('ADDRESS_UNPUBLISHED_CAUSE_USED_IN_ORDER'));
             }
         }
     } else {
         $data = $this->get($elements);
         if (!$order || isset($data->address_published) && !$data->address_published) {
             $status = parent::delete($elements);
         }
     }
     if ($status) {
         if (empty($data)) {
             $data = $this->get($elements);
         }
         if (!empty($data->address_default)) {
             $query = 'SELECT MIN(address_id) as address_id, MAX(address_default) as address_default FROM ' . hikashop_table('address') . ' WHERE address_user_id = ' . (int) $data->address_user_id . ' AND address_published = 1';
             $this->database->setQuery($query);
             $ret = $this->database->loadObject();
             if (!empty($ret) && (int) $ret->address_default == 0) {
                 $address = new stdClass();
                 $address->address_id = (int) $ret->address_id;
                 $address->address_default = 1;
                 parent::save($address);
             }
         }
         $dispatcher->trigger('onAfterAddressDelete', array(&$elements));
     }
     return $status;
 }
Example #17
0
 function delete(&$elements, $ignoreFile = false)
 {
     if (!is_array($elements)) {
         $elements = array($elements);
     }
     JArrayHelper::toInteger($elements);
     if (!empty($elements)) {
         $query = 'SELECT product_id FROM ' . hikashop_table('product') . ' WHERE product_type=\'variant\' AND product_parent_id IN (' . implode(',', $elements) . ')';
         $this->database->setQuery($query);
         if (!HIKASHOP_J25) {
             $elements = array_merge($elements, $this->database->loadResultArray());
         } else {
             $elements = array_merge($elements, $this->database->loadColumn());
         }
     }
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $dispatcher->trigger('onBeforeProductDelete', array(&$elements, &$do));
     if (!$do) {
         return false;
     }
     $status = parent::delete($elements);
     if ($status) {
         $dispatcher->trigger('onAfterProductDelete', array(&$elements));
         $tagsHelper = hikashop_get('helper.tags');
         $tagsHelper->deleteUCM('product', $elements);
         $class = hikashop_get('class.file');
         $class->deleteFiles('product', $elements, $ignoreFile);
         $class->deleteFiles('file', $elements, $ignoreFile);
         $class = hikashop_get('helper.translation');
         $class->deleteTranslations('product', $elements);
         return count($elements);
     }
     return $status;
 }
Example #18
0
 function delete(&$elements)
 {
     if (!is_array($elements)) {
         $elements = array($elements);
     }
     JPluginHelper::importPlugin('hikashop');
     JPluginHelper::importPlugin('hikashoppayment');
     JPluginHelper::importPlugin('hikashopshipping');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $dispatcher->trigger('onBeforeOrderDelete', array(&$elements, &$do));
     if (!$do) {
         return false;
     }
     $string = array();
     foreach ($elements as $key => $val) {
         $string[$val] = $this->database->Quote($val);
     }
     $query = 'SELECT order_billing_address_id,order_shipping_address_id FROM ' . hikashop_table('order') . ' WHERE order_id IN (' . implode(',', $string) . ')';
     $this->database->setQuery($query);
     $orders = $this->database->loadObjectList();
     $result = parent::delete($elements);
     if ($result) {
         if (!empty($orders)) {
             $addresses = array();
             foreach ($orders as $order) {
                 $addresses[$order->order_billing_address_id] = $order->order_billing_address_id;
                 $addresses[$order->order_shipping_address_id] = $order->order_shipping_address_id;
             }
             $addressClass = hikashop_get('class.address');
             foreach ($addresses as $address) {
                 $addressClass->delete($address, true);
             }
         }
         $dispatcher->trigger('onAfterOrderDelete', array(&$elements));
     }
     return $result;
 }
Example #19
0
 function save(&$element)
 {
     if (!empty($element->currency_id) && isset($element->currency_code)) {
         $old = $this->get($element->currency_id);
         if (@$old->currency_code != $element->currency_code) {
             $app = JFactory::getApplication();
             $app->enqueueMessage('You changed the currency code from ' . @$old->currency_code . ' to ' . $element->currency_code . '. Note that payment plugins base themselves on the currency code to see if they support or not the current currency. If you change te currency code, that code won\'t be understood by payment plugins and thus you won\'t see them on your checkout with that currency. If you want to change the display of prices so that it doesn\'t use the code but the symbol of the currency, please change the format option of the currency and leave the default value in the currency code.');
         }
     }
     $element->currency_modified = time();
     return parent::save($element);
 }
Example #20
0
 function delete(&$elements)
 {
     $result = parent::delete($elements);
     if ($result) {
         if (!is_array($elements)) {
             $elements = array($elements);
         }
         if (!empty($elements)) {
             $ids = array();
             foreach ($elements as $id) {
                 $ids[] = $this->database->Quote('menu_' . (int) $id);
             }
             $query = 'DELETE FROM ' . hikashop_table('config') . ' WHERE config_namekey IN (' . implode(',', $ids) . ');';
             $this->database->setQuery($query);
             return $this->database->query();
         }
     }
     return $result;
 }
Example #21
0
File: cart.php Project: rodhoff/MNW
 function delete(&$id, $cart_date = 'new')
 {
     $app = JFactory::getApplication();
     $result = 0;
     $cartInfo = $this->loadCart($id);
     $currUser = hikashop_loadUser(true);
     $user = JFactory::getUser();
     $session = JFactory::getSession();
     if ($app->isAdmin() || !empty($currUser) && $currUser->user_cms_id == $cartInfo->user_id || $session->getId() == $cartInfo->session_id) {
         $result = parent::delete($id);
         if ($result && $cart_date == 'new') {
             $app = JFactory::getApplication();
             $app->setUserState(HIKASHOP_COMPONENT . '.cart_id', 0);
             $this->loadCart(0, true);
         }
     }
     return $result;
 }
Example #22
0
 function getField($fieldid, $type = '')
 {
     if (is_numeric($fieldid)) {
         $element = parent::get($fieldid);
     } else {
         $this->database->setQuery('SELECT * FROM ' . hikashop_table('field') . ' WHERE field_table=' . $this->database->Quote($type) . ' AND field_namekey=' . $this->database->Quote($fieldid));
         $element = $this->database->loadObject();
     }
     $fields = array($element);
     $data = null;
     $this->prepareFields($fields, $data, $fields[0]->field_type, '', true);
     return $fields[0];
 }
Example #23
0
 function update(&$product)
 {
     $old = null;
     if (!empty($product->order_product_id)) {
         $old = $this->get($product->order_product_id);
     }
     $update_quantities = true;
     if (!empty($product->no_update_qty)) {
         unset($product->no_update_qty);
         $update_quantities = false;
     }
     if ($update_quantities && (isset($product->change) || (empty($old) && !empty($product->product_id) || !empty($old->product_id) && $old->order_product_quantity != $product->order_product_quantity))) {
         $k = $product->order_product_quantity;
         if (!empty($old)) {
             if (isset($product->change)) {
                 if ($product->change == 'plus') {
                     $k = -(int) $product->order_product_quantity;
                 } elseif ($product->change == 'minus') {
                     $k = (int) $product->order_product_quantity;
                 }
                 unset($product->change);
             } else {
                 $k = $product->order_product_quantity - $old->order_product_quantity;
             }
         }
         if (!empty($product->product_id)) {
             $product_id = (int) $product->product_id;
         } else {
             $product_id = (int) $old->product_id;
         }
         $filters = array('product_id=' . (int) $product_id);
         $productClass = hikashop_get('class.product');
         $prod = $productClass->get($product_id);
         if (!empty($prod) && $prod->product_type == 'variant' && !empty($prod->product_parent_id)) {
             $filters[] = 'product_id=' . (int) $prod->product_parent_id;
         }
         $query = 'UPDATE ' . hikashop_table('product') . ' SET product_quantity = product_quantity - ' . $k . ' WHERE (' . implode(' OR ', $filters) . ') AND product_quantity >= 0 AND product_quantity > ' . (int) ($k - 1);
         $this->database->setQuery($query);
         $this->database->query();
         $query = 'UPDATE ' . hikashop_table('product') . ' SET product_sales = product_sales + ' . $k . ' WHERE product_sales >= ' . -$k . ' AND (' . implode(' OR ', $filters) . ')';
         $this->database->setQuery($query);
         $this->database->query();
     }
     if (!empty($product->tax_namekey)) {
         $tax = new stdClass();
         if (!empty($product->product_id) && !empty($old)) {
             if (is_string($old->order_product_tax_info)) {
                 $old->order_product_tax_info = unserialize($old->order_product_tax_info);
             }
             $tax = reset($old->order_product_tax_info);
         }
         $tax->tax_namekey = $product->tax_namekey;
         $tax->tax_amount = $product->order_product_tax;
         $product->order_product_tax_info = array($tax);
     }
     if (isset($product->order_product_tax_info) && !is_string($product->order_product_tax_info)) {
         $product->order_product_tax_info = serialize($product->order_product_tax_info);
     }
     if (empty($product->order_product_quantity)) {
         return $this->delete($product->order_product_id);
     }
     if (isset($product->change)) {
         unset($product->change);
     }
     if (isset($product->tax_namekey)) {
         unset($product->tax_namekey);
     }
     $product->order_product_id = parent::save($product);
     return $product->order_product_id;
 }
Example #24
0
 function get($id, $default = null)
 {
     $element = parent::get($id);
     if ($element) {
         $this->prepare($element);
     }
     return $element;
 }
Example #25
0
 function get($id, $type = 'product', $content = 'main', $infos = array())
 {
     return parent::get($id);
 }
Example #26
0
File: user.php Project: rodhoff/MNW
 function delete(&$elements, $fromCMS = false)
 {
     $result = true;
     if (!empty($elements)) {
         if (!is_array($elements)) {
             $elements = array((int) $elements);
         } else {
             JArrayHelper::toInteger($elements);
         }
         JPluginHelper::importPlugin('hikashop');
         $dispatcher = JDispatcher::getInstance();
         $do = true;
         $dispatcher->trigger('onBeforeUserDelete', array(&$elements, &$do));
         if (!$do) {
             return false;
         }
         foreach ($elements as $el) {
             $query = 'SELECT count(*) FROM ' . hikashop_table('order') . ' WHERE order_user_id=' . $el;
             $this->database->setQuery($query);
             $hasOrders = $this->database->loadResult();
             if (empty($hasOrders)) {
                 $result = parent::delete($el);
                 if ($result) {
                     $address = hikashop_get('class.address');
                     $addresses = $address->loadUserAddresses($el);
                     foreach ($addresses as $id => $data) {
                         $address->delete($id);
                     }
                 }
             } else {
                 $app = JFactory::getApplication();
                 if ($app->isAdmin()) {
                     $data = $this->get($el);
                     $app->enqueueMessage('The user with the email address "' . $data->user_email . '" could not be deleted in HikaShop because he has orders attached to him. If you want to delete this user in HikaShop as well, you first need to delete his orders.');
                     $result = false;
                 }
                 if ($fromCMS) {
                     $query = 'UPDATE ' . hikashop_table('user') . ' SET user_cms_id=0 WHERE user_id IN (' . implode(',', $elements) . ')';
                     $this->database->setQuery($query);
                     $result = $this->database->query();
                 }
             }
         }
         if ($result) {
             $dispatcher->trigger('onAfterUserDelete', array(&$elements));
         }
     }
     return $result;
 }
Example #27
0
 function delete(&$elements)
 {
     if (!is_array($elements)) {
         $elements = array($elements);
     }
     JArrayHelper::toInteger($elements);
     $status = true;
     $pkey = end($this->pkeys);
     $table = hikashop_table(end($this->tables));
     $parent = $this->parent;
     $parentIds = array();
     $ids = array();
     $products = array();
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $dispatcher->trigger('onBeforeCategoryDelete', array(&$elements, &$do));
     if (!$do) {
         return false;
     }
     foreach ($elements as $element) {
         if (!$status) {
             continue;
         }
         $data = $this->get($element);
         if (empty($data)) {
             continue;
         }
         if (in_array($data->category_namekey, array('root', 'product', 'tax', 'status', 'created', 'confirmed', 'cancelled', 'refunded', 'shipped', 'manufacturer'))) {
             $app = JFactory::getApplication();
             $app->enqueueMessage(JText::_('DEFAULT_CATEGORIES_DELETE_ERROR'), 'error');
             $status = false;
             continue;
         }
         $ids[] = $element;
         $parentIds[$data->category_parent_id] = $data->category_parent_id;
         if ($data->category_type == 'product') {
             $query = 'SELECT product_id FROM ' . hikashop_table('product_category') . ' WHERE category_id=' . $element;
             $this->database->setQuery($query);
             if (!HIKASHOP_J25) {
                 $products = array_merge($products, $this->database->loadResultArray());
             } else {
                 $products = array_merge($products, $this->database->loadColumn());
             }
         }
         if (!empty($data->category_type)) {
             $this->type = $data->category_type;
         }
         $filter = '';
         if ($data->category_right - $data->category_left != 1) {
             $query = 'UPDATE ' . $table . ' SET ' . $parent . ' = ' . $data->{$parent} . ' WHERE ' . $parent . ' = ' . $element;
             $this->database->setQuery($query);
             $status = $status && $this->database->query();
             $query = 'UPDATE ' . $table . ' SET category_depth = category_depth - 1, category_left = category_left - 1, category_right = category_right - 1 WHERE category_left > ' . $data->category_left . ' AND category_right < ' . $data->category_right . $filter;
             $this->database->setQuery($query);
             $status = $status && $this->database->query();
         }
         $query = 'UPDATE ' . $table . ' SET category_right = category_right - 2 WHERE category_right > ' . $data->category_right . $filter;
         $this->database->setQuery($query);
         $status = $status && $this->database->query();
         $query = 'UPDATE ' . $table . ' SET category_left = category_left - 2 WHERE category_left > ' . $data->category_right . $filter;
         $this->database->setQuery($query);
         $status = $status && $this->database->query();
         $status = $status && parent::delete($element);
     }
     if ($status) {
         $dispatcher->trigger('onAfterCategoryDelete', array(&$elements));
         if (!empty($parentIds)) {
             $orderClass = hikashop_get('helper.order');
             $orderClass->pkey = 'category_id';
             $orderClass->table = 'category';
             $orderClass->groupMap = 'category_parent_id';
             $orderClass->orderingMap = 'category_ordering';
             foreach ($parentIds as $parentId) {
                 $orderClass->groupVal = $parentId;
                 $orderClass->reOrder();
             }
         }
         if (!empty($products)) {
             $query = 'SELECT * FROM ' . hikashop_table('product_category') . ' WHERE product_id IN (' . implode(',', $products) . ')';
             $this->database->setQuery($query);
             $entries = $this->database->loadObjectList();
             foreach ($entries as $entry) {
                 if (in_array($entry->product_id, $products)) {
                     $key = array_search($entry->product_id, $products);
                     unset($products[$key]);
                 }
             }
             if (!empty($products)) {
                 $root = 'product';
                 $this->getMainElement($root);
                 $insert = array();
                 foreach ($products as $new) {
                     $insert[] = '(' . (int) $root . ',' . $new . ')';
                 }
                 $query = 'INSERT IGNORE INTO ' . hikashop_table('product_category') . ' (category_id,product_id) VALUES ' . implode(',', $insert) . ';';
                 $this->database->setQuery($query);
                 $this->database->query();
                 $orderClass = hikashop_get('helper.order');
                 $orderClass->pkey = 'product_category_id';
                 $orderClass->table = 'product_category';
                 $orderClass->groupMap = 'category_id';
                 $orderClass->orderingMap = 'ordering';
                 $orderClass->groupVal = $root;
                 $orderClass->reOrder();
             }
         }
         $fileClass = hikashop_get('class.file');
         $fileClass->deleteFiles('category', $elements);
         $translationHelper = hikashop_get('helper.translation');
         $translationHelper->deleteTranslations('category', $elements);
     }
     return $status;
 }