| 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 |
* |
* |
| 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 |
{ |
{ |
| 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 |
} |
} |
| 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; |
| 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; |
| 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; |
| 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 |
* 未承認で読めないものも結果に含みません. |
* 未承認で読めないものも結果に含みません. |
| 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; |
| 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 |
|
|
| 3981 |
|
|
| 3982 |
/** |
/** |
| 3983 |
* |
* |
| 3984 |
* インデックスにアイテムを追加する |
* インデックスにアイテムを追加する. |
| 3985 |
|
* システム設定に従い,承認自動化が有効であれば追加と同時に承認を行なう. |
| 3986 |
* |
* |
| 3987 |
* @param sid セッションID |
* @param sid セッションID |
| 3988 |
* @param xid 処理対象のインデックスのID |
* @param xid 処理対象のインデックスのID |
| 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; |
| 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; |
| 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; |
| 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; |
| 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 |
} |
} |
| 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; |
| 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 ); |
| 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 ); |
| 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 ){ |
| 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, |
| 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{ |
| 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 |
|
|
| 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 ); |
| 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( ), |
| 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 |
|
*/ |