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.15 by aga, Sat Nov 27 02:22:22 2004 UTC revision 1.16 by youi, Sat Nov 27 06:29:29 2004 UTC
# Line 2  Line 2 
2   *   *
3   * $Revision$   * $Revision$
4   * $Log$   * $Log$
5     * Revision 1.16  2004/11/27 06:29:29  youi
6     * getAccountCountを定義.
7     * dumpGidsを定義.
8     * insertGroup, deleteGroup, updateGroupを定義.
9     * getGroup, getGroupsを定義.
10     * データベース初期前の呼出に対し,RES_DB_NOT_INITIALIZEDを返す処理を各関数に追加
11     * (未対応の関数が残っている)
12     *
13   * Revision 1.15  2004/11/27 02:22:22  aga   * Revision 1.15  2004/11/27 02:22:22  aga
14   * ・initializeDB前にaddSlashes()を呼ぶと落ちるのを修正.   * ・initializeDB前にaddSlashes()を呼ぶと落ちるのを修正.
15   *   *
# Line 193  result_t activate( sessionid_t sid, user Line 201  result_t activate( sessionid_t sid, user
201   */   */
202  int getAccountCount( sessionid_t sid )  int getAccountCount( sessionid_t sid )
203  {  {
204      return 0;      if( mysql == NULL ) return 0;
205        if( !isValidSessionID( sid ) ) return 0;
206        
207        int ret = 0;
208        string sql;
209        MYSQL_RES* result;
210        MYSQL_ROW row;
211        
212        //アカウント数を求める
213        sql = "SELECT COUNT(*) FROM " + dbprefix + "_vpaccount_users ";
214        if( mysql_query( mysql, sql.c_str( ) ) ){
215            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
216            return 0;
217        }
218        result = mysql_store_result( mysql ) ;
219        if( row = mysql_fetch_row(result) ){
220            ret = atoi( row[ 0 ] );
221        }else{
222            mysql_free_result( result );
223            return 0;
224        }
225        mysql_free_result( result );
226        return ret;
227  }  }
228    
229  /**  /**
# Line 206  int getAccountCount( sessionid_t sid ) Line 236  int getAccountCount( sessionid_t sid )
236   */   */
237  result_t deleteAccount( sessionid_t sid, userid_t uid )  result_t deleteAccount( sessionid_t sid, userid_t uid )
238  {  {
239        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
240      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
241            
242      string sql;      string sql;
# Line 260  result_t getAccount( sessionid_t sid, us Line 291  result_t getAccount( sessionid_t sid, us
291   */   */
292  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 )
293  {  {
294        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
295      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
296            
297      string sql;      string sql;
# Line 343  result_t getAccounts( sessionid_t sid, c Line 375  result_t getAccounts( sessionid_t sid, c
375   */   */
376  result_t insertAccount( sessionid_t sid, const account_t* account )  result_t insertAccount( sessionid_t sid, const account_t* account )
377  {  {
378        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
379      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
380            
381      string sql;      string sql;
# Line 449  result_t insertAccount( sessionid_t sid, Line 482  result_t insertAccount( sessionid_t sid,
482   */   */
483  result_t updateAccount( sessionid_t sid, const account_t* account )  result_t updateAccount( sessionid_t sid, const account_t* account )
484  {  {
485        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
486      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;      if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
487            
488      string sql;      string sql;
# Line 587  bool isGroupAdmin( sessionid_t sid, grou Line 621  bool isGroupAdmin( sessionid_t sid, grou
621   */   */
622  result_t dumpGids( sessionid_t sid, criteria_t* cri, groupid_t** gids, int* gidsLen )  result_t dumpGids( sessionid_t sid, criteria_t* cri, groupid_t** gids, int* gidsLen )
623  {  {
624      return RES_ERROR;      if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
625        if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
626        
627        string sql;
628        MYSQL_RES* result;
629        MYSQL_ROW row;
630        groupid_t* dst = 0;
631        
632        //グループ数を求める
633        sql = "SELECT COUNT(*) FROM " + dbprefix + "_vpaccount_groups ";
634        sql += criteria2str( cri );
635        if( mysql_query( mysql, sql.c_str( ) ) ){
636            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
637            return RES_DB_QUERY_ERROR;
638        }
639        result = mysql_store_result( mysql ) ;
640        if( row = mysql_fetch_row(result) ){
641            *gidsLen = atoi( row[ 0 ] );
642            dst = new groupid_t[ *gidsLen ];
643        }else{
644            mysql_free_result( result );
645            return RES_ERROR;
646        }
647        mysql_free_result( result );
648        
649        sql = "SELECT gid FROM " + dbprefix + "_vpaccount_groups ";
650        sql += criteria2str( cri );
651        if( mysql_query( mysql, sql.c_str( ) ) ){
652            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
653            return RES_DB_QUERY_ERROR;
654        }
655        
656        result = mysql_use_result( mysql ) ;
657        for( int i = 0; ( row = mysql_fetch_row(result) ) != 0 && i < *gidsLen ; i++ ){
658            dst[ i ] = atoi( row[ 0 ] );
659        }
660        mysql_free_result( result );
661        *gids = dst;
662        
663        return RES_OK;
664  }  }
665    
666  /**  /**
# Line 652  result_t getMembers( sessionid_t sid, gr Line 725  result_t getMembers( sessionid_t sid, gr
725   */   */
726  result_t deleteGroup( sessionid_t sid, groupid_t gid )  result_t deleteGroup( sessionid_t sid, groupid_t gid )
727  {  {
728      return RES_ERROR;      if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
729        if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
730        
731        string sql;
732        sql = "DELETE FROM " + dbprefix + "_vpaccount_groups ";
733        sql += "WHERE gid = " + string( unsignedIntToString( gid ) );
734        if( mysql_query( mysql, sql.c_str( ) ) ){
735            fprintf( stderr, "%s\n", sql.c_str( ) );
736            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
737            return RES_DB_QUERY_ERROR;
738        }
739        return RES_OK;
740  }  }
741    
742  /**  /**
# Line 665  result_t deleteGroup( sessionid_t sid, g Line 749  result_t deleteGroup( sessionid_t sid, g
749   */   */
750  result_t insertGroup( sessionid_t sid, const group_t* group )  result_t insertGroup( sessionid_t sid, const group_t* group )
751  {  {
752      return RES_ERROR;      if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
753        if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
754        
755        string sql;
756        sql = "INSERT INTO " + dbprefix + "_vpaccount_groups ( gname, gdesc ) VALUES (";
757        sql += "'" + string( addSlashes( group -> getGname( ) ) ) + "', ";
758        sql += "'" + string( addSlashes( group -> getDesc( ) ) ) + "' )";
759        if( mysql_query( mysql, sql.c_str( ) ) ){
760            fprintf( stderr, "%s\n", sql.c_str( ) );
761            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
762            return RES_DB_QUERY_ERROR;
763        }
764        return RES_OK;
765  }  }
766    
767  /**  /**
# Line 678  result_t insertGroup( sessionid_t sid, c Line 774  result_t insertGroup( sessionid_t sid, c
774   */   */
775  result_t updateGroup( sessionid_t sid, const group_t* group )  result_t updateGroup( sessionid_t sid, const group_t* group )
776  {  {
777      return RES_ERROR;      if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
778        if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
779        
780        string sql;
781        sql = "UPDATE " + dbprefix + "_vpaccount_groups SET ";
782        sql += "gname='" + string( addSlashes( group -> getGname( ) ) ) + "', ";
783        sql += "gdesc='" + string( addSlashes( group -> getDesc( ) ) ) + "' ";
784        sql += "WHERE gid=" + string( unsignedIntToString( group -> getGID( ) ) );
785        if( mysql_query( mysql, sql.c_str( ) ) ){
786            fprintf( stderr, "%s\n", sql.c_str( ) );
787            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
788            return RES_DB_QUERY_ERROR;
789        }
790        return RES_OK;
791  }  }
792    
793  /**  /**
# Line 691  result_t updateGroup( sessionid_t sid, c Line 800  result_t updateGroup( sessionid_t sid, c
800   */   */
801  result_t getGroup( sessionid_t sid, groupid_t gid, const group_t** group )  result_t getGroup( sessionid_t sid, groupid_t gid, const group_t** group )
802  {  {
803      return RES_ERROR;      int len;
804        static criteria c;
805        result_t res = getGroups( sid, &gid, 1, &c, group, &len );
806        if( len == 0 ) return RES_NO_SUCH_GROUP;
807        return res;
808  }  }
809    
810  /**  /**
# Line 704  result_t getGroup( sessionid_t sid, grou Line 817  result_t getGroup( sessionid_t sid, grou
817   */   */
818  result_t getGroups( sessionid_t sid, groupid_t* gids, int gidsLen, 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 )
819  {  {
820      return RES_ERROR;      if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
821        if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
822        
823        string sql;
824        MYSQL_RES* result;
825        MYSQL_ROW row;
826        group_t* dst = new group_t[ gidsLen ];
827        
828        sql += "SELECT gid, gname, gdesc ";
829        sql += "FROM " + dbprefix + "_vpaccount_groups ";
830        sql += "WHERE gid=" + string( unsignedIntToString( gids[ 0 ] ) );
831        for( int i = 1; i < gidsLen; i++ ){
832            sql += " OR gid=" + string( unsignedIntToString( gids[ i ] ) );
833        }
834        sql += criteria2str( cri );
835        if( mysql_query( mysql, sql.c_str( ) ) ){
836            fprintf( stderr, "%s\n", sql.c_str( ) );
837            fprintf( stderr, "%d %s\n", mysql_errno(mysql), mysql_error(mysql) );
838            return RES_DB_QUERY_ERROR;
839        }
840        result = mysql_use_result( mysql ) ;
841        *groupsLen=0;
842        for( int i = 0; ( row = mysql_fetch_row(result) ) != 0 && i < gidsLen ; i++ ){
843            dst[ i ].setGID( atoi( row[ 0 ] ) );
844            dst[ i ].setGname( row[ 1 ] );
845            dst[ i ].setDesc( row[ 2 ] );
846            ( *groupsLen )++;
847        }
848        mysql_free_result( result );
849        *groups = dst;
850        return RES_OK;
851  }  }
852    
853  /**  /**
# Line 732  bool isModerator( sessionid_t sid, useri Line 875  bool isModerator( sessionid_t sid, useri
875   */   */
876  result_t getUid( const char* uname, userid_t* uid )  result_t getUid( const char* uname, userid_t* uid )
877  {  {
878      string sql;      if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
       
879      if( uname == NULL ) return RES_ERROR;      if( uname == NULL ) return RES_ERROR;
880            
881        string sql;
882      string uname2 = addSlashes( uname );      string uname2 = addSlashes( uname );
883      sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + uname2 + "';";      sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + uname2 + "';";
884      if( mysql_query( mysql, sql.c_str( ) ) ){      if( mysql_query( mysql, sql.c_str( ) ) ){
# Line 794  static result_t addSession( userid_t uid Line 937  static result_t addSession( userid_t uid
937   */   */
938  result_t loginUser(const char* uname, const char* passwd, sessionid_t* session )  result_t loginUser(const char* uname, const char* passwd, sessionid_t* session )
939  {  {
940        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
941        
942      result_t ret;      result_t ret;
943      string sql;      string sql;
944            
# Line 867  void logoutUser( sessionid_t sid ) Line 1012  void logoutUser( sessionid_t sid )
1012   */   */
1013  result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* session )  result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* session )
1014  {  {
1015        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
1016        
1017      result_t ret;      result_t ret;
1018      string sql;      string sql;
1019            
# Line 903  result_t createSession( const char* sess Line 1050  result_t createSession( const char* sess
1050   */   */
1051  result_t getSession( sessionid_t sess_id, const session_t** ppsession )  result_t getSession( sessionid_t sess_id, const session_t** ppsession )
1052  {  {
1053        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
1054        
1055      result_t ret;      result_t ret;
1056      string sql;      string sql;
1057            
# Line 945  result_t getSession( sessionid_t sess_id Line 1094  result_t getSession( sessionid_t sess_id
1094   */   */
1095  bool isValidSessionID( sessionid_t sid )  bool isValidSessionID( sessionid_t sid )
1096  {  {
1097        if( mysql == NULL ) return RES_DB_NOT_INITIALIZED;
1098        
1099      string sql;      string sql;
1100      string sidstr;      string sidstr;
1101      char buf[ 12 ];      char buf[ 12 ];
# Line 966  bool isValidSessionID( sessionid_t sid ) Line 1117  bool isValidSessionID( sessionid_t sid )
1117  void freeResult( const account_t* ptr ){ delete[] ( account_t* )ptr; }  void freeResult( const account_t* ptr ){ delete[] ( account_t* )ptr; }
1118  void freeResult( const group_t* ptr ){ delete[] ( group_t* )ptr; }  void freeResult( const group_t* ptr ){ delete[] ( group_t* )ptr; }
1119  void freeResult( const session_t* ptr ){ delete[] ( session_t* )ptr; }  void freeResult( const session_t* ptr ){ delete[] ( session_t* )ptr; }
1120  void freeResult( const int* ptr ){ delete[] ( int* )ptr; }  void freeResult( const unsigned int* ptr ){ delete[] ( unsigned int* )ptr; }
1121    
1122  static string errstr;  static string errstr;
1123  const char* getLastErrorString()  const char* getLastErrorString()

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

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