| 22 |
* |
* |
| 23 |
* $Revision$ |
* $Revision$ |
| 24 |
* $Log$ |
* $Log$ |
| 25 |
|
* Revision 1.118.2.4 2006/06/30 02:46:02 aga4096 |
| 26 |
|
* ・MySQL5.0.22では certify.php で常に No items found. になる場合があるのを修正. |
| 27 |
|
* |
| 28 |
* Revision 1.118.2.3 2006/04/12 09:20:12 aga4096 |
* Revision 1.118.2.3 2006/04/12 09:20:12 aga4096 |
| 29 |
* ・insert_index で item_type_id が0になる場合があるのを修正. |
* ・insert_index で item_type_id が0になる場合があるのを修正. |
| 30 |
* |
* |
| 7572 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 7573 |
SQLLEN count = 0; |
SQLLEN count = 0; |
| 7574 |
userid_t sess_uid; |
userid_t sess_uid; |
| 7575 |
|
|
| 7576 |
|
bool is_moderator = false; |
| 7577 |
|
|
| 7578 |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
if( ( ret = sessionID2UID( sid, &sess_uid ) ) != RES_OK ) return ret; |
| 7579 |
|
|
| 7580 |
sql = "SELECT DISTINCT tlink.index_id, tlink.item_id"; |
sql = "SELECT DISTINCT tlink.index_id, tlink.item_id"; |
| 7581 |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
sql += " FROM " + dbprefix + "_xoonips_index_item_link AS tlink"; |
| 7582 |
sql += " LEFT JOIN " + dbprefix + "_xoonips_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"; |
| 7583 |
sql += " LEFT JOIN " + dbprefix + "_xoonips_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"; |
| 7584 |
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
|
| 7585 |
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
is_moderator = isModerator( sid, sess_uid ); |
| 7586 |
|
if( ! is_moderator ) { |
| 7587 |
|
sql += " LEFT JOIN " + dbprefix + "_xoonips_groups_users_link AS tgulink ON tgulink.gid = tx.gid"; |
| 7588 |
|
} |
| 7589 |
|
sql += " WHERE open_level<=" + unsignedIntToString( index::OL_GROUP_ONLY ); |
| 7590 |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFY_REQUIRED ); |
sql += " AND certify_state=" + unsignedIntToString( index::CERTIFY_REQUIRED ); |
| 7591 |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
sql += " AND item_type_id !=" + unsignedIntToString( item::ITID_INDEX ); |
| 7592 |
sql += " AND ( is_admin=1 AND tgulink.uid=" + unsignedIntToString( sess_uid ); |
|
| 7593 |
sql += string( isModerator( sid, sess_uid ) ? " OR 1)" : " OR 0)" ); //モデレータならOR 1,それ以外は OR 0 |
if( ! is_moderator ) { |
| 7594 |
|
sql += " AND is_admin=1 AND tgulink.uid=" + unsignedIntToString( sess_uid ); |
| 7595 |
|
} |
| 7596 |
|
|
| 7597 |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
syslog_printf( "\nsql at %d=%s", __LINE__, sql.c_str() ); |
| 7598 |
|
|
| 7599 |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |