/** * Bind the post data to the JUser object and the VM tables, then saves it * It is used to register new users * This function can also change already registered users, this is important when a registered user changes his email within the checkout. * * @author Max Milbers * @author Oscar van Eijk * @return boolean True is the save was successful, false otherwise. */ public function store(&$data) { $message = ''; vRequest::vmCheckToken('Invalid Token, while trying to save user'); if (empty($data)) { vmError('Developer notice, no data to store for user'); return false; } //To find out, if we have to register a new user, we take a look on the id of the usermodel object. //The constructor sets automatically the right id. $new = false; if (empty($this->_id) or $this->_id < 1) { $new = true; $user = new JUser(); //thealmega http://forum.tsmart.net/index.php?topic=99755.msg393758#msg393758 } else { $cUser = JFactory::getUser(); if (!vmAccess::manager('user.edit') and $cUser->id != $this->_id) { vmWarn('Insufficient permission'); return false; } $user = JFactory::getUser($this->_id); } $gid = $user->get('gid'); // Save original gid // Preformat and control user datas by plugin JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $valid = true; $dispatcher->trigger('plgVmOnBeforeUserfieldDataSave', array(&$valid, $this->_id, &$data, $user)); // $valid must be false if plugin detect an error if (!$valid) { return false; } // Before I used this "if($cart && !$new)" // This construction is necessary, because this function is used to register a new JUser, so we need all the JUser data in $data. // On the other hand this function is also used just for updating JUser data, like the email for the BT address. In this case the // name, username, password and so on is already stored in the JUser and dont need to be entered again. if (empty($data['email'])) { $email = $user->get('email'); if (!empty($email)) { $data['email'] = $email; } } else { $data['email'] = vRequest::getEmail('email', ''); } //$data['email'] = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$data['email']); //This is important, when a user changes his email address from the cart, //that means using view user layout edit_address (which is called from the cart) $user->set('email', $data['email']); if (empty($data['name'])) { $name = $user->get('name'); if (!empty($name)) { $data['name'] = $name; } } else { $data['name'] = vRequest::getWord('name', ''); } $data['name'] = str_replace(array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $data['name']); if (empty($data['username'])) { $username = $user->get('username'); if (!empty($username)) { $data['username'] = $username; } else { $data['username'] = vRequest::getWord('username', ''); } } if (empty($data['password'])) { $data['password'] = vRequest::getCmd('password', ''); if ($data['password'] != vRequest::get('password')) { vmError('Password contained invalid character combination.'); return false; } } if (empty($data['password2'])) { $data['password2'] = vRequest::getCmd('password2'); if ($data['password2'] != vRequest::get('password2')) { vmError('Password2 contained invalid character combination.'); return false; } } if (!$new and empty($data['password2'])) { unset($data['password']); unset($data['password2']); } if (!vmAccess::manager('core')) { $whiteDataToBind = array(); if (isset($data['name'])) { $whiteDataToBind['name'] = $data['name']; } if (isset($data['username'])) { $whiteDataToBind['username'] = $data['username']; } if (isset($data['email'])) { $whiteDataToBind['email'] = $data['email']; } if (isset($data['language'])) { $whiteDataToBind['language'] = $data['language']; } if (isset($data['editor'])) { $whiteDataToBind['editor'] = $data['editor']; } if (isset($data['password'])) { $whiteDataToBind['password'] = $data['password']; } if (isset($data['password2'])) { $whiteDataToBind['password2'] = $data['password2']; } unset($data['isRoot']); } else { $whiteDataToBind = $data; } // Bind Joomla userdata if (!$user->bind($whiteDataToBind)) { vmdebug('Couldnt bind data to joomla user'); //array('user'=>$user,'password'=>$data['password'],'message'=>$message,'newId'=>$newId,'success'=>false); } if ($new) { // If user registration is not allowed, show 403 not authorized. // But it is possible for admins and storeadmins to save $usersConfig = JComponentHelper::getParams('com_users'); $cUser = JFactory::getUser(); if ($usersConfig->get('allowUserRegistration') == '0' and !vmAccess::manager('user')) { tsmConfig::loadJLang('com_tsmart'); vmError(tsmText::_('com_tsmart_ACCESS_FORBIDDEN')); return; } // Initialize new usertype setting $newUsertype = $usersConfig->get('new_usertype'); if (!$newUsertype) { $newUsertype = 2; } // Set some initial user values $user->set('usertype', $newUsertype); $user->groups[] = $newUsertype; $date = JFactory::getDate(); $user->set('registerDate', $date->toSQL()); // If user activation is turned on, we need to set the activation information $useractivation = $usersConfig->get('useractivation'); $doUserActivation = false; if ($useractivation == '1' or $useractivation == '2') { $doUserActivation = true; } if ($doUserActivation) { jimport('joomla.user.helper'); $user->set('activation', vRequest::getHash(JUserHelper::genRandomPassword())); $user->set('block', '1'); //$user->set('lastvisitDate', '0000-00-00 00:00:00'); } } $option = vRequest::getCmd('option'); // If an exising superadmin gets a new group, make sure enough admins are left... if (!$new && $user->get('gid') != $gid && $gid == __SUPER_ADMIN_GID) { if ($this->getSuperAdminCount() <= 1) { vmError(tsmText::_('com_tsmart_USER_ERR_ONLYSUPERADMIN')); return false; } } if (isset($data['language'])) { $user->setParam('language', $data['language']); } // Save the JUser object if (!$user->save()) { $msg = tsmText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $user->getError()); vmError($msg, $msg); return false; } else { $data['name'] = $user->get('name'); $data['username'] = $user->get('username'); $data['email'] = $user->get('email'); $data['language'] = $user->get('language'); $data['editor'] = $user->get('editor'); } $newId = $user->get('id'); $data['tsmart_user_id'] = $newId; //We need this in that case, because data is bound to table later $this->setUserId($newId); //Save the VM user stuff if (!$this->saveUserData($data) || !self::storeAddress($data)) { vmError('com_tsmart_NOT_ABLE_TO_SAVE_USER_DATA'); // vmError(vmText::_('com_tsmart_NOT_ABLE_TO_SAVE_USERINFO_DATA')); } else { if ($new) { $user->userInfo = $data; $password = ''; if ($usersConfig->get('sendpassword', 1)) { $password = $user->password_clear; } $this->sendRegistrationEmail($user, $password, $doUserActivation); if ($doUserActivation) { vmInfo('com_tsmart_REG_COMPLETE_ACTIVATE'); } else { vmInfo('com_tsmart_REG_COMPLETE'); $user->set('activation', ''); $user->set('block', '0'); $user->set('guest', '0'); } } else { vmInfo('com_tsmart_USER_DATA_STORED'); } } //The extra check for isset vendor_name prevents storing of the vendor if there is no form (edit address cart) if ((int) $data['user_is_vendor'] == 1 and isset($data['vendor_currency'])) { vmdebug('vendor recognised ' . $data['tsmart_vendor_id']); if ($this->storeVendorData($data)) { if ($new) { if ($doUserActivation) { vmInfo('com_tsmart_REG_VENDOR_COMPLETE_ACTIVATE'); } else { vmInfo('com_tsmart_REG_VENDOR_COMPLETE'); } } else { vmInfo('com_tsmart_VENDOR_DATA_STORED'); } } } return array('user' => $user, 'password' => $data['password'], 'message' => $message, 'newId' => $newId, 'success' => true); }
function updateCartWithKlarnacheckoutAddress() { if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); $updated = false; $zip = vRequest::getWord('zip', ''); $email = vRequest::getEmail('email', ''); $first_name = vRequest::getWord('given_name', ''); $last_name = vRequest::getWord('family_name', ''); if ($zip) { $cart->BT['zip'] = $zip; $updated = true; } if ($email) { $cart->BT['email'] = $email; $updated = true; } if ($first_name) { $cart->BT['first_name'] = $first_name; $updated = true; } if ($last_name) { $cart->BT['last_name'] = $last_name; $updated = true; } if (!$updated) { return $updated; } $cart->setCartIntoSession(); return $updated; }
function renderMailLayout () { $this->setLayout ('mail_html_question'); $this->comment = vRequest::getString ('comment'); $this->user = JFactory::getUser (); if (empty($this->user->id)) { $fromMail = vRequest::getEmail ('email'); //is sanitized then $fromName = vRequest::getVar ('name', ''); //is sanitized then //$fromMail = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromMail); $fromName = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromName); $this->user->email = $fromMail; $this->user->name = $fromName; } $virtuemart_product_id = vRequest::getInt ('virtuemart_product_id', 0); $productModel = VmModel::getModel ('product'); if(empty($this->product)){ $this->product = $productModel->getProduct ($virtuemart_product_id); } $productModel->addImages($this->product); $this->subject = vmText::_ ('COM_VIRTUEMART_QUESTION_ABOUT') . $this->product->product_name; $vendorModel = VmModel::getModel ('vendor'); $this->vendor = $vendorModel->getVendor ($this->product->virtuemart_vendor_id); $this->vendor->vendor_store_name = $fromName; $vendorModel->addImages ($this->vendor); $this->vendorEmail = $vendorModel->getVendorEmail($this->vendor->virtuemart_vendor_id);; // in this particular case, overwrite the value for fix the recipient name $this->vendor->vendor_name = $this->user->get('name'); if (VmConfig::get ('order_mail_html')) { $tpl = 'mail_html_question'; } else { $tpl = 'mail_raw_question'; } $this->setLayout ($tpl); $this->isMail = true; parent::display (); }