/** * The function that holds the code for deleting * one product from the database and all related tables * plus deleting files related to the product * * @param int $product_id * @param array $d The input vars * @return boolean True on success, false on error */ function delete_product( $product_id, &$d ) { global $vmLogger, $VM_LANG; $db = new ps_DB; if (!$this->validate_delete($product_id, $d)) { return false; } /* If is Product */ if ($this->is_product($product_id)) { /* Delete all items first */ $q = "SELECT product_id FROM #__{vm}_product WHERE product_parent_id='$product_id'"; $db->setQuery($q); $db->query(); while($db->next_record()) { $d2["product_id"] = $db->f("product_id"); if (!$this->delete($d2)) { return false; } } /* Delete attributes */ $q = "DELETE FROM #__{vm}_product_attribute_sku WHERE product_id='$product_id' "; $db->setQuery($q); $db->query(); /* Delete categories xref */ $q = "DELETE FROM #__{vm}_product_category_xref WHERE product_id = '$product_id' "; $db->setQuery($q); $db->query(); } /* If is Item */ else { /* Delete attribute values */ $q = "DELETE FROM #__{vm}_product_attribute WHERE product_id='$product_id'"; $db->setQuery($q); $db->query(); } /* For both Product and Item */ /* Delete product - manufacturer xref */ $q = "DELETE FROM #__{vm}_product_mf_xref WHERE product_id='$product_id'"; $db->setQuery($q); $db->query(); /* Delete Product - ProductType Relations */ $q = "DELETE FROM `#__{vm}_product_product_type_xref` WHERE `product_id`=$product_id"; $db->setQuery($q); $db->query(); /* Delete product votes */ $q = "DELETE FROM #__{vm}_product_votes WHERE product_id='$product_id'"; $db->setQuery($q); $db->query(); /* Delete product reviews */ $q = "DELETE FROM #__{vm}_product_reviews WHERE product_id='$product_id'"; $db->setQuery($q); $db->query(); /* Delete Image files */ if (!vmImageTools::process_images($d)) { return false; } /* Delete other Files and Images files */ require_once( CLASSPATH.'ps_product_files.php' ); $ps_product_files = new ps_product_files(); $db->query( "SELECT file_id FROM #__{vm}_product_files WHERE file_product_id='$product_id'" ); while($db->next_record()) { $d["file_id"] = $db->f("file_id"); $ps_product_files->delete( $d ); } /* Delete Product Relations */ $q = "DELETE FROM #__{vm}_product_relations WHERE product_id = '$product_id'"; $db->setQuery($q); $db->query(); /* Delete Prices */ $q = "DELETE FROM #__{vm}_product_price WHERE product_id = '$product_id'"; $db->setQuery($q); $db->query(); /* Delete entry FROM #__{vm}_product table */ $q = "DELETE FROM #__{vm}_product WHERE product_id = '$product_id'"; $db->setQuery($q); $db->query(); /* If only deleting an item, go to the parent product page after ** the deletion. This had to be done here because the product id ** of the item to be deleted had to be passed as product_id */ if (!empty($d["product_parent_id"])) { $d["product_id"] = $d["product_parent_id"]; $d["product_parent_id"] = ""; } $vmLogger->info( str_replace('{product_id}',$product_id,$VM_LANG->_('VM_PRODUCT_DELETED',false)) ); return true; }