Пример #1
0
    /**
     * Overloaded delete() to delete records from order_userinfo and order payment as well,
     * and write a record to the order history (TODO Or should the hist table be cleaned as well?)
     *
     * @var integer Order id
     * @return boolean True on success
     * @author Oscar van Eijk
     * @author Kohl Patrick
     */
    function delete($id = null, $where = 0)
    {
        $this->_db->setQuery('DELETE from `#__virtuemart_order_userinfos` WHERE `virtuemart_order_id` = ' . $id);
        if ($this->_db->query() === false) {
            vmError($this->_db->getError());
            return false;
        }
        /*vm_order_payment NOT EXIST  have to find the table name*/
        $this->_db->setQuery('SELECT `payment_element` FROM `#__virtuemart_paymentmethods` , `#__virtuemart_orders`
			WHERE `#__virtuemart_paymentmethods`.`virtuemart_paymentmethod_id` = `#__virtuemart_orders`.`virtuemart_paymentmethod_id` AND `virtuemart_order_id` = ' . $id);
        $paymentTable = '#__virtuemart_payment_plg_' . $this->_db->loadResult();
        $this->_db->setQuery('DELETE from `' . $paymentTable . '` WHERE `virtuemart_order_id` = ' . $id);
        if ($this->_db->query() === false) {
            vmError($this->_db->getError());
            return false;
        }
        /*vm_order_shipment NOT EXIST  have to find the table name*/
        $this->_db->setQuery('SELECT `shipment_element` FROM `#__virtuemart_shipmentmethods` , `#__virtuemart_orders`
			WHERE `#__virtuemart_shipmentmethods`.`virtuemart_shipmentmethod_id` = `#__virtuemart_orders`.`virtuemart_shipmentmethod_id` AND `virtuemart_order_id` = ' . $id);
        $shipmentName = $this->_db->loadResult();
        if (empty($shipmentName)) {
            vmError('Seems the used shipmentmethod got deleted');
            //Can we securely prevent this just using
            //	'SELECT `shipment_element` FROM `#__virtuemart_shipmentmethods` , `#__virtuemart_orders`
            //	WHERE `#__virtuemart_shipmentmethods`.`virtuemart_shipmentmethod_id` = `#__virtuemart_orders`.`virtuemart_shipmentmethod_id` AND `virtuemart_order_id` = ' . $id );
        } else {
            $shipmentTable = '#__virtuemart_shipment_plg_' . $shipmentName;
            $this->_db->setQuery('DELETE from `' . $shipmentTable . '` WHERE `virtuemart_order_id` = ' . $id);
            if ($this->_db->query() === false) {
                vmError('TableOrders delete Order shipmentTable = ' . $shipmentTable . ' `virtuemart_order_id` = ' . $id . ' dbErrorMsg ' . $this->_db->getError());
                return false;
            }
        }
        $_q = 'INSERT INTO `#__virtuemart_order_histories` (' . ' virtuemart_order_history_id' . ',virtuemart_order_id' . ',order_status_code' . ',created_on' . ',customer_notified' . ',comments' . ') VALUES (' . ' NULL' . ',' . $id . ",'-'" . ',NOW()' . ',0' . ",'Order deleted'" . ')';
        $this->_db->setQuery($_q);
        $this->_db->query();
        // Ignore error here
        return parent::delete($id);
    }
Пример #2
0
    /**
     * Overloaded delete() to delete records from order_userinfo and order payment as well,
     * and write a record to the order history (TODO Or should the hist table be cleaned as well?)
     *
     * @var integer Order id
     * @return boolean True on success
     * @author Oscar van Eijk
     * @author Kohl Patrick
     */
    function delete($id)
    {
        $this->_db->setQuery('DELETE from `#__virtuemart_order_userinfos` WHERE `virtuemart_order_id` = ' . $id);
        if ($this->_db->query() === false) {
            vmError($this->_db->getError());
            return false;
        }
        /*vm_order_payment NOT EXIST  have to find the table name*/
        $this->_db->setQuery('SELECT `payment_element` FROM `#__virtuemart_paymentmethods` , `#__virtuemart_orders`
			WHERE `#__virtuemart_paymentmethods`.`virtuemart_paymentmethod_id` = `#__virtuemart_orders`.`virtuemart_paymentmethod_id` AND `virtuemart_order_id` = ' . $id);
        $paymentTable = '#__virtuemart_payment_plg_' . $this->_db->loadResult();
        $this->_db->setQuery('DELETE from `' . $paymentTable . '` WHERE `virtuemart_order_id` = ' . $id);
        if ($this->_db->query() === false) {
            vmError($this->_db->getError());
            return false;
        }
        /*vm_order_shipment NOT EXIST  have to find the table name*/
        $this->_db->setQuery('SELECT `shipment_element` FROM `#__virtuemart_shipmentmethods` , `#__virtuemart_orders`
			WHERE `#__virtuemart_shipmentmethods`.`virtuemart_shipmentmethod_id` = `#__virtuemart_orders`.`virtuemart_shipmentmethod_id` AND `virtuemart_order_id` = ' . $id);
        $shipmentTable = '#__virtuemart_shipment_plg_' . $this->_db->loadResult();
        $this->_db->setQuery('DELETE from `' . $shipmentTable . '` WHERE `virtuemart_order_id` = ' . $id);
        if ($this->_db->query() === false) {
            vmError($this->_db->getError());
            return false;
        }
        $_q = 'INSERT INTO `#__virtuemart_order_histories` (' . ' virtuemart_order_history_id' . ',virtuemart_order_id' . ',order_status_code' . ',created_on' . ',customer_notified' . ',comments' . ') VALUES (' . ' NULL' . ',' . $id . ",'-'" . ',NOW()' . ',0' . ",'Order deleted'" . ')';
        $this->_db->setQuery($_q);
        $this->_db->query();
        // Ignore error here
        return parent::delete($id);
    }