External Website Add to Cart Link CS-Cart 4.0

[list]

[*]tbirnseth created a wonderful addon to provide external links to directly add and item to cart, however, it does not function in CS-Cart 4.0 for some reason. It works fine in version 2.1. The error I receive in 4.0 is Error[color=#9C3535][font=Arial, Helvetica, sans-serif] No such product 'ACTION'.[/font][/color]

[/list][color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]

Below is my code. Can someone tell me what I would have to change to make this work with CS-Cart 4?[/size][/font][/color][color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]/*****************************[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* Copyright 2009, 1st Source IT, LLC[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* All rights reserved.[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* Permission granted for use as[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* long as this copyright notice, associated text and[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* links remain in tact.[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* Licensed for a single domain and a single instance of EZ-cart.[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* Additional licenses can be purchased for additional sites.[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]*[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* [/size][/font][/color][url="http://www.ez-ms.com/"]http://www.ez-ms.com[/url]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* [/size][/font][/color][url="http://www.ez-om.com/"]http://www.ez-om.com[/url]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* [/size][/font][/color][url="http://www.1sit.com%2A/"]http://www.1sit.com*[/url]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]*[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]* End copyright notification[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]*/[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]use Tygh\Http;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]use Tygh\Session;[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if (!defined('BOOTSTRAP')) { die('Access denied'); } [/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if( $mode == 'remote_checkout' || $mode == 'remote_add' ) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// Cart is empty, create it[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if (empty($_SESSION['cart'])) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]fn_clear_cart($_SESSION['cart']);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]} else {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$cart =& $_SESSION['cart'];[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// $action holds the product_code (not product_id). $dispatch_extra optionally holds the quantity.[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// So need to lookup the code and get product ID[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$product_code = ACTION;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$amount = DISPATCH_EXTRA;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if( !$product_code ) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]return array(CONTROLLER_STATUS_REDIRECT, INDEX_SCRIPT);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$product_id = db_get_field("SELECT product_id FROM ?:products WHERE product_code=?s LIMIT 1", $product_code);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if( empty($product_id) ) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]fn_set_notification('E', 'Error', "No such product '".$product_code."'", true);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]return array(CONTROLLER_STATUS_REDIRECT, $index_script);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// Add to cart button was pressed for single product on advanced list[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$_REQUEST['product_data'][$product_id]['amount'] = $amount ? $amount : 1;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if( empty($_REQUEST['product_data']) && $_SERVER['REQUEST_METHOD'] != 'POST' ) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$_REQUEST['product_data'][$product_id] = fn_get_product_data($product_id, $auth);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]fn_add_product_to_cart($_REQUEST['product_data'], $cart, $auth);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]fn_save_cart_content($cart, $auth['user_id']);[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$previous_state = md5(serialize($cart['products']));[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]fn_calculate_cart_content($cart, $auth, 'S', true, 'F', true);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$_SESSION['cart'] = $cart;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if (md5(serialize($cart['products'])) != $previous_state) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$msg = fn_get_lang_var('text_product_added_to');[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$msg = str_replace('[target]', strtolower(fn_get_lang_var('cart')), $msg);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// fn_set_notification('N', fn_get_lang_var('notice'), $msg);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$cart['recalculate'] = true;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$_suffix = ".checkout";[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if (defined('AJAX_REQUEST')) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$view->assign('cart_amount', $cart['amount']);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$view->assign('cart_subtotal', $cart['display_subtotal']);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$view->assign('force_items_deletion', true);[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// The redirection is made in order to update the page content to see changes made in the cart when adding a product to it from the 'view cart' or 'checkout' pages. [/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if (strpos($_SERVER['HTTP_REFERER'], 'dispatch=checkout.cart') || strpos($_SERVER['HTTP_REFERER'], 'dispatch=checkout.checkout')) {[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$ajax->assign('force_redirection', $_SERVER['HTTP_REFERER']);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$view->display('views/checkout/components/cart_status.tpl');[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$ajax->assign('force_redirection', INDEX_SCRIPT."?dispatch=checkout$_suffix");[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]exit;[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]// If not just an add, force to checkout[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]if( $mode == 'remote_add' )[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]$_suffix = ".cart";[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]fn_redirect(INDEX_SCRIPT."?dispatch=checkout$_suffix");[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]}[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]return array(CONTROLLER_STATUS_OK);[/size][/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]?>[/size][/font][/color]