registerDefaultTask('display');
}
$this->display[]='display';
$this->display[]='convert';
$this->display[]='newcart';
$this->display[]='showcarts';
$this->display[]='showcart';
$this->display[]='setcurrent';
$this->display[]='delete';
$this->display[]='savecart';
$this->display[]='addtocart';
}
function display($cachable = false, $urlparams = array()){
$cart_type = JRequest::getString('cart_type','cart');
$empty='';
jimport('joomla.html.parameter');
$params = new HikaParameter($empty);
$js = '';
$params->set('cart_type',$cart_type);
$html = trim(hikashop_getLayout('product','cart',$params,$js));
if(!empty($html)){
JRequest::setVar('savecart','1');
echo '
'.$html.'
';
}
}
function convert(){
$app = JFactory::getApplication();
$cart_type = JRequest::getString('cart_type','cart');
$cart_id = JRequest::getInt('cart_id','0');
$cartClass = hikashop_get('class.cart');
$cartInfo = $cartClass->loadCart($cart_id);
$currUser = hikashop_loadUser(true);
if($cartInfo != null && $currUser->user_cms_id == $cartInfo->user_id){
$app->setUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_id', 0);
$cartClass->convert($cart_id, $cart_type);
if($cart_type != 'wishlist'){
JRequest::setVar('cart_type','wishlist');
}
}
JRequest::setVar('cart_id',$cart_id);
JRequest::setVar('layout', 'showcart');
return parent::display();
}
function newcart(){
$app = JFactory::getApplication();
$cartClass = hikashop_get('class.cart');
$cart_type = JRequest::getString('cart_type','cart');
$result = $cartClass->setCurrent('0',$cart_type);
if($result){
$session = JFactory::getSession();
$curUser = hikashop_loadUser(true);
$newCart = new stdClass();
if($curUser == null)
$newCart->user_id = 0;
else
$newCart->user_id = $curUser->user_cms_id;
$newCart->session_id = $session->getId();
$newCart->cart_modified = time();
$newCart->cart_type = $cart_type;
$newCart->cart_current = 1;
$newCart->cart_share = 'nobody';
$cartClass->save($newCart);
$app->setUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_id', '0');
$app->setUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_new', '1');
if($cart_type == 'cart')
$app->enqueueMessage(JText::sprintf( 'HIKASHOP_CART_CREATED'), 'notice');
else
$app->enqueueMessage(JText::sprintf( 'HIKASHOP_WISHLIST_CREATED'), 'notice');
}
$this->showcarts();
}
function showcarts(){
JRequest::setVar('layout', 'showcarts');
return parent::display();
}
function showcart(){
JRequest::setVar('layout', 'showcart');
return parent::display();
}
function addtocart(){
global $Itemid;
$app = JFactory::getApplication();
$from_id = JRequest::getInt('cart_id',0);
$cart_type = JRequest::getString('cart_type','cart');
$action = JRequest::getString('action','');
if($action != 'compare'){
$cart_type_id = $cart_type.'_id';
if($cart_type == 'cart') $addTo = 'wishlist';
else $addTo = 'cart';
JRequest::setVar('from_id',$from_id);
if($addTo == 'wishlist' && hikashop_loadUser() == null){
$app->enqueueMessage(JText::_('LOGIN_REQUIRED_FOR_WISHLISTS'));
}else{
$cart_type_id = $addTo.'_id';
$cart_id = $app->getUserState(HIKASHOP_COMPONENT.'.'.$cart_type_id,'0');
$app->setUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_new', '0');
if(empty($cart_id))$cart_id=0;
JRequest::setVar('cart_type', $addTo);
JRequest::setVar($cart_type_id, $cart_id);
$cartClass = hikashop_get('class.cart');
$formData = JRequest::getVar('data', array(), '', 'array');
$i = 0;
if(isset($formData['products'])){
$cart_product_id = 0;
$fromProducts = $cartClass->get(0,true,$cart_type);
foreach($formData['products'] as $product_id => $product){
if(!empty($product['checked'])) {
$i++;
if(!isset($product['quantity'])) $product['quantity'] = 1;
$options = array();
foreach($fromProducts as $fromProduct){
if($fromProduct->product_id == $product_id){
$cart_product_id = $fromProduct->cart_product_id;
}
}
foreach($fromProducts as $fromProduct){
if($fromProduct->cart_product_option_parent_id == $cart_product_id){
$options[] = $fromProduct->product_id;
}
}
JRequest::setVar('hikashop_product_option',$options);
$cartClass->update((int)$product_id, (int)$product['quantity'],1);
}
}
}
if($i == 0){
$app->enqueueMessage(JText::_('PLEASE_SELECT_A_PRODUCT_FIRST'));
}
}
if($action != '')
$url = $action;
else{
$url = 'cart&task=showcart&cart_type='.$cart_type.'&cart_id='.$from_id.'&Itemid='.$Itemid;
$url = hikashop_completeLink($url,false,true);
}
}
else{
$formData = JRequest::getVar('data', array(), '', 'array');
if(isset($formData['products'])){
$cidList = '';
foreach($formData['products'] as $product_id => $product){
if(!empty($product['checked'])) {
$cidList .= "&cid[]=".$product_id;
}
}
$url = hikashop_completeLink('product&task=compare'.$cidList.'&Itemid='.$Itemid,false,true);
}else{
$url = 'cart&task=showcart&cart_type='.$cart_type.'&cart_id='.$from_id.'&Itemid='.$Itemid;
$url = hikashop_completeLink($url,false,true);
}
}
$this->setRedirect($url);
}
function savecart(){
$app = JFactory::getApplication();
$cartClass = hikashop_get('class.cart');
$user = JFactory::getUser();
$session = JFactory::getSession();
$formData = JRequest::getVar('data', array(), '', 'array');
$cart_id = JRequest::getInt('cart_id','0');
$cart_type = JRequest::getString('cart_type','cart');
$cart_name = JRequest::getString('cart_name','');
$cart_share = JRequest::getString('cart_share','nobody');
if($cart_share == 'email'){
$cart_share = JRequest::getString('hikashop_wishlist_token','nobody');
}
$cartClass->cart_type = $cart_type;
$cartInfo = $cartClass->loadCart($cart_id);
$currUser = hikashop_loadUser(true);
if($cartInfo != null && ((isset($currUser->user_cms_id) && $currUser->user_cms_id == $cartInfo->user_id) || $session->getId() == $cartInfo->session_id)){
$cart= new stdClass();
$cart->cart_id = $cart_id;
$cart->user_id = $user->id;
$cart->cart_modified = time();
$cart->session_id = $session->getId();
$cart->cart_type = $cart_type;
$cart->cart_name = $cart_name;
$cart->cart_share = $cart_share;
$status = $cartClass->save($cart);
$formData = JRequest::getVar( 'data', array(), '', 'array' );
if($status){
$cartContent = $cartClass->get($cart_id,false,$cart_type);
if(!empty($formData)){
foreach($formData['products'] as $k => $product){
foreach($cartContent as $l => $content){
if($content->product_id == $k){
$formData['products'][$content->cart_product_id] = $product;
$formData['products'][$content->cart_product_id]['cart_product_quantity'] = $formData['products'][$content->cart_product_id]['quantity'];
unset($formData['products'][$k]);
}
}
}
JRequest::setVar($cart_type.'_id',$cart_id);
JRequest::setVar('cart_type',$cart_type);
$cartClass->update($formData['products'],0,0,'item');
}
}
}
$this->showcart();
}
function setcurrent(){
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$cart_id = JRequest::getVar('cart_id','0');
$cart_type = JRequest::getString('cart_type','cart');
$cartClass = hikashop_get('class.cart');
$cartClass->cart_type = $cart_type;
$cartInfo = $cartClass->loadCart($cart_id);
$currUser = hikashop_loadUser(true);
if($cartInfo != null && $currUser->user_cms_id == $cartInfo->user_id){
$result = $cartClass->setCurrent($cart_id, $cart_type);
if($result)$app->setUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_id', $cart_id);
}
JRequest::setVar('layout', 'showcarts');
return parent::display();
}
function delete(){ //delete a cart with the id given
$cart_id = JRequest::getInt('cart_id','0');
$cart_type = JRequest::getString('cart_type','cart');
$cartClass = hikashop_get('class.cart');
$cartClass->cart_type = $cart_type;
$cartInfo = $cartClass->loadCart($cart_id);
$currUser = hikashop_loadUser(true);
if($cartInfo != null && $currUser->user_cms_id == $cartInfo->user_id){
$app = JFactory::getApplication();
if($app->getUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_id') == $cart_id){
$app->setUserState(HIKASHOP_COMPONENT.'.'.$cart_type.'_id', '0');
}
$cartClass->delete($cart_id, 'old');
}
$this->showcarts();
}
}