This introduces a small BC break for classes inheriting from Mailbox or
UserMailbox that directly access the `language` or `user` properties instead of
the getter methods. But this is easily fixed.
Resolves #4387
/**
* The preferred language of this mailbox.
- * @var Language
+ * @var int
*/
- protected $language;
+ protected $languageID;
/**
* Creates a new Mailbox.
$this->address = $address;
$this->name = $name;
if ($language === null) {
- $language = LanguageFactory::getInstance()->getLanguage(
- LanguageFactory::getInstance()->getDefaultLanguageID()
- );
+ $this->languageID = LanguageFactory::getInstance()->getDefaultLanguageID();
+ } else {
+ $this->languageID = $language->languageID;
}
- $this->language = $language;
}
/**
*/
public function getLanguage()
{
- return $this->language;
+ return LanguageFactory::getInstance()->getLanguage($this->languageID);
}
/**
namespace wcf\system\email;
use wcf\data\user\User;
+use wcf\system\cache\runtime\UserRuntimeCache;
/**
* Default implementation of the IUserMailbox interface.
class UserMailbox extends Mailbox implements IUserMailbox
{
/**
- * User object belonging to this Mailbox
- * @var User
+ * User belonging to this Mailbox
+ * @var int
*/
- protected $user;
+ protected $userID;
/**
* Creates a new Mailbox.
{
parent::__construct($user->email, $user->username, $user->getLanguage());
- $this->user = $user;
+ $this->userID = $user->userID;
}
/**
*/
public function getUser(): User
{
- return $this->user;
+ return UserRuntimeCache::getInstance()->getObject($this->userID);
}
}