|
From: Paul S. O. <ps...@us...> - 2002-02-13 01:34:50
|
Update of /cvsroot/phpbb/phpBB2
In directory usw-pr-cvs1:/tmp/cvs-serv1698
Modified Files:
privmsg.php
Log Message:
Hopefully fix bug where deletion of messages before user reads them leaves their new/unread counters unchanged, #506016
Index: privmsg.php
===================================================================
RCS file: /cvsroot/phpbb/phpBB2/privmsg.php,v
retrieving revision 1.78
retrieving revision 1.79
diff -C2 -r1.78 -r1.79
*** privmsg.php 13 Feb 2002 01:11:35 -0000 1.78
--- privmsg.php 13 Feb 2002 01:34:46 -0000 1.79
***************
*** 654,672 ****
}
! $deleteall_sql = "SELECT privmsgs_id
FROM " . PRIVMSGS_TABLE . "
! WHERE " . $delete_type;
!
! if(!$del_list_status = $db->sql_query($deleteall_sql))
{
! message_die(GENERAL_ERROR, "Could not obtain id list to delete all messages.", "", __LINE__, __FILE__, $deleteall_sql);
}
! $delete_list = $db->sql_fetchrowset($del_list_status);
! for($i = 0; $i < count($delete_list); $i++)
{
! $mark_list[] = $delete_list[$i]['privmsgs_id'];
}
! unset($delete_list);
unset($delete_type);
}
--- 654,670 ----
}
! $sql = "SELECT privmsgs_id
FROM " . PRIVMSGS_TABLE . "
! WHERE $delete_type";
! if ( !($result = $db->sql_query($sql)) )
{
! message_die(GENERAL_ERROR, "Could not obtain id list to delete all messages.", "", __LINE__, __FILE__, $sql);
}
! while ( $row = $db->sql_fetchrow($result) )
{
! $mark_list[] = $row['privmsgs_id'];
}
!
unset($delete_type);
}
***************
*** 674,696 ****
if ( count($mark_list) )
{
! $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
! WHERE ";
! $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
! WHERE ";
! $delete_sql_id = "";
! for($i = 0; $i < count($mark_list); $i++)
! {
! if( $delete_sql_id != "" )
{
! $delete_sql_id .= ", ";
}
- $delete_sql_id .= $mark_list[$i];
- }
! $delete_sql .= "privmsgs_id IN ($delete_sql_id)";
! $delete_text_sql .= "privmsgs_text_id IN ($delete_sql_id)";
! $delete_sql .= " AND ";
switch($folder)
--- 672,712 ----
if ( count($mark_list) )
{
! $delete_sql_id = implode(", ", $mark_list);
! //
! // Need to decrement the new message counter of recipient
! //
! if ( $folder == 'outbox' )
! {
! $sql = "SELECT privmsgs_to_userid
! FROM " . PRIVMSGS_TABLE . "
! WHERE privmsgs_id IN ($delete_sql_id)
! AND privmsgs_from_userid = " . $userdata['user_id'] . "
! AND privmsgs_type = " . PRIVMSGS_NEW_MAIL;
! if ( !($result = $db->sql_query($sql)) )
{
! message_die(GENERAL_ERROR, "Couldn't obtain user id list for outbox messages", "", __LINE__, __FILE__, $sql);
}
! $update_pm_sql = "";
! while( $row = $db->sql_fetchrow($result) )
! {
! $update_pm_sql .= ( ( $update_pm_sql != "" ) ? ", " : "" ) . $row['privmsgs_to_userid'];
! }
! $sql = "UPDATE " . USERS_TABLE . "
! SET user_new_privmsg = user_new_privmsg - 1
! WHERE user_id IN ($update_pm_sql)";
! if ( !($result = $db->sql_query($sql)) )
! {
! message_die(GENERAL_ERROR, "Couldn't update users new msg counters", "", __LINE__, __FILE__, $sql);
! }
! }
!
! $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
! WHERE privmsgs_text_id IN ($delete_sql_id)";
! $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
! WHERE privmsgs_id IN ($delete_sql_id)
! AND ";
switch($folder)
***************
*** 717,730 ****
}
! if(!$del_status = $db->sql_query($delete_sql, BEGIN_TRANSACTION))
{
message_die(GENERAL_ERROR, "Could not delete private message info.", "", __LINE__, __FILE__, $delete_sql);
}
! else
{
! if(!$del_text_status = $db->sql_query($delete_text_sql, END_TRANSACTION))
! {
! message_die(GENERAL_ERROR, "Could not delete private message text.", "", __LINE__, __FILE__, $delete_text_sql);
! }
}
}
--- 733,744 ----
}
! if( !$db->sql_query($delete_sql, BEGIN_TRANSACTION) )
{
message_die(GENERAL_ERROR, "Could not delete private message info.", "", __LINE__, __FILE__, $delete_sql);
}
!
! if( !$db->sql_query($delete_text_sql, END_TRANSACTION) )
{
! message_die(GENERAL_ERROR, "Could not delete private message text.", "", __LINE__, __FILE__, $delete_text_sql);
}
}
|