/** * Returns user country id for for discount selection * * @param oxuser $oUser oxuser object * * @return string */ public function getCountryId($oUser) { $sCountryId = null; if ($oUser) { $sCountryId = $oUser->getActiveCountry(); } return $sCountryId; }
/** * Special functionality which is performed after user logs in (or user is created without pass). * Performes additional checking if user is not BLOCKED (oxuser::InGroup("oxidblocked")) - if * yes - redirects to blocked user page ("cl=content&tpl=user_blocked.tpl"). * Stores cookie info if user confirmed in login screen. * Then loads delivery info and forces basket to recalculate * (oxsession::getBasket() + oBasket::blCalcNeeded = true). Returns * "payment" to redirect to payment screen. If problems occured loading * user - sets error code according problem, and returns "user" to redirect * to user info screen. * * @param oxuser $oUser user object * * @return string */ protected function _afterLogin($oUser) { $oSession = $this->getSession(); // generating new session id after login if ($this->getLoginStatus() === USER_LOGIN_SUCCESS) { $oSession->regenerateSessionId(); } $myConfig = $this->getConfig(); // this user is blocked, deny him if ($oUser->inGroup('oxidblocked')) { $sUrl = $myConfig->getShopHomeURL() . 'cl=content&tpl=user_blocked.tpl'; oxRegistry::getUtils()->redirect($sUrl, true, 302); } // recalc basket if ($oBasket = $oSession->getBasket()) { $oBasket->onUpdate(); } return 'payment'; }
/** * Returns user country id for for payment selection * * @param oxuser $oUser oxuser object * * @return string */ public function getCountryId($oUser) { $sCountryId = null; if ($oUser) { $sCountryId = $oUser->getActiveCountry(); } if (!$sCountryId) { $sCountryId = $this->_sHomeCountry; } return $sCountryId; }
/** * Checks if user name does not break logics: * - if user wants to UPDATE his login name, performing check if * user entered correct password * - additionally checking for user name dublicates. This is usually * needed when creating new users. * On any error exception is thrown. * * @param oxuser $oUser active user * @param string $sLogin user preferred login name * @param array $aInvAddress user information * * @return string login name */ public function checkLogin($oUser, $sLogin, $aInvAddress) { // check only for users with password during registration // if user wants to change user name - we must check if passwords are ok before changing if ($oUser->oxuser__oxpassword->value && $sLogin != $oUser->oxuser__oxusername->value) { // on this case password must be taken directly from request $sNewPass = isset($aInvAddress['oxuser__oxpassword']) && $aInvAddress['oxuser__oxpassword'] ? $aInvAddress['oxuser__oxpassword'] : oxConfig::getParameter('user_password'); if (!$sNewPass) { // 1. user forgot to enter password $oEx = oxNew('oxInputException'); $oEx->setMessage('EXCEPTION_INPUT_NOTALLFIELDS'); return $this->_addValidationError("oxuser__oxpassword", $oEx); } else { // 2. entered wrong password if (!$oUser->isSamePassword($sNewPass)) { $oEx = oxNew('oxUserException'); $oEx->setMessage('EXCEPTION_USER_PWDDONTMATCH'); return $this->_addValidationError("oxuser__oxpassword", $oEx); } } } if ($oUser->checkIfEmailExists($sLogin)) { //if exists then we do now allow to do that $oEx = oxNew('oxUserException'); $oLang = oxLang::getInstance(); $oEx->setMessage(sprintf($oLang->translateString('EXCEPTION_USER_USEREXISTS', $oLang->getTplLanguage()), $sLogin)); return $this->_addValidationError("oxuser__oxusername", $oEx); } }
/** * After order is finished this method cleans up users notice list, by * removing bought items from users notice list * * @param array $aArticleList array of basket products * @param oxuser $oUser basket user object */ protected function _updateNoticeList($aArticleList, $oUser) { // loading users notice list .. if ($oUserBasket = $oUser->getBasket('noticelist')) { // only if wishlist is enabled foreach ($aArticleList as $oContent) { $sProdId = $oContent->getProductId(); // updating users notice list $oUserBasketItem = $oUserBasket->getItem($sProdId, $oContent->getSelList(), $oContent->getPersParams()); $dNewAmount = $oUserBasketItem->oxuserbasketitems__oxamount->value - $oContent->getAmount(); if ($dNewAmount < 0) { $dNewAmount = 0; } $oUserBasket->addItemToBasket($sProdId, $dNewAmount, $oContent->getSelList(), true, $oContent->getPersParams()); } } }
/** * Creates delivery list filter SQL to load current state delivery list * * @param oxuser $oUser session user object * @param string $sCountryId user country id * @param string $sDelSet user chosen delivery set * * @return string */ protected function _getFilterSelect($oUser, $sCountryId, $sDelSet) { $oDb = oxDb::getDb(); $sTable = getViewName('oxdelivery'); $sQ = "select {$sTable}.* from ( select {$sTable}.* from {$sTable} left join oxdel2delset on oxdel2delset.oxdelid={$sTable}.oxid "; $sQ .= "where " . $this->getBaseObject()->getSqlActiveSnippet() . " and oxdel2delset.oxdelsetid = " . $oDb->quote($sDelSet) . " "; // defining initial filter parameters $sUserId = null; $aGroupIds = null; // checking for current session user which gives additional restrictions for user itself, users group and country if ($oUser) { // user ID $sUserId = $oUser->getId(); // user groups ( maybe would be better to fetch by function oxuser::getUserGroups() ? ) $aGroupIds = $oUser->getUserGroups(); } $aIds = array(); if (count($aGroupIds)) { foreach ($aGroupIds as $oGroup) { $aIds[] = $oGroup->getId(); } } $sUserTable = getViewName('oxuser'); $sGroupTable = getViewName('oxgroups'); $sCountryTable = getViewName('oxcountry'); $sCountrySql = $sCountryId ? "EXISTS(select oxobject2delivery.oxid from oxobject2delivery where oxobject2delivery.oxdeliveryid={$sTable}.OXID and oxobject2delivery.oxtype='oxcountry' and oxobject2delivery.OXOBJECTID=" . $oDb->quote($sCountryId) . ")" : '0'; $sUserSql = $sUserId ? "EXISTS(select oxobject2delivery.oxid from oxobject2delivery where oxobject2delivery.oxdeliveryid={$sTable}.OXID and oxobject2delivery.oxtype='oxuser' and oxobject2delivery.OXOBJECTID=" . $oDb->quote($sUserId) . ")" : '0'; $sGroupSql = count($aIds) ? "EXISTS(select oxobject2delivery.oxid from oxobject2delivery where oxobject2delivery.oxdeliveryid={$sTable}.OXID and oxobject2delivery.oxtype='oxgroups' and oxobject2delivery.OXOBJECTID in (" . implode(', ', oxDb::getInstance()->quoteArray($aIds)) . ") )" : '0'; $sQ .= ") as {$sTable} where (\n select\n if(EXISTS(select 1 from oxobject2delivery, {$sCountryTable} where {$sCountryTable}.oxid=oxobject2delivery.oxobjectid and oxobject2delivery.oxdeliveryid={$sTable}.OXID and oxobject2delivery.oxtype='oxcountry' LIMIT 1),\n {$sCountrySql},\n 1) &&\n if(EXISTS(select 1 from oxobject2delivery, {$sUserTable} where {$sUserTable}.oxid=oxobject2delivery.oxobjectid and oxobject2delivery.oxdeliveryid={$sTable}.OXID and oxobject2delivery.oxtype='oxuser' LIMIT 1),\n {$sUserSql},\n 1) &&\n if(EXISTS(select 1 from oxobject2delivery, {$sGroupTable} where {$sGroupTable}.oxid=oxobject2delivery.oxobjectid and oxobject2delivery.oxdeliveryid={$sTable}.OXID and oxobject2delivery.oxtype='oxgroups' LIMIT 1),\n {$sGroupSql},\n 1)\n )"; $sQ .= " order by {$sTable}.oxsort "; return $sQ; }
/** * Special functionality which is performed after user logs in (or user is created without pass). * Performes additional checking if user is not BLOCKED (oxuser::InGroup("oxidblocked")) - if * yes - redirects to blocked user page ("cl=content&tpl=user_blocked.tpl"). If user status * is OK - sets user ID to session, automatically assigns him to dynamic * group (oxuser::addDynGroup(); if this directive is set (usually * by URL)). Stores cookie info if user confirmed in login screen. * Then loads delivery info and forces basket to recalculate * (oxsession::getBasket() + oBasket::blCalcNeeded = true). Returns * "payment" to redirect to payment screen. If problems occured loading * user - sets error code according problem, and returns "user" to redirect * to user info screen. * * @param oxuser $oUser user object * * @return string */ protected function _afterLogin($oUser) { $oSession = $this->getSession(); // generating new session id after login if ($this->getLoginStatus() === USER_LOGIN_SUCCESS) { $oSession->regenerateSessionId(); } $myConfig = $this->getConfig(); // this user is blocked, deny him if ($oUser->inGroup('oxidblocked')) { oxUtils::getInstance()->redirect($myConfig->getShopHomeURL() . 'cl=content&tpl=user_blocked.tpl', true, 302); } // adding to dyn group $oUser->addDynGroup(oxSession::getVar('dgr'), $myConfig->getConfigParam('aDeniedDynGroups')); // recalc basket if ($oBasket = $oSession->getBasket()) { $oBasket->onUpdate(); } // #1678 R // @deprecated since 2012-03-14 in version 4.5.8. This parameter will not be used anymore if (!$myConfig->getConfigParam('blPerfNoBasketSaving')) { $myConfig->setGlobalParameter('blUserChanged', 1); } // @end deprecated return 'payment'; }