Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * 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);
     }
 }
Пример #5
0
 /**
  * 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;
 }
Пример #7
0
 /**
  * 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';
 }