/** * Move a product from one category to another * * @param array $d * @return boolean True on sucess, false on failure */ function move( &$d ) { global $db, $vmLogger, $VM_LANG; if( !is_array( $d['product_id'])) { $vmLogger->err( $VM_LANG->_('VM_PRODUCT_MOVE_NOTFOUND',false)); return false; } if( empty( $d['category_id'])) { $vmLogger->err( $VM_LANG->_('VM_PRODUCT_MUSTSELECT_ONE_CAT',false)); return false; } // Loop though each product foreach( $d['product_id'] as $product_id ) { // check if the product is already assigned to the category it should be moved to $db->query( 'SELECT product_id FROM `#__{vm}_product_category_xref` WHERE `product_id`='.intval($product_id).' AND `category_id`='.intval($d['category_id'])); if( !$db->next_record()) { // If the product is not yet in this category, move it! $db->query( 'SELECT MAX(`product_list`) as max FROM `#__{vm}_product_category_xref` WHERE `category_id`='.intval($d['category_id'])); $db->next_record(); $db->query('INSERT INTO `#__{vm}_product_category_xref` VALUES ('.intval($d['category_id']).', '.intval($product_id).', '.intval( $db->f('max') + 1) .') '); } $db->query('DELETE FROM `#__{vm}_product_category_xref` WHERE `product_id`='.intval($product_id).' AND `category_id`='.intval($d['old_category_id'])); } return true; }