Current File : /home/pacjaorg/.trash/components/com_hikashop/controllers/user.php |
<?php
/**
* @package HikaShop for Joomla!
* @version 4.4.0
* @author hikashop.com
* @copyright (C) 2010-2020 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class userController extends hikashopController {
var $delete = array();
var $modify = array();
var $modify_views = array();
var $add = array();
public function __construct($config = array(), $skip = false) {
parent::__construct($config,$skip);
if(!$skip){
$this->registerDefaultTask('cpanel');
}
$this->display = array_merge($this->display, array(
'cpanel',
'form',
'register',
'downloads',
'activate',
'guest_register',
'guest_form'
));
}
public function register() {
if(empty($_REQUEST['data']))
return $this->form();
$userClass = hikashop_get('class.user');
$status = $userClass->registerLegacy($this, 'user');
if(!empty($status)) {
$app = JFactory::getApplication();
$app->enqueueMessage(JText::sprintf('THANK_YOU_FOR_REGISTERING', HIKASHOP_LIVE));
hikaInput::get()->set('layout', 'after_register');
return parent::display();
}
$this->form();
}
public function guest_register() {
$order = $this->_checkGuestOrder();
if(!$order)
return false;
if(empty($_REQUEST['data']) || !is_array($_REQUEST['data']) || !isset($_REQUEST['data']['register']))
return $this->guest_form();
$data = new stdClass();
$requestData = hikaInput::get()->getVar('data');
foreach($requestData['register'] as $k => $v){
$data->$k = $v;
}
$userClass = hikashop_get('class.user');
$status = $userClass->registerGuest($order->order_user_id, $data);
if(!empty($status['status']) && $status['status']) {
$app = JFactory::getApplication();
hikashop_get('helper.checkout');
$checkoutHelper = hikashopCheckoutHelper::get();
$cart = $checkoutHelper->getCart();
$jsession = JFactory::getSession();
$old_session = $jsession->getId();
$options = array(
'return' => true,
'remember' => false
);
$credentials = array(
'username' => (string)$data->username,
'password' => (string)$data->password
);
$old_messages = $app->getMessageQueue();
$result = $app->login($credentials, $options);
$user = JFactory::getUser();
if($result !== true || $user->guest) {
$new_messages = $app->getMessageQueue();
if(count($old_messages) == count($new_messages)) {
$app->enqueueMessage(JText::_('LOGIN_NOT_VALID'), 'error');
}
return false;
}
$jsession = JFactory::getSession();
$new_session = $jsession->getId();
$user_id = $userClass->getID($user->get('id'));
if(!empty($user_id)) {
$app->setUserState(HIKASHOP_COMPONENT.'.user_id', $user_id);
if(!empty($cart)) {
$cartClass = hikashop_get('class.cart');
if($cartClass->sessionToUser($cart->cart_id, $old_session, $user_id))
$checkoutHelper->getCart(true);
}
}
$app->enqueueMessage(JText::sprintf('THANK_YOU_FOR_REGISTERING', HIKASHOP_LIVE));
hikaInput::get()->set('layout', 'after_register');
return parent::display();
}
foreach($status['messages'] as $message){
if(empty($message))
continue;
$app = JFactory::getApplication();
$app->enqueueMessage($message[0], $message[1]);
}
return $this->guest_form();
}
public function guest_form() {
if(!$this->_checkGuestOrder())
return false;
hikaInput::get()->set('layout', 'guest_form');
return $this->display();
}
protected function _checkGuestOrder(){
$app = JFactory::getApplication();
$config = hikashop_config();
if(!$config->get('register_after_guest', 1)){
$app->enqueueMessage(JText::_('REGISTRATION_AFTER_GUEST_CHECKOUT_NOT_ALLOWED'));
return false;
}
jimport('joomla.application.component.helper');
$params = JComponentHelper::getParams('com_users');
if((int)$params->get('allowUserRegistration') == 0) {
$app->enqueueMessage(JText::_('REGISTRATION_AFTER_GUEST_CHECKOUT_NOT_ALLOWED'));
return false;
}
$user = JFactory::getUser();
if(!$user->guest) {
$app->redirect(hikashop_completeLink('user&task=cpanel', false, true));
return false;
}
$token = hikaInput::get()->getVar('order_token');
$order_id = hikashop_getCID('order_id');
if(empty($order_id)){
$app->enqueueMessage(JText::_('INVALID_REQUEST'));
return false;
}
$orderClass = hikashop_get('class.order');
$order = $orderClass->get($order_id);
if(empty($order)){
$app->enqueueMessage(JText::sprintf('ORDER_X_NOT_FOUND', $order_id));
return false;
}
$userClass = hikashop_get('class.user');
$user = $userClass->get($order->order_user_id);
if(empty($user)){
$app->enqueueMessage(JText::_('INVALID_REQUEST'));
return false;
}
if(empty($user->user_cms_id) || (int)$user->user_cms_id == 0){
if(empty($order->order_token) || $token != $order->order_token){
$app->enqueueMessage(JText::_('INVALID_REQUEST'));
return false;
}
}else{
$app->enqueueMessage(JText::_('USER_ACCOUNT_ALREADY_CREATED'));
return false;
}
return $order;
}
public function cpanel() {
if(!$this->_checkLogin())
return true;
hikaInput::get()->set('layout', 'cpanel');
return parent::display();
}
function form() {
$user = JFactory::getUser();
if($user->guest) {
hikaInput::get()->set('layout', 'form');
return $this->display();
}
$app = JFactory::getApplication();
$app->redirect(hikashop_completeLink('user&task=cpanel', false, true));
return false;
}
public function downloads() {
if(!$this->_checkLogin())
return true;
hikaInput::get()->set('layout', 'downloads');
return parent::display();
}
protected function _checkLogin() {
$user = JFactory::getUser();
if(!$user->guest)
return true;
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('PLEASE_LOGIN_FIRST'));
global $Itemid;
$url = '';
if(!empty($Itemid))
$url = '&Itemid='.$Itemid;
$url = 'index.php?option=com_users&view=login'.$url;
$app->redirect(JRoute::_($url.'&return='.urlencode(base64_encode(hikashop_currentUrl('', false))), false));
return false;
}
public function activate() {
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$usersConfig = JComponentHelper::getParams('com_users');
$userActivation = (int)$usersConfig->get('useractivation');
$allowUserRegistration = (int)$usersConfig->get('allowUserRegistration');
if($user->get('id')) {
$app->redirect(hikashop_completeLink('checkout',false,true));
}
if($allowUserRegistration == 0 || $userActivation == 0) {
$app->enqueueMessage(JText::_('Access Forbidden'), 'error');
return false;
}
$lang = JFactory::getLanguage();
$lang->load('com_user',JPATH_SITE);
jimport('joomla.user.helper');
$activation = hikashop_getEscaped(hikaInput::get()->getVar('activation', '', '', 'alnum'));
if(empty($activation)) {
$app->enqueueMessage(JText::_('HIKA_REG_ACTIVATE_NOT_FOUND'));
return false;
}
if(HIKASHOP_J30) {
JModelLegacy::addIncludePath(HIKASHOP_ROOT . DS . 'components' . DS . 'com_users' . DS . 'models');
} else {
JModel::addIncludePath(HIKASHOP_ROOT . DS . 'components' . DS . 'com_users' . DS . 'models');
}
$model = $this->getModel('Registration', 'UsersModel',array(),true);
$language = JFactory::getLanguage();
$language->load('com_users', JPATH_SITE, $language->getTag(), true);
if($model)
$result = $model->activate($activation);
if(!$result) {
$app->enqueueMessage(JText::_('HIKA_REG_ACTIVATE_NOT_FOUND'));
return false;
}
$app->enqueueMessage(JText::_('HIKA_REG_ACTIVATE_COMPLETE'));
$id = hikaInput::get()->getInt('id', 0);
$userClass = hikashop_get('class.user');
$user = $userClass->get($id);
if($id && file_exists(JPATH_ROOT.DS.'components'.DS.'com_comprofiler'.DS.'comprofiler.php') && $userActivation < 2) {
$userClass->addAndConfirmUserInCB($user);
}
$infos = hikaInput::get()->getVar('infos', '');
global $Itemid;
$url_itemid = '';
if(!empty($Itemid))
$url_itemid = '&Itemid='.$Itemid;
if(!empty($infos) && function_exists('json_decode')) {
$infos = json_decode(base64_decode($infos), true);
if(empty($infos['pass']) && !empty($infos['passwd']))
$infos['pass'] = $infos['passwd'];
JPluginHelper::importPlugin('user');
if($userActivation < 2 && !empty($infos['pass']) && !empty($infos['username']) && $userClass->login($infos['username'], $infos['pass'])) {
$page = hikaInput::get()->getString('page', 'checkout');
if($page == 'checkout') {
$app->redirect(hikashop_completeLink('checkout'.$url_itemid, false, true));
} else {
hikaInput::get()->set('layout', 'activate');
return parent::display();
}
} elseif($userActivation >= 2) {
$app->enqueueMessage(JText::_('HIKA_ADMIN_CONFIRM_ACTIVATION'));
}
}
$url = 'index.php?option=com_users&view=login'.$url_itemid;
$app->redirect(JRoute::_($url, false));
}
}