public static function getUserFields($address_type = 'BT', &$cart = null) { require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php'; $umodel = OPCmini::getModel('user'); //new VirtuemartModelUser(); $virtuemart_userinfo_id = 0; $currentUser = JFactory::getUser(); $uid = $currentUser->get('id'); $new = false; if ($uid != 0) { $userDetails = $umodel->getUser(); $virtuemart_userinfo_id = $umodel->getBTuserinfo_id(); } else { $virtuemart_userinfo_id = 0; } $layoutName = 'edit'; $task = JRequest::getVar('task'); $userFields = null; $view = JRequest::getVar('view', ''); if ((strpos($task, 'cart') || strpos($task, 'checkout') || $view == 'cart') && empty($virtuemart_userinfo_id)) { //New Address is filled here with the data of the cart (we are in the cart) if (empty($cart)) { if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); } $fieldtype = $address_type . 'address'; if (!empty($cart->{$address_type})) { if (is_array($cart->{$address_type})) { if (count($cart->{$address_type}) > 2) { $new = false; } } } $saved = OPCloader::copyAddress($cart->{$address_type}); require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'userfields.php'; OPCUserFields::populateCart($cart, $address_type, true); /* if (method_exists($cart, 'prepareAddressDataInCart')) $cart->prepareAddressDataInCart($address_type, $new); if (method_exists($cart, 'prepareAddressFieldsInCart')) $cart->prepareAddressFieldsInCart(); */ if (!empty($cart->{$address_type})) { OPCloader::restoreDataInCart($cart->{$address_type}, $saved); } $userFields = $cart->{$fieldtype}; $task = JRequest::getWord('task', ''); } else { $userFields = $umodel->getUserInfoInUserFields($layoutName, $address_type, $virtuemart_userinfo_id); $userFields = $userFields[$virtuemart_userinfo_id]; $task = 'editaddressST'; } return $userFields; }
public static function getRegistrationHhtml(&$obj, &$OPCloader) { // if (!empty($no_login_in_template)) return ""; include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php'; if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } if (!empty($obj->cart)) { $cart =& $obj->cart; } else { $cart = VirtueMartCart::getCart(); } $type = 'BT'; // for unlogged $virtuemart_userinfo_id = 0; $new = 1; $fieldtype = $type . 'address'; /* if (method_exists($cart, 'prepareAddressDataInCart')) $cart->prepareAddressDataInCart($type, $new); */ require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'userfields.php'; OPCUserFields::populateCart($cart, $type, true); /* if (method_exists($cart, 'prepareAddressFieldsInCart')) $cart->prepareAddressFieldsInCart(); */ OPCloader::setRegType(); if (!class_exists('VirtuemartModelUserfields')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'userfields.php'; } $corefields = VirtueMartModelUserfields::getCoreFields(); $userFields = $cart->{$fieldtype}; require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php'; $layout = 'default'; foreach ($userFields['fields'] as $key => $uf) { if (!in_array($key, $corefields) || $key == 'agreed') { unset($userFields['fields'][$key]); continue; } if (!empty($opc_email_in_bt) || $OPCloader->isNoLogin() || $OPCloader->isNoLogin()) { if ($userFields['fields'][$key]['name'] == 'email') { unset($userFields['fields'][$key]); continue; } } if ($key == 'email') { $user = JFactory::getUser(); $uid = $user->get('id'); // user is logged, but does not have a VM account if (!OPCloader::logged($cart) && !empty($uid)) { // the user is logged in only in joomla, but does not have an account with virtuemart $userFields['fields'][$key]['formcode'] = str_replace('/>', ' readonly="readonly" />', $userFields['fields'][$key]['formcode']); } } } require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'userfields.php'; OPCUserFields::getUserFields($userFields, $OPCloader, $cart); // lets move email to the top $copy = array(); // we will reorder the fields, so the email is first when used as username $u = OPCLang::_('COM_VIRTUEMART_REGISTER_UNAME'); //$e = OPCLang::_('COM_VIRTUEMART_USER_FORM_EMAIL'); // disable when used for logged in if (!empty($userFields['fields'])) { /* if (empty($opc_email_in_bt) && (!empty($double_email))) { // email is in BT, let's check for double mail $email2 = $userFields['fields']['email']; $email2['name'] = 'email2'; $title = OPCLang::_('COM_ONEPAGE_EMAIL2'); if ($title != 'COM_ONEPAGE_EMAIL2') $email2['title'] = $title; $email2['formcode'] = str_replace('"email', '"email2', $email2['formcode']); $email2['formcode'] = str_replace('id=', ' onblur="javascript: doublemail_checkMail();" id=', $email2['formcode']); $h = '<span style="display: none; position: relative; color: red; font-size: 10px; background: none; border: none; padding: 0; margin: 0;" id="email2_info" class="email2_class">'; $emailerr = OPCLang::_('COM_ONEPAGE_EMAIL_DONT_MATCH'); if ($emailerr != 'COM_ONEPAGE_EMAIL_DONT_MATCH') $h .= $emailerr; else $h .= "Emails don't match!"; $h .= '</span>'; $email2['formcode'] .= $h; } */ /* if (!empty($opc_check_username)) if ((!OPCloader::logged($cart)) && (empty($uid))) if (!empty($userFields['fields']['username'])) { $un = $userFields['fields']['username']['formcode']; $un = str_replace('id=', ' onblur="javascript: Onepage.username_check(this);" id=', $un); $un .= '<span class="username_already_exist" style="display: none; position: relative; color: red; font-size: 10px; background: none; border: none; padding: 0; margin: 0;" id="username_already_exists">'; $un .= OPCLang::sprintf('COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME', $u); $un .= '</span>'; $userFields['fields']['username']['formcode'] = $un; } */ /* if (!empty($opc_check_email)) if ((!OPCloader::logged($cart)) && (empty($uid))) if (!empty($userFields['fields']['email'])) { $un = $userFields['fields']['email']['formcode']; $un = str_replace('id=', ' onblur="javascript: Onepage.email_check(this);" id=', $un); $un .= '<span class="email_already_exist" style="display: none; position: relative; color: red; font-size: 10px; background: none; border: none; padding: 0; margin: 0;" id="email_already_exists">'; $un .= OPCLang::sprintf('COM_ONEPAGE_EMAIL_ALREADY_EXISTS', OPCLang::_('COM_VIRTUEMART_USER_FORM_EMAIL')); $un .= '</span>'; $userFields['fields']['email']['formcode'] = $un; } */ } /* $OPCloader->reorderFields($userFields); */ if (count($userFields['fields']) === 0) { // no fields found return ''; } //if (empty($opc_email_in_bt) && (!empty($double_email))) //$OPCloader->insertAfter($userFields['fields'], 'email', $email2, 'email2'); $vars = array('rowFields' => $userFields, 'cart' => $obj, 'is_registration' => true); $html = $OPCloader->fetch($OPCloader, 'list_user_fields.tpl', $vars); $html = str_replace("'password'", "'opc_password'", $html); $html = str_replace("password2", "opc_password2", $html); if (strpos($html, 'email_field') !== false) { $html .= '<input type="hidden" name="email_in_registration" value="1" id="email_in_registration" />'; } else { $html .= '<input type="hidden" name="email_in_registration" value="0" id="email_in_registration" />'; } return $html; }
public static function getUserInfoBT(&$ref, &$OPCloader) { include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php'; /* if (!class_exists('VirtuemartModelUser')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'); */ require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php'; $umodel = OPCmini::getModel('user'); //new VirtuemartModelUser(); $uid = JFactory::getUser()->id; $userDetails = $umodel->getUser(); $virtuemart_userinfo_id = $umodel->getBTuserinfo_id(); /* if (!class_exists('VirtueMartModelState')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'state.php'); if (!class_exists('VirtueMartModelCountry')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'country.php'); */ require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php'; $countryModel = OPCmini::getModel('country'); //new VirtueMartModelCountry(); $stateModel = OPCmini::getModel('state'); //new VirtueMartModelState(); $userFields = $umodel->getUserInfoInUserFields('edit', 'BT', $virtuemart_userinfo_id); $userFieldsModel = OPCmini::getModel('userfields'); /* opc 2.0.115+ */ // causes compatiblity issues in old vm versions $_userFields = $userFieldsModel->getUserFields('account', array('captcha' => true, 'delimiters' => true), array('delimiter_userinfo', 'user_is_vendor', 'username', 'password', 'password2', 'agreed', 'address_type')); /* $first = reset($userDetails->userInfo); $userfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$first ); */ // /* end opc 2.0.115+ */ $_u = array(); foreach ($_userFields as $k => $v) { if (isset($v->name)) { $_u[$v->name] = $v; } } // will set the BT address: $ref->cart->BT = null; if (method_exists($ref->cart, 'setPreferred')) { $ref->cart->setPreferred(); } $db = JFactory::getDBO(); $q = "select * from #__virtuemart_userinfos as uu, #__users as ju where uu.virtuemart_user_id = '" . $uid . "' and ju.id = uu.virtuemart_user_id and uu.address_type = 'BT' limit 0,1 "; $db->setQuery($q); $fields = $db->loadAssoc(); // echo $db->getErrorMsg(); if (!empty($virtuemart_userinfo_id) && !empty($userFields[$virtuemart_userinfo_id])) { if (method_exists($umodel, 'getCurrentUser')) { $user = $umodel->getCurrentUser(); foreach ($user->userInfo as $address) { if ($address->address_type == 'BT') { $ref->cart->BT = (array) $address; continue; } } } } //$ref->cart->BTaddress = $userFields[$virtuemart_userinfo_id]['fields']; // ok, the user is logged, in but his data might not be in $ref->cart->BT[$BTaddress[$k]['name']] // updated on vm2.0.26D /* //$ref->cart->prepareAddressDataInCart('BTaddress', 0); if (method_exists($ref->cart, 'prepareAddressDataInCart')) $ref->cart->prepareAddressDataInCart('BT', 0); if (method_exists($ref->cart, 'prepareAddressFieldsInCart')) $ref->cart->prepareAddressFieldsInCart(); */ require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'userfields.php'; OPCUserFields::populateCart($ref->cart, 'BT', true); if (isset($ref->cart->BTaddress)) { $BTaddress = $ref->cart->BTaddress['fields']; } if (empty($BTaddress)) { $userFieldsBT = $userFieldsModel->getUserFieldsFor('cart', 'BT'); $BTaddress = $userFieldsModel->getUserFieldsFilled($userFieldsBT, $ref->cart->BT, ''); } if (!empty($BTaddress['fields'])) { $BTaddress = $BTaddress['fields']; } // opc 2.0.115: // $BTaddress = $userfields['fields']; // end $useSSL = VmConfig::get('useSSL', 0); $edit_link = JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=BT&virtuemart_userinfo_id=' . $virtuemart_userinfo_id . '&cid[]=' . $uid, true, $useSSL); $ghtml = array(); $OPCloader->getNamedFields($BTaddress, $fields, $_u); foreach ($BTaddress as $k => $val) { // let update the value per type if (isset($fields[$val['name']])) { $BTaddress[$k]['value'] = $fields[$val['name']]; } //trim($BTaddress[$k]['value']); //if (empty($BTaddress[$k]['value']) && (!empty($ref->cart->BT)) && (!empty($ref->cart->BT[$BTaddress[$k]['name']]))) $BTaddress[$k]['value'] = $ref->cart->BT[$BTaddress[$k]['name']]; if ($val['name'] == 'agreed') { unset($BTaddress[$k]); } if ($val['name'] == 'username') { unset($BTaddress[$k]); } if ($val['name'] == 'password') { unset($BTaddress[$k]); } if (empty($custom_rendering_fields)) { $custom_rendering_fields = array(); } if (in_array($val['name'], $custom_rendering_fields)) { unset($BTaddress[$k]); continue; } $gf = array('city', 'virtuemart_state_id', 'virtuemart_country_id'); if (in_array($val['name'], $gf)) { $a = array(); if ($val['name'] == 'city') { $a['name'] = 'city_field'; $a['value'] = $fields[$val['name']]; } else { if ($val['name'] == 'virtuemart_state_id') { if (!empty($fields[$val['name']])) { $a['name'] = 'virtuemart_state_id'; //$a['value'] = $fields[$val['name']]; $sid = (int) $fields[$val['name']]; $q = "select state_name from #__virtuemart_states where virtuemart_state_id = '" . $sid . "' limit 0,1"; $db->setQuery($q); $state_name = $db->loadResult(); $a['value'] = OPCmini::slash($state_name); } else { $a['name'] = 'virtuemart_state_id'; $a['value'] = ""; } // we will override the generated html in order to provide better autocomplete functions } } /* else if (false) if ($val['name'] == 'virtuemart_country_id') { if (!empty($fields[$val['name']])) { $a['name'] = 'virtuemart_country_id'; //$a['value'] = $fields[$val['name']]; $cid = (int)$fields[$val['name']];; $q = "select country_name from #__virtuemart_countries where virtuemart_country_id = '".$cid."' limit 0,1"; $db->setQuery($q); $c_name = $db->loadResult(); $a['value'] = OPCmini::slash($c_name, false); } else { $a['name'] = 'virtuemart_country_id'; $a['value'] = ""; } } */ if (!empty($a)) { $ghtml[] = $a; } } } //check missing new fields $hasmissing = $OPCloader->hasMissingFields($BTaddress); $htmlsingle_all = $OPCloader->getBTfields($ref, true, false); $htmlsingle = '<div '; if (empty($hasmissing)) { $htmlsingle .= ' style="display: none;" '; } $htmlsingle .= ' id="opc_stedit_' . $virtuemart_userinfo_id . '">' . $htmlsingle_all . '</div>'; $BTaddress = $OPCloader->setCountryAndState($BTaddress); $edit_link = '#" onclick="return Onepage.op_showEditST(' . $virtuemart_userinfo_id . ')'; $google_html = ''; if (!empty($ghtml)) { foreach ($ghtml as $ii) { $google_html .= '<input type="hidden" name="google_' . $ii['name'] . '" id="google_' . $ii['name'] . '" value="' . $ii['value'] . '" />'; } } $OPCloader->txtToVal($BTaddress); $html = $OPCloader->fetch($OPCloader, 'customer_info.tpl', array('BTaddress' => $BTaddress, 'virtuemart_userinfo_id' => $virtuemart_userinfo_id, 'edit_link' => $edit_link)); if (empty($op_disable_shipto)) { $html .= '<input type="hidden" name="default_ship_to_info_id" value="' . $virtuemart_userinfo_id . '" checked="checked" />'; } $html .= '<input type="hidden" id="bt_virtuemart_userinfo_id" name="bt_virtuemart_userinfo_id" value="' . $virtuemart_userinfo_id . '" />'; $html2 = $html . $google_html; $html = '<div '; if (!empty($hasmissing)) { $html .= ' style="display: none;" '; } $html .= ' id="opc_st_' . $virtuemart_userinfo_id . '">' . $html2 . '</div>' . $htmlsingle . '<input type="hidden" id="opc_st_changed_' . $virtuemart_userinfo_id . '" name="opc_st_changed_' . $virtuemart_userinfo_id . '" value="'; if (!empty($hasmissing)) { $html .= '1'; } else { $html .= '0'; } $html .= '" />'; $html = str_replace('password2', 'opc_password2', $html); return $html; }