PATH:
home
/
sparklp6
/
public_html
/
sparklerfilters-org
/
administrator
/
components
/
com_j2store
/
models
/
behavior
<?php /** * @package J2Store * @copyright Copyright (c)2014-17 Ramesh Elamathi / J2Store.org * @license GNU GPL v3 or later */ // No direct access to this file defined('_JEXEC') or die; class J2StoreModelCartsBehaviorCartDownloadable extends F0FModelBehavior { public function onBeforeAddCartItem(&$model, $product, &$json) { $app = JFactory::getApplication(); $product_helper = J2Store::product(); $values = $app->input->getArray($_REQUEST); $errors = array(); //run quantity check $quantity = $app->input->get('product_qty'); if (isset($quantity )) { $quantity = $quantity; } else { $quantity = 1; } //get options //get the product options $options = $app->input->get('product_option', array(0), 'ARRAY'); if (isset($options )) { $options = array_filter($options ); } else { $options = array(); } //iterate through stored options for this product and validate foreach($product->product_options as $product_option) { //check option type should not be file if ($product_option->required && empty($options[$product_option->j2store_productoption_id])) { $errors['error']['option'][$product_option->j2store_productoption_id] = JText::sprintf('J2STORE_ADDTOCART_PRODUCT_OPTION_REQUIRED', JText::_($product_option->option_name)); } if(!empty($options[$product_option->j2store_productoption_id])) { F0FModel::getTmpInstance('Options', 'J2StoreModel')->validateOptionRules($options[$product_option->j2store_productoption_id], $product_option, $errors); } } $cart = $model->getCart(); if(!$errors && $cart->cart_type != 'wishlist') { //before validating, get the total quantity of this variant in the cart $cart_total_qty = $product_helper->getTotalCartQuantity($product->variants->j2store_variant_id); //validate minimum / maximum quantity $error = $product_helper->validateQuantityRestriction($product->variants, $cart_total_qty, $quantity); if(!empty($error)) { $errors['error']['stock'] = $error; } //validate inventory if($product_helper->check_stock_status($product->variants, $cart_total_qty+$quantity) === false) { if ( $product->variants->quantity > 0 ) { $errors['error']['stock'] = JText::sprintf ( 'J2STORE_LOW_STOCK_WITH_QUANTITY', $product->variants->quantity ); }else{ $errors['error']['stock'] = JText::_('J2STORE_OUT_OF_STOCK'); } } } if(!$errors) { //all good. Add the product to cart // create cart object out of item properties $item = new JObject; $item->user_id = JFactory::getUser()->id; $item->product_id = (int) $product->j2store_product_id; $item->variant_id = (int) $product->variants->j2store_variant_id; $item->product_qty = J2Store::utilities()->stock_qty($quantity); $item->product_options = base64_encode(serialize($options)); $item->product_type = $product->product_type; $item->vendor_id = isset($product->vendor_id) ? $product->vendor_id : '0'; // onAfterCreateItemForAddToCart: plugin can add values to the item before it is being validated /added // once the extra field(s) have been set, they will get automatically saved $results = J2Store::plugin()->event("AfterCreateItemForAddToCart", array( $item, $values ) ); foreach ($results as $result) { foreach($result as $key=>$value) { $item->set($key,$value); } } // no matter what, fire this validation plugin event for plugins that extend the checkout workflow $results = array(); $results = J2Store::plugin()->event( "BeforeAddToCart", array( $item, $values, $product, $product->product_options) ); foreach($results as $result) { if (! empty ( $result['error'] )) { $errors['error']['general'] = $result['error']; } } // when there is some error from the plugin then the cart item should not be added if(!$errors){ //add item to cart $cartTable = $model->addItem($item); if($cartTable === false) { //adding to cart is failed $errors['success'] = 0; } else { //adding cart is successful $errors['success'] = 1; $errors['cart_id'] = $cartTable->j2store_cart_id; } } } $json->result = $errors; } public function onGetCartItems(&$model, &$item) { //sanity check if($item->product_type != 'downloadable') return; $product_helper = J2Store::product(); //Options //print_r(base64_decode($item->product_options)); if (isset($item->product_options)) { $options = unserialize(base64_decode($item->product_options)); } else { $options = array(); } $product = $product_helper->setId($item->product_id)->getProduct(); $product_option_data = $product_helper->getOptionPrice($options, $product->j2store_product_id); //print_r($product_option_data); $item->product_name = $product->product_name; $item->product_view_url = $product->product_view_url; $item->options = $product_option_data['option_data']; $item->option_price = $product_option_data['option_price']; $item->weight = $item->weight + $product_option_data['option_weight']; $item->weight_total = ($item->weight ) * $item->product_qty; $group_id = ''; if(isset($item->group_id) && !empty($item->group_id)){ $group_id = $item->group_id; } $item->pricing = $product_helper->getPrice($item, $item->product_qty,$group_id); } public function onValidateCart(&$model, $cartitem, $quantity) { //sanity check if($cartitem->product_type != 'downloadable') return; $product_helper = J2Store::product(); $product = $product_helper->setId($cartitem->product_id)->getProduct(); $variant = F0FModel::getTmpInstance('Variants', 'J2StoreModel')->getItem($cartitem->variant_id); $errors = array(); //before validating, get the total quantity of this variant in the cart $cart_total_qty = $product_helper->getTotalCartQuantity($variant->j2store_variant_id); //get the quantity difference. Because we are going to check the total quantity $difference_qty = $quantity - $cartitem->product_qty; //validate minimum / maximum quantity $error = $product_helper->validateQuantityRestriction($variant , $cart_total_qty, $difference_qty); if(!empty($error)) { $errors[] = $error; } //validate inventory if($product_helper->check_stock_status($variant, $cart_total_qty+$difference_qty) === false) { $errors[] = JText::_('J2STORE_OUT_OF_STOCK'); } if(count($errors)) { throw new Exception(implode('/n', $errors)); return false; } return true; } }
[-] variable.php
[edit]
[-] cartconfigurable.php
[edit]
[-] configurable.php
[edit]
[-] autoload.php
[edit]
[-] cartvariable.php
[edit]
[-] stock.php
[edit]
[-] default.php
[edit]
[-] downloadable.php
[edit]
[-] cartdefault.php
[edit]
[-] cartsimple.php
[edit]
[-] cartdownloadable.php
[edit]
[+]
..
[-] simple.php
[edit]