| 2 |
* |
* |
| 3 |
* $Revision$ |
* $Revision$ |
| 4 |
* $Log$ |
* $Log$ |
| 5 |
|
* Revision 1.69 2005/02/22 02:39:30 tani |
| 6 |
|
* public_item_target_user_all関数を追加. |
| 7 |
|
* SQL中のpublic_item_target_user_allの比較式をpublic_item_target_user_all関数に置換. |
| 8 |
|
* sessionテーブルのLEFT JOINの条件にsidのチェックを追加. |
| 9 |
|
* DB問合せ処理の高速化. |
| 10 |
|
* |
| 11 |
* Revision 1.68 2005/02/21 05:46:18 tani |
* Revision 1.68 2005/02/21 05:46:18 tani |
| 12 |
* getItemCountを追加. |
* getItemCountを追加. |
| 13 |
* dumpItemID, getItemsの問合せを高速化. |
* dumpItemID, getItemsの問合せを高速化. |
| 347 |
#endif |
#endif |
| 348 |
} |
} |
| 349 |
|
|
| 350 |
|
/** |
| 351 |
|
* |
| 352 |
|
* public_item_target_userの設定値が'all'ならtrueをかえす |
| 353 |
|
* 設定値の取得に失敗した場合,'all'以外の場合はfalseをかえす |
| 354 |
|
* |
| 355 |
|
*/ |
| 356 |
|
static bool public_item_target_user_all( ) |
| 357 |
|
{ |
| 358 |
|
char* value = 0; |
| 359 |
|
bool public_item_target_user_all = false; |
| 360 |
|
if( getConfigValue( XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY, &value ) == RES_OK ){ |
| 361 |
|
public_item_target_user_all = ( strcmp( value, XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL ) == 0 ); |
| 362 |
|
freeString( value ); |
| 363 |
|
} |
| 364 |
|
return public_item_target_user_all; |
| 365 |
|
} |
| 366 |
|
|
| 367 |
static result_t countResultRows( const char* sql, SQLLEN* count ) |
static result_t countResultRows( const char* sql, SQLLEN* count ) |
| 368 |
{ |
{ |
| 369 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 3426 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
| 3427 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 3428 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 3429 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_config AS tc ON tc.name=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY "\" LEFT JOIN "; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
|
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
|
| 3430 |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 3431 |
sql+= " WHERE ( tc.value=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 3432 |
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"; |
| 3433 |
sql+= " OR tc.value!=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " OR " + string( !public_item_target_user_all( ) ? "1" : "0" ); |
| 3434 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
| 3435 |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
| 3436 |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
| 3525 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
| 3526 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 3527 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 3528 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_config AS tc ON tc.name=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY "\" LEFT JOIN "; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 3529 |
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 3530 |
sql+= " WHERE ( tc.value=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 3531 |
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"; |
| 3532 |
sql+= " OR tc.value!=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " OR " + string( !public_item_target_user_all( ) ? "1" : "0" ); |
| 3533 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
| 3534 |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
| 3535 |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
| 3568 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 3569 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 3570 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
|
SQLLEN count = 0; |
|
| 3571 |
string sql; |
string sql; |
| 3572 |
itemid_t* dst = 0; |
itemid_t* dst = 0; |
| 3573 |
|
int dst_max = 1024; |
| 3574 |
userid_t uid; |
userid_t uid; |
| 3575 |
|
|
|
/* |
|
|
sql = "SELECT item_id"; |
|
|
sql += " FROM " + dbprefix + "_xnpaccount_item_basic"; |
|
|
sql += " WHERE item_type_id!=" + unsignedIntToString( item::ITID_INDEX ); |
|
|
if( !isModeratorBySession( sid ) ){ |
|
|
userid_t uid; |
|
|
if( sessionID2UID( sid, &uid ) == RES_OK ){ |
|
|
sql += " AND uid=" + unsignedIntToString( uid ); |
|
|
}else{ |
|
|
return RES_ERROR; |
|
|
} |
|
|
} |
|
|
sql += criteria2str( c ); |
|
|
*/ |
|
| 3576 |
ret = sessionID2UID( sid, &uid ); |
ret = sessionID2UID( sid, &uid ); |
| 3577 |
if( ret != RES_OK ) return ret; |
if( ret != RES_OK ) return ret; |
| 3578 |
|
|
| 3581 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
| 3582 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 3583 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 3584 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_config AS tc ON tc.name=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY "\" LEFT JOIN "; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 3585 |
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 3586 |
sql+= " WHERE ( tc.value=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 3587 |
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"; |
| 3588 |
sql+= " OR tc.value!=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " OR " + string( !public_item_target_user_all( ) ? "1" : "0" ); |
| 3589 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
| 3590 |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
| 3591 |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
| 3594 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ); |
| 3595 |
sql+= string( isModerator( sid, uid ) ? " OR 1" : " OR 0" ); //モデレータならOR 1,それ以外は OR 0 |
sql+= string( isModerator( sid, uid ) ? " OR 1" : " OR 0" ); //モデレータならOR 1,それ以外は OR 0 |
| 3596 |
sql+= ") "; |
sql+= ") "; |
| 3597 |
sql += criteria2str( c ); |
sql+= " AND ti.item_type_id != " + unsignedIntToString( item::ITID_INDEX ); // |
| 3598 |
|
sql+= criteria2str( c ); |
| 3599 |
|
|
| 3600 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
dst = new itemid_t[ dst_max ]; |
| 3601 |
dst = new itemid_t[ count ]; |
*iids = dst; |
| 3602 |
*iids = dst; |
if( *iids == 0 ) return RES_ERROR; // out of memory |
|
}else{ |
|
|
return RES_ERROR; |
|
|
} |
|
|
|
|
| 3603 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 3604 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 3605 |
SQLLEN len = 0; |
SQLLEN len = 0; |
| 3606 |
SQLUINTEGER itemid = 0; |
SQLUINTEGER itemid = 0; |
| 3607 |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &itemid, 0, &len ); |
SQLBindCol( hstmt, 1, SQL_C_ULONG, &itemid, 0, &len ); |
| 3608 |
*iidsLen = 0; |
*iidsLen = 0; |
| 3609 |
for( int i = 0; ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS && i < count ; i++ ){ |
for( int i = 0; ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ; i++ ){ |
| 3610 |
|
if( dst_max <= i ){ |
| 3611 |
|
itemid_t* old_dst = dst; |
| 3612 |
|
dst = new itemid_t[ dst_max * 2 ]; |
| 3613 |
|
if( *iids == 0 ){ |
| 3614 |
|
delete[] old_dst; |
| 3615 |
|
return RES_ERROR; // out of memory |
| 3616 |
|
} |
| 3617 |
|
memcpy( dst, old_dst, dst_max ); |
| 3618 |
|
dst_max *= 2; |
| 3619 |
|
*iids = dst; |
| 3620 |
|
delete[] old_dst; |
| 3621 |
|
} |
| 3622 |
dst[ i ] = itemid; |
dst[ i ] = itemid; |
| 3623 |
(*iidsLen)++; |
(*iidsLen)++; |
| 3624 |
} |
} |
| 4102 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid AND (ti.uid="; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid AND (ti.uid="; |
| 4103 |
sql+= unsignedIntToString( uid ) + " OR "; |
sql+= unsignedIntToString( uid ) + " OR "; |
| 4104 |
sql+= string( isModerator( sid, uid ) ? "1" : "0" ) + ") LEFT JOIN "; |
sql+= string( isModerator( sid, uid ) ? "1" : "0" ) + ") LEFT JOIN "; |
|
sql+= dbprefix + "_xnpaccount_config AS tc ON tc.name=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY "\" LEFT JOIN "; |
|
| 4105 |
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 4106 |
sql+= " WHERE ( tc.value=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 4107 |
|
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 4108 |
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"; |
| 4109 |
sql+= " OR tc.value!=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " OR " + string( !public_item_target_user_all( ) ? "1" : "0" ); |
| 4110 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
| 4111 |
// sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
// sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
| 4112 |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
| 4519 |
|
|
| 4520 |
sql1 = "SELECT count(DISTINCT tlink.item_id) ; |
sql1 = "SELECT count(DISTINCT tlink.item_id) ; |
| 4521 |
sql2 = "SELECT DISTINCT tlink.item_id ; |
sql2 = "SELECT DISTINCT tlink.item_id ; |
| 4522 |
sql+= " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
sql= " FROM " + dbprefix + "_xnpaccount_index_item_link AS tlink"; |
| 4523 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
| 4524 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 4525 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 4526 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_config AS tc ON tc.name=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY "\" LEFT JOIN "; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 4527 |
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 4528 |
sql+= " WHERE ( tc.value=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 4529 |
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"; |
| 4530 |
sql+= " OR tc.value!=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " OR " + string( !public_item_target_user_all( ) ? "1" : "0" ); |
| 4531 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
| 4532 |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
| 4533 |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
| 4591 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_index AS tx ON tlink.index_id = tx.index_id"; |
| 4592 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_item_basic AS ti ON tlink.item_id = ti.item_id"; |
| 4593 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_groups_users_link as tgulink ON tx.gid=tgulink.gid"; |
| 4594 |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_config AS tc ON tc.name=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_KEY "\" LEFT JOIN "; |
sql+= " LEFT JOIN " + dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
| 4595 |
sql+= dbprefix + "_xnpaccount_session AS tsess ON tsess.uid=" + unsignedIntToString( uid ); |
sql+= " AND tsess.sid=" + unsignedIntToString( sid ); |
| 4596 |
sql+= " WHERE ( tc.value=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " WHERE ( " + string( public_item_target_user_all( ) ? "1" : "0" ); |
| 4597 |
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"; |
| 4598 |
sql+= " OR tc.value!=\"" XNP_CONFIG_PUBLIC_ITEM_TARGET_USER_ALL "\""; |
sql+= " OR " + string( !public_item_target_user_all( ) ? "1" : "0" ); |
| 4599 |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
sql+= " AND tx.open_level=" + unsignedIntToString( index::OL_PUBLIC ) + " AND tsess.uid IS NOT NULL"; |
| 4600 |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
sql+= " OR tgulink.uid=" + unsignedIntToString( uid ); |
| 4601 |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |
sql+= " OR tx.open_level=" + unsignedIntToString( index::OL_PRIVATE ); |