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.12 by youi, Fri Nov 26 09:45:28 2004 UTC revision 1.13 by youi, Sat Nov 27 00:35:39 2004 UTC
# Line 2  Line 2 
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   *   *
# Line 79  string addSlashes( const char *str ) Line 84  string addSlashes( const char *str )
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   *   *
# Line 188  result_t deleteAccount( sessionid_t sid, Line 219  result_t deleteAccount( sessionid_t sid,
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 セッション
# Line 491  result_t updateAccount( sessionid_t sid, Line 522  result_t updateAccount( sessionid_t 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  }  }
# Line 517  int getGroupCount( sessionid_t sid ) Line 548  int getGroupCount( sessionid_t sid )
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  }  }
# Line 543  bool isGroupAdmin( sessionid_t sid, grou Line 574  bool isGroupAdmin( sessionid_t sid, grou
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  }  }
# Line 556  result_t dumpGids( sessionid_t sid, cons Line 587  result_t dumpGids( sessionid_t sid, cons
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  }  }
# Line 595  result_t insertMember( sessionid_t sid, Line 626  result_t insertMember( sessionid_t sid,
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  }  }
# Line 660  result_t getGroup( sessionid_t sid, grou Line 691  result_t getGroup( sessionid_t sid, grou
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  }  }

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

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