| 2 |
* |
* |
| 3 |
* $Revision$ |
* $Revision$ |
| 4 |
* $Log$ |
* $Log$ |
| 5 |
|
* Revision 1.17 2004/11/27 09:35:49 youi |
| 6 |
|
* isActivatedを定義. |
| 7 |
|
* activateを定義. |
| 8 |
|
* dumpUidを定義. |
| 9 |
|
* |
| 10 |
* Revision 1.16 2004/11/27 06:29:29 youi |
* Revision 1.16 2004/11/27 06:29:29 youi |
| 11 |
* getAccountCountを定義. |
* getAccountCountを定義. |
| 12 |
* dumpGidsを定義. |
* dumpGidsを定義. |
| 180 |
*/ |
*/ |
| 181 |
bool isActivated( sessionid_t sid, userid_t uid ) |
bool isActivated( sessionid_t sid, userid_t uid ) |
| 182 |
{ |
{ |
| 183 |
|
if( mysql == NULL ) return false; |
| 184 |
|
if( !isValidSessionID( sid ) ) return false; |
| 185 |
|
|
| 186 |
|
string sql; |
| 187 |
|
MYSQL_RES* result; |
| 188 |
|
MYSQL_ROW row; |
| 189 |
|
|
| 190 |
|
sql = "SELECT * FROM " + dbprefix + "_vpaccount_users "; |
| 191 |
|
sql += "WHERE activate=1 and uid=" + string( unsignedIntToString( uid ) ); |
| 192 |
|
if( mysql_query( mysql, sql.c_str( ) ) ){ |
| 193 |
|
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
| 194 |
|
return false; |
| 195 |
|
} |
| 196 |
|
result = mysql_store_result( mysql ) ; |
| 197 |
|
if( row = mysql_fetch_row(result) ){ |
| 198 |
|
mysql_free_result( result ); |
| 199 |
|
return true; |
| 200 |
|
} |
| 201 |
return false; |
return false; |
| 202 |
} |
} |
| 203 |
|
|
| 211 |
*/ |
*/ |
| 212 |
result_t activate( sessionid_t sid, userid_t uid, bool activate ) |
result_t activate( sessionid_t sid, userid_t uid, bool activate ) |
| 213 |
{ |
{ |
| 214 |
return RES_ERROR; |
if( mysql == NULL ) return RES_DB_NOT_INITIALIZED; |
| 215 |
|
if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION; |
| 216 |
|
|
| 217 |
|
string sql; |
| 218 |
|
MYSQL_RES* result; |
| 219 |
|
MYSQL_ROW row; |
| 220 |
|
|
| 221 |
|
sql = "UPDATE " + dbprefix + "_vpaccount_users "; |
| 222 |
|
sql += "SET activate=" + string( activate ? "1" : "0" ); |
| 223 |
|
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
| 224 |
|
if( mysql_query( mysql, sql.c_str( ) ) ){ |
| 225 |
|
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
| 226 |
|
return RES_DB_QUERY_ERROR; |
| 227 |
|
} |
| 228 |
|
if ( mysql_affected_rows(mysql) == 0 ){ |
| 229 |
|
// 更新失敗 |
| 230 |
|
return RES_NO_SUCH_USER; |
| 231 |
|
} |
| 232 |
|
return RES_OK; |
| 233 |
} |
} |
| 234 |
|
|
| 235 |
/** |
/** |
| 327 |
* @param cri 結果の範囲指定,ソート条件指定 |
* @param cri 結果の範囲指定,ソート条件指定 |
| 328 |
* @param accounts 検索結果の配列のポインタを書き込む引数 |
* @param accounts 検索結果の配列のポインタを書き込む引数 |
| 329 |
* @param accountsLen 検索結果の数(配列*accountsの要素数) |
* @param accountsLen 検索結果の数(配列*accountsの要素数) |
| 330 |
* @return RES_OK| RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR |
* @return RES_OK| RES_DB_NOT_INITIALIZED| RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR |
| 331 |
* |
* |
| 332 |
*/ |
*/ |
| 333 |
result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, criteria_t* cri, const account_t** accounts, int* accountsLen ) |
result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, criteria_t* cri, const account_t** accounts, int* accountsLen ) |
| 602 |
|
|
| 603 |
/** |
/** |
| 604 |
* |
* |
| 605 |
* ユーザID一覧 |
* criteria_tで指定された範囲のユーザIDを返す. |
| 606 |
|
* ユーザIDの配列を確保してそこに書き込み,配列のアドレスを*uidsに書き込む. |
| 607 |
|
* 配列のサイズを*uidsLenに書き込む |
| 608 |
* |
* |
| 609 |
* @param |
* @param sid セッションID |
| 610 |
* @return |
* @param cri 結果の範囲指定,ソート条件指定 |
| 611 |
|
* @param uids ユーザのUIDの配列 |
| 612 |
|
* @param uidsLen uids配列の要素数 |
| 613 |
|
* @return RES_OK| RES_DB_NOT_INITIALIZED| RES_NO_SUCH_SESSION | RES_DB_QUERY_ERROR| RES_ERROR |
| 614 |
* |
* |
| 615 |
*/ |
*/ |
| 616 |
result_t dumpUids( sessionid_t sid, criteria_t* cri, userid_t** uids, int* uidsLen ) |
result_t dumpUids( sessionid_t sid, criteria_t* cri, userid_t** uids, int* uidsLen ) |
| 617 |
{ |
{ |
| 618 |
return RES_ERROR; |
if( mysql == NULL ) return RES_DB_NOT_INITIALIZED; |
| 619 |
|
if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION; |
| 620 |
|
|
| 621 |
|
string sql; |
| 622 |
|
MYSQL_RES* result; |
| 623 |
|
MYSQL_ROW row; |
| 624 |
|
userid_t* dst = 0; |
| 625 |
|
|
| 626 |
|
sql = "SELECT COUNT(*) FROM " + dbprefix + "_vpaccount_users "; |
| 627 |
|
sql += criteria2str( cri ); |
| 628 |
|
if( mysql_query( mysql, sql.c_str( ) ) ){ |
| 629 |
|
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
| 630 |
|
return RES_DB_QUERY_ERROR; |
| 631 |
|
} |
| 632 |
|
result = mysql_store_result( mysql ) ; |
| 633 |
|
if( row = mysql_fetch_row(result) ){ |
| 634 |
|
*uidsLen = atoi( row[ 0 ] ); |
| 635 |
|
dst = new userid_t[ *uidsLen ]; |
| 636 |
|
}else{ |
| 637 |
|
mysql_free_result( result ); |
| 638 |
|
return RES_ERROR; |
| 639 |
|
} |
| 640 |
|
mysql_free_result( result ); |
| 641 |
|
|
| 642 |
|
sql = "SELECT uid FROM " + dbprefix + "_vpaccount_users "; |
| 643 |
|
sql += criteria2str( cri ); |
| 644 |
|
if( mysql_query( mysql, sql.c_str( ) ) ){ |
| 645 |
|
fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) ); |
| 646 |
|
return RES_DB_QUERY_ERROR; |
| 647 |
|
} |
| 648 |
|
|
| 649 |
|
result = mysql_use_result( mysql ) ; |
| 650 |
|
for( int i = 0; ( row = mysql_fetch_row(result) ) != 0 && i < *uidsLen ; i++ ){ |
| 651 |
|
dst[ i ] = atoi( row[ 0 ] ); |
| 652 |
|
} |
| 653 |
|
mysql_free_result( result ); |
| 654 |
|
*uids = dst; |
| 655 |
|
|
| 656 |
|
return RES_OK; |
| 657 |
} |
} |
| 658 |
|
|
| 659 |
/** |
/** |
| 1178 |
*/ |
*/ |
| 1179 |
bool isValidSessionID( sessionid_t sid ) |
bool isValidSessionID( sessionid_t sid ) |
| 1180 |
{ |
{ |
| 1181 |
if( mysql == NULL ) return RES_DB_NOT_INITIALIZED; |
if( mysql == NULL ) return false; |
| 1182 |
|
|
| 1183 |
string sql; |
string sql; |
| 1184 |
string sidstr; |
string sidstr; |
| 1196 |
}else{ |
}else{ |
| 1197 |
return false; |
return false; |
| 1198 |
} |
} |
| 1199 |
|
mysql_free_result( result ); |
| 1200 |
} |
} |
| 1201 |
|
|
| 1202 |
void freeResult( const account_t* ptr ){ delete[] ( account_t* )ptr; } |
void freeResult( const account_t* ptr ){ delete[] ( account_t* )ptr; } |