コード例 #1
0
ファイル: tax.php プロジェクト: 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;
 }
コード例 #2
0
ファイル: waitlist.php プロジェクト: q0821/esportshop
 function save(&$element)
 {
     if (empty($element->waitlist_id) && empty($element->date)) {
         $element->date = time();
     }
     $status = parent::save($element);
     return $status;
 }
コード例 #3
0
ファイル: characteristic.php プロジェクト: q0821/esportshop
 function save(&$element)
 {
     $class = hikashop_get('helper.translation');
     $class->getTranslations($element);
     $status = parent::save($element);
     if ($status) {
         $class->handleTranslations('characteristic', $status, $element);
     }
     return $status;
 }
コード例 #4
0
ファイル: limit.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #5
0
ファイル: banner.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #6
0
ファイル: widget.php プロジェクト: rodhoff/MNW
 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);
 }
コード例 #7
0
ファイル: plugin.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #8
0
ファイル: click.php プロジェクト: rodhoff/MNW
 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);
 }
コード例 #9
0
ファイル: warehouse.php プロジェクト: rodhoff/MNW
 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;
 }
コード例 #10
0
ファイル: geolocation.php プロジェクト: q0821/esportshop
 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);
 }
コード例 #11
0
ファイル: taxation.php プロジェクト: rodhoff/MNW
 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;
 }
コード例 #12
0
ファイル: filter.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #13
0
ファイル: plugins.php プロジェクト: rodhoff/MNW
 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);
 }
コード例 #14
0
ファイル: shipping.php プロジェクト: q0821/esportshop
 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];
 }
コード例 #15
0
ファイル: discount.php プロジェクト: rodhoff/MNW
 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;
 }
コード例 #16
0
ファイル: address.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #17
0
ファイル: product.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #18
0
ファイル: order.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #19
0
ファイル: currency.php プロジェクト: q0821/esportshop
 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);
 }
コード例 #20
0
ファイル: menus.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #21
0
ファイル: cart.php プロジェクト: 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;
 }
コード例 #22
0
ファイル: field.php プロジェクト: q0821/esportshop
 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];
 }
コード例 #23
0
ファイル: order_product.php プロジェクト: q0821/esportshop
 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;
 }
コード例 #24
0
ファイル: massaction.php プロジェクト: rodhoff/MNW
 function get($id, $default = null)
 {
     $element = parent::get($id);
     if ($element) {
         $this->prepare($element);
     }
     return $element;
 }
コード例 #25
0
ファイル: vote.php プロジェクト: q0821/esportshop
 function get($id, $type = 'product', $content = 'main', $infos = array())
 {
     return parent::get($id);
 }
コード例 #26
0
ファイル: user.php プロジェクト: 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;
 }
コード例 #27
0
ファイル: category.php プロジェクト: rodhoff/MNW
 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;
 }