/**
  * Gets a buyable object based on URL actions
  *@return DataObject | Null - returns buyable
  */
 protected function buyable()
 {
     $buyableClassName = Convert::raw2sql($this->getRequest()->param('OtherID'));
     $buyableID = intval($this->getRequest()->param('ID'));
     if ($buyableClassName && $buyableID) {
         if (EcommerceDBConfig::is_buyable($buyableClassName)) {
             $obj = DataObject::get_by_id($buyableClassName, intval($buyableID));
             if ($obj) {
                 if ($obj->ClassName == $buyableClassName) {
                     return $obj;
                 }
             }
         } else {
             if (strpos($buyableClassName, "OrderItem")) {
                 user_error("ClassName in URL should be buyable and not an orderitem", E_USER_NOTICE);
             }
         }
     }
     return null;
 }
 function quickaddtocartform_add($data, $form)
 {
     $shoppingCart = ShoppingCart::singleton();
     $buyableID = intval($data["BuyableID"]);
     $buyableClassName = Convert::raw2sql($data["BuyableClassName"]);
     $version = Intval($data["Version"]);
     $quantity = floatval($data["Quantity"]);
     $status = "bad";
     $message = _t("AddToCartPage.ERRORPRODUCTNOTADDED", "ERROR: Product Not Added - make sure to find a product first.");
     if (class_exists($buyableClassName) && EcommerceDBConfig::is_buyable($buyableClassName)) {
         $buyable = $buyableClassName::get()->byID($buyableID);
         if ($buyable) {
             $shoppingCart->addBuyable($buyable, $quantity);
             $status = "good";
             $message = _t("AddToCartPage.ADDED", "Added");
         }
     }
     if (Director::is_ajax()) {
         return $shoppingCart->setMessageAndReturn($message, $status, $form);
     } else {
         $form->setMessage($message, $status);
         $this->redirectBack();
     }
 }