Develop and Download Open Source Software

Browse CVS Repository

Annotation of /xoonips/AL/commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.12 - (hide annotations) (download) (as text)
Fri Nov 26 09:45:28 2004 UTC (19 years, 4 months ago) by youi
Branch: MAIN
Changes since 1.11: +90 -10 lines
File MIME type: text/x-c++src
getAccountを定義.

1 youi 1.1 /*
2     *
3 youi 1.12 * $Revision: 1.11 $
4 youi 1.2 * $Log: commonal.cc,v $
5 youi 1.12 * Revision 1.11 2004/11/26 08:16:26 aga
6     * ??etSession, loginUser, createSession, freeResult(const session_t*) 篆??.
7     *
8 aga 1.11 * Revision 1.10 2004/11/26 07:57:42 youi
9     * updateAccount, deleteAccount??絎?臂?
10     * mysql_query紊掩??????tderr?吾?????若?潟?若?????????若?<???祉?若?吾???阪??.
11     *
12 youi 1.10 * Revision 1.9 2004/11/26 07:38:02 aga
13     * ??AILUE -> FAILURE.
14     *
15 aga 1.9 * Revision 1.8 2004/11/26 06:36:55 aga
16     * ??reateSession, getSession ??篏???.
17     *
18 aga 1.8 * Revision 1.7 2004/11/26 04:51:47 youi
19     * dbprefix??絎?臂?????.
20     * insertAccount??絎?臂?????.
21     * isValidSessionID??絎?臂?????.
22     *
23 youi 1.7 * Revision 1.6 2004/11/26 04:35:55 aga
24     * ??oginUser(), logoutUser()??篏???.
25     *
26 aga 1.6 * Revision 1.5 2004/11/26 01:08:25 aga
27     * ??ddSlashes()篏???.
28     *
29 aga 1.5 * Revision 1.4 2004/11/25 12:14:29 youi
30     * getUid????????絎?臂?????.
31     *
32 youi 1.4 * Revision 1.3 2004/11/25 11:13:59 youi
33     * getLastErrorString/setLastErrorString??絎?臂?
34     *
35 youi 1.3 * Revision 1.2 2004/11/25 08:55:19 youi
36     * 綣??違??????篆??.
37     * freeResult??菴遵??.
38     *
39 youi 1.2 * Revision 1.1 2004/11/25 05:14:58 youi
40     * initial version
41     *
42 youi 1.1 *
43     */
44     #include <stdio.h>
45 aga 1.6 #include <stdlib.h>
46 youi 1.1 #include <string.h>
47     #include <mysql.h>
48 youi 1.10 #include <errmsg.h>
49 youi 1.3 #include <string>
50 youi 1.7 using namespace std;
51 youi 1.1
52     #include "common.h"
53     #include "account.h"
54     #include "group.h"
55     #include "session.h"
56     #include "criteria.h"
57     #include "commonal.h"
58    
59 youi 1.7
60 youi 1.1 static MYSQL* mysql = NULL; //!< MySQL????潟????/span>
61 youi 1.7 static string dbprefix; //!< XOOPS???若?帥???若?鴻???若??????REFIX
62 aga 1.5
63     /**
64     *
65     * php??ddslashes????????
66     *
67     * @param addslashes???鴻????絖?????NULL??絎?筝?????
68     * @return addslashes????????絖???
69     */
70     string addSlashes( const char *str )
71     {
72     int len = strlen(str);
73     char *buf = new char[len*2+1];
74     int bufLen = mysql_real_escape_string( mysql, buf, str, len );
75     string s( buf, bufLen );
76     return s;
77     }
78    
79 youi 1.1
80     /**
81     *
82     * ???若?帥???若?鴻????????
83     *
84     * @param host ???若?帥???若?鴻?????鴻????
85     * @param user ???若?帥???若?鴻???≪???祉?鴻???????若?九??
86     * @param password 筝?荐????若?吟?????鴻???若??
87     * @param dbname ???若?帥???若?鴻??????
88     * @param prefix XOOPS???若?帥???若?鴻???若??????REFIX
89     * @return result_t
90     * @refer result_t
91     */
92     result_t initializeDB( const char* host, const char* user, const char* password, const char* dbname, const char* prefix )
93     {
94     // ?≪??・膓?筝???????筝???????/span>
95     if ( mysql != NULL )
96     mysql_close( mysql );
97    
98 youi 1.7 dbprefix = prefix;
99    
100 youi 1.1 // ????????・膓?
101     mysql = mysql_init(NULL);
102     if ( mysql == NULL ){
103     return RES_DB_INITIALIZE_ERROR;
104     }
105     char *unix_socket = NULL; // ?
106     uint flag = 0; // ?
107     if ( NULL == mysql_real_connect( mysql, host, user, password, dbname, 3306, unix_socket, flag ) ){
108     return RES_DB_CONNECT_ERROR;
109     }
110    
111 youi 1.2 return RES_OK;
112 youi 1.1 }
113    
114    
115     /**
116     *
117     * Platform???若?倶?粋??倶????緇?
118     *
119     * @param
120     * @return
121     *
122     */
123 youi 1.2 bool isActivated( sessionid_t sid, userid_t uid )
124 youi 1.1 {
125     return false;
126     }
127    
128     /**
129     *
130     * Platform???若?倶?粋??倶??紊???/span>
131     *
132     * @param
133     * @return
134     *
135     */
136 youi 1.2 result_t activate( sessionid_t sid, userid_t uid, bool activate )
137 youi 1.1 {
138     return RES_ERROR;
139     }
140    
141     /**
142     *
143     * ?≪?????潟????/span>
144     *
145     * @param
146     * @return
147     *
148     */
149 youi 1.2 int getAccountCount( sessionid_t sid )
150 youi 1.1 {
151     return 0;
152     }
153    
154     /**
155     *
156     * ?≪?????潟??????/span>
157     *
158     * @param
159 youi 1.10 * @return RES_OK | RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR
160 youi 1.1 *
161     */
162 youi 1.2 result_t deleteAccount( sessionid_t sid, userid_t uid )
163 youi 1.1 {
164 youi 1.10 if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
165    
166     string sql;
167     sql = "DELETE FROM " + dbprefix + "_users ";
168     sql += "WHERE uid = " + string( unsignedIntToString( uid ) );
169     if( mysql_query( mysql, sql.c_str( ) ) ){
170     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
171     return RES_DB_QUERY_ERROR;
172     }
173    
174     sql = "DELETE FROM " + dbprefix + "_vpaccount_users ";
175     sql += "WHERE uid = " + string( unsignedIntToString( uid ) );
176     if( mysql_query( mysql, sql.c_str( ) ) ){
177     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
178     return RES_DB_QUERY_ERROR;
179     }
180    
181     return RES_OK;
182 youi 1.1 }
183    
184     /**
185     *
186     * ?≪?????潟?????怨??
187     *
188     * @param
189     * @return
190     *
191     */
192 youi 1.12 result_t getAccount( sessionid_t sid, userid_t uid, const account_t** acc )
193 youi 1.1 {
194 youi 1.12 if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
195    
196     string sql;
197     MYSQL_RES* result;
198     MYSQL_ROW row;
199     account_t* dst = new account_t[ 1 ];
200    
201     sql = "SELECT uid, name, uname, email, url, user_avatar, user_regdate, user_icq, user_from, user_sig, user_viewemail, actkey, user_aim, user_yim, user_msnm, pass, posts, attachsig, rank, level, theme, timezone_offset, last_login, umode, uorder, notify_method, notify_mode, user_occ, bio, user_intrest, user_mailok FROM " + dbprefix + "_users WHERE uid = " + string( unsignedIntToString( uid ) );
202     if( mysql_query( mysql, sql.c_str( ) ) ){
203     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
204     return RES_DB_QUERY_ERROR;
205     }
206     result = mysql_store_result( mysql ) ;
207     row = mysql_fetch_row(result);
208     if( row ){
209     dst -> setUID( atoi( row[ 0 ] ) );
210     dst -> setName( row[ 1 ] );
211     dst -> setUname( row[ 2 ] );
212     dst -> setEmail( row[ 3 ] );
213     dst -> setURL( row[ 4 ] );
214     dst -> setUserAvatar( row[ 5 ] );
215     dst -> setUserRegdate( atoi( row[ 6 ] ) );
216     dst -> setUserIcq( row[ 7 ] );
217     dst -> setUserFrom( row[ 8 ] );
218     dst -> setUserSig( row[ 9 ] );
219     dst -> setUserViewemail( atoi( row[ 10 ] ) );
220     dst -> setActkey( row[ 11 ] );
221     dst -> setUserAim( row[ 12 ] );
222     dst -> setUserYim( row[ 13 ] );
223     dst -> setUserMsnm( row[ 14 ] );
224     dst -> setPass( row[ 15 ] );
225     dst -> setPosts( atoi( row[ 16 ] ) );
226     dst -> setAttachsig( atoi( row[ 17 ] ) );
227     dst -> setRank( atoi( row[ 18 ] ) );
228     dst -> setLevel( atoi( row[ 19 ] ) );
229     dst -> setTheme( row[ 20 ] );
230     dst -> setTimezoneOffset( atof( row[ 21 ] ) );
231     dst -> setLastLogin( atoi( row[ 22 ] ) );
232     dst -> setUmode( row[ 23 ] );
233     dst -> setUorder( atoi( row[ 24 ] ) );
234     dst -> setNotifyMethod( atoi( row[ 25 ] ) );
235     dst -> setNotifyMode( atoi( row[ 26 ] ) );
236     dst -> setUserOcc( row[ 27 ] );
237     dst -> setBio( row[ 28 ] );
238     dst -> setUserIntrest( row[ 29 ] );
239     dst -> setUserMailok( atoi( row[ 30 ] ) );
240     }else{
241     mysql_free_result( result );
242     delete[] dst;
243     return RES_NO_SUCH_USER;
244     }
245     mysql_free_result( result );
246    
247     sql = "SELECT activate, address, institute, tel, organization, country, zipcode, fax, base_url, notice_mail, notice_mail_since FROM " + dbprefix + "_vpaccount_users WHERE uid = " + string( unsignedIntToString( uid ) );
248     if( mysql_query( mysql, sql.c_str( ) ) ){
249     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
250     return RES_DB_QUERY_ERROR;
251     }
252     result = mysql_store_result( mysql ) ;
253     row = mysql_fetch_row(result);
254     if( row ){
255     dst -> setActivate( atoi( row[ 0 ] ) );
256     dst -> setAddress( row[ 1 ] );
257     dst -> setInstitute( row[ 2 ] );
258     dst -> setTel( row[ 3 ] );
259     dst -> setOrganization( row[ 4 ] );
260     dst -> setCountry( row[ 5 ] );
261     dst -> setZipcode( row[ 6 ] );
262     dst -> setFax( row[ 7 ] );
263     dst -> setBaseURL( row[ 8 ] );
264     dst -> setNoticeMail( atoi( row[ 9 ] ) );
265     dst -> setNoticeMailSince( atoi( row[ 10 ] ) );
266     }else{
267     mysql_free_result( result );
268     delete[] dst;
269     return RES_NO_SUCH_USER;
270     }
271     mysql_free_result( result );
272    
273     *acc = dst;
274     return RES_OK;
275 youi 1.1 }
276    
277     /**
278     *
279     * ?≪?????潟?????怨??
280     *
281     * @param
282     * @return
283     *
284     */
285 youi 1.2 result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, const criteria_t* cri, const account_t** accounts, int* accountsLen )
286 youi 1.1 {
287     return RES_ERROR;
288     }
289    
290     /**
291     *
292     * ?≪?????潟???脂??/span>
293     *
294 youi 1.7 * @param sid ?祉???激?с??/span>
295 youi 1.10 * @param account ?脂?蚊?????≪?????潟??????/span>
296     * @return RES_OK | RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR | RES_ERROR
297 youi 1.1 *
298     */
299 youi 1.2 result_t insertAccount( sessionid_t sid, const account_t* account )
300 youi 1.1 {
301 youi 1.10 if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
302    
303 youi 1.7 string sql;
304     string tmp;
305     char buf[ 12 ];
306    
307     //xoops?????若?吟???若???????吾??莨若??
308     sql = "INSERT INTO " + dbprefix + "_users (uname, name, email, url, user_avatar, user_regdate, user_icq, user_from, user_sig, user_viewemail, actkey, user_aim, user_yim, user_msnm, pass, posts, attachsig, rank, level, theme, timezone_offset, last_login, umode, uorder, notify_method, notify_mode, user_occ, bio, user_intrest, user_mailok) VALUES (";
309     sql += "'" + string( addSlashes( account -> getUname( ) ) ) + "', ";
310     sql += "'" + string( addSlashes( account -> getName( ) ) ) + "', ";
311     sql += "'" + string( addSlashes( account -> getEmail( ) ) ) + "', ";
312     sql += "'" + string( addSlashes( account -> getURL( ) ) ) + "', ";
313     sql += "'" + string( addSlashes( account -> getUserAvatar( ) ) ) + "', ";
314     snprintf( buf, 12, "%d", time( NULL ) );
315     sql += string( buf ) + ", ";
316     sql += "'" + string( addSlashes( account -> getUserIcq( ) ) ) + "', ";
317     sql += "'" + string( addSlashes( account -> getUserFrom( ) ) ) + "', ";
318     sql += "'" + string( addSlashes( account -> getUserSig( ) ) ) + "', ";
319     snprintf( buf, 12, "%d", account -> getUserViewemail( ) );
320     sql += string( buf ) + ", ";
321     sql += "'" + string( addSlashes( account -> getActkey( ) ) ) + "', ";
322     sql += "'" + string( addSlashes( account -> getUserAim( ) ) ) + "', ";
323     sql += "'" + string( addSlashes( account -> getUserYim( ) ) ) + "', ";
324     sql += "'" + string( addSlashes( account -> getUserMsnm( ) ) ) + "', ";
325     sql += "'" + string( addSlashes( account -> getPass( ) ) ) + "', ";
326     snprintf( buf, 12, "%d", account -> getPosts( ) );
327     sql += string( buf ) + ", ";
328     snprintf( buf, 12, "%d", account -> getAttachsig( ) );
329     sql += string( buf ) + ", ";
330     snprintf( buf, 12, "%d", account -> getRank( ) );
331     sql += string( buf ) + ", ";
332     snprintf( buf, 12, "%d", account -> getLevel( ) );
333     sql += string( buf ) + ", ";
334     sql += "'" + string( addSlashes( account -> getTheme( ) ) ) + "', ";
335     snprintf( buf, 12, "%lf", account -> getTimezoneOffset( ) );
336     sql += string( buf ) + ", ";
337     sql += "0, "; //last login
338     sql += "'" + string( addSlashes( account -> getUmode( ) ) ) + "', ";
339     snprintf( buf, 12, "%d", account -> getUorder( ) );
340     sql += string( buf ) + ", ";
341     snprintf( buf, 12, "%d", account -> getNotifyMethod( ) );
342     sql += string( buf ) + ", ";
343     snprintf( buf, 12, "%d", account -> getNotifyMode( ) );
344     sql += string( buf ) + ", ";
345     sql += "'" + string( addSlashes( account -> getUserOcc( ) ) ) + "', ";
346     sql += "'" + string( addSlashes( account -> getBio( ) ) ) + "', ";
347     sql += "'" + string( addSlashes( account -> getUserIntrest( ) ) ) + "', ";
348     snprintf( buf, 12, "%d", account -> getUserMailok( ) );
349     sql += string( buf ) + ")";
350     if( mysql_query( mysql, sql.c_str( ) ) ){
351 youi 1.10 fprintf( stderr, "%s\n", sql.c_str( ) );
352     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
353 youi 1.7 return RES_DB_QUERY_ERROR;
354     }
355    
356     //???若??D????緇?????
357     userid_t uid;
358     if( getUid( account -> getUname( ), &uid ) != RES_OK ){
359     return RES_ERROR;
360     }
361    
362     //vpaccount?????若?吟???若??????????????宴???吾??莨若??
363 youi 1.10 sql = "INSERT INTO " + dbprefix + "_vpaccount_users (uid, activate, address, institute, tel, organization, country, zipcode, fax, base_url, notice_mail, notice_mail_since) VALUES (";
364 youi 1.7 snprintf( buf, 12, "%d", uid );
365     sql += string( buf ) + ", ";
366     if( account -> getActivate() ){
367     sql += "1, ";
368     }else{
369     sql += "0, ";
370     }
371     sql += "'" + string( addSlashes( account -> getAddress() ) ) + "', ";
372     sql += "'" + string( addSlashes( account -> getInstitute() ) ) + "', ";
373     sql += "'" + string( addSlashes( account -> getTel() ) ) + "', ";
374     sql += "'" + string( addSlashes( account -> getOrganization() ) ) + "', ";
375     sql += "'" + string( addSlashes( account -> getCountry() ) ) + "', ";
376     sql += "'" + string( addSlashes( account -> getZipcode() ) ) + "', ";
377     sql += "'" + string( addSlashes( account -> getFax() ) ) + "', ";
378     sql += "'" + string( addSlashes( account -> getBaseURL() ) ) + "', ";
379     snprintf( buf, 12, "%d", account -> getNoticeMail( ) );
380     sql += string( buf ) + ", ";
381     snprintf( buf, 12, "%d", account -> getNoticeMailSince( ) );
382     sql += string( buf ) + ")";
383     if( mysql_query( mysql, sql.c_str( ) ) ){
384 youi 1.10 fprintf( stderr, "%s\n", sql.c_str( ) );
385     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
386 youi 1.7 //xoops_users??nsert???????潟?若???????ゃ????
387     sql = "DELETE FROM " + dbprefix + "_users where uid=";
388     snprintf( buf, 12, "%d", uid );
389     sql += string( buf );
390 youi 1.10 mysql_query( mysql, sql.c_str( ) );
391 youi 1.7 return RES_DB_QUERY_ERROR;
392     }
393    
394     return RES_OK;
395 youi 1.1 }
396    
397     /**
398     *
399     * ?≪?????潟??紊???/span>
400     *
401     * @param
402 youi 1.10 * @return RES_OK | RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR
403 youi 1.1 *
404     */
405 youi 1.2 result_t updateAccount( sessionid_t sid, const account_t* account )
406 youi 1.1 {
407 youi 1.10 if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
408    
409     string sql;
410     string tmp;
411     char buf[ 12 ];
412    
413     //xoops?????若?吟???若???????吾??莨若??
414     sql = "UPDATE " + dbprefix + "_users SET ";
415     sql += "uname='" + string( addSlashes( account -> getUname( ) ) ) + "', ";
416     sql += "name='" + string( addSlashes( account -> getName( ) ) ) + "', ";
417     sql += "email='" + string( addSlashes( account -> getEmail( ) ) ) + "', ";
418     sql += "url='" + string( addSlashes( account -> getURL( ) ) ) + "', ";
419     sql += "user_avatar='" + string( addSlashes( account -> getUserAvatar( ) ) ) + "', ";
420     sql += "user_regdate=" + string( intToString( account -> getUserRegdate( ) ) ) + ", ";
421     sql += "user_icq='" + string( addSlashes( account -> getUserIcq( ) ) ) + "', ";
422     sql += "user_from='" + string( addSlashes( account -> getUserFrom( ) ) ) + "', ";
423     sql += "user_sig='" + string( addSlashes( account -> getUserSig( ) ) ) + "', ";
424     sql += "user_viewemail=" + string( intToString( account -> getUserViewemail( ) ) ) + ", ";
425     sql += "actkey='" + string( addSlashes( account -> getActkey( ) ) ) + "', ";
426     sql += "user_aim='" + string( addSlashes( account -> getUserAim( ) ) ) + "', ";
427     sql += "user_yim='" + string( addSlashes( account -> getUserYim( ) ) ) + "', ";
428     sql += "user_msnm='" + string( addSlashes( account -> getUserMsnm( ) ) ) + "', ";
429     sql += "pass='" + string( account -> getPass( ) ) + "', ";
430     sql += "posts=" + string( intToString( account -> getPosts( ) ) ) + ", ";
431     sql += "attachsig=" + string( intToString( account -> getAttachsig( ) ) ) + ", ";
432     sql += "rank=" + string( intToString( account -> getRank( ) ) ) + ", ";
433     sql += "level=" + string( intToString( account -> getLevel( ) ) ) + ", ";
434     sql += "theme='" + string( addSlashes( account -> getTheme( ) ) ) + "', ";
435     snprintf( buf, 12, "%.2f", account -> getTimezoneOffset( ) );
436     sql += "timezone_offset=" + string( buf ) + ", ";
437     sql += "last_login=" + string( unsignedIntToString( account -> getLastLogin( ) ) ) + ", ";
438     sql += "umode='" + string( account -> getUmode( ) ) + "', ";
439     sql += "uorder=" + string( intToString( account -> getUorder( ) ) ) + ", ";
440     sql += "notify_method=" + string( intToString( account -> getNotifyMethod( ) ) ) + ", ";
441     sql += "notify_mode=" + string( intToString( account -> getNotifyMode( ) ) ) + ", ";
442     sql += "user_occ='" + string( addSlashes( account -> getUserOcc( ) ) ) + "', ";
443     sql += "bio='" + string( addSlashes( account -> getBio( ) ) ) + "', ";
444     sql += "user_intrest='" + string( addSlashes( account -> getUserIntrest( ) ) ) + "', ";
445     sql += "user_mailok=" + string( intToString( account -> getUserMailok( ) ) );
446     sql += " WHERE uid = " + string( intToString( account -> getUID( ) ) );
447    
448     if( mysql_query( mysql, sql.c_str( ) ) ){
449     fprintf( stderr, "%s\n", sql.c_str( ) );
450     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
451     return RES_DB_QUERY_ERROR;
452     }
453    
454     //vpaccount?????若?吟???若??????????????宴??筝??吾??????
455     sql = "UPDATE " + dbprefix + "_vpaccount_users SET ";
456     sql += "activate=";
457     if( account -> getActivate() ){
458     sql += "1, ";
459     }else{
460     sql += "0, ";
461     }
462     sql += "address='" + string( addSlashes( account -> getAddress() ) ) + "', ";
463     sql += "institute='" + string( addSlashes( account -> getInstitute() ) ) + "', ";
464     sql += "tel='" + string( addSlashes( account -> getTel() ) ) + "', ";
465     sql += "organization='" + string( addSlashes( account -> getOrganization() ) ) + "', ";
466     sql += "country='" + string( addSlashes( account -> getCountry() ) ) + "', ";
467     sql += "zipcode='" + string( addSlashes( account -> getZipcode() ) ) + "', ";
468     sql += "fax='" + string( addSlashes( account -> getFax() ) ) + "', ";
469     sql += "base_url='" + string( addSlashes( account -> getBaseURL() ) ) + "', ";
470     sql += "notice_mail=" + string( intToString( account -> getNoticeMail( ) ) ) + ", ";
471     sql += "notice_mail_since=" + string( intToString( account -> getNoticeMailSince( ) ) );
472     sql += " WHERE uid = " + string( intToString( account -> getUID( ) ) );
473    
474     if( mysql_query( mysql, sql.c_str( ) ) ){
475     fprintf( stderr, "%s\n", sql.c_str( ) );
476     fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
477     return RES_DB_QUERY_ERROR;
478     }
479    
480     return RES_OK;
481 youi 1.1 }
482    
483     /**
484     *
485     * ???若??D筝?荀?/span>
486     *
487     * @param
488     * @return
489     *
490     */
491 youi 1.2 result_t dumpUids( sessionid_t sid, const criteria_t* cri, userid_t** uids, int* uidsLen )
492 youi 1.1 {
493     return RES_ERROR;
494     }
495    
496     /**
497     *
498     * ?違???若????/span>
499     *
500     * @param
501     * @return
502     *
503     */
504 youi 1.2 int getGroupCount( sessionid_t sid )
505 youi 1.1 {
506     return 0;
507     }
508    
509     /**
510     *
511     * ??絮??違???若??筝?荀у??
512     *
513     * @param
514     * @return
515     *
516     */
517 youi 1.2 result_t getGroupsByUid( sessionid_t sid, userid_t uid, const criteria_t* cri, groupid_t** gids, int* gidsLen )
518 youi 1.1 {
519     return RES_ERROR;
520     }
521    
522     /**
523     *
524     * ?違???若??膊∞??罔????????
525     *
526     * @param
527     * @return
528     *
529     */
530 youi 1.2 bool isGroupAdmin( sessionid_t sid, groupid_t gid, userid_t uid )
531 youi 1.1 {
532     return RES_ERROR;
533     }
534    
535     /**
536     *
537     * ?違???若??ID筝?荀?/span>
538     *
539     * @param
540     * @return
541     *
542     */
543 youi 1.2 result_t dumpGids( sessionid_t sid, const criteria_t* cri, groupid_t** gids, int* gidsLen )
544 youi 1.1 {
545     return RES_ERROR;
546     }
547    
548     /**
549     *
550     * ?違???若??膊∞????ID??緇?
551     *
552     * @param
553     * @return
554     *
555     */
556 youi 1.2 result_t dumpGroupAdmins( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen )
557 youi 1.1 {
558     return RES_ERROR;
559     }
560    
561     /**
562     *
563     * ?違???若????絮????若?九????/span>
564     *
565     * @param
566     * @return
567     *
568     */
569 youi 1.2 result_t deleteMember( sessionid_t sid, groupid_t gid, userid_t uid )
570 youi 1.1 {
571     return RES_ERROR;
572     }
573    
574     /**
575     *
576     * ?違???若????絮????若?区申??
577     *
578     * @param
579     * @return
580     *
581     */
582 youi 1.2 result_t insertMember( sessionid_t sid, groupid_t gid, userid_t uid )
583 youi 1.1 {
584     return RES_ERROR;
585     }
586    
587     /**
588     *
589     * ?違???若????絮????若?九??
590     *
591     * @param
592     * @return
593     *
594     */
595 youi 1.2 result_t getMembers( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen )
596 youi 1.1 {
597     return RES_ERROR;
598     }
599    
600     /**
601     *
602     * ?違???若????????/span>
603     *
604     * @param
605     * @return
606     *
607     */
608 youi 1.2 result_t deleteGroup( sessionid_t sid, groupid_t gid )
609 youi 1.1 {
610     return RES_ERROR;
611     }
612    
613     /**
614     *
615     * ?違???若?????脂??/span>
616     *
617     * @param
618     * @return
619     *
620     */
621 youi 1.2 result_t insertGroup( sessionid_t sid, const group_t* group )
622 youi 1.1 {
623     return RES_ERROR;
624     }
625    
626     /**
627     *
628     * ?違???若???????/span>
629     *
630     * @param
631     * @return
632     *
633     */
634 youi 1.2 result_t updateGroup( sessionid_t sid, const group_t* group )
635 youi 1.1 {
636     return RES_ERROR;
637     }
638    
639     /**
640     *
641     * ?違???若?????怨??
642     *
643     * @param
644     * @return
645     *
646     */
647 youi 1.2 result_t getGroup( sessionid_t sid, groupid_t gid, const group_t** group )
648 youi 1.1 {
649     return RES_ERROR;
650     }
651    
652     /**
653     *
654     * ?違???若?????怨??
655     *
656     * @param
657     * @return
658     *
659     */
660 youi 1.2 result_t getGroups( sessionid_t sid, groupid_t* gids, int gidsLen, const criteria_t* cri, const group_t** groups, int* groupsLen )
661 youi 1.1 {
662     return RES_ERROR;
663     }
664    
665     /**
666     *
667     * ?≪?????若?炊┤???????
668     *
669     * @param
670     * @return
671     *
672     */
673 youi 1.2 bool isModerator( sessionid_t sid, userid_t uid )
674 youi 1.1 {
675     return RES_ERROR;
676     }
677    
678     /**
679     *
680     * ???若??D??緇?
681     *
682 youi 1.7 * @param uname ID????緇??????????若?吟?弱??
683     * @param uid ID??篁e?ャ??????紊??違?????ゃ?潟??/span>
684     * @return RES_ERROR | RES_OK
685     * @refer result_t
686 youi 1.1 *
687     */
688 youi 1.2 result_t getUid( const char* uname, userid_t* uid )
689 youi 1.1 {
690 youi 1.4 string sql;
691    
692 youi 1.7 if( uname == NULL ) return RES_ERROR;
693    
694     string uname2 = addSlashes( uname );
695 youi 1.10 sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + uname2 + "';";
696 youi 1.4 if( mysql_query( mysql, sql.c_str( ) ) ){
697 youi 1.10 fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
698 youi 1.4 return RES_DB_QUERY_ERROR;
699     }
700 youi 1.10 MYSQL_RES* result = mysql_store_result( mysql ) ;
701 youi 1.4 MYSQL_ROW row = mysql_fetch_row(result);
702     if( row ){
703     *uid = atoi( row[0] );
704     mysql_free_result( result );
705     return RES_OK;
706     }else{
707     mysql_free_result( result );
708     return RES_NO_SUCH_USER;
709     }
710 youi 1.1 }
711    
712     /**
713     *
714 aga 1.8 * ?祉???激?с?潟??篏?????xoops_vpaccount_session???吾??莨若???? sessionid_t??session???????
715     *
716     * @param uid xoops_users??id
717     * @param remoteHost remote ip (host order)
718     * @param session sessionid_t???????????????????ゃ?潟?帥??
719     * @return RES_OK ????
720     * @return RES_DB_QUERY_ERROR DB????????筝?????????/span>
721     */
722     static result_t addSession( userid_t uid, unsigned long remoteHost, sessionid_t* session )
723     {
724     result_t ret;
725     string sql = "INSERT INTO " + dbprefix + "_vpaccount_session (uid,remote_host) values (" +
726     unsignedIntToString(uid) + "," + unsignedIntToString((unsigned int)remoteHost) + ")";
727     if ( 0 == mysql_query( mysql, sql.c_str() ) ){
728     *session = (int)mysql_insert_id(mysql);
729     ret = RES_OK;
730     }
731     else {
732     ret = RES_DB_QUERY_ERROR;
733     }
734     return ret;
735     }
736    
737    
738     /**
739     *
740 youi 1.1 * ???違?ゃ?活?荐若???祉???激?с?割???
741     *
742 aga 1.6 * @param uname ???違?ゃ?喝??
743     * @param passwd ???鴻???若??
744     * @param session sessionid_t???????????????????ゃ?潟?帥??
745     * @return RES_OK ???違?ゃ?恰??????session??essionid_t???吾??莨若??????
746     * @return RES_LOGIN_FAILURE uname?障????asswd???医幻
747     * @return RES_DB_QUERY_ERROR DB????????筝?????????/span>
748 youi 1.1 *
749     */
750 aga 1.6 result_t loginUser(const char* uname, const char* passwd, sessionid_t* session )
751 youi 1.1 {
752 aga 1.6 result_t ret;
753     string sql;
754    
755     // uname, passwd -> uid
756     string escUname = addSlashes( uname );
757     string escPasswd = addSlashes( passwd );
758 youi 1.10 sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + escUname + "' and pass=md5('" + escPasswd + "')";
759 aga 1.6 if( 0 == mysql_query( mysql, sql.c_str( ) ) ){
760     MYSQL_RES* result = mysql_store_result( mysql );
761     if( result ){
762     MYSQL_ROW row = mysql_fetch_row(result);
763     if( row ){
764 aga 1.8 userid_t uid = atoi(row[0]);
765     ret = addSession( uid, 0, session );
766 aga 1.6 }else{
767 aga 1.9 ret = RES_LOGIN_FAILURE;
768 aga 1.6 }
769     mysql_free_result( result );
770     }else {
771     ret = RES_DB_QUERY_ERROR;
772     }
773     }else{
774     ret = RES_DB_QUERY_ERROR;
775     }
776    
777     return ret;
778 youi 1.1 }
779    
780     /**
781     *
782     * ???違?≪???????祉???激?с?括?篋?
783     *
784 aga 1.6 * @param sid session id
785     * @return ????
786 youi 1.1 *
787     */
788 youi 1.10 void logoutUser( sessionid_t sid )
789     {
790 aga 1.6 result_t ret;
791     string sql;
792 youi 1.10
793 aga 1.6 sql = "DELETE FROM " + dbprefix + "_vpaccount_session WHERE sid=" + intToString((int)sid);
794     if ( 0 == mysql_query( mysql, sql.c_str() ) ){
795     if ( mysql_affected_rows(mysql) == 1 ){
796     // ???違?≪????????
797     }
798     else {
799     // sid???≦??/span>
800     }
801     }
802     else {
803     // DB????????筝?????????/span>
804     }
805     }
806 youi 1.1
807     /**
808     *
809     * ?祉???激?с?潟?????.<br>
810     * XOOPS??ession???若????????蚊??????sess_id?????essionid??膈???????
811     * ?逸?session_t??篏?????????
812 youi 1.2 * ???若?帥???若?鴻???祉???激?с?潟????違?????宴??荐??蚊????
813 youi 1.1 *
814 aga 1.8 * @param sessionid xoops??ession_id
815     * @param uid xoops_users??id
816     * @param remoteHost remote ip (host order)
817     * @param session sessionid_t???????????????????ゃ?潟?帥??
818     * @return RES_OK
819     * @return RES_ERROR
820     * @return RES_DB_QUERY_ERROR
821 youi 1.1 *
822     */
823 aga 1.8 result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* session )
824 youi 1.1 {
825 aga 1.8 result_t ret;
826     string sql;
827    
828     string escSessionid = addSlashes(sessionid);
829     sql = "SELECT sess_id from " + dbprefix + "_session where sess_id='" + escSessionid + "'";
830     if( 0 == mysql_query( mysql, sql.c_str( ) ) ){
831     MYSQL_RES* result = mysql_store_result( mysql );
832     if( result ){
833     MYSQL_ROW row = mysql_fetch_row(result);
834     if( row ){
835     ret = addSession( uid, remoteHost, session );
836     }else{
837     ret = RES_ERROR;
838     }
839     mysql_free_result( result );
840     }else {
841     ret = RES_DB_QUERY_ERROR;
842     }
843     }else{
844     ret = RES_DB_QUERY_ERROR;
845     }
846    
847 aga 1.11 return ret;
848 youi 1.1 }
849    
850     /**
851     *
852     * ?祉???激?с?潟???膣違??session_t?у??????.<br>
853     *
854 aga 1.8 * @param sess_id
855     * @param session
856 youi 1.1 * @return
857     *
858     */
859 aga 1.8 result_t getSession( sessionid_t sess_id, const session_t** ppsession )
860 youi 1.1 {
861 aga 1.8 result_t ret;
862     string sql;
863    
864     sql = "SELECT sid, uid, unix_timestamp(timestamp), remote_host from " + dbprefix +
865     "_vpaccount_session where sid=" + unsignedIntToString((unsigned int)sess_id);
866     if( 0 == mysql_query( mysql, sql.c_str( ) ) ){
867     MYSQL_RES* result = mysql_store_result( mysql );
868     if( result ){
869     MYSQL_ROW row = mysql_fetch_row(result);
870     if( row ){
871 aga 1.11 session_t *p = new session[1];
872 aga 1.8 p->setSessionID(sess_id);
873     p->setUserID(atoi(row[1]));
874     p->setDate(atoi(row[2]));
875     p->setRemoteHost(atoi(row[3]));
876     *ppsession = p;
877     ret = RES_OK;
878     }else{
879     ret = RES_NO_SUCH_SESSION;
880     }
881     mysql_free_result( result );
882     }else {
883     ret = RES_DB_QUERY_ERROR;
884     }
885     }else{
886     ret = RES_DB_QUERY_ERROR;
887     }
888    
889 aga 1.11 return ret;
890 youi 1.1 }
891 youi 1.2
892 youi 1.7 /**
893     *
894     * ?祉???激?с?潟???綵??с?????с????????.
895     *
896     * @param sid ???с??????????session
897     * @return true 罩e?
898     * @return false 筝?罩?/span>
899     *
900     */
901     bool isValidSessionID( sessionid_t sid )
902     {
903     string sql;
904     string sidstr;
905     char buf[ 12 ];
906     snprintf( buf, 12, "%d", sid );
907    
908 youi 1.10 sql = "SELECT * FROM " + dbprefix + "_vpaccount_session WHERE sid=" + string( buf );
909 youi 1.7 if( mysql_query( mysql, sql.c_str( ) ) ){
910     return false;
911     }
912 youi 1.10 MYSQL_RES* result = mysql_store_result( mysql ) ;
913 youi 1.7 MYSQL_ROW row = mysql_fetch_row(result);
914     if( row ){
915     return true;
916     }else{
917     return false;
918     }
919     }
920    
921 youi 1.12 void freeResult( const account_t* ptr ){ delete[] ( account_t* )ptr; }
922     void freeResult( const group_t* ptr ){ delete[] ( group_t* )ptr; }
923     void freeResult( const session_t* ptr ){ delete[] ( session_t* )ptr; }
924     void freeResult( const int* ptr ){ delete[] ( int* )ptr; }
925 youi 1.2
926 youi 1.3 static string errstr;
927     const char* getLastErrorString()
928     {
929     return errstr.c_str( );
930     }
931    
932     void setLastErrorString( const char* str )
933     {
934     errstr = str;
935     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26