function &singleton() { static $baskets; if (isset($_COOKIE['basketID']) && is_numeric($_COOKIE['basketID'])) { $sql = "SELECT COUNT(*) AS total\n FROM basket\n WHERE basketID=" . $_COOKIE['basketID']; $result = $this->db->getOne($sql); if (!PEAR::isError($result) && is_numeric($result) && $result > 0) { $basketID = $_COOKIE['basketID']; if (isset($baskets[$basketID]) && is_object($baskets[$basketID])) { // Do nothing - the basket already exists } else { $baskets[$basketID] =& new JxBasket($basketID); } } else { $basketID = 0; } } if ($basketID == 0) { $basketID = JxCreateId('basket', 'basketID'); $userID = $user->userID; $posted = time(); $type = 0; if ((int) $basketID > 0) { $sql = "INSERT INTO basket\n SET basketID='" . (int) $basketID . "',\n userID='" . $userID . "',\n posted='" . $posted . "',\n type='" . $type . "'"; $result = $this->db->query($sql); if (PEAR::isError($result)) { return PEAR::raiseError('Unable to create basket'); } else { JxHttp::setCookie('basketID', $basketID); } } $baskets[$basketID] =& new JxBasket($basketID); } return $baskets[$basketID]; }
/** * create * * Create a session for the given $userID. This function sets the two * needed cookies for sessions as well as updating the database. * * @author Joe Stump <*****@*****.**> * @access public * @param int $userID See users table.userID * @return void */ function create($userID) { $user =& new JxUser($userID); if ($user->userID > 0) { $sessionID = md5(uniqid(JX_SESS_KEY . $user->password)); $sql = "INSERT \n INTO users_sessions\n SET userID='" . $user->userID . "',\n sessionID='{$sessionID}',\n posted='" . time() . "'"; $result = $this->db->query($sql); if (!DB::isError($result)) { JxHttp::setCookie('jax_sessionID', $sessionID); JxHttp::setCookie('jax_userID', $user->userID); } } }