| 2 |
* |
* |
| 3 |
* $Revision$ |
* $Revision$ |
| 4 |
* $Log$ |
* $Log$ |
| 5 |
|
* Revision 1.13 2004/11/27 00:35:39 youi |
| 6 |
|
* getAccountsを定義. |
| 7 |
|
* getAccountを修正,内部でgetAccountsを呼び出す. |
| 8 |
|
* criteria2strを定義. |
| 9 |
|
* |
| 10 |
* Revision 1.12 2004/11/26 09:45:28 youi |
* Revision 1.12 2004/11/26 09:45:28 youi |
| 11 |
* getAccountを定義. |
* getAccountを定義. |
| 12 |
* |
* |
| 84 |
return s; |
return s; |
| 85 |
} |
} |
| 86 |
|
|
| 87 |
|
/** |
| 88 |
|
* |
| 89 |
|
* criteria を SQLに変換する |
| 90 |
|
* |
| 91 |
|
* |
| 92 |
|
* |
| 93 |
|
*/ |
| 94 |
|
string criteria2str( criteria* cri ) |
| 95 |
|
{ |
| 96 |
|
string sql; |
| 97 |
|
|
| 98 |
|
if( cri -> getLimitStart( ) != 0 || cri -> getLimitRows( ) != 0 ){ |
| 99 |
|
sql += " LIMIT " + string( intToString( cri -> getLimitStart( ) ) ) |
| 100 |
|
+ ", " + string( intToString( cri -> getLimitRows( ) ) ); |
| 101 |
|
} |
| 102 |
|
const orderby* odrby = cri -> headOrderBy( ); |
| 103 |
|
if( odrby != 0 ){ |
| 104 |
|
sql += " ORDER BY " + string( odrby -> getColumn( ) ); |
| 105 |
|
sql += ( odrby -> getOrder( ) == orderby::DESC ) ? " DESC" : " "; |
| 106 |
|
while( ( odrby = cri -> nextOrderBy( ) ) != 0 ){ |
| 107 |
|
sql += ", " + string( odrby -> getColumn( ) ); |
| 108 |
|
sql += ( odrby -> getOrder( ) == orderby::DESC ) ? " DESC" : " "; |
| 109 |
|
} |
| 110 |
|
} |
| 111 |
|
return sql; |
| 112 |
|
} |
| 113 |
|
|
| 114 |
/** |
/** |
| 115 |
* |
* |
| 219 |
* |
* |
| 220 |
* アカウント情報取得 |
* アカウント情報取得 |
| 221 |
* |
* |
| 222 |
* @param |
* @param sid セッションID |
| 223 |
* @return |
* @param uid 取得したいユーザのUID |
| 224 |
|
* @param acc 取得したアカウント情報(account_t)のポインタを書き込む引数 |
| 225 |
|
* @return RES_OK | RES_NO_SUCH_USER | RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR | RES_ERROR |
| 226 |
* |
* |
| 227 |
*/ |
*/ |
| 228 |
result_t getAccount( sessionid_t sid, userid_t uid, const account_t** acc ) |
result_t getAccount( sessionid_t sid, userid_t uid, const account_t** acc ) |
| 229 |
{ |
{ |
| 230 |
|
int len; |
| 231 |
|
static criteria c; |
| 232 |
|
result_t res = getAccounts( sid, &uid, 1, &c, acc, &len ); |
| 233 |
|
if( len == 0 ) return RES_NO_SUCH_USER; |
| 234 |
|
return res; |
| 235 |
|
} |
| 236 |
|
|
| 237 |
|
/** |
| 238 |
|
* |
| 239 |
|
* アカウント情報取得 |
| 240 |
|
* |
| 241 |
|
* @param sid セッションID |
| 242 |
|
* @param uids 取得したいユーザのUIDの配列 |
| 243 |
|
* @param uidsLen uids配列の要素数 |
| 244 |
|
* @param cri 結果の範囲指定,ソート条件指定 |
| 245 |
|
* @param accounts 検索結果の配列のポインタを書き込む引数 |
| 246 |
|
* @param accountsLen 検索結果の数(配列*accountsの要素数) |
| 247 |
|
* @return RES_OK| RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR |
| 248 |
|
* |
| 249 |
|
*/ |
| 250 |
|
result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, criteria_t* cri, const account_t** accounts, int* accountsLen ) |
| 251 |
|
{ |
| 252 |
if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION; |
if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION; |
| 253 |
|
|
| 254 |
string sql; |
string sql; |
| 255 |
MYSQL_RES* result; |
MYSQL_RES* result; |
| 256 |
MYSQL_ROW row; |
MYSQL_ROW row; |
| 257 |
account_t* dst = new account_t[ 1 ]; |
account_t* dst = new account_t[ uidsLen ]; |
| 258 |
|
|
| 259 |
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 ) ); |
sql += "SELECT u1.uid, u1.name, u1.uname, u1.email, u1.url, u1.user_avatar, u1.user_regdate, u1.user_icq, u1.user_from, u1.user_sig, u1.user_viewemail, u1.actkey, u1.user_aim, u1.user_yim, u1.user_msnm, u1.pass, u1.posts, u1.attachsig, u1.rank, u1.level, u1.theme, u1.timezone_offset, u1.last_login, u1.umode, u1.uorder, u1.notify_method, u1.notify_mode, u1.user_occ, u1.bio, u1.user_intrest, u1.user_mailok, u2.activate, u2.address, u2.institute, u2.tel, u2.organization, u2.country, u2.zipcode, u2.fax, u2.base_url, u2.notice_mail, u2.notice_mail_since "; |
| 260 |
if( mysql_query( mysql, sql.c_str( ) ) ){ |
sql += "FROM " + dbprefix + "_users AS u1, " + dbprefix + "_vpaccount_users AS u2 "; |
| 261 |
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
sql += "WHERE u1.uid = u2.uid AND ( u1.uid=" + string( unsignedIntToString( uids[ 0 ] ) ); |
| 262 |
return RES_DB_QUERY_ERROR; |
for( int i = 1; i < uidsLen; i++ ){ |
| 263 |
|
sql += " OR u1.uid=" + string( unsignedIntToString( uids[ i ] ) ); |
| 264 |
} |
} |
| 265 |
result = mysql_store_result( mysql ) ; |
sql += " ) "; |
| 266 |
row = mysql_fetch_row(result); |
sql += criteria2str( cri ); |
|
if( row ){ |
|
|
dst -> setUID( atoi( row[ 0 ] ) ); |
|
|
dst -> setName( row[ 1 ] ); |
|
|
dst -> setUname( row[ 2 ] ); |
|
|
dst -> setEmail( row[ 3 ] ); |
|
|
dst -> setURL( row[ 4 ] ); |
|
|
dst -> setUserAvatar( row[ 5 ] ); |
|
|
dst -> setUserRegdate( atoi( row[ 6 ] ) ); |
|
|
dst -> setUserIcq( row[ 7 ] ); |
|
|
dst -> setUserFrom( row[ 8 ] ); |
|
|
dst -> setUserSig( row[ 9 ] ); |
|
|
dst -> setUserViewemail( atoi( row[ 10 ] ) ); |
|
|
dst -> setActkey( row[ 11 ] ); |
|
|
dst -> setUserAim( row[ 12 ] ); |
|
|
dst -> setUserYim( row[ 13 ] ); |
|
|
dst -> setUserMsnm( row[ 14 ] ); |
|
|
dst -> setPass( row[ 15 ] ); |
|
|
dst -> setPosts( atoi( row[ 16 ] ) ); |
|
|
dst -> setAttachsig( atoi( row[ 17 ] ) ); |
|
|
dst -> setRank( atoi( row[ 18 ] ) ); |
|
|
dst -> setLevel( atoi( row[ 19 ] ) ); |
|
|
dst -> setTheme( row[ 20 ] ); |
|
|
dst -> setTimezoneOffset( atof( row[ 21 ] ) ); |
|
|
dst -> setLastLogin( atoi( row[ 22 ] ) ); |
|
|
dst -> setUmode( row[ 23 ] ); |
|
|
dst -> setUorder( atoi( row[ 24 ] ) ); |
|
|
dst -> setNotifyMethod( atoi( row[ 25 ] ) ); |
|
|
dst -> setNotifyMode( atoi( row[ 26 ] ) ); |
|
|
dst -> setUserOcc( row[ 27 ] ); |
|
|
dst -> setBio( row[ 28 ] ); |
|
|
dst -> setUserIntrest( row[ 29 ] ); |
|
|
dst -> setUserMailok( atoi( row[ 30 ] ) ); |
|
|
}else{ |
|
|
mysql_free_result( result ); |
|
|
delete[] dst; |
|
|
return RES_NO_SUCH_USER; |
|
|
} |
|
|
mysql_free_result( result ); |
|
|
|
|
|
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 ) ); |
|
| 267 |
if( mysql_query( mysql, sql.c_str( ) ) ){ |
if( mysql_query( mysql, sql.c_str( ) ) ){ |
| 268 |
|
fprintf( stderr, "%s\n", sql.c_str( ) ); |
| 269 |
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
| 270 |
return RES_DB_QUERY_ERROR; |
return RES_DB_QUERY_ERROR; |
| 271 |
} |
} |
| 272 |
result = mysql_store_result( mysql ) ; |
result = mysql_use_result( mysql ) ; |
| 273 |
row = mysql_fetch_row(result); |
*accountsLen=0; |
| 274 |
if( row ){ |
for( int i = 0; ( row = mysql_fetch_row(result) ) != 0 && i < uidsLen ; i++ ){ |
| 275 |
dst -> setActivate( atoi( row[ 0 ] ) ); |
dst[ i ].setUID( atoi( row[ 0 ] ) ); |
| 276 |
dst -> setAddress( row[ 1 ] ); |
dst[ i ].setName( row[ 1 ] ); |
| 277 |
dst -> setInstitute( row[ 2 ] ); |
dst[ i ].setUname( row[ 2 ] ); |
| 278 |
dst -> setTel( row[ 3 ] ); |
dst[ i ].setEmail( row[ 3 ] ); |
| 279 |
dst -> setOrganization( row[ 4 ] ); |
dst[ i ].setURL( row[ 4 ] ); |
| 280 |
dst -> setCountry( row[ 5 ] ); |
dst[ i ].setUserAvatar( row[ 5 ] ); |
| 281 |
dst -> setZipcode( row[ 6 ] ); |
dst[ i ].setUserRegdate( atoi( row[ 6 ] ) ); |
| 282 |
dst -> setFax( row[ 7 ] ); |
dst[ i ].setUserIcq( row[ 7 ] ); |
| 283 |
dst -> setBaseURL( row[ 8 ] ); |
dst[ i ].setUserFrom( row[ 8 ] ); |
| 284 |
dst -> setNoticeMail( atoi( row[ 9 ] ) ); |
dst[ i ].setUserSig( row[ 9 ] ); |
| 285 |
dst -> setNoticeMailSince( atoi( row[ 10 ] ) ); |
dst[ i ].setUserViewemail( atoi( row[ 10 ] ) ); |
| 286 |
}else{ |
dst[ i ].setActkey( row[ 11 ] ); |
| 287 |
mysql_free_result( result ); |
dst[ i ].setUserAim( row[ 12 ] ); |
| 288 |
delete[] dst; |
dst[ i ].setUserYim( row[ 13 ] ); |
| 289 |
return RES_NO_SUCH_USER; |
dst[ i ].setUserMsnm( row[ 14 ] ); |
| 290 |
|
dst[ i ].setPass( row[ 15 ] ); |
| 291 |
|
dst[ i ].setPosts( atoi( row[ 16 ] ) ); |
| 292 |
|
dst[ i ].setAttachsig( atoi( row[ 17 ] ) ); |
| 293 |
|
dst[ i ].setRank( atoi( row[ 18 ] ) ); |
| 294 |
|
dst[ i ].setLevel( atoi( row[ 19 ] ) ); |
| 295 |
|
dst[ i ].setTheme( row[ 20 ] ); |
| 296 |
|
dst[ i ].setTimezoneOffset( atof( row[ 21 ] ) ); |
| 297 |
|
dst[ i ].setLastLogin( atoi( row[ 22 ] ) ); |
| 298 |
|
dst[ i ].setUmode( row[ 23 ] ); |
| 299 |
|
dst[ i ].setUorder( atoi( row[ 24 ] ) ); |
| 300 |
|
dst[ i ].setNotifyMethod( atoi( row[ 25 ] ) ); |
| 301 |
|
dst[ i ].setNotifyMode( atoi( row[ 26 ] ) ); |
| 302 |
|
dst[ i ].setUserOcc( row[ 27 ] ); |
| 303 |
|
dst[ i ].setBio( row[ 28 ] ); |
| 304 |
|
dst[ i ].setUserIntrest( row[ 29 ] ); |
| 305 |
|
dst[ i ].setUserMailok( atoi( row[ 30 ] ) ); |
| 306 |
|
dst[ i ].setActivate( atoi( row[ 31 ] ) ); |
| 307 |
|
dst[ i ].setAddress( row[ 32 ] ); |
| 308 |
|
dst[ i ].setInstitute( row[ 33 ] ); |
| 309 |
|
dst[ i ].setTel( row[ 34 ] ); |
| 310 |
|
dst[ i ].setOrganization( row[ 35 ] ); |
| 311 |
|
dst[ i ].setCountry( row[ 36 ] ); |
| 312 |
|
dst[ i ].setZipcode( row[ 37 ] ); |
| 313 |
|
dst[ i ].setFax( row[ 38 ] ); |
| 314 |
|
dst[ i ].setBaseURL( row[ 39 ] ); |
| 315 |
|
dst[ i ].setNoticeMail( atoi( row[ 40 ] ) ); |
| 316 |
|
dst[ i ].setNoticeMailSince( atoi( row[ 41 ] ) ); |
| 317 |
|
( *accountsLen )++; |
| 318 |
} |
} |
| 319 |
mysql_free_result( result ); |
mysql_free_result( result ); |
| 320 |
|
*accounts = dst; |
|
*acc = dst; |
|
| 321 |
return RES_OK; |
return RES_OK; |
| 322 |
} |
} |
| 323 |
|
|
| 324 |
/** |
/** |
| 325 |
* |
* |
|
* アカウント情報取得 |
|
|
* |
|
|
* @param |
|
|
* @return |
|
|
* |
|
|
*/ |
|
|
result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, const criteria_t* cri, const account_t** accounts, int* accountsLen ) |
|
|
{ |
|
|
return RES_ERROR; |
|
|
} |
|
|
|
|
|
/** |
|
|
* |
|
| 326 |
* アカウント登録 |
* アカウント登録 |
| 327 |
* |
* |
| 328 |
* @param sid セッション |
* @param sid セッション |
| 522 |
* @return |
* @return |
| 523 |
* |
* |
| 524 |
*/ |
*/ |
| 525 |
result_t dumpUids( sessionid_t sid, const criteria_t* cri, userid_t** uids, int* uidsLen ) |
result_t dumpUids( sessionid_t sid, criteria_t* cri, userid_t** uids, int* uidsLen ) |
| 526 |
{ |
{ |
| 527 |
return RES_ERROR; |
return RES_ERROR; |
| 528 |
} |
} |
| 548 |
* @return |
* @return |
| 549 |
* |
* |
| 550 |
*/ |
*/ |
| 551 |
result_t getGroupsByUid( sessionid_t sid, userid_t uid, const criteria_t* cri, groupid_t** gids, int* gidsLen ) |
result_t getGroupsByUid( sessionid_t sid, userid_t uid, criteria_t* cri, groupid_t** gids, int* gidsLen ) |
| 552 |
{ |
{ |
| 553 |
return RES_ERROR; |
return RES_ERROR; |
| 554 |
} |
} |
| 574 |
* @return |
* @return |
| 575 |
* |
* |
| 576 |
*/ |
*/ |
| 577 |
result_t dumpGids( sessionid_t sid, const criteria_t* cri, groupid_t** gids, int* gidsLen ) |
result_t dumpGids( sessionid_t sid, criteria_t* cri, groupid_t** gids, int* gidsLen ) |
| 578 |
{ |
{ |
| 579 |
return RES_ERROR; |
return RES_ERROR; |
| 580 |
} |
} |
| 587 |
* @return |
* @return |
| 588 |
* |
* |
| 589 |
*/ |
*/ |
| 590 |
result_t dumpGroupAdmins( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen ) |
result_t dumpGroupAdmins( sessionid_t sid, groupid_t gid, criteria_t* cri, userid_t** uids, int* uidsLen ) |
| 591 |
{ |
{ |
| 592 |
return RES_ERROR; |
return RES_ERROR; |
| 593 |
} |
} |
| 626 |
* @return |
* @return |
| 627 |
* |
* |
| 628 |
*/ |
*/ |
| 629 |
result_t getMembers( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen ) |
result_t getMembers( sessionid_t sid, groupid_t gid, criteria_t* cri, userid_t** uids, int* uidsLen ) |
| 630 |
{ |
{ |
| 631 |
return RES_ERROR; |
return RES_ERROR; |
| 632 |
} |
} |
| 691 |
* @return |
* @return |
| 692 |
* |
* |
| 693 |
*/ |
*/ |
| 694 |
result_t getGroups( sessionid_t sid, groupid_t* gids, int gidsLen, const criteria_t* cri, const group_t** groups, int* groupsLen ) |
result_t getGroups( sessionid_t sid, groupid_t* gids, int gidsLen, criteria_t* cri, const group_t** groups, int* groupsLen ) |
| 695 |
{ |
{ |
| 696 |
return RES_ERROR; |
return RES_ERROR; |
| 697 |
} |
} |