public function delete($elements) { $status = parent::delete($elements); if ($status) { $app = JFactory::getApplication(); $orderClass = hikaserial::get('helper.order'); $orderClass->pkey = 'consumer_id'; $orderClass->table = 'consumer'; $orderClass->groupMap = 'consumer_type'; $orderClass->orderingMap = 'consumer_ordering'; $orderClass->groupVal = $app->getUserStateFromRequest(HIKASERIAL_COMPONENT . '.consumer_plugin_type', 'consumer_plugin_type', ''); $orderClass->reOrder(); } return $status; }
public function delete($elements) { if (!is_array($elements)) { $elements = array($elements); } JArrayHelper::toInteger($elements); $query = 'SELECT serial_pack_id, count(*) as `cpt` FROM ' . hikaserial::table('serial') . ' WHERE serial_pack_id IN ( ' . implode(',', $elements) . ');'; $this->db->setQuery($query); $serialPacks = $this->db->loadObjectList(); $exclude = array(); foreach ($serialPacks as $serialPack) { if ($serialPack->cpt > 0) { $exclude[] = $serialPack->serial_pack_id; } } if (!empty($exclude)) { $elements = array_diff($elements, $exclude); } return parent::delete($elements); }
public function delete($elements) { if (!is_array($elements)) { $elements = array($elements); } $config = hikaserial::config(); JPluginHelper::importPlugin('hikashop'); JPluginHelper::importPlugin('hikaserial'); $dispatcher = JDispatcher::getInstance(); $do = true; $dispatcher->trigger('onBeforeSerialDelete', array(&$elements, &$do)); if (!$do) { return false; } $deleted_status = 'deleted'; $useDeletedStatus = $config->get('use_deleted_serial_status', false); if (!$useDeletedStatus) { $result = parent::delete($elements); if ($result) { $query = 'DELETE FROM ' . hikaserial::table('history') . ' WHERE history_serial_id IN (' . implode(',', $elements) . ')'; $this->db->setQuery($query); $this->db->query(); $dispatcher->trigger('onAfterSerialDelete', array(&$elements)); } } else { $query = 'DELETE FROM ' . hikaserial::table('serial') . ' WHERE serial_id IN (' . implode(',', $elements) . ') AND serial_status = ' . $this->db->Quote($deleted_status); $this->db->setQuery($query); $this->db->query(); $result = true; $query = 'SELECT serial_id FROM ' . hikaserial::table('serial') . ' WHERE serial_id IN (' . implode(',', $elements) . ')'; $this->db->setQuery($query); if (!HIKASHOP_J25) { $updateIds = $this->db->loadResultArray(); } else { $updateIds = $this->db->loadColumn(); } if (!empty($updateIds)) { $query = 'UPDATE ' . hikaserial::table('serial') . ' SET serial_status = ' . $this->db->Quote($deleted_status) . ' WHERE serial_id IN (' . implode(',', $updateIds) . ')'; $this->db->setQuery($query); $this->db->query(); $query = 'DELETE FROM ' . hikaserial::table('history') . ' WHERE history_serial_id IN (' . implode(',', $elements) . ') AND history_serial_id NOT IN (' . implode(',', $updateIds) . ')'; $this->db->setQuery($query); $this->db->query(); if ($config->get('save_history', 1)) { $historyClass = hikaserial::get('class.history'); $histories = array(); foreach ($updateIds as $id) { $histories[] = $historyClass->create($id, $deleted_status, 'delete'); } if (!empty($histories)) { $historyClass->save($histories); } } } else { $query = 'DELETE FROM ' . hikaserial::table('history') . ' WHERE history_serial_id IN (' . implode(',', $elements) . ')'; $this->db->setQuery($query); $this->db->query(); } $dispatcher->trigger('onAfterSerialDelete', array(&$elements)); } $productClass = hikaserial::get('class.product'); $productClass->refreshQuantities(); return $result; }