function fetchBasket()
 {
     $http = eZHTTPTool::instance();
     $sessionID = $http->sessionID();
     $basketList = eZPersistentObject::fetchObjectList(eZBasket::definition(), null, array("session_id" => $sessionID), null, null, true);
     $currentBasket = false;
     if (count($basketList) == 0) {
         // If we don't have a stored basket we create a temporary
         // one which can be returned.
         $collection = eZProductCollection::create();
         $currentBasket = new eZBasket(array("session_id" => $sessionID, "productcollection_id" => 0));
     } else {
         $currentBasket = $basketList[0];
     }
     if ($currentBasket === null) {
         $result = array('error' => array('error_type' => 'kernel', 'error_code' => eZError::KERNEL_NOT_FOUND));
     } else {
         $result = array('result' => $currentBasket);
     }
     return $result;
 }
 static function logoutCurrent()
 {
     $http = eZHTTPTool::instance();
     $id = false;
     $GLOBALS["eZUserGlobalInstance_{$id}"] = false;
     $contentObjectID = $http->sessionVariable('eZUserLoggedInID');
     // reset session data
     $newUserID = self::anonymousId();
     eZSession::setUserID($newUserID);
     $http->setSessionVariable('eZUserLoggedInID', $newUserID);
     // Clear current basket if necessary
     $db = eZDB::instance();
     $db->begin();
     eZBasket::cleanupCurrentBasket();
     $db->commit();
     if ($contentObjectID) {
         //set last visit to minus
         self::updateLastVisitByLogout($contentObjectID);
         //clean up sessions
         self::cleanup();
     }
     // give user new session id
     eZSession::regenerate();
     // set the property used to prevent SSO from running again
     self::$userHasLoggedOut = true;
 }
Beispiel #3
0
 static function cleanupCurrentBasket($useSetting = true)
 {
     $ini = eZINI::instance();
     $removeBasket = true;
     if ($useSetting) {
         $removeBasket = $ini->hasVariable('ShopSettings', 'ClearBasketOnLogout') ? $ini->variable('ShopSettings', 'ClearBasketOnLogout') == 'enabled' : false;
     }
     if ($removeBasket) {
         $basket = eZBasket::currentBasket();
         if (!is_object($basket)) {
             return false;
         }
         $db = eZDB::instance();
         $db->begin();
         $productCollectionID = $basket->attribute('productcollection_id');
         eZProductCollection::cleanupList(array($productCollectionID));
         $basket->remove();
         $db->commit();
     }
     return true;
 }
Beispiel #4
0
//
//   This program is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.
//
//   You should have received a copy of version 2.0 of the GNU General
//   Public License along with this program; if not, write to the Free
//   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
//   MA 02110-1301, USA.
//
//
// ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
//
$http = eZHTTPTool::instance();
$basket = eZBasket::currentBasket();
$module = $Params['Module'];
$quantity = (int) $module->NamedParameters["Quantity"];
if (!is_numeric($quantity) or $quantity <= 0) {
    $quantity = 1;
}
// Verify the ObjectID input
if (!is_numeric($ObjectID)) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
// Check if the object exists on disc
if (!eZContentObject::exists($ObjectID)) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
// Check if the user can read the object
$object = eZContentObject::fetch($ObjectID);
{
    $cli->output( "Removing all recent items and bookmarks for browse page" );
    eZContentBrowseRecent::cleanup();
    eZContentBrowseBookmark::cleanup();
}

if ( $clean['tipafriend'] )
{
    $cli->output( "Removing all counters for tip-a-friend" );
    eZTipafriendCounter::cleanup();
}

if ( $clean['shop'] )
{
    $cli->output( "Removing all baskets" );
    eZBasket::cleanup();
    $cli->output( "Removing all wishlists" );
    eZWishList::cleanup();
    $cli->output( "Removing all orders" );
    eZOrder::cleanup();
    $productCount = eZPersistentObject::count( eZProductCollection::definition() );
    if ( $productCount > 0 )
    {
        $cli->warning( "$productCount product collections still exists, must be a leak" );
    }
}

if ( $clean['forgotpassword'] )
{
    $cli->output( "Removing all forgot password requests" );
    eZForgotPassword::cleanup();
Beispiel #6
0
function eZSessionBasketGarbageCollector($db, $time)
{
    eZBasket::cleanupExpired($time);
}
 public static function setCookie()
 {
     $ini = eZINI::instance('scachecookie.ini');
     $siteIni = eZINI::instance('site.ini');
     $hasUserData = false;
     $displayedData = $ini->variable('CacheCookieSettings', 'DisplayedData');
     $cookieValue = $ini->variable('CacheCookieSettings', 'CookieValue') || 'true';
     if ($cookieValue === true) {
         $cookieValue = 'true';
     }
     $useDetailedValue = $ini->variable('CacheCookieSettings', 'DetailedCookieValue') == 'enabled';
     $detailedValue = '';
     if (in_array('basket', $displayedData)) {
         $http = eZHTTPTool::instance();
         $sessionID = $http->sessionID();
         $basket = eZBasket::fetch($sessionID);
         if ($basket) {
             if (!$basket->isEmpty()) {
                 $hasUserData = true;
                 if ($useDetailedValue) {
                     $detailedValue .= ',basket';
                 }
             }
         }
     }
     if ((!$hasUserData || $useDetailedValue) && in_array('wishlist', $displayedData)) {
         $user = eZUser::currentUser();
         $userID = $user->attribute('contentobject_id');
         $WishListArray = eZPersistentObject::fetchObjectList(eZWishList::definition(), null, array("user_id" => $userID), null, null, true);
         if (count($WishListArray) > 0) {
             if ($WishListArray[0]->itemCount() > 0) {
                 $hasUserData = true;
                 if ($useDetailedValue) {
                     $detailedValue .= ',wishlist';
                 }
             }
         }
     }
     if (!$hasUserData || $useDetailedValue) {
         $prefs = eZPreferences::values();
         $hasPrefs = false;
         foreach ($prefs as $key => $val) {
             if ($key != '') {
                 if (in_array('preferences', $displayedData) || in_array($key, $displayedData)) {
                     if ($val != '') {
                         $hasUserData = true;
                         if ($useDetailedValue) {
                             if (in_array('preferences', $displayedData) && !$hasPrefs) {
                                 $detailedValue .= ',preferences';
                             }
                             if (in_array($key, $displayedData)) {
                                 $detailedValue .= ",{$key}:{$val}";
                             }
                         }
                         $hasPrefs = true;
                     }
                 }
             }
         }
     }
     $value = $hasUserData ? $cookieValue . $detailedValue : false;
     $wwwDir = eZSys::wwwDir();
     $cookiePath = $wwwDir != '' ? $wwwDir : '/';
     setcookie($ini->variable('CacheCookieSettings', 'CookieName'), $value, time() + (int) $siteIni->variable('Session', 'SessionTimeout'), $cookiePath);
 }
 protected function requestInit()
 {
     if ($this->isInitialized) {
         return;
     }
     eZExecution::setCleanExit(false);
     $scriptStartTime = microtime(true);
     $GLOBALS['eZRedirection'] = false;
     $this->access = eZSiteAccess::current();
     eZDebug::setScriptStart($scriptStartTime);
     eZDebug::addTimingPoint("Script start");
     $this->uri = eZURI::instance(eZSys::requestURI());
     $GLOBALS['eZRequestedURI'] = $this->uri;
     // Be able to do general events early in process
     ezpEvent::getInstance()->notify('request/preinput', array($this->uri));
     // Initialize module loading
     $this->siteBasics['module-repositories'] = eZModule::activeModuleRepositories();
     eZModule::setGlobalPathList($this->siteBasics['module-repositories']);
     // make sure we get a new $ini instance now that it has been reset
     $ini = eZINI::instance();
     // start: eZCheckValidity
     // pre check, setup wizard related so needs to be before session/db init
     // TODO: Move validity check in the constructor? Setup is not meant to be launched at each (sub)request is it?
     if ($ini->variable('SiteAccessSettings', 'CheckValidity') === 'true') {
         $this->check = array('module' => 'setup', 'function' => 'init');
         // Turn off some features that won't bee needed yet
         $this->siteBasics['policy-check-omit-list'][] = 'setup';
         $this->siteBasics['show-page-layout'] = $ini->variable('SetupSettings', 'PageLayout');
         $this->siteBasics['validity-check-required'] = true;
         $this->siteBasics['session-required'] = $this->siteBasics['user-object-required'] = false;
         $this->siteBasics['db-required'] = $this->siteBasics['no-cache-adviced'] = $this->siteBasics['url-translator-allowed'] = false;
         $this->siteBasics['site-design-override'] = $ini->variable('SetupSettings', 'OverrideSiteDesign');
         $this->access = eZSiteAccess::change(array('name' => 'setup', 'type' => eZSiteAccess::TYPE_URI));
         eZTranslatorManager::enableDynamicTranslations();
     }
     // stop: eZCheckValidity
     if ($this->siteBasics['session-required']) {
         // Check if this should be run in a cronjob
         if ($ini->variable('Session', 'BasketCleanup') !== 'cronjob') {
             eZSession::addCallback('destroy_pre', function (eZDBInterface $db, $key, $escapedKey) {
                 $basket = eZBasket::fetch($key);
                 if ($basket instanceof eZBasket) {
                     $basket->remove();
                 }
             });
             eZSession::addCallback('gc_pre', function (eZDBInterface $db, $time) {
                 eZBasket::cleanupExpired($time);
             });
             eZSession::addCallback('cleanup_pre', function (eZDBInterface $db) {
                 eZBasket::cleanup();
             });
         }
         // addCallBack to update session id for shop basket on session regenerate
         eZSession::addCallback('regenerate_post', function (eZDBInterface $db, $escNewKey, $escOldKey) {
             $db->query("UPDATE ezbasket SET session_id='{$escNewKey}' WHERE session_id='{$escOldKey}'");
         });
         // TODO: Session starting should be made only once in the constructor
         $this->sessionInit();
     }
     // if $this->siteBasics['db-required'], open a db connection and check that db is connected
     if ($this->siteBasics['db-required'] && !eZDB::instance()->isConnected()) {
         $this->warningList[] = array('error' => array('type' => 'kernel', 'number' => eZError::KERNEL_NO_DB_CONNECTION), 'text' => 'No database connection could be made, the system might not behave properly.');
     }
     // eZCheckUser: pre check, RequireUserLogin & FORCE_LOGIN related so needs to be after session init
     if (!isset($this->check)) {
         $this->check = eZUserLoginHandler::preCheck($this->siteBasics, $this->uri);
     }
     ezpEvent::getInstance()->notify('request/input', array($this->uri));
     // Initialize with locale settings
     // TODO: Move to constructor? Is it relevant to init the locale/charset for each (sub)requests?
     $this->languageCode = eZLocale::instance()->httpLocaleCode();
     $phpLocale = trim($ini->variable('RegionalSettings', 'SystemLocale'));
     if ($phpLocale != '') {
         setlocale(LC_ALL, explode(',', $phpLocale));
     }
     $this->httpCharset = eZTextCodec::httpCharset();
     // TODO: are these parameters supposed to vary across potential sub-requests?
     $this->site = array('title' => $ini->variable('SiteSettings', 'SiteName'), 'design' => $ini->variable('DesignSettings', 'SiteDesign'), 'http_equiv' => array('Content-Type' => 'text/html; charset=' . $this->httpCharset, 'Content-language' => $this->languageCode));
     // Read role settings
     $this->siteBasics['policy-check-omit-list'] = array_merge($this->siteBasics['policy-check-omit-list'], $ini->variable('RoleSettings', 'PolicyOmitList'));
     $this->isInitialized = true;
 }
 function activateOrder($orderID)
 {
     $order = eZOrder::fetch($orderID);
     $db = eZDB::instance();
     $db->begin();
     $order->activate();
     $basket = eZBasket::currentBasket(true, $orderID);
     $basket->remove();
     $db->commit();
     eZHTTPTool::instance()->setSessionVariable("UserOrderID", $orderID);
     return array('status' => eZModuleOperationInfo::STATUS_CONTINUE);
 }
Beispiel #10
0
 function eZSessionBasketEmpty($db)
 {
     eZBasket::cleanup();
 }
    static function logoutCurrent()
    {
        $http = eZHTTPTool::instance();
        $id = false;
        $GLOBALS["eZUserGlobalInstance_$id"] = false;
        $contentObjectID = $http->sessionVariable( 'eZUserLoggedInID' );

        // reset session data
        $newUserID = self::anonymousId();
        eZSession::setUserID( $newUserID );
        $http->setSessionVariable( 'eZUserLoggedInID', $newUserID );

        // Clear current basket if necessary
        $db = eZDB::instance();
        $db->begin();
        if ( eZINI::instance( 'site.ini' )->variable( 'Session', 'UseBasket' ) != 'false' )
        {
            eZBasket::cleanupCurrentBasket();
        }
        $db->commit();

        if ( $contentObjectID )
            self::cleanup();

        // give user new session id
        eZSession::regenerate();

        // set the property used to prevent SSO from running again
        self::$userHasLoggedOut = true;
    }