Перейти к контенту
  • 0

[IPB 2.2] Исправление отрицательного кол-ва ЛС


2rough4u

Вопрос

Заметил, что в IPB 2.2 после удаления непрочитанных ЛС иногда кол-во новых ЛС пользователей уходит в минус. Очень просто воспроизвести эту проблему так: отправить самому себе ЛС, зайти в папку Входящие и не открывая самого сообщения удалить его. Индикатор новых ЛС пользователя при этом уйдёт в минус (если оно до этого было равно нулю).

 

Я исправил это топором. Открываем sources/lib/func_msg.php, находим:

 		if ( count($unread) )
		{
 		foreach( $unread as $mid => $cnt )
 		{
 			$this->ipsclass->DB->simple_construct( array( 'update' => 'members', 'set' => "new_msg=new_msg-{$cnt}, show_popup=0", 'where' => "id={$mid}" ) );
			$this->ipsclass->DB->simple_exec();
			}
		}

 

Добавляем ниже:

		$this->ipsclass->DB->simple_construct( array( 'update' => 'members', 'set' => "new_msg=0", 'where' => "id={$owner_id} AND new_msg < 0" ) );
 	$this->ipsclass->DB->simple_exec();

 

После внесения этих исправлений желательно выполнить запрос к базе, чтобы нормализовать всех накопившихся на данный момент "минусовых" пользователей:

UPDATE ibf_members SET new_msg=0 WHERE new_msg<0

 

Если решение уже было - извините.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
Даже сообразительный человек может не заметить прикреплённую тему.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
У всех бывает, у всех :D
Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.