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.6 by aga, Fri Nov 26 04:35:55 2004 UTC revision 1.7 by youi, Fri Nov 26 04:51:47 2004 UTC
# Line 2  Line 2 
2   *   *
3   * $Revision$   * $Revision$
4   * $Log$   * $Log$
5     * Revision 1.7  2004/11/26 04:51:47  youi
6     * dbprefixを定義した.
7     * insertAccountを定義した.
8     * isValidSessionIDを定義した.
9     *
10   * Revision 1.6  2004/11/26 04:35:55  aga   * Revision 1.6  2004/11/26 04:35:55  aga
11   * ・loginUser(), logoutUser()を作成.   * ・loginUser(), logoutUser()を作成.
12   *   *
# Line 23  Line 28 
28   *   *
29   *   *
30   */   */
   
31  #include <stdio.h>  #include <stdio.h>
32  #include <stdlib.h>  #include <stdlib.h>
33  #include <string.h>  #include <string.h>
34  #include <mysql.h>  #include <mysql.h>
35  #include <string>  #include <string>
36    using namespace std;
37    
38  #include "common.h"  #include "common.h"
39  #include "account.h"  #include "account.h"
# Line 37  Line 42 
42  #include "criteria.h"  #include "criteria.h"
43  #include "commonal.h"  #include "commonal.h"
44    
45    
46  static MYSQL* mysql = NULL; //!< MySQLのハンドル  static MYSQL* mysql = NULL; //!< MySQLのハンドル
47    static string dbprefix; //!< XOOPSデータベーステーブルのPREFIX
48    
49  /**  /**
50   *   *
# Line 74  result_t initializeDB( const char* host, Line 81  result_t initializeDB( const char* host,
81      if ( mysql != NULL )      if ( mysql != NULL )
82          mysql_close( mysql );          mysql_close( mysql );
83            
84        dbprefix = prefix;
85        
86      // 初期化と接続      // 初期化と接続
87      mysql = mysql_init(NULL);      mysql = mysql_init(NULL);
88      if ( mysql == NULL ){      if ( mysql == NULL ){
# Line 171  result_t getAccounts( sessionid_t sid, c Line 180  result_t getAccounts( sessionid_t sid, c
180   *   *
181   * アカウント登録   * アカウント登録
182   *   *
183     * @param sid セッション
184   * @param   * @param
185   * @return   * @return
186   *   *
187   */   */
188  result_t insertAccount( sessionid_t sid, const account_t* account )  result_t insertAccount( sessionid_t sid, const account_t* account )
189  {  {
190      return RES_ERROR;  //    if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
191        string sql;
192        string tmp;
193        char buf[ 12 ];
194        
195        //xoopsのユーザテーブルに書き込む
196        sql = "INSERT INTO " + dbprefix + "_users (uname, name, 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) VALUES (";
197        sql += "'" + string( addSlashes( account -> getUname( ) ) ) + "', ";
198        sql += "'" + string( addSlashes( account -> getName( ) ) ) + "', ";
199        sql += "'" + string( addSlashes( account -> getEmail( ) ) ) + "', ";
200        sql += "'" + string( addSlashes( account -> getURL( ) ) ) + "', ";
201        sql += "'" + string( addSlashes( account -> getUserAvatar( ) ) ) + "', ";
202        snprintf( buf, 12, "%d", time( NULL ) );
203        sql += string( buf ) + ", ";
204        sql += "'" + string( addSlashes( account -> getUserIcq( ) ) ) + "', ";
205        sql += "'" + string( addSlashes( account -> getUserFrom( ) ) ) + "', ";
206        sql += "'" + string( addSlashes( account -> getUserSig( ) ) ) + "', ";
207        snprintf( buf, 12, "%d", account -> getUserViewemail( ) );
208        sql += string( buf ) + ", ";
209        sql += "'" + string( addSlashes( account -> getActkey( ) ) ) + "', ";
210        sql += "'" + string( addSlashes( account -> getUserAim( ) ) ) + "', ";
211        sql += "'" + string( addSlashes( account -> getUserYim( ) ) ) + "', ";
212        sql += "'" + string( addSlashes( account -> getUserMsnm( ) ) ) + "', ";
213        sql += "'" + string( addSlashes( account -> getPass( ) ) ) + "', ";
214        snprintf( buf, 12, "%d", account -> getPosts( ) );
215        sql += string( buf ) + ", ";
216        snprintf( buf, 12, "%d", account -> getAttachsig( ) );
217        sql += string( buf ) + ", ";
218        snprintf( buf, 12, "%d", account -> getRank( ) );
219        sql += string( buf ) + ", ";
220        snprintf( buf, 12, "%d", account -> getLevel( ) );
221        sql += string( buf ) + ", ";
222        sql += "'" + string( addSlashes( account -> getTheme( ) ) ) + "', ";
223        snprintf( buf, 12, "%lf", account -> getTimezoneOffset( ) );
224        sql += string( buf ) + ", ";
225        sql += "0, "; //last login
226        sql += "'" + string( addSlashes( account -> getUmode( ) ) ) + "', ";
227        snprintf( buf, 12, "%d", account -> getUorder( ) );
228        sql += string( buf ) + ", ";
229        snprintf( buf, 12, "%d", account -> getNotifyMethod( ) );
230        sql += string( buf ) + ", ";
231        snprintf( buf, 12, "%d", account -> getNotifyMode( ) );
232        sql += string( buf ) + ", ";
233        sql += "'" + string( addSlashes( account -> getUserOcc( ) ) ) + "', ";
234        sql += "'" + string( addSlashes( account -> getBio( ) ) ) + "', ";
235        sql += "'" + string( addSlashes( account -> getUserIntrest( ) ) ) + "', ";
236        snprintf( buf, 12, "%d", account -> getUserMailok( ) );
237        sql += string( buf ) + ")";
238        fprintf( stderr, "%s\n", sql.c_str( ) );
239        if( mysql_query( mysql, sql.c_str( ) ) ){
240            return RES_DB_QUERY_ERROR;
241        }
242        
243        //ユーザIDを取得する
244        userid_t uid;
245        if( getUid( account -> getUname( ), &uid ) != RES_OK ){
246            return RES_ERROR;
247        }
248        
249        //vpaccountのユーザテーブルに残りの情報を書き込む
250        sql = "INSERT INTO " + dbprefix + "_vpaccount_users (uid, activate, address, institute, tel, organization, country, zipcode, fax, base_url, notice_mail, datetime) VALUES (";
251        snprintf( buf, 12, "%d", uid );
252        sql += string( buf ) + ", ";
253        if( account -> getActivate() ){
254            sql += "1, ";
255        }else{
256            sql += "0, ";
257        }
258        sql += "'" + string( addSlashes( account -> getAddress() ) ) + "', ";
259        sql += "'" + string( addSlashes( account -> getInstitute() ) ) + "', ";
260        sql += "'" + string( addSlashes( account -> getTel() ) ) + "', ";
261        sql += "'" + string( addSlashes( account -> getOrganization() ) ) + "', ";
262        sql += "'" + string( addSlashes( account -> getCountry() ) ) + "', ";
263        sql += "'" + string( addSlashes( account -> getZipcode() ) ) + "', ";
264        sql += "'" + string( addSlashes( account -> getFax() ) ) + "', ";
265        sql += "'" + string( addSlashes( account -> getBaseURL() ) ) + "', ";
266        snprintf( buf, 12, "%d", account -> getNoticeMail( ) );
267        sql += string( buf ) + ", ";
268        snprintf( buf, 12, "%d", account -> getNoticeMailSince( ) );
269        sql += string( buf ) + ")";
270        fprintf( stderr, "%s\n", sql.c_str( ) );
271        if( mysql_query( mysql, sql.c_str( ) ) ){
272            //xoops_usersへinsertしたレコードを削除する
273            sql = "DELETE FROM " + dbprefix + "_users where uid=";
274            snprintf( buf, 12, "%d", uid );
275            sql += string( buf );
276            return RES_DB_QUERY_ERROR;
277        }
278        
279        return RES_OK;
280  }  }
281    
282  /**  /**
# Line 392  bool isModerator( sessionid_t sid, useri Line 491  bool isModerator( sessionid_t sid, useri
491   *   *
492   * ユーザID取得   * ユーザID取得
493   *   *
494   * @param   * @param uname IDを取得したいユーザー名
495   * @return   * @param uid IDを代入したい変数のポインタ
496     * @return RES_ERROR | RES_OK
497     * @refer result_t
498   *   *
499   */   */
500  result_t getUid( const char* uname, userid_t* uid )  result_t getUid( const char* uname, userid_t* uid )
501  {  {
502      string sql;      string sql;
503            
504      sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + uname + "'";      if( uname == NULL ) return RES_ERROR;
505        
506        string uname2 = addSlashes( uname );
507        sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + uname2 + "'";
508      if( mysql_query( mysql, sql.c_str( ) ) ){      if( mysql_query( mysql, sql.c_str( ) ) ){
509          return RES_DB_QUERY_ERROR;          return RES_DB_QUERY_ERROR;
510      }      }
# Line 520  result_t getSessionDetail( sessionid_t s Line 624  result_t getSessionDetail( sessionid_t s
624      return RES_ERROR;      return RES_ERROR;
625  }  }
626    
627    /**
628     *
629     * セッションの正当性をチェックする.
630     *
631     * @param sid チェックしたいsession
632     * @return true 正当
633     * @return false 不正
634     *
635     */
636    bool isValidSessionID( sessionid_t sid )
637    {
638        string sql;
639        string sidstr;
640        char buf[ 12 ];
641        snprintf( buf, 12, "%d", sid );
642        
643        sql = "SELECT * FROM " + dbprefix + "_vpaccount_session WHERE session_id=" + string( buf );
644        if( mysql_query( mysql, sql.c_str( ) ) ){
645            return false;
646        }
647        MYSQL_RES* result = mysql_use_result( mysql ) ;
648        MYSQL_ROW row = mysql_fetch_row(result);
649        if( row ){
650            return true;
651        }else{
652            return false;
653        }
654    }
655    
656  void freeResult( account_t* ptr ){ delete[] ptr; }  void freeResult( account_t* ptr ){ delete[] ptr; }
657    
658  void freeResult( group_t* ptr ){ delete[] ptr; }  void freeResult( group_t* ptr ){ delete[] ptr; }
# Line 528  void freeResult( session_t* ptr ){ delet Line 661  void freeResult( session_t* ptr ){ delet
661    
662  void freeResult( int* ptr ){ delete[] ptr; }  void freeResult( int* ptr ){ delete[] ptr; }
663    
 using namespace std;  
664  static string errstr;  static string errstr;
665  const char* getLastErrorString()  const char* getLastErrorString()
666  {  {

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

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