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.48 by aga, Sat Jan 22 04:18:22 2005 UTC revision 1.49 by youi, Sat Jan 22 09:30:58 2005 UTC
# Line 2  Line 2 
2   *   *
3   * $Revision$   * $Revision$
4   * $Log$   * $Log$
5     * Revision 1.49  2005/01/22 09:30:58  youi
6     * setLastErrorStringの宣言を追加した.
7     *
8   * Revision 1.48  2005/01/22 04:18:22  aga   * Revision 1.48  2005/01/22 04:18:22  aga
9   * ・loginUser, insertAccount内ではmd5()を行わないよう修正.   * ・loginUser, insertAccount内ではmd5()を行わないよう修正.
10   *   *
# Line 251  static SQLHANDLE hstmt = NULL; Line 254  static SQLHANDLE hstmt = NULL;
254    
255  static void processEfetch(xmlTextReaderPtr reader, pubmed_t* p);  static void processEfetch(xmlTextReaderPtr reader, pubmed_t* p);
256  static int streamPubmedFile(const char *filename, pubmed_t* p);  static int streamPubmedFile(const char *filename, pubmed_t* p);
   
257  static result_t insertIndexInternal( sessionid_t sid, index_t *index, indexid_t *xid );  static result_t insertIndexInternal( sessionid_t sid, index_t *index, indexid_t *xid );
   
258  static string odbcDiagString( SQLSMALLINT HandleType, SQLHANDLE hstmt, SQLRETURN sqlcode );  static string odbcDiagString( SQLSMALLINT HandleType, SQLHANDLE hstmt, SQLRETURN sqlcode );
259  static result_t deleteMemberNoLimit( sessionid_t sid, groupid_t gid, userid_t uid );  static result_t deleteMemberNoLimit( sessionid_t sid, groupid_t gid, userid_t uid );
260    static void setLastErrorString( const char* str );
261    
262  static result_t countResultRows( const char* sql, SQLINTEGER* count )  static result_t countResultRows( const char* sql, SQLINTEGER* count )
263  {  {
# Line 3151  result_t insertItem( sessionid_t sid, co Line 3153  result_t insertItem( sessionid_t sid, co
3153                              //insert into private index                              //insert into private index
3154                              sql = "SELECT private_index_id FROM " + dbprefix + "_xnpaccount_users ";                              sql = "SELECT private_index_id FROM " + dbprefix + "_xnpaccount_users ";
3155                              sql += " WHERE uid=" + unsignedIntToString( uid );                              sql += " WHERE uid=" + unsignedIntToString( uid );
3156                              //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );                              //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3157                              if( ( ret = queryGetUnsignedInt( "insertItem", sql, (unsigned int*)&private_xid ) ) == RES_OK ){                              if( ( ret = queryGetUnsignedInt( "insertItem", sql, (unsigned int*)&private_xid ) ) == RES_OK ){
3158                                  ret = registerItem( sid, private_xid, *itemid );                                  ret = registerItem( sid, private_xid, *itemid );
3159                              }                              }
# Line 3291  result_t getItems( sessionid_t sid, cons Line 3293  result_t getItems( sessionid_t sid, cons
3293  */  */
3294      sql += criteria2str( cri );      sql += criteria2str( cri );
3295            
3296      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3297      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
3298          if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){          if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){
3299              userid_t uid = 0;              userid_t uid = 0;
# Line 3511  result_t updateItem( sessionid_t sid, co Line 3513  result_t updateItem( sessionid_t sid, co
3513                              sql += " OR tx.open_level=" + unsignedIntToString( index::OL_GROUP_ONLY );                              sql += " OR tx.open_level=" + unsignedIntToString( index::OL_GROUP_ONLY );
3514                              sql += ") AND ti.item_type_id!=" + unsignedIntToString( item::ITID_BINDER );                              sql += ") AND ti.item_type_id!=" + unsignedIntToString( item::ITID_BINDER );
3515                              sql += " AND tlink.item_id=" + unsignedIntToString( item_id );                              sql += " AND tlink.item_id=" + unsignedIntToString( item_id );
3516                              //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );                              //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3517                              if( ( sqlcode = SQLExecDirect( hstmt2, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){                              if( ( sqlcode = SQLExecDirect( hstmt2, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){
3518                                  SQLINTEGER len = 0;                                  SQLINTEGER len = 0;
3519                                  SQLUINTEGER registered_index_id = 0;                                  SQLUINTEGER registered_index_id = 0;
# Line 3521  result_t updateItem( sessionid_t sid, co Line 3523  result_t updateItem( sessionid_t sid, co
3523                                      string sql = "UPDATE " + dbprefix + "_xnpaccount_index_item_link";                                      string sql = "UPDATE " + dbprefix + "_xnpaccount_index_item_link";
3524                                      sql += " SET certify_state=" + unsignedIntToString( certify_state );                                      sql += " SET certify_state=" + unsignedIntToString( certify_state );
3525                                      sql += " WHERE index_item_link_id=" + unsignedIntToString( registered_index_id );                                      sql += " WHERE index_item_link_id=" + unsignedIntToString( registered_index_id );
3526                                      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );                                      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3527                                      querySimple( "updateItem", sql );                                      querySimple( "updateItem", sql );
3528                                  }                                  }
3529                                  ret = RES_OK;                                  ret = RES_OK;
# Line 3647  result_t deleteItem( sessionid_t sid, it Line 3649  result_t deleteItem( sessionid_t sid, it
3649    
3650  /**  /**
3651   *   *
3652     * 個人の非公開アイテムのIDを取得します.
3653     * 公開インデックスに登録承認されたものは結果に含みません
3654     *
3655     * @param sid セッションID
3656     * @param uid 対象ユーザのID
3657     * @param iids 登録されたアイテムIDを受け取る引数
3658     * @param iidsLen iidsに格納された個数を受け取る引数
3659     * @return RES_OK
3660     * @return RES_DB_NOT_INITIALIZED
3661     * @return RES_NO_SUCH_SESSION
3662     * @return RES_DB_QUERY_ERROR
3663     * @return RES_ERROR
3664     *
3665     */
3666    /*
3667    result_t getPrivateItemID( sessionid_t sid, userid_t uid, itemid_t** iids, int* iidsLen )
3668    {
3669        if( hdbc == NULL ) return RES_DB_NOT_INITIALIZED;
3670        if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION;
3671        
3672        result_t ret = RES_ERROR;
3673        itemid_t* dst = 0;
3674        string sql;
3675        SQLRETURN sqlcode;
3676        SQLINTEGER count = 0;
3677        userid_t sess_uid;
3678        
3679        if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret;
3680        if( !isModeratorBySession( sid ) && uid != sess_uid ) return RES_NO_READ_ACCESS_RIGHT;
3681        
3682        sql  = "SELECT DISTINCT ti.item_id";
3683        sql += " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink";
3684        sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id";
3685        sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id";
3686        sql += " WHERE ( open_level <= " + unsignedIntToString( index::OL_GROUP_ONLY );
3687        sql += " AND certify_state < " + unsignedIntToString( index::CERTIFIED );
3688        sql += " OR open_level=" + unsignedIntToString( index::OL_PRIVATE ) + " ) ";
3689        sql += " AND ti.uid=" + unsignedIntToString( uid );
3690        fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3691        if( countResultRows( sql.c_str(), &count ) == RES_OK ){
3692            dst = new itemid_t[ count ];
3693            *iids = dst;
3694        }else{
3695            return RES_ERROR;
3696        }
3697        
3698        if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
3699            if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){
3700                itemid_t iid;
3701                SQLINTEGER len = 0;
3702                SQLBindCol( hstmt, 1, SQL_C_ULONG, &iid, 0, &len );
3703                *iidsLen = 0;
3704                for( int i = 0; ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS && i < count ; i++ ){
3705                    dst[ i ] = iid;
3706                    (*iidsLen)++;
3707                }
3708                ret = RES_OK;
3709            }else{
3710                string s( "SQLExecDirect in getPrivateItemID " );
3711                s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode );
3712                s += "sql=";
3713                s += string( sql );
3714                setLastErrorString( s.c_str( ) );
3715                ret = RES_DB_QUERY_ERROR;
3716            }
3717            SQLFreeHandle( SQL_HANDLE_STMT, hstmt );
3718        }else{
3719            string s( "SQLAllocHandle(SQL_HANDLE_STMT,...) in getPrivateItemID" );
3720            s += odbcDiagString( SQL_HANDLE_DBC, hdbc, sqlcode );
3721            setLastErrorString( s.c_str( ) );
3722            ret = RES_ERROR;
3723        }
3724        return ret;
3725    }
3726    */
3727    
3728    /**
3729     *
3730   * インデックスに登録されたアイテムのIDを取得します.   * インデックスに登録されたアイテムのIDを取得します.
3731   * 権限が無くて読めないものは結果に含みません.   * 権限が無くて読めないものは結果に含みません.
3732   * 未承認で読めないものも結果に含みません.   * 未承認で読めないものも結果に含みません.
# Line 3697  result_t getItemIDByIndexID( sessionid_t Line 3777  result_t getItemIDByIndexID( sessionid_t
3777      sql+=    " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC );      sql+=    " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC );
3778      sql+=    ")";      sql+=    ")";
3779      sql += criteria2str( cri );      sql += criteria2str( cri );
3780      fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3781      if( countResultRows( sql.c_str(), &count ) == RES_OK ){      if( countResultRows( sql.c_str(), &count ) == RES_OK ){
3782          dst = new itemid_t[ count ];          dst = new itemid_t[ count ];
3783          *iids = dst;          *iids = dst;
# Line 3823  result_t getCertifyState( sessionid_t si Line 3903  result_t getCertifyState( sessionid_t si
3903      sql += " FROM " + dbprefix + "_xnpaccount_index_item_link";      sql += " FROM " + dbprefix + "_xnpaccount_index_item_link";
3904      sql += " WHERE item_id = " + unsignedIntToString( iid );      sql += " WHERE item_id = " + unsignedIntToString( iid );
3905      sql += " AND index_id = " + unsignedIntToString( xid );      sql += " AND index_id = " + unsignedIntToString( xid );
3906      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
3907      return queryGetUnsignedInt( "getCertifyState", sql, (unsigned int*)certify );      return queryGetUnsignedInt( "getCertifyState", sql, (unsigned int*)certify );
3908  }  }
3909    
# Line 3901  result_t getOverlappedItems( sessionid_t Line 3981  result_t getOverlappedItems( sessionid_t
3981    
3982  /**  /**
3983   *   *
3984   * インデックスにアイテムを追加する   * インデックスにアイテムを追加する.
3985     * システム設定に従い,承認自動化が有効であれば追加と同時に承認を行なう.
3986   *   *
3987   * @param sid セッションID   * @param sid セッションID
3988   * @param xid 処理対象のインデックスのID   * @param xid 処理対象のインデックスのID
# Line 3931  result_t registerItem( sessionid_t sid, Line 4012  result_t registerItem( sessionid_t sid,
4012          + unsignedIntToString(xid) + ","          + unsignedIntToString(xid) + ","
4013          + unsignedIntToString(iid) + ","          + unsignedIntToString(iid) + ","
4014          + unsignedIntToString( getInitialCertifyStateFromConfig( ) ) + ")";          + unsignedIntToString( getInitialCertifyStateFromConfig( ) ) + ")";
4015      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4016      ret = querySimple( "registerItem", sql );      ret = querySimple( "registerItem", sql );
4017      if( ret == RES_OK ){      if( ret == RES_OK ){
4018          // update last update date          // update last update date
4019          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="
4020              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="
4021              + unsignedIntToString( xid );              + unsignedIntToString( xid );
4022          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4023          ret = querySimple( "registerItem", sql );          ret = querySimple( "registerItem", sql );
4024      }      }
4025      return ret;      return ret;
# Line 3974  result_t unregisterItem( sessionid_t sid Line 4055  result_t unregisterItem( sessionid_t sid
4055      sql = "DELETE FROM " + dbprefix + "_xnpaccount_index_item_link";      sql = "DELETE FROM " + dbprefix + "_xnpaccount_index_item_link";
4056      sql += " WHERE index_id=" + unsignedIntToString(xid);      sql += " WHERE index_id=" + unsignedIntToString(xid);
4057      sql += " AND item_id=" + unsignedIntToString(iid);      sql += " AND item_id=" + unsignedIntToString(iid);
4058      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4059      ret = querySimple( "unregisterItem", sql );      ret = querySimple( "unregisterItem", sql );
4060      if( ret == RES_OK ){      if( ret == RES_OK ){
4061          // update last update date          // update last update date
4062          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="
4063              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="
4064              + unsignedIntToString( xid );              + unsignedIntToString( xid );
4065          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4066          ret = querySimple( "unregisterItem", sql );          ret = querySimple( "unregisterItem", sql );
4067      }      }
4068      return ret;      return ret;
# Line 4018  result_t registerBinderItem( sessionid_t Line 4099  result_t registerBinderItem( sessionid_t
4099      sql = "INSERT INTO " + dbprefix + "_xnpaccount_binder_item_link (binder_id, item_id) values ("      sql = "INSERT INTO " + dbprefix + "_xnpaccount_binder_item_link (binder_id, item_id) values ("
4100          + unsignedIntToString(binderid) + ","          + unsignedIntToString(binderid) + ","
4101          + unsignedIntToString(iid) + ")";          + unsignedIntToString(iid) + ")";
4102      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4103      ret = querySimple( "registerBinderItem", sql );      ret = querySimple( "registerBinderItem", sql );
4104      if( ret == RES_OK ){      if( ret == RES_OK ){
4105          // update binder's last update date          // update binder's last update date
4106          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="
4107              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="
4108              + unsignedIntToString( binderid );              + unsignedIntToString( binderid );
4109          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4110          ret = querySimple( "registerBinderItem", sql );          ret = querySimple( "registerBinderItem", sql );
4111      }      }
4112      return ret;      return ret;
# Line 4061  result_t unregisterBinderItem( sessionid Line 4142  result_t unregisterBinderItem( sessionid
4142      sql = "DELETE FROM " + dbprefix + "_xnpaccount_binder_item_link";      sql = "DELETE FROM " + dbprefix + "_xnpaccount_binder_item_link";
4143      sql += " WHERE binder_id=" + unsignedIntToString(binderid);      sql += " WHERE binder_id=" + unsignedIntToString(binderid);
4144      sql += " AND item_id=" + unsignedIntToString(iid);      sql += " AND item_id=" + unsignedIntToString(iid);
4145      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4146      ret = querySimple( "unregisterBinderItem", sql );      ret = querySimple( "unregisterBinderItem", sql );
4147      if( ret == RES_OK ){      if( ret == RES_OK ){
4148          // update binder's last update date          // update binder's last update date
4149          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="          sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="
4150              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="              + unsignedIntToString( time( NULL ) ) + " WHERE item_id="
4151              + unsignedIntToString( binderid );              + unsignedIntToString( binderid );
4152          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4153          ret = querySimple( "unregisterBinderItem", sql );          ret = querySimple( "unregisterBinderItem", sql );
4154      }      }
4155      return ret;      return ret;
# Line 4113  bool getItemPermission( sessionid_t sid, Line 4194  bool getItemPermission( sessionid_t sid,
4194          sql+=    " OR tx.uid IS NULL ";          sql+=    " OR tx.uid IS NULL ";
4195          sql+=    " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC );          sql+=    " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC );
4196          sql+=    ") AND tlink.item_id=" + unsignedIntToString( iid );          sql+=    ") AND tlink.item_id=" + unsignedIntToString( iid );
4197          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4198          if( queryGetUnsignedInt( "getItemPermission", sql, (unsigned int*)&itemid ) == RES_OK ){          if( queryGetUnsignedInt( "getItemPermission", sql, (unsigned int*)&itemid ) == RES_OK ){
4199              return itemid == iid;              return itemid == iid;
4200          }          }
4201      }else if( op == item::OP_MODIFY || op == item::OP_DELETE ){      }else if( op == item::OP_MODIFY || op == item::OP_DELETE ){
4202            //TODO 条件追加:todo自分のアイテムでも承認待ち状態なら編集・削除できない
4203          sql = "SELECT item_id FROM " + dbprefix + "_xnpaccount_item_basic";          sql = "SELECT item_id FROM " + dbprefix + "_xnpaccount_item_basic";
4204          sql += " WHERE uid=" + unsignedIntToString( uid );          sql += " WHERE uid=" + unsignedIntToString( uid );
4205          sql += " AND item_id=" + unsignedIntToString( iid );          sql += " AND item_id=" + unsignedIntToString( iid );
4206          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4207          if( queryGetUnsignedInt( "getItemPermission", sql, (unsigned int*)&itemid ) == RES_OK ){          if( queryGetUnsignedInt( "getItemPermission", sql, (unsigned int*)&itemid ) == RES_OK ){
4208              return itemid == iid;              return itemid == iid;
4209          }          }
# Line 4159  bool getIndexPermission( sessionid_t sid Line 4241  bool getIndexPermission( sessionid_t sid
4241          sql += " OR tx.open_level=2 AND tlink.uid=" + unsignedIntToString( uid );          sql += " OR tx.open_level=2 AND tlink.uid=" + unsignedIntToString( uid );
4242          sql += " OR tx.open_level=3 AND tx.uid=" + unsignedIntToString( uid ) + " )";          sql += " OR tx.open_level=3 AND tx.uid=" + unsignedIntToString( uid ) + " )";
4243          sql += " AND index_id=" + unsignedIntToString( xid );          sql += " AND index_id=" + unsignedIntToString( xid );
4244          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
4245          if( queryGetUnsignedInt( "getIndexPermission", sql, &tmp ) == RES_OK          if( queryGetUnsignedInt( "getIndexPermission", sql, &tmp ) == RES_OK
4246              && tmp == xid );              && tmp == xid );
4247          else return false;          else return false;
# Line 5437  result_t setConfigValue( const char* key Line 5519  result_t setConfigValue( const char* key
5519            
5520      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
5521          string sql( "UPDATE " + dbprefix + "_xnpaccount_config SET value=? WHERE name=?");          string sql( "UPDATE " + dbprefix + "_xnpaccount_config SET value=? WHERE name=?");
5522          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
5523          sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);          sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);
5524          if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){          if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){
5525              SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, SQL_DESC_LENGTH, 0, (SQLCHAR*)value, strlen(value), &cbValue );              SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, SQL_DESC_LENGTH, 0, (SQLCHAR*)value, strlen(value), &cbValue );
# Line 5448  result_t setConfigValue( const char* key Line 5530  result_t setConfigValue( const char* key
5530                      ret = RES_OK;                      ret = RES_OK;
5531                  }else if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) {                  }else if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) {
5532                      string sql( "INSERT INTO " + dbprefix + "_xnpaccount_config (name,value) VALUES (?,?)");                      string sql( "INSERT INTO " + dbprefix + "_xnpaccount_config (name,value) VALUES (?,?)");
5533                      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );                      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
5534                      sqlcode = SQLPrepare(hstmt2, (SQLCHAR*)sql.c_str(), SQL_NTS);                      sqlcode = SQLPrepare(hstmt2, (SQLCHAR*)sql.c_str(), SQL_NTS);
5535                      if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){                      if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){
5536                          SQLBindParameter(hstmt2, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_CONFIG_NAME_LEN, 0, (SQLCHAR*)key  , strlen(key)  , &cbKey );                          SQLBindParameter(hstmt2, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_CONFIG_NAME_LEN, 0, (SQLCHAR*)key  , strlen(key)  , &cbKey );
# Line 5521  result_t getConfigValue( const char* key Line 5603  result_t getConfigValue( const char* key
5603                  while( SQLFetch( hstmt ) == SQL_SUCCESS ){                  while( SQLFetch( hstmt ) == SQL_SUCCESS ){
5604                      string valuestr;                      string valuestr;
5605                      SQLINTEGER length;                      SQLINTEGER length;
5606                      //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );                      //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
5607                      // get amount of data                      // get amount of data
5608                      if( SQLGetData(hstmt, 1, SQL_C_BINARY, *value, 0, &length)                      if( SQLGetData(hstmt, 1, SQL_C_BINARY, *value, 0, &length)
5609                          == SQL_SUCCESS_WITH_INFO ){                          == SQL_SUCCESS_WITH_INFO ){
# Line 5670  result_t insertChangeLog( sessionid_t si Line 5752  result_t insertChangeLog( sessionid_t si
5752          sql = "INSERT INTO " + dbprefix + "_xnpaccount_changelog (item_id, log_date, log) VALUES (";          sql = "INSERT INTO " + dbprefix + "_xnpaccount_changelog (item_id, log_date, log) VALUES (";
5753          sql += unsignedIntToString( itemid ) + ", ";          sql += unsignedIntToString( itemid ) + ", ";
5754          sql += unsignedIntToString( now ) + ", ?)";          sql += unsignedIntToString( now ) + ", ?)";
5755          //fprintf( stderr, "\nsql at %d=%s\n", __LINE__, sql.c_str() );          //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
5756          sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);          sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);
5757          if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){          if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){
5758              SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_CHANGELOG_LOG_LEN, 0,              SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_CHANGELOG_LOG_LEN, 0,
# Line 5680  result_t insertChangeLog( sessionid_t si Line 5762  result_t insertChangeLog( sessionid_t si
5762                  sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="                  sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date="
5763                      + unsignedIntToString( now ) + " WHERE item_id="                      + unsignedIntToString( now ) + " WHERE item_id="
5764                      + unsignedIntToString( itemid );                      + unsignedIntToString( itemid );
5765                    //fprintf( stderr, "\nsql at %d=%s", __LINE__, sql.c_str() );
5766                  querySimple( "insertChangeLog", sql );                  querySimple( "insertChangeLog", sql );
5767                  ret = RES_OK;                  ret = RES_OK;
5768              }else{              }else{
# Line 5746  void setLastErrorString( const char* str Line 5829  void setLastErrorString( const char* str
5829      syslog( LOG_DEBUG, "%s", str );      syslog( LOG_DEBUG, "%s", str );
5830      closelog( );      closelog( );
5831  #endif  #endif
5832      fprintf( stderr, "\nsetLastErrorString( '%s' );\n", str );      //fprintf( stderr, "\nsetLastErrorString( '%s' );", str );
5833  }  }
5834    
5835    
# Line 5841  static void processEfetch(xmlTextReaderP Line 5924  static void processEfetch(xmlTextReaderP
5924              if( val != NULL ) xmlFree( val );              if( val != NULL ) xmlFree( val );
5925          }else if( strcmp( "Year", ( char* )name ) == 0 ){//TODO          }else if( strcmp( "Year", ( char* )name ) == 0 ){//TODO
5926              xmlChar* val = getChildText( reader );              xmlChar* val = getChildText( reader );
5927              p -> setPubYear( atoi( ( char* )val ) );              p -> setYearOfPublication( atoi( ( char* )val ) );
5928              if( val != NULL ) xmlFree( val );              if( val != NULL ) xmlFree( val );
5929          }else if( strcmp( "Volume", ( char* )name ) == 0 ){          }else if( strcmp( "Volume", ( char* )name ) == 0 ){
5930              xmlChar* val = getChildText( reader );              xmlChar* val = getChildText( reader );
# Line 5885  void main( int argc, char* argv[] ) Line 5968  void main( int argc, char* argv[] )
5968              p.getTitle( ),              p.getTitle( ),
5969              p.getAuthor( ),              p.getAuthor( ),
5970              p.getJournal( ),              p.getJournal( ),
5971              p.getPubYear( ),              p.getYearOfPublication( ),
5972              p.getVolume( ),              p.getVolume( ),
5973              p.getNumber( ),              p.getNumber( ),
5974              p.getPage( ),              p.getPage( ),
# Line 5997  result_t amazonComplete( const char *url Line 6080  result_t amazonComplete( const char *url
6080      return ret;      return ret;
6081  }  }
6082    
6083    /**
6084     *
6085     * 承認待ち状態のアイテムのうち,承認権限のあるアイテムのIDを取得します
6086     *
6087     * @param sid セッションID
6088     * @param uid 対象ユーザのID
6089     * @param iids 登録されたアイテムIDを受け取る引数
6090     * @param iidsLen iidsに格納された個数を受け取る引数
6091     * @return RES_OK
6092     * @return RES_DB_NOT_INITIALIZED
6093     * @return RES_NO_SUCH_SESSION
6094     * @return RES_DB_QUERY_ERROR
6095     * @return RES_ERROR
6096     *
6097     */
6098    /*
6099    result_t getPrivateItemID( sessionid_t sid, userid_t uid, itemid_t** iids, int* iidsLen )
6100            SELECT *
6101            FROM xtest_xnpaccount_index_item_link AS tlink
6102            LEFT JOIN xtest_xnpaccount_index AS tx ON tlink.index_id = tx.index_id AND tx.open_level<=2 AND tlink.certify_state=1
6103            LEFT JOIN xtest_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid AND ( tx.open_level=2 AND tgulink.is_admin=1 AND tgulink.uid=190 OR 0 )
6104            WHERE tx.index_id IS NOT NULL AND ( is_admin=1 AND tlink.certify_state=1 OR tlink.certify_state=1 AND 0 )
6105    */

Legend:
Removed from v.1.48  
changed lines
  Added in v.1.49

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