Exemplo n.º 1
0
 function delete(&$elements)
 {
     $status = parent::delete($elements);
     if ($status) {
         $orderClass = hikashop_get('helper.order');
         $orderClass->pkey = 'shipping_id';
         $orderClass->table = 'shipping';
         $orderClass->groupMap = 'shipping_type';
         $orderClass->orderingMap = 'shipping_ordering';
         $app =& JFactory::getApplication();
         $orderClass->groupVal = $app->getUserStateFromRequest(HIKASHOP_COMPONENT . '.shipping_plugin_type', 'shipping_plugin_type', 'manual');
         $orderClass->reOrder();
     }
     return $status;
 }
Exemplo n.º 2
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;
 }
Exemplo n.º 3
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;
 }
Exemplo n.º 4
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;
 }
Exemplo n.º 5
0
Arquivo: cart.php Projeto: 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;
 }
Exemplo n.º 6
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;
 }
Exemplo n.º 7
0
Arquivo: user.php Projeto: 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;
 }
Exemplo n.º 8
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;
 }
Exemplo n.º 9
0
 function delete(&$elements)
 {
     $db = JFactory::getDBO();
     JArrayHelper::toInteger($elements);
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $currentElements = array();
     $dispatcher->trigger('onBeforeVoteDelete', array(&$elements, &$do, &$currentElements));
     if (!$do) {
         return false;
     }
     $db->setQuery('SELECT vote_id, vote_rating, vote_ref_id, vote_published, vote_type FROM ' . hikashop_table('vote') . ' WHERE vote_id IN (' . implode(',', $elements) . ')');
     $results = $db->loadObjectList();
     foreach ($results as $result) {
         $vote_rating = $result->vote_rating;
         $vote_ref_id = $result->vote_ref_id;
         $vote_published = $result->vote_published;
         if ($result->vote_type == 'product') {
             $productClass = hikashop_get('class.' . $result->vote_type);
             $resultVote = $productClass->get($vote_ref_id);
             $average_score = @$resultVote->product_average_score;
             $total_vote = @$resultVote->product_total_vote;
         } else {
             if (isset($currentElements[(int) $result->vote_id])) {
                 $element = $currentElements[(int) $result->vote_id];
                 if (!isset($element->average_score) || !isset($element->total_vote)) {
                     return false;
                 }
                 $average_score = $element->average_score;
                 $total_vote = $element->total_vote;
             } else {
                 $average_score = 0;
                 $total_vote = 0;
                 $element = null;
             }
         }
         $status = parent::delete($result->vote_id);
         if ($status && isset($element) && $element !== null) {
             $query = 'DELETE FROM ' . hikashop_table('vote_user') . ' WHERE vote_user_id = ' . (int) $result->vote_id . ' ';
             $db->setQuery($query);
             $db->query();
             if ($vote_published == 1 && $vote_rating != 0) {
                 if ($total_vote - 1 == 0) {
                     $average_score = 0;
                     $total_vote = 0;
                 } else {
                     $average_score = ($average_score * $total_vote - $vote_rating) / ($total_vote - 1);
                     $total_vote = $total_vote - 1;
                 }
                 $element->vote_id = (int) $result->vote_id;
                 $element->vote_ref_id = (int) $result->vote_ref_id;
                 $element->average_score = $average_score;
                 $element->total_vote = $total_vote;
                 if ($result->vote_type == 'product') {
                     $product = new stdClass();
                     $product->product_id = (int) $vote_ref_id;
                     $product->product_average_score = $average_score;
                     $product->product_total_vote = (int) $total_vote;
                     $productClass->save($product, true);
                 }
             }
             $dispatcher->trigger('onAfterVoteDelete', array(&$element));
         }
     }
     return true;
 }
Exemplo n.º 10
0
Arquivo: vote.php Projeto: rodhoff/MNW
 function delete(&$elements)
 {
     $db = JFactory::getDBO();
     JArrayHelper::toInteger($elements);
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $currentElements = array();
     $dispatcher->trigger('onBeforeVoteDelete', array(&$elements, &$do, &$currentElements));
     if (!$do) {
         return false;
     }
     $db->setQuery('SELECT vote_id, vote_rating, vote_ref_id, vote_published, vote_type FROM ' . hikashop_table('vote') . ' WHERE vote_id IN (' . implode(',', $elements) . ')');
     $results = $db->loadObjectList();
     foreach ($results as $result) {
         if ($result->vote_type == 'product') {
             $dataClass = hikashop_get('class.' . $result->vote_type);
             $data = $dataClass->get($result->vote_ref_id);
         }
         $status = parent::delete($result->vote_id);
         if ($status && isset($data) && $data !== null) {
             $query = 'DELETE FROM ' . hikashop_table('vote_user') . ' WHERE vote_user_id = ' . (int) $result->vote_id . ' ';
             $db->setQuery($query);
             $db->query();
             if ($result->vote_type == 'product') {
                 $oldResult = clone $result;
                 $result->vote_published = 0;
                 if ($result->vote_rating != '0') {
                     $this->updateAverage($result, $oldResult, $data);
                 }
                 unset($data->alias);
                 $dataClass->save($data, true);
             }
         }
     }
     $dispatcher->trigger('onAfterVoteDelete', array(&$elements));
     return true;
 }
Exemplo n.º 11
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;
 }