17#if __DCL_HAVE_THIS_FILE__
30 ListedStringToStringArrayMap::Iterator it = ctx.__queryMap.find(
COMMAND_STR);
31 if ((it != ctx.__queryMap.end()) && (!(*it).value.isEmpty())) {
44 StringBuilder str = ctx.remoteAddr();
45 str += String::valueOf(ctx.remotePort());
46 str += String::valueOf(time(
NULL));
58 ctx.addHeader(cookie);
62 "INSERT INTO ES_SESSION(SESSION_ID, LAST_USE) "
63 " VALUES(:SESSION_ID, CURRENT_TIMESTAMP)"
81 " SET LAST_USE = CURRENT_TIMESTAMP "
92 "INSERT INTO ES_SESSION(SESSION_ID, USER_ID, LAST_USE) "
93 " VALUES(:SESSION_ID, :USER_ID, CURRENT_TIMESTAMP)"
98 q.
params()[1].setValue(nUserID);
104 "SELECT S.USER_ID, U.GROUP_ID, U.USER_NAME "
105 " FROM ES_SESSION S "
106 " INNER JOIN ES_USER U ON (S.USER_ID = U.USER_ID) "
123 String strPassword = L
"";
125 ListedStringToStringArrayMap::Iterator it = params.find(L
"login");
126 if ((it != params.end()) && (!(*it).value.isEmpty()))
127 strLogin = (*it).value[0];
129 it = params.find(L
"password");
130 if ((it != params.end()) && (!(*it).value.isEmpty()))
131 strPassword = (*it).value[0];
133 if (strLogin.isEmpty())
138 "SELECT USER_ID FROM ES_USER "
139 " WHERE LOGIN_ID LIKE :LOGIN_ID AND PASSWORD LIKE :PASSWORD"
141 q.
params()[0].setValue(strLogin);
142 q.
params()[1].setValue(strPassword);
152 nUserID = q.
fields()[0].asInteger();
156 "UPDATE ES_SESSION SET USER_ID = :USER_ID "
157 " WHERE SESSION_ID LIKE :SESSION_ID"
160 q.
params()[0].setValue(nUserID);
165 "SELECT S.USER_ID, U.GROUP_ID, U.USER_NAME "
166 " FROM ES_SESSION S "
167 " INNER JOIN ES_USER U ON (S.USER_ID = U.USER_ID) "
184 "DELETE FROM ES_SHOPPING_BASKET "
189 "UPDATE ES_SESSION SET USER_ID = 2 "
194 "SELECT S.USER_ID, U.GROUP_ID, U.USER_NAME "
195 " FROM ES_SESSION S "
196 " INNER JOIN ES_USER U ON (S.USER_ID = U.USER_ID) "
208 ListedStringToStringArrayMap& params,
210 const String& strMainCommand,
212 const String& strCommandID,
218 ListedStringToStringArrayMap::Iterator it = params.find(L
"idle");
219 if (it != params.end()) {
229 "DELETE FROM ES_SESSION "
230 "WHERE SESSION_ID != :SESSION_ID "
231 " AND (CURRENT_TIMESTAMP - LAST_USE) >= (:MIN * 60) "
234 q.
params()[1].setValue(nMin);
239 String strHREF = String::format(L
"?%ls=%d",
240 strMainCommand.data(), nMainCommandID
243 tpl.assign(L
"ACTION_HREF", strHREF);
247 "SELECT S.SESSION_ID, U.LOGIN_ID, U.USER_NAME,"
248 " S.LAST_USE, (CURRENT_TIMESTAMP - S.LAST_USE) / 60 AS IDLE_TIME\n"
249 "FROM ES_SESSION S\n"
250 " INNER JOIN ES_USER U ON (S.USER_ID = U.USER_ID)\n"
251 "ORDER BY S.LAST_USE"
255 row.assign(q.
fields(), L
" ");
256 tpl.append(L
"ROW", row);
#define __DCL_TRACE0(psz)
#define __DCL_TRACE1(fmt, arg1)
#define __DCL_ASSERT(expr)
#define __DCL_TRACE2(fmt, arg1, arg2)
String readTemplate(const wchar_t *filename) const __DCL_THROWS1(IOException *)
const String & sessionID() const
SQLConnection * __pSQLConn
bool login(ListedStringToStringArrayMap ¶ms)
void onViewSessions(ListedStringToStringArrayMap ¶ms, Writer &out, const String &strMainCommand, int nMainCommandID, const String &strCommandID, const EShopServlet &_servlet)
EShopSession(HttpServletContextEx &ctx, SQLConnection *pSQLConn) __DCL_THROWS1(SQLException *)
static String dirname(const String &_path)
static int32_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
_CONST SQLField & byName(const wchar_t *_name) _CONST __DCL_THROWS1(InvalidIndexException *)
void prepare(const String &_sql) __DCL_THROWS1(SQLException *)
_CONST SQLParams & params() _CONST
_CONST SQLFields & fields() _CONST
void execute() __DCL_THROWS1(SQLException *)
int64_t affectedRows() const
void fetch() __DCL_THROWS1(SQLException *)