params)){ $plugin =& JPluginHelper::getPlugin('system', 'hikashopaffiliate'); jimport('joomla.html.parameter'); $this->params = new JParameter( $plugin->params ); } } function afterInitialise(){ $do = $this->params->get('after_init','1'); if($do) return $this->onAfterRoute(); return true; } function onAfterInitialise(){ $do = $this->params->get('after_init','1'); if($do) return $this->onAfterRoute(); return true; } function afterRoute(){ return $this->onAfterRoute(); } function onAfterRoute(){ $app =& JFactory::getApplication(); if ($app->isAdmin()) return true; if(@$_REQUEST['option']=='com_gcalendar') return true; if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_hikashop'.DS.'helpers'.DS.'helper.php')) return true; $key_name = $this->params->get('partner_key_name','partner_id'); $partner_id = hikashop_decode(JRequest::getCmd($key_name,0),'partner'); if(empty($partner_id)){ return true; } static $done = false; if($done){ return true; }else{ $done = true; } $userClass = hikashop_get('class.user'); $user = $userClass->get($partner_id); if(empty($user->user_partner_activated)){ return true; } $config = hikashop_config(); setcookie('hikashop_affiliate', hikashop_encode($partner_id,'partner'), time()+$config->get('click_validity_period',2592000),'/'); $ip = hikashop_getIP(); $config = hikashop_config(); $clickClass = hikashop_get('class.click'); $latest = $clickClass->getLatest($partner_id,$ip,$config->get('click_min_delay',86400)); if(empty($user->user_params->user_custom_fee)){ $user->user_params->partner_click_fee = $config->get('partner_click_fee',0); $user->user_params->partner_fee_currency = $config->get('partner_currency',1); }else{ $user->user_params->partner_click_fee = $user->user_params->user_partner_click_fee; } if(!$config->get('allow_currency_selection',0) || empty($user->user_currency_id)){ $user->user_currency_id = $config->get('partner_currency',1); } if(bccomp($user->user_params->partner_click_fee,0,5) && $user->user_currency_id!=$user->user_params->partner_fee_currency){ $user->user_params->partner_click_fee = $this->_convert($user->user_params->partner_click_fee,$user->user_params->partner_fee_currency,$user->user_currency_id); } if(!empty($latest)){ $user->user_params->partner_click_fee = 0; } $click = null; $click->click_partner_id = $partner_id; $click->click_ip=$ip; $click->click_partner_price = $user->user_params->partner_click_fee; $click->click_partner_currency_id = $user->user_currency_id; $clickClass->save($click); return true; } function onBeforeOrderUpdate(&$order,&$do){ if(!empty($order->order_partner_paid)){ return true; } if(!isset($order->order_full_price)){ return true; } $orderClass = hikashop_get('class.order'); $oldOrder = $orderClass->get($order->order_id); if(!empty($oldOrder)){ if(!empty($oldOrder->order_partner_paid)){ return true; } if(floatval($oldOrder->order_full_price)==floatval($order->order_full_price)){ return true; } if(empty($order->order_partner_id)){ $order->order_partner_id = $oldOrder->order_partner_id; } return $this->onBeforeOrderCreate($order,$do); } return true; } function onBeforeOrderCreate(&$order,&$do){ $app =& JFactory::getApplication(); if(empty($order->order_partner_id)){ if ($app->isAdmin()) return true; $partner_id = hikashop_decode(JRequest::getCmd('hikashop_affiliate',0,'cookie'),'partner'); if(empty($partner_id)){ return true; } $userClass = hikashop_get('class.user'); $user = $userClass->get($partner_id); if(empty($user->user_partner_activated)){ return true; } }else{ $partner_id = $order->order_partner_id; } $userClass = hikashop_get('class.user'); $user = $userClass->get($partner_id); if(empty($user)){ return true; } $order->order_partner_id=$partner_id; $config=&hikashop_config(); if(empty($user->user_params->user_custom_fee)){ $user->user_params->partner_percent_fee = $config->get('partner_percent_fee',0); $user->user_params->partner_flat_fee = $config->get('partner_flat_fee',0); $user->user_params->partner_fee_currency = $config->get('partner_currency',1); }else{ $user->user_params->partner_percent_fee = $user->user_params->user_partner_percent_fee; $user->user_params->partner_flat_fee =$user->user_params->user_partner_flat_fee; } if(!$config->get('allow_currency_selection',0) || empty($user->user_currency_id)){ $user->user_currency_id = $config->get('partner_currency',1); } if(bccomp($user->user_params->partner_flat_fee,0,5) && $user->user_currency_id!=$user->user_params->partner_fee_currency){ $user->user_params->partner_flat_fee = $this->_convert($user->user_params->partner_flat_fee,$user->user_params->partner_fee_currency,$user->user_currency_id); } if(bccomp($user->user_params->partner_percent_fee,0,5) || bccomp($user->user_params->partner_flat_fee,0,5)){ if(bccomp($user->user_params->partner_percent_fee,0,5)){ $order_price = $order->order_full_price; if($config->get('affiliate_fee_exclude_shipping',0)){ $order_price = $order_price - $order->order_shipping_price; } $fees=$order_price*$user->user_params->partner_percent_fee/100; }else{ $fees = 0; } if($order->order_currency_id!=$user->user_currency_id){ $fees = $this->_convert($fees,$order->order_currency_id,$user->user_currency_id); } $order->order_partner_price = $fees+$user->user_params->partner_flat_fee; $order->order_partner_currency_id = $user->user_currency_id; } return true; } function _convert($amount,$src_id,$dst_id){ $currencyClass = hikashop_get('class.currency'); $config =& hikashop_config(); $setcurrencies=null; $main_currency = (int)$config->get('main_currency',1); $ids[$src_id]=$src_id; $ids[$dst_id]=$dst_id; $ids[$main_currency]=$main_currency; $currencies = $currencyClass->getCurrencies($ids,$setcurrencies); $srcCurrency = $currencies[$src_id]; $dstCurrency = $currencies[$dst_id]; $mainCurrency = $currencies[$main_currency]; if($srcCurrency->currency_id!=$mainCurrency->currency_id){ $amount=floatval($amount)/floatval($srcCurrency->currency_rate); $amount=$amount+$amount*floatval($srcCurrency->currency_percent_fee)/100.0; } if($dstCurrency->currency_id!=$mainCurrency->currency_id){ $amount=floatval($amount)*floatval($dstCurrency->currency_rate); $amount=$amount+$amount*floatval($dstCurrency->currency_percent_fee)/100.0; } return $amount; } function onUserAfterSave($user, $isnew, $success, $msg){ return $this->onAfterStoreUser($user, $isnew, $success, $msg); } function onAfterStoreUser($user, $isnew, $success, $msg){ if($success===false) return false; $app =& JFactory::getApplication(); if ($app->isAdmin()) return true; if($isnew){ $partner_id = hikashop_decode(JRequest::getCmd('hikashop_affiliate',0,'cookie'),'partner'); if(empty($partner_id)){ return true; } $userClass = hikashop_get('class.user'); $partner = $userClass->get($partner_id); if(empty($partner->user_partner_activated)){ return true; } $config=&hikashop_config(); if(empty($user->user_params->user_custom_fee)){ $partner->user_params->partner_lead_fee = $config->get('partner_lead_fee',0); $partner->user_params->partner_fee_currency = $config->get('partner_currency',1); }else{ $user->user_params->partner_lead_fee = $user->user_params->user_partner_lead_fee; } if(!$config->get('allow_currency_selection',0) || empty($partner->user_currency_id)){ $partner->user_currency_id = $config->get('partner_currency',1); } if(bccomp($partner->user_params->partner_lead_fee,0,5) && $partner->user_currency_id!=$partner->user_params->partner_fee_currency){ $partner->user_params->partner_lead_fee = $this->_convert($partner->user_params->partner_lead_fee,$partner->user_params->partner_fee_currency,$partner->user_currency_id); } $ip = hikashop_getIP(); $clickClass = hikashop_get('class.click'); $latest = $clickClass->getLatest($partner_id,$ip,$config->get('lead_min_delay',24)); if(empty($latest) && bccomp($partner->user_params->partner_lead_fee,0,5)){ $user = $userClass->get($user['id'],'cms'); $user->user_cms_id = $user['id']; $user->user_partner_id = $partner_id; $user->user_partner_price = @$partner->user_params->partner_lead_fee; $user->user_partner_currency_id = $partner->user_currency_id; $userClass->save($user); } } return true; } function onUserAccountDisplay(&$buttons){ $buttons[] = array('link'=>hikashop_completeLink('affiliate'),'level'=>1,'image'=>'category','text'=>JText::_('AFFILIATE'),'description'=>'