Develop and Download Open Source Software

Browse CVS Repository

Diff of /xoonips/AL/commonal.cc

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

revision 1.16 by youi, Sat Nov 27 06:29:29 2004 UTC revision 1.17 by youi, Sat Nov 27 09:35:49 2004 UTC
# Line 2  Line 2 
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を定義.
# Line 175  result_t initializeDB( const char* host, Line 180  result_t initializeDB( const char* host,
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    
# Line 188  bool isActivated( sessionid_t sid, useri Line 211  bool isActivated( sessionid_t sid, useri
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  /**  /**
# Line 286  result_t getAccount( sessionid_t sid, us Line 327  result_t getAccount( sessionid_t sid, us
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 )
# Line 561  result_t updateAccount( sessionid_t sid, Line 602  result_t updateAccount( sessionid_t sid,
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  /**  /**
# Line 1094  result_t getSession( sessionid_t sess_id Line 1178  result_t getSession( sessionid_t sess_id
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;
# Line 1112  bool isValidSessionID( sessionid_t sid ) Line 1196  bool isValidSessionID( sessionid_t sid )
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; }

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

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