| 22 |
* |
* |
| 23 |
* $Revision$ |
* $Revision$ |
| 24 |
* $Log$ |
* $Log$ |
| 25 |
|
* Revision 1.89 2005/05/18 10:00:17 aga4096 |
| 26 |
|
* ・モジュール統合に対応. |
| 27 |
|
* |
| 28 |
* Revision 1.88 2005/03/17 16:02:40 orrisroot |
* Revision 1.88 2005/03/17 16:02:40 orrisroot |
| 29 |
* UNIX において SQLLEN 型が宣言されていない場合に対処するため,configure |
* UNIX において SQLLEN 型が宣言されていない場合に対処するため,configure |
| 30 |
* スクリプトで出力された config.h をインクルードするように変更. |
* スクリプトで出力された config.h をインクルードするように変更. |
| 201 |
* getItems: getItemPermissionを使った読み込み権限チェック. |
* getItems: getItemPermissionを使った読み込み権限チェック. |
| 202 |
* |
* |
| 203 |
* Revision 1.43 2005/01/19 01:42:15 aga |
* Revision 1.43 2005/01/19 01:42:15 aga |
| 204 |
* ・x_xnpaccount_indexのgid,uidが0にならないよう修正. |
* ・x_xoonips_indexのgid,uidが0にならないよう修正. |
| 205 |
* |
* |
| 206 |
* Revision 1.42 2005/01/19 00:51:29 aga |
* Revision 1.42 2005/01/19 00:51:29 aga |
| 207 |
* ・insertIndexでx_xnpaccount_index.index_idがおかしいのを修正. |
* ・insertIndexでx_xoonips_index.index_idがおかしいのを修正. |
| 208 |
* |
* |
| 209 |
* Revision 1.41 2005/01/19 00:06:51 aga |
* Revision 1.41 2005/01/19 00:06:51 aga |
| 210 |
* ・updateIndexで、同じ名前の兄弟があるか名前が空であるならエラーにした. |
* ・updateIndexで、同じ名前の兄弟があるか名前が空であるならエラーにした. |
| 221 |
* freeGID, freeUID: 引数の型を修正. |
* freeGID, freeUID: 引数の型を修正. |
| 222 |
* |
* |
| 223 |
* Revision 1.38 2005/01/15 00:39:16 aga |
* Revision 1.38 2005/01/15 00:39:16 aga |
| 224 |
* ・x_xnpaccount_item_basicの構造を変更. |
* ・x_xoonips_item_basicの構造を変更. |
| 225 |
* |
* |
| 226 |
* Revision 1.37 2005/01/14 10:36:59 aga |
* Revision 1.37 2005/01/14 10:36:59 aga |
| 227 |
* ・index関係の処理を追加. |
* ・index関係の処理を追加. |
| 280 |
* ・開放忘れ修正. |
* ・開放忘れ修正. |
| 281 |
* |
* |
| 282 |
* Revision 1.23 2004/12/04 09:21:10 aga |
* Revision 1.23 2004/12/04 09:21:10 aga |
| 283 |
* ・xnp_config → xnpaccount_config. |
* ・xnp_config → xoonips_config. |
| 284 |
* |
* |
| 285 |
* Revision 1.22 2004/12/03 07:17:21 youi |
* Revision 1.22 2004/12/03 07:17:21 youi |
| 286 |
* isModeratorでアクセスするデータベーステーブル名を修正. |
* isModeratorでアクセスするデータベーステーブル名を修正. |
| 828 |
return RES_NO_SUCH_SESSION; |
return RES_NO_SUCH_SESSION; |
| 829 |
} |
} |
| 830 |
else { |
else { |
| 831 |
string sql = "SELECT uid FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString(sid); |
string sql = "SELECT uid FROM " + dbprefix + "_xoonips_session WHERE sid=" + unsignedIntToString(sid); |
| 832 |
syslog_printf( "sql=%s", sql.c_str() ); |
syslog_printf( "sql=%s", sql.c_str() ); |
| 833 |
return queryGetUnsignedInt( "sessionID2UID", sql, uid ); |
return queryGetUnsignedInt( "sessionID2UID", sql, uid ); |
| 834 |
} |
} |
| 859 |
return false; |
return false; |
| 860 |
} |
} |
| 861 |
|
|
| 862 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_groups "; |
sql = "SELECT * FROM " + dbprefix + "_xoonips_groups "; |
| 863 |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
| 864 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) != SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) != SQL_SUCCESS ){ |
| 865 |
setLastErrorString( "SQLExecDirect in gidExists" ); |
setLastErrorString( "SQLExecDirect in gidExists" ); |
| 894 |
string sql; |
string sql; |
| 895 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 896 |
|
|
| 897 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_users "; |
sql = "SELECT * FROM " + dbprefix + "_xoonips_users "; |
| 898 |
sql += "WHERE uid=" + string( unsignedIntToString( uid ) ); |
sql += "WHERE uid=" + string( unsignedIntToString( uid ) ); |
| 899 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 900 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 1048 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 1049 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 1050 |
|
|
| 1051 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_users "; |
sql = "SELECT * FROM " + dbprefix + "_xoonips_users "; |
| 1052 |
sql += "WHERE activate=1 and uid=" + string( unsignedIntToString( uid ) ); |
sql += "WHERE activate=1 and uid=" + string( unsignedIntToString( uid ) ); |
| 1053 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 1054 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 1101 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 1102 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 1103 |
|
|
| 1104 |
sql = "UPDATE " + dbprefix + "_xnpaccount_users "; |
sql = "UPDATE " + dbprefix + "_xoonips_users "; |
| 1105 |
sql += "SET activate=" + string( activate ? "1" : "0" ); |
sql += "SET activate=" + string( activate ? "1" : "0" ); |
| 1106 |
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
| 1107 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 1153 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 1154 |
|
|
| 1155 |
//アカウント数を求める |
//アカウント数を求める |
| 1156 |
sql = "SELECT COUNT(*) FROM " + dbprefix + "_xnpaccount_users "; |
sql = "SELECT COUNT(*) FROM " + dbprefix + "_xoonips_users "; |
| 1157 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 1158 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 1159 |
SQLUINTEGER count = 0; |
SQLUINTEGER count = 0; |
| 1210 |
/* |
/* |
| 1211 |
1. delete user from default platform group |
1. delete user from default platform group |
| 1212 |
2. delete user profile from xoops_users |
2. delete user profile from xoops_users |
| 1213 |
3. delete platform user from xnpaccount_users |
3. delete platform user from xoonips_users |
| 1214 |
*/ |
*/ |
| 1215 |
|
|
| 1216 |
//1. delete user from platform groups |
//1. delete user from platform groups |
| 1252 |
ret1 = RES_ERROR; |
ret1 = RES_ERROR; |
| 1253 |
} |
} |
| 1254 |
|
|
| 1255 |
//3. delete platform user from xnpaccount_users |
//3. delete platform user from xoonips_users |
| 1256 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_users "; |
sql = "DELETE FROM " + dbprefix + "_xoonips_users "; |
| 1257 |
sql += "WHERE uid = " + string( unsignedIntToString( uid ) ); |
sql += "WHERE uid = " + string( unsignedIntToString( uid ) ); |
| 1258 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 1259 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 1347 |
account_t* dst = new account_t[ uidsLen ]; |
account_t* dst = new account_t[ uidsLen ]; |
| 1348 |
|
|
| 1349 |
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.division, u2.tel, u2.company_name, u2.country, u2.zipcode, u2.fax, u2.notice_mail, u2.notice_mail_since, u2.private_index_id, u2.private_item_number_limit, u2.private_index_number_limit, u2.private_item_storage_limit "; |
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.division, u2.tel, u2.company_name, u2.country, u2.zipcode, u2.fax, u2.notice_mail, u2.notice_mail_since, u2.private_index_id, u2.private_item_number_limit, u2.private_index_number_limit, u2.private_item_storage_limit "; |
| 1350 |
sql += "FROM " + dbprefix + "_users AS u1, " + dbprefix + "_xnpaccount_users AS u2 "; |
sql += "FROM " + dbprefix + "_users AS u1, " + dbprefix + "_xoonips_users AS u2 "; |
| 1351 |
sql += "WHERE u1.uid = u2.uid "; |
sql += "WHERE u1.uid = u2.uid "; |
| 1352 |
if( uidsLen > 0 ){ |
if( uidsLen > 0 ){ |
| 1353 |
syslog_printf( "set uid[%d] value=%d to ...", 0, uids[0] ); |
syslog_printf( "set uid[%d] value=%d to ...", 0, uids[0] ); |
| 1471 |
|
|
| 1472 |
/* |
/* |
| 1473 |
1. insert user profile into xoops_users |
1. insert user profile into xoops_users |
| 1474 |
2. insert platform user profile into xnpaccount_users |
2. insert platform user profile into xoonips_users |
| 1475 |
3. add user to default platform group |
3. add user to default platform group |
| 1476 |
4. create private index |
4. create private index |
| 1477 |
5. update account set private_index_id=... |
5. update account set private_index_id=... |
| 1589 |
} |
} |
| 1590 |
|
|
| 1591 |
if( ret == RES_OK ){ |
if( ret == RES_OK ){ |
| 1592 |
//2.xnpaccountのユーザテーブルに残りの情報を書き込む |
//2.xoonipsのユーザテーブルに残りの情報を書き込む |
| 1593 |
SQLUINTEGER activate; |
SQLUINTEGER activate; |
| 1594 |
SQLCHAR address[XNP_ACCOUNT_ADDRESS_LEN+1]; |
SQLCHAR address[XNP_ACCOUNT_ADDRESS_LEN+1]; |
| 1595 |
SQLCHAR division[XNP_ACCOUNT_DIVISION_LEN+1]; |
SQLCHAR division[XNP_ACCOUNT_DIVISION_LEN+1]; |
| 1608 |
|
|
| 1609 |
if( ret == RES_OK && ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ret == RES_OK && ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 1610 |
string sql; |
string sql; |
| 1611 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_users (uid, activate, address, division, tel, company_name, country, zipcode, fax, notice_mail, notice_mail_since, private_item_number_limit, private_index_number_limit, private_item_storage_limit) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; |
sql = "INSERT INTO " + dbprefix + "_xoonips_users (uid, activate, address, division, tel, company_name, country, zipcode, fax, notice_mail, notice_mail_since, private_item_number_limit, private_index_number_limit, private_item_storage_limit) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; |
| 1612 |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 1613 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 1614 |
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, uid, 0, &cbUid); |
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, uid, 0, &cbUid); |
| 1699 |
|
|
| 1700 |
// private index用のsort_number生成 |
// private index用のsort_number生成 |
| 1701 |
string sql = "select min(sort_number) from " + |
string sql = "select min(sort_number) from " + |
| 1702 |
dbprefix + "_xnpaccount_index where parent_index_id=" + unsignedIntToString(item::IID_ROOT) + |
dbprefix + "_xoonips_index where parent_index_id=" + unsignedIntToString(item::IID_ROOT) + |
| 1703 |
" and open_level=" + unsignedIntToString(index::OL_PRIVATE); |
" and open_level=" + unsignedIntToString(index::OL_PRIVATE); |
| 1704 |
unsigned int sortNumber; |
unsigned int sortNumber; |
| 1705 |
ret = queryGetUnsignedInt( "insertAccount", sql, &sortNumber ); |
ret = queryGetUnsignedInt( "insertAccount", sql, &sortNumber ); |
| 1718 |
ret = insertIndexInternal( sid, &index, &privateXID ); |
ret = insertIndexInternal( sid, &index, &privateXID ); |
| 1719 |
if ( ret == RES_OK ){ |
if ( ret == RES_OK ){ |
| 1720 |
// xnpaccuont_usersのprivate_index_idの書き換え |
// xnpaccuont_usersのprivate_index_idの書き換え |
| 1721 |
sql = "UPDATE " + dbprefix + "_xnpaccount_users SET private_index_id=" |
sql = "UPDATE " + dbprefix + "_xoonips_users SET private_index_id=" |
| 1722 |
+ unsignedIntToString(privateXID) + " WHERE uid=" + unsignedIntToString(*uid); |
+ unsignedIntToString(privateXID) + " WHERE uid=" + unsignedIntToString(*uid); |
| 1723 |
ret = querySimple( "insertAccount", sql ); |
ret = querySimple( "insertAccount", sql ); |
| 1724 |
} |
} |
| 1909 |
return ret; |
return ret; |
| 1910 |
} |
} |
| 1911 |
|
|
| 1912 |
//xnpaccountのユーザテーブルに残りの情報を上書きする |
//xoonipsのユーザテーブルに残りの情報を上書きする |
| 1913 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 1914 |
string sql; |
string sql; |
| 1915 |
|
|
| 1916 |
sql = "UPDATE " + dbprefix + "_xnpaccount_users SET "; |
sql = "UPDATE " + dbprefix + "_xoonips_users SET "; |
| 1917 |
sql += "activate=?, "; |
sql += "activate=?, "; |
| 1918 |
sql += "address=?, "; |
sql += "address=?, "; |
| 1919 |
sql += "division=?, "; |
sql += "division=?, "; |
| 2013 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 2014 |
|
|
| 2015 |
|
|
| 2016 |
sql = "SELECT uid FROM " + dbprefix + "_xnpaccount_users "; |
sql = "SELECT uid FROM " + dbprefix + "_xoonips_users "; |
| 2017 |
sql += criteria2str( cri ); |
sql += criteria2str( cri ); |
| 2018 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 2019 |
*uidsLen = count; |
*uidsLen = count; |
| 2074 |
int ret = 0; |
int ret = 0; |
| 2075 |
|
|
| 2076 |
//グループ数を求める |
//グループ数を求める |
| 2077 |
sql = "SELECT COUNT(*) FROM " + dbprefix + "_xnpaccount_groups"; |
sql = "SELECT COUNT(*) FROM " + dbprefix + "_xoonips_groups"; |
| 2078 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2079 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 2080 |
SQLUINTEGER count = 0; |
SQLUINTEGER count = 0; |
| 2132 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 2133 |
groupid_t* dst = 0; |
groupid_t* dst = 0; |
| 2134 |
|
|
| 2135 |
sql = "SELECT gid FROM " + dbprefix + "_xnpaccount_groups_users_link"; |
sql = "SELECT gid FROM " + dbprefix + "_xoonips_groups_users_link"; |
| 2136 |
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
| 2137 |
sql += criteria2str( cri ); |
sql += criteria2str( cri ); |
| 2138 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 2149 |
if( count > 0 ){ |
if( count > 0 ){ |
| 2150 |
SQLHANDLE hstmt2 = NULL; |
SQLHANDLE hstmt2 = NULL; |
| 2151 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
| 2152 |
sql = "SELECT gid, uid, is_admin FROM " + dbprefix + "_xnpaccount_groups_users_link"; |
sql = "SELECT gid, uid, is_admin FROM " + dbprefix + "_xoonips_groups_users_link"; |
| 2153 |
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
sql += " WHERE uid=" + string( unsignedIntToString( uid ) ); |
| 2154 |
sql += criteria2str( cri ); |
sql += criteria2str( cri ); |
| 2155 |
if( ( sqlcode = SQLExecDirect( hstmt2, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt2, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 2216 |
string sql; |
string sql; |
| 2217 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 2218 |
|
|
| 2219 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_groups_users_link "; |
sql = "SELECT * FROM " + dbprefix + "_xoonips_groups_users_link "; |
| 2220 |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
| 2221 |
sql += " AND uid=" + string( unsignedIntToString( uid ) ); |
sql += " AND uid=" + string( unsignedIntToString( uid ) ); |
| 2222 |
sql += " AND is_admin=1"; |
sql += " AND is_admin=1"; |
| 2258 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 2259 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 2260 |
|
|
| 2261 |
sql = "SELECT gid FROM " + dbprefix + "_xnpaccount_groups "; |
sql = "SELECT gid FROM " + dbprefix + "_xoonips_groups "; |
| 2262 |
sql += criteria2str( cri ); |
sql += criteria2str( cri ); |
| 2263 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 2264 |
*gidsLen = count; |
*gidsLen = count; |
| 2318 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 2319 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 2320 |
|
|
| 2321 |
sql = "SELECT uid FROM " + dbprefix + "_xnpaccount_groups_users_link "; |
sql = "SELECT uid FROM " + dbprefix + "_xoonips_groups_users_link "; |
| 2322 |
sql += " WHERE is_admin=1 and gid=" + unsignedIntToString( gid ); |
sql += " WHERE is_admin=1 and gid=" + unsignedIntToString( gid ); |
| 2323 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 2324 |
*uidsLen = count; |
*uidsLen = count; |
| 2402 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 2403 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 2404 |
|
|
| 2405 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_groups_users_link "; |
sql = "DELETE FROM " + dbprefix + "_xoonips_groups_users_link "; |
| 2406 |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
| 2407 |
sql += " AND uid=" + string( unsignedIntToString( uid ) ); |
sql += " AND uid=" + string( unsignedIntToString( uid ) ); |
| 2408 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2465 |
|
|
| 2466 |
//メンバーを追加 |
//メンバーを追加 |
| 2467 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2468 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_groups_users_link ( gid, uid, is_admin ) VALUES ("; |
sql = "INSERT INTO " + dbprefix + "_xoonips_groups_users_link ( gid, uid, is_admin ) VALUES ("; |
| 2469 |
sql += string( unsignedIntToString( gid ) ) + ", "; |
sql += string( unsignedIntToString( gid ) ) + ", "; |
| 2470 |
sql += string( unsignedIntToString( uid ) ) + ", "; |
sql += string( unsignedIntToString( uid ) ) + ", "; |
| 2471 |
sql += string( admin ? "1" : "0" ) + ") "; |
sql += string( admin ? "1" : "0" ) + ") "; |
| 2528 |
userid_t* dst = 0; |
userid_t* dst = 0; |
| 2529 |
|
|
| 2530 |
//how many members ? |
//how many members ? |
| 2531 |
sql = "SELECT COUNT(*) FROM " + dbprefix + "_xnpaccount_groups_users_link "; |
sql = "SELECT COUNT(*) FROM " + dbprefix + "_xoonips_groups_users_link "; |
| 2532 |
sql += " WHERE gid=" + string( unsignedIntToString( gid ) ); |
sql += " WHERE gid=" + string( unsignedIntToString( gid ) ); |
| 2533 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2534 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 2543 |
//retrieve member's IDs |
//retrieve member's IDs |
| 2544 |
SQLHANDLE hstmt2 = NULL; |
SQLHANDLE hstmt2 = NULL; |
| 2545 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
| 2546 |
sql = "SELECT uid, gid, is_admin FROM " + dbprefix + "_xnpaccount_groups_users_link "; |
sql = "SELECT uid, gid, is_admin FROM " + dbprefix + "_xoonips_groups_users_link "; |
| 2547 |
sql += " WHERE gid=" + string( unsignedIntToString( gid ) ); |
sql += " WHERE gid=" + string( unsignedIntToString( gid ) ); |
| 2548 |
sql += " " + string( criteria2str( cri ) ); |
sql += " " + string( criteria2str( cri ) ); |
| 2549 |
if( ( sqlcode = SQLExecDirect( hstmt2, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt2, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 2611 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 2612 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 2613 |
|
|
| 2614 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_groups "; |
sql = "DELETE FROM " + dbprefix + "_xoonips_groups "; |
| 2615 |
sql += "WHERE gid = " + string( unsignedIntToString( gid ) ); |
sql += "WHERE gid = " + string( unsignedIntToString( gid ) ); |
| 2616 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2617 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 2673 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 2674 |
|
|
| 2675 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2676 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_groups ( gname, gdesc, group_item_number_limit, group_index_number_limit, group_item_storage_limit ) VALUES ( ?, ?, ?, ?, ? )"; |
sql = "INSERT INTO " + dbprefix + "_xoonips_groups ( gname, gdesc, group_item_number_limit, group_index_number_limit, group_item_storage_limit ) VALUES ( ?, ?, ?, ?, ? )"; |
| 2677 |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 2678 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 2679 |
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_GROUP_GNAME_LEN, 0, gname, 0, &cbGname ); |
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_GROUP_GNAME_LEN, 0, gname, 0, &cbGname ); |
| 2728 |
|
|
| 2729 |
//group index用のsort_num生成 |
//group index用のsort_num生成 |
| 2730 |
string sql = "SELECT MAX(sort_number) FROM " + |
string sql = "SELECT MAX(sort_number) FROM " + |
| 2731 |
dbprefix + "_xnpaccount_index WHERE parent_index_id=" + unsignedIntToString(item::IID_ROOT) + |
dbprefix + "_xoonips_index WHERE parent_index_id=" + unsignedIntToString(item::IID_ROOT) + |
| 2732 |
" AND (open_level=" + unsignedIntToString(index::OL_GROUP_ONLY) + |
" AND (open_level=" + unsignedIntToString(index::OL_GROUP_ONLY) + |
| 2733 |
" OR open_level=" + unsignedIntToString(index::OL_PUBLIC) + ")"; |
" OR open_level=" + unsignedIntToString(index::OL_PUBLIC) + ")"; |
| 2734 |
unsigned int sortNumber; |
unsigned int sortNumber; |
| 2751 |
ret = insertIndexInternal( sid, &index, &groupXID ); |
ret = insertIndexInternal( sid, &index, &groupXID ); |
| 2752 |
if ( ret == RES_OK ){ |
if ( ret == RES_OK ){ |
| 2753 |
// xnpaccuont_groupsのgroup_index_idの書き換え |
// xnpaccuont_groupsのgroup_index_idの書き換え |
| 2754 |
sql = "UPDATE " + dbprefix + "_xnpaccount_groups SET group_index_id=" |
sql = "UPDATE " + dbprefix + "_xoonips_groups SET group_index_id=" |
| 2755 |
+ unsignedIntToString(groupXID) + " WHERE gid=" + unsignedIntToString(*gid); |
+ unsignedIntToString(groupXID) + " WHERE gid=" + unsignedIntToString(*gid); |
| 2756 |
ret = querySimple( "insertGroup", sql ); |
ret = querySimple( "insertGroup", sql ); |
| 2757 |
} |
} |
| 2790 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 2791 |
|
|
| 2792 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2793 |
sql = "UPDATE " + dbprefix + "_xnpaccount_groups SET gname=?, gdesc=?, "; |
sql = "UPDATE " + dbprefix + "_xoonips_groups SET gname=?, gdesc=?, "; |
| 2794 |
sql += "group_item_number_limit=" + unsignedIntToString( group -> getItemNumberLimit( ) ) + " ,"; |
sql += "group_item_number_limit=" + unsignedIntToString( group -> getItemNumberLimit( ) ) + " ,"; |
| 2795 |
sql += "group_index_number_limit=" + unsignedIntToString( group -> getIndexNumberLimit( ) ) + " ,"; |
sql += "group_index_number_limit=" + unsignedIntToString( group -> getIndexNumberLimit( ) ) + " ,"; |
| 2796 |
sql += "group_item_storage_limit=" + doubleToString( group -> getItemStorageLimit( ) ) + " "; |
sql += "group_item_storage_limit=" + doubleToString( group -> getItemStorageLimit( ) ) + " "; |
| 2831 |
|
|
| 2832 |
if( ret == RES_OK ){ |
if( ret == RES_OK ){ |
| 2833 |
// updateすべきindex_idを得る |
// updateすべきindex_idを得る |
| 2834 |
sql = "SELECT group_index_id from " + dbprefix + "_xnpaccount_groups as tg " |
sql = "SELECT group_index_id from " + dbprefix + "_xoonips_groups as tg " |
| 2835 |
" left join " + dbprefix + "_xnpaccount_item_basic as ti on tg.group_index_id = ti.item_id " |
" left join " + dbprefix + "_xoonips_item_basic as ti on tg.group_index_id = ti.item_id " |
| 2836 |
" left join " + dbprefix + "_xnpaccount_index as tx on ti.item_id = tx.index_id " |
" left join " + dbprefix + "_xoonips_index as tx on ti.item_id = tx.index_id " |
| 2837 |
" where tg.gid=" + unsignedIntToString(group->getGID()) + |
" where tg.gid=" + unsignedIntToString(group->getGID()) + |
| 2838 |
" and ti.item_type_id=" + unsignedIntToString(item::ITID_INDEX) + |
" and ti.item_type_id=" + unsignedIntToString(item::ITID_INDEX) + |
| 2839 |
" and tx.parent_index_id=" + unsignedIntToString(item::IID_ROOT); |
" and tx.parent_index_id=" + unsignedIntToString(item::IID_ROOT); |
| 2842 |
|
|
| 2843 |
if ( ret == RES_OK ){ |
if ( ret == RES_OK ){ |
| 2844 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 2845 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic set title=? " |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic set title=? " |
| 2846 |
"WHERE item_id=" + unsignedIntToString(xid); |
"WHERE item_id=" + unsignedIntToString(xid); |
| 2847 |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 2848 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 2932 |
group_t* dst = new group_t[ gidsLen ]; |
group_t* dst = new group_t[ gidsLen ]; |
| 2933 |
|
|
| 2934 |
sql += "SELECT gid, gname, gdesc, group_index_id, group_item_number_limit, group_index_number_limit, group_item_storage_limit "; |
sql += "SELECT gid, gname, gdesc, group_index_id, group_item_number_limit, group_index_number_limit, group_item_storage_limit "; |
| 2935 |
sql += "FROM " + dbprefix + "_xnpaccount_groups "; |
sql += "FROM " + dbprefix + "_xoonips_groups "; |
| 2936 |
if( gidsLen > 0 ){ |
if( gidsLen > 0 ){ |
| 2937 |
sql += "WHERE gid=" + string( unsignedIntToString( gids[ 0 ] ) ); |
sql += "WHERE gid=" + string( unsignedIntToString( gids[ 0 ] ) ); |
| 2938 |
for( int i = 1; i < gidsLen; i++ ){ |
for( int i = 1; i < gidsLen; i++ ){ |
| 3003 |
groupid_t moderator_gid; |
groupid_t moderator_gid; |
| 3004 |
|
|
| 3005 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 3006 |
sql = "SELECT value FROM " + dbprefix + "_xnpaccount_config"; |
sql = "SELECT value FROM " + dbprefix + "_xoonips_config"; |
| 3007 |
sql += " WHERE name='moderator_gid'"; |
sql += " WHERE name='moderator_gid'"; |
| 3008 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 3009 |
SQLLEN len = 0; |
SQLLEN len = 0; |
| 3097 |
|
|
| 3098 |
/** |
/** |
| 3099 |
* |
* |
| 3100 |
* セッションを作成しxoops_xnpaccount_sessionに書き込む。 sessionid_tをsessionに返す。 |
* セッションを作成しxoops_xoonips_sessionに書き込む。 sessionid_tをsessionに返す。 |
| 3101 |
* |
* |
| 3102 |
* @param uid xoops_usersのuid |
* @param uid xoops_usersのuid |
| 3103 |
* @param session sessionid_tを受け取るためのポインタ。 |
* @param session sessionid_tを受け取るためのポインタ。 |
| 3109 |
char *functionName = "addSession"; |
char *functionName = "addSession"; |
| 3110 |
string sql; |
string sql; |
| 3111 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 3112 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_session (uid) values (" + |
sql = "INSERT INTO " + dbprefix + "_xoonips_session (uid) values (" + |
| 3113 |
unsignedIntToString(uid) + ")"; |
unsignedIntToString(uid) + ")"; |
| 3114 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 3115 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_session (uid, timestamp) values (" + |
sql = "INSERT INTO " + dbprefix + "_xoonips_session (uid, timestamp) values (" + |
| 3116 |
unsignedIntToString(uid) + "," + unsignedIntToString( time( NULL ) ) + ")"; |
unsignedIntToString(uid) + "," + unsignedIntToString( time( NULL ) ) + ")"; |
| 3117 |
} |
} |
| 3118 |
result_t ret = querySimple( functionName, sql ); |
result_t ret = querySimple( functionName, sql ); |
| 3133 |
time_t now = time(NULL); |
time_t now = time(NULL); |
| 3134 |
string sql; |
string sql; |
| 3135 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 3136 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE unix_timestamp(timestamp) < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
sql = "DELETE FROM " + dbprefix + "_xoonips_session WHERE unix_timestamp(timestamp) < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 3137 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 3138 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE timestamp < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
sql = "DELETE FROM " + dbprefix + "_xoonips_session WHERE timestamp < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 3139 |
} |
} |
| 3140 |
querySimple( "deleteTimeoutSession", sql ); |
querySimple( "deleteTimeoutSession", sql ); |
| 3141 |
} |
} |
| 3173 |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &sUID, 0, &len ); |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &sUID, 0, &len ); |
| 3174 |
if ( ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ){ |
if ( ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ){ |
| 3175 |
// activateを調べる |
// activateを調べる |
| 3176 |
sql = "SELECT activate FROM " + dbprefix + "_xnpaccount_users WHERE uid=" + unsignedIntToString(sUID); |
sql = "SELECT activate FROM " + dbprefix + "_xoonips_users WHERE uid=" + unsignedIntToString(sUID); |
| 3177 |
unsigned int activate = 0; |
unsigned int activate = 0; |
| 3178 |
ret = queryGetUnsignedInt( "loginUser", sql, &activate ); |
ret = queryGetUnsignedInt( "loginUser", sql, &activate ); |
| 3179 |
if ( ret == RES_OK ){ |
if ( ret == RES_OK ){ |
| 3235 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 3236 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 3237 |
|
|
| 3238 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + intToString((int)sid); |
sql = "DELETE FROM " + dbprefix + "_xoonips_session WHERE sid=" + intToString((int)sid); |
| 3239 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 3240 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 3241 |
; |
; |
| 3276 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 3277 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 3278 |
|
|
| 3279 |
sql = "SELECT count(*) from " + dbprefix + "_xnpaccount_users where uid=" + unsignedIntToString( uid ) + " and activate=1"; |
sql = "SELECT count(*) from " + dbprefix + "_xoonips_users where uid=" + unsignedIntToString( uid ) + " and activate=1"; |
| 3280 |
unsigned int count; |
unsigned int count; |
| 3281 |
ret = queryGetUnsignedInt( "createSession", sql, &count ); |
ret = queryGetUnsignedInt( "createSession", sql, &count ); |
| 3282 |
if ( ret != RES_OK ) |
if ( ret != RES_OK ) |
| 3332 |
|
|
| 3333 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 3334 |
sql = "SELECT sid, uid, unix_timestamp(timestamp) from " + dbprefix + |
sql = "SELECT sid, uid, unix_timestamp(timestamp) from " + dbprefix + |
| 3335 |
"_xnpaccount_session where sid=" + unsignedIntToString((unsigned int)sid); |
"_xoonips_session where sid=" + unsignedIntToString((unsigned int)sid); |
| 3336 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 3337 |
sql = "SELECT sid, uid, timestamp from " + dbprefix + |
sql = "SELECT sid, uid, timestamp from " + dbprefix + |
| 3338 |
"_xnpaccount_session where sid=" + unsignedIntToString((unsigned int)sid); |
"_xoonips_session where sid=" + unsignedIntToString((unsigned int)sid); |
| 3339 |
} |
} |
| 3340 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 3341 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 3376 |
|
|
| 3377 |
/* |
/* |
| 3378 |
sql = "SELECT sid, uid, unix_timestamp(timestamp) from " + dbprefix + |
sql = "SELECT sid, uid, unix_timestamp(timestamp) from " + dbprefix + |
| 3379 |
"_xnpaccount_session where sid=" + unsignedIntToString((unsigned int)sid); |
"_xoonips_session where sid=" + unsignedIntToString((unsigned int)sid); |
| 3380 |
if( 0 == SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ){ |
if( 0 == SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ){ |
| 3381 |
MYSQL_RES* result = fp_mysql_store_result( mysql ); |
MYSQL_RES* result = fp_mysql_store_result( mysql ); |
| 3382 |
if( result ){ |
if( result ){ |
| 3445 |
|
|
| 3446 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 3447 |
string sql; |
string sql; |
| 3448 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_item_basic (item_type_id, title, keywords, description, doi, uid, creation_date, last_update_date, publication_year, publication_month, publication_mday) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; |
sql = "INSERT INTO " + dbprefix + "_xoonips_item_basic (item_type_id, title, keywords, description, doi, uid, creation_date, last_update_date, publication_year, publication_month, publication_mday) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; |
| 3449 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 3450 |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 3451 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 3492 |
;// 何もしない |
;// 何もしない |
| 3493 |
}else{ |
}else{ |
| 3494 |
//insert into private index |
//insert into private index |
| 3495 |
sql = "SELECT private_index_id FROM " + dbprefix + "_xnpaccount_users "; |
sql = "SELECT private_index_id FROM " + dbprefix + "_xoonips_users "; |
| 3496 |
sql += " WHERE uid=" + unsignedIntToString( uid ); |
sql += " WHERE uid=" + unsignedIntToString( uid ); |
| 3497 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 3498 |
if( ( ret = queryGetUnsignedInt( "insertItem", sql, (unsigned int*)&private_xid ) ) == RES_OK ){ |
if( ( ret = queryGetUnsignedInt( "insertItem", sql, (unsigned int*)&private_xid ) ) == RES_OK ){ |
| 3606 |
|
|
| 3607 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 3608 |
sql = "SELECT DISTINCT ti.item_id as item_id, item_type_id, title, keywords, description, doi, ti.uid as uid, creation_date, last_update_date, publication_year, publication_month, publication_mday "; |
sql = "SELECT DISTINCT ti.item_id as item_id, item_type_id, title, keywords, description, doi, ti.uid as uid, creation_date, last_update_date, publication_year, publication_month, publication_mday "; |
| 3609 |
sql+= " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql+= " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 3610 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 3611 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 3612 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 3613 |
sql = "SELECT DISTINCT xtest_xnpaccount_item_basic.item_id as item_id, item_type_id, title, keywords, description, doi, xtest_xnpaccount_item_basic.uid as uid, creation_date, last_update_date, publication_year, publication_month, publication_mday "; |
sql = "SELECT DISTINCT xtest_xoonips_item_basic.item_id as item_id, item_type_id, title, keywords, description, doi, xtest_xoonips_item_basic.uid as uid, creation_date, last_update_date, publication_year, publication_month, publication_mday "; |
| 3614 |
sql+= " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql+= " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 3615 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 3616 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic ON tlink.item_id = xtest_xnpaccount_item_basic.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_item_basic ON tlink.item_id = xtest_xoonips_item_basic.item_id"; |
| 3617 |
} |
} |
| 3618 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 3619 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 3620 |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 3621 |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 3622 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
| 3720 |
if( ret != RES_OK ) return 0; |
if( ret != RES_OK ) return 0; |
| 3721 |
|
|
| 3722 |
sql = "SELECT count(DISTINCT ti.item_id)"; |
sql = "SELECT count(DISTINCT ti.item_id)"; |
| 3723 |
sql+= " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql+= " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 3724 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 3725 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 3726 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 3727 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 3728 |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 3729 |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 3730 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
| 3784 |
if( ret != RES_OK ) return ret; |
if( ret != RES_OK ) return ret; |
| 3785 |
|
|
| 3786 |
sql = "SELECT DISTINCT ti.item_id as item_id"; |
sql = "SELECT DISTINCT ti.item_id as item_id"; |
| 3787 |
sql+= " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql+= " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 3788 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 3789 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 3790 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 3791 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 3792 |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 3793 |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 3794 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
| 3904 |
|
|
| 3905 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 3906 |
string sql; |
string sql; |
| 3907 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET "; |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic SET "; |
| 3908 |
sql += "item_type_id=?"; |
sql += "item_type_id=?"; |
| 3909 |
sql += ", title=?"; |
sql += ", title=?"; |
| 3910 |
sql += ", keywords=?"; |
sql += ", keywords=?"; |
| 3958 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
| 3959 |
string sql; |
string sql; |
| 3960 |
sql = "SELECT index_item_link_id "; |
sql = "SELECT index_item_link_id "; |
| 3961 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link as tlink "; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link as tlink "; |
| 3962 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index as tx ON tlink.index_id=tx.index_id "; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_index as tx ON tlink.index_id=tx.index_id "; |
| 3963 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic as ti ON tlink.item_id=ti.item_id "; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_item_basic as ti ON tlink.item_id=ti.item_id "; |
| 3964 |
sql += " WHERE (tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
sql += " WHERE (tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
| 3965 |
sql += " OR tx.open_level=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
sql += " OR tx.open_level=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 3966 |
sql += ") AND ti.item_type_id!=" + unsignedIntToString( item::ITID_BINDER ); |
sql += ") AND ti.item_type_id!=" + unsignedIntToString( item::ITID_BINDER ); |
| 3972 |
SQLBindCol( hstmt2,1, SQL_C_ULONG, ®istered_index_id, 0, &len ); |
SQLBindCol( hstmt2,1, SQL_C_ULONG, ®istered_index_id, 0, &len ); |
| 3973 |
certify_t certify_state = getInitialCertifyStateFromConfig( ); |
certify_t certify_state = getInitialCertifyStateFromConfig( ); |
| 3974 |
while ( ( sqlcode = SQLFetch( hstmt2 ) ) == SQL_SUCCESS ){ |
while ( ( sqlcode = SQLFetch( hstmt2 ) ) == SQL_SUCCESS ){ |
| 3975 |
string sql = "UPDATE " + dbprefix + "_xnpaccount_index_item_link"; |
string sql = "UPDATE " + dbprefix + "_xoonips_index_item_link"; |
| 3976 |
sql += " SET certify_state=" + unsignedIntToString( certify_state ); |
sql += " SET certify_state=" + unsignedIntToString( certify_state ); |
| 3977 |
sql += " WHERE index_item_link_id=" + unsignedIntToString( registered_index_id ); |
sql += " WHERE index_item_link_id=" + unsignedIntToString( registered_index_id ); |
| 3978 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4079 |
*/ |
*/ |
| 4080 |
|
|
| 4081 |
//1. delete item from index keywords |
//1. delete item from index keywords |
| 4082 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_index_item_link "; |
sql = "DELETE FROM " + dbprefix + "_xoonips_index_item_link "; |
| 4083 |
sql += "WHERE item_id = " + string( unsignedIntToString( itemid ) ); |
sql += "WHERE item_id = " + string( unsignedIntToString( itemid ) ); |
| 4084 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 4085 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 4110 |
} |
} |
| 4111 |
|
|
| 4112 |
//2. delete item from binders |
//2. delete item from binders |
| 4113 |
sql = "DELETE FROM " + dbprefix + "_xnpbinder_binder_item_link "; |
sql = "DELETE FROM " + dbprefix + "_xoonips_binder_item_link "; |
| 4114 |
sql += "WHERE item_id = " + string( unsignedIntToString( itemid ) ); |
sql += "WHERE item_id = " + string( unsignedIntToString( itemid ) ); |
| 4115 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 4116 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 4142 |
|
|
| 4143 |
|
|
| 4144 |
// 3. delete item |
// 3. delete item |
| 4145 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_item_basic "; |
sql = "DELETE FROM " + dbprefix + "_xoonips_item_basic "; |
| 4146 |
sql += "WHERE item_id = " + string( unsignedIntToString( itemid ) ); |
sql += "WHERE item_id = " + string( unsignedIntToString( itemid ) ); |
| 4147 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 4148 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 4209 |
|
|
| 4210 |
//SELECT 自アイテム NOT IN ( 公開承認されたアイテム ) |
//SELECT 自アイテム NOT IN ( 公開承認されたアイテム ) |
| 4211 |
sql = "SELECT DISTINCT tlink.item_id"; |
sql = "SELECT DISTINCT tlink.item_id"; |
| 4212 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 4213 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id=tx.index_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id=tx.index_id"; |
| 4214 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id=ti.item_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id=ti.item_id"; |
| 4215 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
| 4216 |
|
|
| 4217 |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 4218 |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFIED ); |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFIED ); |
| 4230 |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &iid, 0, &cbIid ); |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &iid, 0, &cbIid ); |
| 4231 |
|
|
| 4232 |
string notin; |
string notin; |
| 4233 |
sql = "SELECT item_id FROM " + dbprefix + "_xnpaccount_item_basic"; |
sql = "SELECT item_id FROM " + dbprefix + "_xoonips_item_basic"; |
| 4234 |
sql += " WHERE item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
sql += " WHERE item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
| 4235 |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_BINDER ); |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_BINDER ); |
| 4236 |
sql += " AND uid=" + unsignedIntToString( sess_uid ); |
sql += " AND uid=" + unsignedIntToString( sess_uid ); |
| 4323 |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
| 4324 |
|
|
| 4325 |
sql = "SELECT DISTINCT tlink.item_id"; |
sql = "SELECT DISTINCT tlink.item_id"; |
| 4326 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 4327 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id=tx.index_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id=tx.index_id"; |
| 4328 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id=ti.item_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id=ti.item_id"; |
| 4329 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
| 4330 |
|
|
| 4331 |
sql += " WHERE open_level=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
sql += " WHERE open_level=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 4332 |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFIED ); |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFIED ); |
| 4408 |
userid_t uid; |
userid_t uid; |
| 4409 |
|
|
| 4410 |
if( ( ret = sessionID2UID( sid, &uid ) ) != RES_OK ) return ret; |
if( ( ret = sessionID2UID( sid, &uid ) ) != RES_OK ) return ret; |
| 4411 |
sql = "SELECT DISTINCT tlink.item_id AS item_id FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql = "SELECT DISTINCT tlink.item_id AS item_id FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 4412 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 4413 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 4414 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 4415 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 4416 |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 4417 |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 4418 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
| 4503 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 4504 |
|
|
| 4505 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 4506 |
sql = "SELECT t1.item_id FROM " + dbprefix + "_xnpaccount_item_basic as t1, " |
sql = "SELECT t1.item_id FROM " + dbprefix + "_xoonips_item_basic as t1, " |
| 4507 |
+ dbprefix + "_xnpbinder_binder_item_link as t2 "; |
+ dbprefix + "_xoonips_binder_item_link as t2 "; |
| 4508 |
sql += " WHERE t1.item_id = t2.item_id"; |
sql += " WHERE t1.item_id = t2.item_id"; |
| 4509 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 4510 |
sql = "SELECT " + dbprefix + "_xnpaccount_item_basic.item_id FROM " + dbprefix + "_xnpaccount_item_basic, " |
sql = "SELECT " + dbprefix + "_xoonips_item_basic.item_id FROM " + dbprefix + "_xoonips_item_basic, " |
| 4511 |
+ dbprefix + "_xnpbinder_binder_item_link as t2 "; |
+ dbprefix + "_xoonips_binder_item_link as t2 "; |
| 4512 |
sql += " WHERE " + dbprefix + "_xnpaccount_item_basic.item_id = t2.item_id"; |
sql += " WHERE " + dbprefix + "_xoonips_item_basic.item_id = t2.item_id"; |
| 4513 |
} |
} |
| 4514 |
sql += " AND t2.binder_id=" + unsignedIntToString( binderid ); |
sql += " AND t2.binder_id=" + unsignedIntToString( binderid ); |
| 4515 |
sql += criteria2str( cri ); |
sql += criteria2str( cri ); |
| 4569 |
string sql; |
string sql; |
| 4570 |
|
|
| 4571 |
sql = "SELECT certify_state"; |
sql = "SELECT certify_state"; |
| 4572 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link"; |
| 4573 |
sql += " WHERE item_id = " + unsignedIntToString( iid ); |
sql += " WHERE item_id = " + unsignedIntToString( iid ); |
| 4574 |
sql += " AND index_id = " + unsignedIntToString( xid ); |
sql += " AND index_id = " + unsignedIntToString( xid ); |
| 4575 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4592 |
{ |
{ |
| 4593 |
if( !getCertifyPermission( sid, xid, iid, state ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
if( !getCertifyPermission( sid, xid, iid, state ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
| 4594 |
|
|
| 4595 |
string sql = "UPDATE " + dbprefix + "_xnpaccount_index_item_link SET certify_state=" |
string sql = "UPDATE " + dbprefix + "_xoonips_index_item_link SET certify_state=" |
| 4596 |
+ unsignedIntToString( state ) |
+ unsignedIntToString( state ) |
| 4597 |
+ " WHERE index_id=" + unsignedIntToString( xid ) |
+ " WHERE index_id=" + unsignedIntToString( xid ) |
| 4598 |
+ " AND item_id=" + unsignedIntToString( iid ); |
+ " AND item_id=" + unsignedIntToString( iid ); |
| 4625 |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
| 4626 |
|
|
| 4627 |
sql = "SELECT DISTINCT tlink.index_id, tlink.item_id"; |
sql = "SELECT DISTINCT tlink.index_id, tlink.item_id"; |
| 4628 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 4629 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 4630 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 4631 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
| 4632 |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 4633 |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
| 4634 |
sql += " AND ti.item_id=" + unsignedIntToString( iid ); |
sql += " AND ti.item_id=" + unsignedIntToString( iid ); |
| 4671 |
if( !getIndexPermission( sid, xid, index::OP_REGISTER ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
if( !getIndexPermission( sid, xid, index::OP_REGISTER ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
| 4672 |
|
|
| 4673 |
// register the item. |
// register the item. |
| 4674 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_index_item_link (index_id, item_id, certify_state) values (" |
sql = "INSERT INTO " + dbprefix + "_xoonips_index_item_link (index_id, item_id, certify_state) values (" |
| 4675 |
+ unsignedIntToString(xid) + "," |
+ unsignedIntToString(xid) + "," |
| 4676 |
+ unsignedIntToString(iid) + "," |
+ unsignedIntToString(iid) + "," |
| 4677 |
+ unsignedIntToString( getInitialCertifyStateFromConfig( ) ) + ")"; |
+ unsignedIntToString( getInitialCertifyStateFromConfig( ) ) + ")"; |
| 4679 |
ret = querySimple( "registerItem", sql ); |
ret = querySimple( "registerItem", sql ); |
| 4680 |
if( ret == RES_OK ){ |
if( ret == RES_OK ){ |
| 4681 |
// update last update date |
// update last update date |
| 4682 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date=" |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic SET last_update_date=" |
| 4683 |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
| 4684 |
+ unsignedIntToString( xid ); |
+ unsignedIntToString( xid ); |
| 4685 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4712 |
if( !getIndexPermission( sid, xid, index::OP_UNREGISTER ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
if( !getIndexPermission( sid, xid, index::OP_UNREGISTER ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
| 4713 |
|
|
| 4714 |
// unregister the item. |
// unregister the item. |
| 4715 |
sql = "DELETE FROM " + dbprefix + "_xnpaccount_index_item_link"; |
sql = "DELETE FROM " + dbprefix + "_xoonips_index_item_link"; |
| 4716 |
sql += " WHERE index_id=" + unsignedIntToString(xid); |
sql += " WHERE index_id=" + unsignedIntToString(xid); |
| 4717 |
sql += " AND item_id=" + unsignedIntToString(iid); |
sql += " AND item_id=" + unsignedIntToString(iid); |
| 4718 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4719 |
ret = querySimple( "unregisterItem", sql ); |
ret = querySimple( "unregisterItem", sql ); |
| 4720 |
if( ret == RES_OK ){ |
if( ret == RES_OK ){ |
| 4721 |
// update last update date |
// update last update date |
| 4722 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date=" |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic SET last_update_date=" |
| 4723 |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
| 4724 |
+ unsignedIntToString( xid ); |
+ unsignedIntToString( xid ); |
| 4725 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4752 |
if( !getItemPermission( sid, binderid, item::OP_MODIFY ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
if( !getItemPermission( sid, binderid, item::OP_MODIFY ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
| 4753 |
|
|
| 4754 |
// register the item. |
// register the item. |
| 4755 |
sql = "INSERT INTO " + dbprefix + "_xnpbinder_binder_item_link (binder_id, item_id) values (" |
sql = "INSERT INTO " + dbprefix + "_xoonips_binder_item_link (binder_id, item_id) values (" |
| 4756 |
+ unsignedIntToString(binderid) + "," |
+ unsignedIntToString(binderid) + "," |
| 4757 |
+ unsignedIntToString(iid) + ")"; |
+ unsignedIntToString(iid) + ")"; |
| 4758 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4759 |
ret = querySimple( "registerBinderItem", sql ); |
ret = querySimple( "registerBinderItem", sql ); |
| 4760 |
if( ret == RES_OK ){ |
if( ret == RES_OK ){ |
| 4761 |
// update binder's last update date |
// update binder's last update date |
| 4762 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date=" |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic SET last_update_date=" |
| 4763 |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
| 4764 |
+ unsignedIntToString( binderid ); |
+ unsignedIntToString( binderid ); |
| 4765 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4792 |
if( !getItemPermission( sid, binderid, item::OP_MODIFY ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
if( !getItemPermission( sid, binderid, item::OP_MODIFY ) ) return RES_NO_WRITE_ACCESS_RIGHT; |
| 4793 |
|
|
| 4794 |
// unregister the item. |
// unregister the item. |
| 4795 |
sql = "DELETE FROM " + dbprefix + "_xnpbinder_binder_item_link"; |
sql = "DELETE FROM " + dbprefix + "_xoonips_binder_item_link"; |
| 4796 |
sql += " WHERE binder_id=" + unsignedIntToString(binderid); |
sql += " WHERE binder_id=" + unsignedIntToString(binderid); |
| 4797 |
sql += " AND item_id=" + unsignedIntToString(iid); |
sql += " AND item_id=" + unsignedIntToString(iid); |
| 4798 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4799 |
ret = querySimple( "unregisterBinderItem", sql ); |
ret = querySimple( "unregisterBinderItem", sql ); |
| 4800 |
if( ret == RES_OK ){ |
if( ret == RES_OK ){ |
| 4801 |
// update binder's last update date |
// update binder's last update date |
| 4802 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date=" |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic SET last_update_date=" |
| 4803 |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
+ unsignedIntToString( time( NULL ) ) + " WHERE item_id=" |
| 4804 |
+ unsignedIntToString( binderid ); |
+ unsignedIntToString( binderid ); |
| 4805 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4828 |
|
|
| 4829 |
if( sessionID2UID( sid, &uid ) != RES_OK ) return false; |
if( sessionID2UID( sid, &uid ) != RES_OK ) return false; |
| 4830 |
if( op == item::OP_READ ){ |
if( op == item::OP_READ ){ |
| 4831 |
sql = "SELECT DISTINCT tlink.item_id FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql = "SELECT DISTINCT tlink.item_id FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 4832 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 4833 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 4834 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 4835 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " LEFT JOIN " + dbprefix + "_xoonips_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 4836 |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 4837 |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 4838 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NULL"; |
| 4861 |
} |
} |
| 4862 |
}else if( op == item::OP_MODIFY || op == item::OP_DELETE ){ |
}else if( op == item::OP_MODIFY || op == item::OP_DELETE ){ |
| 4863 |
//TODO 条件追加:todo自分のアイテムでも承認待ち状態なら編集・削除できない |
//TODO 条件追加:todo自分のアイテムでも承認待ち状態なら編集・削除できない |
| 4864 |
sql = "SELECT item_id FROM " + dbprefix + "_xnpaccount_item_basic"; |
sql = "SELECT item_id FROM " + dbprefix + "_xoonips_item_basic"; |
| 4865 |
sql += " WHERE uid=" + unsignedIntToString( uid ); |
sql += " WHERE uid=" + unsignedIntToString( uid ); |
| 4866 |
sql += " AND item_id=" + unsignedIntToString( iid ); |
sql += " AND item_id=" + unsignedIntToString( iid ); |
| 4867 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 4894 |
if( isModeratorBySession( sid ) ); |
if( isModeratorBySession( sid ) ); |
| 4895 |
else if( xid == item::IID_BINDERS ); |
else if( xid == item::IID_BINDERS ); |
| 4896 |
else if( sessionID2UID( sid, &uid ) == RES_OK ){ |
else if( sessionID2UID( sid, &uid ) == RES_OK ){ |
| 4897 |
sql = "SELECT index_id FROM " + dbprefix + "_xnpaccount_index as tx"; |
sql = "SELECT index_id FROM " + dbprefix + "_xoonips_index as tx"; |
| 4898 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_users AS tuser ON tx.uid=tuser.uid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_users AS tuser ON tx.uid=tuser.uid"; |
| 4899 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups AS tgroup ON tx.gid=tgroup.gid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups AS tgroup ON tx.gid=tgroup.gid"; |
| 4900 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link AS tlink ON tx.gid=tlink.gid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tlink ON tx.gid=tlink.gid"; |
| 4901 |
sql += " WHERE ( tx.open_level=1"; |
sql += " WHERE ( tx.open_level=1"; |
| 4902 |
sql += " OR tx.open_level=2 AND tlink.uid=" + unsignedIntToString( uid ); |
sql += " OR tx.open_level=2 AND tlink.uid=" + unsignedIntToString( uid ); |
| 4903 |
sql += " OR tx.open_level=3 AND tx.uid=" + unsignedIntToString( uid ) + " )"; |
sql += " OR tx.open_level=3 AND tx.uid=" + unsignedIntToString( uid ) + " )"; |
| 4941 |
|
|
| 4942 |
time_t now = time(NULL); |
time_t now = time(NULL); |
| 4943 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 4944 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid ) |
sql = "SELECT * FROM " + dbprefix + "_xoonips_session WHERE sid=" + unsignedIntToString( sid ) |
| 4945 |
+ " AND unix_timestamp(timestamp) > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
+ " AND unix_timestamp(timestamp) > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 4946 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 4947 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid ) |
sql = "SELECT * FROM " + dbprefix + "_xoonips_session WHERE sid=" + unsignedIntToString( sid ) |
| 4948 |
+ " AND timestamp > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
+ " AND timestamp > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 4949 |
} |
} |
| 4950 |
|
|
| 4980 |
if ( ret == true ){ |
if ( ret == true ){ |
| 4981 |
// timestampを更新する |
// timestampを更新する |
| 4982 |
if( dbtype == DBTYPE_MYSQL ){ |
if( dbtype == DBTYPE_MYSQL ){ |
| 4983 |
sql = "UPDATE " + dbprefix + "_xnpaccount_session set timestamp=from_unixtime(" + unsignedIntToString(now) |
sql = "UPDATE " + dbprefix + "_xoonips_session set timestamp=from_unixtime(" + unsignedIntToString(now) |
| 4984 |
+ ") WHERE sid=" + unsignedIntToString( sid ); |
+ ") WHERE sid=" + unsignedIntToString( sid ); |
| 4985 |
}else if( dbtype == DBTYPE_SQLITE ){ |
}else if( dbtype == DBTYPE_SQLITE ){ |
| 4986 |
sql = "UPDATE " + dbprefix + "_xnpaccount_session set timestamp=" + unsignedIntToString(now) |
sql = "UPDATE " + dbprefix + "_xoonips_session set timestamp=" + unsignedIntToString(now) |
| 4987 |
+ " WHERE sid=" + unsignedIntToString( sid ); |
+ " WHERE sid=" + unsignedIntToString( sid ); |
| 4988 |
} |
} |
| 4989 |
querySimple("isValidSession", sql); |
querySimple("isValidSession", sql); |
| 5008 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 5009 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 5010 |
|
|
| 5011 |
string groupUserLinkTable = dbprefix + "_xnpaccount_groups_users_link"; |
string groupUserLinkTable = dbprefix + "_xoonips_groups_users_link"; |
| 5012 |
string indexTable = dbprefix + "_xnpaccount_index"; |
string indexTable = dbprefix + "_xoonips_index"; |
| 5013 |
string itemTable = dbprefix + "_xnpaccount_item_basic"; |
string itemTable = dbprefix + "_xoonips_item_basic"; |
| 5014 |
string uidString = unsignedIntToString( uid ); |
string uidString = unsignedIntToString( uid ); |
| 5015 |
if ( cond == 0 ) |
if ( cond == 0 ) |
| 5016 |
cond = " 1 "; |
cond = " 1 "; |
| 5168 |
string sql; |
string sql; |
| 5169 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 5170 |
|
|
| 5171 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_groups_users_link "; |
sql = "SELECT * FROM " + dbprefix + "_xoonips_groups_users_link "; |
| 5172 |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
sql += "WHERE gid=" + string( unsignedIntToString( gid ) ); |
| 5173 |
sql += " AND uid=" + string( unsignedIntToString( uid ) ); |
sql += " AND uid=" + string( unsignedIntToString( uid ) ); |
| 5174 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 5299 |
result_t getNewSortNumber( indexid_t parentXID, unsigned int *sortNumber ){ |
result_t getNewSortNumber( indexid_t parentXID, unsigned int *sortNumber ){ |
| 5300 |
if( hdbc == NULL ) return RES_DB_NOT_INITIALIZED; |
if( hdbc == NULL ) return RES_DB_NOT_INITIALIZED; |
| 5301 |
|
|
| 5302 |
string sql = "SELECT max(sort_number) FROM " + dbprefix + "_xnpaccount_index WHERE parent_index_id=" + unsignedIntToString(parentXID); |
string sql = "SELECT max(sort_number) FROM " + dbprefix + "_xoonips_index WHERE parent_index_id=" + unsignedIntToString(parentXID); |
| 5303 |
unsigned int u; |
unsigned int u; |
| 5304 |
result_t result = queryGetUnsignedInt( "getNewSortNumber", sql, &u ); |
result_t result = queryGetUnsignedInt( "getNewSortNumber", sql, &u ); |
| 5305 |
if ( result == RES_OK ){ |
if ( result == RES_OK ){ |
| 5404 |
result_t result = insertItem( sid, index, &iid ); |
result_t result = insertItem( sid, index, &iid ); |
| 5405 |
if ( result == RES_OK ){ |
if ( result == RES_OK ){ |
| 5406 |
string nullString("NULL"); |
string nullString("NULL"); |
| 5407 |
string sql = "INSERT INTO " + dbprefix + "_xnpaccount_index ( index_id, parent_index_id, uid, gid, open_level, sort_number ) values ( " |
string sql = "INSERT INTO " + dbprefix + "_xoonips_index ( index_id, parent_index_id, uid, gid, open_level, sort_number ) values ( " |
| 5408 |
+ unsignedIntToString(iid) + "," |
+ unsignedIntToString(iid) + "," |
| 5409 |
+ unsignedIntToString(index->getParentIndexID()) + "," |
+ unsignedIntToString(index->getParentIndexID()) + "," |
| 5410 |
+ ( index->getOpenLevel() == index::OL_PRIVATE ? unsignedIntToString(index->getOwnerUID()) : nullString ) + "," |
+ ( index->getOpenLevel() == index::OL_PRIVATE ? unsignedIntToString(index->getOwnerUID()) : nullString ) + "," |
| 5416 |
*xid = iid; |
*xid = iid; |
| 5417 |
} |
} |
| 5418 |
else { |
else { |
| 5419 |
string sql2 = "DELETE FROM " + dbprefix + "_xnpaccount_item_basic where item_id=" + unsignedIntToString( iid ); |
string sql2 = "DELETE FROM " + dbprefix + "_xoonips_item_basic where item_id=" + unsignedIntToString( iid ); |
| 5420 |
querySimple( "insertIndexInternal", sql2 ); |
querySimple( "insertIndexInternal", sql2 ); |
| 5421 |
string message( "in insertIndexInternal: bad uid/gid/openlevel. sql=" ); |
string message( "in insertIndexInternal: bad uid/gid/openlevel. sql=" ); |
| 5422 |
message = message + sql; |
message = message + sql; |
| 5465 |
else { |
else { |
| 5466 |
// 同名の子インデックスがあれば、蹴る |
// 同名の子インデックスがあれば、蹴る |
| 5467 |
bool conflict = false; |
bool conflict = false; |
| 5468 |
|
/* titleの衝突を許可するよう修正。20050516メールより。警告はPHP側で出す。 |
| 5469 |
result = checkTitleConflict( sid, index->getParentIndexID(), index->getTitle(), &conflict ); |
result = checkTitleConflict( sid, index->getParentIndexID(), index->getTitle(), &conflict ); |
| 5470 |
if ( result != RES_OK ){ |
if ( result != RES_OK ){ |
| 5471 |
; |
; |
| 5474 |
setLastErrorString( "in insertIndex: title conflict" ); |
setLastErrorString( "in insertIndex: title conflict" ); |
| 5475 |
result = RES_ERROR; // エラー: 同名の子indexが既に存在する。 |
result = RES_ERROR; // エラー: 同名の子indexが既に存在する。 |
| 5476 |
} |
} |
| 5477 |
else if ( index->getTitle()[0] == '\0' ){ |
else */ |
| 5478 |
|
if ( index->getTitle()[0] == '\0' ){ |
| 5479 |
// titleを空文字列にできない |
// titleを空文字列にできない |
| 5480 |
setLastErrorString( "in insertIndex: empty title" ); |
setLastErrorString( "in insertIndex: empty title" ); |
| 5481 |
result = RES_ERROR; |
result = RES_ERROR; |
| 5514 |
// todo |
// todo |
| 5515 |
if( hdbc == NULL ) return RES_DB_NOT_INITIALIZED; |
if( hdbc == NULL ) return RES_DB_NOT_INITIALIZED; |
| 5516 |
|
|
| 5517 |
string cond = "select count(*) from " + dbprefix + "_xnpaccount_index"; |
string cond = "select count(*) from " + dbprefix + "_xoonips_index"; |
| 5518 |
unsigned int allIndexCount; |
unsigned int allIndexCount; |
| 5519 |
result_t result = queryGetUnsignedInt( "getDescendantIndexID", cond, &allIndexCount ); |
result_t result = queryGetUnsignedInt( "getDescendantIndexID", cond, &allIndexCount ); |
| 5520 |
if ( result != RES_OK ) |
if ( result != RES_OK ) |
| 5548 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 5549 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 5550 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 5551 |
string sql = "SELECT index_id FROM " + dbprefix + "_xnpaccount_index WHERE parent_index_id=" + unsignedIntToString(xid); |
string sql = "SELECT index_id FROM " + dbprefix + "_xoonips_index WHERE parent_index_id=" + unsignedIntToString(xid); |
| 5552 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 5553 |
SQLUINTEGER sXID = 0; |
SQLUINTEGER sXID = 0; |
| 5554 |
SQLLEN len = 0; |
SQLLEN len = 0; |
| 5599 |
*/ |
*/ |
| 5600 |
static result_t getAllIndexLink( indexLink_t **links, int *linksLen ){ |
static result_t getAllIndexLink( indexLink_t **links, int *linksLen ){ |
| 5601 |
result_t result = RES_OK; |
result_t result = RES_OK; |
| 5602 |
string sql("SELECT COUNT(*) from " + dbprefix + "_xnpaccount_index"); |
string sql("SELECT COUNT(*) from " + dbprefix + "_xoonips_index"); |
| 5603 |
int totalIndexCount; |
int totalIndexCount; |
| 5604 |
result = getCountInternal( "getAllIndexLink", sql, &totalIndexCount ); |
result = getCountInternal( "getAllIndexLink", sql, &totalIndexCount ); |
| 5605 |
|
|
| 5610 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 5611 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 5612 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 5613 |
string sql("SELECT index_id, parent_index_id FROM " + dbprefix + "_xnpaccount_index ORDER BY index_id"); |
string sql("SELECT index_id, parent_index_id FROM " + dbprefix + "_xoonips_index ORDER BY index_id"); |
| 5614 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 5615 |
SQLUINTEGER xid = 0, parentXID = 0; |
SQLUINTEGER xid = 0, parentXID = 0; |
| 5616 |
SQLLEN len1 = 0, len2 = 0; |
SQLLEN len1 = 0, len2 = 0; |
| 5657 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 5658 |
result_t result = RES_ERROR; |
result_t result = RES_ERROR; |
| 5659 |
|
|
| 5660 |
string sql( "SELECT count(*) from " + dbprefix + "_xnpaccount_index as tx " |
string sql( "SELECT count(*) from " + dbprefix + "_xoonips_index as tx " |
| 5661 |
" left join " + dbprefix + "_xnpaccount_item_basic as ti on ti.item_id=tx.index_id " |
" left join " + dbprefix + "_xoonips_item_basic as ti on ti.item_id=tx.index_id " |
| 5662 |
" where parent_index_id = " + unsignedIntToString( parentIndexID ) + |
" where parent_index_id = " + unsignedIntToString( parentIndexID ) + |
| 5663 |
" and ti.title = ? " ); |
" and ti.title = ? " ); |
| 5664 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 5765 |
} |
} |
| 5766 |
|
|
| 5767 |
// リネーム・移動でtitleが衝突するなら、エラー。 |
// リネーム・移動でtitleが衝突するなら、エラー。 |
| 5768 |
|
/* titleの衝突を許可するよう修正。20050516メールより。警告はPHP側で出す。 |
| 5769 |
bool conflict = false; |
bool conflict = false; |
| 5770 |
result = checkTitleConflict( sid, newIndex->getParentIndexID(), newIndex->getTitle(), &conflict ); |
result = checkTitleConflict( sid, newIndex->getParentIndexID(), newIndex->getTitle(), &conflict ); |
| 5771 |
if ( result != RES_OK ) |
if ( result != RES_OK ) |
| 5774 |
setLastErrorString( "in updateIndexInternal: title conflict" ); |
setLastErrorString( "in updateIndexInternal: title conflict" ); |
| 5775 |
return RES_ERROR; |
return RES_ERROR; |
| 5776 |
} |
} |
| 5777 |
|
*/ |
| 5778 |
if ( move ){ |
if ( move ){ |
| 5779 |
indexid_t *descXID = 0; |
indexid_t *descXID = 0; |
| 5780 |
int descXIDLen; |
int descXIDLen; |
| 5816 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 5817 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 5818 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 5819 |
string sql("UPDATE " + dbprefix + "_xnpaccount_index set" |
string sql("UPDATE " + dbprefix + "_xoonips_index set" |
| 5820 |
" parent_index_id = " + unsignedIntToString(newIndex->getParentIndexID()) + |
" parent_index_id = " + unsignedIntToString(newIndex->getParentIndexID()) + |
| 5821 |
", uid = " + ownerUIDString + |
", uid = " + ownerUIDString + |
| 5822 |
", gid = " + ownerGIDString + |
", gid = " + ownerGIDString + |
| 5825 |
" where index_id = " + unsignedIntToString(newIndex->getIndexID()) ); |
" where index_id = " + unsignedIntToString(newIndex->getIndexID()) ); |
| 5826 |
|
|
| 5827 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 5828 |
string sql("UPDATE " + dbprefix + "_xnpaccount_item_basic set" |
string sql("UPDATE " + dbprefix + "_xoonips_item_basic set" |
| 5829 |
" item_type_id = " + unsignedIntToString(newIndex->getItemTypeID()) + |
" item_type_id = " + unsignedIntToString(newIndex->getItemTypeID()) + |
| 5830 |
", uid = " + unsignedIntToString(newIndex->getContributorUID()) + |
", uid = " + unsignedIntToString(newIndex->getContributorUID()) + |
| 5831 |
", last_update_date = " + unsignedIntToString(newIndex->getLastUpdateDate()) + |
", last_update_date = " + unsignedIntToString(newIndex->getLastUpdateDate()) + |
| 5885 |
} |
} |
| 5886 |
int i; |
int i; |
| 5887 |
for ( i = 0; i < descXIDLen; i++ ){ |
for ( i = 0; i < descXIDLen; i++ ){ |
| 5888 |
string sql = "UPDATE " + dbprefix + "_xnpaccount_index set " |
string sql = "UPDATE " + dbprefix + "_xoonips_index set " |
| 5889 |
" uid=" + ownerUIDString + |
" uid=" + ownerUIDString + |
| 5890 |
", gid=" + ownerGIDString + |
", gid=" + ownerGIDString + |
| 5891 |
", open_level=" + ownerOpenLevelString + |
", open_level=" + ownerOpenLevelString + |
| 6015 |
string strParentXID = unsignedIntToString( index->getParentIndexID() ); |
string strParentXID = unsignedIntToString( index->getParentIndexID() ); |
| 6016 |
for ( int i = descXIDLen-1; i >= 0; i-- ){ // 逆方向にして、途中で失敗した場合の惨事を防ぐ。descXIDは幅優先探索順に並んでいるので。 |
for ( int i = descXIDLen-1; i >= 0; i-- ){ // 逆方向にして、途中で失敗した場合の惨事を防ぐ。descXIDは幅優先探索順に並んでいるので。 |
| 6017 |
string strXID = unsignedIntToString(descXID[i]); |
string strXID = unsignedIntToString(descXID[i]); |
| 6018 |
string linkTable = dbprefix + "_xnpaccount_index_item_link"; |
string linkTable = dbprefix + "_xoonips_index_item_link"; |
| 6019 |
|
|
| 6020 |
// descXID[i] のアイテムの中で、被参照数が1のものを列挙 → 迷子にならないように移動 |
// descXID[i] のアイテムの中で、被参照数が1のものを列挙 → 迷子にならないように移動 |
| 6021 |
// HAVINGを使うべき? "select item_id, count(*) as v1, sum(index_id=$index_id) as v2 from $link_table having v1=1 and v2=1" |
// HAVINGを使うべき? "select item_id, count(*) as v1, sum(index_id=$index_id) as v2 from $link_table having v1=1 and v2=1" |
| 6052 |
result = querySimple( functionName, sql ); |
result = querySimple( functionName, sql ); |
| 6053 |
if ( result == RES_OK ){ |
if ( result == RES_OK ){ |
| 6054 |
// descXID[i] を削除 |
// descXID[i] を削除 |
| 6055 |
sql = "DELETE from " + dbprefix + "_xnpaccount_item_basic where item_id =" + strXID; |
sql = "DELETE from " + dbprefix + "_xoonips_item_basic where item_id =" + strXID; |
| 6056 |
result = querySimple( functionName, sql ); |
result = querySimple( functionName, sql ); |
| 6057 |
if ( result == RES_OK ){ |
if ( result == RES_OK ){ |
| 6058 |
sql = "DELETE from " + dbprefix + "_xnpaccount_index where index_id=" + strXID; |
sql = "DELETE from " + dbprefix + "_xoonips_index where index_id=" + strXID; |
| 6059 |
result = querySimple( functionName, sql ); |
result = querySimple( functionName, sql ); |
| 6060 |
} |
} |
| 6061 |
} |
} |
| 6115 |
if ( isWritableInternal( sid, uid, index1 ) && isWritableInternal( sid, uid, index2 ) ){ |
if ( isWritableInternal( sid, uid, index1 ) && isWritableInternal( sid, uid, index2 ) ){ |
| 6116 |
string xid1String = unsignedIntToString(xid1); |
string xid1String = unsignedIntToString(xid1); |
| 6117 |
string xid2String = unsignedIntToString(xid2); |
string xid2String = unsignedIntToString(xid2); |
| 6118 |
string indexTable = dbprefix + "_xnpaccount_index"; |
string indexTable = dbprefix + "_xoonips_index"; |
| 6119 |
string sql1 = "UPDATE " + indexTable + " set sort_number=0 WHERE index_id=" + xid1String; |
string sql1 = "UPDATE " + indexTable + " set sort_number=0 WHERE index_id=" + xid1String; |
| 6120 |
string sql2 = "UPDATE " + indexTable + " set sort_number=" + unsignedIntToString(index1->getSortNumber()) + " WHERE index_id=" + xid2String; |
string sql2 = "UPDATE " + indexTable + " set sort_number=" + unsignedIntToString(index1->getSortNumber()) + " WHERE index_id=" + xid2String; |
| 6121 |
string sql3 = "UPDATE " + indexTable + " set sort_number=" + unsignedIntToString(index2->getSortNumber()) + " WHERE index_id=" + xid1String; |
string sql3 = "UPDATE " + indexTable + " set sort_number=" + unsignedIntToString(index2->getSortNumber()) + " WHERE index_id=" + xid1String; |
| 6169 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 6170 |
|
|
| 6171 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 6172 |
string sql( "UPDATE " + dbprefix + "_xnpaccount_config SET value=? WHERE name=?"); |
string sql( "UPDATE " + dbprefix + "_xoonips_config SET value=? WHERE name=?"); |
| 6173 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 6174 |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 6175 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 6180 |
if( ( sqlcode = SQLRowCount( hstmt, &count ) ) == SQL_SUCCESS && count > 0 ){ |
if( ( sqlcode = SQLRowCount( hstmt, &count ) ) == SQL_SUCCESS && count > 0 ){ |
| 6181 |
ret = RES_OK; |
ret = RES_OK; |
| 6182 |
}else if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
}else if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt2 ) ) == SQL_SUCCESS ) { |
| 6183 |
string sql( "INSERT INTO " + dbprefix + "_xnpaccount_config (name,value) VALUES (?,?)"); |
string sql( "INSERT INTO " + dbprefix + "_xoonips_config (name,value) VALUES (?,?)"); |
| 6184 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 6185 |
sqlcode = SQLPrepare(hstmt2, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt2, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 6186 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 6250 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 6251 |
|
|
| 6252 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 6253 |
string sql("SELECT value FROM " + dbprefix + "_xnpaccount_config WHERE name=?"); |
string sql("SELECT value FROM " + dbprefix + "_xoonips_config WHERE name=?"); |
| 6254 |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS); |
| 6255 |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){ |
| 6256 |
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_CONFIG_NAME_LEN, 0, (SQLCHAR*)key, strlen(key), &cbKey ); |
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_CONFIG_NAME_LEN, 0, (SQLCHAR*)key, strlen(key), &cbKey ); |
| 6352 |
SQLLEN len = 0; |
SQLLEN len = 0; |
| 6353 |
time_t log_date = 0; |
time_t log_date = 0; |
| 6354 |
|
|
| 6355 |
sql = "SELECT log_date, log FROM " + dbprefix + "_xnpaccount_changelog" |
sql = "SELECT log_date, log FROM " + dbprefix + "_xoonips_changelog" |
| 6356 |
+ " WHERE item_id=" + unsignedIntToString( itemid ) |
+ " WHERE item_id=" + unsignedIntToString( itemid ) |
| 6357 |
+ " ORDER BY log_date DESC, log_id DESC"; |
+ " ORDER BY log_date DESC, log_id DESC"; |
| 6358 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 6416 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 6417 |
SQLLEN cbLog = SQL_NTS; |
SQLLEN cbLog = SQL_NTS; |
| 6418 |
string sql; |
string sql; |
| 6419 |
sql = "INSERT INTO " + dbprefix + "_xnpaccount_changelog (item_id, log_date, log) VALUES ("; |
sql = "INSERT INTO " + dbprefix + "_xoonips_changelog (item_id, log_date, log) VALUES ("; |
| 6420 |
sql += unsignedIntToString( itemid ) + ", "; |
sql += unsignedIntToString( itemid ) + ", "; |
| 6421 |
sql += unsignedIntToString( now ) + ", ?)"; |
sql += unsignedIntToString( now ) + ", ?)"; |
| 6422 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 6426 |
(SQLCHAR*)( log ), strlen( log ), &cbLog ); |
(SQLCHAR*)( log ), strlen( log ), &cbLog ); |
| 6427 |
if( ( sqlcode = SQLExecute( hstmt ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecute( hstmt ) ) == SQL_SUCCESS ){ |
| 6428 |
// update last update date |
// update last update date |
| 6429 |
sql = "UPDATE " + dbprefix + "_xnpaccount_item_basic SET last_update_date=" |
sql = "UPDATE " + dbprefix + "_xoonips_item_basic SET last_update_date=" |
| 6430 |
+ unsignedIntToString( now ) + " WHERE item_id=" |
+ unsignedIntToString( now ) + " WHERE item_id=" |
| 6431 |
+ unsignedIntToString( itemid ); |
+ unsignedIntToString( itemid ); |
| 6432 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 6872 |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
| 6873 |
|
|
| 6874 |
sql = "SELECT DISTINCT tlink.index_id, tlink.item_id"; |
sql = "SELECT DISTINCT tlink.index_id, tlink.item_id"; |
| 6875 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 6876 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id = tx.index_id"; |
| 6877 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 6878 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
| 6879 |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 6880 |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFY_REQUIRED ); |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFY_REQUIRED ); |
| 6881 |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
| 6938 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 6939 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 6940 |
|
|
| 6941 |
sql = "SELECT item_type_id, name, mid, display_name "; |
sql = "SELECT item_type_id, name, mid, display_name, viewphp "; |
| 6942 |
sql += " FROM " + dbprefix + "_xnpaccount_item_type order by item_type_id"; |
sql += " FROM " + dbprefix + "_xoonips_item_type order by item_type_id"; |
| 6943 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 6944 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 6945 |
dst = new itemtype_t[ count ]; |
dst = new itemtype_t[ count ]; |
| 6955 |
SQLINTEGER mid = 0; |
SQLINTEGER mid = 0; |
| 6956 |
SQLCHAR name[XNP_ITEMTYPE_NAME_LEN+1]; |
SQLCHAR name[XNP_ITEMTYPE_NAME_LEN+1]; |
| 6957 |
SQLCHAR display_name[XNP_ITEMTYPE_DISPLAY_NAME_LEN+1]; |
SQLCHAR display_name[XNP_ITEMTYPE_DISPLAY_NAME_LEN+1]; |
| 6958 |
SQLLEN cbItid = 0, cbMid = 0, cbName=SQL_NTS, cbDisplayName=SQL_NTS; |
SQLCHAR viewphp[XNP_ITEMTYPE_VIEWPHP_LEN+1]; |
| 6959 |
|
SQLLEN cbItid = 0, cbMid = 0, cbName=SQL_NTS, cbDisplayName=SQL_NTS, cbViewphp=SQL_NTS; |
| 6960 |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &itid, 0, &cbItid ); |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &itid, 0, &cbItid ); |
| 6961 |
SQLBindCol( hstmt, 2, SQL_C_CHAR , &name, XNP_ITEMTYPE_NAME_LEN+1, &cbName ); |
SQLBindCol( hstmt, 2, SQL_C_CHAR , &name, XNP_ITEMTYPE_NAME_LEN+1, &cbName ); |
| 6962 |
SQLBindCol( hstmt, 3, SQL_C_ULONG, &mid, 0, &cbMid ); |
SQLBindCol( hstmt, 3, SQL_C_ULONG, &mid, 0, &cbMid ); |
| 6963 |
SQLBindCol( hstmt, 4, SQL_C_CHAR , &display_name, XNP_ITEMTYPE_DISPLAY_NAME_LEN+1, &cbDisplayName ); |
SQLBindCol( hstmt, 4, SQL_C_CHAR , &display_name, XNP_ITEMTYPE_DISPLAY_NAME_LEN+1, &cbDisplayName ); |
| 6964 |
|
SQLBindCol( hstmt, 5, SQL_C_CHAR , &viewphp, XNP_ITEMTYPE_VIEWPHP_LEN+1, &cbViewphp ); |
| 6965 |
for( i = 0 ; ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ; i++ ){ |
for( i = 0 ; ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ; i++ ){ |
| 6966 |
syslog_printf( "\nitid=%d, mid=%d, name='%s', display_name='%s'", itid, mid, name, display_name ); |
syslog_printf( "\nitid=%d, mid=%d, name='%s', display_name='%s'", itid, mid, name, display_name ); |
| 6967 |
dst[ i ].setItemTypeID( itid ); |
dst[ i ].setItemTypeID( itid ); |
| 6968 |
dst[ i ].setModuleID( itid ); |
dst[ i ].setModuleID( itid ); |
| 6969 |
dst[ i ].setName( ( char* )name ); |
dst[ i ].setName( ( char* )name ); |
| 6970 |
dst[ i ].setDisplayName( ( char* )display_name ); |
dst[ i ].setDisplayName( ( char* )display_name ); |
| 6971 |
|
dst[ i ].setViewphp( ( char* )viewphp ); |
| 6972 |
( *len )++; |
( *len )++; |
| 6973 |
} |
} |
| 6974 |
ret = RES_OK; |
ret = RES_OK; |
| 7004 |
indexid_t xid = 0; |
indexid_t xid = 0; |
| 7005 |
SQLLEN len = 0; |
SQLLEN len = 0; |
| 7006 |
|
|
| 7007 |
sql = "SELECT index_id FROM " + dbprefix + "_xnpaccount_index_item_link" |
sql = "SELECT index_id FROM " + dbprefix + "_xoonips_index_item_link" |
| 7008 |
+ " WHERE item_id=" + unsignedIntToString( itemid ); |
+ " WHERE item_id=" + unsignedIntToString( itemid ); |
| 7009 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 7010 |
indexid_t* xids_ = new indexid_t[ count ]; |
indexid_t* xids_ = new indexid_t[ count ]; |
| 7067 |
return RES_NO_READ_ACCESS_RIGHT;//no permissions to access these items |
return RES_NO_READ_ACCESS_RIGHT;//no permissions to access these items |
| 7068 |
|
|
| 7069 |
sql = "SELECT DISTINCT tlink.item_id"; |
sql = "SELECT DISTINCT tlink.item_id"; |
| 7070 |
sql += " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 7071 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id=tx.index_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_index AS tx ON tlink.index_id=tx.index_id"; |
| 7072 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id=ti.item_id"; |
sql += " LEFT JOIN " + dbprefix + "_xoonips_item_basic AS ti ON tlink.item_id=ti.item_id"; |
| 7073 |
sql += " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link AS tgulink ON ( tgulink.gid = tx.gid AND tx.open_level =" + unsignedIntToString( index::OL_GROUP_ONLY ); |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON ( tgulink.gid = tx.gid AND tx.open_level =" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 7074 |
sql += ") OR tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
sql += ") OR tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
| 7075 |
sql += " WHERE open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
sql += " WHERE open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
| 7076 |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFIED ); |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFIED ); |
| 7140 |
ret = sessionID2UID( sid, &uid ); |
ret = sessionID2UID( sid, &uid ); |
| 7141 |
if( ret != RES_OK ) return ret; |
if( ret != RES_OK ) return ret; |
| 7142 |
|
|
| 7143 |
string indexItemLinkTable = dbprefix + "_xnpaccount_index_item_link"; |
string indexItemLinkTable = dbprefix + "_xoonips_index_item_link"; |
| 7144 |
string indexTable = dbprefix + "_xnpaccount_index"; |
string indexTable = dbprefix + "_xoonips_index"; |
| 7145 |
string itemTable = dbprefix + "_xnpaccount_item_basic"; |
string itemTable = dbprefix + "_xoonips_item_basic"; |
| 7146 |
string groupsUsersLinkTable = dbprefix + "_xnpaccount_groups_users_link"; |
string groupsUsersLinkTable = dbprefix + "_xoonips_groups_users_link"; |
| 7147 |
string sql = "SELECT COUNT(*) FROM " + indexTable; |
string sql = "SELECT COUNT(*) FROM " + indexTable; |
| 7148 |
unsigned int maxXIDsLen; |
unsigned int maxXIDsLen; |
| 7149 |
ret = queryGetUnsignedInt( "getItemCountGroupByIndex", sql, &maxXIDsLen ); |
ret = queryGetUnsignedInt( "getItemCountGroupByIndex", sql, &maxXIDsLen ); |