mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-02 01:48:23 +01:00
6bb31de305
Summary: Depends on D19994. See PHI1027. If an install has customized the "Welcome Mail" message, include it in welcome mail. A special custom message from the profile screen overrides it, if provided. (I fiddled with putting the custom message as "placeholder" text in the remarkup area as a hint, but newlines in "placeholder" text appear to have issues in Safari and Firefox. I think this is probably reasonably clear as-is.) Make both render remarkup-into-text so things like links work properly, as it's reasonably likely that installs will want to link to things. Test Plan: - With custom "Welcome Mail" text, sent mail with no custom override (got custom text) and a custom override (got overridden text). - Linked to some stuff, got sensible links in the mail (`bin/mail show-outbound`). Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D19995
138 lines
3.3 KiB
PHP
138 lines
3.3 KiB
PHP
<?php
|
|
|
|
final class PhabricatorAuthMessage
|
|
extends PhabricatorAuthDAO
|
|
implements
|
|
PhabricatorApplicationTransactionInterface,
|
|
PhabricatorPolicyInterface,
|
|
PhabricatorDestructibleInterface {
|
|
|
|
protected $messageKey;
|
|
protected $messageText;
|
|
|
|
private $messageType = self::ATTACHABLE;
|
|
|
|
public static function initializeNewMessage(
|
|
PhabricatorAuthMessageType $type) {
|
|
|
|
return id(new self())
|
|
->setMessageKey($type->getMessageTypeKey())
|
|
->attachMessageType($type);
|
|
}
|
|
|
|
protected function getConfiguration() {
|
|
return array(
|
|
self::CONFIG_AUX_PHID => true,
|
|
self::CONFIG_COLUMN_SCHEMA => array(
|
|
'messageKey' => 'text64',
|
|
'messageText' => 'text',
|
|
),
|
|
self::CONFIG_KEY_SCHEMA => array(
|
|
'key_type' => array(
|
|
'columns' => array('messageKey'),
|
|
'unique' => true,
|
|
),
|
|
),
|
|
) + parent::getConfiguration();
|
|
}
|
|
|
|
public function getPHIDType() {
|
|
return PhabricatorAuthMessagePHIDType::TYPECONST;
|
|
}
|
|
|
|
public function getObjectName() {
|
|
return pht('Auth Message %d', $this->getID());
|
|
}
|
|
|
|
public function getURI() {
|
|
return urisprintf('/auth/message/%s', $this->getID());
|
|
}
|
|
|
|
public function attachMessageType(PhabricatorAuthMessageType $type) {
|
|
$this->messageType = $type;
|
|
return $this;
|
|
}
|
|
|
|
public function getMessageType() {
|
|
return $this->assertAttached($this->messageType);
|
|
}
|
|
|
|
public function getMessageTypeDisplayName() {
|
|
return $this->getMessageType()->getDisplayName();
|
|
}
|
|
|
|
public static function loadMessage(
|
|
PhabricatorUser $viewer,
|
|
$message_key) {
|
|
return id(new PhabricatorAuthMessageQuery())
|
|
->setViewer($viewer)
|
|
->withMessageKeys(array($message_key))
|
|
->executeOne();
|
|
}
|
|
|
|
public static function loadMessageText(
|
|
PhabricatorUser $viewer,
|
|
$message_key) {
|
|
|
|
$message = self::loadMessage($viewer, $message_key);
|
|
|
|
if (!$message) {
|
|
return null;
|
|
}
|
|
|
|
return $message->getMessageText();
|
|
}
|
|
|
|
|
|
/* -( PhabricatorPolicyInterface )----------------------------------------- */
|
|
|
|
|
|
public function getCapabilities() {
|
|
return array(
|
|
PhabricatorPolicyCapability::CAN_VIEW,
|
|
PhabricatorPolicyCapability::CAN_EDIT,
|
|
);
|
|
}
|
|
|
|
public function getPolicy($capability) {
|
|
switch ($capability) {
|
|
case PhabricatorPolicyCapability::CAN_VIEW:
|
|
return PhabricatorPolicies::getMostOpenPolicy();
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
|
|
switch ($capability) {
|
|
case PhabricatorPolicyCapability::CAN_VIEW:
|
|
// Even if an install doesn't allow public users, you can still view
|
|
// auth messages: otherwise, we can't do things like show you
|
|
// guidance on the login screen.
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
|
|
|
|
|
|
public function getApplicationTransactionEditor() {
|
|
return new PhabricatorAuthMessageEditor();
|
|
}
|
|
|
|
public function getApplicationTransactionTemplate() {
|
|
return new PhabricatorAuthMessageTransaction();
|
|
}
|
|
|
|
|
|
/* -( PhabricatorDestructibleInterface )----------------------------------- */
|
|
|
|
|
|
public function destroyObjectPermanently(
|
|
PhabricatorDestructionEngine $engine) {
|
|
$this->delete();
|
|
}
|
|
|
|
}
|