Почемуто условие в JOIN не работает, независимо от него отдает только тех юзеров у которых `user`.`id` = `mail_messages`.`receiver`
"SELECT SUBSTRING(`mail_messages`.`text`, 1, 100) AS `text`, "
. "`mail_messages`.`time`, "
. "`mail_messages`.`read`,"
. "`mail_messages`.`id` AS `mid`, "
. "`users`.`id` AS `uid`, "
. "`users`.`nickname` as `nick` "
. "FROM `mail_messages` "
. "LEFT JOIN `users` ON "
. "IF (`mail_messages`.`receiver` = '" . $this->user->id . "', "
. "`mail_messages`.`sender` = `users`.`id`, "
. "`mail_messages`.`receiver` = `users`.`id`) "
. "WHERE "
. "(`mail_messages`.`sender` = '" . $this->user->id . "' AND `mail_messages`.`archive` = '1')"
. " OR (`mail_messages`.`receiver` ='" . $this->user->id . "' AND `mail_messages`.`archive` = '2')";