/** * @task role */ public function makeMailingListUser(PhabricatorUser $user, $mailing_list) { $actor = $this->requireActor(); if (!$user->getID()) { throw new Exception(pht('User has not been created yet!')); } $user->openTransaction(); $user->beginWriteLocking(); $user->reload(); if ($user->getIsMailingList() == $mailing_list) { $user->endWriteLocking(); $user->killTransaction(); return $this; } $log = PhabricatorUserLog::initializeNewLog($actor, $user->getPHID(), PhabricatorUserLog::ACTION_MAILING_LIST); $log->setOldValue($user->getIsMailingList()); $log->setNewValue($mailing_list); $user->setIsMailingList((int) $mailing_list); $user->save(); $log->save(); $user->endWriteLocking(); $user->saveTransaction(); return $this; }